Browse Source

ctest: Fix TIMEOUT test property with value 0 with --timeout flag

An explicit zero TIMEOUT test property value should not be overridden by
the `--timeout` flag.
Brad King 2 years ago
parent
commit
3edf7fbb41

+ 1 - 1
Source/CTest/cmCTestTestHandler.cxx

@@ -1379,7 +1379,7 @@ bool cmCTestTestHandler::ProcessDirectory(std::vector<std::string>& passed,
       p.Cost = static_cast<float>(rand());
     }
 
-    if (p.Timeout == cmDuration::zero() &&
+    if (p.Timeout == cmDuration::zero() && !p.ExplicitTimeout &&
         this->CTest->GetGlobalTimeout() != cmDuration::zero()) {
       p.Timeout = this->CTest->GetGlobalTimeout();
     }

+ 2 - 1
Tests/RunCMake/CTestTimeout/RunCMakeTest.cmake

@@ -8,7 +8,7 @@ endif()
 function(run_ctest_timeout CASE_NAME)
   configure_file(${RunCMake_SOURCE_DIR}/TestTimeout.c
                  ${RunCMake_BINARY_DIR}/${CASE_NAME}/TestTimeout.c COPYONLY)
-  run_ctest(${CASE_NAME})
+  run_ctest(${CASE_NAME} ${ARGN})
 endfunction()
 
 run_ctest_timeout(Basic)
@@ -27,6 +27,7 @@ block()
   # The test sleeps for 4 seconds longer than the TIMEOUT value.
   # Set a default timeout to less than that so that the test will
   # timeout if the zero TIMEOUT does not suppress it.
+  run_ctest_timeout(ZeroOverridesFlag --timeout 2)
   set(CASE_TEST_PREFIX_CODE "set(CTEST_TEST_TIMEOUT 2)")
   run_ctest_timeout(ZeroOverridesVar)
 endblock()

+ 6 - 0
Tests/RunCMake/CTestTimeout/ZeroOverridesFlag-stdout.txt

@@ -0,0 +1,6 @@
+Test project [^
+]*/Tests/RunCMake/CTestTimeout/ZeroOverridesFlag-build
+    Start 1: TestTimeout
+1/1 Test #1: TestTimeout ......................   Passed +[1-9][0-9.]* sec
++
+100% tests passed, 0 tests failed out of 1