Skip to content

Commit 8e3a5f4

Browse files
author
Vincent Potucek
committed
removeWildcardImports: throw new AssertionError instead of removing
1 parent a8b5172 commit 8e3a5f4

File tree

6 files changed

+47
-4
lines changed

6 files changed

+47
-4
lines changed

lib/src/main/java/com/diffplug/spotless/generic/ReplaceRegexStep.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2016 DiffPlug
2+
* Copyright 2016-2025 DiffPlug
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -35,6 +35,15 @@ public static FormatterStep create(String name, String regex, String replacement
3535
State::toFormatter);
3636
}
3737

38+
public static FormatterStep find(String name, String regex, String error) {
39+
Objects.requireNonNull(name, "name");
40+
Objects.requireNonNull(regex, "regex");
41+
Objects.requireNonNull(error, "error");
42+
return FormatterStep.createLazy(name,
43+
() -> new State(Pattern.compile(regex, Pattern.UNIX_LINES | Pattern.MULTILINE), error),
44+
State::toFormatFinder);
45+
}
46+
3847
private static final class State implements Serializable {
3948
private static final long serialVersionUID = 1L;
4049

@@ -49,5 +58,14 @@ private static final class State implements Serializable {
4958
FormatterFunc toFormatter() {
5059
return raw -> regex.matcher(raw).replaceAll(replacement);
5160
}
61+
62+
FormatterFunc toFormatFinder() {
63+
return raw -> {
64+
if (regex.matcher(raw).find()) {
65+
throw new IllegalArgumentException(replacement);
66+
}
67+
return raw;
68+
};
69+
}
5270
}
5371
}

lib/src/main/java/com/diffplug/spotless/java/RemoveWildcardImportsStep.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ private RemoveWildcardImportsStep() {}
2424

2525
public static FormatterStep create() {
2626
// Matches lines like 'import foo.*;' or 'import static foo.*;'.
27-
return ReplaceRegexStep.create(
27+
return ReplaceRegexStep.find(
2828
"removeWildcardImports",
2929
"(?m)^import\\s+(?:static\\s+)?[^;\\n]*\\*;\\R?",
30-
"");
30+
"Do not use wildcard imports. 'spotlessApply' cannot resolve this issue.");
3131
}
3232
}

plugin-maven/src/test/java/com/diffplug/spotless/maven/java/RemoveWildcardImportsStepTest.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
*/
1616
package com.diffplug.spotless.maven.java;
1717

18+
import static org.assertj.core.api.Assertions.assertThat;
19+
1820
import org.junit.jupiter.api.Test;
1921

2022
import com.diffplug.spotless.maven.MavenIntegrationHarness;
@@ -27,7 +29,17 @@ void testRemoveWildcardImports() throws Exception {
2729

2830
String path = "src/main/java/test.java";
2931
setFile(path).toResource("java/removewildcardimports/JavaCodeWildcardsUnformatted.test");
30-
mavenRunner().withArguments("spotless:apply").runNoError();
3132
assertFile(path).sameAsResource("java/removewildcardimports/JavaCodeWildcardsFormatted.test");
33+
assertThat(mavenRunner().withArguments("spotless:apply").runHasError().stdOutUtf8()).contains("Do not use wildcard imports. 'spotlessApply' cannot resolve this issue.");
34+
}
35+
36+
@Test
37+
void testRemoveWildcardImportsNoError() throws Exception {
38+
writePomWithJavaSteps("<removeWildcardImports/>");
39+
40+
String path = "src/main/java/test.java";
41+
setFile(path).toResource("java/removewildcardimports/JavaCodeEmptyWildcardsUnformatted.test");
42+
assertFile(path).sameAsResource("java/removewildcardimports/JavaCodeEmptyWildcardsFormatted.test");
43+
mavenRunner().withArguments("spotless:apply").runNoError();
3244
}
3345
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import java.util.List;
2+
import mylib.Helper;
3+
4+
public class Test {}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import java.util.List;
2+
import mylib.Helper;
3+
4+
public class Test {}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1+
import java.util.*;
2+
import static java.util.Collections.*;
13
import java.util.List;
24
import mylib.Helper;
5+
import io.quarkus.maven.dependency.*;
6+
import static io.quarkus.vertx.web.Route.HttpMethod.*;
7+
import static org.springframework.web.reactive.function.BodyInserters.*;
38

49
public class Test {}

0 commit comments

Comments
 (0)