Browse Source

Tests: Add coverage of ctest_test RETURN_VALUE and REPEAT

Robert Maynard 5 years ago
parent
commit
c503251997
1 changed files with 21 additions and 5 deletions
  1. 21 5
      Tests/RunCMake/ctest_test/RunCMakeTest.cmake

+ 21 - 5
Tests/RunCMake/ctest_test/RunCMakeTest.cmake

@@ -81,8 +81,8 @@ run_TestOutputSize()
 run_ctest_test(TestRepeatBad1 REPEAT UNKNOWN:3)
 run_ctest_test(TestRepeatBad2 REPEAT UNTIL_FAIL:-1)
 
-function(run_TestRepeat case)
-  set(CASE_CTEST_TEST_ARGS EXCLUDE RunCMakeVersion ${ARGN})
+function(run_TestRepeat case return_value )
+  set(CASE_CTEST_TEST_ARGS RETURN_VALUE result EXCLUDE RunCMakeVersion ${ARGN})
   string(CONCAT CASE_CMAKELISTS_SUFFIX_CODE [[
 add_test(NAME testRepeat
   COMMAND ${CMAKE_COMMAND} -D COUNT_FILE=${CMAKE_CURRENT_BINARY_DIR}/count.cmake
@@ -91,7 +91,23 @@ set_property(TEST testRepeat PROPERTY TIMEOUT 5)
   ]])
 
   run_ctest(TestRepeat${case})
+
+  #write to end of the test file logic to Verify we get the expected
+  #return code
+  string(REPLACE "RETURN_VALUE:" "" return_value "${return_value}" )
+  file(APPEND "${RunCMake_BINARY_DIR}/TestRepeat${case}/test.cmake"
+"
+
+  set(expected_result ${return_value})
+  message(STATUS \${result})
+  if(NOT result EQUAL expected_result)
+    message(FATAL_ERROR \"expected a return value of: \${expected_result},
+                         instead got: \${result}\")
+  endif()
+"
+  )
 endfunction()
-run_TestRepeat(UntilFail REPEAT UNTIL_FAIL:3)
-run_TestRepeat(UntilPass REPEAT UNTIL_PASS:3)
-run_TestRepeat(AfterTimeout REPEAT AFTER_TIMEOUT:3)
+
+run_TestRepeat(UntilFail RETURN_VALUE:1 REPEAT UNTIL_FAIL:3)
+run_TestRepeat(UntilPass RETURN_VALUE:0 REPEAT UNTIL_PASS:3)
+run_TestRepeat(AfterTimeout RETURN_VALUE:0 REPEAT AFTER_TIMEOUT:3)