summaryrefslogtreecommitdiffstats
path: root/Tests/CTestUpdateCommon.cmake
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2015-06-11 13:00:01 (GMT)
committerBrad King <brad.king@kitware.com>2015-06-11 15:00:48 (GMT)
commit493388ce48cb4188068c6f0379bb2afa60c0a41a (patch)
tree6889955607c65377409721fc2d983cdb565194ab /Tests/CTestUpdateCommon.cmake
parentbcf258032fe79c75965722f25ec5f76ff472a19c (diff)
downloadCMake-493388ce48cb4188068c6f0379bb2afa60c0a41a.zip
CMake-493388ce48cb4188068c6f0379bb2afa60c0a41a.tar.gz
CMake-493388ce48cb4188068c6f0379bb2afa60c0a41a.tar.bz2
ctest_update: Fix RETURN_VALUE on VCS tool failure (#15610)
Make RETURN_VALUE report -1 if the update command failed as the documentation claims. Also avoid reporting a ctest script-level failure if the update command fails because we still correctly administered the update step.
Diffstat (limited to 'Tests/CTestUpdateCommon.cmake')
-rw-r--r--Tests/CTestUpdateCommon.cmake20
1 files changed, 20 insertions, 0 deletions
diff --git a/Tests/CTestUpdateCommon.cmake b/Tests/CTestUpdateCommon.cmake
index df1a713..458e427 100644
--- a/Tests/CTestUpdateCommon.cmake
+++ b/Tests/CTestUpdateCommon.cmake
@@ -258,6 +258,24 @@ function(check_no_update bin_dir)
endif()
endfunction()
+#-----------------------------------------------------------------------------
+# Function to find the Update.xml file and make sure
+# it only has the UpdateReturnStatus failure message and no updates.
+function(check_fail_update bin_dir)
+ set(PATTERN ${TOP}/${bin_dir}/Testing/*/Update.xml)
+ file(GLOB UPDATE_XML_FILE RELATIVE ${TOP} ${PATTERN})
+ string(REGEX REPLACE "//Update.xml$" "/Update.xml"
+ UPDATE_XML_FILE "${UPDATE_XML_FILE}")
+ message(" found ${UPDATE_XML_FILE}")
+ file(STRINGS ${TOP}/${UPDATE_XML_FILE} UPDATE_XML_STATUS
+ REGEX "^\t<UpdateReturnStatus>[^<\n]+"
+ )
+ if(UPDATE_XML_STATUS MATCHES "Update command failed")
+ message(" correctly found 'Update command failed'")
+ else()
+ message(FATAL_ERROR " missing 'Update command failed'")
+ endif()
+endfunction()
#-----------------------------------------------------------------------------
# Function to run the dashboard through a script
@@ -271,6 +289,8 @@ function(run_dashboard_script bin_dir)
list(APPEND UPDATE_MAYBE Updated{subdir} Updated{CTestConfig.cmake})
if(NO_UPDATE)
check_no_update(${bin_dir})
+ elseif(FAIL_UPDATE)
+ check_fail_update(${bin_dir})
else()
check_updates(${bin_dir}
Updated{foo.txt}