diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2009-02-24 22:23:51 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2009-02-24 22:23:51 (GMT) |
commit | 3b73cdc89fdcdbbf1708bc6a2312a00bd2325711 (patch) | |
tree | 33415a1595acccc5517686b312f1982906914437 | |
parent | 1353ed0bd8d2d530fda16b3c407f085b3f77af9d (diff) | |
download | CMake-3b73cdc89fdcdbbf1708bc6a2312a00bd2325711.zip CMake-3b73cdc89fdcdbbf1708bc6a2312a00bd2325711.tar.gz CMake-3b73cdc89fdcdbbf1708bc6a2312a00bd2325711.tar.bz2 |
ENH: add a CDash measured value showing the reason for passed and failed tests based on regular expressions
-rw-r--r-- | Source/CTest/cmCTestMultiProcessHandler.cxx | 4 | ||||
-rw-r--r-- | Source/CTest/cmCTestTestHandler.cxx | 32 | ||||
-rw-r--r-- | Source/CTest/cmCTestTestHandler.h | 1 |
3 files changed, 28 insertions, 9 deletions
diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index 56800e9..e231c33 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -240,6 +240,10 @@ bool cmCTestMultiProcessHandler::CheckOutput() void cmCTestMultiProcessHandler::EndTest(cmProcess* p) { + // Should have a way of getting this stuff from the + // launched ctest, maybe a temp file or some extra xml + // stuff in the stdout + // Need things like Reason and ExecutionTime, Path, etc. int test = p->GetId(); int exitVal = p->GetExitValue(); cmCTestTestHandler::cmCTestTestResult cres; diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index 7f3b995..7cd2839 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -799,22 +799,23 @@ void cmCTestTestHandler::ProcessOneTest(cmCTestTestProperties *it, if ( passIt->first.find(output.c_str()) ) { found = true; + reason = "Required regular expression found."; } } if ( !found ) { reason = "Required regular expression not found."; - reason += "Regex=["; - for ( passIt = it->RequiredRegularExpressions.begin(); + forceFail = true; + } + reason += "Regex=["; + for ( passIt = it->RequiredRegularExpressions.begin(); passIt != it->RequiredRegularExpressions.end(); ++ passIt ) - { - reason += passIt->second; - reason += "\n"; - } - reason += "]"; - forceFail = true; + { + reason += passIt->second; + reason += "\n"; } + reason += "]"; } if ( it->ErrorRegularExpressions.size() > 0 ) { @@ -947,7 +948,7 @@ void cmCTestTestHandler::ProcessOneTest(cmCTestTestProperties *it, (this->CustomMaximumFailedTestOutputSize)); } } - + cres.Reason = reason; cres.Output = output; cres.ReturnValue = retVal; cres.CompletionStatus = "Completed"; @@ -1585,6 +1586,19 @@ void cmCTestTestHandler::GenerateDartOutput(std::ostream& os) << "name=\"Execution Time\"><Value>" << result->ExecutionTime << "</Value></NamedMeasurement>\n"; + if(result->Reason.size()) + { + const char* reasonType = "Pass Reason"; + if(result->Status != cmCTestTestHandler::COMPLETED && + result->Status != cmCTestTestHandler::NOT_RUN) + { + reasonType = "Fail Reason"; + } + os << "\t\t\t<NamedMeasurement type=\"text/string\" " + << "name=\"" << reasonType << "\"><Value>" + << cmXMLSafe(result->Reason) + << "</Value></NamedMeasurement>\n"; + } os << "\t\t\t<NamedMeasurement type=\"text/string\" " << "name=\"Completion Status\"><Value>" diff --git a/Source/CTest/cmCTestTestHandler.h b/Source/CTest/cmCTestTestHandler.h index ab3d052..e5ee5dc 100644 --- a/Source/CTest/cmCTestTestHandler.h +++ b/Source/CTest/cmCTestTestHandler.h @@ -102,6 +102,7 @@ public: { std::string Name; std::string Path; + std::string Reason; std::string FullCommandLine; double ExecutionTime; int ReturnValue; |