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:
Sam Brannen
2022-09-04 15:19:23 +02:00
parent dcf160e427
commit ef7784f85e
4 changed files with 16 additions and 2 deletions

View File

@@ -248,12 +248,21 @@ public class TestContextAotGenerator {
// @ContextConfiguration(locations = ...)
registerHintsForClasspathResources(mergedConfig.getLocations());
// @TestPropertySource(locations = ... )
registerHintsForClasspathResources(mergedConfig.getPropertySourceLocations());
}
private void registerHintsForClasspathResources(String... locations) {
Arrays.stream(locations)
.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);
}