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

Reply via email to