From 404b80efde56dbd6f47ceb30c35e9fafe06b1f87 Mon Sep 17 00:00:00 2001 From: Benoit Lacelle Date: Sat, 8 Apr 2023 13:38:33 +0400 Subject: [PATCH] Accept -SNAPSHOT versions --- CHANGES.md | 1 + lib/src/main/java/com/diffplug/spotless/Jvm.java | 6 +++++- testlib/src/test/java/com/diffplug/spotless/JvmTest.java | 8 ++++---- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 8540a44851..ee53a0ac21 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -12,6 +12,7 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format ( ## [Unreleased] ### Changes * We are now opting in to Gradle's new stable configuration cache. ([#1591](https://github.com/diffplug/spotless/pull/1591)) +* `Jvm.Support` now accepts `-SNAPSHOT` versions, treated as the non`-SNAPSHOT`. ([#1583](https://github.com/diffplug/spotless/issues/1583)) ## [2.36.0] - 2023-02-27 ### Added diff --git a/lib/src/main/java/com/diffplug/spotless/Jvm.java b/lib/src/main/java/com/diffplug/spotless/Jvm.java index c9c71b72df..077dbb1366 100644 --- a/lib/src/main/java/com/diffplug/spotless/Jvm.java +++ b/lib/src/main/java/com/diffplug/spotless/Jvm.java @@ -243,7 +243,11 @@ public int compare(V version0, V version1) { private static int[] convert(V versionObject) { try { - return Arrays.asList(versionObject.toString().split("\\.")).stream().mapToInt(Integer::parseInt).toArray(); + String versionString = versionObject.toString(); + if (versionString.endsWith("-SNAPSHOT")) { + versionString = versionString.substring(0, versionString.length() - "-SNAPSHOT".length()); + } + return Arrays.asList(versionString.split("\\.")).stream().mapToInt(Integer::parseInt).toArray(); } catch (Exception e) { throw new IllegalArgumentException(String.format("Not a semantic version: %s", versionObject), e); } diff --git a/testlib/src/test/java/com/diffplug/spotless/JvmTest.java b/testlib/src/test/java/com/diffplug/spotless/JvmTest.java index ca7fb71305..1c966c51f4 100644 --- a/testlib/src/test/java/com/diffplug/spotless/JvmTest.java +++ b/testlib/src/test/java/com/diffplug/spotless/JvmTest.java @@ -93,7 +93,7 @@ void supportListsMinimumJvmIfOnlyHigherJvmSupported() { assertNull(testSupport.getRecommendedFormatterVersion(), "No formatter version is supported"); - for (String fmtVersion : Arrays.asList("1.2", "1.2.3")) { + for (String fmtVersion : Arrays.asList("1.2", "1.2.3", "1.2-SNAPSHOT", "1.2.3-SNAPSHOT")) { String proposal = assertThrows(Exception.class, () -> { testSupport.assertFormatterSupported(fmtVersion); }).getMessage(); @@ -111,7 +111,7 @@ void supportListsMinimumJvmIfOnlyHigherJvmSupported() { assertThat(proposal).contains(String.format("try %s alternatives", TEST_NAME)); } - for (String fmtVersion : Arrays.asList("1.2.4", "2")) { + for (String fmtVersion : Arrays.asList("1.2.4", "2", "1.2.5-SNAPSHOT")) { String proposal = assertThrows(Exception.class, () -> { testSupport.assertFormatterSupported(fmtVersion); }).getMessage(); @@ -132,7 +132,7 @@ void supportProposesFormatterUpgrade() { testSupport.add(Jvm.version() - 2, "1"); testSupport.add(requiredJvm, "2"); testSupport.add(Jvm.version() + 1, "3"); - for (String fmtVersion : Arrays.asList("0", "1", "1.9")) { + for (String fmtVersion : Arrays.asList("0", "1", "1.9", "1.9-SNAPSHOT")) { testSupport.assertFormatterSupported(fmtVersion); String proposal = assertThrows(Exception.class, () -> { @@ -168,7 +168,7 @@ void supportProposesJvmUpgrade() { @Test void supportAllowsExperimentalVersions() { testSupport.add(Jvm.version(), "1.0"); - for (String fmtVersion : Arrays.asList("1", "2.0")) { + for (String fmtVersion : Arrays.asList("1", "2.0", "1.1-SNAPSHOT", "2.0-SNAPSHOT")) { testSupport.assertFormatterSupported(fmtVersion); Exception testException = new Exception("Some test exception");