|
|
@@ -792,7 +792,8 @@ int cmCTest::ProcessTests()
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- if ( this->Tests[UPDATE_TEST] || this->Tests[ALL_TEST] )
|
|
|
+ if (( this->Tests[UPDATE_TEST] || this->Tests[ALL_TEST] ) &&
|
|
|
+ (this->GetRemainingTimeAllowed() - 120 > 0))
|
|
|
{
|
|
|
cmCTestGenericHandler* uphandler = this->GetHandler("update");
|
|
|
uphandler->SetPersistentOption("SourceDirectory",
|
|
|
@@ -807,14 +808,16 @@ int cmCTest::ProcessTests()
|
|
|
{
|
|
|
return 0;
|
|
|
}
|
|
|
- if ( this->Tests[CONFIGURE_TEST] || this->Tests[ALL_TEST] )
|
|
|
+ if (( this->Tests[CONFIGURE_TEST] || this->Tests[ALL_TEST] )&&
|
|
|
+ (this->GetRemainingTimeAllowed() - 120 > 0))
|
|
|
{
|
|
|
if (this->GetHandler("configure")->ProcessHandler() < 0)
|
|
|
{
|
|
|
res |= cmCTest::CONFIGURE_ERRORS;
|
|
|
}
|
|
|
}
|
|
|
- if ( this->Tests[BUILD_TEST] || this->Tests[ALL_TEST] )
|
|
|
+ if (( this->Tests[BUILD_TEST] || this->Tests[ALL_TEST] )&&
|
|
|
+ (this->GetRemainingTimeAllowed() - 120 > 0))
|
|
|
{
|
|
|
this->UpdateCTestConfiguration();
|
|
|
if (this->GetHandler("build")->ProcessHandler() < 0)
|
|
|
@@ -822,7 +825,8 @@ int cmCTest::ProcessTests()
|
|
|
res |= cmCTest::BUILD_ERRORS;
|
|
|
}
|
|
|
}
|
|
|
- if ( this->Tests[TEST_TEST] || this->Tests[ALL_TEST] || notest )
|
|
|
+ if (( this->Tests[TEST_TEST] || this->Tests[ALL_TEST] || notest ) &&
|
|
|
+ (this->GetRemainingTimeAllowed() - 120 > 0))
|
|
|
{
|
|
|
this->UpdateCTestConfiguration();
|
|
|
if (this->GetHandler("test")->ProcessHandler() < 0)
|
|
|
@@ -830,7 +834,8 @@ int cmCTest::ProcessTests()
|
|
|
res |= cmCTest::TEST_ERRORS;
|
|
|
}
|
|
|
}
|
|
|
- if ( this->Tests[COVERAGE_TEST] || this->Tests[ALL_TEST] )
|
|
|
+ if (( this->Tests[COVERAGE_TEST] || this->Tests[ALL_TEST] ) &&
|
|
|
+ (this->GetRemainingTimeAllowed() - 120 > 0))
|
|
|
{
|
|
|
this->UpdateCTestConfiguration();
|
|
|
if (this->GetHandler("coverage")->ProcessHandler() < 0)
|
|
|
@@ -838,7 +843,8 @@ int cmCTest::ProcessTests()
|
|
|
res |= cmCTest::COVERAGE_ERRORS;
|
|
|
}
|
|
|
}
|
|
|
- if ( this->Tests[MEMCHECK_TEST] || this->Tests[ALL_TEST] )
|
|
|
+ if (( this->Tests[MEMCHECK_TEST] || this->Tests[ALL_TEST] )&&
|
|
|
+ (this->GetRemainingTimeAllowed() - 120 > 0))
|
|
|
{
|
|
|
this->UpdateCTestConfiguration();
|
|
|
if (this->GetHandler("memcheck")->ProcessHandler() < 0)
|
|
|
@@ -1109,6 +1115,19 @@ int cmCTest::RunTest(std::vector<const char*> argv,
|
|
|
{
|
|
|
cmsysProcess_SetOption(cp, cmsysProcess_Option_HideWindow, 1);
|
|
|
}
|
|
|
+
|
|
|
+ // do we have time for
|
|
|
+ double timeout = this->GetRemainingTimeAllowed() - 120;
|
|
|
+ if (this->TimeOut && this->TimeOut < timeout)
|
|
|
+ {
|
|
|
+ timeout = this->TimeOut;
|
|
|
+ }
|
|
|
+ // always have at least 1 second if we got to here
|
|
|
+ if (timeout <= 0)
|
|
|
+ {
|
|
|
+ timeout = 1;
|
|
|
+ }
|
|
|
+
|
|
|
cmsysProcess_SetTimeout(cp, this->TimeOut);
|
|
|
cmsysProcess_Execute(cp);
|
|
|
|
|
|
@@ -2547,3 +2566,16 @@ void cmCTest::Log(int logType, const char* file, int line, const char* msg)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+//-------------------------------------------------------------------------
|
|
|
+double cmCTest::GetRemainingTimeAllowed()
|
|
|
+{
|
|
|
+ if (!this->GetHandler("script"))
|
|
|
+ {
|
|
|
+ return 1.0e7;
|
|
|
+ }
|
|
|
+
|
|
|
+ cmCTestScriptHandler* ch
|
|
|
+ = static_cast<cmCTestScriptHandler*>(this->GetHandler("script"));
|
|
|
+
|
|
|
+ return ch->GetRemainingTimeAllowed();
|
|
|
+}
|