Browse Source

Tests/RunCMake/if: Optionally skip checking write-only directory permissions

Some file systems do not support this.
Brad King 9 months ago
parent
commit
a5f5a87482

+ 3 - 0
Tests/RunCMake/CMakeLists.txt

@@ -708,6 +708,9 @@ add_RunCMake_test(function)
 add_RunCMake_test(block)
 add_RunCMake_test(get_filename_component)
 add_RunCMake_test(get_property)
+if(DEFINED CMake_TEST_NO_WRITE_ONLY_DIR)
+  list(APPEND if_ARGS -DCMake_TEST_NO_WRITE_ONLY_DIR=${CMake_TEST_NO_WRITE_ONLY_DIR})
+endif()
 add_RunCMake_test(if -DMSYS=${MSYS})
 add_RunCMake_test(include)
 add_RunCMake_test(include_directories)

+ 14 - 10
Tests/RunCMake/if/FilePermissions.cmake

@@ -81,11 +81,13 @@ else()
     message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/readable-dir\" failed")
   endif()
 
-  if(NOT IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/writable-dir"
-      OR IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/writable-dir"
-      OR IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/writable-dir")
-    cleanup()
-    message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/writable-dir\" failed")
+  if(NOT NO_WRITABLE_DIR)
+    if(NOT IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/writable-dir"
+        OR IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/writable-dir"
+        OR IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/writable-dir")
+      cleanup()
+      message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/writable-dir\" failed")
+    endif()
   endif()
 
   if(NOT IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/executable-dir"
@@ -161,11 +163,13 @@ if(UNIX)
     message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/link-to-readable-dir\" failed")
   endif()
 
-  if(NOT IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-writable-dir"
-     OR IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-writable-dir"
-     OR IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-writable-dir")
-    cleanup()
-    message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/link-to-writable-dir\" failed")
+  if(NOT NO_WRITABLE_DIR)
+    if(NOT IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-writable-dir"
+       OR IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-writable-dir"
+       OR IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-writable-dir")
+      cleanup()
+      message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/link-to-writable-dir\" failed")
+    endif()
   endif()
 
   if(NOT IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-executable-dir"

+ 1 - 1
Tests/RunCMake/if/RunCMakeTest.cmake

@@ -7,7 +7,7 @@ if(NOT MSYS)
   # if real user is root, tests are irrelevant
   get_unix_uid(uid)
   if(NOT uid STREQUAL "0")
-    run_cmake(FilePermissions)
+    run_cmake_with_options(FilePermissions -DNO_WRITABLE_DIR=${CMake_TEST_NO_WRITE_ONLY_DIR})
   endif()
 endif()
 run_cmake(IsDirectory)