Browse Source

Drop @TestAutoConfiguration annotation

Closes gh-47746
pull/47284/head
Phillip Webb 2 months ago
parent
commit
2210252c75
  1. 34
      buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureRules.java
  2. 80
      core/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/TestAutoConfiguration.java
  3. 6
      module/spring-boot-gson/src/main/java/org/springframework/boot/gson/autoconfigure/GsonTesterTestAutoConfiguration.java
  4. 2
      module/spring-boot-gson/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.json.AutoConfigureJsonTesters.imports
  5. 4
      module/spring-boot-gson/src/test/java/org/springframework/boot/gson/autoconfigure/GsonTesterAutoConfigurationTests.java
  6. 6
      module/spring-boot-jackson/src/main/java/org/springframework/boot/jackson/autoconfigure/JacksonTesterTestAutoConfiguration.java
  7. 2
      module/spring-boot-jackson/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.json.AutoConfigureJsonTesters.imports
  8. 5
      module/spring-boot-jackson/src/test/java/org/springframework/boot/jackson/autoconfigure/JacksonTesterAutoConfigurationTests.java
  9. 6
      module/spring-boot-jackson2/src/main/java/org/springframework/boot/jackson2/autoconfigure/Jackson2TesterTestAutoConfiguration.java
  10. 6
      module/spring-boot-jsonb/src/main/java/org/springframework/boot/jsonb/autoconfigure/JsonbTesterTestAutoConfiguration.java
  11. 2
      module/spring-boot-jsonb/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.json.AutoConfigureJsonTesters.imports
  12. 4
      module/spring-boot-jsonb/src/test/java/org/springframework/boot/jsonb/autoconfigure/JsonbTesterAutoConfigurationTests.java

34
buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureRules.java

