1
0

cmCTestUploadHandler.cxx 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #include "cmCTestUploadHandler.h"
  4. #include "cmCTest.h"
  5. #include "cmGeneratedFileStream.h"
  6. #include "cmVersion.h"
  7. #include "cmXMLWriter.h"
  8. #include <ostream>
  9. #include <string>
  10. cmCTestUploadHandler::cmCTestUploadHandler()
  11. {
  12. this->Initialize();
  13. }
  14. void cmCTestUploadHandler::Initialize()
  15. {
  16. this->Superclass::Initialize();
  17. this->Files.clear();
  18. }
  19. void cmCTestUploadHandler::SetFiles(std::set<std::string> const& files)
  20. {
  21. this->Files = files;
  22. }
  23. int cmCTestUploadHandler::ProcessHandler()
  24. {
  25. cmGeneratedFileStream ofs;
  26. if (!this->CTest->OpenOutputFile(this->CTest->GetCurrentTag(), "Upload.xml",
  27. ofs)) {
  28. cmCTestLog(this->CTest, ERROR_MESSAGE,
  29. "Cannot open Upload.xml file" << std::endl);
  30. return -1;
  31. }
  32. std::string buildname =
  33. cmCTest::SafeBuildIdField(this->CTest->GetCTestConfiguration("BuildName"));
  34. cmXMLWriter xml(ofs);
  35. xml.StartDocument();
  36. xml.ProcessingInstruction("xml-stylesheet",
  37. "type=\"text/xsl\" "
  38. "href=\"Dart/Source/Server/XSL/Build.xsl "
  39. "<file:///Dart/Source/Server/XSL/Build.xsl> \"");
  40. xml.StartElement("Site");
  41. xml.Attribute("BuildName", buildname);
  42. xml.Attribute("BuildStamp",
  43. this->CTest->GetCurrentTag() + "-" +
  44. this->CTest->GetTestModelString());
  45. xml.Attribute("Name", this->CTest->GetCTestConfiguration("Site"));
  46. xml.Attribute("Generator",
  47. std::string("ctest-") + cmVersion::GetCMakeVersion());
  48. this->CTest->AddSiteProperties(xml);
  49. xml.StartElement("Upload");
  50. for (std::string const& file : this->Files) {
  51. cmCTestOptionalLog(this->CTest, OUTPUT,
  52. "\tUpload file: " << file << std::endl, this->Quiet);
  53. xml.StartElement("File");
  54. xml.Attribute("filename", file);
  55. xml.StartElement("Content");
  56. xml.Attribute("encoding", "base64");
  57. xml.Content(this->CTest->Base64EncodeFile(file));
  58. xml.EndElement(); // Content
  59. xml.EndElement(); // File
  60. }
  61. xml.EndElement(); // Upload
  62. xml.EndElement(); // Site
  63. xml.EndDocument();
  64. return 0;
  65. }