From 193589d1933788c0d30b6769956f120b8bb896e1 Mon Sep 17 00:00:00 2001 From: Rick Ossendrijver Date: Sun, 14 Nov 2021 14:26:17 +0100 Subject: [PATCH] Require static import of `SpringBootTest.WebEnvironment` constants (#19) --- error-prone-contrib/pom.xml | 5 +++++ .../bugpatterns/StaticImportCheck.java | 1 + .../bugpatterns/StaticImportCheckTest.java | 18 ++++++++++++++++++ pom.xml | 5 +++++ 4 files changed, 29 insertions(+) diff --git a/error-prone-contrib/pom.xml b/error-prone-contrib/pom.xml index 8d71bb4b..56021df1 100644 --- a/error-prone-contrib/pom.xml +++ b/error-prone-contrib/pom.xml @@ -186,6 +186,11 @@ spring-webflux provided + + org.springframework.boot + spring-boot-test + provided + org.testng testng diff --git a/error-prone-contrib/src/main/java/tech/picnic/errorprone/bugpatterns/StaticImportCheck.java b/error-prone-contrib/src/main/java/tech/picnic/errorprone/bugpatterns/StaticImportCheck.java index b0efa3de..5a5eb982 100644 --- a/error-prone-contrib/src/main/java/tech/picnic/errorprone/bugpatterns/StaticImportCheck.java +++ b/error-prone-contrib/src/main/java/tech/picnic/errorprone/bugpatterns/StaticImportCheck.java @@ -80,6 +80,7 @@ public final class StaticImportCheck extends BugChecker implements MemberSelectT "org.mockito.Answers", "org.mockito.ArgumentMatchers", "org.mockito.Mockito", + "org.springframework.boot.test.context.SpringBootTest.WebEnvironment", "org.springframework.format.annotation.DateTimeFormat.ISO", "org.springframework.http.HttpHeaders", "org.springframework.http.HttpMethod", diff --git a/error-prone-contrib/src/test/java/tech/picnic/errorprone/bugpatterns/StaticImportCheckTest.java b/error-prone-contrib/src/test/java/tech/picnic/errorprone/bugpatterns/StaticImportCheckTest.java index ee6520dc..c17a4d43 100644 --- a/error-prone-contrib/src/test/java/tech/picnic/errorprone/bugpatterns/StaticImportCheckTest.java +++ b/error-prone-contrib/src/test/java/tech/picnic/errorprone/bugpatterns/StaticImportCheckTest.java @@ -27,6 +27,7 @@ public final class StaticImportCheckTest { "import static com.google.common.collect.ImmutableSet.toImmutableSet;", "import static java.nio.charset.StandardCharsets.UTF_8;", "import static java.util.function.Predicate.not;", + "import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT;", "", "import com.google.common.base.Predicates;", "import com.google.common.collect.ImmutableMap;", @@ -35,6 +36,8 @@ public final class StaticImportCheckTest { "import java.nio.charset.StandardCharsets;", "import java.util.Optional;", "import java.util.function.Predicate;", + "import org.springframework.boot.test.context.SpringBootTest;", + "import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;", "", "class A {", " void m() {", @@ -68,6 +71,10 @@ public final class StaticImportCheckTest { " Object o1 = StandardCharsets.UTF_8;", " Object o2 = UTF_8;", "", + " // BUG: Diagnostic contains:", + " Object e1 = WebEnvironment.RANDOM_PORT;", + " Object e2 = RANDOM_PORT;", + "", " Optional.empty();", " }", "", @@ -89,6 +96,8 @@ public final class StaticImportCheckTest { "import java.nio.charset.StandardCharsets;", "import org.springframework.format.annotation.DateTimeFormat;", "import org.springframework.format.annotation.DateTimeFormat.ISO;", + "import org.springframework.boot.test.context.SpringBootTest;", + "import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;", "", "class A {", " void m1() {", @@ -113,6 +122,9 @@ public final class StaticImportCheckTest { " @DateTimeFormat(iso = ISO.DATE) String date,", " @DateTimeFormat(iso = ISO.DATE_TIME) String dateTime,", " @DateTimeFormat(iso = ISO.TIME) String time) {}", + "", + " @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)", + " final class Test {}", "}") .addOutputLines( "out/A.java", @@ -120,6 +132,7 @@ public final class StaticImportCheckTest { "import static com.google.common.collect.ImmutableSet.toImmutableSet;", "import static java.nio.charset.StandardCharsets.UTF_8;", "import static java.util.function.Predicate.not;", + "import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT;", "import static org.springframework.format.annotation.DateTimeFormat.ISO.DATE;", "import static org.springframework.format.annotation.DateTimeFormat.ISO.DATE_TIME;", "import static org.springframework.format.annotation.DateTimeFormat.ISO.TIME;", @@ -128,6 +141,8 @@ public final class StaticImportCheckTest { "import com.google.common.collect.ImmutableMap;", "import com.google.common.collect.ImmutableSet;", "import java.nio.charset.StandardCharsets;", + "import org.springframework.boot.test.context.SpringBootTest;", + "import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;", "import org.springframework.format.annotation.DateTimeFormat;", "import org.springframework.format.annotation.DateTimeFormat.ISO;", "", @@ -154,6 +169,9 @@ public final class StaticImportCheckTest { " @DateTimeFormat(iso = DATE) String date,", " @DateTimeFormat(iso = DATE_TIME) String dateTime,", " @DateTimeFormat(iso = TIME) String time) {}", + "", + " @SpringBootTest(webEnvironment = RANDOM_PORT)", + " final class Test {}", "}") .doTest(BugCheckerRefactoringTestHelper.TestMode.TEXT_MATCH); } diff --git a/pom.xml b/pom.xml index 1d50626b..425bb807 100644 --- a/pom.xml +++ b/pom.xml @@ -371,6 +371,11 @@ pom import + + org.springframework.boot + spring-boot-test + 2.5.6 + org.testng testng