ソースを参照

Merge topic 'ctest-T-test-timeout' into release-4.1

9dc3edbba8 ctest: Restore default test timeout for command-line `-T Test` step
8745e6308e ctest: Restore default of no time limit for command-line `-T Test` step

Acked-by: Kitware Robot <[email protected]>
Merge-request: !11094
Brad King 3 ヶ月 前
コミット
0ef525208c

+ 13 - 0
Source/cmCTest.cxx

@@ -714,6 +714,13 @@ int cmCTest::ProcessSteps()
   this->UpdateCTestConfiguration();
   this->BlockTestErrorDiagnostics();
 
+  if (this->GetCTestConfiguration("TimeOut").empty()) {
+    this->SetCTestConfiguration(
+      "TimeOut",
+      std::to_string(cmDurationTo<unsigned int>(cmCTest::MaxDuration())),
+      true);
+  }
+
   int res = 0;
   cmCTestScriptHandler script(this);
   script.CreateCMake();
@@ -3247,6 +3254,9 @@ void cmCTest::SetCMakeVariables(cmMakefile& mf)
   set("CTEST_BUILD_COMMAND", "MakeCommand");
   set("CTEST_USE_LAUNCHERS", "UseLaunchers");
 
+  // CTest Test Step
+  set("CTEST_TEST_TIMEOUT", "TimeOut");
+
   // CTest Coverage Step
   set("CTEST_COVERAGE_COMMAND", "CoverageCommand");
   set("CTEST_COVERAGE_EXTRA_FLAGS", "CoverageExtraFlags");
@@ -3528,6 +3538,9 @@ cmDuration cmCTest::GetElapsedTime() const
 
 cmDuration cmCTest::GetRemainingTimeAllowed() const
 {
+  if (this->Impl->TimeLimit == cmCTest::MaxDuration()) {
+    return cmCTest::MaxDuration();
+  }
   return this->Impl->TimeLimit - this->GetElapsedTime();
 }
 

+ 15 - 0
Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake

@@ -646,6 +646,21 @@ run_output_junit()
 
 run_cmake_command(invalid-ctest-argument ${CMAKE_CTEST_COMMAND} --not-a-valid-ctest-argument)
 
+block()
+  set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/TimeoutDefault)
+  set(RunCMake_TEST_NO_CLEAN 1)
+  file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
+  file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
+  file(WRITE "${RunCMake_TEST_BINARY_DIR}/DartConfiguration.tcl" "
+BuildDirectory: ${RunCMake_TEST_BINARY_DIR}
+")
+  file(WRITE "${RunCMake_TEST_BINARY_DIR}/CTestTestfile.cmake" "
+add_test(test1 \"${CMAKE_COMMAND}\" -E true)
+")
+  run_cmake_command(TimeoutDefault ${CMAKE_CTEST_COMMAND} -V)
+  run_cmake_command(TimeoutDefault-T-Test ${CMAKE_CTEST_COMMAND} -V -T Test)
+endblock()
+
 if(WIN32)
   block()
     set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/TimeoutSignalWindows)

+ 2 - 0
Tests/RunCMake/CTestCommandLine/TimeoutDefault-T-Test-stdout.txt

@@ -0,0 +1,2 @@
+1: Test timeout computed to be: 10000000
+1/1 Test #1: test1[ ]

+ 2 - 0
Tests/RunCMake/CTestCommandLine/TimeoutDefault-stdout.txt

@@ -0,0 +1,2 @@
+1: Test timeout computed to be: 10000000
+1/1 Test #1: test1[ ]