diff --git a/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java b/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java index eeca26b413a..0cd71e75317 100644 --- a/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java +++ b/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java @@ -46,7 +46,7 @@ public class DockerComposeContainer> e private final String identifier; private final Map ambassadorContainers = new HashMap<>(); private final List composeFiles; - private Set spawnedContainerIds; + private Set spawnedContainerIds = Collections.emptySet(); private Map scalingPreferences = new HashMap<>(); private DockerClient dockerClient; private boolean localCompose; diff --git a/core/src/main/java/org/testcontainers/containers/FailureDetectingExternalResource.java b/core/src/main/java/org/testcontainers/containers/FailureDetectingExternalResource.java index cb103b04278..29a032d320b 100644 --- a/core/src/main/java/org/testcontainers/containers/FailureDetectingExternalResource.java +++ b/core/src/main/java/org/testcontainers/containers/FailureDetectingExternalResource.java @@ -25,9 +25,8 @@ public void evaluate() throws Throwable { List errors = new ArrayList(); - starting(description); - try { + starting(description); base.evaluate(); succeeded(description); } catch (Throwable e) { diff --git a/core/src/test/java/org/testcontainers/containers/FailureDetectingExternalResourceTest.java b/core/src/test/java/org/testcontainers/containers/FailureDetectingExternalResourceTest.java new file mode 100644 index 00000000000..47d594c4c02 --- /dev/null +++ b/core/src/test/java/org/testcontainers/containers/FailureDetectingExternalResourceTest.java @@ -0,0 +1,28 @@ +package org.testcontainers.containers; + +import org.junit.Test; +import org.junit.runner.Description; +import org.junit.runners.model.Statement; +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; + +public class FailureDetectingExternalResourceTest { + + @Test + public void finishedIsCalledForCleanupIfStartingThrows() throws Throwable { + FailureDetectingExternalResource res = spy(FailureDetectingExternalResource.class); + Statement stmt = res.apply(mock(Statement.class), Description.EMPTY); + doThrow(new RuntimeException()).when(res).starting(any()); + try { + stmt.evaluate(); + } catch (Throwable t) { + // ignore + } + verify(res).starting(any()); + verify(res).finished(any()); + } + +}