You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sc...@apache.org on 2016/12/21 04:09:21 UTC
[1/3] maven-resolver git commit: [MRESOLVER-12] Addition of unit
tests for the various DependencySelector implementations to test things are
working as documented.
Repository: maven-resolver
Updated Branches:
refs/heads/master 792768882 -> 1a3831df5
[MRESOLVER-12] Addition of unit tests for the various DependencySelector implementations to test things are working as documented.
Project: http://git-wip-us.apache.org/repos/asf/maven-resolver/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-resolver/commit/65e1e5f4
Tree: http://git-wip-us.apache.org/repos/asf/maven-resolver/tree/65e1e5f4
Diff: http://git-wip-us.apache.org/repos/asf/maven-resolver/diff/65e1e5f4
Branch: refs/heads/master
Commit: 65e1e5f46e9e47953aead20a9636d1378f1d6400
Parents: 7927688
Author: Christian Schulte <sc...@apache.org>
Authored: Wed Dec 21 03:12:28 2016 +0100
Committer: Christian Schulte <sc...@apache.org>
Committed: Wed Dec 21 03:12:28 2016 +0100
----------------------------------------------------------------------
.../impl/DefaultDependencyCollectorTest.java | 219 +++++++++----------
.../artifact-descriptions/managed/gid_0_ver.ini | 4 -
.../managed/gid_1_managed-by-request.ini | 4 -
.../artifact-descriptions/managed/gid_1_ver.ini | 4 -
.../managed/gid_2_managed-by-0.ini | 4 -
.../managed/gid_3_managed-by-1.ini | 4 -
.../managed/gid_4_managed-by-2.ini | 2 -
.../managed/gid_5_managed-by-3.ini | 1 -
.../managed/gid_direct_ver.ini | 5 +
.../managed/gid_root_ver.ini | 5 +
.../gid_transitive-1_managed-by-root.ini | 5 +
.../gid_transitive-2_managed-by-direct.ini | 5 +
...gid_transitive-3_managed-by-transitive-1.ini | 4 +
...gid_transitive-4_managed-by-transitive-2.ini | 1 +
.../managed/management-tree.txt | 12 +-
.../managed/pom-management-tree.txt | 7 -
.../selection/optional/all-nodes.txt | 7 +-
.../selection/optional/gid_direct_ver.ini | 2 +-
.../selection/optional/gid_root_ver.ini | 2 +
.../selection/optional/gid_transitive-1_ver.ini | 2 +
.../selection/optional/gid_transitive-2_ver.ini | 1 +
.../optional/gid_transitive-of-direct_ver.ini | 2 -
...d_transitive-of-transitive-of-direct_ver.ini | 1 -
.../optional-transitive-exclusion-tree.txt | 2 +
...al-transitive-nodes-of-direct-dependency.txt | 1 -
...without-optional-transitive-nodes-of-pom.txt | 2 -
.../selection/scope/all-nodes-of-pom.txt | 5 -
.../selection/scope/all-nodes.txt | 8 +-
.../selection/scope/gid_direct_ver.ini | 2 +-
.../selection/scope/gid_root_ver.ini | 2 +
.../selection/scope/gid_transitive-1_ver.ini | 2 +
.../selection/scope/gid_transitive-2_ver.ini | 1 +
.../scope/gid_transitive-of-direct_ver.ini | 2 -
...d_transitive-of-transitive-of-direct_ver.ini | 2 -
...f-transitive-of-transitive-of-direct_ver.ini | 1 -
.../scope/transitive-1-exclusion-tree.txt | 2 +
.../scope/transitive-2-exclusion-tree.txt | 3 +
...ransitive-of-direct-scope-exclusion-tree.txt | 1 -
...ransitive-of-direct-scope-exclusion-tree.txt | 2 -
...ransitive-of-direct-scope-exclusion-tree.txt | 3 -
40 files changed, 164 insertions(+), 180 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultDependencyCollectorTest.java
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultDependencyCollectorTest.java b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultDependencyCollectorTest.java
index b9832fc..d0ddc6a 100644
--- a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultDependencyCollectorTest.java
+++ b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultDependencyCollectorTest.java
@@ -44,6 +44,7 @@ import org.eclipse.aether.collection.DependencyCollectionException;
import org.eclipse.aether.collection.DependencyManagement;
import org.eclipse.aether.collection.DependencyManager;
import org.eclipse.aether.collection.DependencySelector;
+import org.eclipse.aether.graph.DefaultDependencyNode;
import org.eclipse.aether.graph.Dependency;
import org.eclipse.aether.graph.DependencyCycle;
import org.eclipse.aether.graph.DependencyNode;
@@ -116,11 +117,6 @@ public class DefaultDependencyCollectorTest
assertEqualSubtree( expected, actual, new LinkedList<DependencyNode>() );
}
- private static void assertEqualArtifactSubtree( DependencyNode expected, DependencyNode actual )
- {
- assertEqualArtifactSubtree( expected, actual, new LinkedList<DependencyNode>() );
- }
-
private static void assertEqualSubtree( DependencyNode expected, DependencyNode actual,
LinkedList<DependencyNode> parents )
{
@@ -154,39 +150,6 @@ public class DefaultDependencyCollectorTest
parents.removeLast();
}
- private static void assertEqualArtifactSubtree( DependencyNode expected, DependencyNode actual,
- LinkedList<DependencyNode> parents )
- {
- assertEquals( "path: " + parents, expected.getArtifact(), actual.getArtifact() );
-
- if ( actual.getArtifact() != null )
- {
- Artifact artifact = actual.getArtifact();
- for ( DependencyNode parent : parents )
- {
- if ( parent.getArtifact() != null && artifact.equals( parent.getArtifact() ) )
- {
- return;
- }
- }
- }
-
- parents.addLast( expected );
-
- assertEquals( "path: " + parents + ", expected: " + expected.getChildren() + ", actual: "
- + actual.getChildren(), expected.getChildren().size(), actual.getChildren().size() );
-
- Iterator<DependencyNode> iterator1 = expected.getChildren().iterator();
- Iterator<DependencyNode> iterator2 = actual.getChildren().iterator();
-
- while ( iterator1.hasNext() )
- {
- assertEqualArtifactSubtree( iterator1.next(), iterator2.next(), parents );
- }
-
- parents.removeLast();
- }
-
private Dependency dep( DependencyNode root, int... coords )
{
return path( root, coords ).getDependency();
@@ -532,25 +495,24 @@ public class DefaultDependencyCollectorTest
collector.setArtifactDescriptorReader( newReader( "managed/" ) );
parser = new DependencyGraphParser( "artifact-descriptions/managed/" );
session.setDependencyManager( new TransitiveDependencyManager() );
- final Dependency root = newDep( "gid:0:ext:ver" );
+ final Dependency root = newDep( "gid:root:ext:ver", "compile" );
CollectRequest request = new CollectRequest( root, Arrays.asList( repository ) );
- request.addManagedDependency( newDep( "gid:0:ext:must-retain-model-builder-override" ) );
- request.addManagedDependency( newDep( "gid:1:ext:managed-by-request" ) );
+ request.addManagedDependency( newDep( "gid:root:ext:must-retain-core-management" ) );
CollectResult result = collector.collectDependencies( session, request );
- DependencyNode expected = parser.parseResource( "management-tree.txt" );
- assertEqualSubtree( expected, result.getRoot() );
-
- // Ensure direct dependencies are correctly detected for root artifact (POM) requests.
- request = new CollectRequest();
- request.setRootArtifact( new DefaultArtifact( "gid:pom:ext:ver" ) );
- request.setRepositories( Arrays.asList( repository ) );
- request.addDependency( root.setScope( "compile" ) );
- request.addManagedDependency( newDep( "gid:0:ext:must-retain-model-builder-override" ) );
- request.addManagedDependency( newDep( "gid:1:ext:managed-by-request" ) );
- result = collector.collectDependencies( session, request );
- expected = parser.parseResource( "pom-management-tree.txt" );
- assertEqualArtifactSubtree( expected, result.getRoot() );
+ final DependencyNode expectedTree = parser.parseResource( "management-tree.txt" );
+ assertEqualSubtree( expectedTree, result.getRoot() );
+
+ // Same test for root artifact (POM) request.
+ final CollectRequest rootArtifactRequest = new CollectRequest();
+ rootArtifactRequest.setRepositories( Arrays.asList( repository ) );
+ rootArtifactRequest.setRootArtifact( new DefaultArtifact( "gid:root:ext:ver" ) );
+ rootArtifactRequest.addDependency( newDep( "gid:direct:ext:ver", "compile" ) );
+ rootArtifactRequest.addManagedDependency( newDep( "gid:root:ext:must-retain-core-management" ) );
+ rootArtifactRequest.addManagedDependency( newDep( "git:direct:ext:must-retain-core-management" ) );
+ rootArtifactRequest.addManagedDependency( newDep( "gid:transitive-1:ext:managed-by-root" ) );
+ result = collector.collectDependencies( session, rootArtifactRequest );
+ assertEqualSubtree( expectedTree, this.toDependencyResult( result.getRoot(), "compile", null ) );
}
@Test
@@ -705,13 +667,15 @@ public class DefaultDependencyCollectorTest
{
collector.setArtifactDescriptorReader( newReader( "selection/scope/" ) );
parser = new DependencyGraphParser( "artifact-descriptions/selection/scope/" );
+ session.setDependencySelector( null );
- final Dependency root = newDep( "gid:direct:ext:ver", "direct-scope" );
- CollectRequest request = new CollectRequest( root, Arrays.asList( repository ) );
+ final DependencyNode allNodes = parser.parseResource( "all-nodes.txt" );
+ final DependencyNode transitive1ExclusionTree = parser.parseResource( "transitive-1-exclusion-tree.txt" );
+ final DependencyNode transitive2ExclusionTree = parser.parseResource( "transitive-2-exclusion-tree.txt" );
+ final Dependency root = newDep( "gid:root:ext:ver", "root-scope" );
+ final CollectRequest request = new CollectRequest( root, Arrays.asList( repository ) );
CollectResult result = collector.collectDependencies( session, request );
-
- DependencyNode expected = parser.parseResource( "all-nodes.txt" );
- assertEqualSubtree( expected, result.getRoot() );
+ assertEqualSubtree( allNodes, result.getRoot() );
/*
A dependency selector that filters transitive dependencies based on their scope. Direct dependencies are always
@@ -719,60 +683,67 @@ public class DefaultDependencyCollectorTest
*/
// Include all.
this.session.setDependencySelector( new ScopeDependencySelector() );
-
- request = new CollectRequest( root, Arrays.asList( repository ) );
result = collector.collectDependencies( session, request );
+ assertEqualSubtree( allNodes, result.getRoot() );
- assertEqualSubtree( expected, result.getRoot() );
+ // Exclude root scope equals include all as the root is always included.
+ this.session.setDependencySelector( new ScopeDependencySelector( "root-scope" ) );
+ result = collector.collectDependencies( session, request );
+ assertEqualSubtree( allNodes, result.getRoot() );
// Exclude direct scope equals include all as direct dependencies are always included.
this.session.setDependencySelector( new ScopeDependencySelector( "direct-scope" ) );
-
- request = new CollectRequest( root, Arrays.asList( repository ) );
result = collector.collectDependencies( session, request );
-
- assertEqualSubtree( expected, result.getRoot() );
+ assertEqualSubtree( allNodes, result.getRoot() );
// Exclude scope of transitive of direct.
- this.session.setDependencySelector( new ScopeDependencySelector( "transitive-of-direct-scope" ) );
-
- request = new CollectRequest( root, Arrays.asList( repository ) );
+ this.session.setDependencySelector( new ScopeDependencySelector( "transitive-1-scope" ) );
result = collector.collectDependencies( session, request );
-
- expected = parser.parseResource( "transitive-of-direct-scope-exclusion-tree.txt" );
- assertEqualSubtree( expected, result.getRoot() );
+ assertEqualSubtree( transitive1ExclusionTree, result.getRoot() );
// Exclude scope of transitive of transitive of direct dependency.
- expected = parser.parseResource( "transitive-of-transitive-of-direct-scope-exclusion-tree.txt" );
- this.session.setDependencySelector( new ScopeDependencySelector( "transitive-of-transitive-of-direct-scope" ) );
-
- request = new CollectRequest( root, Arrays.asList( repository ) );
+ this.session.setDependencySelector( new ScopeDependencySelector( "transitive-2-scope" ) );
result = collector.collectDependencies( session, request );
+ assertEqualSubtree( transitive2ExclusionTree, result.getRoot() );
- assertEqualSubtree( expected, result.getRoot() );
+ // Same test as above but with root artifact instead of root dependency.
+ this.session.setDependencySelector( null );
+ final CollectRequest rootArtifactRequest = new CollectRequest();
+ rootArtifactRequest.setRootArtifact( new DefaultArtifact( "gid:root:ext:ver" ) );
+ rootArtifactRequest.addDependency( newDep( "gid:direct:ext:ver", "direct-scope" ) );
+ rootArtifactRequest.setRepositories( Arrays.asList( repository ) );
- // Exclude scope of transitive of transitive of direct dependency.
- expected = parser.parseResource( "transitive-of-transitive-of-transitive-of-direct-scope-exclusion-tree.txt" );
- this.session.setDependencySelector(
- new ScopeDependencySelector( "transitive-of-transitive-of-transitive-of-direct-scope" ) );
-
- request = new CollectRequest( root, Arrays.asList( repository ) );
- result = collector.collectDependencies( session, request );
-
- assertEqualSubtree( expected, result.getRoot() );
+ result = collector.collectDependencies( session, rootArtifactRequest );
+ assertNull( result.getRoot().getDependency() );
+ assertEqualSubtree( allNodes, this.toDependencyResult( result.getRoot(), "root-scope", null ) );
- // Ensure direct dependencies are correctly detected for root artifact (POM) requests.
- expected = parser.parseResource( "all-nodes-of-pom.txt" );
+ /*
+ A dependency selector that filters transitive dependencies based on their scope. Direct dependencies are always
+ included regardless of their scope.
+ */
+ // Include all.
+ this.session.setDependencySelector( new ScopeDependencySelector() );
+ result = collector.collectDependencies( session, rootArtifactRequest );
+ assertNull( result.getRoot().getDependency() );
+ assertEqualSubtree( allNodes, this.toDependencyResult( result.getRoot(), "root-scope", null ) );
+ // Exclude direct scope equals include all as direct dependencies are always included.
this.session.setDependencySelector( new ScopeDependencySelector( "direct-scope" ) );
+ result = collector.collectDependencies( session, rootArtifactRequest );
+ assertNull( result.getRoot().getDependency() );
+ assertEqualSubtree( allNodes, this.toDependencyResult( result.getRoot(), "root-scope", null ) );
- request = new CollectRequest();
- request.addDependency( root );
- request.setRootArtifact( new DefaultArtifact( "gid:pom:ext:ver" ) );
- request.setRepositories( Arrays.asList( repository ) );
- result = collector.collectDependencies( session, request );
+ // Exclude scope of transitive of direct.
+ this.session.setDependencySelector( new ScopeDependencySelector( "transitive-1-scope" ) );
+ result = collector.collectDependencies( session, rootArtifactRequest );
+ assertNull( result.getRoot().getDependency() );
+ assertEqualSubtree( transitive1ExclusionTree, this.toDependencyResult( result.getRoot(), "root-scope", null ) );
- assertEqualArtifactSubtree( expected, result.getRoot() );
+ // Exclude scope of transitive of transitive of direct dependency.
+ this.session.setDependencySelector( new ScopeDependencySelector( "transitive-2-scope" ) );
+ result = collector.collectDependencies( session, rootArtifactRequest );
+ assertNull( result.getRoot().getDependency() );
+ assertEqualSubtree( transitive2ExclusionTree, this.toDependencyResult( result.getRoot(), "root-scope", null ) );
}
@Test
@@ -781,36 +752,58 @@ public class DefaultDependencyCollectorTest
{
collector.setArtifactDescriptorReader( newReader( "selection/optional/" ) );
parser = new DependencyGraphParser( "artifact-descriptions/selection/optional/" );
+ session.setDependencySelector( null );
- final Dependency root = newDep( "gid:direct:ext:ver", "direct-scope" ).setOptional( true );
+ final DependencyNode allNodes = parser.parseResource( "all-nodes.txt" );
+ final DependencyNode optionalTransitiveExclusionTree =
+ parser.parseResource( "optional-transitive-exclusion-tree.txt" );
- CollectRequest request = new CollectRequest( root, Arrays.asList( repository ) );
+ final Dependency root = newDep( "gid:root:ext:ver", "root-scope" ).setOptional( true );
+ // No selector. Include all.
+ final CollectRequest request = new CollectRequest( root, Arrays.asList( repository ) );
CollectResult result = collector.collectDependencies( session, request );
+ assertEqualSubtree( allNodes, result.getRoot() );
- DependencyNode expected = parser.parseResource( "all-nodes.txt" );
- assertEqualSubtree( expected, result.getRoot() );
-
- // Exclude optional transitive dependencies.
- expected = parser.parseResource( "without-optional-transitive-nodes-of-direct-dependency.txt" );
+ // A dependency selector that excludes transitive optional dependencies.
this.session.setDependencySelector( new OptionalDependencySelector() );
-
- request = new CollectRequest( root, Arrays.asList( repository ) );
result = collector.collectDependencies( session, request );
+ assertEqualSubtree( optionalTransitiveExclusionTree, result.getRoot() );
+
+ // Same test as above but with root artifact instead of root dependency.
+ this.session.setDependencySelector( null );
+ final Artifact rootArtifact = new DefaultArtifact( "gid:root:ext:ver" );
+ final CollectRequest rootArtifactRequest = new CollectRequest();
+ rootArtifactRequest.setRootArtifact( rootArtifact );
+ rootArtifactRequest.addDependency( newDep( "gid:direct:ext:ver", "direct-scope" ).setOptional( true ) );
+ result = collector.collectDependencies( session, rootArtifactRequest );
+ assertNull( result.getRoot().getDependency() );
+ assertEqualSubtree( allNodes, this.toDependencyResult( result.getRoot(), "root-scope", true ) );
+
+ // A dependency selector that excludes transitive optional dependencies.
+ this.session.setDependencySelector( new OptionalDependencySelector() );
+ result = collector.collectDependencies( session, rootArtifactRequest );
+ assertNull( result.getRoot().getDependency() );
+ assertEqualSubtree( optionalTransitiveExclusionTree, this.toDependencyResult( result.getRoot(), "root-scope",
+ true ) );
- assertEqualSubtree( expected, result.getRoot() );
+ }
- // Ensure direct dependencies are correctly detected for root artifact (POM) requests.
- expected = parser.parseResource( "without-optional-transitive-nodes-of-pom.txt" );
+ private DependencyNode toDependencyResult( final DependencyNode root, final String rootScope,
+ final Boolean optional )
+ {
+ // Make the root artifact resultion result a dependency resolution result for the subtree check.
+ assertNull( "Expected root artifact resolution result.", root.getDependency() );
+ final DefaultDependencyNode defaultNode =
+ new DefaultDependencyNode( new Dependency( root.getArtifact(), rootScope ) );
- this.session.setDependencySelector( new OptionalDependencySelector() );
+ defaultNode.setChildren( root.getChildren() );
- request = new CollectRequest();
- request.addDependency( root );
- request.setRootArtifact( new DefaultArtifact( "gid:pom:ext:ver" ) );
- request.setRepositories( Arrays.asList( repository ) );
- result = collector.collectDependencies( session, request );
+ if ( optional != null )
+ {
+ defaultNode.setOptional( optional );
+ }
- assertEqualArtifactSubtree( expected, result.getRoot() );
+ return defaultNode;
}
static class TestDependencyManager
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_0_ver.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_0_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_0_ver.ini
deleted file mode 100644
index 1831746..0000000
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_0_ver.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[dependencies]
-gid:1:ext:ver
-[manageddependencies]
-gid:2:ext:managed-by-0
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_1_managed-by-request.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_1_managed-by-request.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_1_managed-by-request.ini
deleted file mode 100644
index 805fd98..0000000
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_1_managed-by-request.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[dependencies]
-gid:2:ext:ver
-[manageddependencies]
-gid:3:ext:managed-by-1
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_1_ver.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_1_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_1_ver.ini
deleted file mode 100644
index 805fd98..0000000
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_1_ver.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[dependencies]
-gid:2:ext:ver
-[manageddependencies]
-gid:3:ext:managed-by-1
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_2_managed-by-0.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_2_managed-by-0.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_2_managed-by-0.ini
deleted file mode 100644
index e6cc9a6..0000000
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_2_managed-by-0.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[dependencies]
-gid:3:ext:ver
-[manageddependencies]
-gid:4:ext:managed-by-2
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_3_managed-by-1.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_3_managed-by-1.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_3_managed-by-1.ini
deleted file mode 100644
index aa1cea4..0000000
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_3_managed-by-1.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[dependencies]
-gid:4:ext:ver
-[manageddependencies]
-gid:5:ext:managed-by-3
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_4_managed-by-2.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_4_managed-by-2.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_4_managed-by-2.ini
deleted file mode 100644
index 990c928..0000000
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_4_managed-by-2.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-gid:5:ext:ver
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_5_managed-by-3.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_5_managed-by-3.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_5_managed-by-3.ini
deleted file mode 100644
index 05ba453..0000000
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_5_managed-by-3.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_direct_ver.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_direct_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_direct_ver.ini
new file mode 100644
index 0000000..94ba9fb
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_direct_ver.ini
@@ -0,0 +1,5 @@
+[dependencies]
+gid:transitive-1:ext:ver
+[manageddependencies]
+gid:transitive-1:ext:must-retain-core-management
+gid:transitive-2:ext:managed-by-direct
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_root_ver.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_root_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_root_ver.ini
new file mode 100644
index 0000000..9557bd8
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_root_ver.ini
@@ -0,0 +1,5 @@
+[dependencies]
+gid:direct:ext:ver
+[manageddependencies]
+git:direct:ext:must-retain-core-management
+gid:transitive-1:ext:managed-by-root
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_transitive-1_managed-by-root.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_transitive-1_managed-by-root.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_transitive-1_managed-by-root.ini
new file mode 100644
index 0000000..8fd9f0d
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_transitive-1_managed-by-root.ini
@@ -0,0 +1,5 @@
+[dependencies]
+gid:transitive-2:ext:ver
+[manageddependencies]
+gid:transitive-2:ext:must-retain-core-management
+gid:transitive-3:ext:managed-by-transitive-1
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_transitive-2_managed-by-direct.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_transitive-2_managed-by-direct.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_transitive-2_managed-by-direct.ini
new file mode 100644
index 0000000..96cc8f5
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_transitive-2_managed-by-direct.ini
@@ -0,0 +1,5 @@
+[dependencies]
+gid:transitive-3:ext:ver
+[manageddependencies]
+gid:transitive-3:ext:must-retain-core-management
+gid:transitive-4:ext:managed-by-transitive-2
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_transitive-3_managed-by-transitive-1.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_transitive-3_managed-by-transitive-1.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_transitive-3_managed-by-transitive-1.ini
new file mode 100644
index 0000000..2b8f3cf
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_transitive-3_managed-by-transitive-1.ini
@@ -0,0 +1,4 @@
+[dependencies]
+gid:transitive-4:ext:ver
+[manageddependencies]
+gid:transitive-4:ext:must-retain-core-management
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_transitive-4_managed-by-transitive-2.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_transitive-4_managed-by-transitive-2.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_transitive-4_managed-by-transitive-2.ini
new file mode 100644
index 0000000..61a252c
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/gid_transitive-4_managed-by-transitive-2.ini
@@ -0,0 +1 @@
+[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/management-tree.txt
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/management-tree.txt b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/management-tree.txt
index 626d1a9..1371426 100644
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/management-tree.txt
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/management-tree.txt
@@ -1,6 +1,6 @@
-gid:0:ext:ver
-+- gid:1:ext:managed-by-request compile
- +- gid:2:ext:managed-by-0 compile
- +- gid:3:ext:managed-by-1 compile
- +- gid:4:ext:managed-by-2 compile
- +- gid:5:ext:managed-by-3 compile
+gid:root:ext:ver compile
++- gid:direct:ext:ver compile
+ +- gid:transitive-1:ext:managed-by-root compile
+ +- gid:transitive-2:ext:managed-by-direct compile
+ +- gid:transitive-3:ext:managed-by-transitive-1 compile
+ +- gid:transitive-4:ext:managed-by-transitive-2 compile
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/pom-management-tree.txt
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/pom-management-tree.txt b/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/pom-management-tree.txt
deleted file mode 100644
index a7ca439..0000000
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/managed/pom-management-tree.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-gid:pom:ext:ver
-+- gid:0:ext:ver compile
- +- gid:1:ext:managed-by-request compile
- +- gid:2:ext:managed-by-0 compile
- +- gid:3:ext:managed-by-1 compile
- +- gid:4:ext:managed-by-2 compile
- +- gid:5:ext:managed-by-3 compile
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/all-nodes.txt
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/all-nodes.txt b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/all-nodes.txt
index 09369ce..89de14f 100644
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/all-nodes.txt
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/all-nodes.txt
@@ -1,3 +1,4 @@
-gid:direct:ext:ver direct-scope optional
-+- gid:transitive-of-direct:ext:ver transitive-of-direct-scope optional
- +- gid:transitive-of-transitive-of-direct:ext:ver transitive-of-transitive-of-direct-scope optional
+gid:root:ext:ver root-scope optional
++- gid:direct:ext:ver direct-scope optional
+ +- gid:transitive-1:ext:ver transitive-1-scope optional
+ +- gid:transitive-2:ext:ver transitive-2-scope optional
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_direct_ver.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_direct_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_direct_ver.ini
index e1d9820..0bcf1f8 100644
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_direct_ver.ini
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_direct_ver.ini
@@ -1,2 +1,2 @@
[dependencies]
-gid:transitive-of-direct:ext:ver:transitive-of-direct-scope:optional
+gid:transitive-1:ext:ver:transitive-1-scope:optional
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_root_ver.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_root_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_root_ver.ini
new file mode 100644
index 0000000..a7e6ac1
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_root_ver.ini
@@ -0,0 +1,2 @@
+[dependencies]
+gid:direct:ext:ver:direct-scope:optional
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_transitive-1_ver.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_transitive-1_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_transitive-1_ver.ini
new file mode 100644
index 0000000..7428741
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_transitive-1_ver.ini
@@ -0,0 +1,2 @@
+[dependencies]
+gid:transitive-2:ext:ver:transitive-2-scope:optional
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_transitive-2_ver.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_transitive-2_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_transitive-2_ver.ini
new file mode 100644
index 0000000..61a252c
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_transitive-2_ver.ini
@@ -0,0 +1 @@
+[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_transitive-of-direct_ver.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_transitive-of-direct_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_transitive-of-direct_ver.ini
deleted file mode 100644
index f6f95da..0000000
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_transitive-of-direct_ver.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-gid:transitive-of-transitive-of-direct:ext:ver:transitive-of-transitive-of-direct-scope:optional
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_transitive-of-transitive-of-direct_ver.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_transitive-of-transitive-of-direct_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_transitive-of-transitive-of-direct_ver.ini
deleted file mode 100644
index 61a252c..0000000
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/gid_transitive-of-transitive-of-direct_ver.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/optional-transitive-exclusion-tree.txt
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/optional-transitive-exclusion-tree.txt b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/optional-transitive-exclusion-tree.txt
new file mode 100644
index 0000000..34fa909
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/optional-transitive-exclusion-tree.txt
@@ -0,0 +1,2 @@
+gid:root:ext:ver root-scope optional
++- gid:direct:ext:ver direct-scope optional
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/without-optional-transitive-nodes-of-direct-dependency.txt
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/without-optional-transitive-nodes-of-direct-dependency.txt b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/without-optional-transitive-nodes-of-direct-dependency.txt
deleted file mode 100644
index a3fde85..0000000
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/without-optional-transitive-nodes-of-direct-dependency.txt
+++ /dev/null
@@ -1 +0,0 @@
-gid:direct:ext:ver direct-scope optional
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/without-optional-transitive-nodes-of-pom.txt
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/without-optional-transitive-nodes-of-pom.txt b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/without-optional-transitive-nodes-of-pom.txt
deleted file mode 100644
index 8980da4..0000000
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/optional/without-optional-transitive-nodes-of-pom.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-gid:pom:ext:ver
-+- gid:direct:ext:ver direct-scope optional
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/all-nodes-of-pom.txt
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/all-nodes-of-pom.txt b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/all-nodes-of-pom.txt
deleted file mode 100644
index 8736318..0000000
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/all-nodes-of-pom.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-gid:pom:ext:ver
-+- gid:direct:ext:ver direct-scope
- +- gid:transitive-of-direct:ext:ver transitive-of-direct-scope
- +- gid:transitive-of-transitive-of-direct:ext:ver transitive-of-transitive-of-direct-scope
- +- gid:transitive-of-transitive-of-transitive-of-direct:ext:ver transitive-of-transitive-of-transitive-of-direct-scope
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/all-nodes.txt
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/all-nodes.txt b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/all-nodes.txt
index 670b4a4..8bec12e 100644
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/all-nodes.txt
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/all-nodes.txt
@@ -1,4 +1,4 @@
-gid:direct:ext:ver direct-scope
-+- gid:transitive-of-direct:ext:ver transitive-of-direct-scope
- +- gid:transitive-of-transitive-of-direct:ext:ver transitive-of-transitive-of-direct-scope
- +- gid:transitive-of-transitive-of-transitive-of-direct:ext:ver transitive-of-transitive-of-transitive-of-direct-scope
+gid:root:ext:ver root-scope
++- gid:direct:ext:ver direct-scope
+ +- gid:transitive-1:ext:ver transitive-1-scope
+ +- gid:transitive-2:ext:ver transitive-2-scope
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_direct_ver.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_direct_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_direct_ver.ini
index 8854230..aad5f7a 100644
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_direct_ver.ini
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_direct_ver.ini
@@ -1,2 +1,2 @@
[dependencies]
-gid:transitive-of-direct:ext:ver:transitive-of-direct-scope
+gid:transitive-1:ext:ver:transitive-1-scope
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_root_ver.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_root_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_root_ver.ini
new file mode 100644
index 0000000..175e571
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_root_ver.ini
@@ -0,0 +1,2 @@
+[dependencies]
+gid:direct:ext:ver:direct-scope
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-1_ver.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-1_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-1_ver.ini
new file mode 100644
index 0000000..56b4533
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-1_ver.ini
@@ -0,0 +1,2 @@
+[dependencies]
+gid:transitive-2:ext:ver:transitive-2-scope
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-2_ver.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-2_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-2_ver.ini
new file mode 100644
index 0000000..61a252c
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-2_ver.ini
@@ -0,0 +1 @@
+[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-of-direct_ver.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-of-direct_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-of-direct_ver.ini
deleted file mode 100644
index 179b9ec..0000000
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-of-direct_ver.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-gid:transitive-of-transitive-of-direct:ext:ver:transitive-of-transitive-of-direct-scope
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-of-transitive-of-direct_ver.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-of-transitive-of-direct_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-of-transitive-of-direct_ver.ini
deleted file mode 100644
index 0ce2903..0000000
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-of-transitive-of-direct_ver.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[dependencies]
-gid:transitive-of-transitive-of-transitive-of-direct:ext:ver:transitive-of-transitive-of-transitive-of-direct-scope
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-of-transitive-of-transitive-of-direct_ver.ini
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-of-transitive-of-transitive-of-direct_ver.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-of-transitive-of-transitive-of-direct_ver.ini
deleted file mode 100644
index 61a252c..0000000
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/gid_transitive-of-transitive-of-transitive-of-direct_ver.ini
+++ /dev/null
@@ -1 +0,0 @@
-[dependencies]
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-1-exclusion-tree.txt
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-1-exclusion-tree.txt b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-1-exclusion-tree.txt
new file mode 100644
index 0000000..509afac
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-1-exclusion-tree.txt
@@ -0,0 +1,2 @@
+gid:root:ext:ver root-scope
++- gid:direct:ext:ver direct-scope
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-2-exclusion-tree.txt
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-2-exclusion-tree.txt b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-2-exclusion-tree.txt
new file mode 100644
index 0000000..b3b0563
--- /dev/null
+++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-2-exclusion-tree.txt
@@ -0,0 +1,3 @@
+gid:root:ext:ver root-scope
++- gid:direct:ext:ver direct-scope
+ +- gid:transitive-1:ext:ver transitive-1-scope
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-of-direct-scope-exclusion-tree.txt
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-of-direct-scope-exclusion-tree.txt b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-of-direct-scope-exclusion-tree.txt
deleted file mode 100644
index d6bb90c..0000000
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-of-direct-scope-exclusion-tree.txt
+++ /dev/null
@@ -1 +0,0 @@
-gid:direct:ext:ver direct-scope
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-of-transitive-of-direct-scope-exclusion-tree.txt
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-of-transitive-of-direct-scope-exclusion-tree.txt b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-of-transitive-of-direct-scope-exclusion-tree.txt
deleted file mode 100644
index 6c42274..0000000
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-of-transitive-of-direct-scope-exclusion-tree.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-gid:direct:ext:ver direct-scope
-+- gid:transitive-of-direct:ext:ver transitive-of-direct-scope
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/65e1e5f4/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-of-transitive-of-transitive-of-direct-scope-exclusion-tree.txt
----------------------------------------------------------------------
diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-of-transitive-of-transitive-of-direct-scope-exclusion-tree.txt b/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-of-transitive-of-transitive-of-direct-scope-exclusion-tree.txt
deleted file mode 100644
index ee70297..0000000
--- a/maven-resolver-impl/src/test/resources/artifact-descriptions/selection/scope/transitive-of-transitive-of-transitive-of-direct-scope-exclusion-tree.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-gid:direct:ext:ver direct-scope
-+- gid:transitive-of-direct:ext:ver transitive-of-direct-scope
- +- gid:transitive-of-transitive-of-direct:ext:ver transitive-of-transitive-of-direct-scope
[3/3] maven-resolver git commit: [MRESOLVER-10] New class
'TransitiveDependencyManager' supporting transitive dependency management.
Posted by sc...@apache.org.
[MRESOLVER-10] New class 'TransitiveDependencyManager' supporting transitive dependency management.
o Updated to correctly decide a node is direct or transitive.
Project: http://git-wip-us.apache.org/repos/asf/maven-resolver/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-resolver/commit/1a3831df
Tree: http://git-wip-us.apache.org/repos/asf/maven-resolver/tree/1a3831df
Diff: http://git-wip-us.apache.org/repos/asf/maven-resolver/diff/1a3831df
Branch: refs/heads/master
Commit: 1a3831df53cdbecc01caa39a792c3a94fd99d803
Parents: 9855af4
Author: Christian Schulte <sc...@apache.org>
Authored: Wed Dec 21 03:38:12 2016 +0100
Committer: Christian Schulte <sc...@apache.org>
Committed: Wed Dec 21 03:43:23 2016 +0100
----------------------------------------------------------------------
.../manager/TransitiveDependencyManager.java | 35 ++++++--------------
1 file changed, 10 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/1a3831df/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/TransitiveDependencyManager.java
----------------------------------------------------------------------
diff --git a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/TransitiveDependencyManager.java b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/TransitiveDependencyManager.java
index aa02d47..485f1d7 100644
--- a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/TransitiveDependencyManager.java
+++ b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/TransitiveDependencyManager.java
@@ -34,7 +34,7 @@ import org.eclipse.aether.graph.Exclusion;
import org.eclipse.aether.util.artifact.JavaScopes;
/**
- * A dependency manager supporting transitive dependency management.
+ * A dependency manager managing transitive dependencies supporting transitive dependency management.
*
* @author Christian Schulte
* @since 1.2.0
@@ -53,7 +53,7 @@ public final class TransitiveDependencyManager
private final Map<Object, Collection<Exclusion>> managedExclusions;
- private final boolean transitive;
+ private final int depth;
private int hashCode;
@@ -62,12 +62,12 @@ public final class TransitiveDependencyManager
*/
public TransitiveDependencyManager()
{
- this( false, Collections.<Object, String>emptyMap(), Collections.<Object, String>emptyMap(),
+ this( 0, Collections.<Object, String>emptyMap(), Collections.<Object, String>emptyMap(),
Collections.<Object, Boolean>emptyMap(), Collections.<Object, String>emptyMap(),
Collections.<Object, Collection<Exclusion>>emptyMap() );
}
- private TransitiveDependencyManager( final boolean transitive,
+ private TransitiveDependencyManager( final int depth,
final Map<Object, String> managedVersions,
final Map<Object, String> managedScopes,
final Map<Object, Boolean> managedOptionals,
@@ -75,7 +75,7 @@ public final class TransitiveDependencyManager
final Map<Object, Collection<Exclusion>> managedExclusions )
{
super();
- this.transitive = transitive;
+ this.depth = depth;
this.managedVersions = managedVersions;
this.managedScopes = managedScopes;
this.managedOptionals = managedOptionals;
@@ -152,24 +152,9 @@ public final class TransitiveDependencyManager
}
}
- TransitiveDependencyManager child = null;
+ return new TransitiveDependencyManager( this.depth + 1, versions, scopes, optionals, localPaths,
+ exclusions );
- if ( context.getDependency() != null && !this.transitive )
- {
- child = new TransitiveDependencyManager( true, versions, scopes, optionals, localPaths, exclusions );
- }
- if ( context.getDependency() == null && this.transitive )
- {
- child = new TransitiveDependencyManager( false, versions, scopes, optionals, localPaths, exclusions );
- }
- if ( child == null )
- {
- child = new TransitiveDependencyManager( this.transitive, versions, scopes, optionals, localPaths,
- exclusions );
-
- }
-
- return child;
}
public DependencyManagement manageDependency( Dependency dependency )
@@ -178,7 +163,7 @@ public final class TransitiveDependencyManager
Object key = getKey( dependency.getArtifact() );
- if ( this.transitive )
+ if ( this.depth >= 2 )
{
String version = managedVersions.get( key );
if ( version != null )
@@ -265,7 +250,7 @@ public final class TransitiveDependencyManager
if ( equal )
{
final TransitiveDependencyManager that = (TransitiveDependencyManager) obj;
- return this.transitive == that.transitive
+ return this.depth == that.depth
&& this.managedVersions.equals( that.managedVersions )
&& this.managedScopes.equals( that.managedScopes )
&& this.managedOptionals.equals( that.managedOptionals )
@@ -282,7 +267,7 @@ public final class TransitiveDependencyManager
if ( this.hashCode == 0 )
{
int hash = 17;
- hash = hash * 31 + ( (Boolean) this.transitive ).hashCode();
+ hash = hash * 31 + this.depth;
hash = hash * 31 + this.managedVersions.hashCode();
hash = hash * 31 + this.managedScopes.hashCode();
hash = hash * 31 + this.managedOptionals.hashCode();
[2/3] maven-resolver git commit: [MRESOLVER-8]
ScopeDependencySelector incorrectly de-selects direct dependencies.
Posted by sc...@apache.org.
[MRESOLVER-8] ScopeDependencySelector incorrectly de-selects direct dependencies.
o Reverted any changes to the 'OptionalDependencySelector' to match release 1.0.2.v20150114.
o Updated class 'ScopeDependencySelector' to correctly decide a node is direct vs. transitive.
Project: http://git-wip-us.apache.org/repos/asf/maven-resolver/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-resolver/commit/9855af4f
Tree: http://git-wip-us.apache.org/repos/asf/maven-resolver/tree/9855af4f
Diff: http://git-wip-us.apache.org/repos/asf/maven-resolver/diff/9855af4f
Branch: refs/heads/master
Commit: 9855af4fbd6bb0f64750d27b2eee2e03b25b58ba
Parents: 65e1e5f
Author: Christian Schulte <sc...@apache.org>
Authored: Wed Dec 21 03:36:03 2016 +0100
Committer: Christian Schulte <sc...@apache.org>
Committed: Wed Dec 21 03:43:08 2016 +0100
----------------------------------------------------------------------
.../selector/OptionalDependencySelector.java | 31 ++++++----------
.../graph/selector/ScopeDependencySelector.java | 39 ++++++++------------
2 files changed, 27 insertions(+), 43 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/9855af4f/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/selector/OptionalDependencySelector.java
----------------------------------------------------------------------
diff --git a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/selector/OptionalDependencySelector.java b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/selector/OptionalDependencySelector.java
index d1a98dc..c377f24 100644
--- a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/selector/OptionalDependencySelector.java
+++ b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/selector/OptionalDependencySelector.java
@@ -8,9 +8,9 @@ package org.eclipse.aether.util.graph.selector;
* 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
@@ -32,41 +32,34 @@ public final class OptionalDependencySelector
implements DependencySelector
{
- private final boolean transitive;
+ private final int depth;
/**
* Creates a new selector to exclude optional transitive dependencies.
*/
public OptionalDependencySelector()
{
- this( false );
+ depth = 0;
}
- private OptionalDependencySelector( final boolean transitive )
+ private OptionalDependencySelector( int depth )
{
- super();
- this.transitive = transitive;
+ this.depth = depth;
}
public boolean selectDependency( Dependency dependency )
{
- return !this.transitive || !dependency.isOptional();
+ return depth < 2 || !dependency.isOptional();
}
public DependencySelector deriveChildSelector( DependencyCollectionContext context )
{
- OptionalDependencySelector child = this;
-
- if ( context.getDependency() != null && !child.transitive )
- {
- child = new OptionalDependencySelector( true );
- }
- if ( context.getDependency() == null && child.transitive )
+ if ( depth >= 2 )
{
- child = new OptionalDependencySelector( false );
+ return this;
}
- return child;
+ return new OptionalDependencySelector( depth + 1 );
}
@Override
@@ -82,14 +75,14 @@ public final class OptionalDependencySelector
}
OptionalDependencySelector that = (OptionalDependencySelector) obj;
- return this.transitive == that.transitive;
+ return depth == that.depth;
}
@Override
public int hashCode()
{
int hash = getClass().hashCode();
- hash = hash * 31 + ( ( (Boolean) this.transitive ).hashCode() );
+ hash = hash * 31 + depth;
return hash;
}
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/9855af4f/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/selector/ScopeDependencySelector.java
----------------------------------------------------------------------
diff --git a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/selector/ScopeDependencySelector.java b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/selector/ScopeDependencySelector.java
index b2ce23a..92db141 100644
--- a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/selector/ScopeDependencySelector.java
+++ b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/selector/ScopeDependencySelector.java
@@ -8,9 +8,9 @@ package org.eclipse.aether.util.graph.selector;
* 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
@@ -24,7 +24,6 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.TreeSet;
-
import org.eclipse.aether.collection.DependencyCollectionContext;
import org.eclipse.aether.collection.DependencySelector;
import org.eclipse.aether.graph.Dependency;
@@ -33,14 +32,14 @@ import org.eclipse.aether.graph.Dependency;
* A dependency selector that filters transitive dependencies based on their scope. Direct dependencies are always
* included regardless of their scope. <em>Note:</em> This filter does not assume any relationships between the scopes.
* In particular, the filter is not aware of scopes that logically include other scopes.
- *
+ *
* @see Dependency#getScope()
*/
public final class ScopeDependencySelector
implements DependencySelector
{
- private final boolean transitive;
+ private final int depth;
private final Collection<String> included;
@@ -48,14 +47,14 @@ public final class ScopeDependencySelector
/**
* Creates a new selector using the specified includes and excludes.
- *
+ *
* @param included The set of scopes to include, may be {@code null} or empty to include any scope.
* @param excluded The set of scopes to exclude, may be {@code null} or empty to exclude no scope.
*/
public ScopeDependencySelector( Collection<String> included, Collection<String> excluded )
{
super();
- this.transitive = false;
+ this.depth = 0;
this.included = clone( included );
this.excluded = clone( excluded );
}
@@ -82,7 +81,7 @@ public final class ScopeDependencySelector
/**
* Creates a new selector using the specified excludes.
- *
+ *
* @param excluded The set of scopes to exclude, may be {@code null} or empty to exclude no scope.
*/
public ScopeDependencySelector( String... excluded )
@@ -90,17 +89,17 @@ public final class ScopeDependencySelector
this( null, ( excluded != null ) ? Arrays.asList( excluded ) : null );
}
- private ScopeDependencySelector( boolean transitive, Collection<String> included, Collection<String> excluded )
+ private ScopeDependencySelector( int depth, Collection<String> included, Collection<String> excluded )
{
super();
- this.transitive = transitive;
+ this.depth = depth;
this.included = included;
this.excluded = excluded;
}
public boolean selectDependency( Dependency dependency )
{
- return !this.transitive
+ return this.depth < 2
|| ( ( included == null || included.contains( dependency.getScope() ) )
&& ( excluded == null || !excluded.contains( dependency.getScope() ) ) );
@@ -108,18 +107,10 @@ public final class ScopeDependencySelector
public DependencySelector deriveChildSelector( DependencyCollectionContext context )
{
- ScopeDependencySelector child = this;
-
- if ( context.getDependency() != null && !child.transitive )
- {
- child = new ScopeDependencySelector( true, this.included, this.excluded );
- }
- if ( context.getDependency() == null && child.transitive )
- {
- child = new ScopeDependencySelector( false, this.included, this.excluded );
- }
+ return this.depth >= 2
+ ? this
+ : new ScopeDependencySelector( this.depth + 1, this.included, this.excluded );
- return child;
}
@Override
@@ -135,7 +126,7 @@ public final class ScopeDependencySelector
}
ScopeDependencySelector that = (ScopeDependencySelector) obj;
- return this.transitive == that.transitive && eq( included, that.included ) && eq( excluded, that.excluded );
+ return this.depth == that.depth && eq( included, that.included ) && eq( excluded, that.excluded );
}
private static <T> boolean eq( T o1, T o2 )
@@ -147,7 +138,7 @@ public final class ScopeDependencySelector
public int hashCode()
{
int hash = 17;
- hash = hash * 31 + ( ( (Boolean) this.transitive ).hashCode() );
+ hash = hash * 31 + this.depth;
hash = hash * 31 + ( included != null ? included.hashCode() : 0 );
hash = hash * 31 + ( excluded != null ? excluded.hashCode() : 0 );
return hash;