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/05/10 01:05:00 UTC

[maven-surefire] branch SUREFIRE-1787 updated: resolved real dependencies from plugin and more assertion statements in test

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

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


The following commit(s) were added to refs/heads/SUREFIRE-1787 by this push:
     new e5a6201  resolved real dependencies from plugin and more assertion statements in test
e5a6201 is described below

commit e5a6201755ee894143e1f0fc130512afa3f4198b
Author: tibordigana <ti...@apache.org>
AuthorDate: Sun May 10 03:04:51 2020 +0200

    resolved real dependencies from plugin and more assertion statements in test
---
 .../plugin/surefire/AbstractSurefireMojo.java      |   5 +-
 .../surefire/SurefireDependencyResolver.java       |  18 +-
 .../plugin/surefire/AbstractSurefireMojoTest.java  | 283 ++++++++++++---------
 .../surefire/SurefireDependencyResolverTest.java   |   6 +-
 4 files changed, 183 insertions(+), 129 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 67686ce..b9258fc 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
@@ -3140,7 +3140,8 @@ public abstract class AbstractSurefireMojo
 
             ProjectBuildingRequest request = getSession().getProjectBuildingRequest();
             Plugin plugin = getPluginDescriptor().getPlugin();
-            Map<String, Artifact> engines = surefireDependencyResolver.resolvePluginDependencies( request, plugin );
+            Map<String, Artifact> engines =
+                surefireDependencyResolver.resolvePluginDependencies( request, plugin, getPluginArtifactMap() );
 
             if ( hasDependencyPlatformEngine( engines ) )
             {
@@ -3336,7 +3337,7 @@ public abstract class AbstractSurefireMojo
             ProjectBuildingRequest request = getSession().getProjectBuildingRequest();
             Plugin plugin = getPluginDescriptor().getPlugin();
             Map<String, Artifact> providerArtifacts =
-                surefireDependencyResolver.resolvePluginDependencies( request, plugin );
+                surefireDependencyResolver.resolvePluginDependencies( request, plugin, getPluginArtifactMap() );
             return new LinkedHashSet<>( providerArtifacts.values() );
         }
     }
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 63d5582..b6ce700 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
@@ -139,20 +139,26 @@ final class SurefireDependencyResolver
         }
     }
 
