diff options
Diffstat (limited to 'Source/CTest/cmCTestUploadHandler.cxx')
-rw-r--r-- | Source/CTest/cmCTestUploadHandler.cxx | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/Source/CTest/cmCTestUploadHandler.cxx b/Source/CTest/cmCTestUploadHandler.cxx new file mode 100644 index 0000000..261ecab --- /dev/null +++ b/Source/CTest/cmCTestUploadHandler.cxx @@ -0,0 +1,72 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#include "cmCTestUploadHandler.h" + +#include "cmGeneratedFileStream.h" +#include "cmVersion.h" +#include "cmXMLWriter.h" + +#include <ostream> +#include <string> + +cmCTestUploadHandler::cmCTestUploadHandler() +{ + this->Initialize(); +} + +void cmCTestUploadHandler::Initialize() +{ + this->Superclass::Initialize(); + this->Files.clear(); +} + +void cmCTestUploadHandler::SetFiles(const cmCTest::SetOfStrings& files) +{ + this->Files = files; +} + +int cmCTestUploadHandler::ProcessHandler() +{ + cmGeneratedFileStream ofs; + if (!this->CTest->OpenOutputFile(this->CTest->GetCurrentTag(), "Upload.xml", + ofs)) { + cmCTestLog(this->CTest, ERROR_MESSAGE, + "Cannot open Upload.xml file" << std::endl); + return -1; + } + std::string buildname = + cmCTest::SafeBuildIdField(this->CTest->GetCTestConfiguration("BuildName")); + + cmXMLWriter xml(ofs); + xml.StartDocument(); + xml.ProcessingInstruction("xml-stylesheet", + "type=\"text/xsl\" " + "href=\"Dart/Source/Server/XSL/Build.xsl " + "<file:///Dart/Source/Server/XSL/Build.xsl> \""); + xml.StartElement("Site"); + xml.Attribute("BuildName", buildname); + xml.Attribute("BuildStamp", + this->CTest->GetCurrentTag() + "-" + + this->CTest->GetTestModelString()); + xml.Attribute("Name", this->CTest->GetCTestConfiguration("Site")); + xml.Attribute("Generator", + std::string("ctest") + cmVersion::GetCMakeVersion()); + this->CTest->AddSiteProperties(xml); + xml.StartElement("Upload"); + + for (std::string const& file : this->Files) { + cmCTestOptionalLog(this->CTest, OUTPUT, + "\tUpload file: " << file << std::endl, this->Quiet); + xml.StartElement("File"); + xml.Attribute("filename", file); + xml.StartElement("Content"); + xml.Attribute("encoding", "base64"); + xml.Content(this->CTest->Base64EncodeFile(file)); + xml.EndElement(); // Content + xml.EndElement(); // File + } + xml.EndElement(); // Upload + xml.EndElement(); // Site + xml.EndDocument(); + return 0; +} |