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 | |
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')
-rw-r--r-- | Tests/CMakeLists.txt | 33 | ||||
-rw-r--r-- | Tests/CMakeTests/CMakeLists.txt | 12 | ||||
-rw-r--r-- | Tests/CMakeTests/CheckSourceTreeTest.cmake.in | 49 |
3 files changed, 88 insertions, 6 deletions
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 5bf4c82..3b6449c 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -37,6 +37,21 @@ IF(BUILD_TESTING) MARK_AS_ADVANCED(CTEST_TEST_CTEST) ENDIF (CMAKE_RUN_LONG_TESTS) + # Should tests that use CVS be run? + # + find_package(CVS) + set(do_cvs_tests 0) + + if(CVS_EXECUTABLE) + set(do_cvs_tests 1) + endif() + + if(do_cvs_tests AND NOT UNIX) + if("${CVS_EXECUTABLE}" MATCHES "cygwin") + set(do_cvs_tests 0) + endif() + endif() + # Should CPack tests be run? By default, yes, but... # # Disable packaging test on Apple 10.3 and below. PackageMaker starts @@ -947,9 +962,9 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=CVS -P ${CMake_SOURCE_DIR}/Utilities/Rel MARK_AS_ADVANCED(BZR_EXECUTABLE) SET(CTEST_TEST_UPDATE_BZR 0) IF(BZR_EXECUTABLE) - IF(NOT "${CVS_EXECUTABLE}" MATCHES "cygwin" OR UNIX) + IF(NOT "${BZR_EXECUTABLE}" MATCHES "cygwin" OR UNIX) SET(CTEST_TEST_UPDATE_BZR 1) - ENDIF(NOT "${CVS_EXECUTABLE}" MATCHES "cygwin" OR UNIX) + ENDIF(NOT "${BZR_EXECUTABLE}" MATCHES "cygwin" OR UNIX) ENDIF(BZR_EXECUTABLE) IF(CTEST_TEST_UPDATE_BZR) # Check if xmloutput plugin is there @@ -979,9 +994,9 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=CVS -P ${CMake_SOURCE_DIR}/Utilities/Rel MARK_AS_ADVANCED(GIT_EXECUTABLE) SET(CTEST_TEST_UPDATE_GIT 0) IF(GIT_EXECUTABLE) - IF(NOT "${CVS_EXECUTABLE}" MATCHES "cygwin" OR UNIX) + IF(NOT "${GIT_EXECUTABLE}" MATCHES "cygwin" OR UNIX) SET(CTEST_TEST_UPDATE_GIT 1) - ENDIF(NOT "${CVS_EXECUTABLE}" MATCHES "cygwin" OR UNIX) + ENDIF(NOT "${GIT_EXECUTABLE}" MATCHES "cygwin" OR UNIX) ENDIF(GIT_EXECUTABLE) IF(CTEST_TEST_UPDATE_GIT) SET(CTestUpdateGIT_DIR "CTest UpdateGIT") @@ -998,9 +1013,9 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=CVS -P ${CMake_SOURCE_DIR}/Utilities/Rel MARK_AS_ADVANCED(HG_EXECUTABLE) SET(CTEST_TEST_UPDATE_HG 0) IF(HG_EXECUTABLE) - IF(NOT "${CVS_EXECUTABLE}" MATCHES "cygwin" OR UNIX) + IF(NOT "${HG_EXECUTABLE}" MATCHES "cygwin" OR UNIX) SET(CTEST_TEST_UPDATE_HG 1) - ENDIF(NOT "${CVS_EXECUTABLE}" MATCHES "cygwin" OR UNIX) + ENDIF(NOT "${HG_EXECUTABLE}" MATCHES "cygwin" OR UNIX) ENDIF(HG_EXECUTABLE) IF(CTEST_TEST_UPDATE_HG) SET(CTestUpdateHG_DIR "CTest UpdateHG") @@ -1236,3 +1251,9 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=CVS -P ${CMake_SOURCE_DIR}/Utilities/Rel ENDIF(BUILD_TESTING) SUBDIRS(CMakeTests) + +if(BUILD_TESTING) + if(do_cvs_tests) + add_test(IsSourceTreeUnmodified ${CMAKE_CMAKE_COMMAND} -P "IsSourceTreeUnmodified.cmake") + endif(do_cvs_tests) +endif(BUILD_TESTING) 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") |