This is an automated email from the ASF dual-hosted git repository. kwin pushed a commit to branch bugfix/MNG-7106-Maven3.9 in repository https://gitbox.apache.org/repos/asf/maven.git
commit 90a16152368f9a8478806fefc19b1a3efd65d68f Author: Konrad Windszus <[email protected]> AuthorDate: Wed Oct 12 12:41:29 2022 +0200 [MNG-7106] Accept same lower and upper bound in version spec string --- .../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)" );
