You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by og...@apache.org on 2008/10/06 23:00:00 UTC

svn commit: r702260 - in /maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src: main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java test/java/org/apache/maven/mercury/metadata/DependencyTreeBuilderTest.java

Author: ogusakov
Date: Mon Oct  6 13:59:59 2008
New Revision: 702260

URL: http://svn.apache.org/viewvc?rev=702260&view=rev
Log:
added DependencyTreeBuilder inc/exc ut's

Modified:
    maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
    maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/DependencyTreeBuilderTest.java

Modified: maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java?rev=702260&r1=702259&r2=702260&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java (original)
+++ maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java Mon Oct  6 13:59:59 2008
@@ -139,7 +139,7 @@
       
         for( ArtifactBasicMetadata md : dependencies )
         {
-          List<ArtifactBasicMetadata> versions = expandedDeps.get(  md );
+          List<ArtifactBasicMetadata> versions = expandedDeps.get( md );
           if( versions == null || versions.size() < 1 )
           {
             if( md.isOptional() )
@@ -148,28 +148,38 @@
           }
           
           boolean noGoodVersions = true;
+          boolean noVersions = true;
           for( ArtifactBasicMetadata ver : versions )
           {
-            if( veto( ver, _filters) )
-              continue;
-            
-            if( vetoInclusionsExclusions(node, ver) )
+            if( veto( ver, _filters) || vetoInclusionsExclusions(node, ver) )
+            {
+              // there were good versions, but this one is filtered out filtered out
+              noGoodVersions = false;
               continue;
+            }
             
             MetadataTreeNode kid = createNode( ver, node, md );
             node.addChild( kid );
             
+            noVersions = false;
+            
             noGoodVersions = false;
           }
           
-          if( noGoodVersions )
+          
+          if( noVersions && !noGoodVersions )
+          {
+            // there were good versions, but they were all filtered out
+            continue;
+          }
+          else if( noGoodVersions )
           {
             if( md.isOptional() )
               continue;
             throw new MetadataTreeException( "did not find non-optional artifact for " + md );
           }
-          
-          node.addQuery(md);
+          else
+            node.addQuery(md);
       }
     
       return node;
