summaryrefslogtreecommitdiffstats
path: root/Source/CTest/cmCTestRunTest.cxx
diff options
context:
space:
mode:
authorZack Galbreath <zack.galbreath@kitware.com>2016-02-18 18:59:18 (GMT)
committerBrad King <brad.king@kitware.com>2016-03-22 15:17:55 (GMT)
commit993e48d0451b41f8e2c2a59473d9ddc09ada5792 (patch)
treeef678a032f62e84338653b903e6be7ebc0522d2b /Source/CTest/cmCTestRunTest.cxx
parent2b64dc7cabb6eda86f0c8b91b27aee4119ac7ebb (diff)
downloadCMake-993e48d0451b41f8e2c2a59473d9ddc09ada5792.zip
CMake-993e48d0451b41f8e2c2a59473d9ddc09ada5792.tar.gz
CMake-993e48d0451b41f8e2c2a59473d9ddc09ada5792.tar.bz2
CTest: Optionally use a secondary test timeout after matching output
Allow a test N seconds to complete after we detect a matching line in its output. Activate this behavior with a new TIMEOUT_AFTER_MATCH test property.
Diffstat (limited to 'Source/CTest/cmCTestRunTest.cxx')
-rw-r--r--Source/CTest/cmCTestRunTest.cxx22
1 files changed, 22 insertions, 0 deletions
diff --git a/Source/CTest/cmCTestRunTest.cxx b/Source/CTest/cmCTestRunTest.cxx
index d108592..7f3a077 100644
--- a/Source/CTest/cmCTestRunTest.cxx
+++ b/Source/CTest/cmCTestRunTest.cxx
@@ -64,6 +64,28 @@ bool cmCTestRunTest::CheckOutput()
this->GetIndex() << ": " << line << std::endl);
this->ProcessOutput += line;
this->ProcessOutput += "\n";
+
+ // Check for TIMEOUT_AFTER_MATCH property.
+ if (!this->TestProperties->TimeoutRegularExpressions.empty())
+ {
+ std::vector<std::pair<cmsys::RegularExpression,
+ std::string> >::iterator regIt;
+ for ( regIt = this->TestProperties->TimeoutRegularExpressions.begin();
+ regIt != this->TestProperties->TimeoutRegularExpressions.end();
+ ++ regIt )
+ {
+ if ( regIt->first.find(this->ProcessOutput.c_str()) )
+ {
+ cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
+ "Test timeout changed to " <<
+ this->TestProperties->AlternateTimeout << std::endl);
+ this->TestProcess->ResetStartTime();
+ this->TestProcess->ChangeTimeout(
+ this->TestProperties->AlternateTimeout);
+ break;
+ }
+ }
+ }
}
else // if(p == cmsysProcess_Pipe_Timeout)
{