From 7d7b68949e1f5f43b68a718d44c538bb9471c08d Mon Sep 17 00:00:00 2001 From: Tom Date: Thu, 12 Feb 2026 18:11:31 -0500 Subject: [PATCH] Add flag to enable/disable building tests. Build tests by default. Setup working folder for tests. --- CMakeLists.txt | 7 +++++++ src/controller/CMakeLists.txt | 26 ++++++++++++++++---------- src/controller/tests/basic_tests.cpp | 4 ++-- src/model/CMakeLists.txt | 25 ++++++++++++++----------- src/model/src/tests/basic_tests.cpp | 2 +- 5 files changed, 40 insertions(+), 24 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 597b9fe2..8ec940dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,6 +25,7 @@ option(ROCPROFVIS_DEVELOPER_MODE "Enable developer mode features" OFF) option(ROCPROFVIS_ENABLE_INTERNAL_BANNER "Show diagonal internal build banner" OFF) option(USE_NATIVE_FILE_DIALOG "Use the OS native file dialog instead of ImGui file dialog" ON) option(GLFW_LINK_STATIC "Link GLFW statically instead of dynamically" OFF) +option(BUILD_TESTING "Build the testing tree" ON) if(APPLE AND USE_NATIVE_FILE_DIALOG) set(USE_NATIVE_FILE_DIALOG OFF CACHE BOOL @@ -52,6 +53,12 @@ else() set(GLFW_LIBRARY_TYPE "SHARED" CACHE STRING "GLFW library type" FORCE) endif() +# Enable testing if BUILD_TESTING is ON +if(BUILD_TESTING) + enable_testing() + include(CTest) +endif() + # Add third-party libraries, core, and model BEFORE controller add_subdirectory(thirdparty) add_subdirectory(src/core) diff --git a/src/controller/CMakeLists.txt b/src/controller/CMakeLists.txt index 097c4e93..f5ff06c2 100644 --- a/src/controller/CMakeLists.txt +++ b/src/controller/CMakeLists.txt @@ -71,17 +71,23 @@ target_include_directories(${TARGET_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../ target_include_directories(${TARGET_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../core/inc) target_include_directories(${TARGET_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src) -add_executable(${PROJECT_NAME}-basic-tests tests/basic_tests.cpp) -target_link_libraries(${PROJECT_NAME}-basic-tests PRIVATE ${PROJECT_NAME}) -target_link_libraries(${PROJECT_NAME}-basic-tests PRIVATE Catch2::Catch2WithMain) - if(COMPUTE_UI_SUPPORT) target_link_libraries(${TARGET_NAME} PUBLIC csv) - # Csv parser enables coverage in debug builds so we need to enable it too - if((CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") AND (CMAKE_BUILD_TYPE STREQUAL "Debug" OR NOT CMAKE_BUILD_TYPE)) - target_link_options(${PROJECT_NAME}-basic-tests PRIVATE --coverage) - endif() endif() -add_test(NAME ${PROJECT_NAME}-basic-tests COMMAND ${PROJECT_NAME}-basic-tests) -set_tests_properties(${PROJECT_NAME}-basic-tests PROPERTIES RUN_SERIAL ON) +if(BUILD_TESTING) + add_executable(${PROJECT_NAME}-basic-tests tests/basic_tests.cpp) + target_link_libraries(${PROJECT_NAME}-basic-tests PRIVATE ${PROJECT_NAME}) + target_link_libraries(${PROJECT_NAME}-basic-tests PRIVATE Catch2::Catch2WithMain) + + if(COMPUTE_UI_SUPPORT) + # Csv parser enables coverage in debug builds so we need to enable it too + if((CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") AND (CMAKE_BUILD_TYPE STREQUAL "Debug" OR NOT CMAKE_BUILD_TYPE)) + target_link_options(${PROJECT_NAME}-basic-tests PRIVATE --coverage) + endif() + endif() + + add_test(NAME ${PROJECT_NAME}-basic-tests COMMAND ${PROJECT_NAME}-basic-tests) + set_tests_properties(${PROJECT_NAME}-basic-tests PROPERTIES RUN_SERIAL ON) + set_tests_properties(${PROJECT_NAME}-basic-tests PROPERTIES WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}") +endif() diff --git a/src/controller/tests/basic_tests.cpp b/src/controller/tests/basic_tests.cpp index 2d35cc98..2f0a89e8 100644 --- a/src/controller/tests/basic_tests.cpp +++ b/src/controller/tests/basic_tests.cpp @@ -27,7 +27,7 @@ #define MULTI_LINE_LOG_ARGS "{:.{}}",multi_line_log.data(),multi_line_log.size() -std::string g_input_file="../../../sample/trace_70b_1024_32.rpd"; +std::string g_input_file="sample/trace_70b_1024_32.rpd"; bool g_all_tracks=false; bool g_full_range=false; @@ -84,7 +84,7 @@ TEST_CASE_PERSISTENT_FIXTURE(RocProfVisControllerFixture, "Tests for the Control REQUIRE(nullptr != m_controller); } - SECTION("Controller Initialisation") + SECTION("Controller Initialization") { spdlog::info("Allocating Future"); rocprofvis_controller_future_t* future = rocprofvis_controller_future_alloc(); diff --git a/src/model/CMakeLists.txt b/src/model/CMakeLists.txt index 637a473d..c64f1170 100644 --- a/src/model/CMakeLists.txt +++ b/src/model/CMakeLists.txt @@ -65,14 +65,17 @@ target_link_libraries(${PROJECT_NAME}-test spdlog) target_link_libraries(${PROJECT_NAME}-test sqlite3) target_link_libraries(${PROJECT_NAME}-test json) -add_executable(${PROJECT_NAME}-basic-tests src/tests/basic_tests.cpp) -target_include_directories(${PROJECT_NAME}-basic-tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../core/inc) -target_include_directories(${PROJECT_NAME}-basic-tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/jsoncpp) -target_link_libraries(${PROJECT_NAME}-basic-tests PRIVATE ${PROJECT_NAME}) -target_link_libraries(${PROJECT_NAME}-basic-tests PRIVATE Catch2::Catch2WithMain) -target_link_libraries(${PROJECT_NAME}-basic-tests PRIVATE roc-optiq-core) -target_link_libraries(${PROJECT_NAME}-basic-tests PRIVATE spdlog) -target_link_libraries(${PROJECT_NAME}-basic-tests PRIVATE sqlite3) -target_link_libraries(${PROJECT_NAME}-basic-tests PRIVATE json) -add_test(NAME ${PROJECT_NAME}-basic-tests COMMAND ${PROJECT_NAME}-basic-tests) -set_tests_properties(${PROJECT_NAME}-basic-tests PROPERTIES RUN_SERIAL ON) +if(BUILD_TESTING) + add_executable(${PROJECT_NAME}-basic-tests src/tests/basic_tests.cpp) + target_include_directories(${PROJECT_NAME}-basic-tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../core/inc) + target_include_directories(${PROJECT_NAME}-basic-tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/jsoncpp) + target_link_libraries(${PROJECT_NAME}-basic-tests PRIVATE ${PROJECT_NAME}) + target_link_libraries(${PROJECT_NAME}-basic-tests PRIVATE Catch2::Catch2WithMain) + target_link_libraries(${PROJECT_NAME}-basic-tests PRIVATE roc-optiq-core) + target_link_libraries(${PROJECT_NAME}-basic-tests PRIVATE spdlog) + target_link_libraries(${PROJECT_NAME}-basic-tests PRIVATE sqlite3) + target_link_libraries(${PROJECT_NAME}-basic-tests PRIVATE json) + add_test(NAME ${PROJECT_NAME}-basic-tests COMMAND ${PROJECT_NAME}-basic-tests) + set_tests_properties(${PROJECT_NAME}-basic-tests PROPERTIES RUN_SERIAL ON) + set_tests_properties(${PROJECT_NAME}-basic-tests PROPERTIES WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}") +endif() diff --git a/src/model/src/tests/basic_tests.cpp b/src/model/src/tests/basic_tests.cpp index b56eeada..91c6d009 100644 --- a/src/model/src/tests/basic_tests.cpp +++ b/src/model/src/tests/basic_tests.cpp @@ -28,7 +28,7 @@ #define MULTI_LINE_LOG(format, ...) fmt::format_to(std::back_inserter(multi_line_log), format, __VA_ARGS__) #define MULTI_LINE_LOG_ARGS "{:.{}}",multi_line_log.data(),multi_line_log.size() -std::string g_input_file="../../../sample/trace_70b_1024_32.rpd"; +std::string g_input_file="sample/trace_70b_1024_32.rpd"; bool g_all_tracks=false; bool g_full_range=false;