mirror of
https://github.com/reactos/CMake.git
synced 2025-03-05 02:17:05 +00:00
cmCTestMultiProcessHandler: Check stop time more directly
Avoid creating a cmCTestRunTest instance if the stop time has been reached. If the stop time occurs in the small time between creating an instance and computing the child process timeout, we will simply compute a zero timeout. This is already done for the case that we StartAgain after the stop time.
This commit is contained in:
parent
4c199a4c28
commit
61ab5a8ef4
@ -13,6 +13,7 @@
|
||||
#include "cmsys/String.hxx"
|
||||
#include "cmsys/SystemInformation.hxx"
|
||||
#include <algorithm>
|
||||
#include <chrono>
|
||||
#include <iomanip>
|
||||
#include <list>
|
||||
#include <math.h>
|
||||
@ -113,6 +114,16 @@ void cmCTestMultiProcessHandler::RunTests()
|
||||
|
||||
void cmCTestMultiProcessHandler::StartTestProcess(int test)
|
||||
{
|
||||
std::chrono::system_clock::time_point stop_time = this->CTest->GetStopTime();
|
||||
if (stop_time != std::chrono::system_clock::time_point() &&
|
||||
stop_time <= std::chrono::system_clock::now()) {
|
||||
cmCTestLog(this->CTest, ERROR_MESSAGE, "The stop time has been passed. "
|
||||
"Stopping all tests."
|
||||
<< std::endl);
|
||||
this->StopTimePassed = true;
|
||||
return;
|
||||
}
|
||||
|
||||
cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
|
||||
"test " << test << "\n", this->Quiet);
|
||||
this->TestRunningMap[test] = true; // mark the test as running
|
||||
@ -144,10 +155,6 @@ void cmCTestMultiProcessHandler::StartTestProcess(int test)
|
||||
|
||||
if (testRun->StartTest(this->Total)) {
|
||||
this->RunningTests.insert(testRun);
|
||||
} else if (testRun->IsStopTimePassed()) {
|
||||
this->StopTimePassed = true;
|
||||
delete testRun;
|
||||
return;
|
||||
} else {
|
||||
|
||||
for (auto& j : this->Tests) {
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include "cmsys/RegularExpression.hxx"
|
||||
#include <chrono>
|
||||
#include <iomanip>
|
||||
#include <ratio>
|
||||
#include <sstream>
|
||||
#include <stdio.h>
|
||||
#include <utility>
|
||||
@ -32,7 +33,6 @@ cmCTestRunTest::cmCTestRunTest(cmCTestTestHandler* handler)
|
||||
this->ProcessOutput.clear();
|
||||
this->CompressedOutput.clear();
|
||||
this->CompressionRatio = 2;
|
||||
this->StopTimePassed = false;
|
||||
this->NumberOfRunsLeft = 1; // default to 1 run of the test
|
||||
this->RunUntilFail = false; // default to run the test once
|
||||
this->RunAgain = false; // default to not having to run again
|
||||
@ -524,15 +524,11 @@ bool cmCTestRunTest::StartTest(size_t total)
|
||||
|
||||
std::chrono::system_clock::time_point stop_time = this->CTest->GetStopTime();
|
||||
if (stop_time != std::chrono::system_clock::time_point()) {
|
||||
auto stop_timeout =
|
||||
std::chrono::duration<double> stop_timeout =
|
||||
(stop_time - std::chrono::system_clock::now()) % std::chrono::hours(24);
|
||||
|
||||
if (stop_timeout <= std::chrono::duration<double>::zero()) {
|
||||
cmCTestLog(this->CTest, ERROR_MESSAGE, "The stop time has been passed. "
|
||||
"Stopping all tests."
|
||||
<< std::endl);
|
||||
this->StopTimePassed = true;
|
||||
return false;
|
||||
stop_timeout = std::chrono::duration<double>::zero();
|
||||
}
|
||||
if (timeout == std::chrono::duration<double>::zero() ||
|
||||
stop_timeout < timeout) {
|
||||
|
@ -50,8 +50,6 @@ public:
|
||||
|
||||
std::string GetProcessOutput() { return this->ProcessOutput; }
|
||||
|
||||
bool IsStopTimePassed() { return this->StopTimePassed; }
|
||||
|
||||
cmCTestTestHandler::cmCTestTestResult GetTestResults()
|
||||
{
|
||||
return this->TestResult;
|
||||
@ -108,7 +106,6 @@ private:
|
||||
std::string StartTime;
|
||||
std::string ActualCommand;
|
||||
std::vector<std::string> Arguments;
|
||||
bool StopTimePassed;
|
||||
bool RunUntilFail;
|
||||
int NumberOfRunsLeft;
|
||||
bool RunAgain;
|
||||
|
Loading…
x
Reference in New Issue
Block a user