Răsfoiți Sursa

ctest: Restore default test timeout for command-line `-T Test` step

In commit 774fcbe49c (CTest: Base command line mode on top of scripting
commands, 2024-10-05, v4.0.0-rc1~653^2) the implementation of this step
was converted to use `ctest_test` internally.  That command has its own
default test timeout of 600s if the ctest "TimeOut" configuration value
is not set.  If "TimeOut" is not set then default it to our previous
command-line mode default test timeout.

Fixes: #27139
Brad King 6 luni în urmă
părinte
comite
9dc3edbba8

+ 10 - 0
Source/cmCTest.cxx

@@ -717,6 +717,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();
@@ -3260,6 +3267,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");

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

@@ -630,6 +630,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[ ]