[MNG-2988] Ranges with inclusive upper bounds are not validated against metadata

Submitted by: Mark Hobson
Merged from: maven-2.0.x branch r545150


git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@545156 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Brett Leslie Porter 2007-06-07 12:39:05 +00:00
parent 0c1b689e52
commit d20f6c96fe
3 changed files with 25 additions and 22 deletions

View File

@ -34,8 +34,6 @@
*/ */
public class VersionRange public class VersionRange
{ {
private final ArtifactVersion RELEASE = new DefaultArtifactVersion( "RELEASE" );
private final ArtifactVersion recommendedVersion; private final ArtifactVersion recommendedVersion;
private final List restrictions; private final List restrictions;
@ -469,16 +467,8 @@ public ArtifactVersion getSelectedVersion( Artifact artifact )
{ {
throw new OverConstrainedVersionException( "The artifact has no valid ranges", artifact ); throw new OverConstrainedVersionException( "The artifact has no valid ranges", artifact );
} }
else
{
Restriction restriction = (Restriction) restrictions.get( restrictions.size() - 1 );
version = restriction.getUpperBound(); version = null;
if ( version == null )
{
version = RELEASE;
}
}
} }
return version; return version;
} }
@ -497,15 +487,6 @@ public boolean isSelectedVersionKnown( Artifact artifact )
{ {
throw new OverConstrainedVersionException( "The artifact has no valid ranges", artifact ); throw new OverConstrainedVersionException( "The artifact has no valid ranges", artifact );
} }
else
{
Restriction restriction = (Restriction) restrictions.get( restrictions.size() - 1 );
if ( restriction.getUpperBound() != null )
{
value = restriction.isUpperBoundInclusive();
}
}
} }
return value; return value;
} }

View File

@ -292,10 +292,10 @@ public void testCompatibleRanges()
ArtifactSpec b = a.addDependency( "b", "1.0" ); ArtifactSpec b = a.addDependency( "b", "1.0" );
a.addDependency( "c", "[2.0,2.5]" ); a.addDependency( "c", "[2.0,2.5]" );
b.addDependency( "c", "[1.0,3.0]" ); b.addDependency( "c", "[1.0,3.0]" );
ArtifactSpec c = createArtifact( "c", "2.5" );
ArtifactResolutionResult res = collect( a ); ArtifactResolutionResult res = collect( a );
ArtifactSpec c = createArtifact( "c", "2.5" );
assertEquals( "Check artifact list", createSet( new Object[]{a.artifact, b.artifact, c.artifact} ), assertEquals( "Check artifact list", createSet( new Object[]{a.artifact, b.artifact, c.artifact} ),
res.getArtifacts() ); res.getArtifacts() );
assertEquals( "Check version", "2.5", getArtifact( "c", res.getArtifacts() ).getVersion() ); assertEquals( "Check version", "2.5", getArtifact( "c", res.getArtifacts() ).getVersion() );

View File

