From feeca14d48c81479d5c9a1b460ba05f09781bd63 Mon Sep 17 00:00:00 2001 From: Tobias Stadler Date: Tue, 12 May 2020 16:25:05 +0200 Subject: [PATCH 1/2] JUnit Jupiter already tracks the test instances --- .../jupiter/TestcontainersExtension.java | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/modules/junit-jupiter/src/main/java/org/testcontainers/junit/jupiter/TestcontainersExtension.java b/modules/junit-jupiter/src/main/java/org/testcontainers/junit/jupiter/TestcontainersExtension.java index 1ed5e954e44..039b3a1f29d 100644 --- a/modules/junit-jupiter/src/main/java/org/testcontainers/junit/jupiter/TestcontainersExtension.java +++ b/modules/junit-jupiter/src/main/java/org/testcontainers/junit/jupiter/TestcontainersExtension.java @@ -12,7 +12,7 @@ import org.junit.jupiter.api.extension.ExtensionContext.Namespace; import org.junit.jupiter.api.extension.ExtensionContext.Store; import org.junit.jupiter.api.extension.ExtensionContext.Store.CloseableResource; -import org.junit.jupiter.api.extension.TestInstancePostProcessor; +import org.junit.jupiter.api.extension.TestInstances; import org.junit.platform.commons.support.AnnotationSupport; import org.junit.platform.commons.util.AnnotationUtils; import org.junit.platform.commons.util.Preconditions; @@ -23,7 +23,7 @@ import org.testcontainers.lifecycle.TestLifecycleAware; import java.lang.reflect.Field; -import java.lang.reflect.Method; +import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; import java.util.Optional; @@ -34,20 +34,13 @@ import static java.util.stream.Collectors.toList; import static org.testcontainers.junit.jupiter.FilesystemFriendlyNameGenerator.filesystemFriendlyNameOf; -class TestcontainersExtension implements BeforeEachCallback, BeforeAllCallback, AfterEachCallback, AfterAllCallback, ExecutionCondition, TestInstancePostProcessor { +class TestcontainersExtension implements BeforeEachCallback, BeforeAllCallback, AfterEachCallback, AfterAllCallback, ExecutionCondition { private static final Namespace NAMESPACE = Namespace.create(TestcontainersExtension.class); - private static final String TEST_INSTANCE = "testInstance"; private static final String SHARED_LIFECYCLE_AWARE_CONTAINERS = "sharedLifecycleAwareContainers"; private static final String LOCAL_LIFECYCLE_AWARE_CONTAINERS = "localLifecycleAwareContainers"; - @Override - public void postProcessTestInstance(final Object testInstance, final ExtensionContext context) { - Store store = context.getStore(NAMESPACE); - store.put(TEST_INSTANCE, testInstance); - } - @Override public void beforeAll(ExtensionContext context) { Class testClass = context.getTestClass() @@ -160,10 +153,13 @@ private Set collectParentTestInstances(final ExtensionContext context) { Optional current = Optional.of(context); while (current.isPresent()) { ExtensionContext ctx = current.get(); - Object testInstance = ctx.getStore(NAMESPACE).remove(TEST_INSTANCE); - if (testInstance != null) { - testInstances.add(testInstance); + List contextTestInstances = ctx.getTestInstances() + .map(TestInstances::getAllInstances) + .orElseGet(Collections::emptyList); + for (int i = contextTestInstances.size() - 1; i >= 0; --i) { + testInstances.add(contextTestInstances.get(i)); } + current = ctx.getParent(); } return testInstances; From b595052a84467350b8507687bbd8a1398d143164 Mon Sep 17 00:00:00 2001 From: Tobias Stadler Date: Tue, 19 May 2020 19:54:58 +0200 Subject: [PATCH 2/2] Incorporated review by @marcphilipp --- .../jupiter/TestcontainersExtension.java | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/modules/junit-jupiter/src/main/java/org/testcontainers/junit/jupiter/TestcontainersExtension.java b/modules/junit-jupiter/src/main/java/org/testcontainers/junit/jupiter/TestcontainersExtension.java index 039b3a1f29d..990940be14d 100644 --- a/modules/junit-jupiter/src/main/java/org/testcontainers/junit/jupiter/TestcontainersExtension.java +++ b/modules/junit-jupiter/src/main/java/org/testcontainers/junit/jupiter/TestcontainersExtension.java @@ -12,7 +12,6 @@ import org.junit.jupiter.api.extension.ExtensionContext.Namespace; import org.junit.jupiter.api.extension.ExtensionContext.Store; import org.junit.jupiter.api.extension.ExtensionContext.Store.CloseableResource; -import org.junit.jupiter.api.extension.TestInstances; import org.junit.platform.commons.support.AnnotationSupport; import org.junit.platform.commons.util.AnnotationUtils; import org.junit.platform.commons.util.Preconditions; @@ -23,6 +22,7 @@ import org.testcontainers.lifecycle.TestLifecycleAware; import java.lang.reflect.Field; +import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; @@ -149,20 +149,9 @@ boolean isDockerAvailable() { } private Set collectParentTestInstances(final ExtensionContext context) { - Set testInstances = new LinkedHashSet<>(); - Optional current = Optional.of(context); - while (current.isPresent()) { - ExtensionContext ctx = current.get(); - List contextTestInstances = ctx.getTestInstances() - .map(TestInstances::getAllInstances) - .orElseGet(Collections::emptyList); - for (int i = contextTestInstances.size() - 1; i >= 0; --i) { - testInstances.add(contextTestInstances.get(i)); - } - - current = ctx.getParent(); - } - return testInstances; + List allInstances = new ArrayList<>(context.getRequiredTestInstances().getAllInstances()); + Collections.reverse(allInstances); + return new LinkedHashSet<>(allInstances); } private List findSharedContainers(Class testClass) {