You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Karl Heinz Marbaise (Jira)" <ji...@apache.org> on 2022/07/30 10:56:00 UTC

[jira] [Updated] (SUREFIRE-2113) @TempDir does not correctly work

     [ https://issues.apache.org/jira/browse/SUREFIRE-2113?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Karl Heinz Marbaise updated SUREFIRE-2113:
------------------------------------------
    Description: 
Having the following test:
{code:java}
class TempDirTest {
  @Test
  void testTempDir(@TempDir Path tmpdir) {
    System.out.println("@TempDir : " + tmpdir);
    System.out.println("java.io.tmpdir : " + System.getProperty("java.io.tmpdir"));

    Path actual = tmpdir.getParent().toAbsolutePath();
    Path expected = Path.of(System.getProperty("java.io.tmpdir"));

    Assertions.assertEquals(expected, actual);
  }
}
{code}
If I run via:
{code}
mvn -Djava.io.tmpdir=/tmp/custom clean test
{code}
within the following environment:
{code}
Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
Maven home: /Users/khm/tools/maven
Java version: 11.0.15, vendor: Azul Systems, Inc., runtime: /Users/khm/.sdkman/candidates/java/11.0.15-zulu/zulu-11.jdk/Contents/Home
Default locale: en_DE, platform encoding: UTF-8
OS name: "mac os x", version: "12.4", arch: "aarch64", family: "mac"
{code}
The given test succeeds.

If I use the following environment (changed JDK version):
{code}
Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
Maven home: /Users/khm/tools/maven
Java version: 17.0.4, vendor: Azul Systems, Inc., runtime: /Users/khm/.sdkman/candidates/java/17.0.4-zulu/zulu-17.jdk/Contents/Home
Default locale: en_DE, platform encoding: UTF-8
OS name: "mac os x", version: "12.4", arch: "aarch64", family: "mac"
{code}
The given test fails:
{code}
[INFO] -------------------------------------------------------
[INFO] Running org.example.TempDirTest
@TempDir : /var/folders/wj/73qxv5hd6p573p9ytbf4kcgh0000gn/T/junit2987236559648574880
java.io.tmpdir : /tmp/custom
[ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.027 s <<< FAILURE! - in org.example.TempDirTest
[ERROR] testTempDir{Path}  Time elapsed: 0.023 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: </tmp/custom> but was: </var/folders/wj/73qxv5hd6p573p9ytbf4kcgh0000gn/T>
	at org.example.TempDirTest.testTempDir(TempDirTest.java:18)

[INFO] 
[INFO] Results:
{code}
I've checked that with different combinations:

* Maven 3.8.6
* JUnit Jupiter 5.8.2 / 5.9.0
* Maven Surefire Plugin Version:
  * 2.22.2
  * 3.0.0-M7
  * [Platform Maven Plugin](https://github.com/sormuras/junit-platform-maven-plugin)

I have create a full [working example](https://github.com/khmarbaise/tempdir-annotation) which contains appropriate named branches for the different combinations.

I've also tested the same combinations with JDK 17/11 from liberica with the same result. Also with JDK18 the test fails.

After more checking I found out that via the standalone launcher, there is no problem at all. (no difference between jdk versions).
{code}
java -Djava.io.tmpdir=/tmp/custom -jar ~/.m2/repository/org/junit/platform/junit-platform-console-standalone/1.9.0/junit-platform-console-standalone-1.9.0.jar -cp classes:target/test-classes --scan-classpath
{code}
The output:
{code}
@TempDir : /tmp/custom/junit17756560401872268189
java.io.tmpdir : /tmp/custom

Thanks for using JUnit! Support its development at https://junit.org/sponsoring

╷
├─ JUnit Jupiter ✔
│  └─ TempDirTest ✔
│     └─ testTempDir(Path) ✔
├─ JUnit Vintage ✔
└─ JUnit Platform Suite ✔

Test run finished after 51 ms
[         4 containers found      ]
[         0 containers skipped    ]
[         4 containers started    ]
[         0 containers aborted    ]
[         4 containers successful ]
[         0 containers failed     ]
[         1 tests found           ]
[         0 tests skipped         ]
[         1 tests started         ]
[         0 tests aborted         ]
[         1 tests successful      ]
[         0 tests failed          ]

{code}
Has someone an Idea what could cause such thing?

  was:
Having the following test:
{code:java}
class TempDirTest {
  @Test
  void testTempDir(@TempDir Path tmpdir) {
    System.out.println("@TempDir : " + tmpdir);
    System.out.println("java.io.tmpdir : " + System.getProperty("java.io.tmpdir"));

    Path actual = tmpdir.getParent().toAbsolutePath();
    Path expected = Path.of(System.getProperty("java.io.tmpdir"));

    Assertions.assertEquals(expected, actual);
  }
}
{code}
If I run via:
{code}
mvn -Djava.io.tmpdir=/tmp/custom clean test
{code}
within the following environment:
{code}
Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
Maven home: /Users/khm/tools/maven
Java version: 11.0.15, vendor: Azul Systems, Inc., runtime: /Users/khm/.sdkman/candidates/java/11.0.15-zulu/zulu-11.jdk/Contents/Home
Default locale: en_DE, platform encoding: UTF-8
OS name: "mac os x", version: "12.4", arch: "aarch64", family: "mac"
```
The given test succeeds.

If I use the following environment (changed JDK version):
{code}
Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
Maven home: /Users/khm/tools/maven
Java version: 17.0.4, vendor: Azul Systems, Inc., runtime: /Users/khm/.sdkman/candidates/java/17.0.4-zulu/zulu-17.jdk/Contents/Home
Default locale: en_DE, platform encoding: UTF-8
OS name: "mac os x", version: "12.4", arch: "aarch64", family: "mac"
{code}
The given test fails:
{code}
[INFO] -------------------------------------------------------
[INFO] Running org.example.TempDirTest
@TempDir : /var/folders/wj/73qxv5hd6p573p9ytbf4kcgh0000gn/T/junit2987236559648574880
java.io.tmpdir : /tmp/custom
[ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.027 s <<< FAILURE! - in org.example.TempDirTest
[ERROR] testTempDir{Path}  Time elapsed: 0.023 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: </tmp/custom> but was: </var/folders/wj/73qxv5hd6p573p9ytbf4kcgh0000gn/T>
	at org.example.TempDirTest.testTempDir(TempDirTest.java:18)

[INFO] 
[INFO] Results:
{code}
I've checked that with different combinations:

* Maven 3.8.6
* JUnit Jupiter 5.8.2 / 5.9.0
* Maven Surefire Plugin Version:
  * 2.22.2
  * 3.0.0-M7
  * [Platform Maven Plugin](https://github.com/sormuras/junit-platform-maven-plugin)

I have create a full [working example](https://github.com/khmarbaise/tempdir-annotation) which contains appropriate named branches for the different combinations.

I've also tested the same combinations with JDK 17/11 from liberica with the same result. Also with JDK18 the test fails.

After more checking I found out that via the standalone launcher, there is no problem at all. (no difference between jdk versions).
{code}
java -Djava.io.tmpdir=/tmp/custom -jar ~/.m2/repository/org/junit/platform/junit-platform-console-standalone/1.9.0/junit-platform-console-standalone-1.9.0.jar -cp classes:target/test-classes --scan-classpath
{code}
The output:
{code}
@TempDir : /tmp/custom/junit17756560401872268189
java.io.tmpdir : /tmp/custom

Thanks for using JUnit! Support its development at https://junit.org/sponsoring

╷
├─ JUnit Jupiter ✔
│  └─ TempDirTest ✔
│     └─ testTempDir(Path) ✔
├─ JUnit Vintage ✔
└─ JUnit Platform Suite ✔

Test run finished after 51 ms
[         4 containers found      ]
[         0 containers skipped    ]
[         4 containers started    ]
[         0 containers aborted    ]
[         4 containers successful ]
[         0 containers failed     ]
[         1 tests found           ]
[         0 tests skipped         ]
[         1 tests started         ]
[         0 tests aborted         ]
[         1 tests successful      ]
[         0 tests failed          ]

{code}
Has someone an Idea what could cause such thing?


> @TempDir does not correctly work
> --------------------------------
>
>                 Key: SUREFIRE-2113
>                 URL: https://issues.apache.org/jira/browse/SUREFIRE-2113
>             Project: Maven Surefire
>          Issue Type: Bug
>          Components: JUnit 5.x support
>    Affects Versions: 2.22.2, 3.0.0-M7
>            Reporter: Karl Heinz Marbaise
>            Priority: Major
>
> Having the following test:
> {code:java}
> class TempDirTest {
>   @Test
>   void testTempDir(@TempDir Path tmpdir) {
>     System.out.println("@TempDir : " + tmpdir);
>     System.out.println("java.io.tmpdir : " + System.getProperty("java.io.tmpdir"));
>     Path actual = tmpdir.getParent().toAbsolutePath();
>     Path expected = Path.of(System.getProperty("java.io.tmpdir"));
>     Assertions.assertEquals(expected, actual);
>   }
> }
> {code}
> If I run via:
> {code}
> mvn -Djava.io.tmpdir=/tmp/custom clean test
> {code}
> within the following environment:
> {code}
> Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
> Maven home: /Users/khm/tools/maven
> Java version: 11.0.15, vendor: Azul Systems, Inc., runtime: /Users/khm/.sdkman/candidates/java/11.0.15-zulu/zulu-11.jdk/Contents/Home
> Default locale: en_DE, platform encoding: UTF-8
> OS name: "mac os x", version: "12.4", arch: "aarch64", family: "mac"
> {code}
> The given test succeeds.
> If I use the following environment (changed JDK version):
> {code}
> Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
> Maven home: /Users/khm/tools/maven
> Java version: 17.0.4, vendor: Azul Systems, Inc., runtime: /Users/khm/.sdkman/candidates/java/17.0.4-zulu/zulu-17.jdk/Contents/Home
> Default locale: en_DE, platform encoding: UTF-8
> OS name: "mac os x", version: "12.4", arch: "aarch64", family: "mac"
> {code}
> The given test fails:
> {code}
> [INFO] -------------------------------------------------------
> [INFO] Running org.example.TempDirTest
> @TempDir : /var/folders/wj/73qxv5hd6p573p9ytbf4kcgh0000gn/T/junit2987236559648574880
> java.io.tmpdir : /tmp/custom
> [ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.027 s <<< FAILURE! - in org.example.TempDirTest
> [ERROR] testTempDir{Path}  Time elapsed: 0.023 s  <<< FAILURE!
> org.opentest4j.AssertionFailedError: expected: </tmp/custom> but was: </var/folders/wj/73qxv5hd6p573p9ytbf4kcgh0000gn/T>
> 	at org.example.TempDirTest.testTempDir(TempDirTest.java:18)
> [INFO] 
> [INFO] Results:
> {code}
> I've checked that with different combinations:
> * Maven 3.8.6
> * JUnit Jupiter 5.8.2 / 5.9.0
> * Maven Surefire Plugin Version:
>   * 2.22.2
>   * 3.0.0-M7
>   * [Platform Maven Plugin](https://github.com/sormuras/junit-platform-maven-plugin)
> I have create a full [working example](https://github.com/khmarbaise/tempdir-annotation) which contains appropriate named branches for the different combinations.
> I've also tested the same combinations with JDK 17/11 from liberica with the same result. Also with JDK18 the test fails.
> After more checking I found out that via the standalone launcher, there is no problem at all. (no difference between jdk versions).
> {code}
> java -Djava.io.tmpdir=/tmp/custom -jar ~/.m2/repository/org/junit/platform/junit-platform-console-standalone/1.9.0/junit-platform-console-standalone-1.9.0.jar -cp classes:target/test-classes --scan-classpath
> {code}
> The output:
> {code}
> @TempDir : /tmp/custom/junit17756560401872268189
> java.io.tmpdir : /tmp/custom
> Thanks for using JUnit! Support its development at https://junit.org/sponsoring
> ╷
> ├─ JUnit Jupiter ✔
> │  └─ TempDirTest ✔
> │     └─ testTempDir(Path) ✔
> ├─ JUnit Vintage ✔
> └─ JUnit Platform Suite ✔
> Test run finished after 51 ms
> [         4 containers found      ]
> [         0 containers skipped    ]
> [         4 containers started    ]
> [         0 containers aborted    ]
> [         4 containers successful ]
> [         0 containers failed     ]
> [         1 tests found           ]
> [         0 tests skipped         ]
> [         1 tests started         ]
> [         0 tests aborted         ]
> [         1 tests successful      ]
> [         0 tests failed          ]
> {code}
> Has someone an Idea what could cause such thing?



--
This message was sent by Atlassian Jira
(v8.20.10#820010)