diff --git a/Source/CTest/cmCTestRunTest.cxx b/Source/CTest/cmCTestRunTest.cxx index 24ee6eb676..eff891afcc 100644 --- a/Source/CTest/cmCTestRunTest.cxx +++ b/Source/CTest/cmCTestRunTest.cxx @@ -816,6 +816,7 @@ bool cmCTestRunTest::ForkProcess() if (timeUntilStop < timeRemaining) { timeRemaining = timeUntilStop; } + this->TestProcess->SetStopTimeout(timeUntilStop); } // Enforce remaining time even over explicit TIMEOUT=0. diff --git a/Source/CTest/cmProcess.h b/Source/CTest/cmProcess.h index 2489ba522d..d3df8d3b93 100644 --- a/Source/CTest/cmProcess.h +++ b/Source/CTest/cmProcess.h @@ -37,6 +37,7 @@ public: void SetCommand(std::string const& command); void SetCommandArguments(std::vector const& arg); void SetWorkingDirectory(std::string const& dir); + void SetStopTimeout(cmDuration t) { this->StopTimeout = t; } void SetTimeout(cmDuration t) { this->Timeout = t; } void ChangeTimeout(cmDuration t); void ResetStartTime(); @@ -104,6 +105,7 @@ public: Termination GetTerminationStyle() const { return this->TerminationStyle; } private: + cm::optional StopTimeout; cm::optional Timeout; TimeoutReason TimeoutReason_ = TimeoutReason::Normal; std::chrono::steady_clock::time_point StartTime;