diff --git a/cmake/Testing.cmake b/cmake/Testing.cmake index ff4c98854e5aa33dfebc7a895fdaad9b7c33b02a..7aba2679d12f70c3f23d4857b24c6d27b21b5911 100644 --- a/cmake/Testing.cmake +++ b/cmake/Testing.cmake @@ -38,7 +38,7 @@ define_property(TARGET FULL_DOCS "Libraries to be added for mocking") set_property(GLOBAL PROPERTY USE_FOLDERS ON) -set_property(GLOBAL PROPERTY ADDED_TESTS "") +set_property(GLOBAL PROPERTY TESTING__AVAILABLE_TESTS "") set(IS_BUILD_SERVER FALSE CACHE BOOL @@ -139,7 +139,7 @@ macro(ADD_SINGLE_TEST) testing__set_timeout_(${TEST_NAME}) set_property(GLOBAL APPEND PROPERTY - ADDED_TESTS "${TEST_NAME}") + TESTING__AVAILABLE_TESTS "${TEST_NAME}") endmacro() @@ -278,18 +278,28 @@ endmacro() #------------------------------------------------------------------------------- -macro(EXTRACT_UNIT_AND_INTEGRATION_TEST_TARGETS) - get_property(added_tests GLOBAL PROPERTY ADDED_TESTS) - foreach(filename ${added_tests}) - if(${filename} MATCHES "integration_test") - message(STATUS "Integration Test: ${filename}") - set(INTEGRATION_TEST_TARGETS ${INTEGRATION_TEST_TARGETS} ${filename}) - else() - message(STATUS "Unit Test: ${filename}") - set(UNIT_TEST_TARGETS ${UNIT_TEST_TARGETS} ${filename}) - endif() - endforeach() -endmacro() +function(CREATE_TEST_SUITES) + testing__extract_unit_and_integration_test_targets_() + + ADD_TEST_SUITE( + NAME "Unit-Test-Suite" + TEST_REGEX "^test" + DEPEND_ON_TARGETS ${TESTING__UNIT_TESTS}) + + ADD_TEST_SUITE( + NAME "Integration-Test-Suite" + TEST_REGEX "^integration" + DEPEND_ON_TARGETS ${TESTING__INTEGRATION_TESTS}) + + ADD_TEST_SUITE( + NAME "Cpplint-Test-Suite" + TEST_REGEX "cpplint") + + ADD_TEST_SUITE( + NAME "Cppcheck-Test-Suite" + TEST_REGEX "cppcheck") +endfunction() + macro(ADD_TEST_SUITE) set(options) @@ -297,6 +307,7 @@ macro(ADD_TEST_SUITE) set(multiValueArgs DEPEND_ON_TARGETS) cmake_parse_arguments(ADD_TEST_SUITE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + #we have to escape the " for visual studio) add_custom_target(${ADD_TEST_SUITE_NAME} COMMAND ctest --tests-regex \"${ADD_TEST_SUITE_TEST_REGEX}\" -C $<CONFIG>) # This comment just ends the escaped signs, for VS highlighting " @@ -307,25 +318,17 @@ macro(ADD_TEST_SUITE) endmacro() +macro(TESTING__EXTRACT_UNIT_AND_INTEGRATION_TEST_TARGETS_) + set(TESTING__INTEGRATION_TESTS ) + set(TESTING__UNIT_TESTS ) -function(CREATE_TEST_SUITES) - EXTRACT_UNIT_AND_INTEGRATION_TEST_TARGETS() - - ADD_TEST_SUITE( - NAME "Unit-Test-Suite" - TEST_REGEX "^test" - DEPEND_ON_TARGETS ${UNIT_TEST_TARGETS}) - - ADD_TEST_SUITE( - NAME "Integration-Test-Suite" - TEST_REGEX "^integration" - DEPEND_ON_TARGETS ${INTEGRATION_TEST_TARGETS}) - - ADD_TEST_SUITE( - NAME "Cpplint-Test-Suite" - TEST_REGEX "cpplint") + get_property(TESTING__AVAILABLE_TESTS GLOBAL PROPERTY TESTING__AVAILABLE_TESTS) + foreach(CURRENT_TEST ${TESTING__AVAILABLE_TESTS}) + if(${CURRENT_TEST} MATCHES "integration_test") + list(APPEND TESTING__INTEGRATION_TESTS ${CURRENT_TEST}) + else() + list(APPEND TESTING__UNIT_TESTS ${CURRENT_TEST}) + endif() + endforeach() +endmacro() - ADD_TEST_SUITE( - NAME "Cppcheck-Test-Suite" - TEST_REGEX "cppcheck") -endfunction()