Prevent docker access when running AOT processing on tests

Closes gh-37097
This commit is contained in:
Moritz Halbritter 2023-09-05 13:37:34 +02:00
parent 1a2919bb0e
commit d310fb6fce

View File

@ -74,8 +74,12 @@ class ServiceConnectionContextCustomizerFactory implements ContextCustomizerFact
field.getDeclaringClass().getName(), Container.class.getName())); field.getDeclaringClass().getName(), Container.class.getName()));
Class<C> containerType = (Class<C>) fieldValue.getClass(); Class<C> containerType = (Class<C>) fieldValue.getClass();
C container = (C) fieldValue; C container = (C) fieldValue;
return new ContainerConnectionSource<>("test", origin, containerType, container.getDockerImageName(), // container.getDockerImageName() fails if there is no running docker environment
annotation, () -> container); // When running tests that doesn't matter, but running AOT processing should be
// possible without a Docker environment
String dockerImageName = isAotProcessingInProgress() ? null : container.getDockerImageName();
return new ContainerConnectionSource<>("test", origin, containerType, dockerImageName, annotation,
() -> container);
} }
private Object getFieldValue(Field field) { private Object getFieldValue(Field field) {
@ -83,4 +87,8 @@ class ServiceConnectionContextCustomizerFactory implements ContextCustomizerFact
return ReflectionUtils.getField(field, null); return ReflectionUtils.getField(field, null);
} }
private boolean isAotProcessingInProgress() {
return Boolean.getBoolean("spring.aot.processing");
}
} }