RunCMakeTest.cmake 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. include(RunCTest)
  2. set(RunCMake_TEST_TIMEOUT 60)
  3. unset(ENV{CTEST_PARALLEL_LEVEL})
  4. unset(ENV{CTEST_OUTPUT_ON_FAILURE})
  5. set(CASE_CTEST_TEST_ARGS "")
  6. set(CASE_CTEST_TEST_LOAD "")
  7. function(run_ctest_test CASE_NAME)
  8. set(CASE_CTEST_TEST_ARGS "${ARGN}")
  9. run_ctest(${CASE_NAME})
  10. endfunction()
  11. run_ctest_test(TestQuiet QUIET)
  12. # Tests for the 'Test Load' feature of ctest
  13. #
  14. # Spoof a load average value to make these tests more reliable.
  15. set(ENV{__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING} 5)
  16. # Verify that new tests are started when the load average falls below
  17. # our threshold.
  18. run_ctest_test(TestLoadPass TEST_LOAD 6)
  19. # Verify that new tests are not started when the load average exceeds
  20. # our threshold and that they then run once the load average drops.
  21. run_ctest_test(TestLoadWait TEST_LOAD 2)
  22. # Verify that when an invalid "TEST_LOAD" value is given, a warning
  23. # message is displayed and the value is ignored.
  24. run_ctest_test(TestLoadInvalid TEST_LOAD "ERR1")
  25. # Verify that new tests are started when the load average falls below
  26. # our threshold.
  27. set(CASE_CTEST_TEST_LOAD 7)
  28. run_ctest_test(CTestTestLoadPass)
  29. # Verify that new tests are not started when the load average exceeds
  30. # our threshold and that they then run once the load average drops.
  31. set(CASE_CTEST_TEST_LOAD 4)
  32. run_ctest_test(CTestTestLoadWait)
  33. # Verify that when an invalid "CTEST_TEST_LOAD" value is given,
  34. # a warning message is displayed and the value is ignored.
  35. set(CASE_CTEST_TEST_LOAD "ERR2")
  36. run_ctest_test(CTestTestLoadInvalid)
  37. # Verify that the "TEST_LOAD" value has higher precedence than
  38. # the "CTEST_TEST_LOAD" value
  39. set(CASE_CTEST_TEST_LOAD "ERR3")
  40. run_ctest_test(TestLoadOrder TEST_LOAD "ERR4")
  41. unset(ENV{__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING})
  42. unset(CASE_CTEST_TEST_LOAD)
  43. function(run_TestChangeId)
  44. set(CASE_TEST_PREFIX_CODE [[
  45. set(CTEST_CHANGE_ID "<>1")
  46. ]])
  47. run_ctest(TestChangeId)
  48. endfunction()
  49. run_TestChangeId()
  50. function(run_TestOutputSize)
  51. set(CASE_CTEST_TEST_ARGS EXCLUDE RunCMakeVersion)
  52. set(CASE_TEST_PREFIX_CODE [[
  53. set(CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE 10)
  54. set(CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE 12)
  55. ]])
  56. set(CASE_CMAKELISTS_SUFFIX_CODE [[
  57. add_test(NAME PassingTest COMMAND ${CMAKE_COMMAND} -E echo PassingTestOutput)
  58. add_test(NAME FailingTest COMMAND ${CMAKE_COMMAND} -E no_such_command)
  59. ]])
  60. run_ctest(TestOutputSize)
  61. endfunction()
  62. run_TestOutputSize()
  63. run_ctest_test(TestRepeatBad1 REPEAT UNKNOWN:3)
  64. run_ctest_test(TestRepeatBad2 REPEAT UNTIL_FAIL:-1)
  65. function(run_TestRepeat case)
  66. set(CASE_CTEST_TEST_ARGS EXCLUDE RunCMakeVersion ${ARGN})
  67. string(CONCAT CASE_CMAKELISTS_SUFFIX_CODE [[
  68. add_test(NAME testRepeat
  69. COMMAND ${CMAKE_COMMAND} -D COUNT_FILE=${CMAKE_CURRENT_BINARY_DIR}/count.cmake
  70. -P "]] "${RunCMake_SOURCE_DIR}/TestRepeat${case}" [[.cmake")
  71. set_property(TEST testRepeat PROPERTY TIMEOUT 5)
  72. ]])
  73. run_ctest(TestRepeat${case})
  74. endfunction()
  75. run_TestRepeat(UntilFail REPEAT UNTIL_FAIL:3)
  76. run_TestRepeat(UntilPass REPEAT UNTIL_PASS:3)
  77. run_TestRepeat(AfterTimeout REPEAT AFTER_TIMEOUT:3)