Skip to content

Commit c5566e2

Browse files
committed
Fix broken build
Update EnableAutoConfigurationImportSelectorTests to match the new `excludeName` property. Closes gh-2660
1 parent a6f671b commit c5566e2

File tree

2 files changed

+36
-12
lines changed

2 files changed

+36
-12
lines changed

spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/EnableAutoConfigurationImportSelector.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,11 @@ public String[] selectImports(AnnotationMetadata metadata) {
7474
this.beanClassLoader)));
7575

7676
// Remove those specifically disabled
77-
exclude(Arrays.asList(attributes.getStringArray("exclude")), factories);
78-
exclude(Arrays.asList(attributes.getStringArray("excludeName")), factories);
77+
List<String> excluded = new ArrayList<String>();
78+
excluded.addAll(Arrays.asList(attributes.getStringArray("exclude")));
79+
excluded.addAll(Arrays.asList(attributes.getStringArray("excludeName")));
80+
factories.removeAll(excluded);
81+
ConditionEvaluationReport.get(this.beanFactory).recordExclusions(excluded);
7982

8083
// Sort
8184
factories = new AutoConfigurationSorter(this.resourceLoader)
@@ -88,11 +91,6 @@ public String[] selectImports(AnnotationMetadata metadata) {
8891
}
8992
}
9093

91-
private void exclude(List<String> excluded, List<String> factories) {
92-
factories.removeAll(excluded);
93-
ConditionEvaluationReport.get(this.beanFactory).recordExclusions(excluded);
94-
}
95-
9694
@Override
9795
public void setBeanClassLoader(ClassLoader classLoader) {
9896
this.beanClassLoader = classLoader;

spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/EnableAutoConfigurationImportSelectorTests.java

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,14 @@
2727
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
2828
import org.springframework.boot.autoconfigure.condition.ConditionEvaluationReport;
2929
import org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration;
30+
import org.springframework.boot.autoconfigure.velocity.VelocityAutoConfiguration;
3031
import org.springframework.core.annotation.AnnotationAttributes;
3132
import org.springframework.core.io.DefaultResourceLoader;
3233
import org.springframework.core.io.support.SpringFactoriesLoader;
3334
import org.springframework.core.type.AnnotationMetadata;
3435

3536
import static org.hamcrest.Matchers.contains;
37+
import static org.hamcrest.Matchers.containsInAnyOrder;
3638
import static org.hamcrest.Matchers.equalTo;
3739
import static org.hamcrest.Matchers.hasSize;
3840
import static org.hamcrest.Matchers.is;
@@ -43,6 +45,7 @@
4345
* Tests for {@link EnableAutoConfigurationImportSelector}
4446
*
4547
* @author Andy Wilkinson
48+
* @author Stephane Nicoll
4649
*/
4750
@RunWith(MockitoJUnitRunner.class)
4851
public class EnableAutoConfigurationImportSelectorTests {
@@ -65,7 +68,7 @@ public void configureImportSelector() {
6568

6669
@Test
6770
public void importsAreSelected() {
68-
configureExclusions();
71+
configureExclusions(new String[0], new String[0]);
6972
String[] imports = this.importSelector.selectImports(this.annotationMetadata);
7073
assertThat(
7174
imports.length,
@@ -77,21 +80,44 @@ EnableAutoConfiguration.class, getClass().getClassLoader())
7780
}
7881

7982
@Test
80-
public void exclusionsAreApplied() {
81-
configureExclusions(FreeMarkerAutoConfiguration.class.getName());
83+
public void classExclusionsAreApplied() {
84+
configureExclusions(new String[]{FreeMarkerAutoConfiguration.class.getName()}, new String[0]);
8285
String[] imports = this.importSelector.selectImports(this.annotationMetadata);
8386
assertThat(imports.length,
8487
is(equalTo(getAutoConfigurationClassNames().size() - 1)));
8588
assertThat(ConditionEvaluationReport.get(this.beanFactory).getExclusions(),
8689
contains(FreeMarkerAutoConfiguration.class.getName()));
8790
}
8891

89-
private void configureExclusions(String... exclusions) {
92+
@Test
93+
public void classNamesExclusionsAreApplied() {
94+
configureExclusions(new String[0], new String[]{VelocityAutoConfiguration.class.getName()});
95+
String[] imports = this.importSelector.selectImports(this.annotationMetadata);
96+
assertThat(imports.length,
97+
is(equalTo(getAutoConfigurationClassNames().size() - 1)));
98+
assertThat(ConditionEvaluationReport.get(this.beanFactory).getExclusions(),
99+
contains(VelocityAutoConfiguration.class.getName()));
100+
}
101+
102+
@Test
103+
public void bothExclusionsAreApplied() {
104+
configureExclusions(new String[]{VelocityAutoConfiguration.class.getName()},
105+
new String[]{FreeMarkerAutoConfiguration.class.getName()});
106+
String[] imports = this.importSelector.selectImports(this.annotationMetadata);
107+
assertThat(imports.length,
108+
is(equalTo(getAutoConfigurationClassNames().size() - 2)));
109+
assertThat(ConditionEvaluationReport.get(this.beanFactory).getExclusions(),
110+
containsInAnyOrder(FreeMarkerAutoConfiguration.class.getName(),
111+
VelocityAutoConfiguration.class.getName()));
112+
}
113+
114+
private void configureExclusions(String[] classExclusion, String[] nameExclusion) {
90115
given(
91116
this.annotationMetadata.getAnnotationAttributes(
92117
EnableAutoConfiguration.class.getName(), true)).willReturn(
93118
this.annotationAttributes);
94-
given(this.annotationAttributes.getStringArray("exclude")).willReturn(exclusions);
119+
given(this.annotationAttributes.getStringArray("exclude")).willReturn(classExclusion);
120+
given(this.annotationAttributes.getStringArray("excludeName")).willReturn(nameExclusion);
95121
}
96122

97123
private List<String> getAutoConfigurationClassNames() {

0 commit comments

Comments
 (0)