find_package(Unity REQUIRED) find_package(CMock REQUIRED) set(TEST_TARGETS "") # STK tests add_executable(test_stk test_stk.c) target_include_directories(test_stk PRIVATE "${CMAKE_SOURCE_DIR}") target_link_libraries(test_stk PRIVATE stkshid Unity::Unity) target_compile_features(test_stk PRIVATE c_std_23) add_test(NAME test_stk COMMAND test_stk) list(APPEND TEST_TARGETS test_stk) # 'check' builds all suites and runs CTest with full Unity output. # USES_TERMINAL keeps ANSI colors alive through Ninja's output buffering. add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --test-dir "${CMAKE_BINARY_DIR}" --output-on-failure --progress WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" USES_TERMINAL DEPENDS ${TEST_TARGETS} ) if (ENABLE_COVERAGE) set(COVERAGE_DIR "${CMAKE_BINARY_DIR}/coverage") add_custom_target(coverage COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure COMMAND ${CMAKE_COMMAND} -E make_directory "${COVERAGE_DIR}" COMMAND ${GCOVR_EXE} --gcov-executable "${GCOV_EXECUTABLE}" --root "${CMAKE_SOURCE_DIR}" --filter "${CMAKE_SOURCE_DIR}/stk/" --exclude "${CMAKE_SOURCE_DIR}/tests/" --exclude ".*Mock.*" --exclude ".*unity.*" --exclude ".*cmock.*" --html-details "${COVERAGE_DIR}/index.html" --txt --print-summary "${CMAKE_BINARY_DIR}" WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" USES_TERMINAL DEPENDS ${TEST_TARGETS} COMMENT "Coverage report: ${COVERAGE_DIR}/index.html" ) endif()