Polish "Process additional profiles before config files processing"

See gh-25817
pull/26446/head
Madhura Bhave 4 years ago
parent 6f266145c7
commit 2e1b20ce2b

@ -154,7 +154,6 @@ import org.springframework.web.context.support.StandardServletEnvironment;
* @author Madhura Bhave * @author Madhura Bhave
* @author Brian Clozel * @author Brian Clozel
* @author Ethan Rubinson * @author Ethan Rubinson
* @author Nguyen Bao Sach
* @since 1.0.0 * @since 1.0.0
* @see #run(Class, String[]) * @see #run(Class, String[])
* @see #run(Class[], String[]) * @see #run(Class[], String[])

@ -605,17 +605,6 @@ class SpringApplicationTests {
assertThat(environment.getActiveProfiles()).containsExactly("bar", "spam", "foo"); assertThat(environment.getActiveProfiles()).containsExactly("bar", "spam", "foo");
} }
@Test
void includeProfilesOrder() {
SpringApplication application = new SpringApplication(ExampleConfig.class);
application.setWebApplicationType(WebApplicationType.NONE);
ConfigurableEnvironment environment = new StandardEnvironment();
application.setEnvironment(environment);
this.context = application.run("--spring.profiles.active=bar,spam", "--spring.profiles.include=foo");
// Since Boot 2.4 included profiles should always be last
assertThat(environment.getActiveProfiles()).containsExactly("bar", "spam", "foo");
}
@Test @Test
void addProfilesOrderWithProperties() { void addProfilesOrderWithProperties() {
SpringApplication application = new SpringApplication(ExampleConfig.class); SpringApplication application = new SpringApplication(ExampleConfig.class);

@ -83,7 +83,6 @@ class ConfigDataEnvironmentPostProcessorTests {
verify(this.postProcessor).getConfigDataEnvironment(any(), this.resourceLoaderCaptor.capture(), any()); verify(this.postProcessor).getConfigDataEnvironment(any(), this.resourceLoaderCaptor.capture(), any());
verify(this.configDataEnvironment).processAndApply(); verify(this.configDataEnvironment).processAndApply();
assertThat(this.resourceLoaderCaptor.getValue()).isInstanceOf(DefaultResourceLoader.class); assertThat(this.resourceLoaderCaptor.getValue()).isInstanceOf(DefaultResourceLoader.class);
assertThat(this.environment.getActiveProfiles()).isEmpty();
} }
@Test @Test
@ -95,7 +94,6 @@ class ConfigDataEnvironmentPostProcessorTests {
verify(this.postProcessor).getConfigDataEnvironment(any(), this.resourceLoaderCaptor.capture(), any()); verify(this.postProcessor).getConfigDataEnvironment(any(), this.resourceLoaderCaptor.capture(), any());
verify(this.configDataEnvironment).processAndApply(); verify(this.configDataEnvironment).processAndApply();
assertThat(this.resourceLoaderCaptor.getValue()).isSameAs(resourceLoader); assertThat(this.resourceLoaderCaptor.getValue()).isSameAs(resourceLoader);
assertThat(this.environment.getActiveProfiles()).isEmpty();
} }
@Test @Test
@ -106,6 +104,14 @@ class ConfigDataEnvironmentPostProcessorTests {
verify(this.postProcessor).getConfigDataEnvironment(any(), any(), this.additionalProfilesCaptor.capture()); verify(this.postProcessor).getConfigDataEnvironment(any(), any(), this.additionalProfilesCaptor.capture());
verify(this.configDataEnvironment).processAndApply(); verify(this.configDataEnvironment).processAndApply();
assertThat(this.additionalProfilesCaptor.getValue()).containsExactly("dev"); assertThat(this.additionalProfilesCaptor.getValue()).containsExactly("dev");
}
@Test
void postProcessEnvironmentWhenNoActiveProfiles() {
willReturn(this.configDataEnvironment).given(this.postProcessor).getConfigDataEnvironment(any(), any(), any());
this.postProcessor.postProcessEnvironment(this.environment, this.application);
verify(this.postProcessor).getConfigDataEnvironment(any(), this.resourceLoaderCaptor.capture(), any());
verify(this.configDataEnvironment).processAndApply();
assertThat(this.environment.getActiveProfiles()).isEmpty(); assertThat(this.environment.getActiveProfiles()).isEmpty();
} }
@ -123,7 +129,7 @@ class ConfigDataEnvironmentPostProcessorTests {
} }
@Test @Test
void postProcessEnvironmentWhenHasAdditionalProfilesViaProgrammaticallySettingAndUseLegacyProcessing() { void postProcessEnvironmentWhenHasAdditionalProfilesAndUseLegacyProcessing() {
this.application.setAdditionalProfiles("dev"); this.application.setAdditionalProfiles("dev");
ConfigDataEnvironmentPostProcessor.LegacyConfigFileApplicationListener legacyListener = mock( ConfigDataEnvironmentPostProcessor.LegacyConfigFileApplicationListener legacyListener = mock(
ConfigDataEnvironmentPostProcessor.LegacyConfigFileApplicationListener.class); ConfigDataEnvironmentPostProcessor.LegacyConfigFileApplicationListener.class);

@ -168,17 +168,6 @@ class ConfigFileApplicationListenerLegacyReproTests {
assertVersionProperty(this.context, "A", "C", "A"); assertVersionProperty(this.context, "A", "C", "A");
} }
@Test
void additionalProfilesViaProgrammaticallySetting() {
// gh-25704
SpringApplication application = new SpringApplication(Config.class);
application.setWebApplicationType(WebApplicationType.NONE);
application.setAdditionalProfiles("dev");
this.context = application.run();
assertThat(this.context.getEnvironment().acceptsProfiles(Profiles.of("dev"))).isTrue();
assertThat(this.context.getEnvironment().getProperty("my.property")).isEqualTo("fromdevpropertiesfile");
}
private void assertVersionProperty(ConfigurableApplicationContext context, String expectedVersion, private void assertVersionProperty(ConfigurableApplicationContext context, String expectedVersion,
String... expectedActiveProfiles) { String... expectedActiveProfiles) {
assertThat(context.getEnvironment().getActiveProfiles()).isEqualTo(expectedActiveProfiles); assertThat(context.getEnvironment().getActiveProfiles()).isEqualTo(expectedActiveProfiles);

@ -1153,17 +1153,6 @@ class ConfigFileApplicationListenerTests {
@Test @Test
void additionalProfilesCanBeIncludedFromProgrammaticallySetting() { void additionalProfilesCanBeIncludedFromProgrammaticallySetting() {
// gh-25704
SpringApplication application = new SpringApplication(Config.class);
application.setWebApplicationType(WebApplicationType.NONE);
application.setAdditionalProfiles("dev");
this.context = application.run();
// Active profile should win over default
assertThat(this.context.getEnvironment().getProperty("my.property")).isEqualTo("fromdevpropertiesfile");
}
@Test
void twoAdditionalProfilesCanBeIncludedFromProgrammaticallySetting() {
// gh-25704 // gh-25704
SpringApplication application = new SpringApplication(Config.class); SpringApplication application = new SpringApplication(Config.class);
application.setWebApplicationType(WebApplicationType.NONE); application.setWebApplicationType(WebApplicationType.NONE);
@ -1173,21 +1162,11 @@ class ConfigFileApplicationListenerTests {
} }
@Test @Test
void includeProfilesOrder() { void activeProfilesShouldTakePrecedenceOverAdditionalProfiles() {
SpringApplication application = new SpringApplication(Config.class);
application.setWebApplicationType(WebApplicationType.NONE);
this.context = application.run("--spring.profiles.active=bar,spam", "--spring.profiles.include=foo");
// Before Boot 2.4 included profiles should always be first
assertThat(this.context.getEnvironment().getActiveProfiles()).containsExactly("foo", "bar", "spam");
}
@Test
void addProfilesOrder() {
SpringApplication application = new SpringApplication(Config.class); SpringApplication application = new SpringApplication(Config.class);
application.setWebApplicationType(WebApplicationType.NONE); application.setWebApplicationType(WebApplicationType.NONE);
application.setAdditionalProfiles("foo"); application.setAdditionalProfiles("foo");
this.context = application.run("--spring.profiles.active=bar,spam"); this.context = application.run("--spring.profiles.active=bar,spam");
// Before Boot 2.4 additional profiles should always be first
assertThat(this.context.getEnvironment().getActiveProfiles()).containsExactly("foo", "bar", "spam"); assertThat(this.context.getEnvironment().getActiveProfiles()).containsExactly("foo", "bar", "spam");
} }

Loading…
Cancel
Save