You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Michael Osipov (Jira)" <ji...@apache.org> on 2020/06/24 08:45:00 UTC
[jira] [Updated] (MNG-6947) StringSearchModelInterpolatorTest fails
to interpolate ${project.basedir} across Java versions
[ 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)