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

elharo pushed a commit to branch caps
in repository https://gitbox.apache.org/repos/asf/maven.git

commit 08b4701a88f3de8f309fa03da4c54c97fda33684
Author: Elliotte Rusty Harold <elh...@ibiblio.org>
AuthorDate: Sun Feb 16 08:11:19 2025 -0500

    [MNGSITE-441] Characterization tests for case insensitivity in version 
strings
---
 .../artifact/versioning/ComparableVersionTest.java | 28 ++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git 
a/compat/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java
 
b/compat/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java
index 219d760bab..271eb28dd0 100644
--- 
a/compat/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java
+++ 
b/compat/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java
@@ -252,6 +252,34 @@ void testGetCanonical() {
         assertEquals("0.2", version2.getCanonical());
     }
 
+    @Test
+    void testLexicographicASCIISortOrder() { // Required by Semver 1.0
+        ComparableVersion lower = new ComparableVersion("1.0.0-alpha1");
+        ComparableVersion upper = new ComparableVersion("1.0.0-ALPHA1");
+        // Lower case is equal to upper case. This is *NOT* what Semver 1.0
+        // specifies. Here we are explicitly deviating from Semver 1.0.
+        assertTrue(upper.compareTo(lower) == 0, "expected 1.0.0-ALPHA1 == 
1.0.0-alpha1");
+        assertTrue(lower.compareTo(upper) == 0, "expected 1.0.0-alpha1 == 
1.0.0-ALPHA1");
+    }
+
+    @Test
+    void testCompareLowerCaseToUpperCaseASCII() {
+        ComparableVersion lower = new ComparableVersion("1.a");
+        ComparableVersion upper = new ComparableVersion("1.A");
+        // Lower case is equal to upper case
+        assertTrue(upper.compareTo(lower) == 0, "expected 1.A == 1.a");
+        assertTrue(lower.compareTo(upper) == 0, "expected 1.a == 1.A");
+    }
+
+    @Test
+    void testCompareLowerCaseToUpperCaseNonASCII() {
+        ComparableVersion lower = new ComparableVersion("1.é");
+        ComparableVersion upper = new ComparableVersion("1.É");
+        // Lower case is equal to upper case
+        assertTrue(upper.compareTo(lower) == 0, "expected 1.É < 1.é");
+        assertTrue(lower.compareTo(upper) == 0, "expected 1.é > 1.É");
+    }
+
     @Test
     void testCompareDigitToLetter() {
         ComparableVersion seven = new ComparableVersion("7");

Reply via email to