commit
						67fab60fbd
					
				|  | @ -29,7 +29,6 @@ import org.springframework.boot.context.properties.source.ConfigurationPropertyS | ||||||
| import org.springframework.boot.context.properties.source.MapConfigurationPropertySource; | import org.springframework.boot.context.properties.source.MapConfigurationPropertySource; | ||||||
| import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; | import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; | ||||||
| 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; | ||||||
|  | @ -76,6 +75,7 @@ import org.springframework.web.context.support.GenericWebApplicationContext; | ||||||
|  * @author Andy Wilkinson |  * @author Andy Wilkinson | ||||||
|  * @author Stephane Nicoll |  * @author Stephane Nicoll | ||||||
|  * @author Madhura Bhave |  * @author Madhura Bhave | ||||||
|  |  * @author Scott Frederick | ||||||
|  * @since 1.4.0 |  * @since 1.4.0 | ||||||
|  * @see SpringBootTest |  * @see SpringBootTest | ||||||
|  */ |  */ | ||||||
|  | @ -97,7 +97,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())) { | ||||||
| 			setActiveProfiles(environment, config.getActiveProfiles()); | 			environment.setActiveProfiles(config.getActiveProfiles()); | ||||||
| 		} | 		} | ||||||
| 		ResourceLoader resourceLoader = (application.getResourceLoader() != null) ? application.getResourceLoader() | 		ResourceLoader resourceLoader = (application.getResourceLoader() != null) ? application.getResourceLoader() | ||||||
| 				: new DefaultResourceLoader(getClass().getClassLoader()); | 				: new DefaultResourceLoader(getClass().getClassLoader()); | ||||||
|  | @ -155,11 +155,6 @@ public class SpringBootContextLoader extends AbstractContextLoader { | ||||||
| 				.getValue("args", String[].class).orElse(NO_ARGS); | 				.getValue("args", String[].class).orElse(NO_ARGS); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	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,6 +22,8 @@ import org.junit.jupiter.api.Disabled; | ||||||
| import org.junit.jupiter.api.Test; | import org.junit.jupiter.api.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; | ||||||
|  | @ -35,6 +37,7 @@ import static org.assertj.core.api.Assertions.assertThat; | ||||||
|  * Tests for {@link SpringBootContextLoader} |  * Tests for {@link SpringBootContextLoader} | ||||||
|  * |  * | ||||||
|  * @author Stephane Nicoll |  * @author Stephane Nicoll | ||||||
|  |  * @author Scott Frederick | ||||||
|  */ |  */ | ||||||
| class SpringBootContextLoaderTests { | class SpringBootContextLoaderTests { | ||||||
| 
 | 
 | ||||||
|  | @ -88,13 +91,40 @@ 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 = new ExposedTestContextManager(testClass).getExposedTestContext(); | 		TestContext context = getTestContext(testClass); | ||||||
| 		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); | ||||||
|  | @ -142,6 +172,20 @@ 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(proxyBeanMethods = false) | 	@Configuration(proxyBeanMethods = false) | ||||||
| 	static class Config { | 	static class Config { | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue