From c85f19b75b9d8bc9b79fc2652479f42a968da921 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Mon, 20 Jan 2020 14:55:20 +0000 Subject: [PATCH] Revert "Add profiles directly to the application environment for tests" This reverts commit 487b9cbf963829ea33ba3c1fde48a9265c633e9d. Fixes gh-19788 --- .../test/context/SpringBootContextLoader.java | 8 +++- .../context/SpringBootContextLoaderTests.java | 45 +------------------ 2 files changed, 8 insertions(+), 45 deletions(-) diff --git a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/context/SpringBootContextLoader.java b/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/context/SpringBootContextLoader.java index d0868f1448..81240a1ee5 100644 --- a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/context/SpringBootContextLoader.java +++ b/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/context/SpringBootContextLoader.java @@ -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.MapConfigurationPropertySource; 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.servlet.support.ServletContextApplicationContextInitializer; import org.springframework.context.ApplicationContext; @@ -92,7 +93,7 @@ public class SpringBootContextLoader extends AbstractContextLoader { application.getSources().addAll(Arrays.asList(configLocations)); ConfigurableEnvironment environment = getEnvironment(); if (!ObjectUtils.isEmpty(config.getActiveProfiles())) { - environment.setActiveProfiles(config.getActiveProfiles()); + setActiveProfiles(environment, config.getActiveProfiles()); } ResourceLoader resourceLoader = (application.getResourceLoader() != null) ? application.getResourceLoader() : new DefaultResourceLoader(getClass().getClassLoader()); @@ -138,6 +139,11 @@ public class SpringBootContextLoader extends AbstractContextLoader { 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) { ArrayList properties = new ArrayList<>(); // JMX bean names will clash if the same bean is used in multiple contexts diff --git a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/context/SpringBootContextLoaderTests.java b/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/context/SpringBootContextLoaderTests.java index 00e7ade481..876e3266db 100644 --- a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/context/SpringBootContextLoaderTests.java +++ b/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/context/SpringBootContextLoaderTests.java @@ -22,8 +22,6 @@ import org.junit.Ignore; import org.junit.Test; 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.MergedContextConfiguration; import org.springframework.test.context.TestContext; @@ -91,40 +89,13 @@ public class SpringBootContextLoaderTests { 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 getEnvironmentProperties(Class testClass) { - TestContext context = getTestContext(testClass); + TestContext context = new ExposedTestContextManager(testClass).getExposedTestContext(); MergedContextConfiguration config = (MergedContextConfiguration) ReflectionTestUtils.getField(context, "mergedContextConfiguration"); 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 actual, String key, Object value) { assertThat(actual.containsKey(key)).as("Key '" + key + "' not found").isTrue(); 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 static class Config {