From c629b83146dedb98f97784a7f1fe6202cdecf99f Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 15 Oct 2025 14:12:37 +0200 Subject: [PATCH] Add nullability annotations to tests in module/spring-boot-sql See gh-47263 --- module/spring-boot-sql/build.gradle | 4 ++ ...nDatabaseInitializationConditionTests.java | 37 +++++++++++-------- ...itializationDependencyConfigurerTests.java | 6 ++- 3 files changed, 30 insertions(+), 17 deletions(-) diff --git a/module/spring-boot-sql/build.gradle b/module/spring-boot-sql/build.gradle index 3cdd0d89fb5..a6f2c6beffd 100644 --- a/module/spring-boot-sql/build.gradle +++ b/module/spring-boot-sql/build.gradle @@ -37,3 +37,7 @@ dependencies { testRuntimeOnly("ch.qos.logback:logback-classic") } + +tasks.named("compileTestJava") { + options.nullability.checking = "tests" +} diff --git a/module/spring-boot-sql/src/test/java/org/springframework/boot/sql/autoconfigure/init/OnDatabaseInitializationConditionTests.java b/module/spring-boot-sql/src/test/java/org/springframework/boot/sql/autoconfigure/init/OnDatabaseInitializationConditionTests.java index be15b6188bf..48c2701594a 100644 --- a/module/spring-boot-sql/src/test/java/org/springframework/boot/sql/autoconfigure/init/OnDatabaseInitializationConditionTests.java +++ b/module/spring-boot-sql/src/test/java/org/springframework/boot/sql/autoconfigure/init/OnDatabaseInitializationConditionTests.java @@ -21,6 +21,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.condition.ConditionOutcome; import org.springframework.boot.test.util.TestPropertyValues; import org.springframework.context.annotation.ConditionContext; +import org.springframework.core.type.AnnotatedTypeMetadata; import org.springframework.mock.env.MockEnvironment; import static org.assertj.core.api.Assertions.assertThat; @@ -37,40 +38,43 @@ class OnDatabaseInitializationConditionTests { @Test void getMatchOutcomeWithPropertyNoSetMatches() { OnDatabaseInitializationCondition condition = new OnTestDatabaseInitializationCondition("test.init-mode"); - ConditionOutcome outcome = condition - .getMatchOutcome(mockConditionContext(TestPropertyValues.of("test.another", "noise")), null); + ConditionOutcome outcome = condition.getMatchOutcome( + mockConditionContext(TestPropertyValues.of("test.another", "noise")), + mock(AnnotatedTypeMetadata.class)); assertThat(outcome.isMatch()).isTrue(); } @Test void getMatchOutcomeWithPropertySetToAlwaysMatches() { OnDatabaseInitializationCondition condition = new OnTestDatabaseInitializationCondition("test.init-mode"); - ConditionOutcome outcome = condition - .getMatchOutcome(mockConditionContext(TestPropertyValues.of("test.init-mode=always")), null); + ConditionOutcome outcome = condition.getMatchOutcome( + mockConditionContext(TestPropertyValues.of("test.init-mode=always")), + mock(AnnotatedTypeMetadata.class)); assertThat(outcome.isMatch()).isTrue(); } @Test void getMatchOutcomeWithPropertySetToEmbeddedMatches() { OnDatabaseInitializationCondition condition = new OnTestDatabaseInitializationCondition("test.init-mode"); - ConditionOutcome outcome = condition - .getMatchOutcome(mockConditionContext(TestPropertyValues.of("test.init-mode=embedded")), null); + ConditionOutcome outcome = condition.getMatchOutcome( + mockConditionContext(TestPropertyValues.of("test.init-mode=embedded")), + mock(AnnotatedTypeMetadata.class)); assertThat(outcome.isMatch()).isTrue(); } @Test void getMatchOutcomeWithPropertySetToNeverDoesNotMatch() { OnDatabaseInitializationCondition condition = new OnTestDatabaseInitializationCondition("test.init-mode"); - ConditionOutcome outcome = condition - .getMatchOutcome(mockConditionContext(TestPropertyValues.of("test.init-mode=never")), null); + ConditionOutcome outcome = condition.getMatchOutcome( + mockConditionContext(TestPropertyValues.of("test.init-mode=never")), mock(AnnotatedTypeMetadata.class)); assertThat(outcome.isMatch()).isFalse(); } @Test void getMatchOutcomeWithPropertySetToEmptyStringIsIgnored() { OnDatabaseInitializationCondition condition = new OnTestDatabaseInitializationCondition("test.init-mode"); - ConditionOutcome outcome = condition - .getMatchOutcome(mockConditionContext(TestPropertyValues.of("test.init-mode")), null); + ConditionOutcome outcome = condition.getMatchOutcome( + mockConditionContext(TestPropertyValues.of("test.init-mode")), mock(AnnotatedTypeMetadata.class)); assertThat(outcome.isMatch()).isTrue(); } @@ -78,8 +82,9 @@ class OnDatabaseInitializationConditionTests { void getMatchOutcomeWithMultiplePropertiesUsesFirstSet() { OnDatabaseInitializationCondition condition = new OnTestDatabaseInitializationCondition("test.init-mode", "test.schema-mode", "test.init-schema-mode"); - ConditionOutcome outcome = condition - .getMatchOutcome(mockConditionContext(TestPropertyValues.of("test.init-schema-mode=embedded")), null); + ConditionOutcome outcome = condition.getMatchOutcome( + mockConditionContext(TestPropertyValues.of("test.init-schema-mode=embedded")), + mock(AnnotatedTypeMetadata.class)); assertThat(outcome.isMatch()).isTrue(); assertThat(outcome.getMessage()).isEqualTo("TestDatabase Initialization test.init-schema-mode is EMBEDDED"); } @@ -87,15 +92,17 @@ class OnDatabaseInitializationConditionTests { @Test void getMatchOutcomeHasDedicatedDescription() { OnDatabaseInitializationCondition condition = new OnTestDatabaseInitializationCondition("test.init-mode"); - ConditionOutcome outcome = condition - .getMatchOutcome(mockConditionContext(TestPropertyValues.of("test.init-mode=embedded")), null); + ConditionOutcome outcome = condition.getMatchOutcome( + mockConditionContext(TestPropertyValues.of("test.init-mode=embedded")), + mock(AnnotatedTypeMetadata.class)); assertThat(outcome.getMessage()).isEqualTo("TestDatabase Initialization test.init-mode is EMBEDDED"); } @Test void getMatchOutcomeHasWhenPropertyIsNotSetHasDefaultDescription() { OnDatabaseInitializationCondition condition = new OnTestDatabaseInitializationCondition("test.init-mode"); - ConditionOutcome outcome = condition.getMatchOutcome(mockConditionContext(TestPropertyValues.empty()), null); + ConditionOutcome outcome = condition.getMatchOutcome(mockConditionContext(TestPropertyValues.empty()), + mock(AnnotatedTypeMetadata.class)); assertThat(outcome.getMessage()).isEqualTo("TestDatabase Initialization default value is EMBEDDED"); } diff --git a/module/spring-boot-sql/src/test/java/org/springframework/boot/sql/init/dependency/DatabaseInitializationDependencyConfigurerTests.java b/module/spring-boot-sql/src/test/java/org/springframework/boot/sql/init/dependency/DatabaseInitializationDependencyConfigurerTests.java index 79cf771a5c2..418f11f6bd6 100644 --- a/module/spring-boot-sql/src/test/java/org/springframework/boot/sql/init/dependency/DatabaseInitializationDependencyConfigurerTests.java +++ b/module/spring-boot-sql/src/test/java/org/springframework/boot/sql/init/dependency/DatabaseInitializationDependencyConfigurerTests.java @@ -33,6 +33,7 @@ import java.util.Properties; import java.util.Set; import java.util.function.Consumer; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -67,6 +68,7 @@ class DatabaseInitializationDependencyConfigurerTests { private final ConfigurableEnvironment environment = new MockEnvironment(); @TempDir + @SuppressWarnings("NullAway.Init") File temp; @BeforeEach @@ -217,7 +219,7 @@ class DatabaseInitializationDependencyConfigurerTests { static class ConstructorInjectionDatabaseInitializerDetector implements DatabaseInitializerDetector { - private static Environment environment; + private static @Nullable Environment environment; ConstructorInjectionDatabaseInitializerDetector(Environment environment) { ConstructorInjectionDatabaseInitializerDetector.environment = environment; @@ -233,7 +235,7 @@ class DatabaseInitializationDependencyConfigurerTests { static class ConstructorInjectionDependsOnDatabaseInitializationDetector implements DependsOnDatabaseInitializationDetector { - private static Environment environment; + private static @Nullable Environment environment; ConstructorInjectionDependsOnDatabaseInitializationDetector(Environment environment) { ConstructorInjectionDependsOnDatabaseInitializationDetector.environment = environment;