cmCTestUploadHandler.cxx 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. //----------------------------------------------------------------------------
  15. cmCTestUploadHandler::cmCTestUploadHandler()
  16. {
  17. this->Initialize();
  18. }
  19. //----------------------------------------------------------------------------
  20. void cmCTestUploadHandler::Initialize()
  21. {
  22. this->Superclass::Initialize();
  23. this->Files.clear();
  24. }
  25. void cmCTestUploadHandler::SetFiles(const cmCTest::SetOfStrings& files)
  26. {
  27. this->Files = files;
  28. }
  29. //----------------------------------------------------------------------------
  30. int cmCTestUploadHandler::ProcessHandler()
  31. {
  32. cmGeneratedFileStream ofs;
  33. if ( !this->CTest->OpenOutputFile(this->CTest->GetCurrentTag(),
  34. "Upload.xml", ofs))
  35. {
  36. cmCTestLog(this->CTest, ERROR_MESSAGE,
  37. "Cannot open Upload.xml file" << std::endl);
  38. return -1;
  39. }
  40. std::string buildname = cmCTest::SafeBuildIdField(
  41. this->CTest->GetCTestConfiguration("BuildName"));
  42. cmCTest::SetOfStrings::const_iterator it;
  43. cmXMLWriter xml(ofs);
  44. xml.StartDocument();
  45. xml.ProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" "
  46. "href=\"Dart/Source/Server/XSL/Build.xsl "
  47. "<file:///Dart/Source/Server/XSL/Build.xsl> \"");
  48. xml.StartElement("Site");
  49. xml.Attribute("BuildName", buildname);
  50. xml.Attribute("BuildStamp",
  51. this->CTest->GetCurrentTag() + "-" + this->CTest->GetTestModelString());
  52. xml.Attribute("Name", this->CTest->GetCTestConfiguration("Site"));
  53. xml.Attribute("Generator",
  54. std::string("ctest") + cmVersion::GetCMakeVersion());
  55. this->CTest->AddSiteProperties(xml);
  56. xml.StartElement("Upload");
  57. for ( it = this->Files.begin(); it != this->Files.end(); it ++ )
  58. {
  59. cmCTestOptionalLog(this->CTest, OUTPUT,
  60. "\tUpload file: " << *it << std::endl, this->Quiet);
  61. xml.StartElement("File");
  62. xml.Attribute("filename", *it);
  63. xml.StartElement("Content");
  64. xml.Attribute("encoding", "base64");
  65. xml.Content(this->CTest->Base64EncodeFile(*it));
  66. xml.EndElement(); // Content
  67. xml.EndElement(); // File
  68. }
  69. xml.EndElement(); // Upload
  70. xml.EndElement(); // Site
  71. xml.EndDocument();
  72. return 0;
  73. }