diff options
author | Brad King <brad.king@kitware.com> | 2009-02-05 21:31:37 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2009-02-05 21:31:37 (GMT) |
commit | dc13914cd698b49cbae491c1e1aebbcd44fbe932 (patch) | |
tree | 4eaa716c3e2160a7e81125360d83dc9f87241ede /Source/CTest | |
parent | f16a471576199ec275463e35ff17849350c0da79 (diff) | |
download | CMake-dc13914cd698b49cbae491c1e1aebbcd44fbe932.zip CMake-dc13914cd698b49cbae491c1e1aebbcd44fbe932.tar.gz CMake-dc13914cd698b49cbae491c1e1aebbcd44fbe932.tar.bz2 |
ENH: Create cmXMLSafe to help escapes in XML
This class provides easy syntax to efficiently insert blocks of data
into XML documents with proper escapes. It replaces the old
cmCTest::MakeXMLSafe and cmSystemTools::MakeXMLSafe methods which
allocated extra memory instead of directly streaming the data.
Diffstat (limited to 'Source/CTest')
-rw-r--r-- | Source/CTest/cmCTestBuildHandler.cxx | 9 | ||||
-rw-r--r-- | Source/CTest/cmCTestConfigureHandler.cxx | 3 | ||||
-rw-r--r-- | Source/CTest/cmCTestCoverageHandler.cxx | 23 | ||||
-rw-r--r-- | Source/CTest/cmCTestMemCheckHandler.cxx | 15 | ||||
-rw-r--r-- | Source/CTest/cmCTestTestHandler.cxx | 23 | ||||
-rw-r--r-- | Source/CTest/cmCTestUpdateHandler.cxx | 39 |
6 files changed, 59 insertions, 53 deletions
diff --git a/Source/CTest/cmCTestBuildHandler.cxx b/Source/CTest/cmCTestBuildHandler.cxx index 9e67f73..76d9425 100644 --- a/Source/CTest/cmCTestBuildHandler.cxx +++ b/Source/CTest/cmCTestBuildHandler.cxx @@ -23,6 +23,7 @@ #include "cmLocalGenerator.h" #include "cmGlobalGenerator.h" #include "cmGeneratedFileStream.h" +#include "cmXMLSafe.h" //#include <cmsys/RegularExpression.hxx> #include <cmsys/Process.h> @@ -490,7 +491,7 @@ void cmCTestBuildHandler::GenerateXMLHeader(std::ostream& os) static_cast<unsigned int>(this->StartBuildTime) << "</StartBuildTime>\n" << "<BuildCommand>" - << this->CTest->MakeXMLSafe( + << cmXMLSafe( this->CTest->GetCTestConfiguration("MakeCommand")) << "</BuildCommand>" << std::endl; } @@ -526,7 +527,7 @@ void cmCTestBuildHandler::GenerateXMLLogScraped(std::ostream& os) } os << "\t<" << (cm->Error ? "Error" : "Warning") << ">\n" << "\t\t<BuildLogLine>" << cm->LogLine << "</BuildLogLine>\n" - << "\t\t<Text>" << this->CTest->MakeXMLSafe(cm->Text) + << "\t\t<Text>" << cmXMLSafe(cm->Text).Quotes(false) << "\n</Text>" << std::endl; std::vector<cmCTestCompileErrorWarningRex>::iterator rit; for ( rit = this->ErrorWarningFileLineRegex.begin(); @@ -579,9 +580,9 @@ void cmCTestBuildHandler::GenerateXMLLogScraped(std::ostream& os) << "</SourceLineNumber>" << std::endl; } } - os << "\t\t<PreContext>" << this->CTest->MakeXMLSafe(cm->PreContext) + os << "\t\t<PreContext>" << cmXMLSafe(cm->PreContext).Quotes(false) << "</PreContext>\n" - << "\t\t<PostContext>" << this->CTest->MakeXMLSafe(cm->PostContext); + << "\t\t<PostContext>" << cmXMLSafe(cm->PostContext).Quotes(false); // is this the last warning or error, if so notify if (cm->Error && !numErrorsAllowed || !cm->Error && !numWarningsAllowed) diff --git a/Source/CTest/cmCTestConfigureHandler.cxx b/Source/CTest/cmCTestConfigureHandler.cxx index 6004508..12fe75b 100644 --- a/Source/CTest/cmCTestConfigureHandler.cxx +++ b/Source/CTest/cmCTestConfigureHandler.cxx @@ -20,6 +20,7 @@ #include "cmCTest.h" #include "cmGeneratedFileStream.h" #include "cmake.h" +#include "cmXMLSafe.h" #include <cmsys/Process.h> @@ -106,7 +107,7 @@ int cmCTestConfigureHandler::ProcessHandler() os << "<ConfigureCommand>" << cCommand.c_str() << "</ConfigureCommand>" << std::endl; cmCTestLog(this->CTest, DEBUG, "End" << std::endl); - os << "<Log>" << cmCTest::MakeXMLSafe(output) << "</Log>" << std::endl; + os << "<Log>" << cmXMLSafe(output) << "</Log>" << std::endl; std::string end_time = this->CTest->CurrentTime(); os << "\t<ConfigureStatus>" << retVal << "</ConfigureStatus>\n" << "\t<EndDateTime>" << end_time << "</EndDateTime>\n" diff --git a/Source/CTest/cmCTestCoverageHandler.cxx b/Source/CTest/cmCTestCoverageHandler.cxx index 8f73220..40dac00 100644 --- a/Source/CTest/cmCTestCoverageHandler.cxx +++ b/Source/CTest/cmCTestCoverageHandler.cxx @@ -19,6 +19,7 @@ #include "cmake.h" #include "cmSystemTools.h" #include "cmGeneratedFileStream.h" +#include "cmXMLSafe.h" #include <cmsys/Process.h> #include <cmsys/RegularExpression.hxx> @@ -470,8 +471,8 @@ int cmCTestCoverageHandler::ProcessHandler() const cmCTestCoverageHandlerContainer::SingleFileCoverageVector& fcov = fileIterator->second; covLogFile << "\t<File Name=\"" - << this->CTest->MakeXMLSafe(fileName.c_str()) - << "\" FullPath=\"" << this->CTest->MakeXMLSafe( + << cmXMLSafe(fileName) + << "\" FullPath=\"" << cmXMLSafe( this->CTest->GetShortPathToFile( fileIterator->first.c_str())) << "\">" << std::endl << "\t\t<Report>" << std::endl; @@ -507,7 +508,7 @@ int cmCTestCoverageHandler::ProcessHandler() } covLogFile << "\t\t<Line Number=\"" << cc << "\" Count=\"" << fcov[cc] << "\">" - << this->CTest->MakeXMLSafe(line.c_str()) << "</Line>" << std::endl; + << cmXMLSafe(line) << "</Line>" << std::endl; if ( fcov[cc] == 0 ) { untested ++; @@ -536,8 +537,8 @@ int cmCTestCoverageHandler::ProcessHandler() total_untested += untested; covLogFile << "\t\t</Report>" << std::endl << "\t</File>" << std::endl; - covSumFile << "\t<File Name=\"" << this->CTest->MakeXMLSafe(fileName) - << "\" FullPath=\"" << this->CTest->MakeXMLSafe( + covSumFile << "\t<File Name=\"" << cmXMLSafe(fileName) + << "\" FullPath=\"" << cmXMLSafe( this->CTest->GetShortPathToFile(fullFileName.c_str())) << "\" Covered=\"" << (tested > 0 ? "true":"false") << "\">\n" << "\t\t<LOCTested>" << tested << "</LOCTested>\n" @@ -1329,8 +1330,8 @@ int cmCTestCoverageHandler::RunBullseyeCoverageBranch( << std::endl); // start the file output covLogFile << "\t<File Name=\"" - << this->CTest->MakeXMLSafe(i->first.c_str()) - << "\" FullPath=\"" << this->CTest->MakeXMLSafe( + << cmXMLSafe(i->first) + << "\" FullPath=\"" << cmXMLSafe( this->CTest->GetShortPathToFile( i->second.c_str())) << "\">" << std::endl << "\t\t<Report>" << std::endl; @@ -1339,7 +1340,7 @@ int cmCTestCoverageHandler::RunBullseyeCoverageBranch( for(int k =0; bullseyeHelp[k] != 0; ++k) { covLogFile << "\t\t<Line Number=\"" << line << "\" Count=\"-1\">" - << this->CTest->MakeXMLSafe(bullseyeHelp[k]) + << cmXMLSafe(bullseyeHelp[k]) << "</Line>" << std::endl; line++; } @@ -1355,7 +1356,7 @@ int cmCTestCoverageHandler::RunBullseyeCoverageBranch( else if(valid) { covLogFile << "\t\t<Line Number=\"" << line << "\" Count=\"-1\">" - << this->CTest->MakeXMLSafe(lineIn.c_str()) + << cmXMLSafe(lineIn) << "</Line>" << std::endl; line++; } @@ -1561,8 +1562,8 @@ int cmCTestCoverageHandler::RunBullseyeSourceSummary( tmpLog << "percentBranch: " << percentBranch << "\n"; tmpLog << "percentCoverage: " << percent_coverage << "\n"; tmpLog << "coverage metric: " << cmet << "\n"; - covSumFile << "\t<File Name=\"" << this->CTest->MakeXMLSafe(sourceFile) - << "\" FullPath=\"" << this->CTest->MakeXMLSafe( + covSumFile << "\t<File Name=\"" << cmXMLSafe(sourceFile) + << "\" FullPath=\"" << cmXMLSafe( this->CTest->GetShortPathToFile(file.c_str())) << "\" Covered=\"" << (cmet>0?"true":"false") << "\">\n" << "\t\t<BranchesTested>" diff --git a/Source/CTest/cmCTestMemCheckHandler.cxx b/Source/CTest/cmCTestMemCheckHandler.cxx index 97a6ee0..12d178d 100644 --- a/Source/CTest/cmCTestMemCheckHandler.cxx +++ b/Source/CTest/cmCTestMemCheckHandler.cxx @@ -24,6 +24,7 @@ #include <cmsys/RegularExpression.hxx> #include <cmsys/Base64.h> #include "cmMakefile.h" +#include "cmXMLSafe.h" #include <stdlib.h> #include <math.h> @@ -77,8 +78,8 @@ public: int i = 0; for(; atts[i] != 0; i+=2) { - ostr << " " << this->CTest->MakeXMLSafe(atts[i]).c_str() - << " - " << this->CTest->MakeXMLSafe(atts[i+1]).c_str() << "\n"; + ostr << " " << cmXMLSafe(atts[i]) + << " - " << cmXMLSafe(atts[i+1]) << "\n"; } ostr << "\n"; this->Log += ostr.str(); @@ -313,7 +314,7 @@ void cmCTestMemCheckHandler::GenerateDartOutput(std::ostream& os) { cmCTestTestResult *result = &this->TestResults[cc]; std::string testPath = result->Path + "/" + result->Name; - os << "\t\t<Test>" << cmCTest::MakeXMLSafe( + os << "\t\t<Test>" << cmXMLSafe( this->CTest->GetShortPathToFile(testPath.c_str())) << "</Test>" << std::endl; } @@ -610,7 +611,7 @@ bool cmCTestMemCheckHandler::ProcessMemCheckPurifyOutput( results[failure] ++; defects ++; } - ostr << cmCTest::MakeXMLSafe(*i) << std::endl; + ostr << cmXMLSafe(*i) << std::endl; } log = ostr.str(); @@ -750,7 +751,7 @@ bool cmCTestMemCheckHandler::ProcessMemCheckValgrindOutput( defects ++; } totalOutputSize += lines[cc].size(); - ostr << cmCTest::MakeXMLSafe(lines[cc]) << std::endl; + ostr << cmXMLSafe(lines[cc]) << std::endl; } else { @@ -767,9 +768,9 @@ bool cmCTestMemCheckHandler::ProcessMemCheckValgrindOutput( cmCTestLog(this->CTest, DEBUG, "before xml safe " << lines[*i] << std::endl); cmCTestLog(this->CTest, DEBUG, "after xml safe " - << cmCTest::MakeXMLSafe(lines[*i]) << std::endl); + << cmXMLSafe(lines[*i]) << std::endl); - ostr << cmCTest::MakeXMLSafe(lines[*i]) << std::endl; + ostr << cmXMLSafe(lines[*i]) << std::endl; if(!unlimitedOutput && totalOutputSize > static_cast<size_t>(this->CustomMaximumFailedTestOutputSize)) { diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index 5e46c69..cb2c1aa 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -28,6 +28,7 @@ #include "cmLocalGenerator.h" #include "cmCommand.h" #include "cmSystemTools.h" +#include "cmXMLSafe.h" #include <stdlib.h> #include <math.h> @@ -1464,7 +1465,7 @@ void cmCTestTestHandler::GenerateDartOutput(std::ostream& os) { cmCTestTestResult *result = &this->TestResults[cc]; std::string testPath = result->Path + "/" + result->Name; - os << "\t\t<Test>" << cmCTest::MakeXMLSafe( + os << "\t\t<Test>" << cmXMLSafe( this->CTest->GetShortPathToFile(testPath.c_str())) << "</Test>" << std::endl; } @@ -1481,7 +1482,7 @@ void cmCTestTestHandler::GenerateDartOutput(std::ostream& os) { os << "\t\t\t<NamedMeasurement type=\"text/string\" " "name=\"Exit Code\"><Value>" - << cmCTest::MakeXMLSafe(this->GetTestStatus(result->Status)) + << cmXMLSafe(this->GetTestStatus(result->Status)) << "</Value>" "</NamedMeasurement>\n" << "\t\t\t<NamedMeasurement type=\"text/string\" " @@ -1498,13 +1499,13 @@ void cmCTestTestHandler::GenerateDartOutput(std::ostream& os) os << "\t\t\t<NamedMeasurement type=\"text/string\" " << "name=\"Completion Status\"><Value>" - << cmCTest::MakeXMLSafe(result->CompletionStatus) + << cmXMLSafe(result->CompletionStatus) << "</Value></NamedMeasurement>\n"; } os << "\t\t\t<NamedMeasurement type=\"text/string\" " << "name=\"Command Line\"><Value>" - << cmCTest::MakeXMLSafe(result->FullCommandLine) + << cmXMLSafe(result->FullCommandLine) << "</Value></NamedMeasurement>\n"; std::map<cmStdString,cmStdString>::iterator measureIt; for ( measureIt = result->Properties->Measurements.begin(); @@ -1514,13 +1515,13 @@ void cmCTestTestHandler::GenerateDartOutput(std::ostream& os) os << "\t\t\t<NamedMeasurement type=\"text/string\" " << "name=\"" << measureIt->first.c_str() << "\"><Value>" - << cmCTest::MakeXMLSafe(measureIt->second.c_str()) + << cmXMLSafe(measureIt->second) << "</Value></NamedMeasurement>\n"; } os << "\t\t\t<Measurement>\n" << "\t\t\t\t<Value>"; - os << cmCTest::MakeXMLSafe(result->Output); + os << cmXMLSafe(result->Output); os << "</Value>\n" << "\t\t\t</Measurement>\n" @@ -1556,13 +1557,13 @@ void cmCTestTestHandler::WriteTestResultHeader(std::ostream& os, } std::string testPath = result->Path + "/" + result->Name; os << "\">\n" - << "\t\t<Name>" << cmCTest::MakeXMLSafe(result->Name) << "</Name>\n" - << "\t\t<Path>" << cmCTest::MakeXMLSafe( + << "\t\t<Name>" << cmXMLSafe(result->Name) << "</Name>\n" + << "\t\t<Path>" << cmXMLSafe( this->CTest->GetShortPathToFile(result->Path.c_str())) << "</Path>\n" - << "\t\t<FullName>" << cmCTest::MakeXMLSafe( + << "\t\t<FullName>" << cmXMLSafe( this->CTest->GetShortPathToFile(testPath.c_str())) << "</FullName>\n" << "\t\t<FullCommandLine>" - << cmCTest::MakeXMLSafe(result->FullCommandLine) + << cmXMLSafe(result->FullCommandLine) << "</FullCommandLine>\n"; } @@ -1577,7 +1578,7 @@ void cmCTestTestHandler::WriteTestResultFooter(std::ostream& os, for(std::vector<std::string>::const_iterator li = labels.begin(); li != labels.end(); ++li) { - os << "\t\t\t<Label>" << cmCTest::MakeXMLSafe(*li) << "</Label>\n"; + os << "\t\t\t<Label>" << cmXMLSafe(*li) << "</Label>\n"; } os << "\t\t</Labels>\n"; } diff --git a/Source/CTest/cmCTestUpdateHandler.cxx b/Source/CTest/cmCTestUpdateHandler.cxx index e1eeeb1..bd1aead 100644 --- a/Source/CTest/cmCTestUpdateHandler.cxx +++ b/Source/CTest/cmCTestUpdateHandler.cxx @@ -25,6 +25,7 @@ #include "cmVersion.h" #include "cmGeneratedFileStream.h" #include "cmXMLParser.h" +#include "cmXMLSafe.h" //#include <cmsys/RegularExpression.hxx> #include <cmsys/Process.h> @@ -653,9 +654,9 @@ int cmCTestUpdateHandler::ProcessHandler() << this->CTest->GetTestModelString() << "</BuildStamp>" << std::endl; os << "\t<StartDateTime>" << start_time << "</StartDateTime>\n" << "\t<StartTime>" << start_time_time << "</StartTime>\n" - << "\t<UpdateCommand>" << this->CTest->MakeXMLSafe(command) + << "\t<UpdateCommand>" << cmXMLSafe(command) << "</UpdateCommand>\n" - << "\t<UpdateType>" << this->CTest->MakeXMLSafe( + << "\t<UpdateType>" << cmXMLSafe( cmCTestUpdateHandlerUpdateToString(updateType)) << "</UpdateType>\n"; @@ -1009,17 +1010,17 @@ int cmCTestUpdateHandler::ProcessHandler() << path.c_str() << " / " << fname.c_str() << " was updated by " << sauthor1.c_str() << " to revision: " << srevision1.c_str() << " from revision: " << srevision2.c_str() << std::endl); - os << "\t\t<File Directory=\"" << cmCTest::MakeXMLSafe(path) << "\">" - << cmCTest::MakeXMLSafe(fname) + os << "\t\t<File Directory=\"" << cmXMLSafe(path) << "\">" + << cmXMLSafe(fname) << "</File>\n" - << "\t\t<Directory>" << cmCTest::MakeXMLSafe(path) + << "\t\t<Directory>" << cmXMLSafe(path) << "</Directory>\n" - << "\t\t<FullName>" << cmCTest::MakeXMLSafe(file) << "</FullName>\n" - << "\t\t<CheckinDate>" << cmCTest::MakeXMLSafe(sdate1) + << "\t\t<FullName>" << cmXMLSafe(file) << "</FullName>\n" + << "\t\t<CheckinDate>" << cmXMLSafe(sdate1) << "</CheckinDate>\n" - << "\t\t<Author>" << cmCTest::MakeXMLSafe(sauthor1) << "</Author>\n" - << "\t\t<Email>" << cmCTest::MakeXMLSafe(semail1) << "</Email>\n" - << "\t\t<Log>" << cmCTest::MakeXMLSafe(comment1) << "</Log>\n" + << "\t\t<Author>" << cmXMLSafe(sauthor1) << "</Author>\n" + << "\t\t<Email>" << cmXMLSafe(semail1) << "</Email>\n" + << "\t\t<Log>" << cmXMLSafe(comment1) << "</Log>\n" << "\t\t<Revision>" << srevision1 << "</Revision>\n" << "\t\t<PriorRevision>" << srevision2 << "</PriorRevision>" << std::endl; @@ -1030,26 +1031,26 @@ int cmCTestUpdateHandler::ProcessHandler() << "\t\t\t<Revision>" << srevision1 << "</Revision>\n" << "\t\t\t<PreviousRevision>" << srevision2 << "</PreviousRevision>\n" - << "\t\t\t<Author>" << cmCTest::MakeXMLSafe(sauthor1) + << "\t\t\t<Author>" << cmXMLSafe(sauthor1) << "</Author>\n" - << "\t\t\t<Date>" << cmCTest::MakeXMLSafe(sdate1) + << "\t\t\t<Date>" << cmXMLSafe(sdate1) << "</Date>\n" - << "\t\t\t<Comment>" << cmCTest::MakeXMLSafe(comment1) + << "\t\t\t<Comment>" << cmXMLSafe(comment1) << "</Comment>\n" - << "\t\t\t<Email>" << cmCTest::MakeXMLSafe(semail1) + << "\t\t\t<Email>" << cmXMLSafe(semail1) << "</Email>\n" << "\t\t</Revisions>\n" << "\t\t<Revisions>\n" << "\t\t\t<Revision>" << srevision2 << "</Revision>\n" << "\t\t\t<PreviousRevision>" << srevision2 << "</PreviousRevision>\n" - << "\t\t\t<Author>" << cmCTest::MakeXMLSafe(sauthor2) + << "\t\t\t<Author>" << cmXMLSafe(sauthor2) << "</Author>\n" - << "\t\t\t<Date>" << cmCTest::MakeXMLSafe(sdate2) + << "\t\t\t<Date>" << cmXMLSafe(sdate2) << "</Date>\n" - << "\t\t\t<Comment>" << cmCTest::MakeXMLSafe(comment2) + << "\t\t\t<Comment>" << cmXMLSafe(comment2) << "</Comment>\n" - << "\t\t\t<Email>" << cmCTest::MakeXMLSafe(semail2) + << "\t\t\t<Email>" << cmXMLSafe(semail2) << "</Email>\n" << "\t\t</Revisions>" << std::endl; } @@ -1147,7 +1148,7 @@ int cmCTestUpdateHandler::ProcessHandler() if ( updateProducedError ) { os << "Update error: "; - os << this->CTest->MakeXMLSafe(checkoutErrorMessages); + os << cmXMLSafe(checkoutErrorMessages); cmCTestLog(this->CTest, ERROR_MESSAGE, " Update with command: " << command << " failed" << std::endl); } |