This is an automated email from the ASF dual-hosted git repository.

jdaugherty pushed a commit to branch 7.0.x
in repository https://gitbox.apache.org/repos/asf/grails-core.git


The following commit(s) were added to refs/heads/7.0.x by this push:
     new 2613e646c0 fix: rework sorting order of GrailsVersion to ensure the 
highest version comes first
2613e646c0 is described below

commit 2613e646c00c73dfb4b447f65671e8f07f917299
Author: James Daugherty <[email protected]>
AuthorDate: Mon Aug 4 10:14:18 2025 -0400

    fix: rework sorting order of GrailsVersion to ensure the highest version 
comes first
---
 .../src/main/java/grails/init/GrailsVersion.java   | 16 ++---
 .../groovy/grails/init/GrailsVersionSpec.groovy    | 73 +++++++++++++++++-----
 2 files changed, 64 insertions(+), 25 deletions(-)

diff --git a/grails-wrapper/src/main/java/grails/init/GrailsVersion.java 
b/grails-wrapper/src/main/java/grails/init/GrailsVersion.java
index 2c21e9616d..fdea23c46b 100644
--- a/grails-wrapper/src/main/java/grails/init/GrailsVersion.java
+++ b/grails-wrapper/src/main/java/grails/init/GrailsVersion.java
@@ -107,30 +107,30 @@ public class GrailsVersion implements 
Comparable<GrailsVersion> {
             return 0;
         }
 
-        if (releaseType != o.releaseType) {
-            return o.releaseType.ordinal() - releaseType.ordinal();
-        }
-
-        int majorCompare = Integer.compare(this.major, o.major);
+        int majorCompare = Integer.compare(o.major, this.major);
         if (majorCompare != 0) {
             return majorCompare;
         }
 
-        int minorCompare = Integer.compare(this.minor, o.minor);
+        int minorCompare = Integer.compare(o.minor, this.minor);
         if (minorCompare != 0) {
             return minorCompare;
         }
 
-        int patchCompare = Integer.compare(this.patch, o.patch);
+        int patchCompare = Integer.compare(o.patch, this.patch);
         if (patchCompare != 0) {
             return patchCompare;
         }
 
+        if (releaseType != o.releaseType) {
+            return releaseType.ordinal() - o.releaseType.ordinal();
+        }
+
         if (candidate == null) {
             return 0;
         }
 
-        return Integer.compare(this.candidate, o.candidate);
+        return Integer.compare(o.candidate, this.candidate);
     }
 
     @Override
