diff options
author | Brad King <brad.king@kitware.com> | 2013-11-04 12:53:47 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2013-11-04 12:53:47 (GMT) |
commit | ae57fb8ef6bd047f5c11851dfbebe7a0b7960fc4 (patch) | |
tree | f12dc982dd78ba1cf321af0333f2c8bfcfe6a3e1 /Tests | |
parent | f3698f7c4a19470eb2152ce5acfbce564cc6d4f5 (diff) | |
parent | 35fbc10079fcbce51f542347cf74c57e3164b85e (diff) | |
download | CMake-ae57fb8ef6bd047f5c11851dfbebe7a0b7960fc4.zip CMake-ae57fb8ef6bd047f5c11851dfbebe7a0b7960fc4.tar.gz CMake-ae57fb8ef6bd047f5c11851dfbebe7a0b7960fc4.tar.bz2 |
Merge topic 'robust-ctest_empty_binary_directory'
35fbc10 CTest: more aggressive implementation of ctest_empty_binary_directory()
9d9f102 Tests: added test for ctest_empty_binary_directory()
Diffstat (limited to 'Tests')
-rw-r--r-- | Tests/CMakeLists.txt | 11 | ||||
-rw-r--r-- | Tests/CTestTestEmptyBinaryDirectory/test.cmake.in | 66 |
2 files changed, 77 insertions, 0 deletions
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 7c939ed..d4a55fc 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -1943,6 +1943,17 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=master -P ${CMake_SOURCE_DIR}/Utilities/ PASS_REGULAR_EXPRESSION "Upload\\.xml") configure_file( + "${CMake_SOURCE_DIR}/Tests/CTestTestEmptyBinaryDirectory/test.cmake.in" + "${CMake_BINARY_DIR}/Tests/CTestTestEmptyBinaryDirectory/test.cmake" + @ONLY ESCAPE_QUOTES) + add_test(CTestTestEmptyBinaryDirectory ${CMAKE_CTEST_COMMAND} + -S "${CMake_BINARY_DIR}/Tests/CTestTestEmptyBinaryDirectory/test.cmake" -V + --output-log "${CMake_BINARY_DIR}/Tests/CTestTestEmptyBinaryDirectory/testOut.log" + ) + set_tests_properties(CTestTestEmptyBinaryDirectory PROPERTIES + PASS_REGULAR_EXPRESSION "TEST_SUCCESS") + + configure_file( "${CMake_SOURCE_DIR}/Tests/CTestTestConfigFileInBuildDir/test1.cmake.in" "${CMake_BINARY_DIR}/Tests/CTestTestConfigFileInBuildDir1/test1.cmake" @ONLY ESCAPE_QUOTES) diff --git a/Tests/CTestTestEmptyBinaryDirectory/test.cmake.in b/Tests/CTestTestEmptyBinaryDirectory/test.cmake.in new file mode 100644 index 0000000..8eb808f --- /dev/null +++ b/Tests/CTestTestEmptyBinaryDirectory/test.cmake.in @@ -0,0 +1,66 @@ +cmake_minimum_required(VERSION 2.8.12) + +set(CTEST_RUN_CURRENT_SCRIPT 0) + +set(CTEST_SOURCE_DIRECTORY "@CMake_SOURCE_DIR@/Tests/CTestTestEmptyBinaryDirectory") +set(CTEST_BINARY_DIRECTORY "@CMake_BINARY_DIR@/Tests/CTestTestEmptyBinaryDirectory") + +# make sure ctest does not remove directories without a CMakeCache.txt in it +set(EMPTY_BINARY_DIR "${CTEST_BINARY_DIRECTORY}/empty_binary_dir") +file(MAKE_DIRECTORY "${EMPTY_BINARY_DIR}") + +if(NOT EXISTS "${EMPTY_BINARY_DIR}" + OR EXISTS "${EMPTY_BINARY_DIR}/CMakeCache.txt") + message(FATAL_ERROR "empty_binary_dir precondition failed") +endif() + +ctest_empty_binary_directory("${EMPTY_BINARY_DIR}") + +if(NOT EXISTS "${EMPTY_BINARY_DIR}") + message(FATAL_ERROR "empty_binary_dir should not have been removed") +endif() + +# make sure ctest does remove directories with a CMakeCache.txt +set(VALID_BINARY_DIR "${CTEST_BINARY_DIRECTORY}/valid_binary_dir") +file(MAKE_DIRECTORY "${VALID_BINARY_DIR}") +file(WRITE "${VALID_BINARY_DIR}/CMakeCache.txt") + +if(NOT EXISTS "${VALID_BINARY_DIR}" + OR NOT EXISTS "${VALID_BINARY_DIR}/CMakeCache.txt") + message(FATAL_ERROR "valid_binary_dir precondition failed") +endif() + +ctest_empty_binary_directory("${VALID_BINARY_DIR}") + +if(EXISTS "${VALID_BINARY_DIR}") + message(FATAL_ERROR "valid_binary_dir should have been removed") +endif() + +# make sure ctest removes build directories recursively +set(DEEP_BINARY_DIR "${CTEST_BINARY_DIRECTORY}/deep_binary_dir") +file(MAKE_DIRECTORY "${DEEP_BINARY_DIR}") +file(WRITE "${DEEP_BINARY_DIR}/CMakeCache.txt") + +foreach(SUBDIR A Z A/A A/Z Z/A Z/Z) + set(FULL_SUBDIR "${DEEP_BINARY_DIR}/${SUBDIR}") + file(MAKE_DIRECTORY "${FULL_SUBDIR}") + + foreach(SUBFILE A.cpp Z.bat) + set(FULL_SUBFILE "${FULL_SUBDIR}/${SUBFILE}") + file(WRITE "${FULL_SUBFILE}" "I am '${FULL_SUBFILE}'") + endforeach() +endforeach() + +if(NOT EXISTS "${DEEP_BINARY_DIR}" + OR NOT EXISTS "${DEEP_BINARY_DIR}/CMakeCache.txt" + OR NOT EXISTS "${DEEP_BINARY_DIR}/Z/A/Z.bat") + message(FATAL_ERROR "deep_binary_dir precondition failed") +endif() + +ctest_empty_binary_directory("${DEEP_BINARY_DIR}") + +if(EXISTS "${DEEP_BINARY_DIR}") + message(FATAL_ERROR "deep_binary_dir should have been removed") +endif() + +message("TEST_SUCCESS") |