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)