diff --git a/SilKit/IntegrationTests/CMakeLists.txt b/SilKit/IntegrationTests/CMakeLists.txt index 634a56dce..b27858c69 100644 --- a/SilKit/IntegrationTests/CMakeLists.txt +++ b/SilKit/IntegrationTests/CMakeLists.txt @@ -8,6 +8,9 @@ add_subdirectory(SimTestHarness) # local headers as interface lib add_subdirectory(Hourglass) +# extension loading +add_subdirectory(ExtensionTests) + add_library(ITest_Utils INTERFACE) target_include_directories(ITest_Utils INTERFACE ${CMAKE_CURRENT_LIST_DIR}) diff --git a/SilKit/source/extensions/Tests/CMakeLists.txt b/SilKit/IntegrationTests/ExtensionTests/CMakeLists.txt similarity index 89% rename from SilKit/source/extensions/Tests/CMakeLists.txt rename to SilKit/IntegrationTests/ExtensionTests/CMakeLists.txt index b20260fea..7b277ad51 100644 --- a/SilKit/source/extensions/Tests/CMakeLists.txt +++ b/SilKit/IntegrationTests/ExtensionTests/CMakeLists.txt @@ -35,10 +35,10 @@ set_target_properties(WrongBuildSystem PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/$" ) -add_silkit_test_to_executable(SilKitUnitTests SOURCES Test_SilKitExtensions.cpp LIBS O_SilKit_Extensions O_SilKit_VersionImpl I_SilKit_Core_Mock_Participant SilKit) +add_silkit_test_to_executable(SilKitIntegrationTests SOURCES ITest_SilKitExtensions.cpp LIBS O_SilKit_Extensions O_SilKit_VersionImpl I_SilKit_Core_Mock_Participant SilKit) if(${SILKIT_BUILD_TESTS}) - add_dependencies(SilKitUnitTests + add_dependencies(SilKitIntegrationTests DummyExtension WrongVersionExtension WrongBuildSystem diff --git a/SilKit/source/extensions/Tests/DummyExtension.cpp b/SilKit/IntegrationTests/ExtensionTests/DummyExtension.cpp similarity index 100% rename from SilKit/source/extensions/Tests/DummyExtension.cpp rename to SilKit/IntegrationTests/ExtensionTests/DummyExtension.cpp diff --git a/SilKit/source/extensions/Tests/DummyExtension.hpp b/SilKit/IntegrationTests/ExtensionTests/DummyExtension.hpp similarity index 100% rename from SilKit/source/extensions/Tests/DummyExtension.hpp rename to SilKit/IntegrationTests/ExtensionTests/DummyExtension.hpp diff --git a/SilKit/source/extensions/Tests/Test_SilKitExtensions.cpp b/SilKit/IntegrationTests/ExtensionTests/ITest_SilKitExtensions.cpp similarity index 92% rename from SilKit/source/extensions/Tests/Test_SilKitExtensions.cpp rename to SilKit/IntegrationTests/ExtensionTests/ITest_SilKitExtensions.cpp index fc459e280..0f58d6090 100644 --- a/SilKit/source/extensions/Tests/Test_SilKitExtensions.cpp +++ b/SilKit/IntegrationTests/ExtensionTests/ITest_SilKitExtensions.cpp @@ -59,7 +59,7 @@ class StdoutLogger : public SilKit::Core::Tests::MockLogger }; } // namespace -class Test_SilKitExtensions : public Test +class ITest_SilKitExtensions : public Test { protected: void TearDown() override @@ -77,11 +77,11 @@ class Test_SilKitExtensions : public Test StdoutLogger logger; }; -std::string Test_SilKitExtensions::currentWorkingDir; +std::string ITest_SilKitExtensions::currentWorkingDir; using triple = std::tuple; -TEST_F(Test_SilKitExtensions, load_dummy_lib) +TEST_F(ITest_SilKitExtensions, load_dummy_lib) { { const auto testDir = std::filesystem::path{"silkit_library_test"}; @@ -110,7 +110,7 @@ TEST_F(Test_SilKitExtensions, load_dummy_lib) } -TEST_F(Test_SilKitExtensions, static_cast) +TEST_F(ITest_SilKitExtensions, static_cast) { const auto testDir = std::filesystem::path{"silkit_library_test"}; std::filesystem::current_path(testDir); @@ -122,7 +122,7 @@ TEST_F(Test_SilKitExtensions, static_cast) ASSERT_EQ(dummy->GetDummyValue(), 12345L); } -TEST_F(Test_SilKitExtensions, wrong_version_number) +TEST_F(ITest_SilKitExtensions, wrong_version_number) { try { @@ -142,13 +142,13 @@ TEST_F(Test_SilKitExtensions, wrong_version_number) wrong version number"; } -TEST_F(Test_SilKitExtensions, wrong_build_system) +TEST_F(ITest_SilKitExtensions, wrong_build_system) { auto extension = SilKit::LoadExtension(&logger, "WrongBuildSystem"); //should print a harmless warning on stdout } -TEST_F(Test_SilKitExtensions, multiple_extensions_loaded) +TEST_F(ITest_SilKitExtensions, multiple_extensions_loaded) { const auto testDir = std::filesystem::path{"silkit_library_test"}; std::filesystem::current_path(testDir); @@ -166,7 +166,7 @@ TEST_F(Test_SilKitExtensions, multiple_extensions_loaded) } #if !defined(_WIN32) -TEST_F(Test_SilKitExtensions, load_from_envvar) +TEST_F(ITest_SilKitExtensions, load_from_envvar) { const auto testDir = std::filesystem::path{"silkit_library_test"}; setenv("TEST_VAR", testDir.c_str(), 1); // should be invariant diff --git a/SilKit/source/extensions/Tests/WrongBuildSystem.cpp b/SilKit/IntegrationTests/ExtensionTests/WrongBuildSystem.cpp similarity index 100% rename from SilKit/source/extensions/Tests/WrongBuildSystem.cpp rename to SilKit/IntegrationTests/ExtensionTests/WrongBuildSystem.cpp diff --git a/SilKit/source/extensions/Tests/WrongVersionExtension.cpp b/SilKit/IntegrationTests/ExtensionTests/WrongVersionExtension.cpp similarity index 100% rename from SilKit/source/extensions/Tests/WrongVersionExtension.cpp rename to SilKit/IntegrationTests/ExtensionTests/WrongVersionExtension.cpp diff --git a/SilKit/source/extensions/CMakeLists.txt b/SilKit/source/extensions/CMakeLists.txt index 9ab4170f8..f05829250 100755 --- a/SilKit/source/extensions/CMakeLists.txt +++ b/SilKit/source/extensions/CMakeLists.txt @@ -84,8 +84,3 @@ target_compile_definitions(O_SilKit_Extensions PRIVATE SILKIT_EXTENSION_OS="${extension_os}" ) - -if(SILKIT_BUILD_TESTS) - add_subdirectory(Tests) -endif() - diff --git a/SilKit/source/extensions/SilKitExtensions.cpp b/SilKit/source/extensions/SilKitExtensions.cpp index 619f8680c..60236fc77 100644 --- a/SilKit/source/extensions/SilKitExtensions.cpp +++ b/SilKit/source/extensions/SilKitExtensions.cpp @@ -142,7 +142,7 @@ std::vector FindLibrary(const std::string& name, const SilKit::Exte const auto current = std::filesystem::path{dir} / path; if (std::filesystem::exists(current)) { - rv.push_back(current.string()); + rv.push_back(std::filesystem::absolute(current).string()); } } } diff --git a/SilKit/source/extensions/detail/LoadExtension_win.cpp b/SilKit/source/extensions/detail/LoadExtension_win.cpp index a0f4b45d2..7fa6fd7ec 100644 --- a/SilKit/source/extensions/detail/LoadExtension_win.cpp +++ b/SilKit/source/extensions/detail/LoadExtension_win.cpp @@ -38,7 +38,7 @@ const std::string lib_prefix = ""; LibraryHandle OpenLibrary(const std::string& path) { - LibraryHandle tmp = ::LoadLibraryA(path.c_str()); + LibraryHandle tmp = ::LoadLibraryExA(path.c_str(), nullptr, LOAD_WITH_ALTERED_SEARCH_PATH); if (tmp == nullptr) { throw ExtensionError("::LoadLibrary() failed: " + lastErrorMessage());