Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
a189e4cf
Commit
a189e4cf
authored
Jun 17, 2019
by
Andy Wilkinson
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '2.1.x'
Closes gh-17220
parents
9d355f00
ceace66a
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
137 additions
and
5 deletions
+137
-5
WebMvcTestContextBootstrapper.java
...oconfigure/web/servlet/WebMvcTestContextBootstrapper.java
+3
-1
inwebapp
...t/spring-boot-test-autoconfigure/src/main/webapp/inwebapp
+0
-0
WebMvcTestServletContextResourceTests.java
...ervlet/mockmvc/WebMvcTestServletContextResourceTests.java
+58
-0
WebMvcTestWithWebAppConfigurationTests.java
...rvlet/mockmvc/WebMvcTestWithWebAppConfigurationTests.java
+60
-0
inmetainfresources
.../src/test/resources/META-INF/resources/inmetainfresources
+0
-0
inpublic
...oot-test-autoconfigure/src/test/resources/public/inpublic
+0
-0
inresources
...st-autoconfigure/src/test/resources/resources/inresources
+0
-0
instatic
...oot-test-autoconfigure/src/test/resources/static/instatic
+0
-0
inwebapp
...t/spring-boot-test-autoconfigure/src/test/webapp/inwebapp
+0
-0
SpringBootTestContextBootstrapper.java
.../boot/test/context/SpringBootTestContextBootstrapper.java
+16
-4
No files found.
spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/servlet/WebMvcTestContextBootstrapper.java
View file @
a189e4cf
...
...
@@ -28,12 +28,14 @@ import org.springframework.test.context.web.WebMergedContextConfiguration;
*
* @author Phillip Webb
* @author Artsiom Yudovin
* @author Lorenzo Dee
*/
class
WebMvcTestContextBootstrapper
extends
SpringBootTestContextBootstrapper
{
@Override
protected
MergedContextConfiguration
processMergedContextConfiguration
(
MergedContextConfiguration
mergedConfig
)
{
return
new
WebMergedContextConfiguration
(
super
.
processMergedContextConfiguration
(
mergedConfig
),
""
);
MergedContextConfiguration
processedMergedConfiguration
=
super
.
processMergedContextConfiguration
(
mergedConfig
);
return
new
WebMergedContextConfiguration
(
processedMergedConfiguration
,
determineResourceBasePath
(
mergedConfig
));
}
@Override
...
...
spring-boot-project/spring-boot-test-autoconfigure/src/main/webapp/inwebapp
0 → 100644
View file @
a189e4cf
spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/servlet/mockmvc/WebMvcTestServletContextResourceTests.java
0 → 100644
View file @
a189e4cf
/*
* Copyright 2012-2019 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.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
test
.
autoconfigure
.
web
.
servlet
.
mockmvc
;
import
java.net.MalformedURLException
;
import
java.net.URL
;
import
javax.servlet.ServletContext
;
import
org.junit.jupiter.api.Test
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
/**
* Tests for {@link WebMvcTest @WebMvcTest} when loading resources via
* {@link ServletContext}.
*
* @author Lorenzo Dee
*/
@WebMvcTest
class
WebMvcTestServletContextResourceTests
{
@Autowired
private
ServletContext
servletContext
;
@Test
void
getResourceLocation
()
throws
Exception
{
testResource
(
"/inwebapp"
,
"src/main/webapp"
);
testResource
(
"/inmetainfresources"
,
"/META-INF/resources"
);
testResource
(
"/inresources"
,
"/resources"
);
testResource
(
"/instatic"
,
"/static"
);
testResource
(
"/inpublic"
,
"/public"
);
}
private
void
testResource
(
String
path
,
String
expectedLocation
)
throws
MalformedURLException
{
URL
resource
=
this
.
servletContext
.
getResource
(
path
);
assertThat
(
resource
).
isNotNull
();
assertThat
(
resource
.
getPath
()).
contains
(
expectedLocation
);
}
}
spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/servlet/mockmvc/WebMvcTestWithWebAppConfigurationTests.java
0 → 100644
View file @
a189e4cf
/*
* Copyright 2012-2019 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.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
test
.
autoconfigure
.
web
.
servlet
.
mockmvc
;
import
java.net.MalformedURLException
;
import
java.net.URL
;
import
javax.servlet.ServletContext
;
import
org.junit.jupiter.api.Test
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
;
import
org.springframework.test.context.web.WebAppConfiguration
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
/**
* Tests for {@link WebMvcTest @WebMvcTest} when loading resources via the
* {@link ServletContext} with {@link WebAppConfiguration @WebAppConfiguration}.
*
* @author Lorenzo Dee
*/
@WebMvcTest
@WebAppConfiguration
(
"src/test/webapp"
)
class
WebMvcTestWithWebAppConfigurationTests
{
@Autowired
private
ServletContext
servletContext
;
@Test
void
whenBasePathIsCustomizedResourcesCanBeLoadedFromThatLocation
()
throws
Exception
{
testResource
(
"/inwebapp"
,
"src/test/webapp"
);
testResource
(
"/inmetainfresources"
,
"/META-INF/resources"
);
testResource
(
"/inresources"
,
"/resources"
);
testResource
(
"/instatic"
,
"/static"
);
testResource
(
"/inpublic"
,
"/public"
);
}
private
void
testResource
(
String
path
,
String
expectedLocation
)
throws
MalformedURLException
{
URL
resource
=
this
.
servletContext
.
getResource
(
path
);
assertThat
(
resource
).
isNotNull
();
assertThat
(
resource
.
getPath
()).
contains
(
expectedLocation
);
}
}
spring-boot-project/spring-boot-test-autoconfigure/src/test/resources/META-INF/resources/inmetainfresources
0 → 100644
View file @
a189e4cf
spring-boot-project/spring-boot-test-autoconfigure/src/test/resources/public/inpublic
0 → 100644
View file @
a189e4cf
spring-boot-project/spring-boot-test-autoconfigure/src/test/resources/resources/inresources
0 → 100644
View file @
a189e4cf
spring-boot-project/spring-boot-test-autoconfigure/src/test/resources/static/instatic
0 → 100644
View file @
a189e4cf
spring-boot-project/spring-boot-test-autoconfigure/src/test/webapp/inwebapp
0 → 100644
View file @
a189e4cf
spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/context/SpringBootTestContextBootstrapper.java
View file @
a189e4cf
...
...
@@ -72,6 +72,7 @@ import org.springframework.util.StringUtils;
* @author Andy Wilkinson
* @author Brian Clozel
* @author Madhura Bhave
* @author Lorenzo Dee
* @since 1.4.0
* @see SpringBootTest
* @see TestConfiguration
...
...
@@ -154,10 +155,7 @@ public class SpringBootTestContextBootstrapper extends DefaultTestContextBootstr
WebApplicationType
webApplicationType
=
getWebApplicationType
(
mergedConfig
);
if
(
webApplicationType
==
WebApplicationType
.
SERVLET
&&
(
webEnvironment
.
isEmbedded
()
||
webEnvironment
==
WebEnvironment
.
MOCK
))
{
String
resourceBasePath
=
MergedAnnotations
.
from
(
mergedConfig
.
getTestClass
(),
SearchStrategy
.
EXHAUSTIVE
)
.
get
(
WebAppConfiguration
.
class
).
getValue
(
MergedAnnotation
.
VALUE
,
String
.
class
)
.
orElse
(
"src/main/webapp"
);
mergedConfig
=
new
WebMergedContextConfiguration
(
mergedConfig
,
resourceBasePath
);
mergedConfig
=
new
WebMergedContextConfiguration
(
mergedConfig
,
determineResourceBasePath
(
mergedConfig
));
}
else
if
(
webApplicationType
==
WebApplicationType
.
REACTIVE
&&
(
webEnvironment
.
isEmbedded
()
||
webEnvironment
==
WebEnvironment
.
MOCK
))
{
...
...
@@ -189,6 +187,20 @@ public class SpringBootTestContextBootstrapper extends DefaultTestContextBootstr
return
WebApplicationType
.
SERVLET
;
}
/**
* 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
)
{
return
MergedAnnotations
.
from
(
configuration
.
getTestClass
(),
SearchStrategy
.
EXHAUSTIVE
)
.
get
(
WebAppConfiguration
.
class
).
getValue
(
MergedAnnotation
.
VALUE
,
String
.
class
)
.
orElse
(
"src/main/webapp"
);
}
private
boolean
isWebEnvironmentSupported
(
MergedContextConfiguration
mergedConfig
)
{
Class
<?>
testClass
=
mergedConfig
.
getTestClass
();
ContextHierarchy
hierarchy
=
AnnotationUtils
.
getAnnotation
(
testClass
,
ContextHierarchy
.
class
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment