ENH: add a CDash measured value showing the reason for passed and failed tests based on regular expressions

This commit is contained in:
Bill Hoffman 2009-02-24 17:23:51 -05:00
parent 1353ed0bd8
commit 3b73cdc89f
3 changed files with 29 additions and 10 deletions

View File

@ -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;

View File

@ -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();
passIt != it->RequiredRegularExpressions.end();
++ passIt )
{
reason += passIt->second;
reason += "\n";
}
reason += "]";
forceFail = true;
}
reason += "Regex=[";
for ( passIt = it->RequiredRegularExpressions.begin();
passIt != it->RequiredRegularExpressions.end();
++ passIt )
{
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>"

View File

@ -102,6 +102,7 @@ public:
{
std::string Name;
std::string Path;
std::string Reason;
std::string FullCommandLine;
double ExecutionTime;
int ReturnValue;