mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-09 07:11:05 -06:00
CTest: Fix regression in build-and-test timeout compuatation
Refactoring in commit 66419bc046 (CTest: convert timeouts to
std::chrono::duration, 2017-11-20) accidentally changed the logic used
to compute the timeout for a test when it starts. It incorrectly limits
the maximum possible timeout to 2 minutes rather than 2 minutes less
than the total allowed test time remaining. Update the new logic to
restore the original behavior.
Avoid subtracting 2 minutes from our "infinite" timeout value to avoid
creating very large timeouts that are not "infinite" and may exceed
integer type ranges.
This commit is contained in:
@@ -1089,9 +1089,10 @@ int cmCTest::RunTest(std::vector<const char*> argv, std::string* output,
|
||||
bool modifyEnv = (environment && !environment->empty());
|
||||
|
||||
// determine how much time we have
|
||||
std::chrono::duration<double> timeout =
|
||||
std::min<std::chrono::duration<double>>(this->GetRemainingTimeAllowed(),
|
||||
std::chrono::minutes(2));
|
||||
std::chrono::duration<double> timeout = this->GetRemainingTimeAllowed();
|
||||
if (timeout != std::chrono::duration<double>::max()) {
|
||||
timeout -= std::chrono::minutes(2);
|
||||
}
|
||||
if (this->TimeOut > std::chrono::duration<double>::zero() &&
|
||||
this->TimeOut < timeout) {
|
||||
timeout = this->TimeOut;
|
||||
|
||||
Reference in New Issue
Block a user