mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-07-15 01:07:30 +08:00
Disable ContextCustomizer implementations at runtime if necessary
This commit disables ContextCustomizer implementations that tune a test configuration context at runtime. Previously, these ran again and required additional hints to work properly. Rather than contributing those hints, the customizer is skipped as its impact is irrelevant in an AOT-optimized context: the context is fully prepared and the updates on the MergedContextConfiguration are not taken into account. Closes gh-32422
This commit is contained in:
parent
2fe305413c
commit
0f325f98b5
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2022 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.
|
||||
@ -18,6 +18,7 @@ package org.springframework.boot.test.autoconfigure;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.aot.AotDetector;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.test.util.TestPropertyValues;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
@ -38,6 +39,9 @@ class OverrideAutoConfigurationContextCustomizerFactory implements ContextCustom
|
||||
@Override
|
||||
public ContextCustomizer createContextCustomizer(Class<?> testClass,
|
||||
List<ContextConfigurationAttributes> configurationAttributes) {
|
||||
if (AotDetector.useGeneratedArtifacts()) {
|
||||
return null;
|
||||
}
|
||||
OverrideAutoConfiguration overrideAutoConfiguration = TestContextAnnotationUtils.findMergedAnnotation(testClass,
|
||||
OverrideAutoConfiguration.class);
|
||||
boolean enabled = (overrideAutoConfiguration != null) ? overrideAutoConfiguration.enabled() : true;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2022 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.
|
||||
@ -20,6 +20,7 @@ import java.util.Arrays;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.aot.AotDetector;
|
||||
import org.springframework.boot.context.TypeExcludeFilter;
|
||||
import org.springframework.test.context.ContextConfigurationAttributes;
|
||||
import org.springframework.test.context.ContextCustomizer;
|
||||
@ -42,6 +43,9 @@ class TypeExcludeFiltersContextCustomizerFactory implements ContextCustomizerFac
|
||||
@Override
|
||||
public ContextCustomizer createContextCustomizer(Class<?> testClass,
|
||||
List<ContextConfigurationAttributes> configurationAttributes) {
|
||||
if (AotDetector.useGeneratedArtifacts()) {
|
||||
return null;
|
||||
}
|
||||
AnnotationDescriptor<TypeExcludeFilters> descriptor = TestContextAnnotationUtils
|
||||
.findAnnotationDescriptor(testClass, TypeExcludeFilters.class);
|
||||
Class<?>[] filterClasses = (descriptor != null) ? descriptor.getAnnotation().value() : NO_FILTERS;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
* Copyright 2012-2022 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.
|
||||
@ -19,6 +19,7 @@ package org.springframework.boot.test.context;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.aot.AotDetector;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.core.annotation.MergedAnnotations;
|
||||
@ -42,6 +43,9 @@ class ImportsContextCustomizerFactory implements ContextCustomizerFactory {
|
||||
@Override
|
||||
public ContextCustomizer createContextCustomizer(Class<?> testClass,
|
||||
List<ContextConfigurationAttributes> configAttributes) {
|
||||
if (AotDetector.useGeneratedArtifacts()) {
|
||||
return null;
|
||||
}
|
||||
AnnotationDescriptor<Import> descriptor = TestContextAnnotationUtils.findAnnotationDescriptor(testClass,
|
||||
Import.class);
|
||||
if (descriptor != null) {
|
||||
|
Loading…
Reference in New Issue
Block a user