You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2022/12/18 14:11:53 UTC

[maven] 01/01: [MNG-7106] Accept same lower and upper bound in version spec string

This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch MNG-7106_maven-3.8.x
in repository https://gitbox.apache.org/repos/asf/maven.git

commit 8776fdb44a690511be9cf2db764d0a6951a3cad3
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Thu Oct 13 15:31:56 2022 +0200

    [MNG-7106] Accept same lower and upper bound in version spec string
    
    This closes #922
---
 .../org/apache/maven/artifact/versioning/VersionRange.java   | 12 ++++++------
 .../apache/maven/artifact/versioning/VersionRangeTest.java   |  7 +++++++
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
index 3689b2e7a..27cca5604 100644
--- a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
@@ -212,10 +212,6 @@ public class VersionRange
         {
             String lowerBound = process.substring( 0, index ).trim();
             String upperBound = process.substring( index + 1 ).trim();
-            if ( lowerBound.equals( upperBound ) )
-            {
-                throw new InvalidVersionSpecificationException( "Range cannot have identical boundaries: " + spec );
-            }
 
             ArtifactVersion lowerVersion = null;
             if ( lowerBound.length() > 0 )
@@ -228,9 +224,13 @@ public class VersionRange
                 upperVersion = new DefaultArtifactVersion( upperBound );
             }
 
-            if ( upperVersion != null && lowerVersion != null && upperVersion.compareTo( lowerVersion ) < 0 )
+            if ( upperVersion != null && lowerVersion != null )
             {
-                throw new InvalidVersionSpecificationException( "Range defies version ordering: " + spec );
+                int result = upperVersion.compareTo( lowerVersion );
+                if ( result < 0 || ( result == 0 && ( !lowerBoundInclusive || !upperBoundInclusive ) ) )
+                {
+                    throw new InvalidVersionSpecificationException( "Range defies version ordering: " + spec );
+                }
             }
 
             restriction = new Restriction( lowerVersion, lowerBoundInclusive, upperVersion, upperBoundInclusive );
diff --git a/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java b/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java
index 2cf0fec93..9c98f2976 100644
--- a/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java
+++ b/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java
@@ -154,6 +154,13 @@ public class VersionRangeTest
         assertTrue( range.containsVersion( new DefaultArtifactVersion( "5.0.9.0" ) ) );
     }
 
+    public void testSameUpperAndLowerBoundRoundtrip() throws InvalidVersionSpecificationException
+    {
+        VersionRange range = VersionRange.createFromVersionSpec( "[1.0]" );
+        VersionRange range2 = VersionRange.createFromVersionSpec( range.toString() );
+        assertEquals( range, range2 );
+    }
+
     public void testInvalidRanges()
     {
         checkInvalidRange( "(1.0)" );