aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/maven/apache-maven-3.3.3/maven-compat/src/test/java/org/apache/maven/repository/legacy/resolver/DefaultArtifactCollectorTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/maven/apache-maven-3.3.3/maven-compat/src/test/java/org/apache/maven/repository/legacy/resolver/DefaultArtifactCollectorTest.java')
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-compat/src/test/java/org/apache/maven/repository/legacy/resolver/DefaultArtifactCollectorTest.java984
1 files changed, 0 insertions, 984 deletions
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-compat/src/test/java/org/apache/maven/repository/legacy/resolver/DefaultArtifactCollectorTest.java b/framework/src/maven/apache-maven-3.3.3/maven-compat/src/test/java/org/apache/maven/repository/legacy/resolver/DefaultArtifactCollectorTest.java
deleted file mode 100644
index 58dd3fa2..00000000
--- a/framework/src/maven/apache-maven-3.3.3/maven-compat/src/test/java/org/apache/maven/repository/legacy/resolver/DefaultArtifactCollectorTest.java
+++ /dev/null
@@ -1,984 +0,0 @@
-package org.apache.maven.repository.legacy.resolver;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
-import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
-import org.apache.maven.artifact.metadata.ResolutionGroup;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.resolver.ArtifactResolutionException;
-import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
-import org.apache.maven.artifact.resolver.CyclicDependencyException;
-import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
-import org.apache.maven.artifact.resolver.filter.ExclusionSetFilter;
-import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
-import org.apache.maven.artifact.versioning.ArtifactVersion;
-import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
-import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
-import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
-import org.apache.maven.artifact.versioning.VersionRange;
-import org.apache.maven.repository.legacy.metadata.MetadataResolutionRequest;
-import org.codehaus.plexus.PlexusTestCase;
-
-/**
- * Test the default artifact collector.
- *
- * @author <a href="mailto:brett@apache.org">Brett Porter</a>
- */
-public class DefaultArtifactCollectorTest
- extends PlexusTestCase
-{
- private LegacyArtifactCollector artifactCollector;
-
- private ArtifactFactory artifactFactory;
-
- private ArtifactSpec projectArtifact;
-
- private Source source;
-
- private static final String GROUP_ID = "test";
-
- @Override
- protected void setUp()
- throws Exception
- {
- super.setUp();
-
- source = new Source();
- artifactFactory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
- artifactCollector = lookup( LegacyArtifactCollector.class );
-
- projectArtifact = createArtifactSpec( "project", "1.0", null );
- }
-
- @Override
- protected void tearDown()
- throws Exception
- {
- artifactCollector = null;
- artifactFactory = null;
- super.tearDown();
- }
-
- // works, but we don't fail on cycles presently
- public void disabledtestCircularDependencyNotIncludingCurrentProject()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- ArtifactSpec b = a.addDependency( "b", "1.0" );
- b.addDependency( "a", "1.0" );
- try
- {
- collect( a );
- fail( "Should have failed on cyclic dependency not involving project" );
- }
- catch ( CyclicDependencyException expected )
- {
- assertTrue( true );
- }
- }
-
- // works, but we don't fail on cycles presently
- public void disabledtestCircularDependencyIncludingCurrentProject()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- ArtifactSpec b = a.addDependency( "b", "1.0" );
- b.addDependency( "project", "1.0" );
- try
- {
- collect( a );
- fail( "Should have failed on cyclic dependency involving project" );
- }
- catch ( CyclicDependencyException expected )
- {
- assertTrue( true );
- }
- }
-
- public void testResolveWithFilter()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- ArtifactSpec b = a.addDependency( "b", "1.0" );
- ArtifactSpec c = a.addDependency( "c", "3.0" );
-
- b.addDependency( "c", "2.0" );
- ArtifactSpec d = b.addDependency( "d", "4.0" );
-
- ArtifactResolutionResult res = collect( a );
- assertEquals( "Check artifact list",
- createSet( new Object[] { a.artifact, b.artifact, c.artifact, d.artifact } ), res.getArtifacts() );
-
- ArtifactFilter filter = new ExclusionSetFilter( new String[] { "b" } );
- res = collect( a, filter );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, c.artifact } ), res.getArtifacts() );
- }
-
- public void testResolveCorrectDependenciesWhenDifferentDependenciesOnNearest()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- ArtifactSpec b = a.addDependency( "b", "1.0" );
- ArtifactSpec c2 = b.addDependency( "c", "2.0" );
- c2.addDependency( "d", "1.0" );
-
- ArtifactSpec e = createArtifactSpec( "e", "1.0" );
- ArtifactSpec c1 = e.addDependency( "c", "1.0" );
- ArtifactSpec f = c1.addDependency( "f", "1.0" );
-
- ArtifactResolutionResult res = collect( createSet( new Object[] { a.artifact, e.artifact } ) );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, b.artifact, e.artifact, c1.artifact,
- f.artifact } ), res.getArtifacts() );
- assertEquals( "Check version", "1.0", getArtifact( "c", res.getArtifacts() ).getVersion() );
- }
-
- public void disabledtestResolveCorrectDependenciesWhenDifferentDependenciesOnNewest()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- // TODO: use newest conflict resolver
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- ArtifactSpec b = a.addDependency( "b", "1.0" );
- ArtifactSpec c2 = b.addDependency( "c", "2.0" );
- ArtifactSpec d = c2.addDependency( "d", "1.0" );
-
- ArtifactSpec e = createArtifactSpec( "e", "1.0" );
- ArtifactSpec c1 = e.addDependency( "c", "1.0" );
- c1.addDependency( "f", "1.0" );
-
- ArtifactResolutionResult res = collect( createSet( new Object[] { a.artifact, e.artifact } ) );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, b.artifact, e.artifact, c2.artifact,
- d.artifact } ), res.getArtifacts() );
- assertEquals( "Check version", "2.0", getArtifact( "c", res.getArtifacts() ).getVersion() );
- }
-
- public void disabledtestResolveCorrectDependenciesWhenDifferentDependenciesOnNewestVersionReplaced()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- // TODO: use newest conflict resolver
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- ArtifactSpec b1 = a.addDependency( "b", "1.0" );
- ArtifactSpec c = a.addDependency( "c", "1.0" );
- ArtifactSpec d2 = b1.addDependency( "d", "2.0" );
- d2.addDependency( "h", "1.0" );
- ArtifactSpec d1 = c.addDependency( "d", "1.0" );
- ArtifactSpec b2 = c.addDependency( "b", "2.0" );
- ArtifactSpec e = b2.addDependency( "e", "1.0" );
- ArtifactSpec g = d1.addDependency( "g", "1.0" );
-
- ArtifactResolutionResult res = collect( createSet( new Object[] { a.artifact } ) );
- Object[] artifacts = new Object[] { a.artifact, c.artifact, d1.artifact, b2.artifact, e.artifact, g.artifact };
- assertEquals( "Check artifact list", createSet( artifacts ), res.getArtifacts() );
- assertEquals( "Check version", "1.0", getArtifact( "d", res.getArtifacts() ).getVersion() );
- assertEquals( "Check version", "2.0", getArtifact( "b", res.getArtifacts() ).getVersion() );
- }
-
- public void testResolveNearestNewestIsNearest()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- ArtifactSpec b = a.addDependency( "b", "1.0" );
- ArtifactSpec c = a.addDependency( "c", "3.0" );
-
- b.addDependency( "c", "2.0" );
-
- ArtifactResolutionResult res = collect( a );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, b.artifact, c.artifact } ),
- res.getArtifacts() );
- assertEquals( "Check version", "3.0", getArtifact( "c", res.getArtifacts() ).getVersion() );
- }
-
- public void testResolveNearestOldestIsNearest()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- ArtifactSpec b = a.addDependency( "b", "1.0" );
- ArtifactSpec c = a.addDependency( "c", "2.0" );
-
- b.addDependency( "c", "3.0" );
-
- ArtifactResolutionResult res = collect( a );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, b.artifact, c.artifact } ),
- res.getArtifacts() );
- assertEquals( "Check version", "2.0", getArtifact( "c", res.getArtifacts() ).getVersion() );
- }
-
- public void testResolveLocalNewestIsLocal()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- a.addDependency( "b", "2.0" );
- ArtifactSpec b = createArtifactSpec( "b", "3.0" );
-
- ArtifactResolutionResult res = collect( createSet( new Object[] { a.artifact, b.artifact } ) );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, b.artifact } ), res.getArtifacts() );
- assertEquals( "Check version", "3.0", getArtifact( "b", res.getArtifacts() ).getVersion() );
- }
-
- public void testResolveLocalOldestIsLocal()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- a.addDependency( "b", "3.0" );
- ArtifactSpec b = createArtifactSpec( "b", "2.0" );
-
- ArtifactResolutionResult res = collect( createSet( new Object[] { a.artifact, b.artifact } ) );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, b.artifact } ), res.getArtifacts() );
- assertEquals( "Check version", "2.0", getArtifact( "b", res.getArtifacts() ).getVersion() );
- }
-
- public void testResolveLocalWithNewerVersionButLesserScope()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "commons-logging", "1.0" );
- a.addDependency( "junit", "3.7" );
- ArtifactSpec b = createArtifactSpec( "junit", "3.8.1", Artifact.SCOPE_TEST );
-
- ArtifactResolutionResult res = collect( createSet( new Object[] { a.artifact, b.artifact } ) );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, b.artifact } ), res.getArtifacts() );
- assertEquals( "Check version", "3.8.1", getArtifact( "junit", res.getArtifacts() ).getVersion() );
- assertEquals( "Check artifactScope", Artifact.SCOPE_TEST, getArtifact( "junit", res.getArtifacts() ).getScope() );
- }
-
- public void testResolveLocalWithNewerVersionButLesserScopeResolvedFirst()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec b = createArtifactSpec( "junit", "3.8.1", Artifact.SCOPE_TEST );
- ArtifactSpec a = createArtifactSpec( "commons-logging", "1.0" );
- a.addDependency( "junit", "3.7" );
-
- ArtifactResolutionResult res = collect( createSet( new Object[] { a.artifact, b.artifact } ) );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, b.artifact } ), res.getArtifacts() );
- assertEquals( "Check version", "3.8.1", getArtifact( "junit", res.getArtifacts() ).getVersion() );
- assertEquals( "Check artifactScope", Artifact.SCOPE_TEST, getArtifact( "junit", res.getArtifacts() ).getScope() );
- }
-
- public void testResolveNearestWithRanges()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- ArtifactSpec b = a.addDependency( "b", "1.0" );
- ArtifactSpec c = a.addDependency( "c", "2.0" );
-
- b.addDependency( "c", "[1.0,3.0]" );
-
- ArtifactResolutionResult res = collect( a );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, b.artifact, c.artifact } ),
- res.getArtifacts() );
- assertEquals( "Check version", "2.0", getArtifact( "c", res.getArtifacts() ).getVersion() );
- }
-
- public void testResolveRangeWithManagedVersion()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- ArtifactSpec b = a.addDependency( "b", "[1.0,3.0]" );
-
- ArtifactSpec managedB = createArtifactSpec( "b", "5.0" );
-
- ArtifactResolutionResult res = collect( a, managedB.artifact );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, managedB.artifact } ),
- res.getArtifacts() );
- assertEquals( "Check version", "5.0", getArtifact( "b", res.getArtifacts() ).getVersion() );
- }
-
- public void testCompatibleRanges()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- ArtifactSpec b = a.addDependency( "b", "1.0" );
- a.addDependency( "c", "[2.0,2.5]" );
- b.addDependency( "c", "[1.0,3.0]" );
- ArtifactSpec c = createArtifactSpec( "c", "2.5" );
-
- ArtifactResolutionResult res = collect( a );
-
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, b.artifact, c.artifact } ),
- res.getArtifacts() );
- assertEquals( "Check version", "2.5", getArtifact( "c", res.getArtifacts() ).getVersion() );
- }
-
- public void testIncompatibleRanges()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- ArtifactSpec b = a.addDependency( "b", "1.0" );
- a.addDependency( "c", "[2.4,3.0]" );
-
- b.addDependency( "c", "[1.0,2.0]" );
-
- ArtifactResolutionResult res = collect( a );
-
- assertTrue( res.hasVersionRangeViolations() );
- }
-
- public void testUnboundedRangeWhenVersionUnavailable()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- ArtifactSpec b = a.addDependency( "b", "1.0" );
- a.addDependency( "c", "[2.0,]" );
- b.addDependency( "c", "[1.0,]" );
-
- ArtifactResolutionResult res = collect( a );
-
- assertTrue( res.hasVersionRangeViolations() );
- }
-
- public void testUnboundedRangeBelowLastRelease()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- createArtifactSpec( "c", "1.5" );
- ArtifactSpec c = createArtifactSpec( "c", "2.0" );
- createArtifactSpec( "c", "1.1" );
- a.addDependency( "c", "[1.0,)" );
-
- ArtifactResolutionResult res = collect( a );
-
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, c.artifact } ), res.getArtifacts() );
- assertEquals( "Check version", "2.0", getArtifact( "c", res.getArtifacts() ).getVersion() );
- }
-
- public void testUnboundedRangeAboveLastRelease()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- createArtifactSpec( "c", "2.0" );
- a.addDependency( "c", "[10.0,)" );
-
- ArtifactResolutionResult res = collect( a );
-
- assertTrue( res.hasVersionRangeViolations() );
- }
-
- public void testResolveManagedVersion()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- a.addDependency( "b", "3.0", Artifact.SCOPE_RUNTIME );
-
- Artifact managedVersion = createArtifactSpec( "b", "5.0" ).artifact;
- Artifact modifiedB = createArtifactSpec( "b", "5.0", Artifact.SCOPE_RUNTIME ).artifact;
-
- ArtifactResolutionResult res = collect( a, managedVersion );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, modifiedB } ), res.getArtifacts() );
- }
-
- public void testCollectChangesVersionOfOriginatingArtifactIfInDependencyManagementHasDifferentVersion()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
-
- Artifact artifact = projectArtifact.artifact;
- Artifact managedVersion = createArtifactSpec( artifact.getArtifactId(), "2.0" ).artifact;
-
- ArtifactResolutionResult result = collect( a, managedVersion );
-
- assertEquals( "collect has modified version in originating artifact", "1.0", artifact.getVersion() );
-
- Artifact resolvedArtifact = result.getArtifacts().iterator().next();
-
- assertEquals( "Resolved version don't match original artifact version", "1.0", resolvedArtifact.getVersion() );
- }
-
- public void testResolveCompileScopeOverTestScope()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- ArtifactSpec c = createArtifactSpec( "c", "3.0", Artifact.SCOPE_TEST );
-
- a.addDependency( "c", "2.0", Artifact.SCOPE_COMPILE );
-
- Artifact modifiedC = createArtifactSpec( "c", "3.0", Artifact.SCOPE_COMPILE ).artifact;
-
- ArtifactResolutionResult res = collect( createSet( new Object[] { a.artifact, c.artifact } ) );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, modifiedC } ), res.getArtifacts() );
- Artifact artifact = getArtifact( "c", res.getArtifacts() );
- // local wins now, and irrelevant if not local as test/provided aren't transitive
- // assertEquals( "Check artifactScope", Artifact.SCOPE_COMPILE, artifact.getArtifactScope() );
- assertEquals( "Check artifactScope", Artifact.SCOPE_TEST, artifact.getScope() );
- }
-
- public void testResolveRuntimeScopeOverTestScope()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- ArtifactSpec c = createArtifactSpec( "c", "3.0", Artifact.SCOPE_TEST );
-
- a.addDependency( "c", "2.0", Artifact.SCOPE_RUNTIME );
-
- Artifact modifiedC = createArtifactSpec( "c", "3.0", Artifact.SCOPE_RUNTIME ).artifact;
-
- ArtifactResolutionResult res = collect( createSet( new Object[] { a.artifact, c.artifact } ) );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, modifiedC } ), res.getArtifacts() );
- Artifact artifact = getArtifact( "c", res.getArtifacts() );
- // local wins now, and irrelevant if not local as test/provided aren't transitive
- // assertEquals( "Check artifactScope", Artifact.SCOPE_RUNTIME, artifact.getArtifactScope() );
- assertEquals( "Check artifactScope", Artifact.SCOPE_TEST, artifact.getScope() );
- }
-
- public void testResolveCompileScopeOverRuntimeScope()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec root = createArtifactSpec( "root", "1.0" );
- ArtifactSpec a = root.addDependency( "a", "1.0" );
- root.addDependency( "c", "3.0", Artifact.SCOPE_RUNTIME );
-
- a.addDependency( "c", "2.0", Artifact.SCOPE_COMPILE );
-
- Artifact modifiedC = createArtifactSpec( "c", "3.0", Artifact.SCOPE_COMPILE ).artifact;
-
- ArtifactResolutionResult res = collect( createSet( new Object[] { root.artifact } ) );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, root.artifact, modifiedC } ),
- res.getArtifacts() );
- Artifact artifact = getArtifact( "c", res.getArtifacts() );
- assertEquals( "Check artifactScope", Artifact.SCOPE_COMPILE, artifact.getScope() );
- }
-
- public void testResolveCompileScopeOverProvidedScope()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- ArtifactSpec c = createArtifactSpec( "c", "3.0", Artifact.SCOPE_PROVIDED );
-
- a.addDependency( "c", "2.0", Artifact.SCOPE_COMPILE );
-
- Artifact modifiedC = createArtifactSpec( "c", "3.0", Artifact.SCOPE_COMPILE ).artifact;
-
- ArtifactResolutionResult res = collect( createSet( new Object[] { a.artifact, c.artifact } ) );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, modifiedC } ), res.getArtifacts() );
- Artifact artifact = getArtifact( "c", res.getArtifacts() );
- // local wins now, and irrelevant if not local as test/provided aren't transitive
- // assertEquals( "Check artifactScope", Artifact.SCOPE_COMPILE, artifact.getArtifactScope() );
- assertEquals( "Check artifactScope", Artifact.SCOPE_PROVIDED, artifact.getScope() );
- }
-
- public void testResolveRuntimeScopeOverProvidedScope()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- ArtifactSpec c = createArtifactSpec( "c", "3.0", Artifact.SCOPE_PROVIDED );
-
- a.addDependency( "c", "2.0", Artifact.SCOPE_RUNTIME );
-
- Artifact modifiedC = createArtifactSpec( "c", "3.0", Artifact.SCOPE_RUNTIME ).artifact;
-
- ArtifactResolutionResult res = collect( createSet( new Object[] { a.artifact, c.artifact } ) );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, modifiedC } ), res.getArtifacts() );
- Artifact artifact = getArtifact( "c", res.getArtifacts() );
- // local wins now, and irrelevant if not local as test/provided aren't transitive
- // assertEquals( "Check artifactScope", Artifact.SCOPE_RUNTIME, artifact.getArtifactScope() );
- assertEquals( "Check artifactScope", Artifact.SCOPE_PROVIDED, artifact.getScope() );
- }
-
- public void testProvidedScopeNotTransitive()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0", Artifact.SCOPE_PROVIDED );
- ArtifactSpec b = createArtifactSpec( "b", "1.0" );
- b.addDependency( "c", "3.0", Artifact.SCOPE_PROVIDED );
-
- ArtifactResolutionResult res = collect( createSet( new Object[] { a.artifact, b.artifact } ) );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, b.artifact } ), res.getArtifacts() );
- }
-
- public void testOptionalNotTransitive()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- ArtifactSpec b = createArtifactSpec( "b", "1.0" );
- b.addDependency( "c", "3.0", true );
-
- ArtifactResolutionResult res = collect( createSet( new Object[] { a.artifact, b.artifact } ) );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, b.artifact } ), res.getArtifacts() );
- }
-
- public void testOptionalIncludedAtRoot()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
-
- ArtifactSpec b = createArtifactSpec( "b", "1.0", true );
-
- ArtifactResolutionResult res = collect( createSet( new Object[] { a.artifact, b.artifact } ) );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, b.artifact } ), res.getArtifacts() );
- }
-
- public void testScopeUpdate()
- throws InvalidVersionSpecificationException, ArtifactResolutionException
- {
- /* farthest = compile */
- checkScopeUpdate( Artifact.SCOPE_COMPILE, Artifact.SCOPE_COMPILE, Artifact.SCOPE_COMPILE );
- checkScopeUpdate( Artifact.SCOPE_COMPILE, Artifact.SCOPE_PROVIDED, Artifact.SCOPE_COMPILE );
- checkScopeUpdate( Artifact.SCOPE_COMPILE, Artifact.SCOPE_RUNTIME, Artifact.SCOPE_COMPILE );
- checkScopeUpdate( Artifact.SCOPE_COMPILE, Artifact.SCOPE_SYSTEM, Artifact.SCOPE_COMPILE );
- checkScopeUpdate( Artifact.SCOPE_COMPILE, Artifact.SCOPE_TEST, Artifact.SCOPE_COMPILE );
-
- /* farthest = provided */
- checkScopeUpdate( Artifact.SCOPE_PROVIDED, Artifact.SCOPE_COMPILE, Artifact.SCOPE_COMPILE );
- checkScopeUpdate( Artifact.SCOPE_PROVIDED, Artifact.SCOPE_PROVIDED, Artifact.SCOPE_PROVIDED );
- checkScopeUpdate( Artifact.SCOPE_PROVIDED, Artifact.SCOPE_RUNTIME, Artifact.SCOPE_RUNTIME );
- checkScopeUpdate( Artifact.SCOPE_PROVIDED, Artifact.SCOPE_SYSTEM, Artifact.SCOPE_SYSTEM );
- checkScopeUpdate( Artifact.SCOPE_PROVIDED, Artifact.SCOPE_TEST, Artifact.SCOPE_TEST );
-
- /* farthest = runtime */
- checkScopeUpdate( Artifact.SCOPE_RUNTIME, Artifact.SCOPE_COMPILE, Artifact.SCOPE_COMPILE );
- checkScopeUpdate( Artifact.SCOPE_RUNTIME, Artifact.SCOPE_PROVIDED, Artifact.SCOPE_RUNTIME );
- checkScopeUpdate( Artifact.SCOPE_RUNTIME, Artifact.SCOPE_RUNTIME, Artifact.SCOPE_RUNTIME );
- checkScopeUpdate( Artifact.SCOPE_RUNTIME, Artifact.SCOPE_SYSTEM, Artifact.SCOPE_SYSTEM );
- checkScopeUpdate( Artifact.SCOPE_RUNTIME, Artifact.SCOPE_TEST, Artifact.SCOPE_RUNTIME );
-
- /* farthest = system */
- checkScopeUpdate( Artifact.SCOPE_SYSTEM, Artifact.SCOPE_COMPILE, Artifact.SCOPE_COMPILE );
- checkScopeUpdate( Artifact.SCOPE_SYSTEM, Artifact.SCOPE_PROVIDED, Artifact.SCOPE_PROVIDED );
- checkScopeUpdate( Artifact.SCOPE_SYSTEM, Artifact.SCOPE_RUNTIME, Artifact.SCOPE_RUNTIME );
- checkScopeUpdate( Artifact.SCOPE_SYSTEM, Artifact.SCOPE_SYSTEM, Artifact.SCOPE_SYSTEM );
- checkScopeUpdate( Artifact.SCOPE_SYSTEM, Artifact.SCOPE_TEST, Artifact.SCOPE_TEST );
-
- /* farthest = test */
- checkScopeUpdate( Artifact.SCOPE_TEST, Artifact.SCOPE_COMPILE, Artifact.SCOPE_COMPILE );
- checkScopeUpdate( Artifact.SCOPE_TEST, Artifact.SCOPE_PROVIDED, Artifact.SCOPE_PROVIDED );
- checkScopeUpdate( Artifact.SCOPE_TEST, Artifact.SCOPE_RUNTIME, Artifact.SCOPE_RUNTIME );
- checkScopeUpdate( Artifact.SCOPE_TEST, Artifact.SCOPE_SYSTEM, Artifact.SCOPE_SYSTEM );
- checkScopeUpdate( Artifact.SCOPE_TEST, Artifact.SCOPE_TEST, Artifact.SCOPE_TEST );
- }
-
- private void checkScopeUpdate( String farthestScope, String nearestScope, String expectedScope )
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- checkScopeUpdateDirect( farthestScope, nearestScope, expectedScope );
- checkScopeUpdateTransitively( farthestScope, nearestScope, expectedScope );
- }
-
- private void checkScopeUpdateTransitively( String farthestScope, String nearestScope, String expectedScope )
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- ArtifactSpec b = createArtifactSpec( "b", "1.0", nearestScope );
- ArtifactSpec c = createArtifactSpec( "c", "1.0" );
- a.addDependency( c );
- ArtifactSpec dNearest = createArtifactSpec( "d", "2.0" );
- b.addDependency( dNearest );
- ArtifactSpec dFarthest = createArtifactSpec( "d", "3.0", farthestScope );
- c.addDependency( dFarthest );
-
- /* system and provided dependencies are not transitive */
- if ( !Artifact.SCOPE_SYSTEM.equals( nearestScope ) && !Artifact.SCOPE_PROVIDED.equals( nearestScope ) )
- {
- checkScopeUpdate( a, b, expectedScope, "2.0" );
- }
- }
-
- private void checkScopeUpdateDirect( String farthestScope, String nearestScope, String expectedScope )
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- ArtifactSpec b = createArtifactSpec( "b", "1.0" );
- ArtifactSpec c = createArtifactSpec( "c", "1.0" );
- a.addDependency( c );
- ArtifactSpec dNearest = createArtifactSpec( "d", "2.0", nearestScope );
- b.addDependency( dNearest );
- ArtifactSpec dFarthest = createArtifactSpec( "d", "3.0", farthestScope );
- c.addDependency( dFarthest );
-
- checkScopeUpdate( a, b, expectedScope, "2.0" );
- }
-
- private void checkScopeUpdate( ArtifactSpec a, ArtifactSpec b, String expectedScope, String expectedVersion )
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ScopeArtifactFilter filter;
- if ( Artifact.SCOPE_PROVIDED.equals( expectedScope ) )
- {
- filter = new ScopeArtifactFilter( Artifact.SCOPE_COMPILE );
- }
- else if ( Artifact.SCOPE_SYSTEM.equals( expectedScope ) )
- {
- filter = new ScopeArtifactFilter( Artifact.SCOPE_COMPILE );
- }
- else
- {
- filter = new ScopeArtifactFilter( expectedScope );
- }
-
- ArtifactResolutionResult res = collect( createSet( new Object[] { a.artifact, b.artifact } ), filter );
- Artifact artifact = getArtifact( "d", res.getArtifacts() );
- assertNotNull( "MNG-1895 Dependency was not added to resolution", artifact );
- assertEquals( "Check artifactScope", expectedScope, artifact.getScope() );
- assertEquals( "Check version", expectedVersion, artifact.getVersion() );
-
- ArtifactSpec d = createArtifactSpec( "d", "1.0" );
- res = collect( createSet( new Object[] { a.artifact, b.artifact, d.artifact } ), filter );
- artifact = getArtifact( "d", res.getArtifacts() );
- assertNotNull( "MNG-1895 Dependency was not added to resolution", artifact );
- assertEquals( "Check artifactScope", d.artifact.getScope(), artifact.getScope() );
- assertEquals( "Check version", "1.0", artifact.getVersion() );
- }
-
- public void disabledtestOptionalNotTransitiveButVersionIsInfluential()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- ArtifactSpec b = createArtifactSpec( "b", "1.0" );
- b.addDependency( "c", "3.0", true );
- ArtifactSpec d = a.addDependency( "d", "1.0" );
- ArtifactSpec e = d.addDependency( "e", "1.0" );
- e.addDependency( "c", "2.0" );
-
- ArtifactSpec c = createArtifactSpec( "c", "3.0" );
-
- ArtifactResolutionResult res = collect( createSet( new Object[] { a.artifact, b.artifact } ) );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, b.artifact, c.artifact, d.artifact,
- e.artifact } ), res.getArtifacts() );
- Artifact artifact = getArtifact( "c", res.getArtifacts() );
- assertEquals( "Check version", "3.0", artifact.getVersion() );
- }
-
- public void testTestScopeNotTransitive()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0", Artifact.SCOPE_TEST );
- ArtifactSpec b = createArtifactSpec( "b", "1.0" );
- b.addDependency( "c", "3.0", Artifact.SCOPE_TEST );
-
- ArtifactResolutionResult res = collect( createSet( new Object[] { a.artifact, b.artifact } ) );
- assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, b.artifact } ), res.getArtifacts() );
- }
-
- public void testSnapshotNotIncluded()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- a.addDependency( "b", "[1.0,)" );
- createArtifactSpec( "b", "1.0-SNAPSHOT" );
-
- ArtifactResolutionResult res = collect( a );
-
- assertTrue( res.hasVersionRangeViolations() );
-
- /*
- * try { ArtifactResolutionResult res = collect( a ); fail( "Expected b not to resolve: " + res ); } catch (
- * OverConstrainedVersionException e ) { assertTrue( e.getMessage().indexOf( "[1.0-SNAPSHOT]" ) <
- * e.getMessage().indexOf( "[1.0,)" ) ); }
- */
- }
-
- public void testOverConstrainedVersionException()
- throws ArtifactResolutionException, InvalidVersionSpecificationException
- {
- ArtifactSpec a = createArtifactSpec( "a", "1.0" );
- a.addDependency( "b", "[1.0, 2.0)" );
- a.addDependency( "c", "[3.3.0,4.0.0)" );
-
- ArtifactSpec b = createArtifactSpec( "b", "1.0.0" );
- b.addDependency( "c", "3.3.0-v3346" );
-
- ArtifactSpec c = createArtifactSpec( "c", "3.2.1-v3235e" );
-
- try
- {
- ArtifactResolutionResult res = collect( createSet( new Object[] { a.artifact } ) );
- }
- catch ( OverConstrainedVersionException e )
- {
- assertTrue( "Versions unordered", e.getMessage().contains( "[3.2.1-v3235e, 3.3.0-v3346]" ) );
- assertTrue( "DependencyTrail unresolved", e.getMessage().contains( "Path to dependency:" ) );
- }
- }
-
- private Artifact getArtifact( String id, Set artifacts )
- {
- for ( Object artifact : artifacts )
- {
- Artifact a = (Artifact) artifact;
- if ( a.getArtifactId().equals( id ) && a.getGroupId().equals( GROUP_ID ) )
- {
- return a;
- }
- }
- return null;
- }
-
- private ArtifactResolutionResult collect( Set artifacts )
- throws ArtifactResolutionException
- {
- return collect( artifacts, null );
- }
-
- private ArtifactResolutionResult collect( Set artifacts, ArtifactFilter filter )
- throws ArtifactResolutionException
- {
- return artifactCollector.collect( artifacts, projectArtifact.artifact, null, null, null, source, filter,
- Collections.EMPTY_LIST, null );
- }
-
- private ArtifactResolutionResult collect( ArtifactSpec a )
- throws ArtifactResolutionException
- {
- return artifactCollector.collect( Collections.singleton( a.artifact ), projectArtifact.artifact, null, null,
- null, source, null, Collections.EMPTY_LIST, null );
- }
-
- private ArtifactResolutionResult collect( ArtifactSpec a, ArtifactFilter filter )
- throws ArtifactResolutionException
- {
- return artifactCollector.collect( Collections.singleton( a.artifact ), projectArtifact.artifact, null, null,
- null, source, filter, Collections.EMPTY_LIST, null );
- }
-
- private ArtifactResolutionResult collect( ArtifactSpec a, Artifact managedVersion )
- throws ArtifactResolutionException
- {
- Map managedVersions = Collections.singletonMap( managedVersion.getDependencyConflictId(), managedVersion );
- return artifactCollector.collect( Collections.singleton( a.artifact ), projectArtifact.artifact,
- managedVersions, null, null, source, null, Collections.EMPTY_LIST, null );
- }
-
- private ArtifactSpec createArtifactSpec( String id, String version )
- throws InvalidVersionSpecificationException
- {
- return createArtifactSpec( id, version, Artifact.SCOPE_COMPILE );
- }
-
- private ArtifactSpec createArtifactSpec( String id, String version, boolean optional )
- throws InvalidVersionSpecificationException
- {
- return createArtifactSpec( id, version, Artifact.SCOPE_COMPILE, null, optional );
- }
-
- private ArtifactSpec createArtifactSpec( String id, String version, String scope )
- throws InvalidVersionSpecificationException
- {
- return createArtifactSpec( id, version, scope, null, false );
- }
-
- private ArtifactSpec createArtifactSpec( String id, String version, String scope, String inheritedScope,
- boolean optional )
- throws InvalidVersionSpecificationException
- {
- VersionRange versionRange = VersionRange.createFromVersionSpec( version );
- Artifact artifact =
- artifactFactory.createDependencyArtifact( GROUP_ID, id, versionRange, "jar", null, scope, inheritedScope,
- optional );
- ArtifactSpec spec = null;
- if ( artifact != null )
- {
- spec = new ArtifactSpec();
- spec.artifact = artifact;
- source.addArtifact( spec );
- }
- return spec;
- }
-
- private static Set createSet( Object[] x )
- {
- return new LinkedHashSet( Arrays.asList( x ) );
- }
-
- private class ArtifactSpec
- {
- private Artifact artifact;
-
- private Set dependencies = new HashSet();
-
- public ArtifactSpec addDependency( String id, String version )
- throws InvalidVersionSpecificationException
- {
- return addDependency( id, version, Artifact.SCOPE_COMPILE );
- }
-
- public ArtifactSpec addDependency( String id, String version, String scope )
- throws InvalidVersionSpecificationException
- {
- return addDependency( id, version, scope, false );
- }
-
- private ArtifactSpec addDependency( ArtifactSpec dep )
- throws InvalidVersionSpecificationException
- {
- if ( dep != null )
- {
- dependencies.add( dep.artifact );
- }
- return dep;
- }
-
- private ArtifactSpec addDependency( String id, String version, String scope, boolean optional )
- throws InvalidVersionSpecificationException
- {
- ArtifactSpec dep = createArtifactSpec( id, version, scope, artifact.getScope(), optional );
- return addDependency( dep );
- }
-
- public ArtifactSpec addDependency( String id, String version, boolean optional )
- throws InvalidVersionSpecificationException
- {
- return addDependency( id, version, Artifact.SCOPE_COMPILE, optional );
- }
- }
-
- private class Source
- implements ArtifactMetadataSource
- {
- private Map artifacts = new HashMap();
-
- private Map versions = new HashMap();
-
- public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository localRepository,
- List<ArtifactRepository> remoteRepositories )
- throws ArtifactMetadataRetrievalException
- {
- String key = getKey( artifact );
-
- ArtifactSpec a = (ArtifactSpec) artifacts.get( key );
- try
- {
- return new ResolutionGroup( artifact, createArtifacts( artifactFactory, a.dependencies,
- artifact.getScope(),
- artifact.getDependencyFilter() ),
- Collections.EMPTY_LIST );
- }
- catch ( InvalidVersionSpecificationException e )
- {
- throw new ArtifactMetadataRetrievalException( "Invalid version creating artifacts", e, artifact );
- }
- }
-
- private String getKey( Artifact artifact )
- {
- return artifact.getDependencyConflictId();
- }
-
- private Set createArtifacts( ArtifactFactory artifactFactory, Set dependencies, String inheritedScope,
- ArtifactFilter dependencyFilter )
- throws InvalidVersionSpecificationException
- {
- Set projectArtifacts = new HashSet();
-
- for ( Object dependency : dependencies )
- {
- Artifact d = (Artifact) dependency;
-
- VersionRange versionRange;
- if ( d.getVersionRange() != null )
- {
- versionRange = d.getVersionRange();
- }
- else
- {
- versionRange = VersionRange.createFromVersionSpec( d.getVersion() );
- }
- Artifact artifact;
- if ( d.getScope().equals( Artifact.SCOPE_TEST ) || d.getScope().equals( Artifact.SCOPE_PROVIDED ) )
- {
- /* don't call createDependencyArtifact as it'll ignore test and provided scopes */
- artifact =
- artifactFactory.createArtifact( d.getGroupId(), d.getArtifactId(), d.getVersion(), d.getScope(),
- d.getType() );
- }
- else
- {
- artifact =
- artifactFactory.createDependencyArtifact( d.getGroupId(), d.getArtifactId(), versionRange,
- d.getType(), d.getClassifier(), d.getScope(),
- inheritedScope, d.isOptional() );
- }
-
- if ( artifact != null && ( dependencyFilter == null || dependencyFilter.include( artifact ) ) )
- {
- artifact.setDependencyFilter( dependencyFilter );
-
- projectArtifacts.add( artifact );
- }
- }
-
- return projectArtifacts;
- }
-
- public void addArtifact( ArtifactSpec spec )
- {
- artifacts.put( getKey( spec.artifact ), spec );
-
- String key = spec.artifact.getDependencyConflictId();
- List artifactVersions = (List) versions.get( key );
- if ( artifactVersions == null )
- {
- artifactVersions = new ArrayList();
- versions.put( key, artifactVersions );
- }
- if ( spec.artifact.getVersion() != null )
- {
- artifactVersions.add( new DefaultArtifactVersion( spec.artifact.getVersion() ) );
- }
- }
-
- public List<ArtifactVersion> retrieveAvailableVersions( Artifact artifact, ArtifactRepository localRepository,
- List<ArtifactRepository> remoteRepositories )
- throws ArtifactMetadataRetrievalException
- {
- return retrieveAvailableVersions( artifact );
- }
-
- public List<ArtifactVersion> retrieveAvailableVersionsFromDeploymentRepository(
- Artifact artifact,
- ArtifactRepository localRepository,
- ArtifactRepository remoteRepository )
- throws ArtifactMetadataRetrievalException
- {
- return retrieveAvailableVersions( artifact );
- }
-
- private List<ArtifactVersion> retrieveAvailableVersions( Artifact artifact )
- {
- List artifactVersions = (List) versions.get( artifact.getDependencyConflictId() );
- if ( artifactVersions == null )
- {
- artifactVersions = Collections.EMPTY_LIST;
- }
- return artifactVersions;
- }
-
- public ResolutionGroup retrieve( MetadataResolutionRequest request )
- throws ArtifactMetadataRetrievalException
- {
- return retrieve( request.getArtifact(), request.getLocalRepository(), request.getRemoteRepositories() );
- }
-
- public List<ArtifactVersion> retrieveAvailableVersions( MetadataResolutionRequest request )
- throws ArtifactMetadataRetrievalException
- {
- return retrieveAvailableVersions( request.getArtifact(), request.getLocalRepository(), request.getRemoteRepositories() );
- }
- }
-}