From 5388c32f1011b9737b799057b533255956a6544e Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Sun, 15 Jun 2025 10:29:41 -0500 Subject: [PATCH] Tests: Refactor tests with better names, etc. The basic tests now run on Windows correctly without needing to manually copy any files -- the executables are output in the same location as the necessary DLLs. However, tests that require *.pyd files (all code in the Mod subdirectory, basically) still do not work on Windows as the test executables cannot find those files. This is a work in progress. --- tests/CMakeLists.txt | 68 ++++++++++++-------- tests/src/App/BackupPolicy.cpp | 14 ++-- tests/src/App/CMakeLists.txt | 14 +++- tests/src/Base/CMakeLists.txt | 9 ++- tests/src/Gui/CMakeLists.txt | 11 +++- tests/src/Misc/CMakeLists.txt | 9 ++- tests/src/Misc/fmt.cpp | 4 +- tests/src/Mod/Assembly/App/CMakeLists.txt | 2 +- tests/src/Mod/Assembly/CMakeLists.txt | 3 +- tests/src/Mod/Material/App/CMakeLists.txt | 2 +- tests/src/Mod/Material/CMakeLists.txt | 4 +- tests/src/Mod/Measure/App/CMakeLists.txt | 2 +- tests/src/Mod/Measure/CMakeLists.txt | 4 +- tests/src/Mod/Mesh/App/CMakeLists.txt | 6 +- tests/src/Mod/Mesh/CMakeLists.txt | 4 +- tests/src/Mod/MeshPart/App/CMakeLists.txt | 2 +- tests/src/Mod/MeshPart/CMakeLists.txt | 4 +- tests/src/Mod/Part/App/CMakeLists.txt | 2 +- tests/src/Mod/Part/CMakeLists.txt | 4 +- tests/src/Mod/PartDesign/App/CMakeLists.txt | 2 +- tests/src/Mod/PartDesign/CMakeLists.txt | 4 +- tests/src/Mod/Points/App/CMakeLists.txt | 2 +- tests/src/Mod/Points/CMakeLists.txt | 4 +- tests/src/Mod/Sketcher/App/CMakeLists.txt | 2 +- tests/src/Mod/Sketcher/CMakeLists.txt | 4 +- tests/src/Mod/Spreadsheet/App/CMakeLists.txt | 2 +- tests/src/Mod/Spreadsheet/CMakeLists.txt | 4 +- tests/src/Mod/Start/App/CMakeLists.txt | 8 +-- tests/src/Mod/Start/CMakeLists.txt | 3 +- tests/src/zipios++/CMakeLists.txt | 22 +++++-- 30 files changed, 138 insertions(+), 87 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 069498dfa8..8a83ceeaf2 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -41,7 +41,7 @@ if(MSVC) endif() if(WIN32) - add_definitions(-DCOIN_DLL -D_USE_MATH_DEFINES) + add_definitions(-DCOIN_DLL) endif(WIN32) if(NOT BUILD_DYNAMIC_LINK_PYTHON) @@ -78,69 +78,83 @@ function(setup_qt_test) endforeach() endfunction() -# Add test executables here - set(TestExecutables - Tests_run + App_tests_run + Base_tests_run + Misc_tests_run + Zipios_tests_run ) +# NOTE: The following tests don't yet run on Windows because they can't find the *.pyd files needed by each FreeCAD +# module. + +if(BUILD_GUI) + list (APPEND TestExecutables Gui_tests_run) +endif() if(BUILD_ASSEMBLY) - list (APPEND TestExecutables Assembly_tests_run) + list (APPEND TestExecutables Assembly_tests_run) endif(BUILD_ASSEMBLY) if(BUILD_MATERIAL) - list (APPEND TestExecutables Material_tests_run) + list (APPEND TestExecutables Material_tests_run) endif(BUILD_MATERIAL) if(BUILD_MEASURE) - list (APPEND TestExecutables Measure_tests_run) + list (APPEND TestExecutables Measure_tests_run) endif(BUILD_MEASURE) if(BUILD_MESH) - list (APPEND TestExecutables Mesh_tests_run) + list (APPEND TestExecutables Mesh_tests_run) endif(BUILD_MESH) if(BUILD_MESH_PART) - list (APPEND TestExecutables MeshPart_tests_run) + list (APPEND TestExecutables MeshPart_tests_run) endif(BUILD_MESH_PART) if(BUILD_PART) - list (APPEND TestExecutables Part_tests_run) + list (APPEND TestExecutables Part_tests_run) endif(BUILD_PART) if(BUILD_PART_DESIGN) list (APPEND TestExecutables PartDesign_tests_run) endif(BUILD_PART_DESIGN) if(BUILD_POINTS) - list (APPEND TestExecutables Points_tests_run) + list (APPEND TestExecutables Points_tests_run) endif(BUILD_POINTS) if(BUILD_SKETCHER) - list (APPEND TestExecutables Sketcher_tests_run) + list (APPEND TestExecutables Sketcher_tests_run) endif(BUILD_SKETCHER) if(BUILD_SPREADSHEET) - list (APPEND TestExecutables Spreadsheet_tests_run) + list (APPEND TestExecutables Spreadsheet_tests_run) endif() if(BUILD_START) - list (APPEND TestExecutables Start_tests_run) + list (APPEND TestExecutables Start_tests_run) endif() # ------------------------- -foreach (exe ${TestExecutables}) - add_executable(${exe}) -endforeach() - if ( NOT FREECAD_USE_EXTERNAL_GTEST ) + if(WIN32) + set(BUILD_SHARED_LIBS OFF) + endif() add_subdirectory(lib) endif() add_subdirectory(src) -target_link_libraries(Tests_run - gtest_main - gmock_main - ${Google_Tests_LIBS} - FreeCADApp - FreeCADGui -) - include(GoogleTest) -# discovers tests by asking the compiled test executable to enumerate its tests set(CMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE PRE_TEST) foreach (exe ${TestExecutables}) + if(WIN32) + # On Windows the test executables need to be in the same place as all the other DLLs that are getting built + if(CMAKE_CONFIGURATION_TYPES) + # Visual Studio solution file, supports switching configs on the fly in the IDE + set(OUTPUT_DIR ${CMAKE_BINARY_DIR}/bin) + foreach(OUTPUT_CONFIG Debug Release RelWithDebInfo MinSizeRel) + string(TOUPPER "${OUTPUT_CONFIG}" UPPER_CONFIG) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${UPPER_CONFIG} ${OUTPUT_DIR}/${OUTPUT_CONFIG}) + endforeach() + else() + # Ninja (usually), e.g. when using CLion with MSVC toolchain, etc. is actually single-config + set_target_properties(${exe} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) + set_target_properties(${exe} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) + endif() + else() + set_target_properties(${exe} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/tests) + endif() gtest_discover_tests(${exe}) endforeach() diff --git a/tests/src/App/BackupPolicy.cpp b/tests/src/App/BackupPolicy.cpp index 94c85e8ec2..10679df6a7 100644 --- a/tests/src/App/BackupPolicy.cpp +++ b/tests/src/App/BackupPolicy.cpp @@ -44,7 +44,8 @@ protected: void SetUp() override { - _tempDir = std::filesystem::temp_directory_path() / ("fc_backup_policy-" + randomString(16)); + _tempDir = + std::filesystem::temp_directory_path() / ("fc_backup_policy-" + randomString(16)); std::filesystem::create_directory(_tempDir); } @@ -79,13 +80,11 @@ protected: private: - std::string randomString(size_t length) { - static constexpr std::string_view chars = - "0123456789" - "abcdefghijklmnopqrstuvwxyz" - "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + static constexpr std::string_view chars = "0123456789" + "abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; std::random_device rd; std::mt19937 gen(rd()); @@ -103,7 +102,6 @@ private: App::BackupPolicy _policy; std::filesystem::path _tempDir; - }; TEST_F(BackupPolicyTest, StandardSourceDoesNotExist) @@ -113,4 +111,4 @@ TEST_F(BackupPolicyTest, StandardSourceDoesNotExist) // Act & Assert EXPECT_THROW(apply("nonexistent.fcstd", "backup.fcstd"), Base::FileException); -} \ No newline at end of file +} diff --git a/tests/src/App/CMakeLists.txt b/tests/src/App/CMakeLists.txt index 6ba90417b2..182c9152ef 100644 --- a/tests/src/App/CMakeLists.txt +++ b/tests/src/App/CMakeLists.txt @@ -1,7 +1,6 @@ -target_compile_definitions(Tests_run PRIVATE DATADIR="${CMAKE_SOURCE_DIR}/data") - -target_sources(Tests_run PRIVATE +add_executable(App_tests_run Application.cpp + BackupPolicy.cpp Branding.cpp ComplexGeoData.cpp Document.cpp @@ -24,3 +23,12 @@ target_sources(Tests_run PRIVATE VarSet.cpp VRMLObject.cpp ) + +target_compile_definitions(App_tests_run PRIVATE DATADIR="${CMAKE_SOURCE_DIR}/data") + +target_link_libraries(App_tests_run PRIVATE + GTest::gtest_main + GTest::gmock_main + ${Google_Tests_LIBS} + FreeCADApp +) diff --git a/tests/src/Base/CMakeLists.txt b/tests/src/Base/CMakeLists.txt index 9bc17b29ec..0bdc34ba5c 100644 --- a/tests/src/Base/CMakeLists.txt +++ b/tests/src/Base/CMakeLists.txt @@ -1,4 +1,4 @@ -target_sources(Tests_run PRIVATE +add_executable(Base_tests_run Axis.cpp Base64.cpp Bitmask.cpp @@ -31,3 +31,10 @@ target_sources(Tests_run PRIVATE ) setup_qt_test(InventorBuilder) + +target_link_libraries(Base_tests_run PRIVATE + GTest::gtest_main + GTest::gmock_main + ${Google_Tests_LIBS} + FreeCADApp +) diff --git a/tests/src/Gui/CMakeLists.txt b/tests/src/Gui/CMakeLists.txt index 774cf35f31..499ee7ba9f 100644 --- a/tests/src/Gui/CMakeLists.txt +++ b/tests/src/Gui/CMakeLists.txt @@ -1,8 +1,17 @@ # Standard C++ GTest tests -target_sources(Tests_run PRIVATE +add_executable(Gui_tests_run Assistant.cpp Camera.cpp ) # Qt tests setup_qt_test(QuantitySpinBox) + + +target_link_libraries(Gui_tests_run PRIVATE + GTest::gtest_main + GTest::gmock_main + ${Google_Tests_LIBS} + FreeCADApp + FreeCADGui +) diff --git a/tests/src/Misc/CMakeLists.txt b/tests/src/Misc/CMakeLists.txt index 6688fc7546..33cf8f1d8d 100644 --- a/tests/src/Misc/CMakeLists.txt +++ b/tests/src/Misc/CMakeLists.txt @@ -1,3 +1,10 @@ -target_sources(Tests_run PRIVATE +add_executable(Misc_tests_run fmt.cpp ) + +target_link_libraries(Misc_tests_run PRIVATE + GTest::gtest_main + GTest::gmock_main + ${Google_Tests_LIBS} + fmt::fmt +) diff --git a/tests/src/Misc/fmt.cpp b/tests/src/Misc/fmt.cpp index 778e03b7ad..8113745a74 100644 --- a/tests/src/Misc/fmt.cpp +++ b/tests/src/Misc/fmt.cpp @@ -1,5 +1,5 @@ -#include "fmt/format.h" -#include "fmt/printf.h" +#include +#include #include #include diff --git a/tests/src/Mod/Assembly/App/CMakeLists.txt b/tests/src/Mod/Assembly/App/CMakeLists.txt index 0d4135aff8..8b9a91cceb 100644 --- a/tests/src/Mod/Assembly/App/CMakeLists.txt +++ b/tests/src/Mod/Assembly/App/CMakeLists.txt @@ -1,3 +1,3 @@ -target_sources(Assembly_tests_run PRIVATE +add_executable(Assembly_tests_run AssemblyObject.cpp ) diff --git a/tests/src/Mod/Assembly/CMakeLists.txt b/tests/src/Mod/Assembly/CMakeLists.txt index ea1936eb89..42fbe630be 100644 --- a/tests/src/Mod/Assembly/CMakeLists.txt +++ b/tests/src/Mod/Assembly/CMakeLists.txt @@ -1,3 +1,4 @@ +add_subdirectory(App) if (NOT FREECAD_USE_EXTERNAL_ONDSELSOLVER) target_include_directories(Assembly_tests_run PUBLIC @@ -10,5 +11,3 @@ target_link_libraries(Assembly_tests_run ${Google_Tests_LIBS} Assembly ) - -add_subdirectory(App) diff --git a/tests/src/Mod/Material/App/CMakeLists.txt b/tests/src/Mod/Material/App/CMakeLists.txt index b6b4cd949a..8e9b748285 100644 --- a/tests/src/Mod/Material/App/CMakeLists.txt +++ b/tests/src/Mod/Material/App/CMakeLists.txt @@ -1,4 +1,4 @@ -target_sources(Material_tests_run PRIVATE +add_executable(Material_tests_run TestMaterialCards.cpp TestMaterialFilter.cpp TestMaterialProperties.cpp diff --git a/tests/src/Mod/Material/CMakeLists.txt b/tests/src/Mod/Material/CMakeLists.txt index b592fcd16d..4e309e4f55 100644 --- a/tests/src/Mod/Material/CMakeLists.txt +++ b/tests/src/Mod/Material/CMakeLists.txt @@ -1,7 +1,7 @@ +add_subdirectory(App) + target_link_libraries(Material_tests_run gtest_main ${Google_Tests_LIBS} Materials ) - -add_subdirectory(App) diff --git a/tests/src/Mod/Measure/App/CMakeLists.txt b/tests/src/Mod/Measure/App/CMakeLists.txt index 72857fce11..523974b8e2 100644 --- a/tests/src/Mod/Measure/App/CMakeLists.txt +++ b/tests/src/Mod/Measure/App/CMakeLists.txt @@ -1,4 +1,4 @@ -target_sources(Measure_tests_run PRIVATE +add_executable(Measure_tests_run MeasureDistance.cpp ) diff --git a/tests/src/Mod/Measure/CMakeLists.txt b/tests/src/Mod/Measure/CMakeLists.txt index 5c3bffe472..12bce0f024 100644 --- a/tests/src/Mod/Measure/CMakeLists.txt +++ b/tests/src/Mod/Measure/CMakeLists.txt @@ -1,7 +1,7 @@ +add_subdirectory(App) + target_link_libraries(Measure_tests_run gtest_main ${Google_Tests_LIBS} Measure ) - -add_subdirectory(App) diff --git a/tests/src/Mod/Mesh/App/CMakeLists.txt b/tests/src/Mod/Mesh/App/CMakeLists.txt index d90597b62e..b4f6a04ca6 100644 --- a/tests/src/Mod/Mesh/App/CMakeLists.txt +++ b/tests/src/Mod/Mesh/App/CMakeLists.txt @@ -1,9 +1,9 @@ -target_compile_definitions(Mesh_tests_run PRIVATE DATADIR="${CMAKE_SOURCE_DIR}/data") - -target_sources(Mesh_tests_run PRIVATE +add_executable(Mesh_tests_run Core/KDTree.cpp Exporter.cpp Importer.cpp Mesh.cpp MeshFeature.cpp ) + +target_compile_definitions(Mesh_tests_run PRIVATE DATADIR="${CMAKE_SOURCE_DIR}/data") diff --git a/tests/src/Mod/Mesh/CMakeLists.txt b/tests/src/Mod/Mesh/CMakeLists.txt index 8892bc2af4..a1b44216ee 100644 --- a/tests/src/Mod/Mesh/CMakeLists.txt +++ b/tests/src/Mod/Mesh/CMakeLists.txt @@ -1,7 +1,7 @@ +add_subdirectory(App) + target_link_libraries(Mesh_tests_run gtest_main ${Google_Tests_LIBS} Mesh ) - -add_subdirectory(App) diff --git a/tests/src/Mod/MeshPart/App/CMakeLists.txt b/tests/src/Mod/MeshPart/App/CMakeLists.txt index f9c003744a..96f4eadc4f 100644 --- a/tests/src/Mod/MeshPart/App/CMakeLists.txt +++ b/tests/src/Mod/MeshPart/App/CMakeLists.txt @@ -1,4 +1,4 @@ -target_sources(MeshPart_tests_run PRIVATE +add_executable(MeshPart_tests_run MeshPart.cpp ) diff --git a/tests/src/Mod/MeshPart/CMakeLists.txt b/tests/src/Mod/MeshPart/CMakeLists.txt index 9b5cddaf2f..019097ca2c 100644 --- a/tests/src/Mod/MeshPart/CMakeLists.txt +++ b/tests/src/Mod/MeshPart/CMakeLists.txt @@ -1,7 +1,7 @@ +add_subdirectory(App) + target_link_libraries(MeshPart_tests_run gtest_main ${Google_Tests_LIBS} MeshPart ) - -add_subdirectory(App) diff --git a/tests/src/Mod/Part/App/CMakeLists.txt b/tests/src/Mod/Part/App/CMakeLists.txt index e83ec0c794..958db78e7d 100644 --- a/tests/src/Mod/Part/App/CMakeLists.txt +++ b/tests/src/Mod/Part/App/CMakeLists.txt @@ -1,4 +1,4 @@ -target_sources(Part_tests_run PRIVATE +add_executable(Part_tests_run Attacher.cpp AttachExtension.cpp BRepMesh.cpp diff --git a/tests/src/Mod/Part/CMakeLists.txt b/tests/src/Mod/Part/CMakeLists.txt index 82e7f5b12b..e5ca397145 100644 --- a/tests/src/Mod/Part/CMakeLists.txt +++ b/tests/src/Mod/Part/CMakeLists.txt @@ -1,7 +1,7 @@ +add_subdirectory(App) + target_link_libraries(Part_tests_run gtest_main ${Google_Tests_LIBS} Part ) - -add_subdirectory(App) diff --git a/tests/src/Mod/PartDesign/App/CMakeLists.txt b/tests/src/Mod/PartDesign/App/CMakeLists.txt index 8a33bc519e..9957f510f0 100644 --- a/tests/src/Mod/PartDesign/App/CMakeLists.txt +++ b/tests/src/Mod/PartDesign/App/CMakeLists.txt @@ -1,5 +1,5 @@ -target_sources(PartDesign_tests_run PRIVATE +add_executable(PartDesign_tests_run BackwardCompatibility.cpp DatumPlane.cpp ShapeBinder.cpp diff --git a/tests/src/Mod/PartDesign/CMakeLists.txt b/tests/src/Mod/PartDesign/CMakeLists.txt index a4b6aa366d..328b79e8c7 100644 --- a/tests/src/Mod/PartDesign/CMakeLists.txt +++ b/tests/src/Mod/PartDesign/CMakeLists.txt @@ -1,8 +1,8 @@ +add_subdirectory(App) + target_link_libraries(PartDesign_tests_run gtest_main ${Google_Tests_LIBS} PartDesign Sketcher ) - -add_subdirectory(App) diff --git a/tests/src/Mod/Points/App/CMakeLists.txt b/tests/src/Mod/Points/App/CMakeLists.txt index f0edeee9fa..29a688a6bb 100644 --- a/tests/src/Mod/Points/App/CMakeLists.txt +++ b/tests/src/Mod/Points/App/CMakeLists.txt @@ -1,4 +1,4 @@ -target_sources(Points_tests_run PRIVATE +add_executable(Points_tests_run Points.cpp PointsFeature.cpp ) diff --git a/tests/src/Mod/Points/CMakeLists.txt b/tests/src/Mod/Points/CMakeLists.txt index 1620a16aae..a6cf99b6ed 100644 --- a/tests/src/Mod/Points/CMakeLists.txt +++ b/tests/src/Mod/Points/CMakeLists.txt @@ -1,7 +1,7 @@ +add_subdirectory(App) + target_link_libraries(Points_tests_run gtest_main ${Google_Tests_LIBS} Points ) - -add_subdirectory(App) diff --git a/tests/src/Mod/Sketcher/App/CMakeLists.txt b/tests/src/Mod/Sketcher/App/CMakeLists.txt index 5c4d2660a5..4f0e1dd60d 100644 --- a/tests/src/Mod/Sketcher/App/CMakeLists.txt +++ b/tests/src/Mod/Sketcher/App/CMakeLists.txt @@ -1,4 +1,4 @@ -target_sources(Sketcher_tests_run PRIVATE +add_executable(Sketcher_tests_run SketcherTestHelpers.cpp SketchObject.cpp SketchObjectChanges.cpp diff --git a/tests/src/Mod/Sketcher/CMakeLists.txt b/tests/src/Mod/Sketcher/CMakeLists.txt index 38271f56c0..e034c91afb 100644 --- a/tests/src/Mod/Sketcher/CMakeLists.txt +++ b/tests/src/Mod/Sketcher/CMakeLists.txt @@ -1,7 +1,7 @@ +add_subdirectory(App) + target_link_libraries(Sketcher_tests_run gtest_main ${Google_Tests_LIBS} Sketcher ) - -add_subdirectory(App) diff --git a/tests/src/Mod/Spreadsheet/App/CMakeLists.txt b/tests/src/Mod/Spreadsheet/App/CMakeLists.txt index 06fda257d3..c3f8330a34 100644 --- a/tests/src/Mod/Spreadsheet/App/CMakeLists.txt +++ b/tests/src/Mod/Spreadsheet/App/CMakeLists.txt @@ -1,4 +1,4 @@ -target_sources(Spreadsheet_tests_run PRIVATE +add_executable(Spreadsheet_tests_run PropertySheet.cpp RenameProperty.cpp ) diff --git a/tests/src/Mod/Spreadsheet/CMakeLists.txt b/tests/src/Mod/Spreadsheet/CMakeLists.txt index 4f46689b85..2bfcf5a276 100644 --- a/tests/src/Mod/Spreadsheet/CMakeLists.txt +++ b/tests/src/Mod/Spreadsheet/CMakeLists.txt @@ -1,7 +1,7 @@ +add_subdirectory(App) + target_link_libraries(Spreadsheet_tests_run gtest_main ${Google_Tests_LIBS} Spreadsheet ) - -add_subdirectory(App) diff --git a/tests/src/Mod/Start/App/CMakeLists.txt b/tests/src/Mod/Start/App/CMakeLists.txt index 4220b32b8e..1bc72689e7 100644 --- a/tests/src/Mod/Start/App/CMakeLists.txt +++ b/tests/src/Mod/Start/App/CMakeLists.txt @@ -1,8 +1,6 @@ -target_sources( - Start_tests_run - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/FileUtilities.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/ThumbnailSource.cpp +add_executable(Start_tests_run + FileUtilities.cpp + ThumbnailSource.cpp ) target_include_directories( diff --git a/tests/src/Mod/Start/CMakeLists.txt b/tests/src/Mod/Start/CMakeLists.txt index 62680aa490..24fe58429a 100644 --- a/tests/src/Mod/Start/CMakeLists.txt +++ b/tests/src/Mod/Start/CMakeLists.txt @@ -1,3 +1,4 @@ +add_subdirectory(App) target_include_directories(Start_tests_run PUBLIC ${Python3_INCLUDE_DIRS} @@ -8,5 +9,3 @@ target_link_libraries(Start_tests_run ${Google_Tests_LIBS} Start ) - -add_subdirectory(App) diff --git a/tests/src/zipios++/CMakeLists.txt b/tests/src/zipios++/CMakeLists.txt index 4d34c683da..cbf5ac19c5 100644 --- a/tests/src/zipios++/CMakeLists.txt +++ b/tests/src/zipios++/CMakeLists.txt @@ -1,6 +1,18 @@ -target_sources( - Tests_run - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/collectioncollection.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/zipfile.cpp +add_executable(Zipios_tests_run + collectioncollection.cpp + zipfile.cpp +) + + +target_link_libraries(Zipios_tests_run PRIVATE + GTest::gtest_main + GTest::gmock_main + ${Google_Tests_LIBS} + FreeCADApp +) + +target_include_directories( + Zipios_tests_run PRIVATE + ${ZIPIOS_INCLUDES} + ${ZLIB_INCLUDE_DIR} )