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");