Tests/RunCMake/if: Suppress FilePermissions failure on CYGWIN

After a recent update, CYGWIN no longer seems to recognize execute
permission without read permission.
This commit is contained in:
Brad King
2025-06-13 10:36:35 -04:00
parent a098f6b008
commit eafb776fdb
+8 -3
View File
@@ -1,3 +1,8 @@
if(CYGWIN)
set(maybe_exe_readable OWNER_READ)
else()
set(maybe_exe_readable "")
endif()
file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/readable.txt" file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/readable.txt"
"${CMAKE_CURRENT_BINARY_DIR}/writable.txt" "${CMAKE_CURRENT_BINARY_DIR}/writable.txt"
@@ -10,7 +15,7 @@ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/writable.txt" "foo")
file(CHMOD "${CMAKE_CURRENT_BINARY_DIR}/writable.txt" PERMISSIONS OWNER_WRITE GROUP_WRITE) file(CHMOD "${CMAKE_CURRENT_BINARY_DIR}/writable.txt" PERMISSIONS OWNER_WRITE GROUP_WRITE)
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/executable.txt" "foo") file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/executable.txt" "foo")
file(CHMOD "${CMAKE_CURRENT_BINARY_DIR}/executable.txt" PERMISSIONS OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE) file(CHMOD "${CMAKE_CURRENT_BINARY_DIR}/executable.txt" PERMISSIONS OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE ${maybe_exe_readable})
if(NOT WIN32) if(NOT WIN32)
file(REMOVE_RECURSE file(REMOVE_RECURSE
@@ -67,7 +72,7 @@ else()
endif() endif()
if(NOT IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/executable.txt" if(NOT IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/executable.txt"
OR IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/executable.txt" OR (IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/executable.txt" AND NOT maybe_exe_readable)
OR IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/executable.txt") OR IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/executable.txt")
cleanup() cleanup()
message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/executable.txt\" failed") message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/executable.txt\" failed")
@@ -149,7 +154,7 @@ if(UNIX)
endif() endif()
if(NOT IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-executable.txt" if(NOT IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-executable.txt"
OR IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-executable.txt" OR (IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-executable.txt" AND NOT maybe_exe_readable)
OR IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-executable.txt") OR IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-executable.txt")
cleanup() cleanup()
message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/link-to-executable.txt\" failed") message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/link-to-executable.txt\" failed")