From 9dc3edbba896a10ab20240eeba6baf9c59345e71 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 18 Aug 2025 14:10:17 -0400 Subject: [PATCH] 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 ++++++++++ .../RunCMake/CTestCommandLine/RunCMakeTest.cmake | 15 +++++++++++++++ .../TimeoutDefault-T-Test-stdout.txt | 2 ++ .../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 abb942b031..1bf8d36b80 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 e1b7b71712..3e30e35c48 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 0000000000..c753544f53 --- /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 0000000000..c753544f53 --- /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[ ]