Merge branch '3.3.x'
Closes gh-41860
This commit is contained in:
@@ -24,6 +24,7 @@ import org.testcontainers.containers.GenericContainer;
|
||||
import org.testcontainers.lifecycle.Startable;
|
||||
import org.testcontainers.utility.TestcontainersConfiguration;
|
||||
|
||||
import org.springframework.aot.hint.RuntimeHints;
|
||||
import org.springframework.beans.factory.config.BeanPostProcessor;
|
||||
import org.springframework.beans.factory.support.AbstractBeanFactory;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
@@ -143,6 +144,17 @@ class TestcontainersLifecycleApplicationContextInitializerTests {
|
||||
applicationContext.refresh();
|
||||
}
|
||||
|
||||
@Test
|
||||
void doesNotStartContainersWhenAotProcessingIsInProgress() {
|
||||
GenericContainer<?> container = mock(GenericContainer.class);
|
||||
AnnotationConfigApplicationContext applicationContext = createApplicationContext(container);
|
||||
then(container).shouldHaveNoInteractions();
|
||||
withSystemProperty("spring.aot.processing", "true",
|
||||
() -> applicationContext.refreshForAotProcessing(new RuntimeHints()));
|
||||
then(container).shouldHaveNoInteractions();
|
||||
applicationContext.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
void setupStartupBasedOnEnvironmentProperty() {
|
||||
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
|
||||
@@ -159,6 +171,22 @@ class TestcontainersLifecycleApplicationContextInitializerTests {
|
||||
assertThat(beanPostProcessor).extracting("startup").isEqualTo(TestcontainersStartup.PARALLEL);
|
||||
}
|
||||
|
||||
private void withSystemProperty(String name, String value, Runnable action) {
|
||||
String previousValue = System.getProperty(name);
|
||||
System.setProperty(name, value);
|
||||
try {
|
||||
action.run();
|
||||
}
|
||||
finally {
|
||||
if (previousValue == null) {
|
||||
System.clearProperty(name);
|
||||
}
|
||||
else {
|
||||
System.setProperty(name, previousValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private AnnotationConfigApplicationContext createApplicationContext(Startable container) {
|
||||
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
|
||||
new TestcontainersLifecycleApplicationContextInitializer().initialize(applicationContext);
|
||||
@@ -166,6 +194,13 @@ class TestcontainersLifecycleApplicationContextInitializerTests {
|
||||
return applicationContext;
|
||||
}
|
||||
|
||||
private AnnotationConfigApplicationContext createApplicationContext(GenericContainer<?> container) {
|
||||
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
|
||||
new TestcontainersLifecycleApplicationContextInitializer().initialize(applicationContext);
|
||||
applicationContext.registerBean("container", GenericContainer.class, () -> container);
|
||||
return applicationContext;
|
||||
}
|
||||
|
||||
@Configuration
|
||||
static class ReusableContainerConfiguration {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user