RFR: 7903988: IDEA plugin: temp directories don't work on Windows [v3]
Jorn Vernee
jvernee at openjdk.org
Wed Apr 16 14:50:35 UTC 2025
> Copied from the JBS issue:
>
> To find the temporary directory on Windows, one of the environment variables `TMP`, `TEMP`, or `USERPROFILE` is needed [1](https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-gettemppatha#remarks). If these are not set, `C:\WINDOWS` is used as a fallback, but this directory is typically inaccessible (and generally not really a directory you want to leave temp files in).
>
> The IDEA plugin currently doesn't forward these variables to the jtreg process that it starts, resulting in them being unset. For tests that e.g. create temporary files or directories, this result in an `AccessDeniedException` such as:
>
>
> java.nio.file.AccessDeniedException: C:\\WINDOWS\\asdf12599356154200781179
> at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:89)
> at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
> at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108)
> at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:231)
> at java.base/java.nio.file.Files.newByteChannel(Files.java:357)
> at java.base/java.nio.file.Files.createFile(Files.java:609)
> at java.base/java.nio.file.TempFileHelper.create(TempFileHelper.java:132)
> at java.base/java.nio.file.TempFileHelper.createTempFile(TempFileHelper.java:150)
> at java.base/java.nio.file.Files.createTempFile(Files.java:842)
> at TestTempDir.testTempDir(TestTempDir.java:39)
>
>
> The plugin should forward these environment variables on Windows, to make sure that the temporary directory can be found by tests.
>
> Tested locally with a simple test that calls [`Files::createTempFile`](https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/nio/file/Files.html#createTempFile(java.lang.String,java.lang.String,java.nio.file.attribute.FileAttribute...)), and checked that these changes prevent an `AccessDeniedError` from being thrown.
Jorn Vernee has updated the pull request incrementally with one additional commit since the last revision:
fix typo
-------------
Changes:
- all: https://git.openjdk.org/jtreg/pull/258/files
- new: https://git.openjdk.org/jtreg/pull/258/files/8b665eb0..697a8b8a
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jtreg&pr=258&range=02
- incr: https://webrevs.openjdk.org/?repo=jtreg&pr=258&range=01-02
Stats: 4 lines in 1 file changed: 0 ins; 0 del; 4 mod
Patch: https://git.openjdk.org/jtreg/pull/258.diff
Fetch: git fetch https://git.openjdk.org/jtreg.git pull/258/head:pull/258
PR: https://git.openjdk.org/jtreg/pull/258
More information about the jtreg-dev
mailing list