You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.1 KiB

#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);
}