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() );