diff options
author | David Cole <david.cole@kitware.com> | 2009-07-24 19:58:23 (GMT) |
---|---|---|
committer | David Cole <david.cole@kitware.com> | 2009-07-24 19:58:23 (GMT) |
commit | 5bea9620dcecea1ff252c688823485560bc6cab1 (patch) | |
tree | b2f185b9ab43b05cff87f92b945b57abbe68f069 /Tests/CMakeTests | |
parent | 71c0e1417bdc42fbcc48986c7cb7c26642c1f665 (diff) | |
download | CMake-5bea9620dcecea1ff252c688823485560bc6cab1.zip CMake-5bea9620dcecea1ff252c688823485560bc6cab1.tar.gz CMake-5bea9620dcecea1ff252c688823485560bc6cab1.tar.bz2 |
BUG: Additional fix necessary for issue #8481 so that Xcode builds do not write files into the source tree. Also add a test that runs last to check for local modifications in CMake_SOURCE_DIR based on whether 'cvs -q -n up -dP' output is empty. Test fails on dashboard runs when there are local modifications. Test passes on non-dashboard runs with local modifications so that CMake developers may have mods when running the test locally.
Diffstat (limited to 'Tests/CMakeTests')
-rw-r--r-- | Tests/CMakeTests/CMakeLists.txt | 12 | ||||
-rw-r--r-- | Tests/CMakeTests/CheckSourceTreeTest.cmake.in | 49 |
2 files changed, 61 insertions, 0 deletions
diff --git a/Tests/CMakeTests/CMakeLists.txt b/Tests/CMakeTests/CMakeLists.txt index 32c5412..a1962bf 100644 --- a/Tests/CMakeTests/CMakeLists.txt +++ b/Tests/CMakeTests/CMakeLists.txt @@ -25,3 +25,15 @@ SET(GetPrerequisites_PreArgs "-DCTEST_CONFIGURATION_TYPE:STRING=\\\${CTEST_CONFIGURATION_TYPE}" ) AddCMakeTest(GetPrerequisites "${GetPrerequisites_PreArgs}") + +# Run CheckSourceTree as the very last test in the CMake/CTest/CPack test +# suite. It detects if any changes have been made to the CMake source tree +# by any previous configure, build or test steps. +# +if(do_cvs_tests) + set(CheckSourceTree_PreArgs + "-DCMake_SOURCE_DIR:PATH=${CMake_SOURCE_DIR}" + "-DCVS_EXECUTABLE:STRING=${CVS_EXECUTABLE}" + ) + AddCMakeTest(CheckSourceTree "${CheckSourceTree_PreArgs}") +endif() diff --git a/Tests/CMakeTests/CheckSourceTreeTest.cmake.in b/Tests/CMakeTests/CheckSourceTreeTest.cmake.in new file mode 100644 index 0000000..71718b6 --- /dev/null +++ b/Tests/CMakeTests/CheckSourceTreeTest.cmake.in @@ -0,0 +1,49 @@ +# Check the CMake source tree and report anything suspicious... +# +message(STATUS + "=============================================================================") +message(STATUS "CTEST_FULL_OUTPUT (Avoid ctest truncation of output)") +message(STATUS "") +message(STATUS "CMake_SOURCE_DIR='${CMake_SOURCE_DIR}'") +message(STATUS "CVS_EXECUTABLE='${CVS_EXECUTABLE}'") +message(STATUS "ENV{DASHBOARD_TEST_FROM_CTEST}='$ENV{DASHBOARD_TEST_FROM_CTEST}'") +message(STATUS "") + + +# Check with "cvs -q -n up -dP" if there are any local modifications to the +# CMake source tree: +# +message(STATUS + "=============================================================================") +execute_process(COMMAND ${CVS_EXECUTABLE} -q -n up -dP + WORKING_DIRECTORY ${CMake_SOURCE_DIR} + OUTPUT_VARIABLE ov + ERROR_VARIABLE ev + RESULT_VARIABLE rv) + +set(modifications 0) +if(NOT ov STREQUAL "") + set(modifications 1) +endif() + +message(STATUS "Results of running '${CVS_EXECUTABLE} -q -n up -dP'") +message(STATUS "rv='${rv}'") +message(STATUS "ov='${ov}'") +message(STATUS "ev='${ev}'") +message(STATUS "modifications='${modifications}'") + + +# Decide if the test passes or fails: +# +if("$ENV{DASHBOARD_TEST_FROM_CTEST}" STREQUAL "") + message(STATUS "non-dashboard interactive test run") + # developers are allowed to have local modifications... :-) +else() + message(STATUS "dashboard test run") + + if(modifications) + message(FATAL_ERROR "test fails: source tree modifications") + endif() +endif() + +message(STATUS "test passes") |