Skip to content

Commit 0a59b58

Browse files
committed
[MNG-7644] Fix version comparison ( .RC1 < -RC2 )
1 parent 29f96a3 commit 0a59b58

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -570,6 +570,13 @@ public final void parseVersion(String version) {
570570
stack.push(list);
571571
} else if (Character.isDigit(c)) {
572572
if (!isDigit && i > startIndex) {
573+
// 1.0.0.RC1 < 1.0.0-RC2
574+
// treat .RC as -RC
575+
if (!list.isEmpty()) {
576+
list.add(list = new ListItem());
577+
stack.push(list);
578+
}
579+
573580
list.add(new StringItem(version.substring(startIndex, i), true));
574581
startIndex = i;
575582

@@ -592,6 +599,13 @@ public final void parseVersion(String version) {
592599
}
593600

594601
if (version.length() > startIndex) {
602+
// 1.0.0.RC1 < 1.0.0-RC2
603+
// treat .RC as -RC
604+
if (!isDigit && !list.isEmpty()) {
605+
list.add(list = new ListItem());
606+
stack.push(list);
607+
}
608+
595609
list.add(parseItem(isDigit, version.substring(startIndex)));
596610
}
597611

maven-artifact/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,4 +346,13 @@ public void testReuse() {
346346

347347
assertEquals(c1, c2, "reused instance should be equivalent to new instance");
348348
}
349+
350+
/**
351+
* Test <a href="https://issues.apache.org/jira/browse/MNG-7644">MNG-7644</a> edge cases
352+
* 1.0.0.RC1 < 1.0.0-RC2
353+
*/
354+
@Test
355+
public void testMng7644() {
356+
checkVersionsOrder("1.0.0.RC1", "1.0.0-RC2");
357+
}
349358
}

0 commit comments

Comments
 (0)