[ 
https://issues.apache.org/jira/browse/MNG-7700?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17693640#comment-17693640
 ] 

ASF GitHub Bot commented on MNG-7700:
-------------------------------------

elharo commented on code in PR #1014:
URL: https://github.com/apache/maven/pull/1014#discussion_r1118082057


##########
maven-artifact/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java:
##########
@@ -209,6 +208,26 @@ public void testVersionComparing() {
         checkVersionsOrder("2.0.1-xyz", "2.0.1-123");
     }
 
+    @Test
+    public void testLeadingZeroes() {
+        checkVersionsOrder("0.7", "2");
+        checkVersionsOrder("0.2", "1.0.7");
+    }
+
+    @Test
+    public void testGetCanonical() {
+        // MNG-7700
+        newComparable("0.x");
+        newComparable("0-x");
+        newComparable("0.rc");
+        newComparable("0-1");
+
+        ComparableVersion version = new ComparableVersion("0.x");
+        assertEquals("x", version.getCanonical());

Review Comment:
   I'm testing that the input produces the output. That is useful. There's a 
case to be made that the current behavior is wrong, which can be discussed on 
the bug. If we decide it is and change it, then having this test here will make 
it clear what changed when.
   
   The test you suggest is also good. However, it's (not so obviously) 
performed in line 220 by `newComparable("0.x")` which includes an assert to 
check that.





> Improper canonicalization of versions
> -------------------------------------
>
>                 Key: MNG-7700
>                 URL: https://issues.apache.org/jira/browse/MNG-7700
>             Project: Maven
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 3.8.7, 3.9.0
>            Reporter: David M. Lloyd
>            Assignee: Elliotte Rusty Harold
>            Priority: Minor
>             Fix For: 3.8.x-candidate, 3.9.1-candidate, waiting-for-feedback
>
>
> The canonicalization logic for versions is incorrect.
> Using the method {{ComparableVersion#getCanonical}} as in {{new 
> ComparableVersion(input).getCanonical()}}, the following results can be 
> observed:
> ||Input||3.8.6 Output||3.8.6 OK?||3.9.0 Output||3.9.0 OK?||
> |{{1}}|{{1}}|yes|{{1}}|yes|
> |{{0.1}}|{{0.1}}|yes|{{0.1}}|yes|
> |{{0-1}}|{{1}}|no|{{1}}|no|
> |{{1.x}}|{{1.x}}|yes|{{1-x}}|maybe*|
> |{{1-x}}|{{1-x}}|yes|{{1-x}}|yes|
> |{{0.x}}|{{0.x}}|yes|{{x}}|no|
> |{{0-x}}|{{x}}|no|{{x}}|no|
> |{{x}}|{{x}}|yes|{{x}}|yes|
> |{{0.rc}}|{{0.rc}}|yes|{{rc}}|no|
> The "OK?" columns indicate whether parsing the canonical version string will 
> yield a {{ComparableVersion}} instance that is {{equal}} to one constructed 
> from the original input, i.e. it's internally consistent.
> The "maybe*" item indicates that starting with 3.9.0, version `1.x` is now 
> considered to be equal to `1-x`. I'm not sure if this is a bug or not, or was 
> intentional or not, but it is definitely a change.
> These canonicalizations seem to have gotten less consistent in the move to 
> 3.9.0.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to