Polishing
This commit is contained in:
@@ -51,22 +51,22 @@ class StandardTestRuntimeHints implements TestRuntimeHintsRegistrar {
|
||||
public void registerHints(MergedContextConfiguration mergedConfig, List<Class<?>> testClasses,
|
||||
RuntimeHints runtimeHints, ClassLoader classLoader) {
|
||||
|
||||
registerHintsForMergedContextConfiguration(runtimeHints, classLoader, mergedConfig);
|
||||
testClasses.forEach(testClass -> registerHintsForActiveProfilesResolvers(runtimeHints, testClass));
|
||||
registerHintsForMergedContextConfiguration(mergedConfig, runtimeHints, classLoader);
|
||||
testClasses.forEach(testClass -> registerHintsForActiveProfilesResolvers(testClass, runtimeHints));
|
||||
}
|
||||
|
||||
private void registerHintsForMergedContextConfiguration(
|
||||
RuntimeHints runtimeHints, ClassLoader classLoader, MergedContextConfiguration mergedConfig) {
|
||||
MergedContextConfiguration mergedConfig, RuntimeHints runtimeHints, ClassLoader classLoader) {
|
||||
|
||||
// @ContextConfiguration(loader = ...)
|
||||
ContextLoader contextLoader = mergedConfig.getContextLoader();
|
||||
if (contextLoader != null) {
|
||||
registerDeclaredConstructors(runtimeHints, contextLoader.getClass());
|
||||
registerDeclaredConstructors(contextLoader.getClass(), runtimeHints);
|
||||
}
|
||||
|
||||
// @ContextConfiguration(initializers = ...)
|
||||
mergedConfig.getContextInitializerClasses()
|
||||
.forEach(clazz -> registerDeclaredConstructors(runtimeHints, clazz));
|
||||
.forEach(clazz -> registerDeclaredConstructors(clazz, runtimeHints));
|
||||
|
||||
// @ContextConfiguration(locations = ...)
|
||||
registerClasspathResources(mergedConfig.getLocations(), runtimeHints, classLoader);
|
||||
@@ -80,7 +80,7 @@ class StandardTestRuntimeHints implements TestRuntimeHintsRegistrar {
|
||||
}
|
||||
}
|
||||
|
||||
private void registerHintsForActiveProfilesResolvers(RuntimeHints runtimeHints, Class<?> testClass) {
|
||||
private void registerHintsForActiveProfilesResolvers(Class<?> testClass, RuntimeHints runtimeHints) {
|
||||
// @ActiveProfiles(resolver = ...)
|
||||
MergedAnnotations.search(TYPE_HIERARCHY)
|
||||
.withEnclosingClasses(TestContextAnnotationUtils::searchEnclosingClass)
|
||||
@@ -88,10 +88,10 @@ class StandardTestRuntimeHints implements TestRuntimeHintsRegistrar {
|
||||
.stream(ActiveProfiles.class)
|
||||
.map(mergedAnnotation -> mergedAnnotation.getClass("resolver"))
|
||||
.filter(type -> type != ActiveProfilesResolver.class)
|
||||
.forEach(resolverClass -> registerDeclaredConstructors(runtimeHints, resolverClass));
|
||||
.forEach(resolverClass -> registerDeclaredConstructors(resolverClass, runtimeHints));
|
||||
}
|
||||
|
||||
private void registerDeclaredConstructors(RuntimeHints runtimeHints, Class<?> type) {
|
||||
private void registerDeclaredConstructors(Class<?> type, RuntimeHints runtimeHints) {
|
||||
runtimeHints.reflection().registerType(type, INVOKE_DECLARED_CONSTRUCTORS);
|
||||
}
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ class TestContextRuntimeHints implements RuntimeHintsRegistrar {
|
||||
}
|
||||
|
||||
// Loaded reflectively in BootstrapUtils
|
||||
registerAnnotation(runtimeHints.reflection(),
|
||||
registerAnnotation(reflectionHints,
|
||||
org.springframework.test.context.web.WebAppConfiguration.class
|
||||
);
|
||||
}
|
||||
|
||||
@@ -29,41 +29,6 @@ import java.util.stream.Stream;
|
||||
*/
|
||||
abstract class AbstractAotTests {
|
||||
|
||||
static final String[] expectedSourceFilesForBasicSpringTests = {
|
||||
// Global
|
||||
"org/springframework/test/context/aot/TestAotMappings__Generated.java",
|
||||
// BasicSpringJupiterSharedConfigTests
|
||||
"org/springframework/context/event/DefaultEventListenerFactory__TestContext001_BeanDefinitions.java",
|
||||
"org/springframework/context/event/EventListenerMethodProcessor__TestContext001_BeanDefinitions.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicSpringJupiterSharedConfigTests__TestContext001_ApplicationContextInitializer.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicSpringJupiterSharedConfigTests__TestContext001_BeanFactoryRegistrations.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicTestConfiguration__TestContext001_BeanDefinitions.java",
|
||||
// BasicSpringJupiterTests -- not generated b/c already generated for BasicSpringJupiterSharedConfigTests.
|
||||
// "org/springframework/context/event/DefaultEventListenerFactory__TestContext00?_BeanDefinitions.java",
|
||||
// "org/springframework/context/event/EventListenerMethodProcessor__TestContext00?_BeanDefinitions.java",
|
||||
// "org/springframework/test/context/aot/samples/basic/BasicSpringJupiterTests__TestContext00?_ApplicationContextInitializer.java",
|
||||
// "org/springframework/test/context/aot/samples/basic/BasicSpringJupiterTests__TestContext00?_BeanFactoryRegistrations.java",
|
||||
// "org/springframework/test/context/aot/samples/basic/BasicTestConfiguration__TestContext00?_BeanDefinitions.java",
|
||||
// BasicSpringJupiterTests.NestedTests
|
||||
"org/springframework/context/event/DefaultEventListenerFactory__TestContext002_BeanDefinitions.java",
|
||||
"org/springframework/context/event/EventListenerMethodProcessor__TestContext002_BeanDefinitions.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicSpringJupiterTests_NestedTests__TestContext002_ApplicationContextInitializer.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicSpringJupiterTests_NestedTests__TestContext002_BeanFactoryRegistrations.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicTestConfiguration__TestContext002_BeanDefinitions.java",
|
||||
// BasicSpringTestNGTests
|
||||
"org/springframework/context/event/DefaultEventListenerFactory__TestContext003_BeanDefinitions.java",
|
||||
"org/springframework/context/event/EventListenerMethodProcessor__TestContext003_BeanDefinitions.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicSpringTestNGTests__TestContext003_ApplicationContextInitializer.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicSpringTestNGTests__TestContext003_BeanFactoryRegistrations.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicTestConfiguration__TestContext003_BeanDefinitions.java",
|
||||
// BasicSpringVintageTests
|
||||
"org/springframework/context/event/DefaultEventListenerFactory__TestContext004_BeanDefinitions.java",
|
||||
"org/springframework/context/event/EventListenerMethodProcessor__TestContext004_BeanDefinitions.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicSpringVintageTests__TestContext004_ApplicationContextInitializer.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicSpringVintageTests__TestContext004_BeanFactoryRegistrations.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicTestConfiguration__TestContext004_BeanDefinitions.java"
|
||||
};
|
||||
|
||||
Stream<Class<?>> scan() {
|
||||
return new TestClassScanner(classpathRoots()).scan();
|
||||
}
|
||||
|
||||
@@ -20,7 +20,6 @@ import java.io.IOException;
|
||||
import java.io.UncheckedIOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -65,12 +64,11 @@ class TestAotProcessorTests extends AbstractAotTests {
|
||||
TestAotProcessor processor = new TestAotProcessor(classpathRoots, sourceOutput, resourceOutput, classOutput, groupId, artifactId);
|
||||
processor.process();
|
||||
|
||||
assertThat(findFiles(sourceOutput)).containsExactlyInAnyOrder(
|
||||
expectedSourceFilesForBasicSpringTests);
|
||||
assertThat(findFiles(sourceOutput)).containsExactlyInAnyOrder(expectedSourceFiles);
|
||||
|
||||
assertThat(findFiles(resourceOutput)).contains(
|
||||
"META-INF/native-image/org.example/app-tests/reflect-config.json",
|
||||
"META-INF/native-image/org.example/app-tests/resource-config.json");
|
||||
assertThat(findFiles(resourceOutput.resolve("META-INF/native-image"))).contains(
|
||||
"org.example/app-tests/reflect-config.json",
|
||||
"org.example/app-tests/resource-config.json");
|
||||
}
|
||||
|
||||
private void copy(Class<?> testClass, Path destination) {
|
||||
@@ -86,14 +84,41 @@ class TestAotProcessorTests extends AbstractAotTests {
|
||||
}
|
||||
}
|
||||
|
||||
private static List<String> findFiles(Path outputPath) throws IOException {
|
||||
int prefixLength = outputPath.toFile().getAbsolutePath().length() + 1;
|
||||
return Files.find(outputPath, Integer.MAX_VALUE, (path, attributes) -> attributes.isRegularFile())
|
||||
.map(Path::toAbsolutePath)
|
||||
.map(Path::toString)
|
||||
.map(path -> path.substring(prefixLength))
|
||||
.map(path -> path.replace('\\', '/')) // convert Windows path
|
||||
.toList();
|
||||
private static Stream<String> findFiles(Path directory) throws IOException {
|
||||
return Files.walk(directory).filter(Files::isRegularFile)
|
||||
.map(path -> path.subpath(directory.getNameCount(), path.getNameCount()))
|
||||
// Convert Windows path to UNIX path since the expectedSourceFiles array is hard coded
|
||||
.map(path -> path.toString().replace('\\', '/'));
|
||||
}
|
||||
|
||||
private static final String[] expectedSourceFiles = {
|
||||
// Global
|
||||
"org/springframework/test/context/aot/TestAotMappings__Generated.java",
|
||||
// BasicSpringJupiterSharedConfigTests
|
||||
"org/springframework/context/event/DefaultEventListenerFactory__TestContext001_BeanDefinitions.java",
|
||||
"org/springframework/context/event/EventListenerMethodProcessor__TestContext001_BeanDefinitions.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicSpringJupiterSharedConfigTests__TestContext001_ApplicationContextInitializer.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicSpringJupiterSharedConfigTests__TestContext001_BeanFactoryRegistrations.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicTestConfiguration__TestContext001_BeanDefinitions.java",
|
||||
// BasicSpringJupiterTests -- not generated b/c already generated for BasicSpringJupiterSharedConfigTests.
|
||||
// BasicSpringJupiterTests.NestedTests
|
||||
"org/springframework/context/event/DefaultEventListenerFactory__TestContext002_BeanDefinitions.java",
|
||||
"org/springframework/context/event/EventListenerMethodProcessor__TestContext002_BeanDefinitions.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicSpringJupiterTests_NestedTests__TestContext002_ApplicationContextInitializer.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicSpringJupiterTests_NestedTests__TestContext002_BeanFactoryRegistrations.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicTestConfiguration__TestContext002_BeanDefinitions.java",
|
||||
// BasicSpringTestNGTests
|
||||
"org/springframework/context/event/DefaultEventListenerFactory__TestContext003_BeanDefinitions.java",
|
||||
"org/springframework/context/event/EventListenerMethodProcessor__TestContext003_BeanDefinitions.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicSpringTestNGTests__TestContext003_ApplicationContextInitializer.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicSpringTestNGTests__TestContext003_BeanFactoryRegistrations.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicTestConfiguration__TestContext003_BeanDefinitions.java",
|
||||
// BasicSpringVintageTests
|
||||
"org/springframework/context/event/DefaultEventListenerFactory__TestContext004_BeanDefinitions.java",
|
||||
"org/springframework/context/event/EventListenerMethodProcessor__TestContext004_BeanDefinitions.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicSpringVintageTests__TestContext004_ApplicationContextInitializer.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicSpringVintageTests__TestContext004_BeanFactoryRegistrations.java",
|
||||
"org/springframework/test/context/aot/samples/basic/BasicTestConfiguration__TestContext004_BeanDefinitions.java"
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user