summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2023-11-28 14:03:56 (GMT)
committerBrad King <brad.king@kitware.com>2023-11-29 12:55:09 (GMT)
commit9718c312b60e294603c3c352970be3b4c5011877 (patch)
tree0a1bb687f040db8e1d0d37ea54ab99c361269d6b
parent2e82ba70b34fe83db22c3fa276c7968c291ea84c (diff)
downloadCMake-9718c312b60e294603c3c352970be3b4c5011877.zip
CMake-9718c312b60e294603c3c352970be3b4c5011877.tar.gz
CMake-9718c312b60e294603c3c352970be3b4c5011877.tar.bz2
Tests: Avoid leaving behind non-readable directories
Since commit 337bc5662c (if(): add operators IS_READABLE, IS_WRITABLE and IS_EXECUTABLE., 2023-10-21) we create some non-readable directories. CMake 3.28 and below do not know how to delete them, so some nightly builds fail ctest_empty_binary_directory. Add read permission to those directories when we are finished with them.
-rw-r--r--Tests/RunCMake/if/FilePermissions.cmake24
1 files changed, 24 insertions, 0 deletions
diff --git a/Tests/RunCMake/if/FilePermissions.cmake b/Tests/RunCMake/if/FilePermissions.cmake
index f62b107..9edbddb 100644
--- a/Tests/RunCMake/if/FilePermissions.cmake
+++ b/Tests/RunCMake/if/FilePermissions.cmake
@@ -29,34 +29,47 @@ if(NOT WIN32)
file(CHMOD "${CMAKE_CURRENT_BINARY_DIR}/executable-dir" PERMISSIONS OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
endif()
+function(cleanup)
+ if(NOT WIN32)
+ # CMake versions prior to 3.29 did not know how to remove non-readable directories.
+ file(CHMOD "${CMAKE_CURRENT_BINARY_DIR}/writable-dir" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_WRITE)
+ file(CHMOD "${CMAKE_CURRENT_BINARY_DIR}/executable-dir" PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
+ endif()
+endfunction()
+
if(WIN32)
# files are always readable and executable
# directories are always, readable, writable and executable
if(NOT IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/readable.txt"
OR IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/readable.txt")
+ cleanup()
message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/readable.txt\" failed")
endif()
if(NOT IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/executable.txt"
OR IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/executable.txt")
+ cleanup()
message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/executable.txt\" failed")
endif()
else()
if(NOT IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/readable.txt"
OR IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/readable.txt"
OR IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/readable.txt")
+ cleanup()
message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/readable.txt\" failed")
endif()
if(NOT IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/writable.txt"
OR IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/writable.txt"
OR IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/writable.txt")
+ cleanup()
message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/writable.txt\" failed")
endif()
if(NOT IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/executable.txt"
OR IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/executable.txt"
OR IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/executable.txt")
+ cleanup()
message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/executable.txt\" failed")
endif()
@@ -64,18 +77,21 @@ else()
if(NOT IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/readable-dir"
OR IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/readable-dir"
OR IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/readable-dir")
+ cleanup()
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")
endif()
if(NOT IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/executable-dir"
OR IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/executable-dir"
OR IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/executable-dir")
+ cleanup()
message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/executable.txt\" failed")
endif()
endif()
@@ -119,18 +135,21 @@ if(UNIX)
if(NOT IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-readable.txt"
OR IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-readable.txt"
OR IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-readable.txt")
+ cleanup()
message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/link-to-readable.txt\" failed")
endif()
if(NOT IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-writable.txt"
OR IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-writable.txt"
OR IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-writable.txt")
+ cleanup()
message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/link-to-writable.txt\" failed")
endif()
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_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-executable.txt")
+ cleanup()
message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/link-to-executable.txt\" failed")
endif()
@@ -138,18 +157,23 @@ if(UNIX)
if(NOT IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-readable-dir"
OR IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-readable-dir"
OR IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-readable-dir")
+ cleanup()
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")
endif()
if(NOT IS_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-executable-dir"
OR IS_READABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-executable-dir"
OR IS_WRITABLE "${CMAKE_CURRENT_BINARY_DIR}/link-to-executable-dir")
+ cleanup()
message(FATAL_ERROR "checks on \"${CMAKE_CURRENT_BINARY_DIR}/link-to-executable-dir\" failed")
endif()
endif()
+
+cleanup()