Changeset View
Changeset View
Standalone View
Standalone View
cmake/modules/TestSuite.cmake
# Allow to easily build test suites | # Allow to easily build test suites | ||||
# Define a new target property to hold the list of tests associated with a test | |||||
# suite. This property is named UNIT_TESTS to avoid confusion with the directory | |||||
# level property TESTS. | |||||
define_property(TARGET | |||||
PROPERTY UNIT_TESTS | |||||
BRIEF_DOCS "List of tests" | |||||
FULL_DOCS "A list of the tests associated with a test suite" | |||||
) | |||||
macro(get_target_from_suite SUITE TARGET) | macro(get_target_from_suite SUITE TARGET) | ||||
set(${TARGET} "check-${SUITE}") | set(${TARGET} "check-${SUITE}") | ||||
endmacro() | endmacro() | ||||
function(create_test_suite_with_parent_targets NAME) | function(create_test_suite_with_parent_targets NAME) | ||||
get_target_from_suite(${NAME} TARGET) | get_target_from_suite(${NAME} TARGET) | ||||
add_custom_target(${TARGET} | add_custom_target(${TARGET} | ||||
Show All 34 Lines | DEPENDS | ||||
${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) | |||||
set_property( | |||||
TARGET ${TARGET} | |||||
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( | |||||
TARGET ${SUITE_TARGET} | |||||
APPEND PROPERTY UNIT_TESTS ${_test_name} | |||||
) | |||||
set(SUITE_UPGRADE_ACTIVATED "${SUITE}-upgrade-activated") | set(SUITE_UPGRADE_ACTIVATED "${SUITE}-upgrade-activated") | ||||
get_target_from_suite(${SUITE_UPGRADE_ACTIVATED} TARGET_UPGRADE_ACTIVATED) | get_target_from_suite(${SUITE_UPGRADE_ACTIVATED} TARGET_UPGRADE_ACTIVATED) | ||||
if(NOT TARGET ${TARGET_UPGRADE_ACTIVATED}) | if(NOT TARGET ${TARGET_UPGRADE_ACTIVATED}) | ||||
create_test_suite_with_parent_targets( | create_test_suite_with_parent_targets( | ||||
${SUITE_UPGRADE_ACTIVATED} | ${SUITE_UPGRADE_ACTIVATED} | ||||
check-upgrade-activated | check-upgrade-activated | ||||
check-upgrade-activated-extended | check-upgrade-activated-extended | ||||
Show All 29 Lines |