44 lines
1.4 KiB
CMake
44 lines
1.4 KiB
CMake
# do not build the firmware by default (tests are the focus if not crosscompiling)
|
|
project(cmake_test)
|
|
|
|
# include catch_discover_tests function from Catch2
|
|
include(${Catch2_SOURCE_DIR}/extras/Catch.cmake)
|
|
|
|
# Make test executable
|
|
set(TEST_SOURCES
|
|
Example_test.cpp
|
|
PrusaStatistics_test.cpp
|
|
#Tests/Timer_test.cpp
|
|
#Firmware/Timer.cpp
|
|
)
|
|
|
|
add_executable(tests ${TEST_SOURCES})
|
|
target_include_directories(tests PRIVATE tests)
|
|
target_link_libraries(tests Catch2::Catch2WithMain)
|
|
catch_discover_tests(tests)
|
|
|
|
set(ctest_test_args --output-on-failure)
|
|
|
|
include(ProcessorCount)
|
|
ProcessorCount(N)
|
|
if(N EQUAL 0)
|
|
message(
|
|
WARNING "CTest: There was an issue reading the core count, tests won't be run in parallel"
|
|
)
|
|
else()
|
|
message(STATUS "CTest: Detected ${N} CPU threads")
|
|
set(ctest_test_args -j${N} ${ctest_test_args})
|
|
endif()
|
|
|
|
# This step needs to always return OK but log whether it was successful or not. The thought here
|
|
# is that if the tests all pass, .ctest-finished is created and we can check for its existance
|
|
# after generating the report to determine if the overall build result is a pass or fail.
|
|
add_custom_target(
|
|
test_run_all
|
|
COMMAND ${CMAKE_CTEST_COMMAND} ${ctest_test_args}
|
|
COMMAND ${CMAKE_COMMAND} -E touch .ctest-finished || exit 0
|
|
BYPRODUCTS ${PROJECT_BINARY_DIR}/.ctest-finished
|
|
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}"
|
|
DEPENDS tests
|
|
)
|