Ross Goldberg created MNG-6420:
----------------------------------

             Summary: ComparableVersion incorrectly parses certain version 
strings
                 Key: MNG-6420
                 URL: https://issues.apache.org/jira/browse/MNG-6420
             Project: Maven
          Issue Type: Bug
          Components: core
    Affects Versions: 3.5.3
            Reporter: Ross Goldberg
         Attachments: MavenVersionCoordinate.java

For certain version strings, ComparableVersion doesn't follow the Maven version 
order spec (https://maven.apache.org/pom.html#Version_Order_Specification).

To improve the code & fix the following bugs, I completely rewrote the version 
parser (using Java 10 & Google Guava 25.1).  It is attached & passes all of the 
tests from ComparableVersionTest.

Bug 1:
 
java -jar /usr/local/Cellar/maven/3.5.3/libexec/lib/maven-artifact-3.5.3.jar 
1-0.3 1
 
Outputs:
 
1. 1-0.3 == 1-0.3
   1-0.3 == 1
2. 1 == 1
 
This probleem stems from:
 
[https://github.com/apache/maven/blob/b8c06e61ab73cd9e25a5b2c93d9e5077b2196751/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java#L295-L296]
 
 
 
Bug 2:
 
java -jar /usr/local/Cellar/maven/3.5.3/libexec/lib/maven-artifact-3.5.3.jar 
1-0-2 1-0.1
 
1. 1-0-2 == 1-2
   1-0-2 < 1-0.1
2. 1-0.1 == 1-0.1
 
This problem stems from retaining ListItems that, after normalization, have no 
children other than the subsequent ListItem.  Removing the unnecessary ListItem 
should fix this (i.e. remove the extraneous ListItem (named extraneous) from 
its parent ListItem (named parent), then add the only child of extraneous to 
parent).



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to