diff --git a/src/main/java/org/codehaus/mojo/versions/ordering/AbstractVersionComparator.java b/src/main/java/org/codehaus/mojo/versions/ordering/AbstractVersionComparator.java index 1baeea0a3..ecc87f1a3 100644 --- a/src/main/java/org/codehaus/mojo/versions/ordering/AbstractVersionComparator.java +++ b/src/main/java/org/codehaus/mojo/versions/ordering/AbstractVersionComparator.java @@ -59,17 +59,8 @@ public final int getSegmentCount( ArtifactVersion v ) */ public final ArtifactVersion incrementSegment( ArtifactVersion v, Segment segment ) throws InvalidSegmentException { - if ( VersionComparators.isSnapshot( v ) ) - { - return VersionComparators.copySnapshot( v, innerIncrementSegment( VersionComparators.stripSnapshot( v ), - segment ) ); - } - int segmentCount = getSegmentCount( v ); - if ( segment.value() >= segmentCount ) - { - throw new InvalidSegmentException( segment, segmentCount, v ); - } - return innerIncrementSegment( v, segment ); + return VersionComparators.copySnapshot( v, innerIncrementSegment( VersionComparators.stripSnapshot( v ), + segment ) ); } protected abstract ArtifactVersion innerIncrementSegment( ArtifactVersion v, Segment segment ) diff --git a/src/test/java/org/codehaus/mojo/versions/DependencyUpdatesReportMojoTest.java b/src/test/java/org/codehaus/mojo/versions/DependencyUpdatesReportMojoTest.java index 7403e2610..d14013bdc 100644 --- a/src/test/java/org/codehaus/mojo/versions/DependencyUpdatesReportMojoTest.java +++ b/src/test/java/org/codehaus/mojo/versions/DependencyUpdatesReportMojoTest.java @@ -54,6 +54,7 @@ import static org.hamcrest.CoreMatchers.not; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.anyOf; +import static org.hamcrest.Matchers.matchesPattern; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -307,4 +308,25 @@ public void testDependenciesShouldOverrideDependencyManagement() throws IOExcept String output = os.toString().replaceAll( "\n", "" ); assertThat( output, Matchers.stringContainsInOrder( "artifactB" ) ); } + + @Test + public void testWrongReportBounds() throws IOException, MavenReportException + { + OutputStream os = new ByteArrayOutputStream(); + SinkFactory sinkFactory = new Xhtml5SinkFactory(); + new TestDependencyUpdatesReportMojo() + .withOnlyUpgradable( true ) + .withDependencies( + dependencyOf( "test-artifact" ) ) + .withArtifactMetadataSource( mockArtifactMetadataSource( new HashMap() + {{ + put( "test-artifact", new String[] { "1.0.0", "2.0.0-M1" } ); + }} ) ) + .generate( sinkFactory.createSink( os ), sinkFactory, Locale.getDefault() ); + + String output = os.toString().replaceAll( "\n", "" ).replaceAll( "\r", "" ); + assertThat( output, allOf( + matchesPattern( ".*report.overview.numNewerMajorAvailable\\s*1.*" ), + matchesPattern( ".*report.overview.numUpToDate\\s*0.*" ) ) ); + } } diff --git a/src/test/java/org/codehaus/mojo/versions/ordering/MavenVersionComparatorTest.java b/src/test/java/org/codehaus/mojo/versions/ordering/MavenVersionComparatorTest.java index 8edc29b3d..236971208 100644 --- a/src/test/java/org/codehaus/mojo/versions/ordering/MavenVersionComparatorTest.java +++ b/src/test/java/org/codehaus/mojo/versions/ordering/MavenVersionComparatorTest.java @@ -52,14 +52,14 @@ public void testSegmentCounting() @Test public void testSegmentIncrementing() throws InvalidSegmentException { - assertIncrement( "6", "5", MAJOR ); - assertIncrement( "6.0", "5.0", MAJOR ); - assertIncrement( "5.1", "5.0", MINOR ); - assertIncrement( "5.1.0", "5.0.1", MINOR ); - assertIncrement( "5.alpha.2", "5.alpha.1", MAJOR ); - assertIncrement( "5.alpha-1.2", "5.alpha-1.1", MAJOR ); - assertIncrement( "5.alpha-1.ba", "5.alpha-1.az", MAJOR ); - assertIncrement( "5.alpha-wins.2", "5.alpha-wins.1", MAJOR ); + assertIncrement( "6-SNAPSHOT", "5", MAJOR ); + assertIncrement( "6.0-SNAPSHOT", "5.0", MAJOR ); + assertIncrement( "5.1-SNAPSHOT", "5.0", MINOR ); + assertIncrement( "5.1.0-SNAPSHOT", "5.0.1", MINOR ); + assertIncrement( "5.alpha.2-SNAPSHOT", "5.alpha.1", MAJOR ); + assertIncrement( "5.alpha-1.2-SNAPSHOT", "5.alpha-1.1", MAJOR ); + assertIncrement( "5.alpha-1.ba-SNAPSHOT", "5.alpha-1.az", MAJOR ); + assertIncrement( "5.alpha-wins.2-SNAPSHOT", "5.alpha-wins.1", MAJOR ); assertIncrement( "1.0-alpha-3-SNAPSHOT", "1.0-alpha-2-SNAPSHOT", SUBINCREMENTAL ); assertIncrement( "1.0-alpha-90-SNAPSHOT", "1.0-alpha-9-SNAPSHOT", SUBINCREMENTAL ); assertIncrement( "1.0-za-SNAPSHOT", "1.0-z-SNAPSHOT", SUBINCREMENTAL ); diff --git a/src/test/java/org/codehaus/mojo/versions/ordering/MercuryVersionComparatorTest.java b/src/test/java/org/codehaus/mojo/versions/ordering/MercuryVersionComparatorTest.java index 27d75f4d1..52d2b6553 100644 --- a/src/test/java/org/codehaus/mojo/versions/ordering/MercuryVersionComparatorTest.java +++ b/src/test/java/org/codehaus/mojo/versions/ordering/MercuryVersionComparatorTest.java @@ -45,21 +45,21 @@ public void testSegmentCounting() throws Exception @Test public void testSegmentIncrementing() throws Exception { - assertEquals( new DefaultArtifactVersion( "6" ).toString(), + assertEquals( new DefaultArtifactVersion( "6-SNAPSHOT" ).toString(), instance.incrementSegment( new DefaultArtifactVersion( "5" ), MAJOR ).toString() ); - assertEquals( new DefaultArtifactVersion( "6.0" ).toString(), + assertEquals( new DefaultArtifactVersion( "6.0-SNAPSHOT" ).toString(), instance.incrementSegment( new DefaultArtifactVersion( "5.0" ), MAJOR ).toString() ); - assertEquals( new DefaultArtifactVersion( "5.1" ).toString(), + assertEquals( new DefaultArtifactVersion( "5.1-SNAPSHOT" ).toString(), instance.incrementSegment( new DefaultArtifactVersion( "5.0" ), MINOR ).toString() ); - assertEquals( new DefaultArtifactVersion( "5.1.0" ).toString(), + assertEquals( new DefaultArtifactVersion( "5.1.0-SNAPSHOT" ).toString(), instance.incrementSegment( new DefaultArtifactVersion( "5.0.1" ), MINOR ).toString() ); - assertEquals( new DefaultArtifactVersion( "5.beta.0" ).toString(), + assertEquals( new DefaultArtifactVersion( "5.beta.0-SNAPSHOT" ).toString(), instance.incrementSegment( new DefaultArtifactVersion( "5.alpha.1" ), MINOR ).toString() ); - assertEquals( new DefaultArtifactVersion( "5.beta-0.0" ).toString(), + assertEquals( new DefaultArtifactVersion( "5.beta-0.0-SNAPSHOT" ).toString(), instance.incrementSegment( new DefaultArtifactVersion( "5.alpha-1.1" ), MINOR ).toString() ); - assertEquals( new DefaultArtifactVersion( "5.alpha-2.0" ).toString(), + assertEquals( new DefaultArtifactVersion( "5.alpha-2.0-SNAPSHOT" ).toString(), instance.incrementSegment( new DefaultArtifactVersion( "5.alpha-1.1" ), INCREMENTAL ).toString() ); - assertEquals( new DefaultArtifactVersion( "5.beta-0.0" ).toString(), + assertEquals( new DefaultArtifactVersion( "5.beta-0.0-SNAPSHOT" ).toString(), instance.incrementSegment( new DefaultArtifactVersion( "5.alpha-wins.1" ), MINOR ).toString() ); } } diff --git a/src/test/java/org/codehaus/mojo/versions/ordering/NumericVersionComparatorTest.java b/src/test/java/org/codehaus/mojo/versions/ordering/NumericVersionComparatorTest.java index 58fb88951..817468f86 100644 --- a/src/test/java/org/codehaus/mojo/versions/ordering/NumericVersionComparatorTest.java +++ b/src/test/java/org/codehaus/mojo/versions/ordering/NumericVersionComparatorTest.java @@ -105,22 +105,22 @@ public void testSegmentCounting() @Test public void testSegmentIncrementing() throws Exception { - assertEquals( new DefaultArtifactVersion( "6" ).toString(), + assertEquals( new DefaultArtifactVersion( "6-SNAPSHOT" ).toString(), instance.incrementSegment( new DefaultArtifactVersion( "5" ), MAJOR ).toString() ); - assertEquals( new DefaultArtifactVersion( "6.0" ).toString(), + assertEquals( new DefaultArtifactVersion( "6.0-SNAPSHOT" ).toString(), instance.incrementSegment( new DefaultArtifactVersion( "5.0" ), MAJOR ).toString() ); - assertEquals( new DefaultArtifactVersion( "5.1" ).toString(), + assertEquals( new DefaultArtifactVersion( "5.1-SNAPSHOT" ).toString(), instance.incrementSegment( new DefaultArtifactVersion( "5.0" ), MINOR ).toString() ); - assertEquals( new DefaultArtifactVersion( "5.1.0" ).toString(), + assertEquals( new DefaultArtifactVersion( "5.1.0-SNAPSHOT" ).toString(), instance.incrementSegment( new DefaultArtifactVersion( "5.0.1" ), MINOR ).toString() ); - assertEquals( new DefaultArtifactVersion( "5.beta.0" ).toString(), + assertEquals( new DefaultArtifactVersion( "5.beta.0-SNAPSHOT" ).toString(), instance.incrementSegment( new DefaultArtifactVersion( "5.alpha.1" ), MINOR ).toString() ); - assertEquals( new DefaultArtifactVersion( "5.alpha-2.0" ).toString(), + assertEquals( new DefaultArtifactVersion( "5.alpha-2.0-SNAPSHOT" ).toString(), instance.incrementSegment( new DefaultArtifactVersion( "5.alpha-1.1" ), MINOR ).toString() ); - assertEquals( new DefaultArtifactVersion( "5.alpha-1.2" ).toString(), + assertEquals( new DefaultArtifactVersion( "5.alpha-1.2-SNAPSHOT" ).toString(), instance.incrementSegment( new DefaultArtifactVersion( "5.alpha-1.1" ), INCREMENTAL ) .toString() ); - assertEquals( new DefaultArtifactVersion( "5.beta.0" ).toString(), + assertEquals( new DefaultArtifactVersion( "5.beta.0-SNAPSHOT" ).toString(), instance.incrementSegment( new DefaultArtifactVersion( "5.alpha-wins.1" ), MINOR ).toString() ); } }