diff options
author | Brad King <brad.king@kitware.com> | 2015-06-11 13:00:01 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2015-06-11 15:00:48 (GMT) |
commit | 493388ce48cb4188068c6f0379bb2afa60c0a41a (patch) | |
tree | 6889955607c65377409721fc2d983cdb565194ab /Tests/CTestUpdateCommon.cmake | |
parent | bcf258032fe79c75965722f25ec5f76ff472a19c (diff) | |
download | CMake-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.cmake | 20 |
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} |