RFR: 7903988: IDEA plugin: temp directories don't work on Windows [v2]
Jorn Vernee
jvernee at openjdk.org
Wed Apr 16 13:29:56 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 with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains five additional commits since the last revision:
- Merge branch 'master' into WindowsTempVars
- Reorder imports
- review comments
- reduce diff
- Forward TMP TEMP and USERPROFILE to forked process on Windows
-------------
Changes:
- all: https://git.openjdk.org/jtreg/pull/258/files
- new: https://git.openjdk.org/jtreg/pull/258/files/551455c3..8b665eb0
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jtreg&pr=258&range=01
- incr: https://webrevs.openjdk.org/?repo=jtreg&pr=258&range=00-01
Stats: 168 lines in 51 files changed: 8 ins; 1 del; 159 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