CMake/Source/CTest/cmCTestUploadHandler.cxx
Bill Hoffman 653529ce55 CTest: Allow / to be in the build name, and be consistent with the build name
Prior to this change / was not allowed in the build name. This was tested
with a CDash server and worked. In addition the safe build name was not
used everywhere. This caused mismatched build names to be in the xml
files going to CDash which caused different rows to be created for the
same build.
2014-08-18 11:22:18 -04:00

79 lines
2.6 KiB
C++

/*============================================================================
CMake - Cross Platform Makefile Generator
Copyright 2000-2009 Kitware, Inc.
Distributed under the OSI-approved BSD License (the "License");
see accompanying file Copyright.txt for details.
This software is distributed WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the License for more information.
============================================================================*/
#include "cmCTestUploadHandler.h"
#include "cmGeneratedFileStream.h"
#include "cmVersion.h"
#include "cmXMLSafe.h"
//----------------------------------------------------------------------------
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"));
cmCTest::SetOfStrings::const_iterator it;
ofs << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
<< "<?xml-stylesheet type=\"text/xsl\" "
"href=\"Dart/Source/Server/XSL/Build.xsl "
"<file:///Dart/Source/Server/XSL/Build.xsl> \"?>\n"
<< "<Site BuildName=\""
<< buildname
<< "\" BuildStamp=\""
<< this->CTest->GetCurrentTag() << "-"
<< this->CTest->GetTestModelString() << "\" Name=\""
<< this->CTest->GetCTestConfiguration("Site") << "\" Generator=\"ctest"
<< cmVersion::GetCMakeVersion()
<< "\">\n";
this->CTest->AddSiteProperties(ofs);
ofs << "<Upload>\n";
for ( it = this->Files.begin(); it != this->Files.end(); it ++ )
{
cmCTestLog(this->CTest, OUTPUT,
"\tUpload file: " << *it << std::endl);
ofs << "<File filename=\"" << cmXMLSafe(*it) << "\">\n"
<< "<Content encoding=\"base64\">\n";
ofs << this->CTest->Base64EncodeFile(*it);
ofs << "\n</Content>\n"
<< "</File>\n";
}
ofs << "</Upload>\n"
<< "</Site>\n";
return 0;
}