diff options
author | Zack Galbreath <zack.galbreath@kitware.com> | 2016-02-18 18:59:18 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-03-22 15:17:55 (GMT) |
commit | 993e48d0451b41f8e2c2a59473d9ddc09ada5792 (patch) | |
tree | ef678a032f62e84338653b903e6be7ebc0522d2b /Source/CTest/cmCTestRunTest.cxx | |
parent | 2b64dc7cabb6eda86f0c8b91b27aee4119ac7ebb (diff) | |
download | CMake-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.cxx | 22 |
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) { |