Made DependencyTreeBuilderTest assert resolution tree against the internal one used by DefaultDependencyTreeBuilder.  Previously it was asserting against the result of performing a further artifact collection, which caused misleading results since artifacts are mutated during collection.

git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@584176 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilder.java b/src/main/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilder.java
index a1e204c..22ea5e7 100644
--- a/src/main/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilder.java
+++ b/src/main/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilder.java
@@ -28,6 +28,7 @@
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactCollector;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.artifact.InvalidDependencyVersionException;
@@ -45,6 +46,10 @@
  */
 public class DefaultDependencyTreeBuilder extends AbstractLogEnabled implements DependencyTreeBuilder
 {
+    // fields -----------------------------------------------------------------
+    
+    private ArtifactResolutionResult result;
+    
     // DependencyTreeBuilder methods ------------------------------------------
 
     /*
@@ -94,7 +99,7 @@
             
             // TODO: note that filter does not get applied due to MNG-3236
 
-            collector.collect( dependencyArtifacts, project.getArtifact(), managedVersions, repository,
+            result = collector.collect( dependencyArtifacts, project.getArtifact(), managedVersions, repository,
                                project.getRemoteArtifactRepositories(), metadataSource, filter,
                                Collections.singletonList( listener ) );
 
@@ -110,4 +115,11 @@
                 + project.getArtifact() );
         }
     }
+    
+    // protected methods ------------------------------------------------------
+    
+    protected ArtifactResolutionResult getArtifactResolutionResult()
+    {
+        return result;
+    }
 }
diff --git a/src/test/java/org/apache/maven/shared/dependency/tree/DependencyTreeBuilderTest.java b/src/test/java/org/apache/maven/shared/dependency/tree/DependencyTreeBuilderTest.java
index ad7c8d0..ff41b4c 100644
--- a/src/test/java/org/apache/maven/shared/dependency/tree/DependencyTreeBuilderTest.java
+++ b/src/test/java/org/apache/maven/shared/dependency/tree/DependencyTreeBuilderTest.java
@@ -38,7 +38,6 @@
 import org.apache.maven.artifact.repository.DefaultArtifactRepository;
 import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
 import org.apache.maven.artifact.resolver.ArtifactCollector;
-import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.artifact.resolver.ResolutionNode;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
@@ -57,7 +56,7 @@
 {
     // fields -----------------------------------------------------------------
 
-    private DependencyTreeBuilder builder;
+    private DefaultDependencyTreeBuilder builder;
 
     private ArtifactRepository artifactRepository;
 
@@ -76,7 +75,7 @@
     {
         super.setUp();
 
-        builder = (DependencyTreeBuilder) lookup( DependencyTreeBuilder.ROLE );
+        builder = (DefaultDependencyTreeBuilder) lookup( DependencyTreeBuilder.ROLE );
 
         String repositoryURL = getTestFile( "target/local-repo" ).toURI().toString();
         artifactRepository = new DefaultArtifactRepository( "local", repositoryURL, new DefaultRepositoryLayout() );
@@ -107,9 +106,8 @@
      * </pre>
      * 
      * @throws DependencyTreeBuilderException 
-     * @throws ArtifactResolutionException 
      */
-    public void testProjectWithDependency() throws DependencyTreeBuilderException, ArtifactResolutionException
+    public void testProjectWithDependency() throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact childArtifact = createArtifact( "g:a:t:1" );
@@ -132,9 +130,8 @@
      * </pre>
      *
      * @throws DependencyTreeBuilderException
-     * @throws ArtifactResolutionException
      */
-    public void testProjectWithTransitiveDependency() throws DependencyTreeBuilderException, ArtifactResolutionException
+    public void testProjectWithTransitiveDependency() throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact childArtifact = createArtifact( "g:a:t:1" );
@@ -163,9 +160,8 @@
      * </pre>
      *
      * @throws DependencyTreeBuilderException
-     * @throws ArtifactResolutionException
      */
-    public void testProjectWithDuplicateDependency() throws DependencyTreeBuilderException, ArtifactResolutionException
+    public void testProjectWithDuplicateDependency() throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact child1Artifact = createArtifact( "g:a:t:1" );
@@ -201,9 +197,8 @@
      * </pre>
      *
      * @throws DependencyTreeBuilderException
-     * @throws ArtifactResolutionException
      */
-    public void testProjectWithConflictDependencyVersionFirstWins() throws DependencyTreeBuilderException, ArtifactResolutionException
+    public void testProjectWithConflictDependencyVersionFirstWins() throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact nearestArtifact = createArtifact( "g:a:t:1" );
@@ -235,9 +230,8 @@
      * </pre>
      *
      * @throws DependencyTreeBuilderException
-     * @throws ArtifactResolutionException
      */
-    public void testProjectWithConflictDependencyVersionLastWins() throws DependencyTreeBuilderException, ArtifactResolutionException
+    public void testProjectWithConflictDependencyVersionLastWins() throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact childArtifact = createArtifact( "g:a:t:1" );
@@ -269,9 +263,8 @@
      * </pre>
      *
      * @throws DependencyTreeBuilderException
-     * @throws ArtifactResolutionException
      */
-    public void testProjectWithConflictDependencyScopeCurrentPom() throws DependencyTreeBuilderException, ArtifactResolutionException
+    public void testProjectWithConflictDependencyScopeCurrentPom() throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact nearestArtifact = createArtifact( "g:b:t:1:test" );
@@ -294,7 +287,7 @@
 
     // TODO: fix when discussion resolved: http://www.mail-archive.com/dev@maven.apache.org/msg68011.html
     /*
-    public void testProjectWithConflictDependencyScope() throws DependencyTreeBuilderException, ArtifactResolutionException
+    public void testProjectWithConflictDependencyScope() throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact childArtifact = createArtifact( "g:a:t:1" );
@@ -334,7 +327,7 @@
 
     // TODO: fix when discussion resolved: http://www.mail-archive.com/dev@maven.apache.org/msg68011.html
     /*
-    public void testProjectWithConflictDependencyScopeReversedOrder() throws DependencyTreeBuilderException, ArtifactResolutionException
+    public void testProjectWithConflictDependencyScopeReversedOrder() throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact childArtifact = createArtifact( "g:a:t:1" );
@@ -373,9 +366,8 @@
      * </pre>
      * 
      * @throws DependencyTreeBuilderException
-     * @throws ArtifactResolutionException
      */
-    public void testProjectWithManagedTransitiveDependencyVersion() throws DependencyTreeBuilderException, ArtifactResolutionException
+    public void testProjectWithManagedTransitiveDependencyVersion() throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact childArtifact = createArtifact( "g:a:t:1" );
@@ -406,9 +398,8 @@
      * </pre>
      *
      * @throws DependencyTreeBuilderException
-     * @throws ArtifactResolutionException
      */
-    public void testProjectWithManagedTransitiveDependencyScope() throws DependencyTreeBuilderException, ArtifactResolutionException
+    public void testProjectWithManagedTransitiveDependencyScope() throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact childArtifact = createArtifact( "g:a:t:1" );
@@ -440,9 +431,8 @@
      * </pre>
      * 
      * @throws DependencyTreeBuilderException
-     * @throws ArtifactResolutionException
      */
-    public void testProjectWithManagedTransitiveDependencyVersionAndScope() throws DependencyTreeBuilderException, ArtifactResolutionException
+    public void testProjectWithManagedTransitiveDependencyVersionAndScope() throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact childArtifact = createArtifact( "g:a:t:1" );
@@ -476,9 +466,8 @@
      * </pre>
      * 
      * @throws DependencyTreeBuilderException
-     * @throws ArtifactResolutionException
      */
-    public void testProjectWithManagedTransitiveDependencyVersionAndConflictDependencyVersion() throws DependencyTreeBuilderException, ArtifactResolutionException
+    public void testProjectWithManagedTransitiveDependencyVersionAndConflictDependencyVersion() throws DependencyTreeBuilderException
     {
         Artifact projectArtifact = createArtifact( "g:p:t:1" );
         Artifact nearestArtifact = createArtifact( "g:a:t:1" );
@@ -594,12 +583,12 @@
         return artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getType() + (artifact.getClassifier() != null ? ":" + artifact.getClassifier() : "");
     }
     
-    private void assertDependencyTree( DependencyNode expectedRootNode, MavenProject project ) throws DependencyTreeBuilderException, ArtifactResolutionException
+    private void assertDependencyTree( DependencyNode expectedRootNode, MavenProject project ) throws DependencyTreeBuilderException
     {
         assertDependencyTree( expectedRootNode, project, null );
     }
     
-    private void assertDependencyTree( DependencyNode expectedRootNode, MavenProject project, ArtifactFilter artifactFilter ) throws DependencyTreeBuilderException, ArtifactResolutionException
+    private void assertDependencyTree( DependencyNode expectedRootNode, MavenProject project, ArtifactFilter artifactFilter ) throws DependencyTreeBuilderException
     {
         // assert built dependency tree is as expected
         
@@ -611,19 +600,11 @@
         
         // assert resolution tree is as expected
         
-        ArtifactResolutionResult result = collect( project, artifactFilter );
+        ArtifactResolutionResult result = builder.getArtifactResolutionResult();
         
         assertTreeEquals( expectedRootNode, project, result );
     }
     
-    private ArtifactResolutionResult collect( MavenProject project, ArtifactFilter artifactFilter ) throws ArtifactResolutionException
-    {
-        return artifactCollector.collect( project.getDependencyArtifacts(), project.getArtifact(),
-                                          project.getManagedVersionMap(), artifactRepository,
-                                          project.getRemoteArtifactRepositories(), artifactMetadataSource,
-                                          artifactFilter, Collections.EMPTY_LIST );
-    }
-    
     private void assertTreeEquals( DependencyNode dependencyNode, MavenProject project, ArtifactResolutionResult resolutionResult )
     {
         List rootChildrenResolutionNodes = ResolutionNodeUtils.getRootChildrenResolutionNodes( project, resolutionResult );