This is an automated email from the ASF dual-hosted git repository.

tibordigana pushed a commit to branch resolver
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git

commit 357ff0c5a35dd27edc3770567c8fbfed36ff20d7
Author: tibordigana <tibordig...@apache.org>
AuthorDate: Sun Jan 19 21:57:29 2020 +0100

    dependencies for dynamic provider contain Maven artifacts from the MOJO 
plugin
---
 maven-failsafe-plugin/pom.xml                      |   5 -
 .../plugin/surefire/AbstractSurefireMojo.java      |  17 +-
 .../surefire/SurefireDependencyResolver.java       |  78 ++++-----
 .../plugin/surefire/AbstractSurefireMojoTest.java  |  24 +--
 .../surefire/SurefireDependencyResolverTest.java   | 195 +++++++++------------
 pom.xml                                            |  10 +-
 6 files changed, 148 insertions(+), 181 deletions(-)

diff --git a/maven-failsafe-plugin/pom.xml b/maven-failsafe-plugin/pom.xml
index 915d47e..a6474f4 100644
--- a/maven-failsafe-plugin/pom.xml
+++ b/maven-failsafe-plugin/pom.xml
@@ -70,11 +70,6 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.apache.maven.surefire</groupId>
-            <artifactId>surefire-shared-utils</artifactId>
-            <version>3.0.0-M4</version>
-        </dependency>
-        <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
             <scope>test</scope>
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 7604c03..b8a5297 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
@@ -24,7 +24,7 @@ import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.DefaultArtifact;
 import org.apache.maven.artifact.handler.ArtifactHandler;
 import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Plugin;
 import 
org.apache.maven.plugin.surefire.extensions.SurefireConsoleOutputReporter;
 import org.apache.maven.plugin.surefire.extensions.SurefireStatelessReporter;
 import 
org.apache.maven.plugin.surefire.extensions.SurefireStatelessTestsetInfoReporter;
@@ -909,7 +909,8 @@ public abstract class AbstractSurefireMojo
                 getConsoleLogger(), getLocalRepository(),
                 getRemoteRepositories(),
                 getProjectRemoteRepositories(),
-                getPluginName(), getDependencyResolver() );
+                getPluginName(), getDependencyResolver(),
+                getSession().isOffline() );
 
         surefireBooterArtifact = getBooterArtifact();
         if ( surefireBooterArtifact == null )