@@ -228,7 +238,7 @@
   {
     for( MetadataTreeNode n = node; n != null; n = n.getParent() )
     {
-      ArtifactMetadata md = n.getMd();
+      ArtifactBasicMetadata md = n.getQuery();
       
       if( md.allowDependency( ver ) )
         return false;

Modified: maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/DependencyTreeBuilderTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/DependencyTreeBuilderTest.java?rev=702260&r1=702259&r2=702260&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/DependencyTreeBuilderTest.java (original)
+++ maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/DependencyTreeBuilderTest.java Mon Oct  6 13:59:59 2008
@@ -6,6 +6,7 @@
 
 import junit.framework.TestCase;
 
+import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
 import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
 import org.apache.maven.mercury.builder.api.DependencyProcessor;
@@ -122,6 +123,114 @@
     
   }
   //----------------------------------------------------------------------------------------------
+  public void testResolveScopedConflictsWithFiltering()
+  throws MetadataTreeException
+  {
+    String title = "testResolveScopedConflictsWithFiltering";
+    ArtifactMetadata md = new ArtifactMetadata( "a:a:4" );
+    
+    List<ArtifactBasicMetadata> exclusions = new ArrayList<ArtifactBasicMetadata>();
+    exclusions.add( new ArtifactBasicMetadata("c:c:3") );
+    md.setExclusions( exclusions );
+    
+    MetadataTreeNode root = mt.buildTree( md );
+    assertNotNull( "null tree built", root );
+    assertEquals( "wrong tree size", 3, root.countNodes() );
+
+    List<ArtifactMetadata> res = mt.resolveConflicts( ArtifactScopeEnum.compile );
+    assertNotNull( "null resolution", res );
+    assertEquals( "wrong tree size", 2, res.size() );
+
+    System.out.println( title+": " + res );
+    
+    assertTrue( assertHasArtifact( res, "a:a:4" ) );
+    assertFalse( assertHasArtifact( res, "c:c:3" ) );
+    
+  }
+  //----------------------------------------------------------------------------------------------
+  public void testResolveScopedConflictsWithFilteringOne()
+  throws MetadataTreeException
+  {
+    String title = "testResolveScopedConflictsWithFilteringOne";
+    ArtifactMetadata md = new ArtifactMetadata( "a:a:2" );
+    
+    List<ArtifactBasicMetadata> exclusions = new ArrayList<ArtifactBasicMetadata>();
+    exclusions.add( new ArtifactBasicMetadata("c:c:2") );
+    md.setExclusions( exclusions );
+    
+    MetadataTreeNode root = mt.buildTree( md );
+    assertNotNull( "null tree built", root );
+    assertEquals( "wrong tree size", 3, root.countNodes() );
+
+    List<ArtifactMetadata> res = mt.resolveConflicts( ArtifactScopeEnum.compile );
+    assertNotNull( "null resolution", res );
+    assertEquals( "wrong tree size", 2, res.size() );
+    
+    assertTrue( "no a:a:2 in the result", assertHasArtifact( res, "a:a:2" ) );
+    assertTrue( "no b:b:2 in the result", assertHasArtifact( res, "b:b:2" ) );
+    assertFalse( "no c:c:2 in the result", assertHasArtifact( res, "c:c:2" ) );
+    
+    System.out.println( title+": " + res );
+    
+  }
+  //----------------------------------------------------------------------------------------------
+  public void testResolveScopedConflictsWithFilteringTwo()
+  throws MetadataTreeException
+  {
+    String title = "testResolveScopedConflictsWithFilteringTwo";
+    ArtifactMetadata md = new ArtifactMetadata( "a:a:2" );
+    
+    List<ArtifactBasicMetadata> exclusions = new ArrayList<ArtifactBasicMetadata>();
+    exclusions.add( new ArtifactBasicMetadata("b:b:2") );
+    exclusions.add( new ArtifactBasicMetadata("c:c:2") );
+    md.setExclusions( exclusions );
+    
+    MetadataTreeNode root = mt.buildTree( md );
+    assertNotNull( "null tree built", root );
+    assertEquals( "wrong tree size", 2, root.countNodes() );
+
+    List<ArtifactMetadata> res = mt.resolveConflicts( ArtifactScopeEnum.compile );
+    assertNotNull( "null resolution", res );
+    assertEquals( "wrong tree size", 2, res.size() );
+    
+    assertTrue( "no a:a:2 in the result", assertHasArtifact( res, "a:a:2" ) );
+    assertTrue( "no b:b:2 in the result", assertHasArtifact( res, "b:b:1" ) );
+    assertFalse( "no b:b:2 in the result", assertHasArtifact( res, "b:b:2" ) );
+    assertFalse( "no c:c:2 in the result", assertHasArtifact( res, "c:c:2" ) );
+    
+    System.out.println( title+": " + res );
+    
+  }
+  //----------------------------------------------------------------------------------------------
+  public void testResolveScopedConflictsWithFilteringAll()
+  throws MetadataTreeException
+  {
+    String title = "testResolveScopedConflictsWithFilteringTwo";
+    ArtifactMetadata md = new ArtifactMetadata( "a:a:2" );
+    
+    List<ArtifactBasicMetadata> exclusions = new ArrayList<ArtifactBasicMetadata>();
+    exclusions.add( new ArtifactBasicMetadata("b:b:1") );
+    exclusions.add( new ArtifactBasicMetadata("b:b:2") );
+    exclusions.add( new ArtifactBasicMetadata("c:c:2") );
+    md.setExclusions( exclusions );
+    
+    MetadataTreeNode root = mt.buildTree( md );
+    assertNotNull( "null tree built", root );
+    assertEquals( "wrong tree size", 1, root.countNodes() );
+
+    List<ArtifactMetadata> res = mt.resolveConflicts( ArtifactScopeEnum.compile );
+    assertNotNull( "null resolution", res );
+    assertEquals( "wrong tree size", 1, res.size() );
+    
+    assertTrue( "no a:a:2 in the result", assertHasArtifact( res, "a:a:2" ) );
+    assertFalse( "no b:b:1 in the result", assertHasArtifact( res, "b:b:1" ) );
+    assertFalse( "no b:b:2 in the result", assertHasArtifact( res, "b:b:2" ) );
+    assertFalse( "no c:c:2 in the result", assertHasArtifact( res, "c:c:2" ) );
+    
+    System.out.println( title+": " + res );
+    
+  }
+  //----------------------------------------------------------------------------------------------
   public void testResolveBigConflicts()
   throws MetadataTreeException
   {