Commit 645514f8 authored by Andy Wilkinson's avatar Andy Wilkinson

Polish "Honour base path from @WebAppConfiguration in @WebMvcTest"

See gh-16485
parent 7340d546
...@@ -34,8 +34,7 @@ class WebMvcTestContextBootstrapper extends SpringBootTestContextBootstrapper { ...@@ -34,8 +34,7 @@ class WebMvcTestContextBootstrapper extends SpringBootTestContextBootstrapper {
@Override @Override
protected MergedContextConfiguration processMergedContextConfiguration(MergedContextConfiguration mergedConfig) { protected MergedContextConfiguration processMergedContextConfiguration(MergedContextConfiguration mergedConfig) {
MergedContextConfiguration processedMergedConfiguration = super.processMergedContextConfiguration(mergedConfig); MergedContextConfiguration processedMergedConfiguration = super.processMergedContextConfiguration(mergedConfig);
return new WebMergedContextConfiguration(processedMergedConfiguration, return new WebMergedContextConfiguration(processedMergedConfiguration, determineResourceBasePath(mergedConfig));
getServletResourceBasePath(mergedConfig));
} }
@Override @Override
......
...@@ -32,8 +32,8 @@ import org.springframework.test.context.web.WebAppConfiguration; ...@@ -32,8 +32,8 @@ import org.springframework.test.context.web.WebAppConfiguration;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
/** /**
* Tests for {@link WebMvcTest} when loading resources via {@link ServletContext} with * Tests for {@link WebMvcTest @WebMvcTest} when loading resources via the
* {@link WebAppConfiguration}. * {@link ServletContext} with {@link WebAppConfiguration @WebAppConfiguration}.
* *
* @author Lorenzo Dee * @author Lorenzo Dee
*/ */
...@@ -46,7 +46,7 @@ public class WebMvcTestWithWebAppConfigurationTests { ...@@ -46,7 +46,7 @@ public class WebMvcTestWithWebAppConfigurationTests {
private ServletContext servletContext; private ServletContext servletContext;
@Test @Test
public void getResourceLocation() throws Exception { public void whenBasePathIsCustomizedResourcesCanBeLoadedFromThatLocation() throws Exception {
testResource("/inwebapp", "src/test/webapp"); testResource("/inwebapp", "src/test/webapp");
testResource("/inmetainfresources", "/META-INF/resources"); testResource("/inmetainfresources", "/META-INF/resources");
testResource("/inresources", "/resources"); testResource("/inresources", "/resources");
......
...@@ -154,8 +154,7 @@ public class SpringBootTestContextBootstrapper extends DefaultTestContextBootstr ...@@ -154,8 +154,7 @@ public class SpringBootTestContextBootstrapper extends DefaultTestContextBootstr
WebApplicationType webApplicationType = getWebApplicationType(mergedConfig); WebApplicationType webApplicationType = getWebApplicationType(mergedConfig);
if (webApplicationType == WebApplicationType.SERVLET if (webApplicationType == WebApplicationType.SERVLET
&& (webEnvironment.isEmbedded() || webEnvironment == WebEnvironment.MOCK)) { && (webEnvironment.isEmbedded() || webEnvironment == WebEnvironment.MOCK)) {
mergedConfig = new WebMergedContextConfiguration(mergedConfig, mergedConfig = new WebMergedContextConfiguration(mergedConfig, determineResourceBasePath(mergedConfig));
getServletResourceBasePath(mergedConfig));
} }
else if (webApplicationType == WebApplicationType.REACTIVE else if (webApplicationType == WebApplicationType.REACTIVE
&& (webEnvironment.isEmbedded() || webEnvironment == WebEnvironment.MOCK)) { && (webEnvironment.isEmbedded() || webEnvironment == WebEnvironment.MOCK)) {
...@@ -187,7 +186,15 @@ public class SpringBootTestContextBootstrapper extends DefaultTestContextBootstr ...@@ -187,7 +186,15 @@ public class SpringBootTestContextBootstrapper extends DefaultTestContextBootstr
return WebApplicationType.SERVLET; return WebApplicationType.SERVLET;
} }
protected String getServletResourceBasePath(MergedContextConfiguration configuration) { /**
* Determines the resource base path for web applications using the value of
* {@link WebAppConfiguration @WebAppConfiguration}, if any, on the test class of the
* given {@code configuration}. Defaults to {@code src/main/webapp} in its absence.
* @param configuration the configure to examine
* @return the resource base path
* @since 2.1.6
*/
protected String determineResourceBasePath(MergedContextConfiguration configuration) {
WebAppConfiguration webAppConfiguration = AnnotatedElementUtils WebAppConfiguration webAppConfiguration = AnnotatedElementUtils
.findMergedAnnotation(configuration.getTestClass(), WebAppConfiguration.class); .findMergedAnnotation(configuration.getTestClass(), WebAppConfiguration.class);
return (webAppConfiguration != null) ? webAppConfiguration.value() : "src/main/webapp"; return (webAppConfiguration != null) ? webAppConfiguration.value() : "src/main/webapp";
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment