Prior to this change, the DirPermissionDenied.java test used chmod to change directory permissions, which can fail on Windows either because chmod is not a native Windows program/command or because MSys2's implementation of chmod does not work well with Access Control Entries in Windows. Consequently, the DirPermissionDenied.java test fails on Windows, except in specific restrictive cases such as when the test is run using the most recent version of Cygwin.
This patch updates the test so that instead of shelling out to chmod, the test now uses Java APIs to change the directory permission. Key to this change is that depending on whether the filesystem supports POSIX or Access Control Lists, the test decides whether to use the Unix-style file permissions or ACL entries. In the unlikely case that the test is unable to change the directory access as is required by the test, the test bails out with a `SkippedException`. This is required on older versions of Windows, where Administrator accounts implictly have unconditional access to all files, even when there is an attempt to deny them access. I've validated that this test now passes on macOS, Windows 11, and Windows Server 2022 Datacenter. --------- - [x] I confirm that I make this contribution in accordance with the [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). ------------- Commit messages: - Use Java APIs to modify directory permissions instead of using chmod Changes: https://git.openjdk.org/jdk/pull/31372/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=31372&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8385906 Stats: 100 lines in 1 file changed: 86 ins; 7 del; 7 mod Patch: https://git.openjdk.org/jdk/pull/31372.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/31372/head:pull/31372 PR: https://git.openjdk.org/jdk/pull/31372
