From a5f5a874828037600e6064b025dcbfa6e374978c Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 12 Mar 2025 16:58:17 -0400 Subject: Tests/RunCMake/if: Optionally skip checking write-only directory permissions Some file systems do not support this. --- Tests/RunCMake/CMakeLists.txt | 3 +++ Tests/RunCMake/if/FilePermissions.cmake | 24 ++++++++++++++---------- Tests/RunCMake/if/RunCMakeTest.cmake | 2 +- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 593f481..baa6c53 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/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) diff --git a/Tests/RunCMake/if/FilePermissions.cmake b/Tests/RunCMake/if/FilePermissions.cmake index 9edbddb..72dd11b 100644 --- a/Tests/RunCMake/if/FilePermissions.cmake +++ b/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" diff --git a/Tests/RunCMake/if/RunCMakeTest.cmake b/Tests/RunCMake/if/RunCMakeTest.cmake index 43dfd3c..e3b9b2d 100644 --- a/Tests/RunCMake/if/RunCMakeTest.cmake +++ b/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) -- cgit v0.12