Bladeren bron

ENH: Test file(COPY) failure cases

This tests some cases of bad arguments to the file(COPY) signature.
It checks that the proper error messages are produced.
Brad King 16 jaren geleden
bovenliggende
commit
e0d3339e65

+ 1 - 0
Tests/CMakeTests/CMakeLists.txt

@@ -17,6 +17,7 @@ AddCMakeTest(Toolchain "")
 AddCMakeTest(GetFilenameComponentRealpath "")
 AddCMakeTest(Version "")
 AddCMakeTest(Message "")
+AddCMakeTest(File "")
 
 SET(GetPrerequisites_PreArgs
   "-DCTEST_CONFIGURATION_TYPE:STRING=\\\${CTEST_CONFIGURATION_TYPE}"

+ 1 - 0
Tests/CMakeTests/File-Copy-BadArg.cmake

@@ -0,0 +1 @@
+file(COPY FileTest.cmake DESTINATION tmp PATTERN * BADARG)

+ 1 - 0
Tests/CMakeTests/File-Copy-BadPerm.cmake

@@ -0,0 +1 @@
+file(COPY FileTest.cmake DESTINATION tmp FILE_PERMISSIONS BADPERM)

+ 1 - 0
Tests/CMakeTests/File-Copy-BadRegex.cmake

@@ -0,0 +1 @@
+file(COPY FileTest.cmake DESTINATION tmp REGEX "(")

+ 1 - 0
Tests/CMakeTests/File-Copy-EarlyArg.cmake

@@ -0,0 +1 @@
+file(COPY FileTest.cmake DESTINATION tmp PERMISSIONS)

+ 1 - 0
Tests/CMakeTests/File-Copy-LateArg.cmake

@@ -0,0 +1 @@
+file(COPY FileTest.cmake DESTINATION tmp PATTERN * FILE_PERMISSIONS)

+ 1 - 0
Tests/CMakeTests/File-Copy-NoDest.cmake

@@ -0,0 +1 @@
+file(COPY FileTest.cmake)

+ 1 - 0
Tests/CMakeTests/File-Copy-NoFile.cmake

@@ -0,0 +1 @@
+file(COPY does_not_exist.txt DESTINATION tmp)

+ 50 - 0
Tests/CMakeTests/FileTest.cmake.in

@@ -0,0 +1,50 @@
+set(Copy-BadArg-RESULT 1)
+set(Copy-BadArg-STDERR "unknown argument \"BADARG\"")
+set(Copy-BadPerm-RESULT 1)
+set(Copy-BadPerm-STDERR "COPY given invalid permission \"BADPERM\"")
+set(Copy-BadRegex-RESULT 1)
+set(Copy-BadRegex-STDERR "could not compile REGEX")
+set(Copy-EarlyArg-RESULT 1)
+set(Copy-EarlyArg-STDERR "option PERMISSIONS may not appear before")
+set(Copy-LateArg-RESULT 1)
+set(Copy-LateArg-STDERR "option FILE_PERMISSIONS may not appear after")
+set(Copy-NoDest-RESULT 1)
+set(Copy-NoDest-STDERR "given no DESTINATION")
+set(Copy-NoFile-RESULT 1)
+set(Copy-NoFile-STDERR "COPY cannot find .*/does_not_exist\\.txt")
+
+foreach(test
+    Copy-BadArg
+    Copy-BadPerm
+    Copy-BadRegex
+    Copy-EarlyArg
+    Copy-LateArg
+    Copy-NoDest
+    Copy-NoFile
+    )
+  message(STATUS "Test ${test}...")
+  execute_process(
+    COMMAND ${CMAKE_COMMAND} -P
+    "@CMAKE_CURRENT_SOURCE_DIR@/File-${test}.cmake"
+    WORKING_DIRECTORY "@CMAKE_CURRENT_BINARY_DIR@"
+    OUTPUT_VARIABLE stdout
+    ERROR_VARIABLE stderr
+    RESULT_VARIABLE result
+    )
+  string(REGEX REPLACE "\n" "\n out> " out " out> ${stdout}")
+  string(REGEX REPLACE "\n" "\n err> " err " err> ${stderr}")
+  if(NOT "${result}" STREQUAL ${${test}-RESULT})
+    message(FATAL_ERROR
+      "Test ${test} result is [${result}], not [${${test}-RESULT}].\n"
+      "Test ${test} output:\n"
+      "${out}\n"
+      "${err}")
+  endif()
+  if(${test}-STDERR AND NOT "${err}" MATCHES "${${test}-STDERR}")
+    message(FATAL_ERROR
+      "Test ${test} stderr does not match\n  ${${test}-STDERR}\n"
+      "Test ${test} output:\n"
+      "${out}\n"
+      "${err}")
+  endif()
+endforeach()