Changeset View
Changeset View
Standalone View
Standalone View
cmake/modules/TestSuite.cmake
Show All 27 Lines | function(create_test_suite_with_parent_targets NAME) | ||||
endforeach() | endforeach() | ||||
endfunction() | endfunction() | ||||
macro(create_test_suite NAME) | macro(create_test_suite NAME) | ||||
create_test_suite_with_parent_targets(${NAME} check-all check-extended) | create_test_suite_with_parent_targets(${NAME} check-all check-extended) | ||||
endmacro() | endmacro() | ||||
set(TEST_RUNNER_TEMPLATE "${CMAKE_CURRENT_LIST_DIR}/../templates/TestRunner.cmake.in") | set(TEST_RUNNER_TEMPLATE "${CMAKE_CURRENT_LIST_DIR}/../templates/TestRunner.cmake.in") | ||||
function(_add_test_runner SUITE NAME COMMAND) | function(add_test_runner SUITE NAME COMMAND) | ||||
get_target_from_suite(${SUITE} SUITE_TARGET) | get_target_from_suite(${SUITE} SUITE_TARGET) | ||||
set(TARGET "${SUITE_TARGET}-${NAME}") | set(TARGET "${SUITE_TARGET}-${NAME}") | ||||
set(LOG "${NAME}.log") | set(LOG "${NAME}.log") | ||||
set(RUNNER "${CMAKE_CURRENT_BINARY_DIR}/run-${SUITE}-${NAME}.sh") | set(RUNNER "${CMAKE_CURRENT_BINARY_DIR}/run-${SUITE}-${NAME}.sh") | ||||
list(JOIN ARGN " " ARGS) | list(JOIN ARGN " " ARGS) | ||||
configure_file( | configure_file( | ||||
"${TEST_RUNNER_TEMPLATE}" | "${TEST_RUNNER_TEMPLATE}" | ||||
"${RUNNER}" | "${RUNNER}" | ||||
) | ) | ||||
add_custom_target(${TARGET} | add_custom_target(${TARGET} | ||||
COMMAND ${RUNNER} | COMMAND ${RUNNER} | ||||
COMMENT "${SUITE}: testing ${NAME}" | COMMENT "${SUITE}: testing ${NAME}" | ||||
DEPENDS | DEPENDS | ||||
${COMMAND} | ${COMMAND} | ||||
${RUNNER} | ${RUNNER} | ||||
) | ) | ||||
add_dependencies(${SUITE_TARGET} ${TARGET}) | add_dependencies(${SUITE_TARGET} ${TARGET}) | ||||
endfunction() | endfunction() | ||||
function(add_test_to_suite SUITE NAME) | function(add_test_to_suite SUITE NAME) | ||||
add_executable(${NAME} EXCLUDE_FROM_ALL ${ARGN}) | add_executable(${NAME} EXCLUDE_FROM_ALL ${ARGN}) | ||||
_add_test_runner(${SUITE} ${NAME} ${NAME}) | add_test_runner(${SUITE} ${NAME} ${NAME}) | ||||
get_target_from_suite(${SUITE} TARGET) | get_target_from_suite(${SUITE} TARGET) | ||||
set_property( | set_property( | ||||
TARGET ${TARGET} | TARGET ${TARGET} | ||||
APPEND PROPERTY UNIT_TESTS ${NAME} | APPEND PROPERTY UNIT_TESTS ${NAME} | ||||
) | ) | ||||
endfunction(add_test_to_suite) | endfunction(add_test_to_suite) | ||||
function(add_boost_unit_tests_to_suite SUITE NAME) | function(add_boost_unit_tests_to_suite SUITE NAME) | ||||
cmake_parse_arguments(ARG | cmake_parse_arguments(ARG | ||||
"" | "" | ||||
"" | "" | ||||
"TESTS" | "TESTS" | ||||
${ARGN} | ${ARGN} | ||||
) | ) | ||||
get_target_from_suite(${SUITE} SUITE_TARGET) | get_target_from_suite(${SUITE} SUITE_TARGET) | ||||
add_executable(${NAME} EXCLUDE_FROM_ALL ${ARG_UNPARSED_ARGUMENTS}) | add_executable(${NAME} EXCLUDE_FROM_ALL ${ARG_UNPARSED_ARGUMENTS}) | ||||
add_dependencies("${SUITE_TARGET}" ${NAME}) | add_dependencies("${SUITE_TARGET}" ${NAME}) | ||||
foreach(_test_source ${ARG_TESTS}) | foreach(_test_source ${ARG_TESTS}) | ||||
target_sources(${NAME} PRIVATE "${_test_source}") | target_sources(${NAME} PRIVATE "${_test_source}") | ||||
get_filename_component(_test_name "${_test_source}" NAME_WE) | get_filename_component(_test_name "${_test_source}" NAME_WE) | ||||
_add_test_runner( | add_test_runner( | ||||
${SUITE} | ${SUITE} | ||||
${_test_name} | ${_test_name} | ||||
${NAME} -t "${_test_name}" | ${NAME} -t "${_test_name}" | ||||
) | ) | ||||
set_property( | set_property( | ||||
TARGET ${SUITE_TARGET} | TARGET ${SUITE_TARGET} | ||||
APPEND PROPERTY UNIT_TESTS ${_test_name} | APPEND PROPERTY UNIT_TESTS ${_test_name} | ||||
) | ) | ||||
set(SUITE_UPGRADE_ACTIVATED "${SUITE}-upgrade-activated") | |||||
get_target_from_suite(${SUITE_UPGRADE_ACTIVATED} TARGET_UPGRADE_ACTIVATED) | |||||
if(NOT TARGET ${TARGET_UPGRADE_ACTIVATED}) | |||||
create_test_suite_with_parent_targets( | |||||
${SUITE_UPGRADE_ACTIVATED} | |||||
check-upgrade-activated | |||||
check-upgrade-activated-extended | |||||
) | |||||
add_dependencies(${TARGET_UPGRADE_ACTIVATED} ${NAME}) | |||||
endif() | |||||
_add_test_runner( | |||||
${SUITE_UPGRADE_ACTIVATED} | |||||
"${_test_name}" | |||||
${NAME} -t "${_test_name}" | |||||
# Dec. 1st, 2019 at 00:00:00 | |||||
-- -phononactivationtime=1575158400 | |||||
) | |||||
endforeach() | endforeach() | ||||
find_package(Boost 1.58 REQUIRED unit_test_framework) | find_package(Boost 1.58 REQUIRED unit_test_framework) | ||||
target_link_libraries(${NAME} Boost::unit_test_framework) | target_link_libraries(${NAME} Boost::unit_test_framework) | ||||
# We need to detect if the BOOST_TEST_DYN_LINK flag is required | # We need to detect if the BOOST_TEST_DYN_LINK flag is required | ||||
include(CheckCXXSourceCompiles) | include(CheckCXXSourceCompiles) | ||||
set(CMAKE_REQUIRED_LIBRARIES Boost::unit_test_framework) | set(CMAKE_REQUIRED_LIBRARIES Boost::unit_test_framework) | ||||
Show All 11 Lines |