Modify SpringApplication Environment rather than setting it
Update `SpringBootContextLoader` so that when possible the `SpringApplication` remains in control of creating the `Environment` instance. Prior to this commit, we would always create the `Environment` in the `SpringBootContextLoader` and then call `setEnvironment` on the `SpringApplication`. This meant that the `ApplicationEnvironment` classes were not used and that `isCustomEnvironment` was set to `true` so no conversion was applied. With the updated code, an `ApplicationListener` is used to mutate the `Environment` instance and add the required test property sources. Fixes gh-29169
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
* Copyright 2012-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -21,6 +21,7 @@ import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.env.EnvironmentPostProcessor;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.test.context.ActiveProfiles;
|
||||
|
||||
@@ -32,7 +33,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
*
|
||||
* @author Madhura Bhave
|
||||
*/
|
||||
@SpringBootTest(properties = "enableEnvironmentPostProcessor=true") // gh-28530
|
||||
@SpringBootTest(webEnvironment = WebEnvironment.NONE, properties = "enableEnvironmentPostProcessor=true") // gh-28530
|
||||
@ActiveProfiles("hello")
|
||||
class ActiveProfilesTests {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user