This is an automated email from the ASF dual-hosted git repository. elharo pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/master by this push: new 0d6ed20cfa [MNGSITE-441] Characterization tests for case insensitivity in version strings (#2114) 0d6ed20cfa is described below commit 0d6ed20cfa921865526ebf29527cbf3aa0d9ee47 Author: Elliotte Rusty Harold <elh...@users.noreply.github.com> AuthorDate: Sun Feb 16 16:52:32 2025 +0000 [MNGSITE-441] Characterization tests for case insensitivity in version strings (#2114) --- .../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");