diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index cf2907e83..d886f4bd5 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -304,9 +304,8 @@ void cmCTest::SetParallelLevel(int level) bool cmCTest::ShouldCompressTestOutput() { if(!this->ComputedCompressOutput) - { - std::string cdashVersion = - this->GetCTestConfiguration("CDashVersion"); + { + std::string cdashVersion = this->GetCDashVersion(); //version >= 1.6? bool cdashSupportsGzip = cmSystemTools::VersionCompare( cmSystemTools::OP_GREATER, cdashVersion.c_str(), "1.6") || @@ -318,6 +317,19 @@ bool cmCTest::ShouldCompressTestOutput() return this->CompressTestOutput; } +//---------------------------------------------------------------------------- +std::string cmCTest::GetCDashVersion() +{ + //First query the server. If that fails, fall back to the local setting + std::string response; + std::string url = "http://"; + url += this->GetCTestConfiguration("DropSite") + "/CDash/api/getversion.php"; + + int res = cmSystemTools::HTTPRequest(url, cmSystemTools::HTTP_GET, response); + + return res ? this->GetCTestConfiguration("CDashVersion") : response; +} + //---------------------------------------------------------------------------- cmCTest::Part cmCTest::GetPartFromName(const char* name) { diff --git a/Source/cmCTest.h b/Source/cmCTest.h index 120dd2e75..d0b9e1e16 100644 --- a/Source/cmCTest.h +++ b/Source/cmCTest.h @@ -197,6 +197,8 @@ public: bool ShouldCompressTestOutput(); + std::string GetCDashVersion(); + //Used for parallel ctest job scheduling std::string GetScheduleType() { return this->ScheduleType; } void SetScheduleType(std::string type) { this->ScheduleType = type; }