-    Map<String, Artifact> resolvePluginDependencies( ProjectBuildingRequest request, Plugin plugin )
+    Map<String, Artifact> resolvePluginDependencies( ProjectBuildingRequest request,
+                                                     Plugin plugin, Map<String, Artifact> pluginResolvedDependencies )
             throws MojoExecutionException
     {
         Collection<Dependency> pluginDependencies = plugin.getDependencies();
         try
         {
-            Iterable<ArtifactResult> resolvedPluginDependencies = dependencyResolver.resolveDependencies( request,
-                pluginDependencies, null, including( SCOPE_COMPILE, SCOPE_COMPILE_PLUS_RUNTIME, SCOPE_RUNTIME ) );
+            Iterable<ArtifactResult> resolvedArtifacts = dependencyResolver.resolveDependencies( request,
+                pluginDependencies, null, including( RuntimeArtifactFilter.SCOPES ) );
 
             Map<String, Artifact> resolved = new LinkedHashMap<>();
-            for ( ArtifactResult resolvedPluginDependency : resolvedPluginDependencies )
+            for ( ArtifactResult resolvedArtifact : resolvedArtifacts )
             {
-                Artifact artifact = resolvedPluginDependency.getArtifact();
-                resolved.put( artifact.getGroupId() + ":" + artifact.getArtifactId(), artifact );
+                Artifact artifact = resolvedArtifact.getArtifact();
+                String key = artifact.getGroupId() + ":" + artifact.getArtifactId();
+                Artifact resolvedPluginDependency = pluginResolvedDependencies.get( key );
+                if ( resolvedPluginDependency != null )
+                {
+                    resolved.put( key, artifact );
+                }
             }
             return resolved;
         }
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 158a14c..7ed96b3 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
@@ -79,7 +79,6 @@ import static java.util.Arrays.asList;
 import static java.util.Collections.emptySet;
 import static java.util.Collections.singleton;
 import static java.util.Collections.singletonList;
-import static java.util.Collections.singletonMap;
 import static org.apache.maven.surefire.shared.lang3.SystemUtils.IS_OS_WINDOWS;
 import static org.apache.maven.artifact.versioning.VersionRange.createFromVersion;
 import static org.apache.maven.artifact.versioning.VersionRange.createFromVersionSpec;
@@ -116,16 +115,26 @@ public class AbstractSurefireMojoTest
     private final Mojo mojo = new Mojo();
 
     @Before
-    public void setSession()
+    public void setupMojo()
     {
+        Artifact mojoArtifact = mojo.getMojoArtifact();
+
+        mojo.setPluginArtifactMap( new LinkedHashMap<String, Artifact>() );
+        mojo.getPluginArtifactMap().put( mojoArtifact.getGroupId() + ":" + mojoArtifact.getArtifactId(), mojoArtifact );
+        Artifact forkedBooter = new DefaultArtifact( "org.apache.maven.surefire", "surefire-booter",
+            mojoArtifact.getVersion(), null, "jar", null, mock( ArtifactHandler.class ) );
+        mojo.getPluginArtifactMap().put( "org.apache.maven.surefire:surefire-booter", forkedBooter );
+
+        mojo.setProjectArtifactMap( new LinkedHashMap<String, Artifact>() );
+
         MavenSession session = mock( MavenSession.class );
         mojo.setSession( session );
 
         PluginDescriptor pluginDescriptor = mock( PluginDescriptor.class );
         Plugin plugin = new Plugin();
-        plugin.setGroupId( "org.apache.maven.surefire" );
-        plugin.setArtifactId( "maven-surefire-plugin" );
-        plugin.setVersion( "1" );
+        plugin.setGroupId( mojoArtifact.getGroupId() );
+        plugin.setArtifactId( mojoArtifact.getArtifactId() );
+        plugin.setVersion( mojoArtifact.getVersion() );
         when( pluginDescriptor.getPlugin() ).thenReturn( plugin );
         mojo.setPluginDescriptor( pluginDescriptor );
     }
@@ -567,6 +576,8 @@ public class AbstractSurefireMojoTest
         Artifact testClasspathHamcrest = new DefaultArtifact( "org.hamcrest", "hamcrest-core",
             createFromVersion( "1.3" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
+        setProjectDepedenciesToMojo( testClasspathJUnit, testClasspathHamcrest );
+
         Collection<Artifact> testArtifacts = new ArrayList<>();
         testArtifacts.add( testClasspathJUnit );
         testArtifacts.add( testClasspathHamcrest );
@@ -578,10 +589,6 @@ public class AbstractSurefireMojoTest
         TestClassPath testClasspathWrapper =
                 new TestClassPath( testArtifacts, classesDirectory, testClassesDirectory, null );
 
-        Artifact forkedBooter = new DefaultArtifact( "org.apache.maven.surefire",
-                "surefire-booter", surefireVersion, null, "jar", null, mock( ArtifactHandler.class ) );
-
-        mojo.setPluginArtifactMap( singletonMap( "org.apache.maven.surefire:surefire-booter", forkedBooter ) );
         mojo.setRemoteRepositories( Collections.<ArtifactRepository>emptyList() );
         mojo.setProjectRemoteRepositories( Collections.<ArtifactRepository>emptyList() );
         RepositorySystem repositorySystem = mock( RepositorySystem.class );
@@ -649,6 +656,29 @@ public class AbstractSurefireMojoTest
         when( surefireProviderResolutionResult.getArtifacts() )
                 .thenReturn( providerArtifacts );
 
+        final Artifact pluginDep1 = new DefaultArtifact( "org.junit.vintage", "junit-vintage-engine",
+            createFromVersion( "5.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+        final Artifact pluginDep2 = new DefaultArtifact( "org.apiguardian", "apiguardian-api",
+            createFromVersion( "1.0.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+        final Artifact pluginDep3 = new DefaultArtifact( "org.junit.platform", "junit-platform-engine",
+            createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+        final Artifact pluginDep4 = new DefaultArtifact( "junit", "junit",
+            createFromVersion( "4.12" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+        final Artifact pluginDep5 = new DefaultArtifact( "org.hamcrest", "hamcrest-core",
+            createFromVersion( "1.3" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+        final Artifact pluginDep6 = new DefaultArtifact( "org.opentest4j", "opentest4j",
+            createFromVersion( "1.1.1" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+        final Artifact pluginDep7 = new DefaultArtifact( "org.junit.platform", "junit-platform-commons",
+            createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
+        addPluginDependencies( pluginDep1, pluginDep2, pluginDep3, pluginDep4, pluginDep5, pluginDep6, pluginDep7 );
+
         mojo.setRepositorySystem( repositorySystem );
         mojo.setLogger( mock( Logger.class ) );
         mojo.setDependencyResolver( new DependencyResolverMock()
@@ -665,35 +695,14 @@ public class AbstractSurefireMojoTest
                 assertThat( pluginDependency.getArtifactId() ).isEqualTo( "junit-vintage-engine" );
                 assertThat( pluginDependency.getVersion() ).isEqualTo( "5.4.0" );
 
-                Artifact a1 = new DefaultArtifact( "org.junit.vintage", "junit-vintage-engine",
-                    createFromVersion( "5.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
-
-                Artifact a2 = new DefaultArtifact( "org.apiguardian", "apiguardian-api",
-                    createFromVersion( "1.0.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
-
-                Artifact a3 = new DefaultArtifact( "org.junit.platform", "junit-platform-engine",
-                    createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
-
-                Artifact a4 = new DefaultArtifact( "junit", "junit",
-                    createFromVersion( "4.12" ), null, "jar", null, mock( ArtifactHandler.class ) );
-
-                Artifact a5 = new DefaultArtifact( "org.hamcrest", "hamcrest-core",
-                    createFromVersion( "1.3" ), null, "jar", null, mock( ArtifactHandler.class ) );
-
-                Artifact a6 = new DefaultArtifact( "org.opentest4j", "opentest4j",
-                    createFromVersion( "1.1.1" ), null, "jar", null, mock( ArtifactHandler.class ) );
-
-                final Artifact a7 = new DefaultArtifact( "org.junit.platform", "junit-platform-commons",
-                    createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
-
                 Collection<ArtifactResult> it = new ArrayList<>();
-                it.add( toArtifactResult( a1 ) );
-                it.add( toArtifactResult( a2 ) );
-                it.add( toArtifactResult( a3 ) );
-                it.add( toArtifactResult( a4 ) );
-                it.add( toArtifactResult( a5 ) );
-                it.add( toArtifactResult( a6 ) );
-                it.add( toArtifactResult( a7 ) );
+                it.add( toArtifactResult( pluginDep1 ) );
+                it.add( toArtifactResult( pluginDep2 ) );
+                it.add( toArtifactResult( pluginDep3 ) );
+                it.add( toArtifactResult( pluginDep4 ) );
+                it.add( toArtifactResult( pluginDep5 ) );
+                it.add( toArtifactResult( pluginDep6 ) );
+                it.add( toArtifactResult( pluginDep7 ) );
                 return it;
             }
         } );
@@ -713,11 +722,16 @@ public class AbstractSurefireMojoTest
         when( p.getDependencies() )
                 .thenReturn( singletonList( toDependency( pluginDependency ) ) );
 
-        Artifact pluginTransitiveDependency = new DefaultArtifact( "org.junit.platform", "junit-platform-launcher",
-            createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
+        Artifact junitPlatformArtifact = invokeMethod( mojo, "getJUnit5Artifact" );
+        assertThat( junitPlatformArtifact.getGroupId() ).isEqualTo( "org.junit.platform" );
+        assertThat( junitPlatformArtifact.getArtifactId() ).isEqualTo( "junit-platform-engine" );
+        assertThat( junitPlatformArtifact.getVersion() ).isEqualTo( "1.4.0" );
 
         JUnitPlatformProviderInfo prov =
-                mojo.createJUnitPlatformProviderInfo( pluginTransitiveDependency, testClasspathWrapper );
+                mojo.createJUnitPlatformProviderInfo( junitPlatformArtifact, testClasspathWrapper );
+
+        assertThat( prov.isApplicable() )
+            .isTrue();
 
         Artifact expectedProvider = new DefaultArtifact( "org.apache.maven.surefire", "surefire-junit-platform",
                 surefireVersion, null, "jar", null, mock( ArtifactHandler.class ) );
@@ -780,10 +794,12 @@ public class AbstractSurefireMojoTest
         Artifact testClasspathCommons = new DefaultArtifact( "org.junit.platform", "junit-platform-commons",
                 createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
-        Iterable<Artifact> testArtifacts = asList( testClasspathSomeTestArtifact, testClasspathVintage,
+        Collection<Artifact> testArtifacts = asList( testClasspathSomeTestArtifact, testClasspathVintage,
                 testClasspathApiguardian, testClasspathPlatformEng, testClasspathJUnit4, testClasspathHamcrest,
                 testClasspathOpentest4j, testClasspathCommons );
 
+        setProjectDepedenciesToMojo( testArtifacts.toArray( new Artifact[testArtifacts.size()] ) );
+
         File classesDirectory = new File( "target/classes" );
 
         File testClassesDirectory = new File( "target/test-classes" );
@@ -791,10 +807,6 @@ public class AbstractSurefireMojoTest
         TestClassPath testClasspathWrapper =
                 new TestClassPath( testArtifacts, classesDirectory, testClassesDirectory, null );
 
-        Artifact forkedBooter = new DefaultArtifact( "org.apache.maven.surefire",
-                "surefire-booter", surefireVersion, null, "jar", null, mock( ArtifactHandler.class ) );
-
-        mojo.setPluginArtifactMap( singletonMap( "org.apache.maven.surefire:surefire-booter", forkedBooter ) );
         mojo.setRemoteRepositories( Collections.<ArtifactRepository>emptyList() );
         mojo.setProjectRemoteRepositories( Collections.<ArtifactRepository>emptyList() );
         RepositorySystem repositorySystem = mock( RepositorySystem.class );
@@ -886,8 +898,16 @@ public class AbstractSurefireMojoTest
         when( p.getDependencies() )
             .thenReturn( Collections.<Dependency>emptyList() );
 
+        Artifact junitPlatformArtifact = invokeMethod( mojo, "getJUnit5Artifact" );
+        assertThat( junitPlatformArtifact.getGroupId() ).isEqualTo( "org.junit.platform" );
+        assertThat( junitPlatformArtifact.getArtifactId() ).isEqualTo( "junit-platform-commons" );
+        assertThat( junitPlatformArtifact.getVersion() ).isEqualTo( "1.4.0" );
+
         JUnitPlatformProviderInfo prov =
-                mojo.createJUnitPlatformProviderInfo( testClasspathCommons, testClasspathWrapper );
+                mojo.createJUnitPlatformProviderInfo( junitPlatformArtifact, testClasspathWrapper );
+
+        assertThat( prov.isApplicable() )
+            .isTrue();
 
         Artifact expectedProvider = new DefaultArtifact( "org.apache.maven.surefire", "surefire-junit-platform",
                 surefireVersion, null, "jar", null, mock( ArtifactHandler.class ) );
@@ -930,9 +950,11 @@ public class AbstractSurefireMojoTest
         Artifact testClasspathApiguardian = new DefaultArtifact( "org.apiguardian", "apiguardian-api",
                 createFromVersion( "1.0.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
-        Iterable<Artifact> testArtifacts =
+        Collection<Artifact> testArtifacts =
                 asList( testClasspathSomeTestArtifact, testClasspathApiguardian, testClasspathCommons );
 
+        setProjectDepedenciesToMojo( testArtifacts.toArray( new Artifact[testArtifacts.size()] ) );
+
         File classesDirectory = new File( "target/classes" );
 
         File testClassesDirectory = new File( "target/test-classes" );
@@ -940,10 +962,6 @@ public class AbstractSurefireMojoTest
         TestClassPath testClasspathWrapper =
                 new TestClassPath( testArtifacts, classesDirectory, testClassesDirectory, null );
 
-        Artifact forkedBooter = new DefaultArtifact( "org.apache.maven.surefire",
-                "surefire-booter", surefireVersion, null, "jar", null, mock( ArtifactHandler.class ) );
-
-        mojo.setPluginArtifactMap( singletonMap( "org.apache.maven.surefire:surefire-booter", forkedBooter ) );
         mojo.setRemoteRepositories( Collections.<ArtifactRepository>emptyList() );
         mojo.setProjectRemoteRepositories( Collections.<ArtifactRepository>emptyList() );
         RepositorySystem repositorySystem = mock( RepositorySystem.class );
@@ -1015,8 +1033,17 @@ public class AbstractSurefireMojoTest
         when( p.getDependencies() )
                 .thenReturn( Collections.<Dependency>emptyList() );
 
+        Artifact junitPlatformArtifact = invokeMethod( mojo, "getJUnit5Artifact" );
+        assertThat( junitPlatformArtifact.getGroupId() ).isEqualTo( "org.junit.platform" );
+        assertThat( junitPlatformArtifact.getArtifactId() ).isEqualTo( "junit-platform-commons" );
+        assertThat( junitPlatformArtifact.getVersion() ).isEqualTo( "1.4.0" );
+
         JUnitPlatformProviderInfo prov =
-                mojo.createJUnitPlatformProviderInfo( testClasspathCommons, testClasspathWrapper );
+                mojo.createJUnitPlatformProviderInfo( junitPlatformArtifact, testClasspathWrapper );
+
+        assertThat( prov.isApplicable() )
+            .isTrue();
+
         Set<Artifact> resolvedProviderArtifacts = prov.getProviderClasspath();
 
         Artifact provider = new DefaultArtifact( "org.apache.maven.surefire", "surefire-junit-platform",
@@ -1065,9 +1092,11 @@ public class AbstractSurefireMojoTest
         final Artifact testClasspathOpentest4j = new DefaultArtifact( "org.opentest4j", "opentest4j",
                 createFromVersion( "1.1.1" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
-        Iterable<Artifact> testArtifacts = asList( testClasspathSomeTestArtifact, testClasspathJUnit5,
+        Collection<Artifact> testArtifacts = asList( testClasspathSomeTestArtifact, testClasspathJUnit5,
                 testClasspathApiguardian, testClasspathCommons, testClasspathOpentest4j );
 
+        setProjectDepedenciesToMojo( testArtifacts.toArray( new Artifact[testArtifacts.size()] ) );
+
         File classesDirectory = new File( "target/classes" );
 
         File testClassesDirectory = new File( "target/test-classes" );
@@ -1075,10 +1104,6 @@ public class AbstractSurefireMojoTest
         TestClassPath testClasspathWrapper =
                 new TestClassPath( testArtifacts, classesDirectory, testClassesDirectory, null );
 
-        Artifact forkedBooter = new DefaultArtifact( "org.apache.maven.surefire",
-                "surefire-booter", surefireVersion, null, "jar", null, mock( ArtifactHandler.class ) );
-
-        mojo.setPluginArtifactMap( singletonMap( "org.apache.maven.surefire:surefire-booter", forkedBooter ) );
         mojo.setRemoteRepositories( Collections.<ArtifactRepository>emptyList() );
         mojo.setProjectRemoteRepositories( Collections.<ArtifactRepository>emptyList() );
         RepositorySystem repositorySystem = mock( RepositorySystem.class );
@@ -1138,8 +1163,18 @@ public class AbstractSurefireMojoTest
         } );
 
         invokeMethod( mojo, "setupStuff" );
+
+        Artifact junitPlatformArtifact = invokeMethod( mojo, "getJUnit5Artifact" );
+        assertThat( junitPlatformArtifact.getGroupId() ).isEqualTo( "org.junit.platform" );
+        assertThat( junitPlatformArtifact.getArtifactId() ).isEqualTo( "junit-platform-commons" );
+        assertThat( junitPlatformArtifact.getVersion() ).isEqualTo( "1.4.0" );
+
         JUnitPlatformProviderInfo prov =
-                mojo.createJUnitPlatformProviderInfo( testClasspathCommons, testClasspathWrapper );
+                mojo.createJUnitPlatformProviderInfo( junitPlatformArtifact, testClasspathWrapper );
+
+        assertThat( prov.isApplicable() )
+            .isTrue();
+
         Set<Artifact> resolvedProviderArtifacts = prov.getProviderClasspath();
 
         Artifact java5 = new DefaultArtifact( "org.apache.maven.surefire", "common-java5",
@@ -1184,9 +1219,11 @@ public class AbstractSurefireMojoTest
         final Artifact testClasspathOpentest4j = new DefaultArtifact( "org.opentest4j", "opentest4j",
                 createFromVersion( "1.1.1" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
-        Iterable<Artifact> testArtifacts = asList( testClasspathSomeTestArtifact, testClasspathJupiterApi,
+        Collection<Artifact> testArtifacts = asList( testClasspathSomeTestArtifact, testClasspathJupiterApi,
                 testClasspathApiguardian, testClasspathCommons, testClasspathOpentest4j );
 
+        setProjectDepedenciesToMojo( testArtifacts.toArray( new Artifact[testArtifacts.size()] ) );
+
         File classesDirectory = new File( "target/classes" );
 
         File testClassesDirectory = new File( "target/test-classes" );
@@ -1194,10 +1231,6 @@ public class AbstractSurefireMojoTest
         TestClassPath testClasspathWrapper =
                 new TestClassPath( testArtifacts, classesDirectory, testClassesDirectory, null );
 
-        Artifact forkedBooter = new DefaultArtifact( "org.apache.maven.surefire",
-                "surefire-booter", surefireVersion, null, "jar", null, mock( ArtifactHandler.class ) );
-
-        mojo.setPluginArtifactMap( singletonMap( "org.apache.maven.surefire:surefire-booter", forkedBooter ) );
         mojo.setRemoteRepositories( Collections.<ArtifactRepository>emptyList() );
         mojo.setProjectRemoteRepositories( Collections.<ArtifactRepository>emptyList() );
         RepositorySystem repositorySystem = mock( RepositorySystem.class );
@@ -1275,8 +1308,17 @@ public class AbstractSurefireMojoTest
         when( p.getDependencies() )
                 .thenReturn( Collections.<Dependency>emptyList() );
 
+        Artifact junitPlatformArtifact = invokeMethod( mojo, "getJUnit5Artifact" );
+        assertThat( junitPlatformArtifact.getGroupId() ).isEqualTo( "org.junit.platform" );
+        assertThat( junitPlatformArtifact.getArtifactId() ).isEqualTo( "junit-platform-commons" );
+        assertThat( junitPlatformArtifact.getVersion() ).isEqualTo( "1.4.0" );
+
         JUnitPlatformProviderInfo prov =
-                mojo.createJUnitPlatformProviderInfo( testClasspathCommons, testClasspathWrapper );
+                mojo.createJUnitPlatformProviderInfo( junitPlatformArtifact, testClasspathWrapper );
+
+        assertThat( prov.isApplicable() )
+            .isTrue();
+
         Set<Artifact> resolvedProviderArtifacts = prov.getProviderClasspath();
 
         Artifact java5 = new DefaultArtifact( "org.apache.maven.surefire", "common-java5",
@@ -1331,10 +1373,12 @@ public class AbstractSurefireMojoTest
         final Artifact testClasspathOpentest4j = new DefaultArtifact( "org.opentest4j", "opentest4j",
                 createFromVersion( "1.1.1" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
-        Iterable<Artifact> testArtifacts = asList( testClasspathSomeTestArtifact, testClasspathJupiterEngine,
+        Collection<Artifact> testArtifacts = asList( testClasspathSomeTestArtifact, testClasspathJupiterEngine,
                 testClasspathPlatformEngine, testClasspathJupiterApi, testClasspathApiguardian, testClasspathCommons,
                 testClasspathOpentest4j );
 
+        setProjectDepedenciesToMojo( testArtifacts.toArray( new Artifact[testArtifacts.size()] ) );
+
         File classesDirectory = new File( "target/classes" );
 
         File testClassesDirectory = new File( "target/test-classes" );
@@ -1342,10 +1386,6 @@ public class AbstractSurefireMojoTest
         TestClassPath testClasspathWrapper =
                 new TestClassPath( testArtifacts, classesDirectory, testClassesDirectory, null );
 
-        Artifact forkedBooter = new DefaultArtifact( "org.apache.maven.surefire",
-                "surefire-booter", surefireVersion, null, "jar", null, mock( ArtifactHandler.class ) );
-
-        mojo.setPluginArtifactMap( singletonMap( "org.apache.maven.surefire:surefire-booter", forkedBooter ) );
         mojo.setRemoteRepositories( Collections.<ArtifactRepository>emptyList() );
         mojo.setProjectRemoteRepositories( Collections.<ArtifactRepository>emptyList() );
         RepositorySystem repositorySystem = mock( RepositorySystem.class );
@@ -1405,8 +1445,18 @@ public class AbstractSurefireMojoTest
         } );
 
         invokeMethod( mojo, "setupStuff" );
+
+        Artifact junitPlatformArtifact = invokeMethod( mojo, "getJUnit5Artifact" );
+        assertThat( junitPlatformArtifact.getGroupId() ).isEqualTo( "org.junit.platform" );
+        assertThat( junitPlatformArtifact.getArtifactId() ).isEqualTo( "junit-platform-commons" );
+        assertThat( junitPlatformArtifact.getVersion() ).isEqualTo( "1.4.0" );
+
         JUnitPlatformProviderInfo prov =
-                mojo.createJUnitPlatformProviderInfo( testClasspathCommons, testClasspathWrapper );
+                mojo.createJUnitPlatformProviderInfo( junitPlatformArtifact, testClasspathWrapper );
+
+        assertThat( prov.isApplicable() )
+            .isTrue();
+
         Set<Artifact> resolvedProviderArtifacts = prov.getProviderClasspath();
 
         Artifact java5 = new DefaultArtifact( "org.apache.maven.surefire", "common-java5",
@@ -1457,16 +1507,14 @@ public class AbstractSurefireMojoTest
         final Artifact pluginDepOpentest4j = new DefaultArtifact( "org.opentest4j", "opentest4j",
                 createFromVersion( "1.1.1" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
-        Map<String, Artifact> pluginDependencies = new HashMap<>();
-        pluginDependencies.put( "org.apache.maven.surefire:maven-surefire-plugin", plugin );
-        pluginDependencies.put( "org.apache.maven.surefire:surefire-booter", forkedBooter );
-        pluginDependencies.put( "org.junit.jupiter:junit-jupiter-engine", pluginDepJupiterEngine );
-        pluginDependencies.put( "org.junit.platform:junit-platform-engine", pluginDepPlatformEngine );
-        pluginDependencies.put( "org.junit.jupiter:junit-jupiter-api", pluginDepJupiterApi );
-        pluginDependencies.put( "org.apiguardian:apiguardian-api", pluginDepApiguardian );
-        pluginDependencies.put( "org.junit.platform:junit-platform-commons", pluginDepCommons );
-        pluginDependencies.put( "org.opentest4j:opentest4j", pluginDepOpentest4j );
-        mojo.setPluginArtifactMap( pluginDependencies );
+        mojo.getPluginArtifactMap().put( "org.apache.maven.surefire:maven-surefire-plugin", plugin );
+        mojo.getPluginArtifactMap().put( "org.apache.maven.surefire:surefire-booter", forkedBooter );
+        mojo.getPluginArtifactMap().put( "org.junit.jupiter:junit-jupiter-engine", pluginDepJupiterEngine );
+        mojo.getPluginArtifactMap().put( "org.junit.platform:junit-platform-engine", pluginDepPlatformEngine );
+        mojo.getPluginArtifactMap().put( "org.junit.jupiter:junit-jupiter-api", pluginDepJupiterApi );
+        mojo.getPluginArtifactMap().put( "org.apiguardian:apiguardian-api", pluginDepApiguardian );
+        mojo.getPluginArtifactMap().put( "org.junit.platform:junit-platform-commons", pluginDepCommons );
+        mojo.getPluginArtifactMap().put( "org.opentest4j:opentest4j", pluginDepOpentest4j );
 
         MavenProject mavenProject = new MavenProject();
         mavenProject.setArtifact( new DefaultArtifact( "dummy", "pom", createFromVersion( "1.0.0" ),
@@ -1488,9 +1536,11 @@ public class AbstractSurefireMojoTest
         final Artifact testClasspathOpentest4j = new DefaultArtifact( "org.opentest4j", "opentest4j",
                 createFromVersion( "1.1.1" ), null, "jar", null, mock( ArtifactHandler.class ) );
 
-        Iterable<Artifact> testArtifacts = asList( testClasspathSomeTestArtifact, testClasspathJupiterApi,
+        Collection<Artifact> testArtifacts = asList( testClasspathSomeTestArtifact, testClasspathJupiterApi,
                 testClasspathApiguardian, testClasspathCommons, testClasspathOpentest4j );
 
+        setProjectDepedenciesToMojo( testArtifacts.toArray( new Artifact[testArtifacts.size()] ) );
+
         File classesDirectory = new File( "target/classes" );
 
         File testClassesDirectory = new File( "target/test-classes" );
@@ -1552,7 +1602,7 @@ public class AbstractSurefireMojoTest
                                                                  TransformableFilter filter )
             {
                 assertThat( dependencies ).hasSize( 1 );
-                Dependency resolvable = (Dependency) dependencies.iterator().next();
+                Dependency resolvable = dependencies.iterator().next();
                 if ( "org.junit.jupiter".equals( resolvable.getGroupId() )
                     && "junit-jupiter-engine".equals( resolvable.getArtifactId() )
                     && "5.4.0".equals( resolvable.getVersion() ) )
@@ -1576,8 +1626,16 @@ public class AbstractSurefireMojoTest
 
         invokeMethod( mojo, "setupStuff" );
 
+        Artifact junitPlatformArtifact = invokeMethod( mojo, "getJUnit5Artifact" );
+        assertThat( junitPlatformArtifact.getGroupId() ).isEqualTo( "org.junit.platform" );
+        assertThat( junitPlatformArtifact.getArtifactId() ).isEqualTo( "junit-platform-engine" );
+        assertThat( junitPlatformArtifact.getVersion() ).isEqualTo( "1.4.0" );
+
         JUnitPlatformProviderInfo prov =
-                mojo.createJUnitPlatformProviderInfo( pluginDepPlatformEngine, testClasspathWrapper );
+                mojo.createJUnitPlatformProviderInfo( junitPlatformArtifact, testClasspathWrapper );
+
+        assertThat( prov.isApplicable() )
+            .isTrue();
 
         when( mojo.getSession().getProjectBuildingRequest() )
                 .thenReturn( mock( ProjectBuildingRequest.class ) );
@@ -1632,29 +1690,6 @@ public class AbstractSurefireMojoTest
         return launcherResolutionResult;
     }
 
-    private static ArtifactResolutionResult createVintageEngineResolutionResult()
-    {
-        ArtifactResolutionResult launcherResolutionResult = mock( ArtifactResolutionResult.class );
-        Set<Artifact> resolvedLauncherArtifacts = new HashSet<>();
-        resolvedLauncherArtifacts.add( new DefaultArtifact( "org.junit.vintage", "junit-vintage-engine",
-                createFromVersion( "5.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) ) );
-        resolvedLauncherArtifacts.add( new DefaultArtifact( "junit", "junit",
-                createFromVersion( "4.12" ), null, "jar", null, mock( ArtifactHandler.class ) ) );
-        resolvedLauncherArtifacts.add( new DefaultArtifact( "org.hamcrest", "hamcrest-core",
-                createFromVersion( "1.3" ), null, "jar", null, mock( ArtifactHandler.class ) ) );
-        resolvedLauncherArtifacts.add( new DefaultArtifact( "org.junit.platform", "junit-platform-engine",
-                createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) ) );
-        resolvedLauncherArtifacts.add( new DefaultArtifact( "org.apiguardian", "apiguardian-api",
-                createFromVersion( "1.0.0" ), null, "jar", null, mock( ArtifactHandler.class ) ) );
-        resolvedLauncherArtifacts.add( new DefaultArtifact( "org.opentest4j", "opentest4j",
-                createFromVersion( "1.1.1" ), null, "jar", null, mock( ArtifactHandler.class ) ) );
-        resolvedLauncherArtifacts.add( new DefaultArtifact( "org.junit.platform", "junit-platform-commons",
-                createFromVersion( "1.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) ) );
-        when( launcherResolutionResult.getArtifacts() )
-                .thenReturn( resolvedLauncherArtifacts );
-        return launcherResolutionResult;
-    }
-
     private static ArtifactResolutionResult createJupiterEngineResolutionResult()
     {
         ArtifactResolutionResult launcherResolutionResult = mock( ArtifactResolutionResult.class );
@@ -1689,16 +1724,6 @@ public class AbstractSurefireMojoTest
         return createJUnitPlatformLauncherResolutionResult( engine, apiguardian, commons, opentest4j );
     }
 
-    private static ArtifactResolutionResult createResolutionResult( Artifact... artifacts )
-    {
-        ArtifactResolutionResult testClasspathCommonsResolutionResult = mock( ArtifactResolutionResult.class );
-        Set<Artifact> resolvedCommonsArtifacts = new HashSet<>();
-        Collections.addAll( resolvedCommonsArtifacts, artifacts );
-        when( testClasspathCommonsResolutionResult.getArtifacts() )
-                .thenReturn( resolvedCommonsArtifacts );
-        return testClasspathCommonsResolutionResult;
-    }
-
     private static ArtifactResolutionResult createSurefireProviderResolutionResult( VersionRange surefireVersion )
     {
         ArtifactResolutionResult surefirePlatformResolutionResult = mock( ArtifactResolutionResult.class );
@@ -1755,16 +1780,34 @@ public class AbstractSurefireMojoTest
         mojo.verifyParameters();
     }
 
+    private void setProjectDepedenciesToMojo( Artifact... deps )
+    {
+        for ( Artifact dep : deps )
+        {
+            mojo.getProjectArtifactMap()
+                .put( dep.getGroupId() + ":" + dep.getArtifactId(), dep );
+        }
+    }
+
+    private void addPluginDependencies( Artifact... deps )
+    {
+        for ( Artifact dep : deps )
+        {
+            mojo.getPluginArtifactMap()
+                .put( dep.getGroupId() + ":" + dep.getArtifactId(), dep );
+        }
+    }
+
     /**
      *
      */
     public static class Mojo
             extends AbstractSurefireMojo implements SurefireReportParameters
     {
-        private JUnitPlatformProviderInfo createJUnitPlatformProviderInfo( Artifact providerArtifact,
+        private JUnitPlatformProviderInfo createJUnitPlatformProviderInfo( Artifact junitPlatformArtifact,
                                                                            TestClassPath testClasspathWrapper )
         {
-            return new JUnitPlatformProviderInfo( providerArtifact, testClasspathWrapper );
+            return new JUnitPlatformProviderInfo( junitPlatformArtifact, testClasspathWrapper );
         }
 
         @Override
@@ -2182,12 +2225,12 @@ public class AbstractSurefireMojoTest
 
         }
 
-        public void setToolchain( Toolchain toolchain ) throws Exception
+        public void setToolchain( Toolchain toolchain )
         {
             setInternalState( this, "toolchain", toolchain );
         }
 
-        public void setJvm( String jvm ) throws Exception
+        public void setJvm( String jvm )
         {
             setInternalState( this, "jvm", jvm );
         }
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 d9fcf6f..6905850 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
@@ -52,6 +52,7 @@ import java.util.Set;
 
 import static java.util.Collections.singleton;
 import static java.util.Collections.singletonList;
+import static java.util.Collections.singletonMap;
 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;
@@ -326,7 +327,10 @@ public class SurefireDependencyResolverTest
         when( resolutionResult.getArtifacts() )
             .thenReturn( singleton( providerAsArtifact ) );
 
-        Map<String, Artifact> providers = surefireDependencyResolver.resolvePluginDependencies( request, plugin );
+        Map<String, Artifact> pluginResolvedDependencies =
+            singletonMap( PROVIDER_GROUP_ID + ":surefire-shadefire", providerAsArtifact );
+        Map<String, Artifact> providers =
+            surefireDependencyResolver.resolvePluginDependencies( request, plugin, pluginResolvedDependencies );
 
         verify( depencencyResolver, times( 1 ) )
             .resolveDependencies( request, dep.getValue(), null, filter.getValue() );