Author: brianf
Date: Wed Mar  5 17:02:28 2008
New Revision: 634097

URL: http://svn.apache.org/viewvc?rev=634097&view=rev
Log:
MNG-2123: new form of the unit test that expressed the issue seen in the IT

Modified:
    
maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java
    
maven/components/branches/maven-2.0.x/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java

Modified: 
maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java?rev=634097&r1=634096&r2=634097&view=diff
==============================================================================
--- 
maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java
 (original)
+++ 
maven/components/branches/maven-2.0.x/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java
 Wed Mar  5 17:02:28 2008
@@ -196,10 +196,10 @@
                             //MNG-2123: if the previous node was not a range, 
then it wouldn't have any available
                             //versions. We just clobbered the selected version 
above. (why? i have no idea.)
                             //So since we are here and this is ranges we must 
go figure out the version (for a third time...)
-                            if ( resetArtifact.getVersion() == null && 
resetArtifact.getVersionRange() != null)
+                            if ( resetArtifact.getVersion() == null && 
resetArtifact.getVersionRange() != null )
                             {
 
-                                //go find the version. This is a total hack. 
See previous comment.
+                                // go find the version. This is a total hack. 
See previous comment.
                                 List versions = 
resetArtifact.getAvailableVersions();
                                 if ( versions == null )
                                 {
@@ -219,8 +219,9 @@
                                                                                
remoteRepositories, e );
                                     }
                                 }
+                                //end hack
                                 resetArtifact.selectVersion( 
resetArtifact.getVersionRange().matchVersion(
-                                    resetArtifact.getAvailableVersions() 
).toString() );
+                                                                               
                            resetArtifact.getAvailableVersions() ).toString() );
                                 fireEvent( 
ResolutionListener.SELECT_VERSION_FROM_RANGE, listeners, resetNodes[j] );
                             }
                         }

Modified: 
maven/components/branches/maven-2.0.x/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java?rev=634097&r1=634096&r2=634097&view=diff
==============================================================================
--- 
maven/components/branches/maven-2.0.x/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java
 (original)
+++ 
maven/components/branches/maven-2.0.x/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java
 Wed Mar  5 17:02:28 2008
@@ -368,30 +368,56 @@
     }
     
     public void testInCompatibleRecommendedVersion()
-    throws ArtifactResolutionException, InvalidVersionSpecificationException
-{
-    
-    //this test puts two dependencies on C with 3.2 and [1.0,3.0] as the 
version.
-    //it puts 2.5 and 3.0 in the pretend repo...we should get back 3.0
-    ArtifactSpec a = createArtifactSpec( "a", "1.0" );
-    ArtifactSpec b = a.addDependency( "b", "1.0" );
-    ArtifactSpec b1 = a.addDependency( "b1", "1.0" );
-    b.addDependency( "c", "3.2" );
-    b1.addDependency( "c", "[1.0,3.0]" );
-  
-    //put it in the repo
-    ArtifactSpec c = createArtifactSpec( "c", "3.0" );
-    source.addArtifact( createArtifactSpec( "c", "2.5" ));
-    source.addArtifact( createArtifactSpec( "c", "3.0" ));
-    source.addArtifact( createArtifactSpec( "c", "3.2" ));
-
-    
-    ArtifactResolutionResult res = collect( a );
-
-    assertEquals( "Check artifact list", createSet( new Object[] { a.artifact, 
b.artifact,b1.artifact,c.artifact } ),
-                  res.getArtifacts() );
-    assertEquals( "Check version", "3.0", getArtifact( "c", res.getArtifacts() 
).getVersion() );
-}
+        throws ArtifactResolutionException, 
InvalidVersionSpecificationException
+    {
+
+        // this test puts two dependencies on C with 3.2 and [1.0,3.0] as the 
version.
+        // it puts 2.5 and 3.0 in the pretend repo...we should get back 3.0
+        ArtifactSpec a = createArtifactSpec( "a", "1.0" );
+        ArtifactSpec b = a.addDependency( "b", "1.0" );
+        ArtifactSpec b1 = a.addDependency( "b1", "1.0" );
+        b.addDependency( "c", "3.2" );
+        b1.addDependency( "c", "[1.0,3.0]" );
+
+        // put it in the repo
+        ArtifactSpec c = createArtifactSpec( "c", "3.0" );
+        source.addArtifact( createArtifactSpec( "c", "2.5" ) );
+        source.addArtifact( createArtifactSpec( "c", "3.0" ) );
+        source.addArtifact( createArtifactSpec( "c", "3.2" ) );
+
+        ArtifactResolutionResult res = collect( a );
+
+        assertEquals( "Check artifact list",
+                      createSet( new Object[] { a.artifact, b.artifact, 
b1.artifact, c.artifact } ), res.getArtifacts() );
+        assertEquals( "Check version", "3.0", getArtifact( "c", 
res.getArtifacts() ).getVersion() );
+    }
+
+    //MNG-2123: this version of the test caused the crash seen in the IT. It 
was
+    //only happening if the first dependency was not a range but the second 
one was.
+    public void testInCompatibleRecommendedVersion2()
+        throws ArtifactResolutionException, 
InvalidVersionSpecificationException
+    {
+
+        // this test puts two dependencies on C with 3.2 and [1.0,3.0] as the 
version.
+        // it puts 2.5 and 3.0 in the pretend repo...we should get back 3.0
+        ArtifactSpec a = createArtifactSpec( "a", "1.0" );
+        ArtifactSpec b = a.addDependency( "b", "1.0" );
+        ArtifactSpec b1 = a.addDependency( "b1", "1.0" );
+        b1.addDependency( "c", "3.2" );
+        b.addDependency( "c", "[1.0,3.0]" );
+
+        // put it in the repo
+        ArtifactSpec c = createArtifactSpec( "c", "3.0" );
+        source.addArtifact( createArtifactSpec( "c", "2.5" ) );
+        source.addArtifact( createArtifactSpec( "c", "3.0" ) );
+        source.addArtifact( createArtifactSpec( "c", "3.2" ) );
+
+        ArtifactResolutionResult res = collect( a );
+
+        assertEquals( "Check artifact list",
+                      createSet( new Object[] { a.artifact, b.artifact, 
b1.artifact, c.artifact } ), res.getArtifacts() );
+        assertEquals( "Check version", "3.0", getArtifact( "c", 
res.getArtifacts() ).getVersion() );
+    }
     
     public void testIncompatibleRanges()
         throws ArtifactResolutionException, 
InvalidVersionSpecificationException


Reply via email to