CTest: Generate NamedMeasurement elements directly into xml file

Re-order the logic to avoid use of a temporary std::ostringstream.
This commit is contained in:
Daniel Pfeifer 2015-05-24 01:00:12 +02:00 committed by Brad King
parent 965cf8e66e
commit b26e5b552a
3 changed files with 6 additions and 10 deletions

View File

@ -607,7 +607,7 @@ void cmCTestRunTest::DartProcessing()
{ {
if (this->TestHandler->DartStuff.find(this->ProcessOutput.c_str())) if (this->TestHandler->DartStuff.find(this->ProcessOutput.c_str()))
{ {
std::string dartString = this->TestHandler->DartStuff.match(1); this->TestResult.DartString = this->TestHandler->DartStuff.match(1);
// keep searching and replacing until none are left // keep searching and replacing until none are left
while (this->TestHandler->DartStuff1.find(this->ProcessOutput.c_str())) while (this->TestHandler->DartStuff1.find(this->ProcessOutput.c_str()))
{ {
@ -615,8 +615,6 @@ void cmCTestRunTest::DartProcessing()
cmSystemTools::ReplaceString(this->ProcessOutput, cmSystemTools::ReplaceString(this->ProcessOutput,
this->TestHandler->DartStuff1.match(1).c_str(), ""); this->TestHandler->DartStuff1.match(1).c_str(), "");
} }
this->TestResult.RegressionImages
= this->TestHandler->GenerateRegressionImages(dartString);
} }
} }
} }

View File

@ -1185,7 +1185,7 @@ void cmCTestTestHandler::GenerateDartOutput(std::ostream& os)
<< "</Value></NamedMeasurement>" << "</Value></NamedMeasurement>"
<< std::endl; << std::endl;
} }
os << result->RegressionImages; this->GenerateRegressionImages(os, result->DartString);
os << "\t\t\t<NamedMeasurement type=\"numeric/double\" " os << "\t\t\t<NamedMeasurement type=\"numeric/double\" "
<< "name=\"Execution Time\"><Value>" << "name=\"Execution Time\"><Value>"
<< result->ExecutionTime << result->ExecutionTime
@ -1828,8 +1828,8 @@ void cmCTestTestHandler::ExpandTestsToRunInformationForRerunFailed()
// Just for convenience // Just for convenience
#define SPACE_REGEX "[ \t\r\n]" #define SPACE_REGEX "[ \t\r\n]"
//---------------------------------------------------------------------- //----------------------------------------------------------------------
std::string cmCTestTestHandler::GenerateRegressionImages( void cmCTestTestHandler::GenerateRegressionImages(
const std::string& xml) std::ostream& ostr, const std::string& xml)
{ {
cmsys::RegularExpression twoattributes( cmsys::RegularExpression twoattributes(
"<DartMeasurement" "<DartMeasurement"
@ -1864,7 +1864,6 @@ std::string cmCTestTestHandler::GenerateRegressionImages(
SPACE_REGEX "*(name|type|encoding|compression)=\"([^\"]*)\"" SPACE_REGEX "*(name|type|encoding|compression)=\"([^\"]*)\""
SPACE_REGEX "*>([^<]*)</DartMeasurementFile>"); SPACE_REGEX "*>([^<]*)</DartMeasurementFile>");
std::ostringstream ostr;
bool done = false; bool done = false;
std::string cxml = xml; std::string cxml = xml;
while ( ! done ) while ( ! done )
@ -2026,7 +2025,6 @@ std::string cmCTestTestHandler::GenerateRegressionImages(
done = true; done = true;
} }
} }
return ostr.str();
} }
//---------------------------------------------------------------------- //----------------------------------------------------------------------

View File

@ -128,7 +128,7 @@ public:
bool CompressOutput; bool CompressOutput;
std::string CompletionStatus; std::string CompletionStatus;
std::string Output; std::string Output;
std::string RegressionImages; std::string DartString;
int TestCount; int TestCount;
cmCTestTestProperties* Properties; cmCTestTestProperties* Properties;
}; };
@ -270,7 +270,7 @@ private:
cmsys::RegularExpression IncludeTestsRegularExpression; cmsys::RegularExpression IncludeTestsRegularExpression;
cmsys::RegularExpression ExcludeTestsRegularExpression; cmsys::RegularExpression ExcludeTestsRegularExpression;
std::string GenerateRegressionImages(const std::string& xml); void GenerateRegressionImages(std::ostream& ostr, const std::string& xml);
cmsys::RegularExpression DartStuff1; cmsys::RegularExpression DartStuff1;
void CheckLabelFilter(cmCTestTestProperties& it); void CheckLabelFilter(cmCTestTestProperties& it);
void CheckLabelFilterExclude(cmCTestTestProperties& it); void CheckLabelFilterExclude(cmCTestTestProperties& it);