cmCTestUploadHandler.cxx 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /*============================================================================
  2. CMake - Cross Platform Makefile Generator
  3. Copyright 2000-2009 Kitware, Inc.
  4. Distributed under the OSI-approved BSD License (the "License");
  5. see accompanying file Copyright.txt for details.
  6. This software is distributed WITHOUT ANY WARRANTY; without even the
  7. implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  8. See the License for more information.
  9. ============================================================================*/
  10. #include "cmCTestUploadHandler.h"
  11. #include "cmGeneratedFileStream.h"
  12. #include "cmVersion.h"
  13. #include "cmXMLWriter.h"
  14. cmCTestUploadHandler::cmCTestUploadHandler()
  15. {
  16. this->Initialize();
  17. }
  18. void cmCTestUploadHandler::Initialize()
  19. {
  20. this->Superclass::Initialize();
  21. this->Files.clear();
  22. }
  23. void cmCTestUploadHandler::SetFiles(const cmCTest::SetOfStrings& files)
  24. {
  25. this->Files = files;
  26. }
  27. int cmCTestUploadHandler::ProcessHandler()
  28. {
  29. cmGeneratedFileStream ofs;
  30. if (!this->CTest->OpenOutputFile(this->CTest->GetCurrentTag(), "Upload.xml",
  31. ofs)) {
  32. cmCTestLog(this->CTest, ERROR_MESSAGE, "Cannot open Upload.xml file"
  33. << std::endl);
  34. return -1;
  35. }
  36. std::string buildname =
  37. cmCTest::SafeBuildIdField(this->CTest->GetCTestConfiguration("BuildName"));
  38. cmCTest::SetOfStrings::const_iterator it;
  39. cmXMLWriter xml(ofs);
  40. xml.StartDocument();
  41. xml.ProcessingInstruction("xml-stylesheet",
  42. "type=\"text/xsl\" "
  43. "href=\"Dart/Source/Server/XSL/Build.xsl "
  44. "<file:///Dart/Source/Server/XSL/Build.xsl> \"");
  45. xml.StartElement("Site");
  46. xml.Attribute("BuildName", buildname);
  47. xml.Attribute("BuildStamp", this->CTest->GetCurrentTag() + "-" +
  48. this->CTest->GetTestModelString());
  49. xml.Attribute("Name", this->CTest->GetCTestConfiguration("Site"));
  50. xml.Attribute("Generator",
  51. std::string("ctest") + cmVersion::GetCMakeVersion());
  52. this->CTest->AddSiteProperties(xml);
  53. xml.StartElement("Upload");
  54. for (it = this->Files.begin(); it != this->Files.end(); it++) {
  55. cmCTestOptionalLog(this->CTest, OUTPUT,
  56. "\tUpload file: " << *it << std::endl, this->Quiet);
  57. xml.StartElement("File");
  58. xml.Attribute("filename", *it);
  59. xml.StartElement("Content");
  60. xml.Attribute("encoding", "base64");
  61. xml.Content(this->CTest->Base64EncodeFile(*it));
  62. xml.EndElement(); // Content
  63. xml.EndElement(); // File
  64. }
  65. xml.EndElement(); // Upload
  66. xml.EndElement(); // Site
  67. xml.EndDocument();
  68. return 0;
  69. }