Quellcode durchsuchen

Add the FILES keyword to ctest_upload command

Zach Mullen vor 15 Jahren
Ursprung
Commit
6b6f309c5f

+ 24 - 12
Source/CTest/cmCTestUploadCommand.cxx

@@ -33,6 +33,11 @@ cmCTestGenericHandler* cmCTestUploadCommand::InitializeHandler()
 //----------------------------------------------------------------------------
 bool cmCTestUploadCommand::CheckArgumentKeyword(std::string const& arg)
 {
+  if(arg == "FILES")
+    {
+    this->ArgumentDoing = ArgumentDoingFiles;
+    return true;
+    }
   return this->CheckArgumentValue(arg);
 }
 
@@ -40,18 +45,25 @@ bool cmCTestUploadCommand::CheckArgumentKeyword(std::string const& arg)
 //----------------------------------------------------------------------------
 bool cmCTestUploadCommand::CheckArgumentValue(std::string const& arg)
 {
-  cmStdString filename(arg);
-  if(cmSystemTools::FileExists(filename.c_str()))
+  if(this->ArgumentDoing == ArgumentDoingFiles)
     {
-    this->Files.insert(filename);
-    return true;
-    }
-  else
-    {
-    cmOStringStream e;
-    e << "File \"" << filename << "\" does not exist. Cannot submit "
-        << "a non-existent file.";
-    this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str());
-    return false;
+    cmStdString filename(arg);
+    if(cmSystemTools::FileExists(filename.c_str()))
+      {
+      this->Files.insert(filename);
+      return true;
+      }
+    else
+      {
+      cmOStringStream e;
+      e << "File \"" << filename << "\" does not exist. Cannot submit "
+          << "a non-existent file.";
+      this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str());
+      this->ArgumentDoing = ArgumentDoingError;
+      return false;
+      }
     }
+
+  // Look for other arguments.
+  return this->Superclass::CheckArgumentValue(arg);
 }

+ 7 - 1
Source/CTest/cmCTestUploadCommand.h

@@ -59,7 +59,7 @@ public:
   virtual const char* GetFullDocumentation()
     {
     return
-      "  ctest_upload(...)\n"
+      "  ctest_upload(FILES ...)\n"
       "Pass a list of files to be sent along with the build results to "
       "the dashboard server.\n";
     }
@@ -72,6 +72,12 @@ protected:
   virtual bool CheckArgumentKeyword(std::string const& arg);
   virtual bool CheckArgumentValue(std::string const& arg);
 
+  enum
+  {
+    ArgumentDoingFiles = Superclass::ArgumentDoingLast1,
+    ArgumentDoingLast2
+  };
+
   cmCTest::SetOfStrings Files;
 };
 

+ 1 - 1
Tests/CTestTestUpload/test.cmake.in

@@ -13,5 +13,5 @@ SET(CTEST_BUILD_CONFIGURATION           "$ENV{CMAKE_CONFIG_TYPE}")
 CTEST_START(Experimental)
 CTEST_CONFIGURE(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
 CTEST_BUILD(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
-CTEST_UPLOAD("${CTEST_SOURCE_DIRECTORY}/sleep.c" "${CTEST_BINARY_DIRECTORY}/CMakeCache.txt")
+CTEST_UPLOAD(FILES "${CTEST_SOURCE_DIRECTORY}/sleep.c" "${CTEST_BINARY_DIRECTORY}/CMakeCache.txt")
 CTEST_SUBMIT()