From e770b1b86e7157db4191096f226a8b0175819cff Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 8 Dec 2017 07:04:36 -0500 Subject: 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. --- Source/cmCTest.cxx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index a4ca301..2cd60e5 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -1089,9 +1089,10 @@ int cmCTest::RunTest(std::vector argv, std::string* output, bool modifyEnv = (environment && !environment->empty()); // determine how much time we have - std::chrono::duration timeout = - std::min>(this->GetRemainingTimeAllowed(), - std::chrono::minutes(2)); + std::chrono::duration timeout = this->GetRemainingTimeAllowed(); + if (timeout != std::chrono::duration::max()) { + timeout -= std::chrono::minutes(2); + } if (this->TimeOut > std::chrono::duration::zero() && this->TimeOut < timeout) { timeout = this->TimeOut; -- cgit v0.12