RunCMakeTest.cmake 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. include(RunCTest)
  2. set(RunCMake_TEST_TIMEOUT 60)
  3. set(CASE_CTEST_TEST_ARGS "")
  4. set(CASE_CTEST_TEST_LOAD "")
  5. function(run_ctest_test CASE_NAME)
  6. set(CASE_CTEST_TEST_ARGS "${ARGN}")
  7. run_ctest(${CASE_NAME})
  8. endfunction()
  9. run_ctest_test(TestQuiet QUIET)
  10. # Tests for the 'Test Load' feature of ctest
  11. #
  12. # Spoof a load average value to make these tests more reliable.
  13. set(ENV{__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING} 5)
  14. # Verify that new tests are started when the load average falls below
  15. # our threshold.
  16. run_ctest_test(TestLoadPass TEST_LOAD 6)
  17. # Verify that new tests are not started when the load average exceeds
  18. # our threshold.
  19. run_ctest_test(TestLoadFail TEST_LOAD 2)
  20. # Verify that when an invalid "TEST_LOAD" value is given, a warning
  21. # message is displayed and the value is ignored.
  22. run_ctest_test(TestLoadInvalid TEST_LOAD "ERR1")
  23. # Verify that new tests are started when the load average falls below
  24. # our threshold.
  25. set(CASE_CTEST_TEST_LOAD 7)
  26. run_ctest_test(CTestTestLoadPass)
  27. # Verify that new tests are not started when the load average exceeds
  28. # our threshold.
  29. set(CASE_CTEST_TEST_LOAD 4)
  30. run_ctest_test(CTestTestLoadFail)
  31. # Verify that when an invalid "CTEST_TEST_LOAD" value is given,
  32. # a warning message is displayed and the value is ignored.
  33. set(CASE_CTEST_TEST_LOAD "ERR2")
  34. run_ctest_test(CTestTestLoadInvalid)
  35. # Verify that the "TEST_LOAD" value has higher precedence than
  36. # the "CTEST_TEST_LOAD" value
  37. set(CASE_CTEST_TEST_LOAD "ERR3")
  38. run_ctest_test(TestLoadOrder TEST_LOAD "ERR4")
  39. unset(ENV{__CTEST_FAKE_LOAD_AVERAGE_FOR_TESTING})
  40. unset(CASE_CTEST_TEST_LOAD)
  41. function(run_TestChangeId)
  42. set(CASE_TEST_PREFIX_CODE [[
  43. set(CTEST_CHANGE_ID "<>1")
  44. ]])
  45. run_ctest(TestChangeId)
  46. endfunction()
  47. run_TestChangeId()
  48. function(run_TestOutputSize)
  49. set(CASE_CTEST_TEST_ARGS EXCLUDE RunCMakeVersion)
  50. set(CASE_TEST_PREFIX_CODE [[
  51. set(CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE 10)
  52. set(CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE 12)
  53. ]])
  54. set(CASE_CMAKELISTS_SUFFIX_CODE [[
  55. add_test(NAME PassingTest COMMAND ${CMAKE_COMMAND} -E echo PassingTestOutput)
  56. add_test(NAME FailingTest COMMAND ${CMAKE_COMMAND} -E no_such_command)
  57. ]])
  58. unset(ENV{CTEST_PARALLEL_LEVEL})
  59. run_ctest(TestOutputSize)
  60. endfunction()
  61. run_TestOutputSize()