You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "James Nord (Jira)" <ji...@apache.org> on 2023/03/29 20:55:00 UTC
[jira] [Created] (MINVOKER-334) incorrect basedir on windows
James Nord created MINVOKER-334:
-----------------------------------
Summary: incorrect basedir on windows
Key: MINVOKER-334
URL: https://issues.apache.org/jira/browse/MINVOKER-334
Project: Maven Invoker Plugin
Issue Type: Bug
Affects Versions: 3.5.0
Environment: Apache Maven 3.9.1 (2e178502fcdbffc201671fb2537d0cb4b4cc58f8)
Maven home: c:\java\maven-3.9.1
Java version: 11.0.15, vendor: Eclipse Adoptium, runtime: c:\java\jdk-11.0.15+10
Default locale: en_GB, platform encoding: Cp1252
OS name: "windows 11", version: "10.0", arch: "amd64", family: "windows"
Reporter: James Nord
When run on windows the pluigin munges the value of basedir to something that is not correct.
in windows the canonical case of a drive letter us upper case, and the file system can be case sensitive but is nearly always always case preserving (on NTFS)
the plugin however lower cases the basedir leading to incorrect test results when run on windows.
jshell showing correct info
{noformat}
jshell> File f = new File(".").getCanonicalFile()
f ==> C:\workarea\source\github\jenkinsci\maven-hpi-plugin
jshell> Path p = f.toPath()
p ==> C:\workarea\source\github\jenkinsci\maven-hpi-plugin
jshell> p.toRealPath()
$3 ==> C:\workarea\source\github\jenkinsci\maven-hpi-plugin
{noformat}
sample output from the invoker plugin
{noformat}
[INFO] --- invoker:3.5.0:install (integration-test) @ maven-hpi-plugin ---
[INFO] Installing c:\workarea\source\github\jenkinsci\maven-hpi-plugin\target\maven-hpi-plugin-3.42-SNAPSHOT.jar to c:\workarea\source\github\jenkinsci\maven-hpi-plugin\target\local-repo\org\jenkins-ci\tools\maven-hpi-plugin\3.42-SNAPSHOT\maven-hpi-plugin-3.42-SNAPSHOT.jar
[INFO] Installing c:\workarea\source\github\jenkinsci\maven-hpi-plugin\target\maven-hpi-plugin-3.42-SNAPSHOT.pom to c:\workarea\source\github\jenkinsci\maven-hpi-plugin\target\local-repo\org\jenkins-ci\tools\maven-hpi-plugin\3.42-SNAPSHOT\maven-hpi-plugin-3.42-SNAPSHOT.pom
{noformat}
this can also be observed in a {{verify.groovy}} script that is expecting a specific output to be written in a log of a run plugin.
{noformat}
List lines = new File(basedir, 'plugins.txt').readLines('UTF-8')
// invoker plugin is brain dead and sets incorrect path
// like c:\foo\bar when it should be C:\foo\bar
// so we need to canonicalize the basedir
def projectRoot = basedir.getCanonicalPath() + File.separator
assert lines.get(0).contains("$basedir")
{noformat}
which causes a failure like:
{noformat}
[INFO] Assertion failed:
assert lines.get(0).contains("${basedir}")
| | | |
| | false c:\workarea\source\github\jenkinsci\maven-hpi-plugin\target\its\list-plugins-aggregator
| 'whizzbang\t1.0-SNAPSHOT\tC:\\workarea\\source\\github\\jenkinsci\\maven-hpi-plugin\\target\\its\\list-plugins-aggregator\\a-plugin'
['whizzbang\t1.0-SNAPSHOT\tC:\\workarea\\source\\github\\jenkinsci\\maven-hpi-plugin\\target\\its\\list-plugins-aggregator\\a-plugin', 'list-plugins-plugin1\t1.0-SNAPSHOT\tC:\\workarea\\source\\github\\jenkinsci\\maven-hpi-plugin\\target\\its\\list-plugins-aggregator\\first-module']
{noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)