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 2023/01/01 23:25:00 UTC
[jira] [Closed] (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 closed MNG-6947.
-------------------------------
Resolution: Cannot Reproduce
Believe it or not, I cannot reproduce with Maven 3.8.7 and most current 8, 11 and 17 anymore.
> 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.20.10#820010)