[ 
https://issues.apache.org/jira/browse/MNG-6947?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17144440#comment-17144440
 ] 

Robert Scholte commented on MNG-6947:
-------------------------------------

It has been a while, but IIRC ideally something like this needs to be changed:

[https://github.com/frohoff/jdk8u-jdk/blob/master/src/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java#L53]

You must be able to set to root of the filesystem, From that moment on we can 
use Path (not File) to get the correct full path.

> 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)

Reply via email to