Przeglądaj źródła

Merge topic 'fix-ctest-timeout-regression'

0e8584c89c CTest: Fix regression in calculating test timeout

Acked-by: Kitware Robot <[email protected]>
Acked-by: buildbot <[email protected]>
Merge-request: !8647
Brad King 2 lat temu
rodzic
commit
13362ff138

+ 5 - 3
Source/CTest/cmCTestRunTest.cxx

@@ -758,11 +758,13 @@ bool cmCTestRunTest::ForkProcess()
   }
 
   // An explicit TIMEOUT=0 test property means "no timeout".
-  if (timeout && *timeout == std::chrono::duration<double>::zero()) {
-    timeout = cm::nullopt;
+  if (timeout) {
+    if (*timeout == std::chrono::duration<double>::zero()) {
+      timeout = cm::nullopt;
+    }
   } else {
     // Check --timeout.
-    if (!timeout && this->CTest->GetGlobalTimeout() > cmDuration::zero()) {
+    if (this->CTest->GetGlobalTimeout() > cmDuration::zero()) {
       timeout = this->CTest->GetGlobalTimeout();
     }
 

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

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

+ 7 - 0
Tests/RunCMake/CTestTimeout/RunCMakeTest.cmake

@@ -87,3 +87,10 @@ block()
   set(CASE_TEST_PREFIX_CODE "set(CTEST_TEST_TIMEOUT 2)")
   run_ctest_timeout(ZeroOverridesVar)
 endblock()
+
+block()
+  set(TIMEOUT 4)
+  set(CASE_TEST_PREFIX_CODE "set(CTEST_TEST_TIMEOUT 2)")
+  set(CASE_CMAKELISTS_SUFFIX_CODE "set_property(TEST TestTimeout PROPERTY TIMEOUT 10)\n")
+  run_ctest_timeout(PropertyOverridesScript)
+endblock()