Updates will be applied April 15th at 12pm EDT (UTC-0400). GitLab could be a little slow between 12 - 12:45pm EDT.

Commit cccac773 authored by Brad King's avatar Brad King

ENH: Teach ctest_* to create appending XML files

This adds an APPEND option to the ctest_* commands which tells them to
put the Append="true" attribute in the Site element of their XML file.
parent ae2c4143
......@@ -484,7 +484,7 @@ void cmCTestBuildHandler::GenerateDartBuildOutput(
std::vector<cmCTestBuildErrorWarning> ew,
double elapsed_build_time)
{
this->CTest->StartXML(os);
this->CTest->StartXML(os, this->AppendXML);
os << "<Build>\n"
<< "\t<StartDateTime>" << this->StartBuild << "</StartDateTime>\n"
<< "\t<StartBuildTime>" <<
......
......@@ -92,7 +92,7 @@ int cmCTestConfigureHandler::ProcessHandler()
if ( os )
{
this->CTest->StartXML(os);
this->CTest->StartXML(os, this->AppendXML);
os << "<Configure>\n"
<< "\t<StartDateTime>" << start_time << "</StartDateTime>"
<< std::endl
......
......@@ -169,7 +169,7 @@ bool cmCTestCoverageHandler::StartCoverageLogFile(
return false;
}
std::string local_start_time = this->CTest->CurrentTime();
this->CTest->StartXML(covLogFile);
this->CTest->StartXML(covLogFile, this->AppendXML);
covLogFile << "<CoverageLog>" << std::endl
<< "\t<StartDateTime>" << local_start_time << "</StartDateTime>"
<< "\t<StartTime>"
......@@ -388,7 +388,7 @@ int cmCTestCoverageHandler::ProcessHandler()
return -1;
}
this->CTest->StartXML(covSumFile);
this->CTest->StartXML(covSumFile, this->AppendXML);
// Produce output xml files
covSumFile << "<Coverage>" << std::endl
......@@ -1440,7 +1440,7 @@ int cmCTestCoverageHandler::RunBullseyeSourceSummary(
"Cannot open coverage summary file." << std::endl);
return 0;
}
this->CTest->StartXML(covSumFile);
this->CTest->StartXML(covSumFile, this->AppendXML);
double elapsed_time_start = cmSystemTools::GetTime();
std::string coverage_start_time = this->CTest->CurrentTime();
covSumFile << "<Coverage>" << std::endl
......
......@@ -26,6 +26,7 @@ cmCTestGenericHandler::cmCTestGenericHandler()
this->HandlerVerbose = false;
this->CTest = 0;
this->SubmitIndex = 0;
this->AppendXML = false;
}
//----------------------------------------------------------------------
......
......@@ -88,10 +88,13 @@ public:
void SetSubmitIndex(int idx) { this->SubmitIndex = idx; }
int GetSubmitIndex() { return this->SubmitIndex; }
void SetAppendXML(bool b) { this->AppendXML = b; }
protected:
bool StartResultingXML(const char* name, cmGeneratedFileStream& xofs);
bool StartLogFile(const char* name, cmGeneratedFileStream& xofs);
bool AppendXML;
bool HandlerVerbose;
cmCTest *CTest;
t_StringToString Options;
......
......@@ -33,6 +33,7 @@ cmCTestHandlerCommand::cmCTestHandlerCommand()
this->Arguments[ct_BUILD] = "BUILD";
this->Arguments[ct_SUBMIT_INDEX] = "SUBMIT_INDEX";
this->Last = ct_LAST;
this->AppendXML = false;
}
bool cmCTestHandlerCommand
......@@ -73,6 +74,8 @@ bool cmCTestHandlerCommand
return false;
}
handler->SetAppendXML(this->AppendXML);
handler->PopulateCustomVectors(this->Makefile);
if ( this->Values[ct_BUILD] )
{
......@@ -143,6 +146,14 @@ bool cmCTestHandlerCommand
//----------------------------------------------------------------------------
bool cmCTestHandlerCommand::CheckArgumentKeyword(std::string const& arg)
{
// Look for non-value arguments common to all commands.
if(arg == "APPEND")
{
this->ArgumentDoing = ArgumentDoingNone;
this->AppendXML = true;
return true;
}
// Check for a keyword in our argument/value table.
for(unsigned int k=0; k < this->Arguments.size(); ++k)
{
......
......@@ -66,6 +66,8 @@ protected:
int ArgumentDoing;
unsigned int ArgumentIndex;
bool AppendXML;
std::string ReturnVariable;
std::vector<const char*> Arguments;
std::vector<const char*> Values;
......
......@@ -287,7 +287,7 @@ void cmCTestMemCheckHandler::GenerateDartOutput(std::ostream& os)
return;
}
this->CTest->StartXML(os);
this->CTest->StartXML(os, this->AppendXML);
os << "<DynamicAnalysis Checker=\"";
switch ( this->MemoryTesterStyle )
{
......
......@@ -1442,7 +1442,7 @@ void cmCTestTestHandler::GenerateDartOutput(std::ostream& os)
return;
}
this->CTest->StartXML(os);
this->CTest->StartXML(os, this->AppendXML);
os << "<Testing>\n"
<< "\t<StartDateTime>" << this->StartTest << "</StartDateTime>\n"
<< "\t<StartTestTime>" << this->StartTestTime << "</StartTestTime>\n"
......
......@@ -1269,7 +1269,7 @@ int cmCTest::RunTest(std::vector<const char*> argv,
}
//----------------------------------------------------------------------
void cmCTest::StartXML(std::ostream& ostr)
void cmCTest::StartXML(std::ostream& ostr, bool append)
{
if(this->CurrentTag.empty())
{
......@@ -1289,6 +1289,7 @@ void cmCTest::StartXML(std::ostream& ostr)
<< this->GetTestModelString() << "\"\n\tName=\""
<< this->GetCTestConfiguration("Site") << "\"\n\tGenerator=\"ctest"
<< cmVersion::GetCMakeVersion() << "\"\n"
<< (append? "\tAppend=\"true\"\n":"")
<< "\tOSName=\"" << info.GetOSName() << "\"\n"
<< "\tHostname=\"" << info.GetHostname() << "\"\n"
<< "\tOSRelease=\"" << info.GetOSRelease() << "\"\n"
......
......@@ -199,7 +199,7 @@ public:
int* retVal = 0, const char* dir = 0, double timeout = 0.0);
//! Start CTest XML output file
void StartXML(std::ostream& ostr);
void StartXML(std::ostream& ostr, bool append);
//! End CTest XML output file
void EndXML(std::ostream& ostr);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment