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 {
@Override
protected MergedContextConfiguration processMergedContextConfiguration(MergedContextConfiguration mergedConfig) {
MergedContextConfiguration processedMergedConfiguration = super.processMergedContextConfiguration(mergedConfig);
return new WebMergedContextConfiguration(processedMergedConfiguration,
getServletResourceBasePath(mergedConfig));
return new WebMergedContextConfiguration(processedMergedConfiguration, determineResourceBasePath(mergedConfig));
}
@Override
......
......@@ -32,8 +32,8 @@ import org.springframework.test.context.web.WebAppConfiguration;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Tests for {@link WebMvcTest} when loading resources via {@link ServletContext} with
* {@link WebAppConfiguration}.
* Tests for {@link WebMvcTest @WebMvcTest} when loading resources via the
* {@link ServletContext} with {@link WebAppConfiguration @WebAppConfiguration}.
*
* @author Lorenzo Dee
*/
......@@ -46,7 +46,7 @@ public class WebMvcTestWithWebAppConfigurationTests {
private ServletContext servletContext;
@Test
public void getResourceLocation() throws Exception {
public void whenBasePathIsCustomizedResourcesCanBeLoadedFromThatLocation() throws Exception {
testResource("/inwebapp", "src/test/webapp");
testResource("/inmetainfresources", "/META-INF/resources");
testResource("/inresources", "/resources");
......
......@@ -154,8 +154,7 @@ public class SpringBootTestContextBootstrapper extends DefaultTestContextBootstr
WebApplicationType webApplicationType = getWebApplicationType(mergedConfig);
if (webApplicationType == WebApplicationType.SERVLET
&& (webEnvironment.isEmbedded() || webEnvironment == WebEnvironment.MOCK)) {
mergedConfig = new WebMergedContextConfiguration(mergedConfig,
getServletResourceBasePath(mergedConfig));
mergedConfig = new WebMergedContextConfiguration(mergedConfig, determineResourceBasePath(mergedConfig));
}
else if (webApplicationType == WebApplicationType.REACTIVE
&& (webEnvironment.isEmbedded() || webEnvironment == WebEnvironment.MOCK)) {
......@@ -187,7 +186,15 @@ public class SpringBootTestContextBootstrapper extends DefaultTestContextBootstr
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
.findMergedAnnotation(configuration.getTestClass(), WebAppConfiguration.class);
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