Ver código fonte

ctest: only create buildid when submitting from Testing/ dir

In 7f530cc we taught CTest to pass extra information to CDash at submit
time.  This extra info is used by CDash to initialize a buildid.

`ctest_submit(FILES)` can be used to send specific files to CDash.
These files are not necessarily associated with the build currently
being performed. For this reason, we modify the behavior of ctest_submit()
to only specify this extra info when we are submitting files from the
current build's Testing directory.
Zack Galbreath 7 anos atrás
pai
commit
c49d13f94b

+ 28 - 20
Source/CTest/cmCTestSubmitHandler.cxx

@@ -392,8 +392,12 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(const std::string& localprefix,
       ::curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
 
       std::string local_file = file;
+      bool initialize_cdash_buildid = false;
       if (!cmSystemTools::FileExists(local_file)) {
         local_file = localprefix + "/" + file;
+        // If this file exists within the local Testing directory we assume
+        // that it will be associated with the current build in CDash.
+        initialize_cdash_buildid = true;
       }
       std::string remote_file =
         remoteprefix + cmSystemTools::GetFilenameName(file);
@@ -425,26 +429,30 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(const std::string& localprefix,
         ((url.find('?') == std::string::npos) ? '?' : '&') +
         "FileName=" + ofile;
 
-      cmCTestCurl ctest_curl(this->CTest);
-      upload_as += "&build=";
-      upload_as +=
-        ctest_curl.Escape(this->CTest->GetCTestConfiguration("BuildName"));
-      upload_as += "&site=";
-      upload_as +=
-        ctest_curl.Escape(this->CTest->GetCTestConfiguration("Site"));
-      upload_as += "&stamp=";
-      upload_as += ctest_curl.Escape(this->CTest->GetCurrentTag());
-      upload_as += "-";
-      upload_as += ctest_curl.Escape(this->CTest->GetTestModelString());
-      cmCTestScriptHandler* ch =
-        static_cast<cmCTestScriptHandler*>(this->CTest->GetHandler("script"));
-      cmake* cm = ch->GetCMake();
-      if (cm) {
-        const char* subproject =
-          cm->GetState()->GetGlobalProperty("SubProject");
-        if (subproject) {
-          upload_as += "&subproject=";
-          upload_as += ctest_curl.Escape(subproject);
+      if (initialize_cdash_buildid) {
+        // Provide extra arguments to CDash so that it can initialize and
+        // return a buildid.
+        cmCTestCurl ctest_curl(this->CTest);
+        upload_as += "&build=";
+        upload_as +=
+          ctest_curl.Escape(this->CTest->GetCTestConfiguration("BuildName"));
+        upload_as += "&site=";
+        upload_as +=
+          ctest_curl.Escape(this->CTest->GetCTestConfiguration("Site"));
+        upload_as += "&stamp=";
+        upload_as += ctest_curl.Escape(this->CTest->GetCurrentTag());
+        upload_as += "-";
+        upload_as += ctest_curl.Escape(this->CTest->GetTestModelString());
+        cmCTestScriptHandler* ch = static_cast<cmCTestScriptHandler*>(
+          this->CTest->GetHandler("script"));
+        cmake* cm = ch->GetCMake();
+        if (cm) {
+          const char* subproject =
+            cm->GetState()->GetGlobalProperty("SubProject");
+          if (subproject) {
+            upload_as += "&subproject=";
+            upload_as += ctest_curl.Escape(subproject);
+          }
         }
       }
 

+ 1 - 0
Tests/RunCMake/ctest_submit/FILESNoBuildId-result.txt

@@ -0,0 +1 @@
+(-1|255)

+ 1 - 0
Tests/RunCMake/ctest_submit/FILESNoBuildId-stderr.txt

@@ -0,0 +1 @@
+ *Error message was: ([Cc]ould *n.t resolve host:? '?-no-site-'?.*|The requested URL returned error:.*)

+ 1 - 0
Tests/RunCMake/ctest_submit/FILESNoBuildId-stdout.txt

@@ -0,0 +1 @@
+Upload file: .* to http:\/\/-no-site-\?FileName=test-site___test-build-name___.*-Experimental___XML___RunCMakeTest.cmake&MD5=.* Size: .*

+ 1 - 0
Tests/RunCMake/ctest_submit/RunCMakeTest.cmake

@@ -31,6 +31,7 @@ run_ctest_submit(CDashUploadMissingFile CDASH_UPLOAD bad-upload)
 run_ctest_submit(CDashUploadRetry CDASH_UPLOAD ${CMAKE_CURRENT_LIST_FILE} CDASH_UPLOAD_TYPE foo RETRY_COUNT 2 RETRY_DELAY 1 INTERNAL_TEST_CHECKSUM)
 run_ctest_submit(CDashSubmitQuiet QUIET)
 run_ctest_submit_debug(CDashSubmitVerbose)
+run_ctest_submit_debug(FILESNoBuildId FILES ${CMAKE_CURRENT_LIST_FILE})
 run_ctest_submit_debug(CDashSubmitHeaders HTTPHEADER "Authorization: Bearer asdf")
 run_ctest_submit_debug(CDashUploadHeaders CDASH_UPLOAD ${CMAKE_CURRENT_LIST_FILE} CDASH_UPLOAD_TYPE foo HTTPHEADER "Authorization: Bearer asdf")