49 lines
1.7 KiB
CMake
49 lines
1.7 KiB
CMake
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()
|