diff options
author | Brad King <brad.king@kitware.com> | 2010-06-29 18:32:48 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2010-06-29 18:32:48 (GMT) |
commit | 9e7029eb01b71f58051164b72b362825525dc648 (patch) | |
tree | a5b7f63317b953901f98482ec3fe2bfc11376674 | |
parent | 7adbcf672f3a4e68a3eca8fec68f4291fefd0e8f (diff) | |
parent | a77aa7065e14c783a237b83b3db2da6613e7c1b5 (diff) | |
download | CMake-9e7029eb01b71f58051164b72b362825525dc648.zip CMake-9e7029eb01b71f58051164b72b362825525dc648.tar.gz CMake-9e7029eb01b71f58051164b72b362825525dc648.tar.bz2 |
Merge branch 'improve-CheckSourceTree-test'
-rw-r--r-- | Tests/CMakeTests/CheckSourceTreeTest.cmake.in | 63 |
1 files changed, 57 insertions, 6 deletions
diff --git a/Tests/CMakeTests/CheckSourceTreeTest.cmake.in b/Tests/CMakeTests/CheckSourceTreeTest.cmake.in index 9150aef..73f8b01 100644 --- a/Tests/CMakeTests/CheckSourceTreeTest.cmake.in +++ b/Tests/CMakeTests/CheckSourceTreeTest.cmake.in @@ -149,26 +149,77 @@ if(is_git_checkout AND NOT GIT_EXECUTABLE) # from it: # if(ctest_ini_file) - file(STRINGS "${ctest_ini_file}" lines REGEX "^GITCommand: (.*)$") - string(REGEX REPLACE "^GITCommand: (.*)$" "\\1" exe "${lines}") + file(STRINGS "${ctest_ini_file}" line REGEX "^GITCommand: (.*)$") + string(REGEX REPLACE "^GITCommand: (.*)$" "\\1" line "${line}") + if("${line}" MATCHES "^\"") + string(REGEX REPLACE "^\"([^\"]+)\" *.*$" "\\1" line "${line}") + else() + string(REGEX REPLACE "^([^ ]+) *.*$" "\\1" line "${line}") + endif() + set(exe "${line}") if("${exe}" STREQUAL "GITCOMMAND-NOTFOUND") set(exe "") endif() + if(exe) + message("info: GIT_EXECUTABLE set by 'GITCommand:' from '${ctest_ini_file}'") + endif() if(NOT exe) - file(STRINGS "${ctest_ini_file}" lines REGEX "^UpdateCommand: (.*)$") - string(REGEX REPLACE "^UpdateCommand: (.*)$" "\\1" exe "${lines}") + file(STRINGS "${ctest_ini_file}" line REGEX "^UpdateCommand: (.*)$") + string(REGEX REPLACE "^UpdateCommand: (.*)$" "\\1" line "${line}") + if("${line}" MATCHES "^\"") + string(REGEX REPLACE "^\"([^\"]+)\" *.*$" "\\1" line "${line}") + else() + string(REGEX REPLACE "^([^ ]+) *.*$" "\\1" line "${line}") + endif() + set(exe "${line}") if("${exe}" STREQUAL "GITCOMMAND-NOTFOUND") set(exe "") endif() + if(exe) + message("info: GIT_EXECUTABLE set by 'UpdateCommand:' from '${ctest_ini_file}'") + endif() + endif() + else() + message("info: no DartConfiguration.tcl or CTestConfiguration.ini file...") + endif() + + # If we have still not grokked the exe, look in the Update.xml file to see + # if we can parse it from there... + # + if(NOT exe) + file(GLOB_RECURSE update_xml_file "${CMake_BINARY_DIR}/Testing/Update.xml") + if(update_xml_file) + file(STRINGS "${update_xml_file}" line + REGEX "^.*<UpdateCommand>(.*)</UpdateCommand>$" LIMIT_COUNT 1) + string(REPLACE ""\;" "\"" line "${line}") + string(REGEX REPLACE "^.*<UpdateCommand>(.*)</UpdateCommand>$" "\\1" line "${line}") + if("${line}" MATCHES "^\"") + string(REGEX REPLACE "^\"([^\"]+)\" *.*$" "\\1" line "${line}") + else() + string(REGEX REPLACE "^([^ ]+) *.*$" "\\1" line "${line}") + endif() + if(line) + set(exe "${line}") + endif() + if(exe) + message("info: GIT_EXECUTABLE set by '<UpdateCommand>' from '${update_xml_file}'") + endif() + else() + message("info: no Update.xml file...") endif() endif() if(exe) set(GIT_EXECUTABLE "${exe}") - message("info: set GIT_EXECUTABLE to '${GIT_EXECUTABLE}' based on '${ctest_ini_file}'") + message("GIT_EXECUTABLE='${GIT_EXECUTABLE}'") + message("") + + if(NOT EXISTS "${GIT_EXECUTABLE}") + message(FATAL_ERROR "GIT_EXECUTABLE does not exist...") + endif() else() - message(FATAL_ERROR "could not determine GIT_EXECUTABLE based on '${ctest_ini_file}'...") + message(FATAL_ERROR "could not determine GIT_EXECUTABLE...") endif() endif() |