[ https://issues.apache.org/jira/browse/MNG-6947?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Osipov updated MNG-6947: -------------------------------- Description: This has been discovered while using {{MAVENCODEBASE}} with relative paths and symlinks. This is a very subtile bug and I yet don't understand. Here is how to reproduce: Have Maven cloned repo on a symlinked dir: {noformat} osipovmi@deblndw011x:~/var/Projekte/maven (master *=) $ pwd -P /var/osipovmi/Projekte/maven {noformat} and invoke Maven with {{-f}} and a non-normalized path: {noformat} mvn -f $PWD/../maven -V -pl maven-model-builder test {noformat} With Java 8 all tests pass, with Java 11+ the mentioned test fails: {noformat} [ERROR] Tests run: 34, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.086 s <<< FAILURE! - in org.apache.maven.model.interpolation.StringSearchModelInterpolatorTest [ERROR] testInterpolateObjectWithPomFile(org.apache.maven.model.interpolation.StringSearchModelInterpolatorTest) Time elapsed: 0.012 s <<< FAILURE! java.lang.AssertionError: Expected: is (is "/net/home/osipovmi/var/Projekte/maven/maven-model-builder/target" or is "/net/home/osipovmi/var/Projekte/maven/maven-model-builder/./target") but: was "/var/osipovmi/Projekte/maven/maven-model-builder/./target" at org.apache.maven.model.interpolation.StringSearchModelInterpolatorTest.testInterpolateObjectWithPomFile(StringSearchModelInterpolatorTest.java:366) {noformat} I have applied the following patch: {noformat} $ git diff diff --git a/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java b/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java index dbb72c4f7..b2d4b0965 100644 --- a/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java +++ b/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java @@ -356,9 +356,11 @@ public void testInterpolateObjectWithPomFile() ModelBuildingRequest config = createModelBuildingRequest( p ); SimpleProblemCollector collector = new SimpleProblemCollector(); assertProblemFree( collector ); - + System.out.println( baseDir.getAbsolutePath() ); + System.out.println( System.getProperty( "user.dir" ) ); + System.out.println( obj.values.get( "key" ) ); assertThat( baseDir.getAbsolutePath(), is( System.getProperty( "user.dir" ) ) ); assertThat( obj.values.size(), is( 1 ) ); assertThat( (String) obj.values.get( "key" ), is( anyOf( {noformat} and receive: {noformat} Java 8: /net/home/osipovmi/var/Projekte/maven/maven-model-builder /net/home/osipovmi/var/Projekte/maven/maven-model-builder /net/home/osipovmi/var/Projekte/maven/maven-model-builder/./target Java 11: /net/home/osipovmi/var/Projekte/maven/maven-model-builder /net/home/osipovmi/var/Projekte/maven/maven-model-builder /var/osipovmi/Projekte/maven/maven-model-builder/./target Java 14: /net/home/osipovmi/var/Projekte/maven/maven-model-builder /net/home/osipovmi/var/Projekte/maven/maven-model-builder /var/osipovmi/Projekte/maven/maven-model-builder/./target {noformat} When I apply {noformat} $ git diff diff --git a/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java b/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java index dbb72c4f7..b2d4b0965 100644 --- a/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java +++ b/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java @@ -356,9 +356,11 @@ public void testInterpolateObjectWithPomFile() ModelBuildingRequest config = createModelBuildingRequest( p ); SimpleProblemCollector collector = new SimpleProblemCollector(); - interpolator.interpolateObject( obj, model, new File( "." ), config, collector ); + interpolator.interpolateObject( obj, model, new File( System.getProperty( "user.dir" ) ), config, collector ); assertProblemFree( collector ); {noformat} The code works. Unfortunately, I do not know whether this fixes the cause because the test is faulty or just the symptom and the issue is in Core. Is has to be noted that {{user.dir}} is backed by {{getcwd()}} which always returns an absolute, canonical path. All tests perfomed on: {noformat} $ mvn -v Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T20:33:14+02:00) Maven home: /usr/local/apache-maven-3.5.4 Java version: 11.0.7, vendor: Oracle Corporation, runtime: /usr/local/openjdk11 Default locale: de_DE, platform encoding: UTF-8 OS name: "freebsd", version: "12.1-stable", arch: "amd64", family: "unix" {noformat} was: This has been discovered while using {{MAVENCODEBASE}} with relative paths and symlinks. This is a very subtile bug and I yet don't understand. Here is how to reproduce: Have Maven cloned repo on a symlinked dir: {noformat} osipovmi@deblndw011x:~/var/Projekte/maven (master *=) $ pwd -P /var/osipovmi/Projekte/maven {noformat} and invoke Maven with {{-f}} and a non-normalized path: {noformat} mvn -f $PWD/../maven -V -pl maven-model-builder test {noformat} With Java 8 all tests pass, with Java 11+ the mentioned test fails: {noformat} [ERROR] Tests run: 34, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.086 s <<< FAILURE! - in org.apache.maven.model.interpolation.StringSearchModelInterpolatorTest [ERROR] testInterpolateObjectWithPomFile(org.apache.maven.model.interpolation.StringSearchModelInterpolatorTest) Time elapsed: 0.012 s <<< FAILURE! java.lang.AssertionError: Expected: is (is "/net/home/osipovmi/var/Projekte/maven/maven-model-builder/target" or is "/net/home/osipovmi/var/Projekte/maven/maven-model-builder/./target") but: was "/var/osipovmi/Projekte/maven/maven-model-builder/./target" at org.apache.maven.model.interpolation.StringSearchModelInterpolatorTest.testInterpolateObjectWithPomFile(StringSearchModelInterpolatorTest.java:366) {noformat} I have applied the following patch: {noformat} $ git diff diff --git a/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java b/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java index dbb72c4f7..b2d4b0965 100644 --- a/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java +++ b/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java @@ -356,9 +356,11 @@ public void testInterpolateObjectWithPomFile() ModelBuildingRequest config = createModelBuildingRequest( p ); SimpleProblemCollector collector = new SimpleProblemCollector(); assertProblemFree( collector ); - + System.out.println( baseDir.getAbsolutePath() ); + System.out.println( System.getProperty( "user.dir" ) ); + System.out.println( obj.values.get( "key" ) ); assertThat( baseDir.getAbsolutePath(), is( System.getProperty( "user.dir" ) ) ); assertThat( obj.values.size(), is( 1 ) ); assertThat( (String) obj.values.get( "key" ), is( anyOf( {noformat} and receive: {noformat} Java 8: /net/home/osipovmi/var/Projekte/maven/maven-model-builder /net/home/osipovmi/var/Projekte/maven/maven-model-builder /net/home/osipovmi/var/Projekte/maven/maven-model-builder/./target Java 11: /net/home/osipovmi/var/Projekte/maven/maven-model-builder /net/home/osipovmi/var/Projekte/maven/maven-model-builder /var/osipovmi/Projekte/maven/maven-model-builder/./target Java 14: /net/home/osipovmi/var/Projekte/maven/maven-model-builder /net/home/osipovmi/var/Projekte/maven/maven-model-builder /var/osipovmi/Projekte/maven/maven-model-builder/./target {noformat} When I apply {noformat} $ git diff diff --git a/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java b/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java index dbb72c4f7..b2d4b0965 100644 --- a/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java +++ b/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java @@ -356,9 +356,11 @@ public void testInterpolateObjectWithPomFile() ModelBuildingRequest config = createModelBuildingRequest( p ); SimpleProblemCollector collector = new SimpleProblemCollector(); - interpolator.interpolateObject( obj, model, new File( "." ), config, collector ); + interpolator.interpolateObject( obj, model, new File( System.getProperty( "user.dir" ) ), config, collector ); assertProblemFree( collector ); {noformat} The code works. Unfortunately, I do not know whether this fixes the cause because the test is faulty or just the symptom and the issue is in Core. > StringSearchModelInterpolatorTest fails to interpolate ${project.basedir} > across Java versions > ---------------------------------------------------------------------------------------------- > > Key: MNG-6947 > URL: https://issues.apache.org/jira/browse/MNG-6947 > Project: Maven > Issue Type: Bug > Components: core > Affects Versions: 3.6.3 > Reporter: Michael Osipov > Priority: Major > > This has been discovered while using {{MAVENCODEBASE}} with relative paths > and symlinks. > This is a very subtile bug and I yet don't understand. Here is how to > reproduce: > Have Maven cloned repo on a symlinked dir: > {noformat} > osipovmi@deblndw011x:~/var/Projekte/maven (master *=) > $ pwd -P > /var/osipovmi/Projekte/maven > {noformat} > and invoke Maven with {{-f}} and a non-normalized path: > {noformat} > mvn -f $PWD/../maven -V -pl maven-model-builder test > {noformat} > With Java 8 all tests pass, with Java 11+ the mentioned test fails: > {noformat} > [ERROR] Tests run: 34, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: > 0.086 s <<< FAILURE! - in > org.apache.maven.model.interpolation.StringSearchModelInterpolatorTest > [ERROR] > testInterpolateObjectWithPomFile(org.apache.maven.model.interpolation.StringSearchModelInterpolatorTest) > Time elapsed: 0.012 s <<< FAILURE! > java.lang.AssertionError: > Expected: is (is > "/net/home/osipovmi/var/Projekte/maven/maven-model-builder/target" or is > "/net/home/osipovmi/var/Projekte/maven/maven-model-builder/./target") > but: was "/var/osipovmi/Projekte/maven/maven-model-builder/./target" > at > org.apache.maven.model.interpolation.StringSearchModelInterpolatorTest.testInterpolateObjectWithPomFile(StringSearchModelInterpolatorTest.java:366) > {noformat} > I have applied the following patch: > {noformat} > $ git diff > diff --git > a/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java > > b/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java > index dbb72c4f7..b2d4b0965 100644 > --- > a/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java > +++ > b/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java > @@ -356,9 +356,11 @@ public void testInterpolateObjectWithPomFile() > ModelBuildingRequest config = createModelBuildingRequest( p ); > SimpleProblemCollector collector = new SimpleProblemCollector(); > assertProblemFree( collector ); > - > + System.out.println( baseDir.getAbsolutePath() ); > + System.out.println( System.getProperty( "user.dir" ) ); > + System.out.println( obj.values.get( "key" ) ); > assertThat( baseDir.getAbsolutePath(), is( System.getProperty( > "user.dir" ) ) ); > assertThat( obj.values.size(), is( 1 ) ); > assertThat( (String) obj.values.get( "key" ), is( anyOf( > {noformat} > and receive: > {noformat} > Java 8: > /net/home/osipovmi/var/Projekte/maven/maven-model-builder > /net/home/osipovmi/var/Projekte/maven/maven-model-builder > /net/home/osipovmi/var/Projekte/maven/maven-model-builder/./target > Java 11: > /net/home/osipovmi/var/Projekte/maven/maven-model-builder > /net/home/osipovmi/var/Projekte/maven/maven-model-builder > /var/osipovmi/Projekte/maven/maven-model-builder/./target > Java 14: > /net/home/osipovmi/var/Projekte/maven/maven-model-builder > /net/home/osipovmi/var/Projekte/maven/maven-model-builder > /var/osipovmi/Projekte/maven/maven-model-builder/./target > {noformat} > When I apply > {noformat} > $ git diff > diff --git > a/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java > > b/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java > index dbb72c4f7..b2d4b0965 100644 > --- > a/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java > +++ > b/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java > @@ -356,9 +356,11 @@ public void testInterpolateObjectWithPomFile() > ModelBuildingRequest config = createModelBuildingRequest( p ); > SimpleProblemCollector collector = new SimpleProblemCollector(); > - interpolator.interpolateObject( obj, model, new File( "." ), config, > collector ); > + interpolator.interpolateObject( obj, model, new File( > System.getProperty( "user.dir" ) ), config, collector ); > assertProblemFree( collector ); > {noformat} > The code works. Unfortunately, I do not know whether this fixes the cause > because the test is faulty or just the symptom and the issue is in Core. Is > has to be noted that {{user.dir}} is backed by {{getcwd()}} which always > returns an absolute, canonical path. > All tests perfomed on: > {noformat} > $ mvn -v > Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; > 2018-06-17T20:33:14+02:00) > Maven home: /usr/local/apache-maven-3.5.4 > Java version: 11.0.7, vendor: Oracle Corporation, runtime: > /usr/local/openjdk11 > Default locale: de_DE, platform encoding: UTF-8 > OS name: "freebsd", version: "12.1-stable", arch: "amd64", family: "unix" > {noformat} -- This message was sent by Atlassian Jira (v8.3.4#803005)