From 1b54b1d5b7a48e8e804b32a56fc79b34ba1f0978 Mon Sep 17 00:00:00 2001 From: Pedro Navarro Date: Thu, 31 Oct 2013 13:24:57 -0700 Subject: [PATCH] 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. --- Source/CTest/cmCTestP4.cxx | 12 +----------- Tests/CTestUpdateCommon.cmake | 9 +++++++++ Tests/CTestUpdateP4.cmake.in | 1 + 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Source/CTest/cmCTestP4.cxx b/Source/CTest/cmCTestP4.cxx index a504157ec..0058721eb 100644 --- a/Source/CTest/cmCTestP4.cxx +++ b/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 diff --git a/Tests/CTestUpdateCommon.cmake b/Tests/CTestUpdateCommon.cmake index ae8fda2b1..db4e08dd7 100644 --- a/Tests/CTestUpdateCommon.cmake +++ b/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]*([^<]*)" "\\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}) diff --git a/Tests/CTestUpdateP4.cmake.in b/Tests/CTestUpdateP4.cmake.in index f23bd11f8..f0420c42f 100644 --- a/Tests/CTestUpdateP4.cmake.in +++ b/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") #-----------------------------------------------------------------------------