You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ti...@apache.org on 2020/04/21 23:24:29 UTC
[maven-surefire] 10/10: tests for Maven 33x
This is an automated email from the ASF dual-hosted git repository.
tibordigana pushed a commit to branch pull/285
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git
commit 2fd2b330948e1d51e80d4830cbb00727ea3144ac
Author: tibordigana <ti...@apache.org>
AuthorDate: Tue Apr 21 23:23:45 2020 +0200
tests for Maven 33x
---
.../plugin/surefire/AbstractSurefireMojo.java | 39 ++++++++------
.../AbstractSurefireMojoToolchainsTest.java | 61 +++++++++++++++++++---
2 files changed, 79 insertions(+), 21 deletions(-)
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
index ea7b114..112de82 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
@@ -948,6 +948,29 @@ public abstract class AbstractSurefireMojo
return consoleLogger;
}
+ private static <T extends ToolchainManager> Toolchain getToolchainMaven33x( Class<T> toolchainManagerType,
+ T toolchainManager,
+ MavenSession session,
+ Map<String, String> toolchainArgs )
+ throws MojoFailureException
+ {
+ Method getToolchainsMethod =
+ tryGetMethod( toolchainManagerType, "getToolchains", MavenSession.class, String.class, Map.class );
+ if ( getToolchainsMethod != null )
+ {
+ //noinspection unchecked
+ List<Toolchain> tcs = (List<Toolchain>) invokeMethodWithArray( toolchainManager,
+ getToolchainsMethod, session, "jdk", toolchainArgs );
+ if ( tcs.isEmpty() )
+ {
+ throw new MojoFailureException(
+ "Requested toolchain specification did not match any configured toolchain: " + toolchainArgs );
+ }
+ return tcs.get( 0 );
+ }
+ return null;
+ }
+
//TODO remove the part with ToolchainManager lookup once we depend on
//3.0.9 (have it as prerequisite). Define as regular component field then.
private Toolchain getToolchain() throws MojoFailureException
@@ -956,21 +979,7 @@ public abstract class AbstractSurefireMojo
if ( getJdkToolchain() != null )
{
- Method getToolchainsMethod = tryGetMethod( ToolchainManager.class, "getToolchains",
- MavenSession.class, String.class, Map.class );
- if ( getToolchainsMethod != null )
- {
- //noinspection unchecked
- List<Toolchain> tcs = (List<Toolchain>) invokeMethodWithArray( getToolchainManager(),
- getToolchainsMethod, getSession(), "jdk", getJdkToolchain() );
- if ( tcs.isEmpty() )
- {
- throw new MojoFailureException(
- "Requested toolchain specification did not match any configured toolchain: "
- + getJdkToolchain() );
- }
- tc = tcs.get( 0 );
- }
+ tc = getToolchainMaven33x( ToolchainManager.class, getToolchainManager(), getSession(), getJdkToolchain() );
}
if ( tc == null )
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoToolchainsTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoToolchainsTest.java
index e68d82c..42474e0 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoToolchainsTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoToolchainsTest.java
@@ -25,28 +25,39 @@ import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.execution.MavenExecutionRequest;
import org.apache.maven.execution.MavenSession;
+import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.surefire.util.ReflectionUtils;
+import org.apache.maven.toolchain.Toolchain;
import org.apache.maven.toolchain.ToolchainManager;
import org.codehaus.plexus.languages.java.jpms.ResolvePathsRequest;
import org.codehaus.plexus.logging.Logger;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import java.lang.reflect.Method;
+import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+import static java.util.Collections.emptyMap;
+import static java.util.Collections.singletonList;
import static java.util.Collections.singletonMap;
import static org.apache.maven.artifact.versioning.VersionRange.createFromVersion;
-import static org.mockito.Mockito.*;
+import static org.fest.assertions.Assertions.assertThat;
+import static org.fest.assertions.Fail.fail;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import static org.powermock.api.mockito.PowerMockito.mock;
import static org.powermock.api.mockito.PowerMockito.mockStatic;
import static org.powermock.api.mockito.PowerMockito.verifyStatic;
+import static org.powermock.reflect.Whitebox.invokeMethod;
/**
* Test for {@link AbstractSurefireMojo}.
@@ -56,11 +67,10 @@ import static org.powermock.api.mockito.PowerMockito.verifyStatic;
@PowerMockIgnore({"org.jacoco.agent.rt.*", "com.vladium.emma.rt.*"})
public class AbstractSurefireMojoToolchainsTest
{
-
private final AbstractSurefireMojo mojo = new AbstractSurefireMojoTest.Mojo();
@Before
- public void setupMojo() throws Exception
+ public void setupMojo()
{
MavenSession session = mock( MavenSession.class );
mojo.setSession( session );
@@ -80,7 +90,6 @@ public class AbstractSurefireMojoToolchainsTest
@Test
public void shouldHandleMaven30ToolchainManager() throws Exception
-
{
mockStatic( ReflectionUtils.class );
//TODO: mock this to return a method
@@ -94,7 +103,7 @@ public class AbstractSurefireMojoToolchainsTest
Method method = AbstractSurefireMojo.class.getDeclaredMethod( "setupStuff", null );
method.setAccessible( true );
- Map<String, String> toolchainSpec = new HashMap<String, String>();
+ Map<String, String> toolchainSpec = new HashMap<>();
toolchainSpec.put( "version", "1.8" );
mojo.setJdkToolchain( toolchainSpec );
@@ -104,4 +113,44 @@ public class AbstractSurefireMojoToolchainsTest
verify( toolchainManager, times( 1 )).getToolchainFromBuildContext( null, null );
verify( mojo, times( 2 ) ).getToolchainManager();
}
+
+ @Test( expected = MojoFailureException.class )
+ public void shouldThrowMaven33xToolchain() throws Exception
+ {
+ invokeMethod( AbstractSurefireMojo.class, "getToolchainMaven33x",
+ MockToolchainManager.class, new MockToolchainManager( null ), mock( MavenSession.class ), emptyMap() );
+ }
+
+ @Test
+ public void shouldGetMaven33xToolchain() throws Exception
+ {
+ Toolchain expected = mock( Toolchain.class );
+ Toolchain actual = invokeMethod( AbstractSurefireMojo.class, "getToolchainMaven33x",
+ MockToolchainManager.class, new MockToolchainManager( expected ), mock( MavenSession.class ), emptyMap() );
+
+ assertThat( actual )
+ .isSameAs( expected );
+ }
+
+ public static final class MockToolchainManager implements ToolchainManager
+ {
+ private final Toolchain toolchain;
+
+ public MockToolchainManager( Toolchain toolchain )
+ {
+ this.toolchain = toolchain;
+ }
+
+ public List<Toolchain> getToolchains( MavenSession session, String type, Map<String,String> requirements )
+ {
+ return toolchain == null ? Collections.<Toolchain>emptyList() : singletonList( toolchain );
+ }
+
+ @Override
+ public Toolchain getToolchainFromBuildContext( String type, MavenSession context )
+ {
+ fail();
+ return null;
+ }
+ }
}