From 8745e6308e8010855cd449ed42f3e5ce2089fed5 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 18 Aug 2025 14:04:12 -0400 Subject: ctest: Restore default of no time limit for command-line `-T Test` step Refactoring in commit 83845184db (cmCTest: Move timing functions from cmCTestScriptHandler to cmCTest, 2024-10-23, v4.0.0-rc1~576^2) enabled a time limit even if the undocumented `CTEST_TIME_LIMIT` script variable is not set. --- Source/cmCTest.cxx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index 8f691bf..abb942b 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -3541,6 +3541,9 @@ cmDuration cmCTest::GetElapsedTime() const cmDuration cmCTest::GetRemainingTimeAllowed() const { + if (this->Impl->TimeLimit == cmCTest::MaxDuration()) { + return cmCTest::MaxDuration(); + } return this->Impl->TimeLimit - this->GetElapsedTime(); } -- cgit v0.12 From 9dc3edbba896a10ab20240eeba6baf9c59345e71 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 18 Aug 2025 14:10:17 -0400 Subject: 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 --- Source/cmCTest.cxx | 10 ++++++++++ Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake | 15 +++++++++++++++ .../CTestCommandLine/TimeoutDefault-T-Test-stdout.txt | 2 ++ Tests/RunCMake/CTestCommandLine/TimeoutDefault-stdout.txt | 2 ++ 4 files changed, 29 insertions(+) create mode 100644 Tests/RunCMake/CTestCommandLine/TimeoutDefault-T-Test-stdout.txt create mode 100644 Tests/RunCMake/CTestCommandLine/TimeoutDefault-stdout.txt diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index abb942b..1bf8d36 100644 --- a/Source/cmCTest.cxx +++ b/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(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"); diff --git a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake index e1b7b71..3e30e35 100644 --- a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake +++ b/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) diff --git a/Tests/RunCMake/CTestCommandLine/TimeoutDefault-T-Test-stdout.txt b/Tests/RunCMake/CTestCommandLine/TimeoutDefault-T-Test-stdout.txt new file mode 100644 index 0000000..c753544 --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/TimeoutDefault-T-Test-stdout.txt @@ -0,0 +1,2 @@ +1: Test timeout computed to be: 10000000 +1/1 Test #1: test1[ ] diff --git a/Tests/RunCMake/CTestCommandLine/TimeoutDefault-stdout.txt b/Tests/RunCMake/CTestCommandLine/TimeoutDefault-stdout.txt new file mode 100644 index 0000000..c753544 --- /dev/null +++ b/Tests/RunCMake/CTestCommandLine/TimeoutDefault-stdout.txt @@ -0,0 +1,2 @@ +1: Test timeout computed to be: 10000000 +1/1 Test #1: test1[ ] -- cgit v0.12