diff --git a/maven-surefire-common/pom.xml b/maven-surefire-common/pom.xml
index f37f072cd5..05e5dc731a 100644
--- a/maven-surefire-common/pom.xml
+++ b/maven-surefire-common/pom.xml
@@ -62,10 +62,6 @@
org.apache.maven.shared
maven-common-artifact-filters
-
- org.apache.maven.shared
- maven-artifact-transfer
-
org.codehaus.plexus
plexus-java
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 54ed1f82d4..d8b65ae968 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
@@ -30,7 +30,6 @@
import org.apache.maven.plugin.surefire.extensions.SurefireStatelessReporter;
import org.apache.maven.plugin.surefire.extensions.SurefireStatelessTestsetInfoReporter;
import org.apache.maven.plugins.annotations.Component;
-import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.repository.RepositorySystem;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
@@ -58,7 +57,6 @@
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.artifact.filter.PatternIncludesArtifactFilter;
-import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolver;
import org.apache.maven.surefire.shared.utils.io.FileUtils;
import org.apache.maven.surefire.booter.ClassLoaderConfiguration;
import org.apache.maven.surefire.booter.Classpath;
@@ -825,9 +823,6 @@ public abstract class AbstractSurefireMojo
@Component
private RepositorySystem repositorySystem;
- @Component
- private DependencyResolver dependencyResolver;
-
private Toolchain toolchain;
private int effectiveForkCount = -1;
@@ -1018,7 +1013,7 @@ private void setupStuff() throws MojoFailureException
getConsoleLogger(), getLocalRepository(),
getRemoteRepositories(),
getProjectRemoteRepositories(),
- getPluginName(), getDependencyResolver(),
+ getPluginName(),
getSession().isOffline() );
if ( getBooterArtifact() == null )
@@ -1405,16 +1400,6 @@ public void setRepositorySystem( RepositorySystem repositorySystem )
this.repositorySystem = repositorySystem;
}
- public DependencyResolver getDependencyResolver()
- {
- return dependencyResolver;
- }
-
- public void setDependencyResolver( DependencyResolver dependencyResolver )
- {
- this.dependencyResolver = dependencyResolver;
- }
-
private boolean existsModuleDescriptor( ResolvePathResultWrapper resolvedJavaModularityResult )
{
return resolvedJavaModularityResult.getResolvePathResult() != null;
@@ -3292,10 +3277,9 @@ public Set getProviderClasspath() throws MojoExecutionException
surefireDependencyResolver.getProviderClasspathAsMap( "surefire-junit-platform", surefireVersion );
Map testDeps = testClasspath.getTestDependencies();
- ProjectBuildingRequest request = getSession().getProjectBuildingRequest();
Plugin plugin = getPluginDescriptor().getPlugin();
Map pluginDeps =
- surefireDependencyResolver.resolvePluginDependencies( request, plugin, getPluginArtifactMap() );
+ surefireDependencyResolver.resolvePluginDependencies( plugin, getPluginArtifactMap() );
if ( hasDependencyPlatformEngine( pluginDeps ) )
{
@@ -3521,10 +3505,9 @@ public List getJpmsArguments( @Nonnull ProviderRequirements forkRequir
@Nonnull
public Set getProviderClasspath() throws MojoExecutionException
{
- ProjectBuildingRequest request = getSession().getProjectBuildingRequest();
Plugin plugin = getPluginDescriptor().getPlugin();
Map providerArtifacts =
- surefireDependencyResolver.resolvePluginDependencies( request, plugin, getPluginArtifactMap() );
+ surefireDependencyResolver.resolvePluginDependencies( 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 b6ce700549..081fed2e3b 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
@@ -19,6 +19,9 @@
* under the License.
*/
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedHashMap;
@@ -38,16 +41,8 @@
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.transfer.artifact.resolve.ArtifactResult;
-import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolver;
-import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolverException;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
import static java.util.Arrays.asList;
import static org.apache.maven.artifact.Artifact.SCOPE_COMPILE;
@@ -55,7 +50,6 @@
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.
@@ -68,19 +62,19 @@ final class SurefireDependencyResolver
static final String PROVIDER_GROUP_ID = "org.apache.maven.surefire";
private static final String[] PROVIDER_CLASSPATH_ORDER = {
- "surefire-junit3",
- "surefire-junit4",
- "surefire-junit47",
- "surefire-testng",
- "surefire-junit-platform",
- "surefire-api",
- "surefire-logger-api",
- "surefire-shared-utils",
- "common-java5",
- "common-junit3",
- "common-junit4",
- "common-junit48",
- "common-testng-utils"
+ "surefire-junit3",
+ "surefire-junit4",
+ "surefire-junit47",
+ "surefire-testng",
+ "surefire-junit-platform",
+ "surefire-api",
+ "surefire-logger-api",
+ "surefire-shared-utils",
+ "common-java5",
+ "common-junit3",
+ "common-junit4",
+ "common-junit48",
+ "common-testng-utils"
};
private final RepositorySystem repositorySystem;
@@ -95,15 +89,14 @@ final class SurefireDependencyResolver
private final String pluginName;
- private final DependencyResolver dependencyResolver;
private final boolean offline;
SurefireDependencyResolver( RepositorySystem repositorySystem, ConsoleLogger log,
ArtifactRepository localRepository,
List pluginRemoteRepositories,
- List projectRemoteRepositories, String pluginName,
- DependencyResolver dependencyResolver, boolean offline )
+ List projectRemoteRepositories,
+ String pluginName, boolean offline )
{
this.repositorySystem = repositorySystem;
this.log = log;
@@ -111,7 +104,6 @@ final class SurefireDependencyResolver
this.pluginRemoteRepositories = pluginRemoteRepositories;
this.projectRemoteRepositories = projectRemoteRepositories;
this.pluginName = pluginName;
- this.dependencyResolver = dependencyResolver;
this.offline = offline;
}
@@ -139,20 +131,17 @@ static boolean isWithinVersionSpec( @Nullable Artifact artifact, @Nonnull String
}
}
- Map resolvePluginDependencies( ProjectBuildingRequest request,
- Plugin plugin, Map pluginResolvedDependencies )
- throws MojoExecutionException
+ Map resolvePluginDependencies( Plugin plugin, Map pluginResolvedDependencies )
{
+ Map resolved = new LinkedHashMap<>();
Collection pluginDependencies = plugin.getDependencies();
- try
- {
- Iterable resolvedArtifacts = dependencyResolver.resolveDependencies( request,
- pluginDependencies, null, including( RuntimeArtifactFilter.SCOPES ) );
- Map resolved = new LinkedHashMap<>();
- for ( ArtifactResult resolvedArtifact : resolvedArtifacts )
+ for ( Dependency dependency : pluginDependencies )
+ {
+ Artifact dependencyArtifact = repositorySystem.createDependencyArtifact( dependency );
+ ArtifactResolutionResult artifactResolutionResult = resolvePluginArtifact( dependencyArtifact );
+ for ( Artifact artifact : artifactResolutionResult.getArtifacts() )
{
- Artifact artifact = resolvedArtifact.getArtifact();
String key = artifact.getGroupId() + ":" + artifact.getArtifactId();
Artifact resolvedPluginDependency = pluginResolvedDependencies.get( key );
if ( resolvedPluginDependency != null )
@@ -160,12 +149,8 @@ Map resolvePluginDependencies( ProjectBuildingRequest request,
resolved.put( key, artifact );
}
}
- return resolved;
- }
- catch ( DependencyResolverException e )
- {
- throw new MojoExecutionException( e.getLocalizedMessage(), e );
}
+ return resolved;
}
ArtifactResolutionResult resolvePluginArtifact( Artifact artifact )
@@ -192,12 +177,12 @@ private ArtifactResolutionResult resolveArtifact( Artifact artifact, List getProviderClasspathAsMap( String providerArtifactId, Stri
return artifactMapByVersionlessId( getProviderClasspath( providerArtifactId, providerVersion ) );
}
+ // FIXME
+ // method argument should be unchanged
+ // what if providerArtifacts will be unmodifiable
private static Set orderProviderArtifacts( Set providerArtifacts )
{
Set orderedProviderArtifacts = new LinkedHashSet<>();
@@ -263,7 +251,7 @@ private static Dependency toProviderDependency( String providerArtifactId, Strin
static class RuntimeArtifactFilter implements ArtifactFilter
{
private static final Collection SCOPES =
- asList( SCOPE_COMPILE, SCOPE_COMPILE_PLUS_RUNTIME, SCOPE_RUNTIME );
+ asList( SCOPE_COMPILE, SCOPE_COMPILE_PLUS_RUNTIME, SCOPE_RUNTIME );
private final Artifact filter;
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 da3bcfeb42..d5b08b5c8f 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
@@ -19,6 +19,22 @@
* under the License.
*/
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.DefaultArtifact;
import org.apache.maven.artifact.handler.ArtifactHandler;
@@ -28,7 +44,6 @@
import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Dependency;
-import org.apache.maven.model.Model;
import org.apache.maven.model.Plugin;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
@@ -38,17 +53,13 @@
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.repository.RepositorySystem;
-import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter;
-import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult;
-import org.apache.maven.shared.transfer.dependencies.DependableCoordinate;
-import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolver;
+import org.apache.maven.surefire.api.suite.RunResult;
+import org.apache.maven.surefire.api.util.DefaultScanResult;
import org.apache.maven.surefire.booter.ClassLoaderConfiguration;
import org.apache.maven.surefire.booter.Classpath;
import org.apache.maven.surefire.booter.ModularClasspathConfiguration;
import org.apache.maven.surefire.booter.StartupConfiguration;
import org.apache.maven.surefire.extensions.ForkNodeFactory;
-import org.apache.maven.surefire.api.suite.RunResult;
-import org.apache.maven.surefire.api.util.DefaultScanResult;
import org.apache.maven.toolchain.Toolchain;
import org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor;
import org.codehaus.plexus.languages.java.jpms.LocationManager;
@@ -71,28 +82,11 @@
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-
import static java.io.File.separatorChar;
import static java.nio.file.Files.write;
import static java.util.Arrays.asList;
import static java.util.Collections.emptyList;
import static java.util.Collections.emptyMap;
-import static java.util.Collections.emptySet;
import static java.util.Collections.singleton;
import static java.util.Collections.singletonList;
import static org.apache.maven.artifact.versioning.VersionRange.createFromVersion;
@@ -812,20 +806,37 @@ public void shouldSmartlyResolveJUnit5ProviderWithJUnit4() throws Exception
mojo.setRemoteRepositories( Collections.emptyList() );
mojo.setProjectRemoteRepositories( Collections.emptyList() );
RepositorySystem repositorySystem = mock( RepositorySystem.class );
+
final Artifact surefireProvider = new DefaultArtifact( "org.apache.maven.surefire",
"surefire-junit-platform", surefireVersion, null, "jar", null, mock( ArtifactHandler.class ) );
+
+ final Artifact pluginDependency = new DefaultArtifact( "org.junit.vintage", "junit-vintage-engine",
+ createFromVersion( "5.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
+
when( repositorySystem.createDependencyArtifact( any( Dependency.class ) ) ).thenAnswer( new Answer()
{
@Override
public Artifact answer( InvocationOnMock invocation )
{
- Dependency provider = (Dependency) invocation.getArguments()[0];
- assertThat( provider.getGroupId() ).isEqualTo( "org.apache.maven.surefire" );
- assertThat( provider.getArtifactId() ).isEqualTo( "surefire-junit-platform" );
- return surefireProvider;
+ Dependency dependency = (Dependency) invocation.getArguments()[0];
+ if ( dependency.getArtifactId().equals( "surefire-junit-platform" ) )
+ {
+ return surefireProvider;
+ }
+ else if ( dependency.getArtifactId().equals( "junit-vintage-engine" ) )
+ {
+ return pluginDependency;
+ }
+ else
+ {
+ fail( dependency.getGroupId() + ":" + dependency.getArtifactId() );
+ return null;
+ }
}
} );
+
final ArtifactResolutionResult surefireProviderResolutionResult = mock( ArtifactResolutionResult.class );
+ final ArtifactResolutionResult pluginDependencyResolutionResult = mock( ArtifactResolutionResult.class );
when( repositorySystem.resolve( any( ArtifactResolutionRequest.class ) ) )
.thenAnswer( new Answer()
{
@@ -838,6 +849,10 @@ public ArtifactResolutionResult answer( InvocationOnMock invocation )
{
return surefireProviderResolutionResult;
}
+ else if ( artifact == pluginDependency )
+ {
+ return pluginDependencyResolutionResult;
+ }
else if ( "org.junit.platform".equals( artifact.getGroupId() )
&& "junit-platform-launcher".equals( artifact.getArtifactId() )
&& "1.4.0".equals( artifact.getVersion() ) )
@@ -901,31 +916,16 @@ else if ( "org.junit.platform".equals( artifact.getGroupId() )
mojo.setRepositorySystem( repositorySystem );
mojo.setLogger( mock( Logger.class ) );
- mojo.setDependencyResolver( new DependencyResolverMock()
- {
- @Override
- public Iterable resolveDependencies( ProjectBuildingRequest buildingRequest,
- Collection dependencies,
- Collection managedDependencies,
- TransformableFilter filter )
- {
- assertThat( dependencies ).hasSize( 1 );
- Dependency pluginDependency = dependencies.iterator().next();
- assertThat( pluginDependency.getGroupId() ).isEqualTo( "org.junit.vintage" );
- assertThat( pluginDependency.getArtifactId() ).isEqualTo( "junit-vintage-engine" );
- assertThat( pluginDependency.getVersion() ).isEqualTo( "5.4.0" );
-
- Collection it = new ArrayList<>();
- 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;
- }
- } );
+
+ Set pluginDependencyArtifacts = new HashSet<>();
+ pluginDependencyArtifacts.add( pluginDep1 );
+ pluginDependencyArtifacts.add( pluginDep2 );
+ pluginDependencyArtifacts.add( pluginDep3 );
+ pluginDependencyArtifacts.add( pluginDep4 );
+ pluginDependencyArtifacts.add( pluginDep5 );
+ pluginDependencyArtifacts.add( pluginDep6 );
+ pluginDependencyArtifacts.add( pluginDep7 );
+ when( pluginDependencyResolutionResult.getArtifacts() ).thenReturn( pluginDependencyArtifacts );
invokeMethod( mojo, "setupStuff" );
@@ -937,8 +937,6 @@ public Iterable resolveDependencies( ProjectBuildingRequest buil
Plugin p = mock( Plugin.class );
when( pluginDescriptor.getPlugin() )
.thenReturn( p );
- Artifact pluginDependency = new DefaultArtifact( "org.junit.vintage", "junit-vintage-engine",
- createFromVersion( "5.4.0" ), null, "jar", null, mock( ArtifactHandler.class ) );
when( p.getDependencies() )
.thenReturn( singletonList( toDependency( pluginDependency ) ) );
@@ -1095,18 +1093,6 @@ else if ( "org.junit.platform".equals( resolvable.getGroupId() )
mojo.setRepositorySystem( repositorySystem );
mojo.setLogger( mock( Logger.class ) );
- mojo.setDependencyResolver( new DependencyResolverMock()
- {
- @Override
- public Iterable resolveDependencies( ProjectBuildingRequest buildingRequest,
- Collection dependencies,
- Collection managedDependencies,
- TransformableFilter filter )
- {
- assertThat( dependencies ).isEmpty();
- return emptySet();
- }
- } );
invokeMethod( mojo, "setupStuff" );
@@ -1227,18 +1213,6 @@ else if ( "org.junit.platform".equals( resolvable.getGroupId() )
mojo.setRepositorySystem( repositorySystem );
mojo.setLogger( mock( Logger.class ) );
- mojo.setDependencyResolver( new DependencyResolverMock()
- {
- @Override
- public Iterable resolveDependencies( ProjectBuildingRequest buildingRequest,
- Collection dependencies,
- Collection managedDependencies,
- TransformableFilter filter )
- {
- assertThat( dependencies ).isEmpty();
- return emptySet();
- }
- } );
invokeMethod( mojo, "setupStuff" );
@@ -1369,18 +1343,6 @@ else if ( "org.junit.platform".equals( resolvable.getGroupId() )
mojo.setRepositorySystem( repositorySystem );
mojo.setLogger( mock( Logger.class ) );
- mojo.setDependencyResolver( new DependencyResolverMock()
- {
- @Override
- public Iterable resolveDependencies( ProjectBuildingRequest buildingRequest,
- Collection dependencies,
- Collection managedDependencies,
- TransformableFilter filter )
- {
- assertThat( dependencies ).isEmpty();
- return emptySet();
- }
- } );
invokeMethod( mojo, "setupStuff" );
@@ -1502,18 +1464,6 @@ else if ( "org.junit.jupiter".equals( resolvable.getGroupId() )
mojo.setRepositorySystem( repositorySystem );
mojo.setLogger( mock( Logger.class ) );
- mojo.setDependencyResolver( new DependencyResolverMock()
- {
- @Override
- public Iterable resolveDependencies( ProjectBuildingRequest buildingRequest,
- Collection dependencies,
- Collection managedDependencies,
- TransformableFilter filter )
- {
- assertThat( dependencies ).isEmpty();
- return emptySet();
- }
- } );
invokeMethod( mojo, "setupStuff" );
@@ -1651,18 +1601,6 @@ else if ( "org.junit.platform".equals( resolvable.getGroupId() )
mojo.setRepositorySystem( repositorySystem );
mojo.setLogger( mock( Logger.class ) );
- mojo.setDependencyResolver( new DependencyResolverMock()
- {
- @Override
- public Iterable resolveDependencies( ProjectBuildingRequest buildingRequest,
- Collection dependencies,
- Collection managedDependencies,
- TransformableFilter filter )
- {
- assertThat( dependencies ).isEmpty();
- return emptySet();
- }
- } );
invokeMethod( mojo, "setupStuff" );
@@ -1771,6 +1709,7 @@ public void shouldSmartlyResolveJUnit5ProviderWithJupiterEngineInPluginDependenc
mojo.setRemoteRepositories( Collections.emptyList() );
mojo.setProjectRemoteRepositories( Collections.emptyList() );
RepositorySystem repositorySystem = mock( RepositorySystem.class );
+
final Artifact surefireProvider = new DefaultArtifact( "org.apache.maven.surefire",
"surefire-junit-platform", surefireVersion, null, "jar", null, mock( ArtifactHandler.class ) );
when( repositorySystem.createDependencyArtifact( any( Dependency.class ) ) ).thenAnswer( new Answer()
@@ -1778,13 +1717,25 @@ public void shouldSmartlyResolveJUnit5ProviderWithJupiterEngineInPluginDependenc
@Override
public Artifact answer( InvocationOnMock invocation )
{
- Dependency provider = (Dependency) invocation.getArguments()[0];
- assertThat( provider.getGroupId() ).isEqualTo( "org.apache.maven.surefire" );
- assertThat( provider.getArtifactId() ).isEqualTo( "surefire-junit-platform" );
- return surefireProvider;
+ Dependency dependency = (Dependency) invocation.getArguments()[0];
+ if ( dependency.getArtifactId().equals( "surefire-junit-platform" ) )
+ {
+ return surefireProvider;
+ }
+ else if ( dependency.getArtifactId().equals( "junit-jupiter-engine" ) )
+ {
+ return pluginDepJupiterEngine;
+ }
+ else
+ {
+ fail( dependency.getGroupId() + ":" + dependency.getArtifactId() );
+ return null;
+ }
}
} );
+ final ArtifactResolutionResult pluginDepJupiterEngineResolutionResult = mock( ArtifactResolutionResult.class );
+
when( repositorySystem.resolve( any( ArtifactResolutionRequest.class ) ) )
.thenAnswer( new Answer()
{
@@ -1797,6 +1748,10 @@ public ArtifactResolutionResult answer( InvocationOnMock invocation )
{
return createSurefireProviderResolutionResult( surefireVersion );
}
+ else if ( resolvable == pluginDepJupiterEngine )
+ {
+ return pluginDepJupiterEngineResolutionResult;
+ }
else if ( "org.junit.platform".equals( resolvable.getGroupId() )
&& "junit-platform-launcher".equals( resolvable.getArtifactId() )
&& "1.4.0".equals( resolvable.getVersion() ) )
@@ -1813,36 +1768,16 @@ else if ( "org.junit.platform".equals( resolvable.getGroupId() )
mojo.setRepositorySystem( repositorySystem );
mojo.setLogger( mock( Logger.class ) );
- mojo.setDependencyResolver( new DependencyResolverMock()
- {
- @Override
- public Iterable resolveDependencies( ProjectBuildingRequest buildingRequest,
- Collection dependencies,
- Collection managedDependencies,
- TransformableFilter filter )
- {
- assertThat( dependencies ).hasSize( 1 );
- Dependency resolvable = dependencies.iterator().next();
- if ( "org.junit.jupiter".equals( resolvable.getGroupId() )
- && "junit-jupiter-engine".equals( resolvable.getArtifactId() )
- && "5.4.0".equals( resolvable.getVersion() ) )
- {
- Set resolvedPluginDeps = new HashSet<>();
- resolvedPluginDeps.add( toArtifactResult( pluginDepJupiterEngine ) );
- resolvedPluginDeps.add( toArtifactResult( pluginDepPlatformEngine ) );
- resolvedPluginDeps.add( toArtifactResult( pluginDepJupiterApi ) );
- resolvedPluginDeps.add( toArtifactResult( pluginDepApiguardian ) );
- resolvedPluginDeps.add( toArtifactResult( pluginDepCommons ) );
- resolvedPluginDeps.add( toArtifactResult( pluginDepOpentest4j ) );
- return resolvedPluginDeps;
- }
- else
- {
- fail( resolvable.getGroupId() + ":" + resolvable.getArtifactId() );
- return null;
- }
- }
- } );
+
+ Set pluginDepJupiterEngineArtifacts = new HashSet<>();
+ pluginDepJupiterEngineArtifacts.add( pluginDepJupiterEngine );
+ pluginDepJupiterEngineArtifacts.add( pluginDepPlatformEngine );
+ pluginDepJupiterEngineArtifacts.add( pluginDepJupiterApi );
+ pluginDepJupiterEngineArtifacts.add( pluginDepApiguardian );
+ pluginDepJupiterEngineArtifacts.add( pluginDepCommons );
+ pluginDepJupiterEngineArtifacts.add( pluginDepOpentest4j );
+
+ when( pluginDepJupiterEngineResolutionResult.getArtifacts() ).thenReturn( pluginDepJupiterEngineArtifacts );
invokeMethod( mojo, "setupStuff" );
@@ -2562,38 +2497,4 @@ private static List toDependencies( Artifact... artifacts )
}
return dependencies;
}
-
- private static ArtifactResult toArtifactResult( final Artifact artifact )
- {
- class AR implements ArtifactResult
- {
-
- @Override
- public Artifact getArtifact()
- {
- return artifact;
- }
- }
- return new AR();
- }
-
- private abstract static class DependencyResolverMock implements DependencyResolver
- {
- @Override
- public Iterable resolveDependencies( ProjectBuildingRequest buildingRequest,
- DependableCoordinate coordinate,
- TransformableFilter filter )
- {
- fail( "unexpected call of DependencyResolver" );
- return null;
- }
-
- @Override
- public Iterable resolveDependencies( ProjectBuildingRequest buildingRequest, Model model,
- TransformableFilter filter )
- {
- fail( "unexpected call of DependencyResolver" );
- return null;
- }
- }
}
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 6905850d60..ebf0e1b7a8 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
@@ -19,6 +19,12 @@
* under the License.
*/
+import java.io.File;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.DefaultArtifact;
import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
@@ -27,46 +33,27 @@
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.Collection;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.Map;
-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;
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.mock;
-import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
-import static org.powermock.reflect.Whitebox.invokeMethod;
/**
*
@@ -81,7 +68,7 @@ public void shouldNotBeWithinRangeNullArtifact()
{
boolean result = SurefireDependencyResolver.isWithinVersionSpec( null, "[4.7,)" );
assertThat( result )
- .isFalse();
+ .isFalse();
}
@Test
@@ -90,7 +77,7 @@ public void shouldNotBeWithinRange() throws InvalidVersionSpecificationException
Artifact api = createArtifact( "junit", "junit", "4.6" );
boolean result = SurefireDependencyResolver.isWithinVersionSpec( api, "[4.7,)" );
assertThat( result )
- .isFalse();
+ .isFalse();
}
@Test
@@ -99,7 +86,7 @@ public void shouldBeWithinRange() throws InvalidVersionSpecificationException
Artifact api = createArtifact( "junit", "junit", "4.7" );
boolean result = SurefireDependencyResolver.isWithinVersionSpec( api, "[4.7,)" );
assertThat( result )
- .isTrue();
+ .isTrue();
}
@Test
@@ -108,7 +95,7 @@ public void shouldBeFarWithinRange() throws InvalidVersionSpecificationException
Artifact api = createArtifact( "junit", "junit", "4.13" );
boolean result = SurefireDependencyResolver.isWithinVersionSpec( api, "[4.7,)" );
assertThat( result )
- .isTrue();
+ .isTrue();
}
@Test
@@ -127,70 +114,66 @@ public void testResolveArtifact() throws InvalidVersionSpecificationException
RepositorySystem repositorySystem = mock( RepositorySystem.class );
final ArtifactResolutionResult expectedResult = mock( ArtifactResolutionResult.class );
when( repositorySystem.resolve( any( ArtifactResolutionRequest.class ) ) )
- .then( new Answer()
+ .then( new Answer()
+ {
+ @Override
+ public ArtifactResolutionResult answer( InvocationOnMock invocation )
{
- @Override
- public ArtifactResolutionResult answer( InvocationOnMock invocation )
- {
- Object[] args = invocation.getArguments();
- assertThat( args )
- .hasSize( 1 );
- ArtifactResolutionRequest request = (ArtifactResolutionRequest) args[0];
- assertThat( request.getArtifact() )
- .isSameAs( provider );
- assertThat( request.isResolveTransitively() )
- .isTrue();
- assertThat( request.getArtifactDependencies() )
- .isNull();
- assertThat( request.getRemoteRepositories() )
- .isNull();
- assertThat( request.getLocalRepository() )
- .isNull();
- assertThat( request.getCache() )
- .isNull();
- assertThat( request.getCollectionFilter() )
- .isNotNull();
- assertThat( request.getCollectionFilter() )
- .isInstanceOf( RuntimeArtifactFilter.class );
- assertThat( request.getManagedVersionMap() )
- .isNull();
- assertThat( request.getMirrors() )
- .isEmpty();
- assertThat( request.getProxies() )
- .isEmpty();
- assertThat( request.getResolutionFilter() )
- .isNull();
- assertThat( request.getServers() )
- .isEmpty();
- return expectedResult;
- }
- } );
+ Object[] args = invocation.getArguments();
+ assertThat( args )
+ .hasSize( 1 );
+ ArtifactResolutionRequest request = (ArtifactResolutionRequest) args[0];
+ assertThat( request.getArtifact() )
+ .isSameAs( provider );
+ assertThat( request.isResolveTransitively() )
+ .isTrue();
+ assertThat( request.getArtifactDependencies() )
+ .isNull();
+ assertThat( request.getRemoteRepositories() )
+ .isNull();
+ assertThat( request.getLocalRepository() )
+ .isNull();
+ assertThat( request.getCache() )
+ .isNull();
+ assertThat( request.getCollectionFilter() )
+ .isNotNull();
+ assertThat( request.getCollectionFilter() )
+ .isInstanceOf( RuntimeArtifactFilter.class );
+ assertThat( request.getManagedVersionMap() )
+ .isNull();
+ assertThat( request.getMirrors() )
+ .isEmpty();
+ assertThat( request.getProxies() )
+ .isEmpty();
+ assertThat( request.getResolutionFilter() )
+ .isNull();
+ assertThat( request.getServers() )
+ .isEmpty();
+ return expectedResult;
+ }
+ } );
SurefireDependencyResolver surefireDependencyResolver =
- new SurefireDependencyResolver( repositorySystem, null, null, null, null, null, null, false );
+ new SurefireDependencyResolver( repositorySystem, null, null, null, null, null, false );
ArtifactResolutionResult actualResult = surefireDependencyResolver.resolvePluginArtifact( provider );
assertThat( actualResult )
- .isSameAs( expectedResult );
+ .isSameAs( expectedResult );
}
@Test
public void testGetProviderClasspath() throws Exception
{
- Artifact api = createArtifact( "surefire-api" );
- api.setFile( new File( "" ) );
+ Artifact commonJunit4 = createArtifact( "common-junit4" );
+ Artifact api = createArtifact( "surefire-api" );
final Artifact provider = createArtifact( "surefire-junit-platform" );
- provider.setFile( new File( "" ) );
-
Artifact ext = createArtifact( "org.apiguardian", "apiguardian-api" );
- ext.setFile( new File( "" ) );
-
Artifact logger = createArtifact( "surefire-logger-api" );
- logger.setFile( new File( "" ) );
Set providerArtifacts = new LinkedHashSet<>();
+ providerArtifacts.add( commonJunit4 );
providerArtifacts.add( api );
providerArtifacts.add( provider );
providerArtifacts.add( ext );
@@ -198,198 +181,155 @@ public void testGetProviderClasspath() throws Exception
final ArtifactResolutionResult result = mock( ArtifactResolutionResult.class );
when( result.getArtifacts() )
- .thenReturn( providerArtifacts );
+ .thenReturn( providerArtifacts );
RepositorySystem repositorySystem = mock( RepositorySystem.class );
when( repositorySystem.resolve( any( ArtifactResolutionRequest.class ) ) )
- .then( new Answer()
+ .then( new Answer()
+ {
+ @Override
+ public ArtifactResolutionResult answer( InvocationOnMock invocation )
{
- @Override
- public ArtifactResolutionResult answer( InvocationOnMock invocation )
- {
- Object[] args = invocation.getArguments();
- assertThat( args )
- .hasSize( 1 );
- ArtifactResolutionRequest request = (ArtifactResolutionRequest) args[0];
- assertThat( request.getArtifact() )
- .isSameAs( provider );
- assertThat( request.isResolveTransitively() )
- .isTrue();
- assertThat( request.getArtifactDependencies() )
- .isNull();
- assertThat( request.getRemoteRepositories() )
- .isNull();
- assertThat( request.getLocalRepository() )
- .isNull();
- assertThat( request.getCache() )
- .isNull();
- assertThat( request.getCollectionFilter() )
- .isNotNull();
- assertThat( request.getCollectionFilter() )
- .isInstanceOf( RuntimeArtifactFilter.class );
- assertThat( request.getManagedVersionMap() )
- .isNull();
- assertThat( request.getMirrors() )
- .isEmpty();
- assertThat( request.getProxies() )
- .isEmpty();
- assertThat( request.getResolutionFilter() )
- .isNull();
- assertThat( request.getServers() )
- .isEmpty();
- return result;
- }
- } );
+ Object[] args = invocation.getArguments();
+ assertThat( args )
+ .hasSize( 1 );
+ ArtifactResolutionRequest request = (ArtifactResolutionRequest) args[0];
+ assertThat( request.getArtifact() )
+ .isSameAs( provider );
+ assertThat( request.isResolveTransitively() )
+ .isTrue();
+ assertThat( request.getArtifactDependencies() )
+ .isNull();
+ assertThat( request.getRemoteRepositories() )
+ .isNull();
+ assertThat( request.getLocalRepository() )
+ .isNull();
+ assertThat( request.getCache() )
+ .isNull();
+ assertThat( request.getCollectionFilter() )
+ .isNotNull();
+ assertThat( request.getCollectionFilter() )
+ .isInstanceOf( RuntimeArtifactFilter.class );
+ assertThat( request.getManagedVersionMap() )
+ .isNull();
+ assertThat( request.getMirrors() )
+ .isEmpty();
+ assertThat( request.getProxies() )
+ .isEmpty();
+ assertThat( request.getResolutionFilter() )
+ .isNull();
+ assertThat( request.getServers() )
+ .isEmpty();
+ return result;
+ }
+ } );
when( repositorySystem.createDependencyArtifact( any( Dependency.class ) ) )
- .then( new Answer()
+ .then( new Answer()
+ {
+ @Override
+ public Artifact answer( InvocationOnMock invocation )
{
- @Override
- public Artifact answer( InvocationOnMock invocation )
- {
- Object[] args = invocation.getArguments();
- assertThat( args )
- .hasSize( 1 );
- Dependency request = (Dependency) args[0];
- assertThat( request.getGroupId() )
- .isEqualTo( provider.getGroupId() );
- assertThat( request.getArtifactId() )
- .isEqualTo( provider.getArtifactId() );
- assertThat( request.getVersion() )
- .isEqualTo( provider.getVersion() );
- assertThat( request.getType() )
- .isEqualTo( provider.getType() );
- assertThat( request.getScope() )
- .isNull();
- return provider;
- }
- } );
+ Object[] args = invocation.getArguments();
+ assertThat( args )
+ .hasSize( 1 );
+ Dependency request = (Dependency) args[0];
+ assertThat( request.getGroupId() )
+ .isEqualTo( provider.getGroupId() );
+ assertThat( request.getArtifactId() )
+ .isEqualTo( provider.getArtifactId() );
+ assertThat( request.getVersion() )
+ .isEqualTo( provider.getVersion() );
+ assertThat( request.getType() )
+ .isEqualTo( provider.getType() );
+ assertThat( request.getScope() )
+ .isNull();
+ return provider;
+ }
+ } );
ConsoleLogger log = mock( ConsoleLogger.class );
SurefireDependencyResolver surefireDependencyResolver =
- new SurefireDependencyResolver( repositorySystem, log, null, null, null, null, null, false );
+ new SurefireDependencyResolver( repositorySystem, log, null, null, null, null, false );
when( log.isDebugEnabled() )
- .thenReturn( true );
+ .thenReturn( true );
Set classpath = surefireDependencyResolver.getProviderClasspath( "surefire-junit-platform", "1" );
assertThat( classpath )
- .hasSize( 4 );
+ .hasSize( 5 );
Iterator it = classpath.iterator();
+ // result should be ordered
+ assertThat( it.next() )
+ .isSameAs( provider );
+
assertThat( it.next() )
- .isSameAs( provider );
+ .isSameAs( api );
assertThat( it.next() )
- .isSameAs( api );
+ .isSameAs( logger );
assertThat( it.next() )
- .isSameAs( logger );
+ .isSameAs( commonJunit4 );
assertThat( it.next() )
- .isSameAs( ext );
+ .isSameAs( ext );
}
@Test
- public void testAddProviderToClasspath() throws Exception
+ public void testResolvePluginDependencies() throws Exception
{
Dependency providerAsDependency = new Dependency();
providerAsDependency.setGroupId( PROVIDER_GROUP_ID );
providerAsDependency.setArtifactId( "surefire-shadefire" );
providerAsDependency.setVersion( "1" );
- final Artifact providerAsArtifact = createArtifact( "surefire-shadefire" );
+ Artifact providerAsArtifact = createArtifact( "surefire-shadefire" );
- PluginDescriptor pluginDescriptor = PowerMockito.mock( PluginDescriptor.class );
- Plugin plugin = PowerMockito.mock( Plugin.class );
- when( pluginDescriptor.getPlugin() )
- .thenReturn( plugin );
+ Plugin plugin = mock( Plugin.class );
when( plugin.getDependencies() )
.thenReturn( singletonList( providerAsDependency ) );
- DependencyResolver depencencyResolver = mock( DependencyResolver.class );
- SurefireDependencyResolver surefireDependencyResolver =
- new SurefireDependencyResolver( null, null, null, null, null, null, depencencyResolver, false );
-
- ProjectBuildingRequest request = mock( ProjectBuildingRequest.class );
-
- ArgumentCaptor> dep = ArgumentCaptor.forClass( Collection.class );
- ArgumentCaptor 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 ) );
+ RepositorySystem repositorySystem = mock( RepositorySystem.class );
+ when( repositorySystem.createDependencyArtifact( providerAsDependency ) )
+ .thenReturn( providerAsArtifact );
- final ArtifactResolutionResult resolutionResult = mock( ArtifactResolutionResult.class );
+ ArtifactResolutionResult resolutionResult = mock( ArtifactResolutionResult.class );
when( resolutionResult.getArtifacts() )
.thenReturn( singleton( providerAsArtifact ) );
+ ArgumentCaptor resolutionRequestCaptor =
+ ArgumentCaptor.forClass( ArtifactResolutionRequest.class );
+ when( repositorySystem.resolve( resolutionRequestCaptor.capture() ) )
+ .thenReturn( resolutionResult );
+
Map pluginResolvedDependencies =
singletonMap( PROVIDER_GROUP_ID + ":surefire-shadefire", providerAsArtifact );
- Map providers =
- surefireDependencyResolver.resolvePluginDependencies( request, plugin, pluginResolvedDependencies );
- verify( depencencyResolver, times( 1 ) )
- .resolveDependencies( request, dep.getValue(), null, filter.getValue() );
+ SurefireDependencyResolver surefireDependencyResolver =
+ new SurefireDependencyResolver( repositorySystem, null, null, null, null, null, false );
+
+ Map providers =
+ surefireDependencyResolver.resolvePluginDependencies( plugin, pluginResolvedDependencies );
assertThat( providers.values() )
.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
- public void shouldOrderedProviderArtifacts() throws Exception
- {
- Artifact api = createArtifact( "surefire-api" );
- Artifact provider = createArtifact( "surefire-junit-platform" );
- Artifact ext = createArtifact( "org.apiguardian", "apiguardian-api" );
- Artifact logger = createArtifact( "surefire-logger-api" );
-
- Set providerArtifacts = new LinkedHashSet<>();
- providerArtifacts.add( api );
- providerArtifacts.add( provider );
- providerArtifacts.add( ext );
- providerArtifacts.add( logger );
-
- Iterator it = providerArtifacts.iterator();
-
- assertThat( it.next() )
- .isEqualTo( api );
-
- assertThat( it.next() )
- .isEqualTo( provider );
-
- assertThat( it.next() )
- .isEqualTo( ext );
-
- assertThat( it.next() )
- .isEqualTo( logger );
+ assertThat( resolutionRequestCaptor.getAllValues() )
+ .hasSize( 1 );
- Set actual =
- invokeMethod( SurefireDependencyResolver.class, "orderProviderArtifacts", providerArtifacts );
+ ArtifactResolutionRequest resolutionRequest = resolutionRequestCaptor.getValue();
- Set expected = new LinkedHashSet<>();
- expected.add( provider );
- expected.add( api );
- expected.add( logger );
- expected.add( ext );
+ assertThat( resolutionRequest.getArtifact() )
+ .isSameAs( providerAsArtifact );
- assertThat( actual )
- .isEqualTo( expected );
+ verify( repositorySystem ).createDependencyArtifact( any( Dependency.class ) );
+ verify( repositorySystem ).resolve( any( ArtifactResolutionRequest.class ) );
+ verifyNoMoreInteractions( repositorySystem );
}
private static Artifact createArtifact( String artifactId ) throws InvalidVersionSpecificationException
@@ -398,15 +338,18 @@ private static Artifact createArtifact( String artifactId ) throws InvalidVersio
}
private static Artifact createArtifact( String groupId, String artifactId )
- throws InvalidVersionSpecificationException
+ throws InvalidVersionSpecificationException
{
return createArtifact( groupId, artifactId, "1" );
}
private static Artifact createArtifact( String groupId, String artifactId, String version )
- throws InvalidVersionSpecificationException
+ throws InvalidVersionSpecificationException
{
VersionRange versionSpec = createFromVersionSpec( version );
- return new DefaultArtifact( groupId, artifactId, versionSpec, "compile", "jar", "", null );
+ DefaultArtifact defaultArtifact =
+ new DefaultArtifact( groupId, artifactId, versionSpec, "compile", "jar", "", null );
+ defaultArtifact.setFile( new File( "" ) );
+ return defaultArtifact;
}
}
diff --git a/pom.xml b/pom.xml
index 0b9fd0c2b3..5989f85dec 100644
--- a/pom.xml
+++ b/pom.xml
@@ -216,33 +216,6 @@
-
- org.apache.maven.shared
- maven-artifact-transfer
- 0.13.1
-
-
- org.apache.maven
- maven-core
-
-
- org.apache.maven
- maven-artifact
-
-
- org.codehaus.plexus
- plexus-component-annotations
-
-
- org.codehaus.plexus
- plexus-utils
-
-
- org.slf4j
- slf4j-api
-
-
-
org.apache.maven.doxia
doxia-sink-api
@@ -602,6 +575,7 @@
.m2/**
.m2
.travis.yml
+ .mvn/wrapper/maven-wrapper.properties