correct test for loading shared objects and libraries
This commit is contained in:
@ -13,23 +13,25 @@ add_test(ArgUtils test_argutils)
|
|||||||
add_executable(test_utils test_utils.cpp)
|
add_executable(test_utils test_utils.cpp)
|
||||||
target_link_libraries(test_utils PRIVATE lammps GTest::GMockMain GTest::GMock GTest::GTest)
|
target_link_libraries(test_utils PRIVATE lammps GTest::GMockMain GTest::GMock GTest::GTest)
|
||||||
add_test(Utils test_utils)
|
add_test(Utils test_utils)
|
||||||
set_tests_properties(Utils PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
|
|
||||||
|
|
||||||
add_executable(test_platform test_platform.cpp)
|
add_executable(test_platform test_platform.cpp)
|
||||||
target_link_libraries(test_platform PRIVATE lammps GTest::GMockMain GTest::GMock GTest::GTest)
|
target_link_libraries(test_platform PRIVATE lammps GTest::GMockMain GTest::GMock GTest::GTest)
|
||||||
add_test(Platform test_platform)
|
add_test(Platform test_platform)
|
||||||
set(PLATFORM_ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
|
|
||||||
|
set_tests_properties(Utils Platform PROPERTIES
|
||||||
|
ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
|
||||||
|
|
||||||
if(BUILD_SHARED_LIBS)
|
if(BUILD_SHARED_LIBS)
|
||||||
enable_language(C)
|
enable_language(C)
|
||||||
target_compile_definitions(test_platform PRIVATE -DTEST_SHARED_OBJECT=1)
|
|
||||||
add_library(testsharedobj MODULE testshared.c)
|
add_library(testsharedobj MODULE testshared.c)
|
||||||
set_target_properties(testsharedobj PROPERTIES PREFIX "" WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
|
set_target_properties(testsharedobj PROPERTIES PREFIX "" WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
|
||||||
add_library(testsharedlib SHARED testshared.c)
|
add_library(testsharedlib SHARED testshared.c)
|
||||||
set_target_properties(testsharedlib PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
|
set_target_properties(testsharedlib PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
|
||||||
add_dependencies(test_platform testsharedobj testsharedlib)
|
add_dependencies(test_platform testsharedobj testsharedlib)
|
||||||
list(APPEND PLATFORM_ENVIRONMENT "TEST_SHARED_LIB=$<TARGET_FILE:testsharedlib>" "TEST_SHARED_OBJ=$<TARGET_FILE:testsharedobj>")
|
target_compile_definitions(test_platform PRIVATE TEST_SHARED_LOAD=1
|
||||||
|
TEST_SHARED_LIB=$<TARGET_FILE:testsharedlib>
|
||||||
|
TEST_SHARED_OBJ=$<TARGET_FILE:testsharedobj>)
|
||||||
endif()
|
endif()
|
||||||
set_tests_properties(Platform PROPERTIES ENVIRONMENT ${PLATFORM_ENVIRONMENT} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
|
||||||
|
|
||||||
add_executable(test_fmtlib test_fmtlib.cpp)
|
add_executable(test_fmtlib test_fmtlib.cpp)
|
||||||
target_link_libraries(test_fmtlib PRIVATE lammps GTest::GMockMain GTest::GMock GTest::GTest)
|
target_link_libraries(test_fmtlib PRIVATE lammps GTest::GMockMain GTest::GMock GTest::GTest)
|
||||||
|
|||||||
@ -86,20 +86,20 @@ TEST(Platform, find_cmd_path)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(TEST_SHARED_LOAD)
|
||||||
|
#define stringify(s) mkstring(s)
|
||||||
|
#define mkstring(s) #s
|
||||||
TEST(Platform, sharedload)
|
TEST(Platform, sharedload)
|
||||||
{
|
{
|
||||||
const char *objs[] = {"TEST_SHARED_OBJ", "TEST_SHARED_LIB", nullptr};
|
const std::vector<std::string> objs = {stringify(TEST_SHARED_OBJ), stringify(TEST_SHARED_LIB)};
|
||||||
const char *envvar, **envptr;
|
|
||||||
const int *intvar;
|
const int *intvar;
|
||||||
const double *doublevar;
|
const double *doublevar;
|
||||||
void *handle;
|
void *handle;
|
||||||
int (*intfunc)(int);
|
int (*intfunc)(int);
|
||||||
double (*doublefunc)(double, int);
|
double (*doublefunc)(double, int);
|
||||||
|
|
||||||
for (envptr = objs; *envptr != nullptr; ++envptr) {
|
for (const auto &obj : objs) {
|
||||||
envvar = getenv(*envptr);
|
handle = platform::dlopen(obj.c_str());
|
||||||
EXPECT_NE(envvar, nullptr);
|
|
||||||
handle = platform::dlopen(envvar);
|
|
||||||
EXPECT_NE(handle, nullptr);
|
EXPECT_NE(handle, nullptr);
|
||||||
intvar = (int *)platform::dlsym(handle, "some_int_val");
|
intvar = (int *)platform::dlsym(handle, "some_int_val");
|
||||||
EXPECT_NE(intvar, nullptr);
|
EXPECT_NE(intvar, nullptr);
|
||||||
@ -117,6 +117,9 @@ TEST(Platform, sharedload)
|
|||||||
EXPECT_EQ(platform::dlclose(handle), 0);
|
EXPECT_EQ(platform::dlclose(handle), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#undef stringify
|
||||||
|
#undef mkstring
|
||||||
|
#endif
|
||||||
|
|
||||||
TEST(Platform, guesspath)
|
TEST(Platform, guesspath)
|
||||||
{
|
{
|
||||||
@ -255,8 +258,10 @@ TEST(Platform, path_join)
|
|||||||
ASSERT_THAT(platform::path_join("/parent/folder/", "/filename"), Eq("/parent/folder/filename"));
|
ASSERT_THAT(platform::path_join("/parent/folder/", "/filename"), Eq("/parent/folder/filename"));
|
||||||
ASSERT_THAT(platform::path_join("/parent/folder//", "filename"), Eq("/parent/folder/filename"));
|
ASSERT_THAT(platform::path_join("/parent/folder//", "filename"), Eq("/parent/folder/filename"));
|
||||||
ASSERT_THAT(platform::path_join("/parent/folder", "//filename"), Eq("/parent/folder/filename"));
|
ASSERT_THAT(platform::path_join("/parent/folder", "//filename"), Eq("/parent/folder/filename"));
|
||||||
ASSERT_THAT(platform::path_join("/parent/folder///", "/filename"), Eq("/parent/folder/filename"));
|
ASSERT_THAT(platform::path_join("/parent/folder///", "/filename"),
|
||||||
ASSERT_THAT(platform::path_join("/parent/folder/", "///filename"), Eq("/parent/folder/filename"));
|
Eq("/parent/folder/filename"));
|
||||||
|
ASSERT_THAT(platform::path_join("/parent/folder/", "///filename"),
|
||||||
|
Eq("/parent/folder/filename"));
|
||||||
ASSERT_THAT(platform::path_join("/parent/folder/", ""), Eq("/parent/folder/"));
|
ASSERT_THAT(platform::path_join("/parent/folder/", ""), Eq("/parent/folder/"));
|
||||||
ASSERT_THAT(platform::path_join("", "\\/filename"), Eq("\\/filename"));
|
ASSERT_THAT(platform::path_join("", "\\/filename"), Eq("\\/filename"));
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user