Browse Source

Polishing

pull/29136/head
Sam Brannen 3 years ago
parent
commit
d21d7fd6d0
  1. 16
      spring-test/src/main/java/org/springframework/test/context/aot/hint/StandardTestRuntimeHints.java
  2. 2
      spring-test/src/main/java/org/springframework/test/context/aot/hint/TestContextRuntimeHints.java
  3. 35
      spring-test/src/test/java/org/springframework/test/context/aot/AbstractAotTests.java
  4. 53
      spring-test/src/test/java/org/springframework/test/context/aot/TestAotProcessorTests.java

16
spring-test/src/main/java/org/springframework/test/context/aot/hint/StandardTestRuntimeHints.java

@ -51,22 +51,22 @@ class StandardTestRuntimeHints implements TestRuntimeHintsRegistrar { @@ -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 { @@ -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 { @@ -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);
}

2
spring-test/src/main/java/org/springframework/test/context/aot/hint/TestContextRuntimeHints.java

@ -65,7 +65,7 @@ class TestContextRuntimeHints implements RuntimeHintsRegistrar { @@ -65,7 +65,7 @@ class TestContextRuntimeHints implements RuntimeHintsRegistrar {
}
// Loaded reflectively in BootstrapUtils
registerAnnotation(runtimeHints.reflection(),
registerAnnotation(reflectionHints,
org.springframework.test.context.web.WebAppConfiguration.class
);
}

35
spring-test/src/test/java/org/springframework/test/context/aot/AbstractAotTests.java

@ -29,41 +29,6 @@ import java.util.stream.Stream; @@ -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();
}

53
spring-test/src/test/java/org/springframework/test/context/aot/TestAotProcessorTests.java

@ -20,7 +20,6 @@ import java.io.IOException; @@ -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 { @@ -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 { @@ -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"
};
}

Loading…
Cancel
Save