diff --git 
a/grails-wrapper/src/test/groovy/grails/init/GrailsVersionSpec.groovy 
b/grails-wrapper/src/test/groovy/grails/init/GrailsVersionSpec.groovy
index 8a8991e225..8ca237656b 100644
--- a/grails-wrapper/src/test/groovy/grails/init/GrailsVersionSpec.groovy
+++ b/grails-wrapper/src/test/groovy/grails/init/GrailsVersionSpec.groovy
@@ -49,27 +49,66 @@ class GrailsVersionSpec extends Specification {
 
     def "comparison checks"() {
         expect:
-        new GrailsVersion('7.0.0') < new GrailsVersion('7.0.1')
-        new GrailsVersion('7.0.1') > new GrailsVersion('7.0.0')
-        new GrailsVersion('7.0.0') < new GrailsVersion('7.1.0')
-        new GrailsVersion('8.0.0') > new GrailsVersion('7.0.0')
-        new GrailsVersion('7.0.0') > new GrailsVersion('7.0.0-SNAPSHOT')
-        new GrailsVersion('7.0.0') > new GrailsVersion('7.0.0-RC1')
-        new GrailsVersion('7.0.0') > new GrailsVersion('7.0.0-M1')
-        new GrailsVersion('7.0.0-RC1') > new GrailsVersion('7.0.0-M1')
-        new GrailsVersion('7.0.0-RC2') > new GrailsVersion('7.0.0-RC1')
-        new GrailsVersion('7.0.0-RC1') > new GrailsVersion('7.0.0-SNAPSHOT')
-        new GrailsVersion('7.0.0-M2') > new GrailsVersion('7.0.0-M1')
-        new GrailsVersion('7.0.0-M1') > new GrailsVersion('7.0.0-SNAPSHOT')
+        new GrailsVersion('7.0.0') > new GrailsVersion('7.0.1')
+        new GrailsVersion('7.0.1') < new GrailsVersion('7.0.0')
+        new GrailsVersion('7.0.0') > new GrailsVersion('7.1.0')
+        new GrailsVersion('8.0.0') < new GrailsVersion('7.0.0')
+        new GrailsVersion('7.0.0') < new GrailsVersion('7.0.0-SNAPSHOT')
+        new GrailsVersion('7.0.0') < new GrailsVersion('7.0.0-RC1')
+        new GrailsVersion('7.0.0') < new GrailsVersion('7.0.0-M1')
+        new GrailsVersion('7.0.0-RC1') < new GrailsVersion('7.0.0-M1')
+        new GrailsVersion('7.0.0-RC2') < new GrailsVersion('7.0.0-RC1')
+        new GrailsVersion('7.0.0-RC1') < new GrailsVersion('7.0.0-SNAPSHOT')
+        new GrailsVersion('7.0.0-M2') < new GrailsVersion('7.0.0-M1')
+        new GrailsVersion('7.0.0-M1') < new GrailsVersion('7.0.0-SNAPSHOT')
     }
 
     def "sorted"() {
         expect:
-        [new GrailsVersion('7.0.0'), new GrailsVersion('7.0.0-RC1'), new 
GrailsVersion('7.0.0-M1'), new GrailsVersion('7.0.0-SNAPSHOT')].sort() == [
-            new GrailsVersion('7.0.0-SNAPSHOT'),
-            new GrailsVersion('7.0.0-M1'),
-            new GrailsVersion('7.0.0-RC1'),
-            new GrailsVersion('7.0.0')
+        [
+                new GrailsVersion('8.0.0'),
+                new GrailsVersion('8.0.0-RC1'),
+                new GrailsVersion('8.0.0-M1'),
+                new GrailsVersion('8.0.0-SNAPSHOT'),
+                new GrailsVersion('7.1.1'),
+                new GrailsVersion('7.1.1-RC1'),
+                new GrailsVersion('7.1.1-M1'),
+                new GrailsVersion('7.1.1-SNAPSHOT'),
+                new GrailsVersion('7.1.0'),
+                new GrailsVersion('7.1.0-RC1'),
+                new GrailsVersion('7.1.0-M1'),
+                new GrailsVersion('7.1.0-SNAPSHOT'),
+                new GrailsVersion('7.0.1'),
+                new GrailsVersion('7.0.1-RC1'),
+                new GrailsVersion('7.0.1-M1'),
+                new GrailsVersion('7.0.1-SNAPSHOT'),
+                new GrailsVersion('7.0.0'),
+                new GrailsVersion('7.0.0-RC1'),
+                new GrailsVersion('7.0.0-M1'),
+                new GrailsVersion('7.0.0-SNAPSHOT'),
         ]
+        ==
+        [
+                new GrailsVersion('7.0.0'),
+                new GrailsVersion('7.0.0-RC1'),
+                new GrailsVersion('7.0.0-M1'),
+                new GrailsVersion('7.0.0-SNAPSHOT'),
+                new GrailsVersion('7.1.1'),
+                new GrailsVersion('7.1.1-RC1'),
+                new GrailsVersion('7.1.1-M1'),
+                new GrailsVersion('7.1.1-SNAPSHOT'),
+                new GrailsVersion('8.0.0'),
+                new GrailsVersion('8.0.0-RC1'),
+                new GrailsVersion('7.1.0'),
+                new GrailsVersion('7.1.0-RC1'),
+                new GrailsVersion('7.1.0-M1'),
+                new GrailsVersion('7.1.0-SNAPSHOT'),
+                new GrailsVersion('8.0.0-M1'),
+                new GrailsVersion('8.0.0-SNAPSHOT'),
+                new GrailsVersion('7.0.1'),
+                new GrailsVersion('7.0.1-RC1'),
+                new GrailsVersion('7.0.1-M1'),
+                new GrailsVersion('7.0.1-SNAPSHOT'),
+        ].sort()
     }
 }

Reply via email to