Browse Source

Polish "Improve testing of architecture checks"

See gh-48139
3.5.x
Stéphane Nicoll 2 weeks ago
parent
commit
d9bf31349a
  1. 28
      buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheck.java
  2. 44
      buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheckAnnotation.java
  3. 14
      buildSrc/src/test/java/org/springframework/boot/build/architecture/ArchitectureCheckTests.java

28
buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheck.java

@ -59,8 +59,6 @@ import org.gradle.api.tasks.SourceSet; @@ -59,8 +59,6 @@ import org.gradle.api.tasks.SourceSet;
import org.gradle.api.tasks.TaskAction;
import org.gradle.api.tasks.VerificationException;
import org.springframework.boot.build.architecture.ArchitectureCheckAnnotations.Annotation;
/**
* {@link Task} that checks for architecture problems.
*
@ -77,22 +75,22 @@ public abstract class ArchitectureCheck extends DefaultTask { @@ -77,22 +75,22 @@ public abstract class ArchitectureCheck extends DefaultTask {
public ArchitectureCheck() {
getOutputDirectory().convention(getProject().getLayout().getBuildDirectory().dir(getName()));
getAnnotationClasses().convention(ArchitectureCheckAnnotations.asMap());
getAnnotationClasses().convention(ArchitectureCheckAnnotation.asMap());
getRules().addAll(getProhibitObjectsRequireNonNull().convention(true)
.map(whenTrue(ArchitectureRules::noClassesShouldCallObjectsRequireNonNull)));
getRules().addAll(ArchitectureRules.standard());
getRules().addAll(whenMainSources(() -> ArchitectureRules.beanMethods(
ArchitectureCheckAnnotations.classFor(getAnnotationClasses().get(), Annotation.CONDITIONAL_ON_CLASS))));
getRules().addAll(whenMainSources(() -> ArchitectureRules.conditionalOnMissingBean(ArchitectureCheckAnnotations
.classFor(getAnnotationClasses().get(), Annotation.CONDITIONAL_ON_MISSING_BEAN))));
getRules().addAll(whenMainSources(() -> ArchitectureRules.configurationProperties(ArchitectureCheckAnnotations
.classFor(getAnnotationClasses().get(), Annotation.CONFIGURATION_PROPERTIES))));
getRules()
.addAll(whenMainSources(() -> ArchitectureRules.configurationPropertiesBinding(ArchitectureCheckAnnotations
.classFor(getAnnotationClasses().get(), Annotation.CONFIGURATION_PROPERTIES_BINDING))));
getRules().addAll(
whenMainSources(() -> ArchitectureRules.configurationPropertiesDeprecation(ArchitectureCheckAnnotations
.classFor(getAnnotationClasses().get(), Annotation.DEPRECATED_CONFIGURATION_PROPERTY))));
getRules().addAll(whenMainSources(() -> ArchitectureRules.beanMethods(ArchitectureCheckAnnotation
.classFor(getAnnotationClasses().get(), ArchitectureCheckAnnotation.CONDITIONAL_ON_CLASS))));
getRules().addAll(whenMainSources(() -> ArchitectureRules.conditionalOnMissingBean(ArchitectureCheckAnnotation
.classFor(getAnnotationClasses().get(), ArchitectureCheckAnnotation.CONDITIONAL_ON_MISSING_BEAN))));
getRules().addAll(whenMainSources(() -> ArchitectureRules.configurationProperties(ArchitectureCheckAnnotation
.classFor(getAnnotationClasses().get(), ArchitectureCheckAnnotation.CONFIGURATION_PROPERTIES))));
getRules().addAll(whenMainSources(
() -> ArchitectureRules.configurationPropertiesBinding(ArchitectureCheckAnnotation.classFor(
getAnnotationClasses().get(), ArchitectureCheckAnnotation.CONFIGURATION_PROPERTIES_BINDING))));
getRules().addAll(whenMainSources(
() -> ArchitectureRules.configurationPropertiesDeprecation(ArchitectureCheckAnnotation.classFor(
getAnnotationClasses().get(), ArchitectureCheckAnnotation.DEPRECATED_CONFIGURATION_PROPERTY))));
getRuleDescriptions().set(getRules().map(this::asDescriptions));
}

44
buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheckAnnotations.java → buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheckAnnotation.java

@ -23,35 +23,49 @@ import java.util.Map; @@ -23,35 +23,49 @@ import java.util.Map;
* tests.
*
* @author Scott Frederick
* @author Stephane Nicoll
*/
public final class ArchitectureCheckAnnotations {
public enum ArchitectureCheckAnnotation {
enum Annotation {
/**
* Condition on class check.
*/
CONDITIONAL_ON_CLASS,
CONDITIONAL_ON_CLASS, CONDITIONAL_ON_MISSING_BEAN, CONFIGURATION_PROPERTIES, DEPRECATED_CONFIGURATION_PROPERTY,
CONFIGURATION_PROPERTIES_BINDING
/**
* Condition on missing bean check.
*/
CONDITIONAL_ON_MISSING_BEAN,
}
/**
* Configuration properties bean.
*/
CONFIGURATION_PROPERTIES,
private ArchitectureCheckAnnotations() {
}
/**
* Deprecated configuration property.
*/
DEPRECATED_CONFIGURATION_PROPERTY,
/**
* Custom implementation to bind configuration properties.
*/
CONFIGURATION_PROPERTIES_BINDING;
private static final Map<String, String> annotationNameToClassName = Map.of(Annotation.CONDITIONAL_ON_CLASS.name(),
"org.springframework.boot.autoconfigure.condition.ConditionalOnClass",
Annotation.CONDITIONAL_ON_MISSING_BEAN.name(),
private static final Map<String, String> annotationNameToClassName = Map.of(CONDITIONAL_ON_CLASS.name(),
"org.springframework.boot.autoconfigure.condition.ConditionalOnClass", CONDITIONAL_ON_MISSING_BEAN.name(),
"org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean",
Annotation.CONFIGURATION_PROPERTIES.name(),
"org.springframework.boot.context.properties.ConfigurationProperties",
Annotation.DEPRECATED_CONFIGURATION_PROPERTY.name(),
CONFIGURATION_PROPERTIES.name(), "org.springframework.boot.context.properties.ConfigurationProperties",
DEPRECATED_CONFIGURATION_PROPERTY.name(),
"org.springframework.boot.context.properties.DeprecatedConfigurationProperty",
Annotation.CONFIGURATION_PROPERTIES_BINDING.name(),
CONFIGURATION_PROPERTIES_BINDING.name(),
"org.springframework.boot.context.properties.ConfigurationPropertiesBinding");
static Map<String, String> asMap() {
return annotationNameToClassName;
}
static String classFor(Map<String, String> annotationProperty, Annotation annotation) {
static String classFor(Map<String, String> annotationProperty, ArchitectureCheckAnnotation annotation) {
String name = annotation.name();
return annotationProperty.getOrDefault(name, asMap().get(name));
}

14
buildSrc/src/test/java/org/springframework/boot/build/architecture/ArchitectureCheckTests.java

@ -43,7 +43,6 @@ import org.junit.jupiter.api.io.TempDir; @@ -43,7 +43,6 @@ import org.junit.jupiter.api.io.TempDir;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.EnumSource;
import org.springframework.boot.build.architecture.ArchitectureCheckAnnotations.Annotation;
import org.springframework.boot.build.architecture.annotations.TestConditionalOnClass;
import org.springframework.boot.build.architecture.annotations.TestConditionalOnMissingBean;
import org.springframework.boot.build.architecture.annotations.TestConfigurationProperties;
@ -530,28 +529,31 @@ class ArchitectureCheckTests { @@ -530,28 +529,31 @@ class ArchitectureCheckTests {
}
GradleBuild withConditionalOnClassAnnotation() {
configureTasks(Annotation.CONDITIONAL_ON_CLASS.name(), TestConditionalOnClass.class.getName());
configureTasks(ArchitectureCheckAnnotation.CONDITIONAL_ON_CLASS.name(),
TestConditionalOnClass.class.getName());
return this;
}
GradleBuild withConditionalOnMissingBeanAnnotation() {
configureTasks(Annotation.CONDITIONAL_ON_MISSING_BEAN.name(), TestConditionalOnMissingBean.class.getName());
configureTasks(ArchitectureCheckAnnotation.CONDITIONAL_ON_MISSING_BEAN.name(),
TestConditionalOnMissingBean.class.getName());
return this;
}
GradleBuild withConfigurationPropertiesAnnotation() {
configureTasks(Annotation.CONFIGURATION_PROPERTIES.name(), TestConfigurationProperties.class.getName());
configureTasks(ArchitectureCheckAnnotation.CONFIGURATION_PROPERTIES.name(),
TestConfigurationProperties.class.getName());
return this;
}
GradleBuild withConfigurationPropertiesBindingAnnotation() {
configureTasks(Annotation.CONFIGURATION_PROPERTIES_BINDING.name(),
configureTasks(ArchitectureCheckAnnotation.CONFIGURATION_PROPERTIES_BINDING.name(),
TestConfigurationPropertiesBinding.class.getName());
return this;
}
GradleBuild withDeprecatedConfigurationPropertyAnnotation() {
configureTasks(Annotation.DEPRECATED_CONFIGURATION_PROPERTY.name(),
configureTasks(ArchitectureCheckAnnotation.DEPRECATED_CONFIGURATION_PROPERTY.name(),
TestDeprecatedConfigurationProperty.class.getName());
return this;
}

Loading…
Cancel
Save