You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ivy-commits@incubator.apache.org by ma...@apache.org on 2007/06/11 22:22:32 UTC

svn commit: r546306 - in /incubator/ivy/core/trunk: CHANGES.txt src/java/org/apache/ivy/plugins/version/VersionRangeMatcher.java test/java/org/apache/ivy/plugins/version/VersionRangeMatcherTest.java

Author: maartenc
Date: Mon Jun 11 15:22:30 2007
New Revision: 546306

URL: http://svn.apache.org/viewvc?view=rev&rev=546306
Log:
Ivy does not handle multiple version dependencies in maven2 poms correctly (IVY-494)

Modified:
    incubator/ivy/core/trunk/CHANGES.txt
    incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/version/VersionRangeMatcher.java
    incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/version/VersionRangeMatcherTest.java

Modified: incubator/ivy/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/CHANGES.txt?view=diff&rev=546306&r1=546305&r2=546306
==============================================================================
--- incubator/ivy/core/trunk/CHANGES.txt (original)
+++ incubator/ivy/core/trunk/CHANGES.txt Mon Jun 11 15:22:30 2007
@@ -57,6 +57,7 @@
 - IMPROVEMENT: Remove @author tags (thanks to Stephane Bailliez)
 - IMPROVEMENT: Remove use of deprecated elements in ivysettings.xml (IVY-505) (with contribution from Jan Materne)
 
+- FIX: Ivy does not handle multiple version dependencies in maven2 poms correctly (IVY-494)
 - FIX: pom parser doesn't necessarily processes all important information (IVY-524)
 - FIX: <info> element of Ivy file in cache is not updated when using namespaces (IVY-516)
 - FIX: Retrieve Ant task ignores resolveId attribute (IVY-522) (thanks to Scott Goldstein)

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/version/VersionRangeMatcher.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/version/VersionRangeMatcher.java?view=diff&rev=546306&r1=546305&r2=546306
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/version/VersionRangeMatcher.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/version/VersionRangeMatcher.java Mon Jun 11 15:22:30 2007
@@ -66,24 +66,24 @@
 
     private final static String UI_PATTERN = "\\" + UPPER_INFINITE;
 
-    private final static String SEP_PATTERN = "\\" + SEPARATOR;
+    private final static String SEP_PATTERN = "\\s*\\" + SEPARATOR + "\\s*";
 
     private final static String OPEN_PATTERN = "[" + OPEN_INC_PATTERN + OPEN_EXC_PATTERN + "]";
 
     private final static String CLOSE_PATTERN = "[" + CLOSE_INC_PATTERN + CLOSE_EXC_PATTERN + "]";
 
-    private final static String ANY_NON_SPECIAL_PATTERN = "[^" + SEP_PATTERN + OPEN_INC_PATTERN
+    private final static String ANY_NON_SPECIAL_PATTERN = "[^\\s" + SEPARATOR + OPEN_INC_PATTERN
             + OPEN_EXC_PATTERN + CLOSE_INC_PATTERN + CLOSE_EXC_PATTERN + LI_PATTERN + UI_PATTERN
             + "]";
 
-    private final static String FINITE_PATTERN = OPEN_PATTERN + "(" + ANY_NON_SPECIAL_PATTERN
-            + "+)" + SEP_PATTERN + "(" + ANY_NON_SPECIAL_PATTERN + "+)" + CLOSE_PATTERN;
+    private final static String FINITE_PATTERN = OPEN_PATTERN + "\\s*(" + ANY_NON_SPECIAL_PATTERN
+            + "+)" + SEP_PATTERN + "(" + ANY_NON_SPECIAL_PATTERN + "+)\\s*" + CLOSE_PATTERN;
 
-    private final static String LOWER_INFINITE_PATTERN = LI_PATTERN + "\\,("
-            + ANY_NON_SPECIAL_PATTERN + "+)" + CLOSE_PATTERN;
+    private final static String LOWER_INFINITE_PATTERN = LI_PATTERN + SEP_PATTERN + "("
+            + ANY_NON_SPECIAL_PATTERN + "+)\\s*" + CLOSE_PATTERN;
 
-    private final static String UPPER_INFINITE_PATTERN = OPEN_PATTERN + "("
-            + ANY_NON_SPECIAL_PATTERN + "+)\\," + UI_PATTERN;
+    private final static String UPPER_INFINITE_PATTERN = OPEN_PATTERN + "\\s*("
+            + ANY_NON_SPECIAL_PATTERN + "+)" + SEP_PATTERN + UI_PATTERN;
 
     private final static Pattern FINITE_RANGE = Pattern.compile(FINITE_PATTERN);
 

Modified: incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/version/VersionRangeMatcherTest.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/version/VersionRangeMatcherTest.java?view=diff&rev=546306&r1=546305&r2=546306
==============================================================================
--- incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/version/VersionRangeMatcherTest.java (original)
+++ incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/version/VersionRangeMatcherTest.java Mon Jun 11 15:22:30 2007
@@ -41,6 +41,30 @@
         assertDynamic("]1.0,2.0]", true);
         assertDynamic("[1.0,)", true);
         assertDynamic("(,1.0]", true);
+
+        assertDynamic("[1.0, 2.0]", true);
+        assertDynamic("[ 1.0, 2.0]", true);
+        assertDynamic("[1.0, 2.0 ]", true);
+        assertDynamic("[ 1.0, 2.0 ]", true);
+        assertDynamic("[1.0, 2.0[", true);
+        assertDynamic("[ 1.0, 2.0[", true);
+        assertDynamic("[1.0, 2.0 [", true);
+        assertDynamic("[ 1.0, 2.0 [", true);
+        assertDynamic("]1.0, 2.0[", true);
+        assertDynamic("] 1.0, 2.0[", true);
+        assertDynamic("]1.0, 2.0 [", true);
+        assertDynamic("] 1.0, 2.0 [", true);
+        assertDynamic("]1.0, 2.0]", true);
+        assertDynamic("] 1.0, 2.0]", true);
+        assertDynamic("]1.0, 2.0 ]", true);
+        assertDynamic("] 1.0, 2.0 ]", true);
+        assertDynamic("[1.0, )", true);
+        assertDynamic("[ 1.0,)", true);
+        assertDynamic("[ 1.0, )", true);
+        assertDynamic("( ,1.0]", true);
+        assertDynamic("(, 1.0]", true);
+        assertDynamic("( , 1.0]", true);
+        assertDynamic("( , 1.0 ]", true);
     }
 
     public void testIncludingFinite() {
@@ -49,6 +73,12 @@
         assertAccept("[1.0,2.0]", "2.1", false);
         assertAccept("[1.0,2.0]", "1.0", true);
         assertAccept("[1.0,2.0]", "2.0", true);
+
+        assertAccept("[1.0, 2.0]", "1.1", true);
+        assertAccept("[1.0, 2.0 ]", "0.9", false);
+        assertAccept("[1.0, 2.0]", "2.1", false);
+        assertAccept("[ 1.0,2.0]", "1.0", true);
+        assertAccept("[ 1.0 , 2.0 ]", "2.0", true);
     }
 
     public void testExcludingFinite() {
@@ -79,6 +109,11 @@
         assertAccept("(,2.0]", "2.0", true);
 
         assertAccept("(,2.0]", "2.3", false);
+        
+        assertAccept("[1.0, )", "1.1", true);
+        assertAccept("[1.0 ,)", "2.0", true);
+        assertAccept("[1.0 , )", "3.5.6", true);
+        assertAccept("[ 1.0, )", "1.0", true);
     }
 
     public void testExcludingInfinite() {