@@ -3015,9 +3016,8 @@ public abstract class AbstractSurefireMojo
             else
             {
                 ProjectBuildingRequest request = 
getSession().getProjectBuildingRequest();
-                Collection<Dependency> pluginDependencies = 
getPluginDescriptor().getPlugin().getDependencies();
-                Set<Artifact> engines =
-                        surefireDependencyResolver.resolvePluginDependencies( 
request, pluginDependencies );
+                Plugin plugin = getPluginDescriptor().getPlugin();
+                Set<Artifact> engines = 
surefireDependencyResolver.resolvePluginDependencies( request, plugin );
                 if ( hasDependencyPlatformEngine( engines ) )
                 {
                     Map<String, Artifact> engineArtifacts = 
artifactMapByVersionlessId( engines );
@@ -3220,10 +3220,11 @@ public abstract class AbstractSurefireMojo
 
         @Override
         @Nonnull
-        public Set<Artifact> getProviderClasspath()
+        public Set<Artifact> getProviderClasspath() throws 
MojoExecutionException
         {
-            return surefireDependencyResolver.addProviderToClasspath( 
getPluginArtifactMap(), getMojoArtifact(),
-                    getApiArtifact(), getLoggerApiArtifact() );
+            ProjectBuildingRequest request = 
getSession().getProjectBuildingRequest();
+            Plugin plugin = getPluginDescriptor().getPlugin();
+            return surefireDependencyResolver.resolvePluginDependencies( 
request, plugin );
         }
     }
 
diff --git 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireDependencyResolver.java
 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireDependencyResolver.java
index 16cb6c8..4684563 100644
--- 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireDependencyResolver.java
+++ 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireDependencyResolver.java
@@ -36,11 +36,11 @@ import 
org.apache.maven.artifact.versioning.InvalidVersionSpecificationException
 import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
 import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Plugin;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
 import org.apache.maven.project.ProjectBuildingRequest;
 import org.apache.maven.repository.RepositorySystem;
-import org.apache.maven.shared.artifact.filter.resolve.ScopeFilter;
 import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult;
 import 
org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolver;
 import 
org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolverException;
@@ -54,6 +54,7 @@ import static 
org.apache.maven.artifact.Artifact.SCOPE_COMPILE_PLUS_RUNTIME;
 import static org.apache.maven.artifact.Artifact.SCOPE_RUNTIME;
 import static 
org.apache.maven.artifact.ArtifactUtils.artifactMapByVersionlessId;
 import static 
org.apache.maven.artifact.versioning.VersionRange.createFromVersionSpec;
+import static 
org.apache.maven.shared.artifact.filter.resolve.ScopeFilter.including;
 
 /**
  * Does dependency resolution and artifact handling for the surefire plugin.
@@ -94,11 +95,13 @@ final class SurefireDependencyResolver
 
     private final DependencyResolver depencencyResolver;
 
+    private final boolean offline;
+
     SurefireDependencyResolver( RepositorySystem repositorySystem, 
ConsoleLogger log,
                                 ArtifactRepository localRepository,
                                 List<ArtifactRepository> 
pluginRemoteRepositories,
                                 List<ArtifactRepository> 
projectRemoteRepositories, String pluginName,
-                                DependencyResolver depencencyResolver )
+                                DependencyResolver depencencyResolver, boolean 
offline )
     {
         this.repositorySystem = repositorySystem;
         this.log = log;
@@ -107,6 +110,7 @@ final class SurefireDependencyResolver
         this.projectRemoteRepositories = projectRemoteRepositories;
         this.pluginName = pluginName;
         this.depencencyResolver = depencencyResolver;
+        this.offline = offline;
     }
 
     static boolean isWithinVersionSpec( @Nullable Artifact artifact, @Nonnull 
String versionSpec )
@@ -133,13 +137,14 @@ final class SurefireDependencyResolver
         }
     }
 
-    Set<Artifact> resolvePluginDependencies( ProjectBuildingRequest request, 
Collection<Dependency> pluginDependencies )
+    Set<Artifact> resolvePluginDependencies( ProjectBuildingRequest request, 
Plugin plugin )
             throws MojoExecutionException
     {
+        Collection<Dependency> pluginDependencies = plugin.getDependencies();
         try
         {
             Iterable<ArtifactResult> resolvedPluginDependencies = 
depencencyResolver.resolveDependencies( request,
-                    pluginDependencies, null, ScopeFilter.including( 
SCOPE_COMPILE, SCOPE_RUNTIME ) );
+                pluginDependencies, null, including( SCOPE_COMPILE, 
SCOPE_COMPILE_PLUS_RUNTIME, SCOPE_RUNTIME ) );
 
             Set<Artifact> resolved = new LinkedHashSet<>();
             for ( ArtifactResult resolvedPluginDependency : 
resolvedPluginDependencies )
@@ -156,21 +161,33 @@ final class SurefireDependencyResolver
 
     ArtifactResolutionResult resolvePluginArtifact( Artifact artifact )
     {
-        return resolveArtifact( artifact, pluginRemoteRepositories );
+        return resolvePluginArtifact( artifact, new RuntimeArtifactFilter() );
     }
 
     ArtifactResolutionResult resolveProjectArtifact( Artifact artifact )
     {
-        return resolveArtifact( artifact, projectRemoteRepositories );
+        return resolveProjectArtifact( artifact, new RuntimeArtifactFilter() );
+    }
+
+    private ArtifactResolutionResult resolvePluginArtifact( Artifact artifact, 
ArtifactFilter filter )
+    {
+        return resolveArtifact( artifact, pluginRemoteRepositories, filter );
+    }
+
+    private ArtifactResolutionResult resolveProjectArtifact( Artifact 
artifact, ArtifactFilter filter )
+    {
+        return resolveArtifact( artifact, projectRemoteRepositories, filter );
     }
 
-    private ArtifactResolutionResult resolveArtifact( Artifact artifact, 
List<ArtifactRepository> repositories )
+    private ArtifactResolutionResult resolveArtifact( Artifact artifact, 
List<ArtifactRepository> repositories,
+                                                      ArtifactFilter filter )
     {
         ArtifactResolutionRequest request = new ArtifactResolutionRequest()
+                .setOffline( offline )
                 .setArtifact( artifact )
                 .setLocalRepository( localRepository )
                 .setResolveTransitively( true )
-                .setCollectionFilter( new RuntimeArtifactFilter() )
+                .setCollectionFilter( filter )
                 .setRemoteRepositories( repositories );
 
         return repositorySystem.resolve( request );
@@ -204,36 +221,6 @@ final class SurefireDependencyResolver
         return artifactMapByVersionlessId( getProviderClasspath( 
providerArtifactId, providerVersion ) );
     }
 
-    Set<Artifact> addProviderToClasspath( Map<String, Artifact> 
pluginArtifactMap, Artifact mojoPluginArtifact,
-                                          Artifact surefireApi, Artifact 
surefireLoggerApi )
-    {
-        Set<Artifact> providerArtifacts = new LinkedHashSet<>();
-        ArtifactResolutionResult artifactResolutionResult = 
resolvePluginArtifact( mojoPluginArtifact );
-        for ( Artifact artifact : pluginArtifactMap.values() )
-        {
-            if ( !artifactResolutionResult.getArtifacts().contains( artifact ) 
)
-            {
-                providerArtifacts.add( artifact );
-                for ( Artifact dependency : resolvePluginArtifact( artifact 
).getArtifacts() )
-                {
-                    String groupId = dependency.getGroupId();
-                    String artifactId = dependency.getArtifactId();
-                    if ( groupId.equals( surefireApi.getGroupId() )
-                            && artifactId.equals( surefireApi.getArtifactId() 
) )
-                    {
-                        providerArtifacts.add( surefireApi );
-                    }
-                    else if ( groupId.equals( surefireLoggerApi.getGroupId() )
-                            && artifactId.equals( 
surefireLoggerApi.getArtifactId() ) )
-                    {
-                        providerArtifacts.add( surefireLoggerApi );
-                    }
-                }
-            }
-        }
-        return orderProviderArtifacts( providerArtifacts );
-    }
-
     private static Set<Artifact> orderProviderArtifacts( Set<Artifact> 
providerArtifacts )
     {
         Set<Artifact> orderedProviderArtifacts = new LinkedHashSet<>();
@@ -269,11 +256,24 @@ final class SurefireDependencyResolver
         private static final Collection<String> SCOPES =
                 asList( SCOPE_COMPILE, SCOPE_COMPILE_PLUS_RUNTIME, 
SCOPE_RUNTIME );
 
+        private final Artifact filter;
+
+        RuntimeArtifactFilter()
+        {
+            this( null );
+        }
+
+        RuntimeArtifactFilter( Artifact filter )
+        {
+            this.filter = filter;
+        }
+
         @Override
         public boolean include( Artifact artifact )
         {
             String scope = artifact.getScope();
-            return !artifact.isOptional() && ( scope == null || 
SCOPES.contains( scope ) );
+            return ( filter == null || artifact.equals( filter ) )
+                && !artifact.isOptional() && ( scope == null || 
SCOPES.contains( scope ) );
         }
     }
 }
diff --git 
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
 
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
index 559a0f1..b1e7c1e 100644
--- 
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
+++ 
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
@@ -44,6 +44,7 @@ import org.apache.maven.surefire.booter.Classpath;
 import org.apache.maven.surefire.booter.StartupConfiguration;
 import org.apache.maven.surefire.suite.RunResult;
 import org.codehaus.plexus.logging.Logger;
+import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -110,6 +111,13 @@ public class AbstractSurefireMojoTest
 
     private final Mojo mojo = new Mojo();
 
+    @Before
+    public void setSession()
+    {
+        MavenSession session = mock( MavenSession.class );
+        mojo.setSession( session );
+    }
+
     @Test
     public void shouldShowArray() throws Exception
     {
@@ -630,9 +638,7 @@ public class AbstractSurefireMojoTest
 
         invokeMethod( mojo, "setupStuff" );
 
-        MavenSession session = mock( MavenSession.class );
-        mojo.setSession( session );
-        when( session.getProjectBuildingRequest() )
+        when( mojo.getSession().getProjectBuildingRequest() )
                 .thenReturn( mock( ProjectBuildingRequest.class ) );
 
         PluginDescriptor pluginDescriptor = mock( PluginDescriptor.class );
@@ -929,9 +935,7 @@ public class AbstractSurefireMojoTest
 
         invokeMethod( mojo, "setupStuff" );
 
-        MavenSession session = mock( MavenSession.class );
-        mojo.setSession( session );
-        when( session.getProjectBuildingRequest() )
+        when( mojo.getSession().getProjectBuildingRequest() )
                 .thenReturn( mock( ProjectBuildingRequest.class ) );
 
         PluginDescriptor pluginDescriptor = mock( PluginDescriptor.class );
@@ -1199,9 +1203,7 @@ public class AbstractSurefireMojoTest
 
         invokeMethod( mojo, "setupStuff" );
 
-        MavenSession session = mock( MavenSession.class );
-        mojo.setSession( session );
-        when( session.getProjectBuildingRequest() )
+        when( mojo.getSession().getProjectBuildingRequest() )
                 .thenReturn( mock( ProjectBuildingRequest.class ) );
 
         PluginDescriptor pluginDescriptor = mock( PluginDescriptor.class );
@@ -1538,9 +1540,7 @@ public class AbstractSurefireMojoTest
         JUnitPlatformProviderInfo prov =
                 mojo.createJUnitPlatformProviderInfo( junitPlatformArtifact, 
testClasspathWrapper );
 
-        MavenSession session = mock( MavenSession.class );
-        mojo.setSession( session );
-        when( session.getProjectBuildingRequest() )
+        when( mojo.getSession().getProjectBuildingRequest() )
                 .thenReturn( mock( ProjectBuildingRequest.class ) );
 
         PluginDescriptor pluginDescriptor = mock( PluginDescriptor.class );
diff --git 
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/SurefireDependencyResolverTest.java
 
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/SurefireDependencyResolverTest.java
index 1ea7002..c90a857 100644
--- 
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/SurefireDependencyResolverTest.java
+++ 
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/SurefireDependencyResolverTest.java
@@ -21,38 +21,48 @@ package org.apache.maven.plugin.surefire;
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.DefaultArtifact;
-import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import 
org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import 
org.apache.maven.plugin.surefire.SurefireDependencyResolver.RuntimeArtifactFilter;
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
+import org.apache.maven.project.ProjectBuildingRequest;
 import org.apache.maven.repository.RepositorySystem;
+import org.apache.maven.shared.artifact.filter.resolve.ScopeFilter;
+import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult;
+import 
org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolver;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
+import org.mockito.ArgumentCaptor;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
+import org.powermock.api.mockito.PowerMockito;
 
 import java.io.File;
-import java.util.HashMap;
-import java.util.HashSet;
+import java.util.Collection;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
-import java.util.Map;
 import java.util.Set;
 
-import static java.util.Arrays.asList;
 import static java.util.Collections.singleton;
-import static 
org.apache.maven.artifact.versioning.VersionRange.createFromVersion;
+import static java.util.Collections.singletonList;
+import static org.apache.maven.artifact.Artifact.SCOPE_COMPILE;
+import static org.apache.maven.artifact.Artifact.SCOPE_COMPILE_PLUS_RUNTIME;
+import static org.apache.maven.artifact.Artifact.SCOPE_RUNTIME;
 import static 
org.apache.maven.artifact.versioning.VersionRange.createFromVersionSpec;
 import static 
org.apache.maven.plugin.surefire.SurefireDependencyResolver.PROVIDER_GROUP_ID;
 import static org.fest.assertions.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.isNull;
+import static org.mockito.ArgumentMatchers.same;
 import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.eq;
-import static org.mockito.Mockito.isNull;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 import static org.powermock.reflect.Whitebox.invokeMethod;
 
@@ -114,7 +124,7 @@ public class SurefireDependencyResolverTest
         final Artifact provider = createArtifact( "surefire-junit-platform" );
         RepositorySystem repositorySystem = mock( RepositorySystem.class );
         final ArtifactResolutionResult expectedResult = mock( 
ArtifactResolutionResult.class );
-        when( repositorySystem.resolve( any(  ArtifactResolutionRequest.class 
) ) )
+        when( repositorySystem.resolve( any( ArtifactResolutionRequest.class ) 
) )
                 .then( new Answer<ArtifactResolutionResult>()
                 {
                     @Override
@@ -137,7 +147,9 @@ public class SurefireDependencyResolverTest
                         assertThat( request.getCache() )
                                 .isNull();
                         assertThat( request.getCollectionFilter() )
-                                .isNull();
+                                .isNotNull();
+                        assertThat( request.getCollectionFilter() )
+                                .isInstanceOf( RuntimeArtifactFilter.class );
                         assertThat( request.getManagedVersionMap() )
                                 .isNull();
                         assertThat( request.getMirrors() )
@@ -153,7 +165,7 @@ public class SurefireDependencyResolverTest
                 } );
 
         SurefireDependencyResolver surefireDependencyResolver =
-                new SurefireDependencyResolver( repositorySystem, null, null, 
null, null, null, null );
+                new SurefireDependencyResolver( repositorySystem, null, null, 
null, null, null, null, false );
 
         ArtifactResolutionResult actualResult = 
surefireDependencyResolver.resolvePluginArtifact( provider );
 
@@ -182,8 +194,6 @@ public class SurefireDependencyResolverTest
         providerArtifacts.add( ext );
         providerArtifacts.add( logger );
 
-        final String providerVersion = "5.3.1";
-
         final ArtifactResolutionResult result = mock( 
ArtifactResolutionResult.class );
         when( result.getArtifacts() )
                 .thenReturn( providerArtifacts );
@@ -212,7 +222,9 @@ public class SurefireDependencyResolverTest
                         assertThat( request.getCache() )
                                 .isNull();
                         assertThat( request.getCollectionFilter() )
-                                .isNull();
+                                .isNotNull();
+                        assertThat( request.getCollectionFilter() )
+                                .isInstanceOf( RuntimeArtifactFilter.class );
                         assertThat( request.getManagedVersionMap() )
                                 .isNull();
                         assertThat( request.getMirrors() )
@@ -237,15 +249,15 @@ public class SurefireDependencyResolverTest
                                 .hasSize( 1 );
                         Dependency request = (Dependency) args[0];
                         assertThat( request.getGroupId() )
-                                .isEqualTo( "org.apache.maven.surefire" );
+                                .isEqualTo( provider.getGroupId() );
                         assertThat( request.getArtifactId() )
-                                .isEqualTo( "surefire-junit-platform" );
+                                .isEqualTo( provider.getArtifactId() );
                         assertThat( request.getVersion() )
-                                .isEqualTo( providerVersion );
+                                .isEqualTo( provider.getVersion() );
                         assertThat( request.getType() )
-                                .isEqualTo( "jar" );
+                                .isEqualTo( provider.getType() );
                         assertThat( request.getScope() )
-                                .isEqualTo( "test" );
+                                .isNull();
                         return provider;
                     }
                 } );
@@ -253,12 +265,12 @@ public class SurefireDependencyResolverTest
         ConsoleLogger log = mock( ConsoleLogger.class );
 
         SurefireDependencyResolver surefireDependencyResolver =
-                new SurefireDependencyResolver( repositorySystem, log, null, 
null, null, null, null );
+                new SurefireDependencyResolver( repositorySystem, log, null, 
null, null, null, null, false );
 
         when( log.isDebugEnabled() )
                 .thenReturn( true );
 
-        Set<Artifact> classpath = 
surefireDependencyResolver.getProviderClasspath( "surefire-junit-platform", 
"5.3.1" );
+        Set<Artifact> classpath = 
surefireDependencyResolver.getProviderClasspath( "surefire-junit-platform", "1" 
);
 
         assertThat( classpath )
                 .hasSize( 4 );
@@ -281,101 +293,57 @@ public class SurefireDependencyResolverTest
     @Test
     public void testAddProviderToClasspath() throws Exception
     {
-        final Artifact plugin = createArtifact( "maven-surefire-plugin" );
-        final Artifact common = createArtifact( "maven-surefire-common" );
-        final Artifact api = createArtifact( "surefire-api" );
-        final Artifact provider = createArtifact( "surefire-junit-platform" );
-        final Artifact ext = createArtifact( "org.apiguardian", 
"apiguardian-api" );
-        final Artifact logger = createArtifact( "surefire-logger-api" );
-
-        Set<Artifact> pluginArtifacts = new LinkedHashSet<>();
-        pluginArtifacts.add( plugin );
-        pluginArtifacts.add( common );
-        pluginArtifacts.add( api );
-        pluginArtifacts.add( logger );
-
-        ArtifactFactory artifactFactory = mock( ArtifactFactory.class );
-        VersionRange pluginVersion = createFromVersion( "3.0.0" );
-        when( artifactFactory.createDependencyArtifact( eq( 
"org.apache.maven.surefire" ),
-                eq( "maven-surefire-plugin" ),
-                eq( pluginVersion ),
-                eq( "jar" ),
-                isNull( String.class ),
-                eq( "compile" ) ) )
-                .thenReturn( plugin );
-
-        final ArtifactResolutionResult pluginResult = mock( 
ArtifactResolutionResult.class );
-        when( pluginResult.getArtifacts() )
-                .thenReturn( pluginArtifacts );
-
-        final ArtifactResolutionResult apiResult = mock( 
ArtifactResolutionResult.class );
-        when( apiResult.getArtifacts() )
-                .thenReturn( singleton( api ) );
-
-        final ArtifactResolutionResult loggerResult = mock( 
ArtifactResolutionResult.class );
-        when( loggerResult.getArtifacts() )
-                .thenReturn( singleton( logger ) );
-
-        final ArtifactResolutionResult extResult = mock( 
ArtifactResolutionResult.class );
-        when( extResult.getArtifacts() )
-                .thenReturn( singleton( ext ) );
-
-        final ArtifactResolutionResult providerResult = mock( 
ArtifactResolutionResult.class );
-        when( providerResult.getArtifacts() )
-                .thenReturn( new HashSet<>( asList( provider, api, logger, ext 
) ) );
+        Dependency providerAsDependency = new Dependency();
+        providerAsDependency.setGroupId( PROVIDER_GROUP_ID );
+        providerAsDependency.setArtifactId( "surefire-shadefire" );
+        providerAsDependency.setVersion( "1" );
 
-        RepositorySystem repositorySystem = mock( RepositorySystem.class );
-        when( repositorySystem.resolve( any(  ArtifactResolutionRequest.class 
) ) )
-                .then( new Answer<ArtifactResolutionResult>()
-                {
-                    @Override
-                    public ArtifactResolutionResult answer( InvocationOnMock 
invocation )
-                    {
-                        Object[] args = invocation.getArguments();
-                        assertThat( args ).hasSize( 1 );
-                        ArtifactResolutionRequest request = 
(ArtifactResolutionRequest) args[0];
-                        Artifact artifactToResolve = request.getArtifact();
-                        if ( artifactToResolve == plugin )
-                        {
-                            return pluginResult;
-                        }
-                        else if ( artifactToResolve == provider )
-                        {
-                            return providerResult;
-                        }
-                        else if ( artifactToResolve == api )
-                        {
-                            return apiResult;
-                        }
-                        else if ( artifactToResolve == logger )
-                        {
-                            return loggerResult;
-                        }
-                        else if ( artifactToResolve == ext )
-                        {
-                            return extResult;
-                        }
-                        throw new AssertionError( "what artifact are we going 
to resolve? " + artifactToResolve );
-                    }
-                } );
+        final Artifact providerAsArtifact = createArtifact( 
"surefire-shadefire" );
+
+        PluginDescriptor pluginDescriptor = PowerMockito.mock( 
PluginDescriptor.class );
+        Plugin plugin = PowerMockito.mock( Plugin.class );
+        when( pluginDescriptor.getPlugin() )
+            .thenReturn( plugin );
+        when( plugin.getDependencies() )
+            .thenReturn( singletonList( providerAsDependency ) );
 
+        DependencyResolver depencencyResolver = mock( DependencyResolver.class 
);
         SurefireDependencyResolver surefireDependencyResolver =
-                new SurefireDependencyResolver( repositorySystem, null, null, 
null, null, null, null );
-
-        Map<String, Artifact> pluginArtifactsMapping = new HashMap<>();
-        pluginArtifactsMapping.put( plugin.getGroupId() + ":" + 
plugin.getArtifactId(), plugin );
-        pluginArtifactsMapping.put( common.getGroupId() + ":" + 
common.getArtifactId(), common );
-        pluginArtifactsMapping.put( api.getGroupId() + ":" + 
api.getArtifactId(), api );
-        pluginArtifactsMapping.put( logger.getGroupId() + ":" + 
logger.getArtifactId(), logger );
-        pluginArtifactsMapping.put( provider.getGroupId() + ":" + 
provider.getArtifactId(), provider );
-        pluginArtifactsMapping.put( ext.getGroupId() + ":" + 
ext.getArtifactId(), ext );
-
-        Set<Artifact> cp =
-                surefireDependencyResolver.addProviderToClasspath( 
pluginArtifactsMapping, plugin, api, logger );
-
-        assertThat( cp )
-                .hasSize( 4 )
-                .containsOnly( provider, api, logger, ext );
+            new SurefireDependencyResolver( null, null, null, null, null, 
null, depencencyResolver, false );
+
+        ProjectBuildingRequest request = mock( ProjectBuildingRequest.class );
+
+        ArgumentCaptor<Collection<Dependency>> dep = ArgumentCaptor.forClass( 
Collection.class );
+        ArgumentCaptor<ScopeFilter> filter = ArgumentCaptor.forClass( 
ScopeFilter.class );
+        ArtifactResult result = mock( ArtifactResult.class );
+        when( result.getArtifact() ).thenReturn( providerAsArtifact );
+        when( depencencyResolver.resolveDependencies( same( request ), 
dep.capture(), isNull( Collection.class ),
+            filter.capture() ) )
+            .thenReturn( singleton( result ) );
+
+        final ArtifactResolutionResult resolutionResult = mock( 
ArtifactResolutionResult.class );
+        when( resolutionResult.getArtifacts() )
+            .thenReturn( singleton( providerAsArtifact ) );
+
+        Set<Artifact> providers = 
surefireDependencyResolver.resolvePluginDependencies( request, plugin );
+
+        verify( depencencyResolver, times( 1 ) )
+            .resolveDependencies( request, dep.getValue(), null, 
filter.getValue() );
+
+        assertThat( providers )
+            .hasSize( 1 )
+            .containsOnly( providerAsArtifact );
+
+        assertThat( dep.getValue() )
+            .hasSize( 1 )
+            .containsOnly( providerAsDependency );
+
+        assertThat( filter.getValue().getIncluded() )
+            .containsOnly( SCOPE_COMPILE, SCOPE_COMPILE_PLUS_RUNTIME, 
SCOPE_RUNTIME );
+
+        assertThat( filter.getValue().getExcluded() )
+
+            .isNull();
     }
 
     @Test
@@ -424,7 +392,6 @@ public class SurefireDependencyResolverTest
         return createArtifact( PROVIDER_GROUP_ID, artifactId );
     }
 
-
     private static Artifact createArtifact( String groupId, String artifactId )
             throws InvalidVersionSpecificationException
     {
diff --git a/pom.xml b/pom.xml
index 0f6d440..1bcb356 100644
--- a/pom.xml
+++ b/pom.xml
@@ -219,11 +219,15 @@
         <exclusions>
           <exclusion>
             <groupId>org.apache.maven.shared</groupId>
-            <artifactId>maven-plugin-testing-harness</artifactId>
+            <artifactId>maven-shared-utils</artifactId>
           </exclusion>
           <exclusion>
-            <groupId>org.apache.maven.shared</groupId>
-            <artifactId>maven-shared-utils</artifactId>
+            <groupId>org.apache.maven</groupId>
+             <artifactId>maven-model</artifactId>
+          </exclusion>
+          <exclusion>
+             <groupId>org.sonatype.sisu</groupId>
+             <artifactId>sisu-inject-plexus</artifactId>
           </exclusion>
         </exclusions>
       </dependency>

Reply via email to