mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-09-03 04:26:12 +08:00
Revert "Add profiles directly to the application environment for tests"
This reverts commit 487b9cbf96
.
Fixes gh-19788
This commit is contained in:
parent
11efe172e9
commit
c85f19b75b
@ -28,6 +28,7 @@ import org.springframework.boot.context.properties.bind.Binder;
|
|||||||
import org.springframework.boot.context.properties.source.ConfigurationPropertySource;
|
import org.springframework.boot.context.properties.source.ConfigurationPropertySource;
|
||||||
import org.springframework.boot.context.properties.source.MapConfigurationPropertySource;
|
import org.springframework.boot.context.properties.source.MapConfigurationPropertySource;
|
||||||
import org.springframework.boot.test.mock.web.SpringBootMockServletContext;
|
import org.springframework.boot.test.mock.web.SpringBootMockServletContext;
|
||||||
|
import org.springframework.boot.test.util.TestPropertyValues;
|
||||||
import org.springframework.boot.web.reactive.context.GenericReactiveWebApplicationContext;
|
import org.springframework.boot.web.reactive.context.GenericReactiveWebApplicationContext;
|
||||||
import org.springframework.boot.web.servlet.support.ServletContextApplicationContextInitializer;
|
import org.springframework.boot.web.servlet.support.ServletContextApplicationContextInitializer;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
@ -92,7 +93,7 @@ public class SpringBootContextLoader extends AbstractContextLoader {
|
|||||||
application.getSources().addAll(Arrays.asList(configLocations));
|
application.getSources().addAll(Arrays.asList(configLocations));
|
||||||
ConfigurableEnvironment environment = getEnvironment();
|
ConfigurableEnvironment environment = getEnvironment();
|
||||||
if (!ObjectUtils.isEmpty(config.getActiveProfiles())) {
|
if (!ObjectUtils.isEmpty(config.getActiveProfiles())) {
|
||||||
environment.setActiveProfiles(config.getActiveProfiles());
|
setActiveProfiles(environment, config.getActiveProfiles());
|
||||||
}
|
}
|
||||||
ResourceLoader resourceLoader = (application.getResourceLoader() != null) ? application.getResourceLoader()
|
ResourceLoader resourceLoader = (application.getResourceLoader() != null) ? application.getResourceLoader()
|
||||||
: new DefaultResourceLoader(getClass().getClassLoader());
|
: new DefaultResourceLoader(getClass().getClassLoader());
|
||||||
@ -138,6 +139,11 @@ public class SpringBootContextLoader extends AbstractContextLoader {
|
|||||||
return new StandardEnvironment();
|
return new StandardEnvironment();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setActiveProfiles(ConfigurableEnvironment environment, String[] profiles) {
|
||||||
|
TestPropertyValues.of("spring.profiles.active=" + StringUtils.arrayToCommaDelimitedString(profiles))
|
||||||
|
.applyTo(environment);
|
||||||
|
}
|
||||||
|
|
||||||
protected String[] getInlinedProperties(MergedContextConfiguration config) {
|
protected String[] getInlinedProperties(MergedContextConfiguration config) {
|
||||||
ArrayList<String> properties = new ArrayList<>();
|
ArrayList<String> properties = new ArrayList<>();
|
||||||
// JMX bean names will clash if the same bean is used in multiple contexts
|
// JMX bean names will clash if the same bean is used in multiple contexts
|
||||||
|
@ -22,8 +22,6 @@ import org.junit.Ignore;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.core.env.Environment;
|
|
||||||
import org.springframework.test.context.ActiveProfiles;
|
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
import org.springframework.test.context.MergedContextConfiguration;
|
import org.springframework.test.context.MergedContextConfiguration;
|
||||||
import org.springframework.test.context.TestContext;
|
import org.springframework.test.context.TestContext;
|
||||||
@ -91,40 +89,13 @@ public class SpringBootContextLoaderTests {
|
|||||||
assertKey(config, "variables", "foo=FOO\n bar=BAR");
|
assertKey(config, "variables", "foo=FOO\n bar=BAR");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void noActiveProfiles() {
|
|
||||||
Environment environment = getApplicationEnvironment(SimpleConfig.class);
|
|
||||||
assertThat(environment.getActiveProfiles()).isEmpty();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void multipleActiveProfiles() {
|
|
||||||
Environment environment = getApplicationEnvironment(MultipleActiveProfiles.class);
|
|
||||||
assertThat(environment.getActiveProfiles()).containsExactly("profile1", "profile2");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void activeProfileWithComma() {
|
|
||||||
Environment environment = getApplicationEnvironment(ActiveProfileWithComma.class);
|
|
||||||
assertThat(environment.getActiveProfiles()).containsExactly("profile1,2");
|
|
||||||
}
|
|
||||||
|
|
||||||
private Map<String, Object> getEnvironmentProperties(Class<?> testClass) {
|
private Map<String, Object> getEnvironmentProperties(Class<?> testClass) {
|
||||||
TestContext context = getTestContext(testClass);
|
TestContext context = new ExposedTestContextManager(testClass).getExposedTestContext();
|
||||||
MergedContextConfiguration config = (MergedContextConfiguration) ReflectionTestUtils.getField(context,
|
MergedContextConfiguration config = (MergedContextConfiguration) ReflectionTestUtils.getField(context,
|
||||||
"mergedContextConfiguration");
|
"mergedContextConfiguration");
|
||||||
return TestPropertySourceUtils.convertInlinedPropertiesToMap(config.getPropertySourceProperties());
|
return TestPropertySourceUtils.convertInlinedPropertiesToMap(config.getPropertySourceProperties());
|
||||||
}
|
}
|
||||||
|
|
||||||
private Environment getApplicationEnvironment(Class<?> testClass) {
|
|
||||||
TestContext context = getTestContext(testClass);
|
|
||||||
return context.getApplicationContext().getEnvironment();
|
|
||||||
}
|
|
||||||
|
|
||||||
private TestContext getTestContext(Class<?> testClass) {
|
|
||||||
return new ExposedTestContextManager(testClass).getExposedTestContext();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void assertKey(Map<String, Object> actual, String key, Object value) {
|
private void assertKey(Map<String, Object> actual, String key, Object value) {
|
||||||
assertThat(actual.containsKey(key)).as("Key '" + key + "' not found").isTrue();
|
assertThat(actual.containsKey(key)).as("Key '" + key + "' not found").isTrue();
|
||||||
assertThat(actual.get(key)).isEqualTo(value);
|
assertThat(actual.get(key)).isEqualTo(value);
|
||||||
@ -172,20 +143,6 @@ public class SpringBootContextLoaderTests {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SpringBootTest
|
|
||||||
@ActiveProfiles({ "profile1", "profile2" })
|
|
||||||
@ContextConfiguration(classes = Config.class)
|
|
||||||
static class MultipleActiveProfiles {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@SpringBootTest
|
|
||||||
@ActiveProfiles({ "profile1,2" })
|
|
||||||
@ContextConfiguration(classes = Config.class)
|
|
||||||
static class ActiveProfileWithComma {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
static class Config {
|
static class Config {
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user