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

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

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


##########
maven-artifact/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java:
##########
@@ -147,10 +154,10 @@ void testVersionsEqual() {
         checkVersionsEqual("1.0.0x", "1-x");
 
         // aliases
-        checkVersionsEqual("1ga", "1");
-        checkVersionsEqual("1release", "1");
-        checkVersionsEqual("1final", "1");
-        checkVersionsEqual("1cr", "1rc");
+        checkVersionsEqualOrder("1ga", "1");
+        checkVersionsEqualOrder("1release", "1");
+        checkVersionsEqualOrder("1final", "1");

Review Comment:
   OK, I think I understand you now. The behavior does change. The use of 
checkVersonsEquals and checkVersionsEqualOrder hides this though. Consider 
adding a test that the versions are no equalk. 



##########
maven-artifact/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java:
##########
@@ -101,6 +101,13 @@ private void checkVersionsEqual(String v1, String v2) {
         assertEquals(c2, c1, "expected " + v2 + ".equals( " + v1 + " )");
     }
 
+    private void checkVersionsEqualOrder(String v1, String v2) {

Review Comment:
   Yes, what's unreadable is that I don't know which is greater and which is 
lesser. Or if it's doing something else then I am being confused by the name. 
Perhaps a clearer name would help, but it'ds also OK to just inline it. 



##########
maven-artifact/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java:
##########
@@ -383,4 +390,15 @@ void testMng7644() {
             checkVersionsEqual("2.0." + x, "2.0.0." + x); // previously 
ordered, now equals
         }
     }
+
+    @Test
+    public void testMng7714() {
+        String f = "1.0.final-redhat";
+        String sp1 = "1.0-sp1-redhat";
+        String sp2 = "1.0-sp-1-redhat";
+        String sp3 = "1.0-sp.1-redhat";
+        checkVersionsOrder(f, sp1);

Review Comment:
   only new tests please. Do not change existing tests unless the behavior has 
changed.





> sp < final
> ----------
>
>                 Key: MNG-7714
>                 URL: https://issues.apache.org/jira/browse/MNG-7714
>             Project: Maven
>          Issue Type: Bug
>            Reporter: Elliotte Rusty Harold
>            Assignee: Elliotte Rusty Harold
>            Priority: Major
>             Fix For: 4.0.0-alpha-6
>
>
> Ported from a comment on https://issues.apache.org/jira/browse/MNG-7701
> The claim is that sp < final, which if true is incorrect according to spec. 
> It is easy to demonstrate that this is not fixed and also not in line with 
> the spec, with just this one important example (yes this does break for us):
> $ jbang org.apache.maven:maven-artifact:3.8.6 1.0.final-redhat-0001 
> 1.0.sp1-redhat-0001
> Display parameters as parsed by Maven (in canonical form and as a list of 
> tokens) and comparison result:
> 1. 1.0.final-redhat-0001 -> 1-redhat-1; tokens: [1, [redhat, [1]]]
>    1.0.final-redhat-0001 < 1.0.sp1-redhat-0001
> 2. 1.0.sp1-redhat-0001 -> 1.0.sp-1-redhat-1; tokens: [1, 0, sp, [1, [redhat, 
> [1]]]]
> versus
> $ jbang org.apache.maven:maven-artifact:3.8.7 1.0.final-redhat-0001 
> 1.0.sp1-redhat-0001
> Display parameters as parsed by Maven (in canonical form and as a list of 
> tokens) and comparison result:
> 1. 1.0.final-redhat-0001 -> 1-redhat-1; tokens: [1, [redhat, [1]]]
>    1.0.final-redhat-0001 > 1.0.sp1-redhat-0001
> 2. 1.0.sp1-redhat-0001 -> 1-sp-1-redhat-1; tokens: [1, [sp, [1, [redhat, 
> [1]]]]]
> As you can see, our `sp` release is now ordered after our `final` release 
> despite this clear text in the "spec":
>     Non-numeric tokens ("qualifiers") have the alphabetical order, except for 
> the following tokens which come first in this order: "alpha" < "beta" < 
> "milestone" < "rc" = "cr" < "snapshot" < "" = "final" = "ga" < "sp"
> It's clear that this tokenization isn't really correct by any reasonable 
> measurement, and breaking large amounts of (our) existing artifacts in the 
> wild is definitely not OK.



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

Reply via email to