From cc2092d5bb282dd4010b11a289638a243f7961e2 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 2 Feb 2009 13:24:26 -0500 Subject: [PATCH] ENH: Put test labels in MemCheck results This refactors generation of element headers and footers in cmCTestTestHandler and re-uses it in cmCTestMemCheckHandler. The change removes duplicate code and enables the new element for MemCheck results. --- Source/CTest/cmCTestMemCheckHandler.cxx | 30 ++------ Source/CTest/cmCTestTestHandler.cxx | 91 ++++++++++++++----------- Source/CTest/cmCTestTestHandler.h | 3 + 3 files changed, 59 insertions(+), 65 deletions(-) diff --git a/Source/CTest/cmCTestMemCheckHandler.cxx b/Source/CTest/cmCTestMemCheckHandler.cxx index 31af3cee2..97a6ee03a 100644 --- a/Source/CTest/cmCTestMemCheckHandler.cxx +++ b/Source/CTest/cmCTestMemCheckHandler.cxx @@ -337,30 +337,8 @@ void cmCTestMemCheckHandler::GenerateDartOutput(std::ostream& os) } this->CleanTestOutput(memcheckstr, static_cast(this->CustomMaximumFailedTestOutputSize)); - os << "\tStatus == cmCTestMemCheckHandler::COMPLETED ) - { - os << "passed"; - } - else if ( result->Status == cmCTestMemCheckHandler::NOT_RUN ) - { - os << "notrun"; - } - else - { - os << "failed"; - } - std::string testPath = result->Path + "/" + result->Name; - os << "\">\n" - << "\t\t" << cmCTest::MakeXMLSafe(result->Name) << "\n" - << "\t\t" << cmCTest::MakeXMLSafe( - this->CTest->GetShortPathToFile(result->Path.c_str())) << "\n" - << "\t\t" << cmCTest::MakeXMLSafe( - this->CTest->GetShortPathToFile(testPath.c_str())) << "\n" - << "\t\t" - << cmCTest::MakeXMLSafe(result->FullCommandLine) - << "\n" - << "\t\t" << std::endl; + this->WriteTestResultHeader(os, result); + os << "\t\t" << std::endl; for ( kk = 0; cmCTestMemCheckResultLongStrings[kk]; kk ++ ) { if ( memcheckresults[kk] ) @@ -375,8 +353,8 @@ void cmCTestMemCheckHandler::GenerateDartOutput(std::ostream& os) os << "\t\t\n" << "\t\n" << memcheckstr << std::endl - << "\t\n" - << "\t" << std::endl; + << "\t\n"; + this->WriteTestResultFooter(os, result); if ( current < cc ) { cmCTestLog(this->CTest, HANDLER_OUTPUT, "#" << std::flush); diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index c04fd9afb..5e46c691d 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -1472,30 +1472,8 @@ void cmCTestTestHandler::GenerateDartOutput(std::ostream& os) for ( cc = 0; cc < this->TestResults.size(); cc ++ ) { cmCTestTestResult *result = &this->TestResults[cc]; - os << "\tStatus == cmCTestTestHandler::COMPLETED ) - { - os << "passed"; - } - else if ( result->Status == cmCTestTestHandler::NOT_RUN ) - { - os << "notrun"; - } - else - { - os << "failed"; - } - std::string testPath = result->Path + "/" + result->Name; - os << "\">\n" - << "\t\t" << cmCTest::MakeXMLSafe(result->Name) << "\n" - << "\t\t" << cmCTest::MakeXMLSafe( - this->CTest->GetShortPathToFile(result->Path.c_str())) << "\n" - << "\t\t" << cmCTest::MakeXMLSafe( - this->CTest->GetShortPathToFile(testPath.c_str())) << "\n" - << "\t\t" - << cmCTest::MakeXMLSafe(result->FullCommandLine) - << "\n" - << "\t\t" << std::endl; + this->WriteTestResultHeader(os, result); + os << "\t\t" << std::endl; if ( result->Status != cmCTestTestHandler::NOT_RUN ) { if ( result->Status != cmCTestTestHandler::COMPLETED || @@ -1547,21 +1525,7 @@ void cmCTestTestHandler::GenerateDartOutput(std::ostream& os) << "\n" << "\t\t\t\n" << "\t\t\n"; - - if(!result->Properties->Labels.empty()) - { - os << "\t\t\n"; - std::vector const& labels = result->Properties->Labels; - for(std::vector::const_iterator li = labels.begin(); - li != labels.end(); ++li) - { - os << "\t\t\t\n"; - } - os << "\t\t\n"; - } - - os - << "\t" << std::endl; + this->WriteTestResultFooter(os, result); } os << "\t" << this->EndTest << "\n" @@ -1573,6 +1537,55 @@ void cmCTestTestHandler::GenerateDartOutput(std::ostream& os) this->CTest->EndXML(os); } +//---------------------------------------------------------------------------- +void cmCTestTestHandler::WriteTestResultHeader(std::ostream& os, + cmCTestTestResult* result) +{ + os << "\tStatus == cmCTestTestHandler::COMPLETED ) + { + os << "passed"; + } + else if ( result->Status == cmCTestTestHandler::NOT_RUN ) + { + os << "notrun"; + } + else + { + os << "failed"; + } + std::string testPath = result->Path + "/" + result->Name; + os << "\">\n" + << "\t\t" << cmCTest::MakeXMLSafe(result->Name) << "\n" + << "\t\t" << cmCTest::MakeXMLSafe( + this->CTest->GetShortPathToFile(result->Path.c_str())) << "\n" + << "\t\t" << cmCTest::MakeXMLSafe( + this->CTest->GetShortPathToFile(testPath.c_str())) << "\n" + << "\t\t" + << cmCTest::MakeXMLSafe(result->FullCommandLine) + << "\n"; +} + +//---------------------------------------------------------------------------- +void cmCTestTestHandler::WriteTestResultFooter(std::ostream& os, + cmCTestTestResult* result) +{ + if(!result->Properties->Labels.empty()) + { + os << "\t\t\n"; + std::vector const& labels = result->Properties->Labels; + for(std::vector::const_iterator li = labels.begin(); + li != labels.end(); ++li) + { + os << "\t\t\t\n"; + } + os << "\t\t\n"; + } + + os + << "\t" << std::endl; +} + //---------------------------------------------------------------------- int cmCTestTestHandler::ExecuteCommands(std::vector& vec) { diff --git a/Source/CTest/cmCTestTestHandler.h b/Source/CTest/cmCTestTestHandler.h index a95ae0e33..6e90a669c 100644 --- a/Source/CTest/cmCTestTestHandler.h +++ b/Source/CTest/cmCTestTestHandler.h @@ -134,6 +134,9 @@ protected: virtual void GenerateTestCommand(std::vector& args); int ExecuteCommands(std::vector& vec); + void WriteTestResultHeader(std::ostream& os, cmCTestTestResult* result); + void WriteTestResultFooter(std::ostream& os, cmCTestTestResult* result); + //! Clean test output to specified length bool CleanTestOutput(std::string& output, size_t length);