From a3c5edb9eaf8ac806f84b521824d7b299bbd19d5 Mon Sep 17 00:00:00 2001 From: Benoit Lacelle Date: Sun, 12 Feb 2023 20:51:31 +0400 Subject: [PATCH 1/4] Update Cleanthat to 2.2. Tests workaround lack of OptionalNotEmpty --- .../spotless/java/CleanthatJavaStep.java | 5 ++--- .../java/CleanthatJavaRefactorerTest.java | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/lib/src/main/java/com/diffplug/spotless/java/CleanthatJavaStep.java b/lib/src/main/java/com/diffplug/spotless/java/CleanthatJavaStep.java index b5cc5452d1..2ef68f4f85 100644 --- a/lib/src/main/java/com/diffplug/spotless/java/CleanthatJavaStep.java +++ b/lib/src/main/java/com/diffplug/spotless/java/CleanthatJavaStep.java @@ -40,7 +40,7 @@ public final class CleanthatJavaStep { private static final String MAVEN_COORDINATE = "io.github.solven-eu.cleanthat:java"; // CleanThat changelog is available at https://github.com/solven-eu/cleanthat/blob/master/CHANGES.MD - private static final Jvm.Support JVM_SUPPORT = Jvm. support(NAME).add(11, "2.1"); + private static final Jvm.Support JVM_SUPPORT = Jvm. support(NAME).add(11, "2.2"); // prevent direct instantiation private CleanthatJavaStep() {} @@ -71,8 +71,7 @@ public static List defaultExcludedMutators() { * @return */ public static List defaultMutators() { - // see JavaRefactorerProperties.WILDCARD - return List.of("*"); + return List.of("eu.solven.cleanthat.engine.java.refactorer.mutators.composite.SafeAndConsensualMutators"); } /** Creates a step which apply selected CleanThat mutators. */ diff --git a/plugin-maven/src/test/java/com/diffplug/spotless/maven/java/CleanthatJavaRefactorerTest.java b/plugin-maven/src/test/java/com/diffplug/spotless/maven/java/CleanthatJavaRefactorerTest.java index edb7a69cd5..a32ac337e4 100644 --- a/plugin-maven/src/test/java/com/diffplug/spotless/maven/java/CleanthatJavaRefactorerTest.java +++ b/plugin-maven/src/test/java/com/diffplug/spotless/maven/java/CleanthatJavaRefactorerTest.java @@ -29,6 +29,9 @@ class CleanthatJavaRefactorerTest extends MavenIntegrationHarness { void testLiteralsFirstInComparisons() throws Exception { writePomWithJavaSteps( "", + " ", + " LiteralsFirstInComparisons", + " ", ""); runTest("LiteralsFirstInComparisons.dirty.java", "LiteralsFirstInComparisons.clean.java"); @@ -36,8 +39,13 @@ void testLiteralsFirstInComparisons() throws Exception { @Test void testMultipleMutators_defaultIsJdk7() throws Exception { + // OptionalNotEmpty will be excluded as it is not compatible with JDK7 writePomWithJavaSteps( "", + " ", + " LiteralsFirstInComparisons", + " OptionalNotEmpty", + " ", ""); runTest("MultipleMutators.dirty.java", "MultipleMutators.clean.onlyLiteralsFirst.java"); @@ -47,7 +55,11 @@ void testMultipleMutators_defaultIsJdk7() throws Exception { void testMultipleMutators_Jdk11IntroducedOptionalisPresent() throws Exception { writePomWithJavaSteps( "", - "11", + " 11", + " ", + " LiteralsFirstInComparisons", + " OptionalNotEmpty", + " ", ""); runTest("MultipleMutators.dirty.java", "MultipleMutators.clean.java"); @@ -57,6 +69,10 @@ void testMultipleMutators_Jdk11IntroducedOptionalisPresent() throws Exception { void testExcludeOptionalNotEmpty() throws Exception { writePomWithJavaSteps( "", + " ", + " LiteralsFirstInComparisons", + " OptionalNotEmpty", + " ", " ", " OptionalNotEmpty", " ", From fec3fe58cf27740a69c66c771f97c3ec3128ce5d Mon Sep 17 00:00:00 2001 From: Benoit Lacelle Date: Sun, 12 Feb 2023 22:17:43 +0400 Subject: [PATCH 2/4] Impact changelog --- plugin-gradle/CHANGES.md | 1 + plugin-maven/CHANGES.md | 2 ++ 2 files changed, 3 insertions(+) diff --git a/plugin-gradle/CHANGES.md b/plugin-gradle/CHANGES.md index 087c1ade89..afba5abdc7 100644 --- a/plugin-gradle/CHANGES.md +++ b/plugin-gradle/CHANGES.md @@ -3,6 +3,7 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format (starting after version `3.27.0`). ## [Unreleased] +* Bump default `cleanthat` version to latest `2.1` -> `2.2` ([#1569](https://github.com/diffplug/spotless/pull/1569)) ## [6.15.0] - 2023-02-10 ### Added diff --git a/plugin-maven/CHANGES.md b/plugin-maven/CHANGES.md index 74c6a0299a..8d4c67a9b6 100644 --- a/plugin-maven/CHANGES.md +++ b/plugin-maven/CHANGES.md @@ -3,6 +3,8 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format (starting after version `1.27.0`). ## [Unreleased] +### Changes +* Bump default `cleanthat` version to latest `2.1` -> `2.2` ([#1569](https://github.com/diffplug/spotless/pull/1569)) ## [2.33.0] - 2023-02-10 ### Added From b9f274b71c41c9d0b66d5d5a58f8cbaf31bbbce6 Mon Sep 17 00:00:00 2001 From: Benoit Lacelle Date: Sun, 12 Feb 2023 23:14:58 +0400 Subject: [PATCH 3/4] Fix gradle integration --- .../diffplug/gradle/spotless/JavaExtension.java | 15 +++++++++++---- .../spotless/CleanthatJavaIntegrationTest.java | 4 +++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/JavaExtension.java b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/JavaExtension.java index 6e9f6de005..7ab94ba7e4 100644 --- a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/JavaExtension.java +++ b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/JavaExtension.java @@ -19,6 +19,7 @@ import java.io.File; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.Objects; @@ -283,9 +284,9 @@ public class CleanthatJavaConfig { private String sourceJdk = CleanthatJavaStep.defaultSourceJdk(); - private List mutators = CleanthatJavaStep.defaultMutators(); + private List mutators = new ArrayList<>(CleanthatJavaStep.defaultMutators()); - private List excludedMutators = CleanthatJavaStep.defaultExcludedMutators(); + private List excludedMutators = new ArrayList<>(CleanthatJavaStep.defaultExcludedMutators()); CleanthatJavaConfig() { addStep(createStep()); @@ -319,14 +320,20 @@ public CleanthatJavaConfig clearMutators() { return this; } - // The fully qualified name of a class implementing eu.solven.cleanthat.engine.java.refactorer.meta.IMutator - // or '*' to include all default mutators + // An id of a mutator (see IMutator.getIds()) or + // tThe fully qualified name of a class implementing eu.solven.cleanthat.engine.java.refactorer.meta.IMutator public CleanthatJavaConfig addMutator(String mutator) { this.mutators.add(mutator); replaceStep(createStep()); return this; } + public CleanthatJavaConfig addMutators(Collection mutators) { + this.mutators.addAll(mutators); + replaceStep(createStep()); + return this; + } + // useful to exclude a mutator amongst the default list of mutators public CleanthatJavaConfig excludeMutator(String mutator) { this.excludedMutators.add(mutator); diff --git a/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/CleanthatJavaIntegrationTest.java b/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/CleanthatJavaIntegrationTest.java index a754b963f2..e5024c835e 100644 --- a/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/CleanthatJavaIntegrationTest.java +++ b/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/CleanthatJavaIntegrationTest.java @@ -31,7 +31,9 @@ void integration() throws IOException { "spotless {", " java {", " target file('test.java')", - " cleanthat().sourceCompatibility('11')", + " cleanthat()" + + " .sourceCompatibility('11')", + " .addMutators(['LiteralsFirstInComparisons', 'OptionalNotEmpty'])", " }", "}"); From bf9b811a4b2384dfc478124b084f2fd6706792fd Mon Sep 17 00:00:00 2001 From: Benoit Lacelle Date: Sun, 12 Feb 2023 23:18:47 +0400 Subject: [PATCH 4/4] Fix style --- .../diffplug/gradle/spotless/CleanthatJavaIntegrationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/CleanthatJavaIntegrationTest.java b/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/CleanthatJavaIntegrationTest.java index e5024c835e..581bfe89b2 100644 --- a/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/CleanthatJavaIntegrationTest.java +++ b/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/CleanthatJavaIntegrationTest.java @@ -31,7 +31,7 @@ void integration() throws IOException { "spotless {", " java {", " target file('test.java')", - " cleanthat()" + + " cleanthat()", " .sourceCompatibility('11')", " .addMutators(['LiteralsFirstInComparisons', 'OptionalNotEmpty'])", " }",