test.cmake.in 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. configure_file(${SOURCE_DIR}/CTestTestfile.cmake.in CTestTestfile.cmake)
  2. function(get_test_list TEST_LIST)
  3. set(QUERY_COMMAND ${CMAKE_CTEST_COMMAND} -N ${ARGN})
  4. execute_process(COMMAND ${QUERY_COMMAND}
  5. RESULT_VARIABLE RESULT
  6. OUTPUT_VARIABLE OUTPUT
  7. ERROR_VARIABLE ERROR)
  8. if(NOT ${RESULT} STREQUAL "0")
  9. message(FATAL_ERROR "command [${QUERY_COMMAND}] failed: RESULT[${RESULT}] OUTPUT[${OUTPUT}] ERROR[${ERROR}]")
  10. endif()
  11. set(${TEST_LIST} "${OUTPUT}" PARENT_SCOPE)
  12. endfunction()
  13. function(expect_test_list EXPECTED_OUTPUT)
  14. get_test_list(TEST_LIST ${ARGN})
  15. if(NOT "${TEST_LIST}" MATCHES "${EXPECTED_OUTPUT}")
  16. message(FATAL_ERROR "actual output [${TEST_LIST}] does not match expected output [${EXPECTED_OUTPUT}] for given arguments [${ARGN}]")
  17. endif()
  18. endfunction()
  19. expect_test_list("test1.*test3.*Total Tests: 2" --label-regex foo)
  20. expect_test_list("test2.*test3.*Total Tests: 2" --label-regex bar)
  21. expect_test_list("test1.*test2.*test3.*Total Tests: 3" --label-regex foo|bar)
  22. expect_test_list("Total Tests: 0" --label-regex baz)
  23. expect_test_list("test2.*Total Tests: 1" --label-exclude foo)
  24. expect_test_list("test1.*Total Tests: 1" --label-exclude bar)
  25. expect_test_list("Total Tests: 0" --label-exclude foo|bar)
  26. expect_test_list("test1.*test2.*test3.*Total Tests: 3" --label-exclude baz)
  27. expect_test_list("test1.*Total Tests: 1" --label-regex foo --label-exclude bar)
  28. expect_test_list("test2.*Total Tests: 1" --label-regex bar --label-exclude foo)