Changeset View
Changeset View
Standalone View
Standalone View
cmake/modules/TestSuite.cmake
# Allow to easily build test suites | # Allow to easily build test suites | ||||
set(JUNIT_REPORT_DIRECTORY "${CMAKE_BINARY_DIR}/test/junit") | |||||
set_property(DIRECTORY "${CMAKE_SOURCE_DIR}" APPEND PROPERTY ADDITIONAL_CLEAN_FILES "${JUNIT_REPORT_DIRECTORY}") | |||||
macro(add_test_environment VARIABLE VALUE) | macro(add_test_environment VARIABLE VALUE) | ||||
set_property(GLOBAL APPEND PROPERTY TEST_ENVIRONMENT "${VARIABLE}=${VALUE}") | set_property(GLOBAL APPEND PROPERTY TEST_ENVIRONMENT "${VARIABLE}=${VALUE}") | ||||
endmacro() | endmacro() | ||||
function(add_test_custom_target TARGET) | function(add_test_custom_target TARGET) | ||||
cmake_parse_arguments(ARG "" "" "CUSTOM_TARGET_ARGS;TEST_COMMAND" ${ARGN}) | cmake_parse_arguments(ARG "" "" "CUSTOM_TARGET_ARGS;TEST_COMMAND" ${ARGN}) | ||||
get_property(TEST_ENVIRONMENT GLOBAL PROPERTY TEST_ENVIRONMENT) | get_property(TEST_ENVIRONMENT GLOBAL PROPERTY TEST_ENVIRONMENT) | ||||
add_custom_target(${TARGET} | add_custom_target(${TARGET} | ||||
${ARG_CUSTOM_TARGET_ARGS} | ${ARG_CUSTOM_TARGET_ARGS} | ||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${JUNIT_REPORT_DIRECTORY}" | |||||
COMMAND ${CMAKE_COMMAND} -E env ${TEST_ENVIRONMENT} ${ARG_TEST_COMMAND} | COMMAND ${CMAKE_COMMAND} -E env ${TEST_ENVIRONMENT} ${ARG_TEST_COMMAND} | ||||
) | ) | ||||
endfunction() | endfunction() | ||||
# Define a new target property to hold the list of tests associated with a test | # 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 | # suite. This property is named UNIT_TESTS to avoid confusion with the directory | ||||
# level property TESTS. | # level property TESTS. | ||||
define_property(TARGET | define_property(TARGET | ||||
Show All 11 Lines | |||||
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} | ||||
COMMENT "Processing results from ${NAME} test suite" | COMMENT "Processing results from ${NAME} test suite" | ||||
COMMAND_EXPAND_LISTS | COMMAND_EXPAND_LISTS | ||||
COMMAND | COMMAND | ||||
"${Python_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/cmake/utils/junit-reports-merge.py" | "${Python_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/cmake/utils/junit-reports-merge.py" | ||||
"${CMAKE_BINARY_DIR}/test/junit" | "${JUNIT_REPORT_DIRECTORY}" | ||||
"${NAME}" | "${NAME}" | ||||
"$<TARGET_PROPERTY:${TARGET},UNIT_TESTS>" | "$<TARGET_PROPERTY:${TARGET},UNIT_TESTS>" | ||||
) | ) | ||||
set_property(DIRECTORY "${CMAKE_SOURCE_DIR}" APPEND PROPERTY ADDITIONAL_CLEAN_FILES "${CMAKE_BINARY_DIR}/test/junit") | |||||
foreach(PARENT_TARGET ${ARGN}) | foreach(PARENT_TARGET ${ARGN}) | ||||
if(TARGET ${PARENT_TARGET}) | if(TARGET ${PARENT_TARGET}) | ||||
add_dependencies(${PARENT_TARGET} ${TARGET}) | add_dependencies(${PARENT_TARGET} ${TARGET}) | ||||
endif() | endif() | ||||
endforeach() | endforeach() | ||||
add_custom_target_coverage(${TARGET}) | add_custom_target_coverage(${TARGET}) | ||||
endfunction() | endfunction() | ||||
▲ Show 20 Lines • Show All 87 Lines • Show Last 20 Lines |