diff options
Diffstat (limited to 'Source/CTest/cmCTestTestHandler.cxx')
-rw-r--r-- | Source/CTest/cmCTestTestHandler.cxx | 43 |
1 files changed, 17 insertions, 26 deletions
diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index da78815..effa995 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -1255,46 +1255,37 @@ void cmCTestTestHandler::WriteTestResultFooter(std::ostream& os, << "\t</Test>" << std::endl; } +//---------------------------------------------------------------------- void cmCTestTestHandler::AttachFiles(std::ostream& os, cmCTestTestResult* result) { - if(result->Properties->AttachedFiles.empty()) - { - return; - } - - std::string base64 = this->EncodeFiles(result); - if(base64 == "") - { - return; - } - os << "\t\t<AttachedFiles encoding=\"base64\" compression=\"tar/gzip\">\n" - << base64 << "\n" - << "\t\t</AttachedFiles>\n"; + for(std::vector<std::string>::const_iterator file = + result->Properties->AttachedFiles.begin(); + file != result->Properties->AttachedFiles.end(); ++file) + { + std::string base64 = this->EncodeFile(*file); + std::string fname = cmSystemTools::GetFilenameName(*file); + os << "\t\t<NamedMeasurement name=\"Attached File\" encoding=\"base64\" " + "compression=\"tar/gzip\" filename=\"" << fname << "\" type=\"file\">" + "\n\t\t\t<Value>\n\t\t\t" + << base64 + << "\n\t\t\t</Value>\n\t\t</NamedMeasurement>\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<cmStdString> files; - - for(std::vector<std::string>::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 |