From 441f0354602373bff72648ca97a8746220d5a6ee Mon Sep 17 00:00:00 2001 From: Alix Lourme Date: Tue, 22 May 2018 20:29:27 +0200 Subject: [PATCH] Revert usage of cmd on Windows --- .../codehaus/plexus/util/cli/Commandline.java | 14 +++------ .../plexus/util/cli/CommandlineTest.java | 30 ++++++++++++++----- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/src/main/java/org/codehaus/plexus/util/cli/Commandline.java b/src/main/java/org/codehaus/plexus/util/cli/Commandline.java index 58ddfe35..9b6db620 100644 --- a/src/main/java/org/codehaus/plexus/util/cli/Commandline.java +++ b/src/main/java/org/codehaus/plexus/util/cli/Commandline.java @@ -495,25 +495,19 @@ public String[] getEnvironmentVariables() } /** - * Returns the executable and all defined arguments.
- * For Windows Family, {@link Commandline#getShellCommandline()} is returned + * Returns the executable and all defined arguments. */ public String[] getCommandline() { - if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) - { - return getShellCommandline(); - } - final String[] args = getArguments(); - String executable = getLiteralExecutable(); + String executableTmp = getLiteralExecutable(); - if ( executable == null ) + if ( executableTmp == null ) { return args; } final String[] result = new String[args.length + 1]; - result[0] = executable; + result[0] = executableTmp; System.arraycopy( args, 0, result, 1, args.length ); return result; } diff --git a/src/test/java/org/codehaus/plexus/util/cli/CommandlineTest.java b/src/test/java/org/codehaus/plexus/util/cli/CommandlineTest.java index 8cd96f6c..a5ec3868 100644 --- a/src/test/java/org/codehaus/plexus/util/cli/CommandlineTest.java +++ b/src/test/java/org/codehaus/plexus/util/cli/CommandlineTest.java @@ -93,10 +93,15 @@ public void testExecuteBinaryOnPath() try { // Maven startup script on PATH is required for this test + String binary = "mvn"; + if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) + { + binary += ".cmd"; + } Commandline cmd = new Commandline(); cmd.setWorkingDirectory( baseDir ); - cmd.setExecutable( "mvn" ); - assertEquals( "mvn", cmd.getShell().getOriginalExecutable() ); + cmd.setExecutable( binary ); + assertEquals( binary, cmd.getShell().getOriginalExecutable() ); cmd.createArg().setValue( "-version" ); Process process = cmd.execute(); String out = IOUtil.toString( process.getInputStream() ); @@ -116,11 +121,19 @@ public void testExecute() try { // allow it to detect the proper shell here. + String binary = "echo"; Commandline cmd = new Commandline(); - cmd.setWorkingDirectory( baseDir ); - cmd.setExecutable( "echo" ); - assertEquals( "echo", cmd.getShell().getOriginalExecutable() ); - cmd.createArgument().setValue( "Hello" ); + cmd.setWorkingDirectory( baseDir ); + if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) + { + binary = "cmd"; + cmd.createArg().setValue("/X"); + cmd.createArg().setValue("/C"); + cmd.createArg().setValue("echo"); + } + cmd.setExecutable( binary ); + assertEquals( binary, cmd.getShell().getOriginalExecutable() ); + cmd.createArg().setValue( "Hello" ); Process process = cmd.execute(); assertEquals( "Hello", IOUtil.toString( process.getInputStream() ).trim() ); @@ -491,7 +504,10 @@ public void testDollarSignInArgumentPath() cmd.setExecutable( "cat" ); if ( Os.isFamily( Os.FAMILY_WINDOWS ) ) { - cmd.setExecutable( "dir" ); + cmd.setExecutable( "cmd" ); + cmd.createArg().setLine( "/X" ); + cmd.createArg().setLine( "/C" ); + cmd.createArg().setLine( "dir" ); } cmd.setWorkingDirectory( dir ); cmd.createArg().setLine( "test$1.txt" );