Bladeren bron

ctest_update: Do not remove the p4 depot name

Instead of removing the depot name, which causes problems when looking
at the file change list in CDash, make the Update test remove a given
prefix from the files retrieved from Update.xml.
Pedro Navarro 12 jaren geleden
bovenliggende
commit
1b54b1d5b7
3 gewijzigde bestanden met toevoegingen van 11 en 11 verwijderingen
  1. 1 11
      Source/CTest/cmCTestP4.cxx
  2. 9 0
      Tests/CTestUpdateCommon.cmake
  3. 1 0
      Tests/CTestUpdateP4.cmake.in

+ 1 - 11
Source/CTest/cmCTestP4.cxx

@@ -144,17 +144,7 @@ private:
     if(!this->Line.empty() && this->Line[0] == '='
        && this->RegexDiff.find(this->Line))
       {
-        std::string Path = this->RegexDiff.match(1);
-        // See if we need to remove the //depot prefix
-        if(Path.length() > 2 && Path[0] == '/' && Path[1] == '/')
-          {
-          size_t found = Path.find('/', 2);
-          if(found != std::string::npos)
-            {
-            Path = Path.substr(found + 1);
-            }
-          }
-        CurrentPath = Path;
+        CurrentPath = this->RegexDiff.match(1);
         AlreadyNotified = false;
       }
     else

+ 9 - 0
Tests/CTestUpdateCommon.cmake

@@ -37,10 +37,19 @@ function(check_updates build)
     REGEX "<(${types}|FullName)>"
     LIMIT_INPUT ${max_update_xml_size}
     )
+
   string(REGEX REPLACE
     "[ \t]*<(${types})>[ \t]*;[ \t]*<FullName>([^<]*)</FullName>"
     "\\1{\\2}" UPDATE_XML_ENTRIES "${UPDATE_XML_ENTRIES}")
 
+  # If specified, remove the given prefix from the files in Update.xml.
+  # Some VCS systems, like Perforce, return absolute locations
+  if(DEFINED REPOSITORY_FILE_PREFIX)
+    string(REPLACE
+      "${REPOSITORY_FILE_PREFIX}" ""
+      UPDATE_XML_ENTRIES "${UPDATE_XML_ENTRIES}")
+  endif()
+
   # Compare expected and actual entries
   set(EXTRA "${UPDATE_XML_ENTRIES}")
   list(REMOVE_ITEM EXTRA ${ARGN} ${UPDATE_EXTRA} ${UPDATE_MAYBE})

+ 1 - 0
Tests/CTestUpdateP4.cmake.in

@@ -8,6 +8,7 @@ set(P4_TOP "${TOP}")
 set(TOP "${TOP}/@CTestUpdateP4_DIR@")
 
 # Include code common to all update tests.
+set(REPOSITORY_FILE_PREFIX "//ctest/")
 include("@CMAKE_CURRENT_SOURCE_DIR@/CTestUpdateCommon.cmake")
 
 #-----------------------------------------------------------------------------