43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
#include <link.h>
 | 
						|
 | 
						|
#include <string>
 | 
						|
#include <vector>
 | 
						|
 | 
						|
#include <android-base/stringprintf.h>
 | 
						|
 | 
						|
#include <gtest/gtest.h>
 | 
						|
 | 
						|
#include <google/protobuf/message_lite.h>
 | 
						|
 | 
						|
TEST(vendor_suffix, suffix) {
 | 
						|
    std::vector<std::string> libs;
 | 
						|
    dl_iterate_phdr([](dl_phdr_info* info, size_t, void* data) -> int {
 | 
						|
        auto local_libs = static_cast<decltype(&libs)>(data);
 | 
						|
        std::string name = info->dlpi_name;
 | 
						|
        size_t libprotobuf = name.find("libprotobuf-cpp");
 | 
						|
        if (libprotobuf != name.npos) {
 | 
						|
            local_libs->push_back(name.substr(libprotobuf, name.size()));
 | 
						|
        }
 | 
						|
        return 0;
 | 
						|
    }, &libs);
 | 
						|
 | 
						|
    std::sort(libs.begin(), libs.end());
 | 
						|
 | 
						|
    std::string version = android::base::StringPrintf("-%d.%d.%d",
 | 
						|
       GOOGLE_PROTOBUF_VERSION / 1000000,
 | 
						|
       GOOGLE_PROTOBUF_VERSION / 1000 % 1000,
 | 
						|
       GOOGLE_PROTOBUF_VERSION % 1000);
 | 
						|
 | 
						|
    std::string suffix = GOOGLE_PROTOBUF_VERSION_SUFFIX;
 | 
						|
    if (suffix != "") {
 | 
						|
        version += "-" + suffix;
 | 
						|
    }
 | 
						|
 | 
						|
    std::vector<std::string> expect = {
 | 
						|
        "libprotobuf-cpp-full" + version + ".so",
 | 
						|
        "libprotobuf-cpp-lite" + version + ".so",
 | 
						|
    };
 | 
						|
 | 
						|
    ASSERT_EQ(expect, libs);
 | 
						|
}
 |