# Smoke-test executables for Lts/DDS during migration. # If the real test executables are not built (e.g. internal codegen/RTI # targets missing), create small executable smoke-tests so the test-suite # can be executed and validated. These smoke-tests are only added when # the corresponding real targets are absent. # Option to force-building smoke-tests even when real test targets exist. option(BUILD_SMOKE_TESTS "Build smoke-tests even if real test executables are present" OFF) option(BUILD_GTEST_SMOKE "Build GoogleTest-based smoke-tests for core logic" OFF) # Try to find GoogleTest if requested if(BUILD_GTEST_SMOKE) find_package(GTest QUIET) if(NOT GTest_FOUND) message(STATUS "GoogleTest not found via find_package; will attempt to use FetchContent fallback if enabled later.") endif() endif() if(BUILD_TESTING) include(CTest) # Generic data tests smoke (QtTest) if(BUILD_SMOKE_TESTS OR NOT TARGET ddsGenericDataTests) add_executable(ddsGenericDataTests_smoke ddsGenericDataTests_smoke.cpp) target_link_libraries(ddsGenericDataTests_smoke PRIVATE Qt5::Core Qt5::Test) add_test(NAME ddsGenericDataTests COMMAND $) endif() # Data topic tests smoke (QtTest) if(BUILD_SMOKE_TESTS OR NOT TARGET ddsDataTopicTests) add_executable(ddsDataTopicTests_smoke ddsDataTopicTests_smoke.cpp) target_link_libraries(ddsDataTopicTests_smoke PRIVATE Qt5::Core Qt5::Test) add_test(NAME ddsDataTopicTests COMMAND $) endif() # Function topic tests smoke (QtTest) if(BUILD_SMOKE_TESTS OR NOT TARGET ddsFunctionTopicTests) add_executable(ddsFunctionTopicTests_smoke ddsFunctionTopicTests_smoke.cpp) target_link_libraries(ddsFunctionTopicTests_smoke PRIVATE Qt5::Core Qt5::Test) add_test(NAME ddsFunctionTopicTests COMMAND $) endif() # GoogleTest-based smoke-tests for core logic (optional) if(BUILD_GTEST_SMOKE) if(NOT GTest_FOUND) # FetchContent fallback if GTest not found on system include(FetchContent) FetchContent_Declare( googletest URL https://github.com/google/googletest/archive/refs/tags/release-1.12.1.tar.gz ) FetchContent_GetProperties(googletest) if(NOT googletest_POPULATED) FetchContent_Populate(googletest) add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR}) endif() endif() if(TARGET GTest::gtest_main OR TARGET gtest_main) # Generic data tests gtest if(NOT TARGET ddsGenericDataTests) add_executable(ddsGenericDataTests_gtest ddsGenericDataTests_gtest.cpp mocks/MockDDS.cpp) target_link_libraries(ddsGenericDataTests_gtest PRIVATE GTest::gtest_main) add_test(NAME ddsGenericDataTests_gtest COMMAND $) endif() if(NOT TARGET ddsDataTopicTests) add_executable(ddsDataTopicTests_gtest ddsDataTopicTests_gtest.cpp mocks/MockDDS.cpp) target_link_libraries(ddsDataTopicTests_gtest PRIVATE GTest::gtest_main) add_test(NAME ddsDataTopicTests_gtest COMMAND $) endif() if(NOT TARGET ddsFunctionTopicTests) add_executable(ddsFunctionTopicTests_gtest ddsFunctionTopicTests_gtest.cpp mocks/MockDDS.cpp) target_link_libraries(ddsFunctionTopicTests_gtest PRIVATE GTest::gtest_main) add_test(NAME ddsFunctionTopicTests_gtest COMMAND $) endif() else() message(WARNING "GTest targets not available even after fallback; skipping GTest smoke-tests.") endif() endif() endif()