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/01/21 23:07:47 UTC

[maven-surefire] branch resolver updated (7e9c037 -> 0d0db5c)

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

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


    omit 7e9c037  deps
    omit 0032b33  unit tests
    omit 041fe00  dependencies for dynamic provider contain Maven artifacts from the MOJO plugin
     add bbce91a  Use Surefire's StringUtils instead of JUnit's
     add d49f4da  Upgrade JUnit to 5.6 and JQwik to 1.2.2
     add 72aa2c1  Delete is{Not}Blank from internal StringUtils
     new 0d0db5c  dependencies for dynamic provider contain Maven artifacts from the MOJO plugin

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (7e9c037)
            \
             N -- N -- N   refs/heads/resolver (0d0db5c)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 maven-failsafe-plugin/pom.xml                      |  5 --
 .../failsafe/util/FailsafeSummaryXmlUtils.java     |  2 +-
 .../plugin/surefire/AbstractSurefireMojo.java      | 13 +--
 .../surefire/SurefireDependencyResolver.java       | 39 ++-------
 .../maven/plugin/surefire/SurefireProperties.java  |  2 +-
 .../surefire/booterclient/output/ForkClient.java   |  4 +-
 .../booterclient/output/ForkedChannelDecoder.java  |  4 +-
 .../maven/plugin/surefire/report/FileReporter.java |  2 +-
 .../surefire/report/StatelessXmlReporter.java      |  2 +-
 .../plugin/surefire/report/WrappedReportEntry.java |  2 +-
 .../maven/plugin/surefire/util/FileScanner.java    |  2 +-
 .../surefire/SurefireDependencyResolverTest.java   | 93 +++++++++-------------
 pom.xml                                            | 10 +--
 .../org/apache/maven/surefire/booter/Command.java  |  2 +-
 .../maven/surefire/booter/CommandReader.java       |  4 +-
 .../maven/surefire/util/internal/ClassMethod.java  |  2 +-
 .../maven/surefire/util/internal/StringUtils.java  | 26 ------
 .../maven/surefire/booter/ProcessCheckerType.java  |  2 +-
 .../maven/surefire/booter/PropertiesWrapper.java   |  2 +-
 .../booter/SurefireBooterForkException.java        |  2 +-
 .../surefire/extensions/ConsoleOutputReporter.java |  2 +-
 .../surefire/extensions/StatelessReporter.java     |  2 +-
 .../apache/maven/surefire/its/JUnitPlatformIT.java |  4 +-
 .../common/junit4/JUnit4RunListenerFactory.java    |  2 +-
 .../surefire/common/junit48/FilterFactory.java     |  2 +-
 .../junitplatform/JUnitPlatformProvider.java       |  4 +-
 .../surefire/testng/TestNGDirectoryTestSuite.java  |  2 +-
 .../maven/surefire/testng/TestNGExecutor.java      |  2 +-
 28 files changed, 78 insertions(+), 162 deletions(-)


[maven-surefire] 01/01: dependencies for dynamic provider contain Maven artifacts from the MOJO plugin

Posted by ti...@apache.org.
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 0d0db5c83284ea4376fce252ed8379d9c191b22a
Author: tibordigana <ti...@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      |  14 +-
 .../surefire/SurefireDependencyResolver.java       |  75 +++++----
 .../surefire/SurefireDependencyResolverTest.java   | 185 +++++++++------------
 pom.xml                                            |  10 +-
 5 files changed, 127 insertions(+), 162 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..9387b54 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;
@@ -3015,9 +3015,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 +3219,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..f430fc4 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.
@@ -133,13 +134,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 +158,35 @@ 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 resolveArtifact( Artifact artifact, List<ArtifactRepository> repositories )
+    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,
+                                                      ArtifactFilter filter )
     {
         ArtifactResolutionRequest request = new ArtifactResolutionRequest()
+                //.setOffline(  )
+                // .setForceUpdate(  )
+                // set mirrors, proxies, servers - see MavenSession.Settings
                 .setArtifact( artifact )
                 .setLocalRepository( localRepository )
                 .setResolveTransitively( true )
-                .setCollectionFilter( new RuntimeArtifactFilter() )
+                .setCollectionFilter( filter )
                 .setRemoteRepositories( repositories );
 
         return repositorySystem.resolve( request );
@@ -204,36 +220,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 +255,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/SurefireDependencyResolverTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/SurefireDependencyResolverTest.java
index 1ea7002..e593cc6 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() )
@@ -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;
                     }
                 } );
@@ -258,7 +270,7 @@ public class SurefireDependencyResolverTest
         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 );
+            new SurefireDependencyResolver( null, null, null, null, null, null, depencencyResolver );
+
+        ProjectBuildingRequest request = mock( ProjectBuildingRequest.class );
 
-        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 );
+        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 ) );
 
-        Set<Artifact> cp =
-                surefireDependencyResolver.addProviderToClasspath( pluginArtifactsMapping, plugin, api, logger );
+        final ArtifactResolutionResult resolutionResult = mock( ArtifactResolutionResult.class );
+        when( resolutionResult.getArtifacts() )
+            .thenReturn( singleton( providerAsArtifact ) );
 
-        assertThat( cp )
-                .hasSize( 4 )
-                .containsOnly( provider, api, logger, ext );
+        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>