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