@ -23,6 +23,8 @@
import java.util.List; import java.util.List;
import org.apache.maven.artifact.Artifact;
/** /**
* Tests version range construction. * Tests version range construction.
* *
@ -44,9 +46,15 @@ public class VersionRangeTest
private static final String CHECK_VERSION_RECOMMENDATION = "check version recommended"; private static final String CHECK_VERSION_RECOMMENDATION = "check version recommended";
private static final String CHECK_SELECTED_VERSION_KNOWN = "check selected version known";
private static final String CHECK_SELECTED_VERSION = "check selected version";
public void testRange() public void testRange()
throws InvalidVersionSpecificationException throws InvalidVersionSpecificationException, OverConstrainedVersionException
{ {
Artifact artifact = null;
VersionRange range = VersionRange.createFromVersionSpec( "(,1.0]" ); VersionRange range = VersionRange.createFromVersionSpec( "(,1.0]" );
List restrictions = range.getRestrictions(); List restrictions = range.getRestrictions();
assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() ); assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
@ -56,6 +64,8 @@ public void testRange()
assertEquals( CHECK_UPPER_BOUND, "1.0", restriction.getUpperBound().toString() ); assertEquals( CHECK_UPPER_BOUND, "1.0", restriction.getUpperBound().toString() );
assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() ); assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
assertNull( CHECK_VERSION_RECOMMENDATION, range.getRecommendedVersion() ); assertNull( CHECK_VERSION_RECOMMENDATION, range.getRecommendedVersion() );
assertFalse( CHECK_SELECTED_VERSION_KNOWN, range.isSelectedVersionKnown( artifact ) );
assertNull( CHECK_SELECTED_VERSION, range.getSelectedVersion( artifact ) );
range = VersionRange.createFromVersionSpec( "1.0" ); range = VersionRange.createFromVersionSpec( "1.0" );
assertEquals( CHECK_VERSION_RECOMMENDATION, "1.0", range.getRecommendedVersion().toString() ); assertEquals( CHECK_VERSION_RECOMMENDATION, "1.0", range.getRecommendedVersion().toString() );
@ -66,6 +76,8 @@ public void testRange()
assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() ); assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
assertNull( CHECK_UPPER_BOUND, restriction.getUpperBound() ); assertNull( CHECK_UPPER_BOUND, restriction.getUpperBound() );
assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() ); assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
assertTrue( CHECK_SELECTED_VERSION_KNOWN, range.isSelectedVersionKnown( artifact ) );
assertEquals( CHECK_SELECTED_VERSION, "1.0", range.getSelectedVersion( artifact ).toString() );
range = VersionRange.createFromVersionSpec( "[1.0]" ); range = VersionRange.createFromVersionSpec( "[1.0]" );
restrictions = range.getRestrictions(); restrictions = range.getRestrictions();
@ -76,6 +88,8 @@ public void testRange()
assertEquals( CHECK_UPPER_BOUND, "1.0", restriction.getUpperBound().toString() ); assertEquals( CHECK_UPPER_BOUND, "1.0", restriction.getUpperBound().toString() );
assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() ); assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
assertNull( CHECK_VERSION_RECOMMENDATION, range.getRecommendedVersion() ); assertNull( CHECK_VERSION_RECOMMENDATION, range.getRecommendedVersion() );
assertFalse( CHECK_SELECTED_VERSION_KNOWN, range.isSelectedVersionKnown( artifact ) );
assertNull( CHECK_SELECTED_VERSION, range.getSelectedVersion( artifact ) );
range = VersionRange.createFromVersionSpec( "[1.2,1.3]" ); range = VersionRange.createFromVersionSpec( "[1.2,1.3]" );
restrictions = range.getRestrictions(); restrictions = range.getRestrictions();
@ -86,6 +100,8 @@ public void testRange()
assertEquals( CHECK_UPPER_BOUND, "1.3", restriction.getUpperBound().toString() ); assertEquals( CHECK_UPPER_BOUND, "1.3", restriction.getUpperBound().toString() );
assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() ); assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
assertNull( CHECK_VERSION_RECOMMENDATION, range.getRecommendedVersion() ); assertNull( CHECK_VERSION_RECOMMENDATION, range.getRecommendedVersion() );
assertFalse( CHECK_SELECTED_VERSION_KNOWN, range.isSelectedVersionKnown( artifact ) );
assertNull( CHECK_SELECTED_VERSION, range.getSelectedVersion( artifact ) );
range = VersionRange.createFromVersionSpec( "[1.0,2.0)" ); range = VersionRange.createFromVersionSpec( "[1.0,2.0)" );
restrictions = range.getRestrictions(); restrictions = range.getRestrictions();
@ -96,6 +112,8 @@ public void testRange()
assertEquals( CHECK_UPPER_BOUND, "2.0", restriction.getUpperBound().toString() ); assertEquals( CHECK_UPPER_BOUND, "2.0", restriction.getUpperBound().toString() );
assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() ); assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
assertNull( CHECK_VERSION_RECOMMENDATION, range.getRecommendedVersion() ); assertNull( CHECK_VERSION_RECOMMENDATION, range.getRecommendedVersion() );
assertFalse( CHECK_SELECTED_VERSION_KNOWN, range.isSelectedVersionKnown( artifact ) );
assertNull( CHECK_SELECTED_VERSION, range.getSelectedVersion( artifact ) );
range = VersionRange.createFromVersionSpec( "[1.5,)" ); range = VersionRange.createFromVersionSpec( "[1.5,)" );
restrictions = range.getRestrictions(); restrictions = range.getRestrictions();
@ -106,6 +124,8 @@ public void testRange()
assertNull( CHECK_UPPER_BOUND, restriction.getUpperBound() ); assertNull( CHECK_UPPER_BOUND, restriction.getUpperBound() );
assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() ); assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
assertNull( CHECK_VERSION_RECOMMENDATION, range.getRecommendedVersion() ); assertNull( CHECK_VERSION_RECOMMENDATION, range.getRecommendedVersion() );
assertFalse( CHECK_SELECTED_VERSION_KNOWN, range.isSelectedVersionKnown( artifact ) );
assertNull( CHECK_SELECTED_VERSION, range.getSelectedVersion( artifact ) );
range = VersionRange.createFromVersionSpec( "(,1.0],[1.2,)" ); range = VersionRange.createFromVersionSpec( "(,1.0],[1.2,)" );
restrictions = range.getRestrictions(); restrictions = range.getRestrictions();
@ -122,6 +142,8 @@ public void testRange()
assertNull( CHECK_UPPER_BOUND, restriction.getUpperBound() ); assertNull( CHECK_UPPER_BOUND, restriction.getUpperBound() );
assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() ); assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
assertNull( CHECK_VERSION_RECOMMENDATION, range.getRecommendedVersion() ); assertNull( CHECK_VERSION_RECOMMENDATION, range.getRecommendedVersion() );
assertFalse( CHECK_SELECTED_VERSION_KNOWN, range.isSelectedVersionKnown( artifact ) );
assertNull( CHECK_SELECTED_VERSION, range.getSelectedVersion( artifact ) );
} }
public void testInvalidRanges() public void testInvalidRanges()