From a99c60b0edde8fc71def63c88c5a736e67fdde0a Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 25 May 2007 11:41:37 -0400 Subject: ENH: Added testing of REGEX option to INSTALL(DIRECTORY). Added tests to cover all forms of old-style install commands. --- Tests/SimpleInstall/CMakeLists.txt | 55 ++++++++++++++++++++-------- Tests/SimpleInstall/inst.cxx | 2 + Tests/SimpleInstall/scripts/CMakeLists.txt | 1 + Tests/SimpleInstallS2/CMakeLists.txt | 55 ++++++++++++++++++++-------- Tests/SimpleInstallS2/inst.cxx | 2 + Tests/SimpleInstallS2/scripts/CMakeLists.txt | 1 + 6 files changed, 84 insertions(+), 32 deletions(-) create mode 100644 Tests/SimpleInstall/scripts/CMakeLists.txt create mode 100644 Tests/SimpleInstallS2/scripts/CMakeLists.txt diff --git a/Tests/SimpleInstall/CMakeLists.txt b/Tests/SimpleInstall/CMakeLists.txt index 93154c0..36ca945 100644 --- a/Tests/SimpleInstall/CMakeLists.txt +++ b/Tests/SimpleInstall/CMakeLists.txt @@ -84,11 +84,6 @@ IF(STAGE2) ENDIF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/include/Debug/lib1release.h") # Check for failure of directory installation. - IF(WIN32 AND NOT CYGWIN) - SET(BAT .bat) - ELSE(WIN32 AND NOT CYGWIN) - SET(BAT) - ENDIF(WIN32 AND NOT CYGWIN) IF(NOT EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/TestSubDir/TSD.h") MESSAGE(FATAL_ERROR "Directory installation did not install TSD.h") ENDIF(NOT EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/TestSubDir/TSD.h") @@ -98,17 +93,32 @@ IF(STAGE2) IF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/CVS") MESSAGE(FATAL_ERROR "Directory installation installed CVS directory.") ENDIF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/CVS") - EXECUTE_PROCESS( - COMMAND "${CMAKE_INSTALL_PREFIX}/MyTest/share/sample_script${BAT}" - RESULT_VARIABLE SAMPLE_SCRIPT_RESULT - OUTPUT_VARIABLE SAMPLE_SCRIPT_OUTPUT - ) - IF(NOT "${SAMPLE_SCRIPT_RESULT}" MATCHES "^0$") - MESSAGE(FATAL_ERROR "Sample script failed: [${SAMPLE_SCRIPT_RESULT}]") - ENDIF(NOT "${SAMPLE_SCRIPT_RESULT}" MATCHES "^0$") - IF(NOT "${SAMPLE_SCRIPT_OUTPUT}" MATCHES "Sample Script Output") - MESSAGE(FATAL_ERROR "Bad sample script output: [${SAMPLE_SCRIPT_OUTPUT}]") - ENDIF(NOT "${SAMPLE_SCRIPT_OUTPUT}" MATCHES "Sample Script Output") + IF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/CMakeLists.txt") + MESSAGE(FATAL_ERROR "Directory installation installed CMakeLists.txt.") + ENDIF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/CMakeLists.txt") + + # Check that scripts properly installed. + IF(WIN32 AND NOT CYGWIN) + SET(BAT .bat) + ELSE(WIN32 AND NOT CYGWIN) + SET(BAT) + ENDIF(WIN32 AND NOT CYGWIN) + FOREACH(loc share share/old1 share/old2 share/old3) + SET(CUR_SCRIPT "${CMAKE_INSTALL_PREFIX}/MyTest/${loc}/sample_script${BAT}") + EXECUTE_PROCESS( + COMMAND ${CUR_SCRIPT} + RESULT_VARIABLE SAMPLE_SCRIPT_RESULT + OUTPUT_VARIABLE SAMPLE_SCRIPT_OUTPUT + ) + IF(NOT "${SAMPLE_SCRIPT_RESULT}" MATCHES "^0$") + MESSAGE(FATAL_ERROR + "Sample script [${CUR_SCRIPT}] failed: [${SAMPLE_SCRIPT_RESULT}]") + ENDIF(NOT "${SAMPLE_SCRIPT_RESULT}" MATCHES "^0$") + IF(NOT "${SAMPLE_SCRIPT_OUTPUT}" MATCHES "Sample Script Output") + MESSAGE(FATAL_ERROR + "Bad sample script [${CUR_SCRIPT}] output: [${SAMPLE_SCRIPT_OUTPUT}]") + ENDIF(NOT "${SAMPLE_SCRIPT_OUTPUT}" MATCHES "Sample Script Output") + ENDFOREACH(loc) # Check for failure of empty directory installation. IF(NOT EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/empty") @@ -125,6 +135,9 @@ IF(STAGE2) INSTALL_TARGETS(/MyTest/bin SimpleInstallS2) ELSE(STAGE2) + # Wipe out the install directory to do a fresh test. + FILE(REMOVE_RECURSE ${CMAKE_INSTALL_PREFIX}/MyTest) + # this is stage 1, so create libraries and modules and install everything ADD_LIBRARY(test1 STATIC lib1.cxx) ADD_LIBRARY(test2 SHARED lib2.cxx) @@ -167,7 +180,16 @@ ELSE(STAGE2) PERMISSIONS OWNER_READ OWNER_WRITE RENAME lib2renamed.h ) + + # Test old-style install commands. INSTALL_FILES(/MyTest/include FILES lib3.h) + INSTALL_FILES(/MyTest/include/old .h lib3) + INSTALL_FILES(/MyTest/include/old "^lib2.h$") + INSTALL_PROGRAMS(/MyTest/share/old1 FILES + scripts/sample_script scripts/sample_script.bat) + INSTALL_PROGRAMS(/MyTest/share/old2 + scripts/sample_script scripts/sample_script.bat) + ADD_SUBDIRECTORY(scripts) # Test optional installation. INSTALL(FILES does_not_exist.h DESTINATION MyTest/include/foo OPTIONAL) @@ -186,6 +208,7 @@ ELSE(STAGE2) INSTALL( DIRECTORY TestSubDir scripts/ DESTINATION MyTest/share PATTERN "CVS" EXCLUDE + REGEX "\\.txt$" EXCLUDE PATTERN "scripts/*" PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ ) diff --git a/Tests/SimpleInstall/inst.cxx b/Tests/SimpleInstall/inst.cxx index 3faf924..7f2962d 100644 --- a/Tests/SimpleInstall/inst.cxx +++ b/Tests/SimpleInstall/inst.cxx @@ -4,6 +4,8 @@ # include # include # include +# include +# include #else # include "lib1.h" # include "lib2.h" diff --git a/Tests/SimpleInstall/scripts/CMakeLists.txt b/Tests/SimpleInstall/scripts/CMakeLists.txt new file mode 100644 index 0000000..d46c165 --- /dev/null +++ b/Tests/SimpleInstall/scripts/CMakeLists.txt @@ -0,0 +1 @@ +INSTALL_PROGRAMS(/MyTest/share/old3 "^sample_script(\\.bat)?$") diff --git a/Tests/SimpleInstallS2/CMakeLists.txt b/Tests/SimpleInstallS2/CMakeLists.txt index 93154c0..36ca945 100644 --- a/Tests/SimpleInstallS2/CMakeLists.txt +++ b/Tests/SimpleInstallS2/CMakeLists.txt @@ -84,11 +84,6 @@ IF(STAGE2) ENDIF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/include/Debug/lib1release.h") # Check for failure of directory installation. - IF(WIN32 AND NOT CYGWIN) - SET(BAT .bat) - ELSE(WIN32 AND NOT CYGWIN) - SET(BAT) - ENDIF(WIN32 AND NOT CYGWIN) IF(NOT EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/TestSubDir/TSD.h") MESSAGE(FATAL_ERROR "Directory installation did not install TSD.h") ENDIF(NOT EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/TestSubDir/TSD.h") @@ -98,17 +93,32 @@ IF(STAGE2) IF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/CVS") MESSAGE(FATAL_ERROR "Directory installation installed CVS directory.") ENDIF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/CVS") - EXECUTE_PROCESS( - COMMAND "${CMAKE_INSTALL_PREFIX}/MyTest/share/sample_script${BAT}" - RESULT_VARIABLE SAMPLE_SCRIPT_RESULT - OUTPUT_VARIABLE SAMPLE_SCRIPT_OUTPUT - ) - IF(NOT "${SAMPLE_SCRIPT_RESULT}" MATCHES "^0$") - MESSAGE(FATAL_ERROR "Sample script failed: [${SAMPLE_SCRIPT_RESULT}]") - ENDIF(NOT "${SAMPLE_SCRIPT_RESULT}" MATCHES "^0$") - IF(NOT "${SAMPLE_SCRIPT_OUTPUT}" MATCHES "Sample Script Output") - MESSAGE(FATAL_ERROR "Bad sample script output: [${SAMPLE_SCRIPT_OUTPUT}]") - ENDIF(NOT "${SAMPLE_SCRIPT_OUTPUT}" MATCHES "Sample Script Output") + IF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/CMakeLists.txt") + MESSAGE(FATAL_ERROR "Directory installation installed CMakeLists.txt.") + ENDIF(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/CMakeLists.txt") + + # Check that scripts properly installed. + IF(WIN32 AND NOT CYGWIN) + SET(BAT .bat) + ELSE(WIN32 AND NOT CYGWIN) + SET(BAT) + ENDIF(WIN32 AND NOT CYGWIN) + FOREACH(loc share share/old1 share/old2 share/old3) + SET(CUR_SCRIPT "${CMAKE_INSTALL_PREFIX}/MyTest/${loc}/sample_script${BAT}") + EXECUTE_PROCESS( + COMMAND ${CUR_SCRIPT} + RESULT_VARIABLE SAMPLE_SCRIPT_RESULT + OUTPUT_VARIABLE SAMPLE_SCRIPT_OUTPUT + ) + IF(NOT "${SAMPLE_SCRIPT_RESULT}" MATCHES "^0$") + MESSAGE(FATAL_ERROR + "Sample script [${CUR_SCRIPT}] failed: [${SAMPLE_SCRIPT_RESULT}]") + ENDIF(NOT "${SAMPLE_SCRIPT_RESULT}" MATCHES "^0$") + IF(NOT "${SAMPLE_SCRIPT_OUTPUT}" MATCHES "Sample Script Output") + MESSAGE(FATAL_ERROR + "Bad sample script [${CUR_SCRIPT}] output: [${SAMPLE_SCRIPT_OUTPUT}]") + ENDIF(NOT "${SAMPLE_SCRIPT_OUTPUT}" MATCHES "Sample Script Output") + ENDFOREACH(loc) # Check for failure of empty directory installation. IF(NOT EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/empty") @@ -125,6 +135,9 @@ IF(STAGE2) INSTALL_TARGETS(/MyTest/bin SimpleInstallS2) ELSE(STAGE2) + # Wipe out the install directory to do a fresh test. + FILE(REMOVE_RECURSE ${CMAKE_INSTALL_PREFIX}/MyTest) + # this is stage 1, so create libraries and modules and install everything ADD_LIBRARY(test1 STATIC lib1.cxx) ADD_LIBRARY(test2 SHARED lib2.cxx) @@ -167,7 +180,16 @@ ELSE(STAGE2) PERMISSIONS OWNER_READ OWNER_WRITE RENAME lib2renamed.h ) + + # Test old-style install commands. INSTALL_FILES(/MyTest/include FILES lib3.h) + INSTALL_FILES(/MyTest/include/old .h lib3) + INSTALL_FILES(/MyTest/include/old "^lib2.h$") + INSTALL_PROGRAMS(/MyTest/share/old1 FILES + scripts/sample_script scripts/sample_script.bat) + INSTALL_PROGRAMS(/MyTest/share/old2 + scripts/sample_script scripts/sample_script.bat) + ADD_SUBDIRECTORY(scripts) # Test optional installation. INSTALL(FILES does_not_exist.h DESTINATION MyTest/include/foo OPTIONAL) @@ -186,6 +208,7 @@ ELSE(STAGE2) INSTALL( DIRECTORY TestSubDir scripts/ DESTINATION MyTest/share PATTERN "CVS" EXCLUDE + REGEX "\\.txt$" EXCLUDE PATTERN "scripts/*" PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ ) diff --git a/Tests/SimpleInstallS2/inst.cxx b/Tests/SimpleInstallS2/inst.cxx index 3faf924..7f2962d 100644 --- a/Tests/SimpleInstallS2/inst.cxx +++ b/Tests/SimpleInstallS2/inst.cxx @@ -4,6 +4,8 @@ # include # include # include +# include +# include #else # include "lib1.h" # include "lib2.h" diff --git a/Tests/SimpleInstallS2/scripts/CMakeLists.txt b/Tests/SimpleInstallS2/scripts/CMakeLists.txt new file mode 100644 index 0000000..d46c165 --- /dev/null +++ b/Tests/SimpleInstallS2/scripts/CMakeLists.txt @@ -0,0 +1 @@ +INSTALL_PROGRAMS(/MyTest/share/old3 "^sample_script(\\.bat)?$") -- cgit v0.12