@ -80,8 +80,6 @@ final class ArchitectureRules {
private static final String AUTOCONFIGURATION_ANNOTATION = "org.springframework.boot.autoconfigure.AutoConfiguration"; private static final String AUTOCONFIGURATION_ANNOTATION = "org.springframework.boot.autoconfigure.AutoConfiguration";
private static final String TEST_AUTOCONFIGURATION_ANNOTATION = "org.springframework.boot.test.autoconfigure.TestAutoConfiguration";
private ArchitectureRules() { private ArchitectureRules() {
} }
@ -377,6 +375,16 @@ final class ArchitectureRules {
.allowEmptyShould(true); .allowEmptyShould(true);
} }
private static ArchRule testAutoConfigurationClassesShouldBePackagePrivateAndFinal() {
return ArchRuleDefinition.classes()
.that(areTestAutoConfiguration())
.should()
.bePackagePrivate()
.andShould()
.haveModifier(JavaModifier.FINAL)
.allowEmptyShould(true);
}
private static ArchRule autoConfigurationClassesShouldHaveNoPublicMembers() { private static ArchRule autoConfigurationClassesShouldHaveNoPublicMembers() {
return ArchRuleDefinition.members() return ArchRuleDefinition.members()
.that() .that()
@ -399,22 +407,16 @@ final class ArchitectureRules {
.allowEmptyShould(true); .allowEmptyShould(true);
} }
private static ArchRule testAutoConfigurationClassesShouldBePackagePrivateAndFinal() {
return ArchRuleDefinition.classes()
.that()
.areAnnotatedWith(TEST_AUTOCONFIGURATION_ANNOTATION)
.should()
.bePackagePrivate()
.andShould()
.haveModifier(JavaModifier.FINAL)
.allowEmptyShould(true);
}
static DescribedPredicate<JavaClass> areRegularAutoConfiguration() { static DescribedPredicate<JavaClass> areRegularAutoConfiguration() {
return DescribedPredicate.describe("Regular @AutoConfiguration", return DescribedPredicate.describe("Regular @AutoConfiguration",
(javaClass) -> javaClass.isMetaAnnotatedWith(AUTOCONFIGURATION_ANNOTATION) (javaClass) -> javaClass.isAnnotatedWith(AUTOCONFIGURATION_ANNOTATION)
&& !javaClass.isMetaAnnotatedWith(TEST_AUTOCONFIGURATION_ANNOTATION) && !javaClass.getName().contains("TestAutoConfiguration") && !javaClass.isAnnotation());
&& !javaClass.isAnnotation()); }
static DescribedPredicate<JavaClass> areTestAutoConfiguration() {
return DescribedPredicate.describe("Test @AutoConfiguration",
(javaClass) -> javaClass.isAnnotatedWith(AUTOCONFIGURATION_ANNOTATION)
&& javaClass.getName().contains("TestAutoConfiguration") && !javaClass.isAnnotation());
} }
private static DescribedPredicate<? super JavaMember> dontOverridePublicMethods() { private static DescribedPredicate<? super JavaMember> dontOverridePublicMethods() {

80
core/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/TestAutoConfiguration.java

@ -1,80 +0,0 @@
/*
* Copyright 2012-present the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.boot.test.autoconfigure;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.AliasFor;
/**
* Indicates that a class provides configuration that can be automatically applied by
* Spring Boot tests. Test Auto-configuration classes are regular
* {@link AutoConfiguration @AutoConfiguration} classes but may be package-private.
*
* @author Phillip Webb
* @see AutoConfiguration
* @since 4.0.0
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration(proxyBeanMethods = false)
@AutoConfiguration
public @interface TestAutoConfiguration {
/**
* Alias for {@link AutoConfiguration#value()}.
* @return the aliased value
*/
@AliasFor(annotation = AutoConfiguration.class)
String value() default "";
/**
* Alias for {@link AutoConfiguration#before()}.
* @return the aliased value
*/
@AliasFor(annotation = AutoConfiguration.class)
Class<?>[] before() default {};
/**
* Alias for {@link AutoConfiguration#beforeName()}.
* @return the aliased value
*/
@AliasFor(annotation = AutoConfiguration.class)
String[] beforeName() default {};
/**
* Alias for {@link AutoConfiguration#after()}.
* @return the aliased value
*/
@AliasFor(annotation = AutoConfiguration.class)
Class<?>[] after() default {};
/**
* Alias for {@link AutoConfiguration#afterName()}.
* @return the aliased value
*/
@AliasFor(annotation = AutoConfiguration.class)
String[] afterName() default {};
}

6
module/spring-boot-gson/src/main/java/org/springframework/boot/gson/autoconfigure/GsonTesterAutoConfiguration.java → module/spring-boot-gson/src/main/java/org/springframework/boot/gson/autoconfigure/GsonTesterTestAutoConfiguration.java

@ -20,9 +20,9 @@ import com.google.gson.Gson;
import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.test.autoconfigure.TestAutoConfiguration;
import org.springframework.boot.test.autoconfigure.json.ConditionalOnJsonTesters; import org.springframework.boot.test.autoconfigure.json.ConditionalOnJsonTesters;
import org.springframework.boot.test.autoconfigure.json.JsonMarshalTesterRuntimeHints; import org.springframework.boot.test.autoconfigure.json.JsonMarshalTesterRuntimeHints;
import org.springframework.boot.test.autoconfigure.json.JsonTesterFactoryBean; import org.springframework.boot.test.autoconfigure.json.JsonTesterFactoryBean;
@ -36,9 +36,9 @@ import org.springframework.context.annotation.Scope;
* *
* @author Phjllip Webb * @author Phjllip Webb
*/ */
@TestAutoConfiguration(after = GsonAutoConfiguration.class) @AutoConfiguration(after = GsonAutoConfiguration.class)
@ConditionalOnJsonTesters @ConditionalOnJsonTesters
final class GsonTesterAutoConfiguration { final class GsonTesterTestAutoConfiguration {
@Bean @Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)

2
module/spring-boot-gson/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.json.AutoConfigureJsonTesters.imports

@ -1 +1 @@
org.springframework.boot.gson.autoconfigure.GsonTesterAutoConfiguration org.springframework.boot.gson.autoconfigure.GsonTesterTestAutoConfiguration

4
module/spring-boot-gson/src/test/java/org/springframework/boot/gson/autoconfigure/GsonTesterAutoConfigurationTests.java

@ -31,14 +31,14 @@ import org.springframework.context.support.GenericApplicationContext;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
/** /**
* Tests for {@link GsonTesterAutoConfiguration}. * Tests for {@link GsonTesterTestAutoConfiguration}.
* *
* @author Andy Wilkinson * @author Andy Wilkinson
*/ */
class GsonTesterAutoConfigurationTests { class GsonTesterAutoConfigurationTests {
private final ApplicationContextRunner runner = new ApplicationContextRunner().withConfiguration(AutoConfigurations private final ApplicationContextRunner runner = new ApplicationContextRunner().withConfiguration(AutoConfigurations
.of(JsonTestersAutoConfiguration.class, GsonAutoConfiguration.class, GsonTesterAutoConfiguration.class)); .of(JsonTestersAutoConfiguration.class, GsonAutoConfiguration.class, GsonTesterTestAutoConfiguration.class));
@Test @Test
void hintsAreContributed() { void hintsAreContributed() {

6
module/spring-boot-jackson/src/main/java/org/springframework/boot/jackson/autoconfigure/JacksonTesterAutoConfiguration.java → module/spring-boot-jackson/src/main/java/org/springframework/boot/jackson/autoconfigure/JacksonTesterTestAutoConfiguration.java

@ -20,9 +20,9 @@ import tools.jackson.databind.json.JsonMapper;
import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.test.autoconfigure.TestAutoConfiguration;
import org.springframework.boot.test.autoconfigure.json.ConditionalOnJsonTesters; import org.springframework.boot.test.autoconfigure.json.ConditionalOnJsonTesters;
import org.springframework.boot.test.autoconfigure.json.JsonMarshalTesterRuntimeHints; import org.springframework.boot.test.autoconfigure.json.JsonMarshalTesterRuntimeHints;
import org.springframework.boot.test.autoconfigure.json.JsonTesterFactoryBean; import org.springframework.boot.test.autoconfigure.json.JsonTesterFactoryBean;
@ -37,9 +37,9 @@ import org.springframework.context.annotation.Scope;
* *
* @author Phjllip Webb * @author Phjllip Webb
*/ */
@TestAutoConfiguration(after = JacksonAutoConfiguration.class) @AutoConfiguration(after = JacksonAutoConfiguration.class)
@ConditionalOnJsonTesters @ConditionalOnJsonTesters
final class JacksonTesterAutoConfiguration { final class JacksonTesterTestAutoConfiguration {
@Bean @Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)

2
module/spring-boot-jackson/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.json.AutoConfigureJsonTesters.imports

@ -1 +1 @@
org.springframework.boot.jackson.autoconfigure.JacksonTesterAutoConfiguration org.springframework.boot.jackson.autoconfigure.JacksonTesterTestAutoConfiguration

5
module/spring-boot-jackson/src/test/java/org/springframework/boot/jackson/autoconfigure/JacksonTesterAutoConfigurationTests.java

@ -37,8 +37,9 @@ import static org.assertj.core.api.Assertions.assertThat;
*/ */
class JacksonTesterAutoConfigurationTests { class JacksonTesterAutoConfigurationTests {
private final ApplicationContextRunner runner = new ApplicationContextRunner().withConfiguration(AutoConfigurations private final ApplicationContextRunner runner = new ApplicationContextRunner()
.of(JsonTestersAutoConfiguration.class, JacksonAutoConfiguration.class, JacksonTesterAutoConfiguration.class)); .withConfiguration(AutoConfigurations.of(JsonTestersAutoConfiguration.class, JacksonAutoConfiguration.class,
JacksonTesterTestAutoConfiguration.class));
@Test @Test
void hintsAreContributed() { void hintsAreContributed() {

6
module/spring-boot-jackson2/src/main/java/org/springframework/boot/jackson2/autoconfigure/Jackson2TesterAutoConfiguration.java → module/spring-boot-jackson2/src/main/java/org/springframework/boot/jackson2/autoconfigure/Jackson2TesterTestAutoConfiguration.java

@ -20,9 +20,9 @@ import com.fasterxml.jackson.databind.json.JsonMapper;
import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.test.autoconfigure.TestAutoConfiguration;
import org.springframework.boot.test.autoconfigure.json.ConditionalOnJsonTesters; import org.springframework.boot.test.autoconfigure.json.ConditionalOnJsonTesters;
import org.springframework.boot.test.autoconfigure.json.JsonMarshalTesterRuntimeHints; import org.springframework.boot.test.autoconfigure.json.JsonMarshalTesterRuntimeHints;
import org.springframework.boot.test.autoconfigure.json.JsonTesterFactoryBean; import org.springframework.boot.test.autoconfigure.json.JsonTesterFactoryBean;
@ -39,10 +39,10 @@ import org.springframework.context.annotation.Scope;
* @deprecated since 4.0.0 for removal in 4.2.0 in favor of Jackson 3. * @deprecated since 4.0.0 for removal in 4.2.0 in favor of Jackson 3.
*/ */
@Deprecated(since = "4.0.0", forRemoval = true) @Deprecated(since = "4.0.0", forRemoval = true)
@TestAutoConfiguration(after = Jackson2AutoConfiguration.class) @AutoConfiguration(after = Jackson2AutoConfiguration.class)
@ConditionalOnJsonTesters @ConditionalOnJsonTesters
@SuppressWarnings("removal") @SuppressWarnings("removal")
final class Jackson2TesterAutoConfiguration { final class Jackson2TesterTestAutoConfiguration {
@Bean @Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)

6
module/spring-boot-jsonb/src/main/java/org/springframework/boot/jsonb/autoconfigure/JsonbTesterAutoConfiguration.java → module/spring-boot-jsonb/src/main/java/org/springframework/boot/jsonb/autoconfigure/JsonbTesterTestAutoConfiguration.java

@ -20,9 +20,9 @@ import jakarta.json.bind.Jsonb;
import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.test.autoconfigure.TestAutoConfiguration;
import org.springframework.boot.test.autoconfigure.json.ConditionalOnJsonTesters; import org.springframework.boot.test.autoconfigure.json.ConditionalOnJsonTesters;
import org.springframework.boot.test.autoconfigure.json.JsonMarshalTesterRuntimeHints; import org.springframework.boot.test.autoconfigure.json.JsonMarshalTesterRuntimeHints;
import org.springframework.boot.test.autoconfigure.json.JsonTesterFactoryBean; import org.springframework.boot.test.autoconfigure.json.JsonTesterFactoryBean;
@ -36,9 +36,9 @@ import org.springframework.context.annotation.Scope;
* *
* @author Phjllip Webb * @author Phjllip Webb
*/ */
@TestAutoConfiguration(after = JsonbAutoConfiguration.class) @AutoConfiguration(after = JsonbAutoConfiguration.class)
@ConditionalOnJsonTesters @ConditionalOnJsonTesters
final class JsonbTesterAutoConfiguration { final class JsonbTesterTestAutoConfiguration {
@Bean @Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)

2
module/spring-boot-jsonb/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.json.AutoConfigureJsonTesters.imports

@ -1 +1 @@
org.springframework.boot.jsonb.autoconfigure.JsonbTesterAutoConfiguration org.springframework.boot.jsonb.autoconfigure.JsonbTesterTestAutoConfiguration

4
module/spring-boot-jsonb/src/test/java/org/springframework/boot/jsonb/autoconfigure/JsonbTesterAutoConfigurationTests.java

@ -31,14 +31,14 @@ import org.springframework.context.support.GenericApplicationContext;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
/** /**
* Tests for {@link JsonbTesterAutoConfiguration}. * Tests for {@link JsonbTesterTestAutoConfiguration}.
* *
* @author Andy Wilkinson * @author Andy Wilkinson
*/ */
class JsonbTesterAutoConfigurationTests { class JsonbTesterAutoConfigurationTests {
private final ApplicationContextRunner runner = new ApplicationContextRunner().withConfiguration(AutoConfigurations private final ApplicationContextRunner runner = new ApplicationContextRunner().withConfiguration(AutoConfigurations
.of(JsonTestersAutoConfiguration.class, JsonbAutoConfiguration.class, JsonbTesterAutoConfiguration.class)); .of(JsonTestersAutoConfiguration.class, JsonbAutoConfiguration.class, JsonbTesterTestAutoConfiguration.class));
@Test @Test
void hintsAreContributed() { void hintsAreContributed() {

Loading…
Cancel
Save