Clean up warnings in tests

This commit is contained in:
Sam Brannen
2023-10-11 13:29:57 +02:00
parent 00dde8bd88
commit 25778e2f0e
5 changed files with 30 additions and 18 deletions

View File

@@ -53,7 +53,6 @@ import org.springframework.beans.testfixture.beans.factory.aot.TestHierarchy;
import org.springframework.beans.testfixture.beans.factory.aot.TestHierarchy.Implementation; import org.springframework.beans.testfixture.beans.factory.aot.TestHierarchy.Implementation;
import org.springframework.beans.testfixture.beans.factory.aot.TestHierarchy.One; import org.springframework.beans.testfixture.beans.factory.aot.TestHierarchy.One;
import org.springframework.beans.testfixture.beans.factory.aot.TestHierarchy.Two; import org.springframework.beans.testfixture.beans.factory.aot.TestHierarchy.Two;
import org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedBean;
import org.springframework.core.ResolvableType; import org.springframework.core.ResolvableType;
import org.springframework.core.test.io.support.MockSpringFactoriesLoader; import org.springframework.core.test.io.support.MockSpringFactoriesLoader;
import org.springframework.core.test.tools.CompileWithForkedClassLoader; import org.springframework.core.test.tools.CompileWithForkedClassLoader;
@@ -752,7 +751,8 @@ class BeanDefinitionMethodGeneratorTests {
@Test @Test
void generateBeanDefinitionMethodWithDeprecatedTargetClass() { void generateBeanDefinitionMethodWithDeprecatedTargetClass() {
RootBeanDefinition beanDefinition = new RootBeanDefinition(DeprecatedBean.class); Class<?> beanClass = org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedBean.class;
RootBeanDefinition beanDefinition = new RootBeanDefinition(beanClass);
RegisteredBean registeredBean = registerBean(beanDefinition); RegisteredBean registeredBean = registerBean(beanDefinition);
BeanDefinitionMethodGenerator generator = new BeanDefinitionMethodGenerator( BeanDefinitionMethodGenerator generator = new BeanDefinitionMethodGenerator(
methodGeneratorFactory, registeredBean, null, methodGeneratorFactory, registeredBean, null,

View File

@@ -24,8 +24,6 @@ import org.junit.jupiter.api.Test;
import org.springframework.aot.test.generate.TestGenerationContext; import org.springframework.aot.test.generate.TestGenerationContext;
import org.springframework.beans.testfixture.beans.factory.aot.DeferredTypeBuilder; import org.springframework.beans.testfixture.beans.factory.aot.DeferredTypeBuilder;
import org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedBean;
import org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedForRemovalBean;
import org.springframework.core.test.tools.Compiled; import org.springframework.core.test.tools.Compiled;
import org.springframework.core.test.tools.TestCompiler; import org.springframework.core.test.tools.TestCompiler;
import org.springframework.javapoet.MethodSpec; import org.springframework.javapoet.MethodSpec;
@@ -63,10 +61,11 @@ class CodeWarningsTests {
@Test @Test
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
void registerWarningSuppressesIt() { void registerWarningSuppressesIt() {
Class<?> deprecatedBeanClass = org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedBean.class;
this.codeWarnings.register("deprecation"); this.codeWarnings.register("deprecation");
compile(method -> { compile(method -> {
this.codeWarnings.suppress(method); this.codeWarnings.suppress(method);
method.addStatement("$T bean = new $T()", DeprecatedBean.class, DeprecatedBean.class); method.addStatement("$T bean = new $T()", deprecatedBeanClass, deprecatedBeanClass);
}, compiled -> assertThat(compiled.getSourceFile()) }, compiled -> assertThat(compiled.getSourceFile())
.contains("@SuppressWarnings(\"deprecation\")")); .contains("@SuppressWarnings(\"deprecation\")"));
} }
@@ -74,12 +73,14 @@ class CodeWarningsTests {
@Test @Test
@SuppressWarnings({ "deprecation", "removal" }) @SuppressWarnings({ "deprecation", "removal" })
void registerSeveralWarningsSuppressesThem() { void registerSeveralWarningsSuppressesThem() {
Class<?> deprecatedBeanClass = org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedBean.class;
Class<?> deprecatedForRemovalBeanClass = org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedForRemovalBean.class;
this.codeWarnings.register("deprecation"); this.codeWarnings.register("deprecation");
this.codeWarnings.register("removal"); this.codeWarnings.register("removal");
compile(method -> { compile(method -> {
this.codeWarnings.suppress(method); this.codeWarnings.suppress(method);
method.addStatement("$T bean = new $T()", DeprecatedBean.class, DeprecatedBean.class); method.addStatement("$T bean = new $T()", deprecatedBeanClass, deprecatedBeanClass);
method.addStatement("$T another = new $T()", DeprecatedForRemovalBean.class, DeprecatedForRemovalBean.class); method.addStatement("$T another = new $T()", deprecatedForRemovalBeanClass, deprecatedForRemovalBeanClass);
}, compiled -> assertThat(compiled.getSourceFile()) }, compiled -> assertThat(compiled.getSourceFile())
.contains("@SuppressWarnings({ \"deprecation\", \"removal\" })")); .contains("@SuppressWarnings({ \"deprecation\", \"removal\" })"));
} }
@@ -87,14 +88,16 @@ class CodeWarningsTests {
@Test @Test
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
void detectDeprecationOnAnnotatedElementWithDeprecated() { void detectDeprecationOnAnnotatedElementWithDeprecated() {
this.codeWarnings.detectDeprecation(DeprecatedBean.class); Class<?> deprecatedBeanClass = org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedBean.class;
this.codeWarnings.detectDeprecation(deprecatedBeanClass);
assertThat(this.codeWarnings.getWarnings()).containsExactly("deprecation"); assertThat(this.codeWarnings.getWarnings()).containsExactly("deprecation");
} }
@Test @Test
@SuppressWarnings("removal") @SuppressWarnings("removal")
void detectDeprecationOnAnnotatedElementWithDeprecatedForRemoval() { void detectDeprecationOnAnnotatedElementWithDeprecatedForRemoval() {
this.codeWarnings.detectDeprecation(DeprecatedForRemovalBean.class); Class<?> deprecatedForRemovalBeanClass = org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedForRemovalBean.class;
this.codeWarnings.detectDeprecation(deprecatedForRemovalBeanClass);
assertThat(this.codeWarnings.getWarnings()).containsExactly("removal"); assertThat(this.codeWarnings.getWarnings()).containsExactly("removal");
} }
@@ -105,8 +108,7 @@ class CodeWarningsTests {
assertThat(this.codeWarnings).hasToString("CodeWarnings[deprecation, rawtypes]"); assertThat(this.codeWarnings).hasToString("CodeWarnings[deprecation, rawtypes]");
} }
private void compile(Consumer<Builder> method, private void compile(Consumer<Builder> method, Consumer<Compiled> result) {
Consumer<Compiled> result) {
DeferredTypeBuilder typeBuilder = new DeferredTypeBuilder(); DeferredTypeBuilder typeBuilder = new DeferredTypeBuilder();
this.generationContext.getGeneratedClasses().addForFeature("TestCode", typeBuilder); this.generationContext.getGeneratedClasses().addForFeature("TestCode", typeBuilder);
typeBuilder.set(type -> { typeBuilder.set(type -> {

View File

@@ -46,9 +46,7 @@ import org.springframework.beans.testfixture.beans.factory.generator.InnerCompon
import org.springframework.beans.testfixture.beans.factory.generator.InnerComponentConfiguration.EnvironmentAwareComponent; import org.springframework.beans.testfixture.beans.factory.generator.InnerComponentConfiguration.EnvironmentAwareComponent;
import org.springframework.beans.testfixture.beans.factory.generator.InnerComponentConfiguration.NoDependencyComponent; import org.springframework.beans.testfixture.beans.factory.generator.InnerComponentConfiguration.NoDependencyComponent;
import org.springframework.beans.testfixture.beans.factory.generator.SimpleConfiguration; import org.springframework.beans.testfixture.beans.factory.generator.SimpleConfiguration;
import org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedBean;
import org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedConstructor; import org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedConstructor;
import org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedForRemovalBean;
import org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedForRemovalConstructor; import org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedForRemovalConstructor;
import org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedForRemovalMemberConfiguration; import org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedForRemovalMemberConfiguration;
import org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedMemberConfiguration; import org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedMemberConfiguration;
@@ -280,7 +278,9 @@ class InstanceSupplierCodeGeneratorTests {
@Test @Test
@Disabled("Need to move to a separate method so that the warning can be suppressed") @Disabled("Need to move to a separate method so that the warning can be suppressed")
void generateWhenTargetClassIsDeprecated() { void generateWhenTargetClassIsDeprecated() {
compileAndCheckWarnings(new RootBeanDefinition(DeprecatedBean.class)); Class<?> deprecatedBeanClass =
org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedBean.class;
compileAndCheckWarnings(new RootBeanDefinition(deprecatedBeanClass));
} }
@Test @Test
@@ -305,14 +305,18 @@ class InstanceSupplierCodeGeneratorTests {
.setFactoryMethodOnBean("deprecatedParameter", "config").getBeanDefinition(); .setFactoryMethodOnBean("deprecatedParameter", "config").getBeanDefinition();
beanFactory.registerBeanDefinition("config", BeanDefinitionBuilder beanFactory.registerBeanDefinition("config", BeanDefinitionBuilder
.genericBeanDefinition(DeprecatedMemberConfiguration.class).getBeanDefinition()); .genericBeanDefinition(DeprecatedMemberConfiguration.class).getBeanDefinition());
beanFactory.registerBeanDefinition("parameter", new RootBeanDefinition(DeprecatedBean.class)); Class<?> deprecatedBeanClass =
org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedBean.class;
beanFactory.registerBeanDefinition("parameter", new RootBeanDefinition(deprecatedBeanClass));
compileAndCheckWarnings(beanDefinition); compileAndCheckWarnings(beanDefinition);
} }
@Test @Test
void generateWhenTargetFactoryMethodReturnTypeIsDeprecated() { void generateWhenTargetFactoryMethodReturnTypeIsDeprecated() {
Class<?> deprecatedBeanClass =
org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedBean.class;
BeanDefinition beanDefinition = BeanDefinitionBuilder BeanDefinition beanDefinition = BeanDefinitionBuilder
.rootBeanDefinition(DeprecatedBean.class) .rootBeanDefinition(deprecatedBeanClass)
.setFactoryMethodOnBean("deprecatedReturnType", "config").getBeanDefinition(); .setFactoryMethodOnBean("deprecatedReturnType", "config").getBeanDefinition();
beanFactory.registerBeanDefinition("config", BeanDefinitionBuilder beanFactory.registerBeanDefinition("config", BeanDefinitionBuilder
.genericBeanDefinition(DeprecatedMemberConfiguration.class).getBeanDefinition()); .genericBeanDefinition(DeprecatedMemberConfiguration.class).getBeanDefinition());
@@ -336,7 +340,9 @@ class InstanceSupplierCodeGeneratorTests {
@Test @Test
@Disabled("Need to move to a separate method so that the warning can be suppressed") @Disabled("Need to move to a separate method so that the warning can be suppressed")
void generateWhenTargetClassIsDeprecatedForRemoval() { void generateWhenTargetClassIsDeprecatedForRemoval() {
compileAndCheckWarnings(new RootBeanDefinition(DeprecatedForRemovalBean.class)); Class<?> deprecatedForRemovalBeanClass =
org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedForRemovalBean.class;
compileAndCheckWarnings(new RootBeanDefinition(deprecatedForRemovalBeanClass));
} }
@Test @Test
@@ -361,7 +367,9 @@ class InstanceSupplierCodeGeneratorTests {
.setFactoryMethodOnBean("deprecatedParameter", "config").getBeanDefinition(); .setFactoryMethodOnBean("deprecatedParameter", "config").getBeanDefinition();
beanFactory.registerBeanDefinition("config", BeanDefinitionBuilder beanFactory.registerBeanDefinition("config", BeanDefinitionBuilder
.genericBeanDefinition(DeprecatedForRemovalMemberConfiguration.class).getBeanDefinition()); .genericBeanDefinition(DeprecatedForRemovalMemberConfiguration.class).getBeanDefinition());
beanFactory.registerBeanDefinition("parameter", new RootBeanDefinition(DeprecatedForRemovalBean.class)); Class<?> deprecatedForRemovalBeanClass =
org.springframework.beans.testfixture.beans.factory.generator.deprecation.DeprecatedForRemovalBean.class;
beanFactory.registerBeanDefinition("parameter", new RootBeanDefinition(deprecatedForRemovalBeanClass));
compileAndCheckWarnings(beanDefinition); compileAndCheckWarnings(beanDefinition);
} }

View File

@@ -21,6 +21,7 @@ import org.springframework.context.ApplicationEvent;
@SuppressWarnings("serial") @SuppressWarnings("serial")
public class MyEvent extends ApplicationEvent { public class MyEvent extends ApplicationEvent {
@SuppressWarnings("unused")
private String message; private String message;
public MyEvent(Object source, String message) { public MyEvent(Object source, String message) {

View File

@@ -25,6 +25,7 @@ public class MyEventListener implements ApplicationListener<MyEvent> {
public int eventCount; public int eventCount;
@SuppressWarnings("unused")
@Autowired @Autowired
private MyEventListener eventDemoListener; private MyEventListener eventDemoListener;