Register runtime hints for @TestPropertySource#locations
This commit introduces automatic registration of runtime hints for classpath resources configured via the `locations` attribute in @TestPropertySource as well as for detected default properties files. Closes gh-29025
This commit is contained in:
parent
dcf160e427
commit
ef7784f85e
|
@ -248,12 +248,21 @@ public class TestContextAotGenerator {
|
||||||
|
|
||||||
// @ContextConfiguration(locations = ...)
|
// @ContextConfiguration(locations = ...)
|
||||||
registerHintsForClasspathResources(mergedConfig.getLocations());
|
registerHintsForClasspathResources(mergedConfig.getLocations());
|
||||||
|
|
||||||
|
// @TestPropertySource(locations = ... )
|
||||||
|
registerHintsForClasspathResources(mergedConfig.getPropertySourceLocations());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registerHintsForClasspathResources(String... locations) {
|
private void registerHintsForClasspathResources(String... locations) {
|
||||||
Arrays.stream(locations)
|
Arrays.stream(locations)
|
||||||
.filter(location -> location.startsWith(CLASSPATH_URL_PREFIX))
|
.filter(location -> location.startsWith(CLASSPATH_URL_PREFIX))
|
||||||
.map(location -> location.substring(CLASSPATH_URL_PREFIX.length()))
|
.map(location -> {
|
||||||
|
location = location.substring(CLASSPATH_URL_PREFIX.length());
|
||||||
|
if (!location.startsWith("/")) {
|
||||||
|
location = "/" + location;
|
||||||
|
}
|
||||||
|
return location;
|
||||||
|
})
|
||||||
.forEach(this.runtimeHints.resources()::registerPattern);
|
.forEach(this.runtimeHints.resources()::registerPattern);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -171,6 +171,10 @@ class TestContextAotGeneratorTests extends AbstractAotTests {
|
||||||
// @ContextConfiguration(locations=...)
|
// @ContextConfiguration(locations=...)
|
||||||
assertThat(resource().forResource("/org/springframework/test/context/aot/samples/xml/test-config.xml"))
|
assertThat(resource().forResource("/org/springframework/test/context/aot/samples/xml/test-config.xml"))
|
||||||
.accepts(runtimeHints);
|
.accepts(runtimeHints);
|
||||||
|
|
||||||
|
// @TestPropertySource(locations = ... )
|
||||||
|
assertThat(resource().forResource("/org/springframework/test/context/aot/samples/basic/BasicSpringVintageTests.properties"))
|
||||||
|
.accepts(runtimeHints);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void assertReflectionRegistered(RuntimeHints runtimeHints, String type, MemberCategory memberCategory) {
|
private static void assertReflectionRegistered(RuntimeHints runtimeHints, String type, MemberCategory memberCategory) {
|
||||||
|
|
|
@ -42,7 +42,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||||
@RunWith(SpringRunner.class)
|
@RunWith(SpringRunner.class)
|
||||||
// Override the default loader configured by the CustomXmlBootstrapper
|
// Override the default loader configured by the CustomXmlBootstrapper
|
||||||
@ContextConfiguration(classes = BasicTestConfiguration.class, loader = AnnotationConfigContextLoader.class)
|
@ContextConfiguration(classes = BasicTestConfiguration.class, loader = AnnotationConfigContextLoader.class)
|
||||||
@TestPropertySource(properties = "test.engine = vintage")
|
@TestPropertySource
|
||||||
public class BasicSpringVintageTests {
|
public class BasicSpringVintageTests {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
test.engine = vintage
|
Loading…
Reference in New Issue