From 5bfe1a196223cbbf76e30ff3607959844ad3ceef Mon Sep 17 00:00:00 2001 From: Zach Mullen Date: Tue, 15 Dec 2009 14:24:24 -0500 Subject: [PATCH] Changed XML formatting of files attached to test so that each file is archived and marked up individually, in order to make things easier on the CDash side. Also switched to using the NamedMeasurement tag instead of a new tag. --- Source/CTest/cmCTestTestHandler.cxx | 41 +++++++++++------------------ Source/CTest/cmCTestTestHandler.h | 2 +- 2 files changed, 17 insertions(+), 26 deletions(-) diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index da7881554c..effa995d00 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -1255,46 +1255,37 @@ void cmCTestTestHandler::WriteTestResultFooter(std::ostream& os, << "\t" << std::endl; } +//---------------------------------------------------------------------- void cmCTestTestHandler::AttachFiles(std::ostream& os, cmCTestTestResult* result) { - if(result->Properties->AttachedFiles.empty()) + for(std::vector::const_iterator file = + result->Properties->AttachedFiles.begin(); + file != result->Properties->AttachedFiles.end(); ++file) { - return; - } - - std::string base64 = this->EncodeFiles(result); - if(base64 == "") - { - return; - } - os << "\t\t\n" - << base64 << "\n" - << "\t\t\n"; + std::string base64 = this->EncodeFile(*file); + std::string fname = cmSystemTools::GetFilenameName(*file); + os << "\t\t" + "\n\t\t\t\n\t\t\t" + << base64 + << "\n\t\t\t\n\t\t\n"; + } } //---------------------------------------------------------------------- -std::string cmCTestTestHandler::EncodeFiles(cmCTestTestResult* result) +std::string cmCTestTestHandler::EncodeFile(std::string file) { - //create the temp tar file - std::string tarFile = result->Name + "_attached.tar.gz"; + std::string tarFile = file + "_temp.tar.gz"; std::vector files; - - for(std::vector::iterator f = - result->Properties->AttachedFiles.begin(); - f != result->Properties->AttachedFiles.end(); ++f) - { - const cmStdString fname = f->c_str(); - files.push_back(fname); - } + files.push_back(file); if(!cmSystemTools::CreateTar(tarFile.c_str(), files, true, false, false)) { cmCTestLog(this->CTest, ERROR_MESSAGE, "Error creating tar while " - "attaching files to the following test: " << result->Name << std::endl); + "attaching file: " << file << std::endl); return ""; } - long len = cmSystemTools::FileLength(tarFile.c_str()); std::ifstream ifs(tarFile.c_str(), std::ios::in #ifdef _WIN32 diff --git a/Source/CTest/cmCTestTestHandler.h b/Source/CTest/cmCTestTestHandler.h index 0e0cffdd76..d4e92f0a83 100644 --- a/Source/CTest/cmCTestTestHandler.h +++ b/Source/CTest/cmCTestTestHandler.h @@ -147,7 +147,7 @@ protected: // Write attached test files into the xml void AttachFiles(std::ostream& os, cmCTestTestResult* result); // Helper function to encode attached test files - std::string EncodeFiles(cmCTestTestResult* result); + std::string EncodeFile(std::string file); //! Clean test output to specified length bool CleanTestOutput(std::string& output, size_t length);