RFR: 7903953: Use scratch directory for JUnit's TempDir annotation
Jaikiran Pai
jpai at openjdk.org
Mon Feb 24 09:42:07 UTC 2025
On Mon, 24 Feb 2025 08:20:41 GMT, Christian Stein <cstein at openjdk.org> wrote:
> Please review this change to use `jtreg`'s scratch directory for JUnit's `@TempDir` annotation.
>
> Prior to this change, the standard implementation of JUnit Jupiter using the system default temporary directory is active, effectively decoupling the location of "interesting on failure" files from `jtreg`:
>> When `jtreg` executes a test, the current directory for the test is set to a scratch directory so that the test can easily write any temporary files.
>
> Find more details about `jtreg`'s scratch directory at https://openjdk.org/jtreg/faq.html#scratch-directory
>
> In addition to use the current working directory for `@TempDir` annotated paths, this change also switches off JUnit's built-in cleanup of temporary files - leaving it to `jtreg` to care about it, see for example the help message for the `-retain` command-line option:
>
>
> -retain | -retain:<pass,fail,error,all,file-pattern>,...
> Specify files to be retained after each test completes
> executing. If -retain is not specified, only the files from
> the last test executed will be retained. If -retain is
> specified with no argument, all files will be retained.
> Otherwise, the files may be described by one or more of the
> following values:
> none Do not retain any of the files generated by each test
> pass Retain files generated by tests that pass
> fail Retain files generated by tests that fail
> error Retain files generated by tests that caused an error
> all Retain all files generated by each test
> file-pattern Retain files that match a specific filename. The name
> may contain '*' to match any sequence of characters. For
> example, result.* or *.err.
test/junitTrace/JupiterTempDir.java line 39:
> 37: class JupiterTempDir {
> 38: @Test
> 39: @EnabledIfSystemProperty(named = "test.name", matches = "JupiterTempDir.java")
Hello Christian, why is this needed in this test?
test/junitTrace/JupiterTempDir.java line 44:
> 42: var expected = currentWorkingDirectory.toAbsolutePath().toString();
> 43: var actual = temporary.getParent().toAbsolutePath().toString();
> 44: Assertions.assertEquals(expected, actual, "Unexpected root for temporary files");
Would `Files.isSameFile(currentWorkingDirectory, temporary.getParent())` be more appropriate here?
-------------
PR Review Comment: https://git.openjdk.org/jtreg/pull/248#discussion_r1967288708
PR Review Comment: https://git.openjdk.org/jtreg/pull/248#discussion_r1967290426
More information about the jtreg-dev
mailing list