summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/cmCTest.cxx18
-rw-r--r--Source/cmCTest.h2
2 files changed, 17 insertions, 3 deletions
diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx
index cf2907e..d886f4b 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") ||
@@ -319,6 +318,19 @@ bool cmCTest::ShouldCompressTestOutput()
}
//----------------------------------------------------------------------------
+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)
{
// Look up by lower-case to make names case-insensitive.
diff --git a/Source/cmCTest.h b/Source/cmCTest.h
index 120dd2e..d0b9e1e 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; }