You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sj...@apache.org on 2022/05/06 19:33:03 UTC
[maven-release] branch master updated: [MRELEASE-1088] Remove parsing of CLI arguments
This is an automated email from the ASF dual-hosted git repository.
sjaranowski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-release.git
The following commit(s) were added to refs/heads/master by this push:
new 26cd6f6d [MRELEASE-1088] Remove parsing of CLI arguments
26cd6f6d is described below
commit 26cd6f6d18f26439908299096693136ba09627cc
Author: Slawomir Jaranowski <s....@gmail.com>
AuthorDate: Fri May 6 20:27:43 2022 +0200
[MRELEASE-1088] Remove parsing of CLI arguments
---
maven-release-manager/pom.xml | 11 -
.../release/config/ReleaseDescriptorBuilder.java | 36 +-
.../shared/release/exec/InvokerMavenExecutor.java | 414 ++-------------------
.../config/ReleaseDescriptorBuilderTest.java | 62 +++
.../release/exec/InvokerMavenExecutorTest.java | 97 +----
.../it/projects/prepare/MRELEASE-667/verify.groovy | 1 +
6 files changed, 129 insertions(+), 492 deletions(-)
diff --git a/maven-release-manager/pom.xml b/maven-release-manager/pom.xml
index 717b5b2e..60b10618 100644
--- a/maven-release-manager/pom.xml
+++ b/maven-release-manager/pom.xml
@@ -113,17 +113,6 @@
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
- <dependency>
- <groupId>commons-cli</groupId>
- <artifactId>commons-cli</artifactId>
- <version>1.5.0</version>
- <exclusions>
- <exclusion>
- <groupId>commons-lang</groupId>
- <artifactId>commons-lang</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
<dependency>
<groupId>org.eclipse.aether</groupId>
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilder.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilder.java
index 0d739995..60ab0fa1 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilder.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilder.java
@@ -20,9 +20,13 @@ package org.apache.maven.shared.release.config;
*/
import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.apache.maven.model.Scm;
import org.apache.maven.shared.release.util.ReleaseUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* <p>ReleaseDescriptorBuilder class.</p>
@@ -32,6 +36,10 @@ import org.apache.maven.shared.release.util.ReleaseUtil;
*/
public class ReleaseDescriptorBuilder
{
+ private static final Pattern PROPERTY_PATTERN = Pattern.compile( "\\$\\{[^}]+}" );
+
+ private final Logger logger;
+
/**
* Hides inner logic of the release descriptor
*
@@ -50,9 +58,18 @@ public class ReleaseDescriptorBuilder
* <p>Constructor for ReleaseDescriptorBuilder.</p>
*/
public ReleaseDescriptorBuilder()
+ {
+ this( LoggerFactory.getLogger( ReleaseDescriptorBuilder.class ) );
+ }
+
+ /**
+ * Constructor for testing purpose.
+ */
+ ReleaseDescriptorBuilder( Logger logger )
{
this.releaseDescriptor = new BuilderReleaseDescriptor();
this.releaseDescriptor.setLineSeparator( ReleaseUtil.LS );
+ this.logger = logger;
}
/**
@@ -99,7 +116,24 @@ public class ReleaseDescriptorBuilder
*/
public ReleaseDescriptorBuilder setAdditionalArguments( String additionalArguments )
{
- releaseDescriptor.setAdditionalArguments( additionalArguments );
+ if ( additionalArguments != null )
+ {
+ Matcher matcher = PROPERTY_PATTERN.matcher( additionalArguments );
+ StringBuffer buf = new StringBuffer();
+ while ( matcher.find() )
+ {
+ matcher.appendReplacement( buf, "" );
+ logger.warn( "arguments parameter contains unresolved property: '{}'",
+ matcher.group() );
+ }
+ matcher.appendTail( buf );
+
+ releaseDescriptor.setAdditionalArguments( buf.toString() );
+ }
+ else
+ {
+ releaseDescriptor.setAdditionalArguments( null );
+ }
return this;
}
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/InvokerMavenExecutor.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/InvokerMavenExecutor.java
index bed98cbd..b118c4df 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/InvokerMavenExecutor.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/InvokerMavenExecutor.java
@@ -26,18 +26,12 @@ import javax.inject.Singleton;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
-import java.util.Arrays;
+import java.util.ArrayList;
import java.util.List;
-import java.util.Properties;
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.DefaultParser;
-import org.apache.commons.cli.Option;
-import org.apache.commons.cli.Options;
import org.apache.maven.settings.io.xpp3.SettingsXpp3Writer;
import org.apache.maven.shared.invoker.DefaultInvocationRequest;
import org.apache.maven.shared.invoker.DefaultInvoker;
-import org.apache.maven.shared.invoker.InvocationOutputHandler;
import org.apache.maven.shared.invoker.InvocationRequest;
import org.apache.maven.shared.invoker.InvocationResult;
import org.apache.maven.shared.invoker.Invoker;
@@ -46,7 +40,6 @@ import org.apache.maven.shared.invoker.MavenInvocationException;
import org.apache.maven.shared.release.ReleaseResult;
import org.apache.maven.shared.release.env.ReleaseEnvironment;
import org.apache.maven.shared.release.util.MavenCrypto;
-import org.codehaus.plexus.util.cli.CommandLineUtils;
import org.slf4j.Logger;
/**
@@ -57,376 +50,37 @@ import org.slf4j.Logger;
public class InvokerMavenExecutor
extends AbstractMavenExecutor
{
-
- private static final Options OPTIONS = new Options();
-
- private static final String SET_SYSTEM_PROPERTY = "D";
-
- private static final String OFFLINE = "o";
-
- private static final String REACTOR = "r";
-
- private static final String QUIET = "q";
-
- private static final String DEBUG = "X";
-
- private static final String ERRORS = "e";
-
- private static final String NON_RECURSIVE = "N";
-
- private static final String UPDATE_SNAPSHOTS = "U";
-
- private static final String ACTIVATE_PROFILES = "P";
-
- private static final String CHECKSUM_FAILURE_POLICY = "C";
-
- private static final String CHECKSUM_WARNING_POLICY = "c";
-
- private static final String ALTERNATE_USER_SETTINGS = "s";
-
- private static final String ALTERNATE_GLOBAL_SETTINGS = "gs";
-
- private static final String FAIL_FAST = "ff";
-
- private static final String FAIL_AT_END = "fae";
-
- private static final String FAIL_NEVER = "fn";
-
- private static final String ALTERNATE_POM_FILE = "f";
-
- private static final String THREADS = "T";
-
- private static final String BATCH_MODE = "B";
-
- public static final String ALTERNATE_USER_TOOLCHAINS = "t";
-
- static
- {
- OPTIONS.addOption(
- Option.builder( SET_SYSTEM_PROPERTY )
- .longOpt( "define" )
- .numberOfArgs( 2 )
- .valueSeparator( '=' )
- .desc( "Define a system property" )
- .build() );
-
- OPTIONS.addOption(
- Option.builder( OFFLINE )
- .longOpt( "offline" )
- .desc( "Work offline" )
- .build() );
-
- OPTIONS.addOption(
- Option.builder( QUIET )
- .longOpt( "quiet" )
- .desc( "Quiet output - only show errors" )
- .build() );
-
- OPTIONS.addOption(
- Option.builder( DEBUG )
- .longOpt( "debug" )
- .desc( "Produce execution debug output" )
- .build() );
-
- OPTIONS.addOption(
- Option.builder( ERRORS )
- .longOpt( "errors" )
- .desc( "Produce execution error messages" )
- .build() );
-
- OPTIONS.addOption(
- Option.builder( REACTOR )
- .longOpt( "reactor" )
- .desc( "Execute goals for project found in the reactor" )
- .build() );
-
- OPTIONS.addOption(
- Option.builder( NON_RECURSIVE )
- .longOpt( "non-recursive" )
- .desc( "Do not recurse into sub-projects" )
- .build() );
-
- OPTIONS.addOption(
- Option.builder( UPDATE_SNAPSHOTS )
- .longOpt( "update-snapshots" )
- .desc( "Forces a check for updated releases and snapshots on remote repositories" )
- .build() );
-
- OPTIONS.addOption(
- Option.builder( ACTIVATE_PROFILES )
- .longOpt( "activate-profiles" )
- .desc( "Comma-delimited list of profiles to activate" )
- .hasArg()
- .build() );
-
- OPTIONS.addOption(
- Option.builder( CHECKSUM_FAILURE_POLICY )
- .longOpt( "strict-checksums" )
- .desc( "Fail the build if checksums don't match" )
- .build() );
-
- OPTIONS.addOption(
- Option.builder( CHECKSUM_WARNING_POLICY )
- .longOpt( "lax-checksums" )
- .desc( "Warn if checksums don't match" )
- .build() );
-
- OPTIONS.addOption(
- Option.builder( ALTERNATE_USER_SETTINGS )
- .longOpt( "settings" )
- .desc( "Alternate path for the user settings file" )
- .hasArg()
- .build() );
-
- OPTIONS.addOption(
- Option.builder( ALTERNATE_GLOBAL_SETTINGS )
- .longOpt( "global-settings" )
- .desc( "Alternate path for the global settings file" )
- .hasArg()
- .build() );
-
- OPTIONS.addOption(
- Option.builder( FAIL_FAST )
- .longOpt( "fail-fast" )
- .desc( "Stop at first failure in reactorized builds" )
- .build() );
-
- OPTIONS.addOption(
- Option.builder( FAIL_AT_END )
- .longOpt( "fail-at-end" )
- .desc( "Only fail the build afterwards; allow all non-impacted builds to continue" )
- .build() );
-
- OPTIONS.addOption(
- Option.builder( FAIL_NEVER )
- .longOpt( "fail-never" )
- .desc( "NEVER fail the build, regardless of project result" )
- .build() );
-
- OPTIONS.addOption(
- Option.builder( ALTERNATE_POM_FILE )
- .longOpt( "file" )
- .desc( "Force the use of an alternate POM file." )
- .hasArg()
- .build() );
-
- OPTIONS.addOption(
- Option.builder( THREADS )
- .longOpt( "threads" )
- .desc( "Thread count, for instance 2.0C where C is core multiplied" )
- .hasArg()
- .build() );
-
- OPTIONS.addOption(
- Option.builder( BATCH_MODE )
- .longOpt( "batch-mode" )
- .desc( "Run in non-interactive (batch) mode" )
- .build() );
-
- OPTIONS.addOption(
- Option.builder( ALTERNATE_USER_TOOLCHAINS )
- .longOpt( "toolchains" )
- .desc( "Alternate path for the user toolchains file" )
- .hasArg()
- .build() );
- }
-
@Inject
public InvokerMavenExecutor( MavenCrypto mavenCrypto )
{
super( mavenCrypto );
}
- // TODO: Configuring an invocation request from a command line could as well be part of the Invoker API
-
- /**
- * <p>setupRequest.</p>
- *
- * @param req a {@link org.apache.maven.shared.invoker.InvocationRequest} object
- * @param bridge a {@link org.apache.maven.shared.invoker.InvokerLogger} object
- * @param additionalArguments a {@link java.lang.String} object
- * @throws org.apache.maven.shared.release.exec.MavenExecutorException if any.
- */
- protected void setupRequest( InvocationRequest req,
- InvokerLogger bridge,
- String additionalArguments )
- throws MavenExecutorException
- {
- try
- {
- String[] args = CommandLineUtils.translateCommandline( additionalArguments );
- CommandLine cli = new DefaultParser().parse( OPTIONS, args );
-
- if ( cli.hasOption( SET_SYSTEM_PROPERTY ) )
- {
- String[] properties = cli.getOptionValues( SET_SYSTEM_PROPERTY );
- Properties props = new Properties();
- for ( String property : properties )
- {
- String name, value;
- int sep = property.indexOf( "=" );
- if ( sep <= 0 )
- {
- name = property.trim();
- value = "true";
- }
- else
- {
- name = property.substring( 0, sep ).trim();
- value = property.substring( sep + 1 ).trim();
- }
- props.setProperty( name, value );
- }
-
- req.setProperties( props );
- }
-
- if ( cli.hasOption( OFFLINE ) )
- {
- req.setOffline( true );
- }
-
- if ( cli.hasOption( QUIET ) )
- {
- req.setQuiet( true );
- }
- else if ( cli.hasOption( DEBUG ) )
- {
- req.setDebug( true );
- }
- else if ( cli.hasOption( ERRORS ) )
- {
- req.setShowErrors( true );
- }
-
- if ( cli.hasOption( REACTOR ) )
- {
- req.setRecursive( true );
- }
- else if ( cli.hasOption( NON_RECURSIVE ) )
- {
- req.setRecursive( false );
- }
-
- if ( cli.hasOption( UPDATE_SNAPSHOTS ) )
- {
- req.setUpdateSnapshots( true );
- }
-
- if ( cli.hasOption( ACTIVATE_PROFILES ) )
- {
- String[] profiles = cli.getOptionValues( ACTIVATE_PROFILES );
-
- if ( profiles != null )
- {
- req.setProfiles( Arrays.asList( profiles ) );
- }
- }
-
- if ( cli.hasOption( CHECKSUM_FAILURE_POLICY ) )
- {
- req.setGlobalChecksumPolicy( InvocationRequest.CheckSumPolicy.Fail );
- }
- else if ( cli.hasOption( CHECKSUM_WARNING_POLICY ) )
- {
- req.setGlobalChecksumPolicy( InvocationRequest.CheckSumPolicy.Warn );
- }
-
- if ( cli.hasOption( ALTERNATE_USER_SETTINGS ) )
- {
- req.setUserSettingsFile( new File( cli.getOptionValue( ALTERNATE_USER_SETTINGS ) ) );
- }
-
- if ( cli.hasOption( ALTERNATE_GLOBAL_SETTINGS ) )
- {
- req.setGlobalSettingsFile( new File( cli.getOptionValue( ALTERNATE_GLOBAL_SETTINGS ) ) );
- }
-
- if ( cli.hasOption( FAIL_AT_END ) )
- {
- req.setReactorFailureBehavior( InvocationRequest.ReactorFailureBehavior.FailAtEnd );
- }
- else if ( cli.hasOption( FAIL_FAST ) )
- {
- req.setReactorFailureBehavior( InvocationRequest.ReactorFailureBehavior.FailFast );
- }
- if ( cli.hasOption( FAIL_NEVER ) )
- {
- req.setReactorFailureBehavior( InvocationRequest.ReactorFailureBehavior.FailNever );
- }
- if ( cli.hasOption( ALTERNATE_POM_FILE ) )
- {
- if ( req.getPomFileName() != null )
- {
- getLogger().info( "pomFileName is already set, ignoring the -f argument" );
- }
- else
- {
- req.setPomFileName( cli.getOptionValue( ALTERNATE_POM_FILE ) );
- }
- }
-
- if ( cli.hasOption( THREADS ) )
- {
- req.setThreads( cli.getOptionValue( THREADS ) );
- }
-
- if ( cli.hasOption( BATCH_MODE ) )
- {
- req.setBatchMode( true );
- }
-
- if ( cli.hasOption( ALTERNATE_USER_TOOLCHAINS ) )
- {
- req.setToolchainsFile( new File( cli.getOptionValue( ALTERNATE_USER_TOOLCHAINS ) ) );
- }
-
- }
- catch ( Exception e )
- {
- throw new MavenExecutorException( "Failed to re-parse additional arguments for Maven invocation.", e );
- }
- }
-
@Override
public void executeGoals( File workingDirectory, List<String> goals, ReleaseEnvironment releaseEnvironment,
boolean interactive, String additionalArguments, String pomFileName,
ReleaseResult result )
throws MavenExecutorException
{
- InvocationOutputHandler handler = getOutputHandler();
InvokerLogger bridge = getInvokerLogger();
- File mavenPath;
- // if null we use the current one
- if ( releaseEnvironment.getMavenHome() != null )
- {
- mavenPath = releaseEnvironment.getMavenHome();
- }
- else
- {
- String mavenHome = System.getProperty( "maven.home" );
- if ( mavenHome == null )
- {
- mavenHome = System.getenv( "MAVEN_HOME" );
- }
- if ( mavenHome == null )
- {
- mavenHome = System.getenv( "M2_HOME" );
- }
- mavenPath = mavenHome == null ? null : new File( mavenHome );
- }
-
Invoker invoker = new DefaultInvoker()
- .setMavenHome( mavenPath )
+ .setMavenHome( releaseEnvironment.getMavenHome() )
+ .setLocalRepositoryDirectory( releaseEnvironment.getLocalRepositoryDirectory() )
.setLogger( bridge );
InvocationRequest req = new DefaultInvocationRequest()
.setDebug( getLogger().isDebugEnabled() )
.setBaseDirectory( workingDirectory )
.setBatchMode( !interactive )
- .setOutputHandler( handler )
- .setErrorHandler( handler );
+ .setOutputHandler( getLogger()::info )
+ .setErrorHandler( getLogger()::error );
+
+ // for interactive mode we need some inputs stream
+ if ( interactive )
+ {
+ req.setInputStream( System.in );
+ }
if ( pomFileName != null )
{
@@ -453,17 +107,18 @@ public class InvokerMavenExecutor
throw new MavenExecutorException( "Could not create temporary file for release settings.xml", e );
}
}
+
try
{
- File localRepoDir = releaseEnvironment.getLocalRepositoryDirectory();
- if ( localRepoDir != null )
+ List<String> targetGoals = new ArrayList<>( goals );
+
+ if ( additionalArguments != null && !additionalArguments.isEmpty() )
{
- req.setLocalRepositoryDirectory( localRepoDir );
+ // additionalArguments will be parsed be MavenInvoker
+ targetGoals.add( additionalArguments );
}
- setupRequest( req, bridge, additionalArguments );
-
- req.setGoals( goals );
+ req.setGoals( targetGoals );
try
{
@@ -472,13 +127,14 @@ public class InvokerMavenExecutor
if ( invocationResult.getExecutionException() != null )
{
throw new MavenExecutorException( "Error executing Maven.",
- invocationResult.getExecutionException() );
+ invocationResult.getExecutionException() );
}
+
if ( invocationResult.getExitCode() != 0 )
{
throw new MavenExecutorException(
- "Maven execution failed, exit code: '" + invocationResult.getExitCode() + "'",
- invocationResult.getExitCode() );
+ "Maven execution failed, exit code: " + invocationResult.getExitCode(),
+ invocationResult.getExitCode() );
}
}
catch ( MavenInvocationException e )
@@ -505,32 +161,6 @@ public class InvokerMavenExecutor
return new LoggerBridge( getLogger() );
}
- /**
- * <p>getOutputHandler.</p>
- *
- * @return a {@link org.apache.maven.shared.invoker.InvocationOutputHandler} object
- */
- protected InvocationOutputHandler getOutputHandler()
- {
- return new Handler( getLogger() );
- }
-
- private static final class Handler
- implements InvocationOutputHandler
- {
- private final Logger logger;
-
- Handler( Logger logger )
- {
- this.logger = logger;
- }
-
- public void consumeLine( String line )
- {
- logger.info( line );
- }
- }
-
private static final class LoggerBridge
implements InvokerLogger
{
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilderTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilderTest.java
new file mode 100644
index 00000000..907033c8
--- /dev/null
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilderTest.java
@@ -0,0 +1,62 @@
+package org.apache.maven.shared.release.config;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.slf4j.Logger;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.reset;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.verifyZeroInteractions;
+
+public class ReleaseDescriptorBuilderTest
+{
+ private final Logger logger = Mockito.mock( Logger.class );
+
+ @Test
+ public void testCleanupArguments()
+ {
+ setAdditionalArguments( "abc abc -Dxxx", "abc abc -Dxxx");
+ verifyZeroInteractions( logger );
+ reset( logger );
+
+ setAdditionalArguments( "abc abc ${arguments}", "abc abc " );
+ verify( logger ).warn( anyString(), eq( "${arguments}" ) );
+ verifyNoMoreInteractions( logger );
+ reset( logger );
+
+ setAdditionalArguments( "abc ${first} abc ${arguments}", "abc abc " );
+ verify( logger ).warn( anyString(), eq( "${first}" ) );
+ verify( logger ).warn( anyString(), eq( "${arguments}" ) );
+ verifyNoMoreInteractions( logger );
+ }
+
+ private void setAdditionalArguments(String input, String expected)
+ {
+ ReleaseDescriptorBuilder builder = new ReleaseDescriptorBuilder( logger );
+ builder.setAdditionalArguments( input );
+ assertEquals( expected, builder.build().getAdditionalArguments() );
+ }
+}
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/exec/InvokerMavenExecutorTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/exec/InvokerMavenExecutorTest.java
index b8afc8b1..73da65af 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/exec/InvokerMavenExecutorTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/exec/InvokerMavenExecutorTest.java
@@ -19,17 +19,6 @@ package org.apache.maven.shared.release.exec;
* under the License.
*/
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.isA;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
import java.io.File;
import java.io.Writer;
@@ -37,18 +26,23 @@ import org.apache.maven.settings.Proxy;
import org.apache.maven.settings.Server;
import org.apache.maven.settings.Settings;
import org.apache.maven.settings.io.xpp3.SettingsXpp3Writer;
-import org.apache.maven.shared.invoker.DefaultInvocationRequest;
-import org.apache.maven.shared.invoker.InvocationRequest;
import org.apache.maven.shared.release.PlexusJUnit4TestCase;
import org.apache.maven.shared.release.ReleaseResult;
import org.apache.maven.shared.release.env.DefaultReleaseEnvironment;
import org.apache.maven.shared.release.util.MavenCrypto;
-import org.codehaus.plexus.PlexusTestCase;
-import org.codehaus.plexus.logging.Logger;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.sonatype.plexus.components.sec.dispatcher.SecDispatcher;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotSame;
+import static org.mockito.Matchers.isA;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
public class InvokerMavenExecutorTest
extends PlexusJUnit4TestCase
{
@@ -67,77 +61,6 @@ public class InvokerMavenExecutorTest
secDispatcher = lookup( SecDispatcher.class );
}
- @Test
- public void testThreads()
- throws Exception
- {
- InvokerMavenExecutor executor = new InvokerMavenExecutor( mavenCrypto );
-
- InvocationRequest req = new DefaultInvocationRequest();
- executor.setupRequest( req, null, "-T 3" );
- assertEquals( "3", req.getThreads() );
-
- req = new DefaultInvocationRequest();
- executor.setupRequest( req, null, "-T4" );
- assertEquals( "4", req.getThreads() );
-
- req = new DefaultInvocationRequest();
- executor.setupRequest( req, null, "\"-T5\"" );
- assertEquals( "5", req.getThreads() );
- }
-
- @Test
- public void testBatch()
- throws Exception
- {
- InvokerMavenExecutor executor = new InvokerMavenExecutor( mavenCrypto );
-
- InvocationRequest req = new DefaultInvocationRequest();
-
- req.setBatchMode( false );
- executor.setupRequest( req, null, "-B" );
- assertTrue( req.isBatchMode() );
-
- req = new DefaultInvocationRequest();
- req.setBatchMode( false );
- executor.setupRequest( req, null, "\"-B\"" );
- assertTrue( req.isBatchMode() );
- }
-
- @Test
- public void testUserToolchains()
- throws Exception
- {
- InvokerMavenExecutor executor = new InvokerMavenExecutor( mavenCrypto );
-
- InvocationRequest req = new DefaultInvocationRequest();
- executor.setupRequest( req, null, "-t mytoolchains.xml" );
- assertEquals( new File( "mytoolchains.xml" ), req.getToolchainsFile() );
-
- req = new DefaultInvocationRequest();
- executor.setupRequest( req, null, "-tmytoolchains.xml" );
- assertEquals( new File( "mytoolchains.xml" ), req.getToolchainsFile() );
-
- req = new DefaultInvocationRequest();
- executor.setupRequest( req, null, "\"-tmytoolchains.xml\"" );
- assertEquals( new File( "mytoolchains.xml" ), req.getToolchainsFile() );
- }
-
- @Test
- public void testGlobalSettings()
- throws Exception
- {
- InvokerMavenExecutor executor = new InvokerMavenExecutor( mavenCrypto );
-
- InvocationRequest req = new DefaultInvocationRequest();
- executor.setupRequest( req, null, "-gs custom-settings.xml" );
- assertEquals( "custom-settings.xml", req.getGlobalSettingsFile().getPath() );
-
- req = new DefaultInvocationRequest();
- executor.setupRequest( req, null, "--global-settings other-settings.xml" );
- assertEquals( "other-settings.xml", req.getGlobalSettingsFile().getPath() );
- }
-
public void testEncryptSettings()
throws Exception
{
@@ -167,8 +90,6 @@ public class InvokerMavenExecutorTest
ArgumentCaptor<Settings> encryptedSettings = ArgumentCaptor.forClass( Settings.class );
when( executorSpy.getSettingsWriter() ).thenReturn( settingsWriter );
- when( executorSpy.getOutputHandler() ).thenReturn( null );
- when( executorSpy.getInvokerLogger() ).thenReturn( null );
try
{
diff --git a/maven-release-plugin/src/it/projects/prepare/MRELEASE-667/verify.groovy b/maven-release-plugin/src/it/projects/prepare/MRELEASE-667/verify.groovy
index 1440a7a0..bd42e6d5 100644
--- a/maven-release-plugin/src/it/projects/prepare/MRELEASE-667/verify.groovy
+++ b/maven-release-plugin/src/it/projects/prepare/MRELEASE-667/verify.groovy
@@ -25,3 +25,4 @@ assert buildLog.exists()
//assert 1 == buildLog.getText().count("[DEBUG] Profile with id: 'mrelease-677' has been explicitly activated.")
assert 1 == buildLog.getText().count(" Profile Id: mrelease-677 (Active: false , Source: settings.xml)")
+assert buildLog.getText().contains("[WARNING] arguments parameter contains unresolved property: '\${arguments}'")