From ad3c9229dbffbc7c889578975a05652a2733b116 Mon Sep 17 00:00:00 2001 From: Fokion Sotiropoulos Date: Sun, 22 Sep 2024 00:40:55 +0100 Subject: [PATCH 01/14] Check the property for compose.container.image in order to get the appropriate docker image in the ComposeContainer. --- .../containers/ComposeContainer.java | 5 +- .../containers/ComposeContainerTest.java | 69 +++++++++++++++++++ 2 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java diff --git a/core/src/main/java/org/testcontainers/containers/ComposeContainer.java b/core/src/main/java/org/testcontainers/containers/ComposeContainer.java index 79d706d3b6a..d4149935bb7 100644 --- a/core/src/main/java/org/testcontainers/containers/ComposeContainer.java +++ b/core/src/main/java/org/testcontainers/containers/ComposeContainer.java @@ -13,6 +13,7 @@ import org.testcontainers.lifecycle.Startable; import org.testcontainers.utility.Base58; import org.testcontainers.utility.DockerImageName; +import org.testcontainers.utility.TestcontainersConfiguration; import java.io.File; import java.time.Duration; @@ -61,7 +62,7 @@ public class ComposeContainer extends FailureDetectingExternalResource implement public static final String COMPOSE_EXECUTABLE = SystemUtils.IS_OS_WINDOWS ? "docker.exe" : "docker"; - private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("docker:24.0.2"); + public static final String DEFAULT_DOCKER_IMAGE = "docker:24.0.2"; private final ComposeDelegate composeDelegate; @@ -88,7 +89,7 @@ public ComposeContainer(String identifier, List composeFiles) { composeFiles, identifier, COMPOSE_EXECUTABLE, - DEFAULT_IMAGE_NAME + DockerImageName.parse(TestcontainersConfiguration.getInstance().getEnvVarOrUserProperty("compose.container.image",DEFAULT_DOCKER_IMAGE)) ); this.project = this.composeDelegate.getProject(); } diff --git a/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java b/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java new file mode 100644 index 00000000000..ed88fb4412a --- /dev/null +++ b/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java @@ -0,0 +1,69 @@ +package org.testcontainers.containers; + +import ch.qos.logback.classic.Logger; +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.AppenderBase; +import com.google.common.collect.Lists; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.slf4j.LoggerFactory; +import org.testcontainers.utility.TestcontainersConfiguration; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import static org.junit.Assert.*; + +public class ComposeContainerTest { + private TestLogAppender testLogAppender; + private Logger rootLogger; + + @Before + public void setup() { + testLogAppender = new TestLogAppender(); + testLogAppender.start(); + rootLogger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); + rootLogger.addAppender(testLogAppender); + } + + @After + public void tearDown() { + rootLogger.detachAppender(testLogAppender); + } + + @Test + public void testWithCustomDockerImage() throws IOException { + TestcontainersConfiguration.getInstance().updateUserConfig("compose.container.image", "docker:25.0.2"); + ComposeContainer composeContainer = new ComposeContainer(Lists.newArrayList(new File("src/test/resources/docker-compose-imagename-parsing-v2.yml"))); + composeContainer.start(); + System.clearProperty("compose.container.image"); + List logs = testLogAppender.getLogs(); + composeContainer.stop(); + assertNotNull(logs); + Optional verification = logs.stream().filter(line -> line.contains("Creating container for image: docker:25.0.2")).findFirst(); + assertTrue(verification.isPresent()); + TestcontainersConfiguration.getInstance().updateUserConfig("compose.container.image", ""); + } + + private static class TestLogAppender extends AppenderBase { + private final List logs = new ArrayList<>(); + + @Override + protected void append(ILoggingEvent eventObject) { + logs.add(eventObject.getFormattedMessage()); + } + + public List getLogs() { + return logs; + } + + public void clearLogs() { + logs.clear(); + } + } +} From 3034795977518fe4733974d31c1e30be12568c78 Mon Sep 17 00:00:00 2001 From: Fokion Sotiropoulos Date: Sun, 22 Sep 2024 16:00:18 +0100 Subject: [PATCH 02/14] fix the checkstyle issues --- .../containers/ComposeContainerTest.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java b/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java index ed88fb4412a..eb18c913964 100644 --- a/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java +++ b/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java @@ -12,15 +12,17 @@ import java.io.File; import java.io.IOException; -import java.nio.file.Files; import java.util.ArrayList; import java.util.List; import java.util.Optional; -import static org.junit.Assert.*; +import static org.assertj.core.api.Assertions.assertThat; + public class ComposeContainerTest { + private TestLogAppender testLogAppender; + private Logger rootLogger; @Before @@ -44,9 +46,9 @@ public void testWithCustomDockerImage() throws IOException { System.clearProperty("compose.container.image"); List logs = testLogAppender.getLogs(); composeContainer.stop(); - assertNotNull(logs); + assertThat(logs).isNotNull(); Optional verification = logs.stream().filter(line -> line.contains("Creating container for image: docker:25.0.2")).findFirst(); - assertTrue(verification.isPresent()); + assertThat(verification.isPresent()).isTrue(); TestcontainersConfiguration.getInstance().updateUserConfig("compose.container.image", ""); } From 46ac7f87a689eb358c9bb59bcc99d41b2a1b37b0 Mon Sep 17 00:00:00 2001 From: Fokion Sotiropoulos Date: Tue, 1 Oct 2024 19:07:36 +0100 Subject: [PATCH 03/14] apply spotless checks --- .../testcontainers/containers/ComposeContainer.java | 6 +++++- .../containers/ComposeContainerTest.java | 11 ++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/testcontainers/containers/ComposeContainer.java b/core/src/main/java/org/testcontainers/containers/ComposeContainer.java index d4149935bb7..7329c27a00c 100644 --- a/core/src/main/java/org/testcontainers/containers/ComposeContainer.java +++ b/core/src/main/java/org/testcontainers/containers/ComposeContainer.java @@ -89,7 +89,11 @@ public ComposeContainer(String identifier, List composeFiles) { composeFiles, identifier, COMPOSE_EXECUTABLE, - DockerImageName.parse(TestcontainersConfiguration.getInstance().getEnvVarOrUserProperty("compose.container.image",DEFAULT_DOCKER_IMAGE)) + DockerImageName.parse( + TestcontainersConfiguration + .getInstance() + .getEnvVarOrUserProperty("compose.container.image", DEFAULT_DOCKER_IMAGE) + ) ); this.project = this.composeDelegate.getProject(); } diff --git a/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java b/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java index eb18c913964..0bf7ddb8dbc 100644 --- a/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java +++ b/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java @@ -18,7 +18,6 @@ import static org.assertj.core.api.Assertions.assertThat; - public class ComposeContainerTest { private TestLogAppender testLogAppender; @@ -41,18 +40,24 @@ public void tearDown() { @Test public void testWithCustomDockerImage() throws IOException { TestcontainersConfiguration.getInstance().updateUserConfig("compose.container.image", "docker:25.0.2"); - ComposeContainer composeContainer = new ComposeContainer(Lists.newArrayList(new File("src/test/resources/docker-compose-imagename-parsing-v2.yml"))); + ComposeContainer composeContainer = new ComposeContainer( + Lists.newArrayList(new File("src/test/resources/docker-compose-imagename-parsing-v2.yml")) + ); composeContainer.start(); System.clearProperty("compose.container.image"); List logs = testLogAppender.getLogs(); composeContainer.stop(); assertThat(logs).isNotNull(); - Optional verification = logs.stream().filter(line -> line.contains("Creating container for image: docker:25.0.2")).findFirst(); + Optional verification = logs + .stream() + .filter(line -> line.contains("Creating container for image: docker:25.0.2")) + .findFirst(); assertThat(verification.isPresent()).isTrue(); TestcontainersConfiguration.getInstance().updateUserConfig("compose.container.image", ""); } private static class TestLogAppender extends AppenderBase { + private final List logs = new ArrayList<>(); @Override From 64d021eab9c7fc2652d00b05435d17c1739d7094 Mon Sep 17 00:00:00 2001 From: Fokion Sotiropoulos Date: Tue, 1 Oct 2024 19:25:32 +0100 Subject: [PATCH 04/14] update the test and the cleanup of container --- .../containers/ComposeContainerTest.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java b/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java index 0bf7ddb8dbc..f22c92bfefa 100644 --- a/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java +++ b/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java @@ -20,6 +20,7 @@ public class ComposeContainerTest { + public static final String DOCKER_IMAGE = "docker:25.0.2"; private TestLogAppender testLogAppender; private Logger rootLogger; @@ -30,30 +31,31 @@ public void setup() { testLogAppender.start(); rootLogger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); rootLogger.addAppender(testLogAppender); + TestcontainersConfiguration.getInstance().updateUserConfig("compose.container.image", DOCKER_IMAGE); } @After public void tearDown() { rootLogger.detachAppender(testLogAppender); + TestcontainersConfiguration.getInstance().updateUserConfig("compose.container.image", ""); + System.clearProperty("compose.container.image"); } @Test public void testWithCustomDockerImage() throws IOException { - TestcontainersConfiguration.getInstance().updateUserConfig("compose.container.image", "docker:25.0.2"); ComposeContainer composeContainer = new ComposeContainer( Lists.newArrayList(new File("src/test/resources/docker-compose-imagename-parsing-v2.yml")) ); composeContainer.start(); - System.clearProperty("compose.container.image"); + List logs = testLogAppender.getLogs(); composeContainer.stop(); assertThat(logs).isNotNull(); Optional verification = logs .stream() - .filter(line -> line.contains("Creating container for image: docker:25.0.2")) + .filter(line -> line.contains("Creating container for image: "+DOCKER_IMAGE)) .findFirst(); assertThat(verification.isPresent()).isTrue(); - TestcontainersConfiguration.getInstance().updateUserConfig("compose.container.image", ""); } private static class TestLogAppender extends AppenderBase { @@ -68,9 +70,5 @@ protected void append(ILoggingEvent eventObject) { public List getLogs() { return logs; } - - public void clearLogs() { - logs.clear(); - } } } From d6827fd6156683bfe8d9acd5d54e5bfe1df808a4 Mon Sep 17 00:00:00 2001 From: Fokion Sotiropoulos Date: Sat, 18 Jan 2025 17:04:10 +0000 Subject: [PATCH 05/14] Update ComposeContainer and DockerComposeContainer to the latest version of docker and update the constructors --- .../containers/ComposeContainer.java | 64 +++++++++++++++---- .../containers/DockerComposeContainer.java | 40 +++++++++++- 2 files changed, 88 insertions(+), 16 deletions(-) diff --git a/core/src/main/java/org/testcontainers/containers/ComposeContainer.java b/core/src/main/java/org/testcontainers/containers/ComposeContainer.java index 7329c27a00c..dbf18e98c5d 100644 --- a/core/src/main/java/org/testcontainers/containers/ComposeContainer.java +++ b/core/src/main/java/org/testcontainers/containers/ComposeContainer.java @@ -62,7 +62,7 @@ public class ComposeContainer extends FailureDetectingExternalResource implement public static final String COMPOSE_EXECUTABLE = SystemUtils.IS_OS_WINDOWS ? "docker.exe" : "docker"; - public static final String DEFAULT_DOCKER_IMAGE = "docker:24.0.2"; + public static final String DEFAULT_DOCKER_IMAGE = "docker:27.5.0"; private final ComposeDelegate composeDelegate; @@ -70,34 +70,72 @@ public class ComposeContainer extends FailureDetectingExternalResource implement private List filesInDirectory = new ArrayList<>(); - public ComposeContainer(File... composeFiles) { - this(Arrays.asList(composeFiles)); + public ComposeContainer(DockerImageName image, File... composeFiles) { + this(image, Arrays.asList(composeFiles)); } - public ComposeContainer(List composeFiles) { - this(Base58.randomString(6).toLowerCase(), composeFiles); + public ComposeContainer(DockerImageName image, List composeFiles) { + this(image,Base58.randomString(6).toLowerCase(),composeFiles); } - public ComposeContainer(String identifier, File... composeFiles) { - this(identifier, Arrays.asList(composeFiles)); + public ComposeContainer(DockerImageName image, String identifier, File... composeFiles) { + this(image,identifier, Arrays.asList(composeFiles)); } - public ComposeContainer(String identifier, List composeFiles) { + public ComposeContainer(DockerImageName image, String identifier, List composeFiles) { this.composeDelegate = new ComposeDelegate( ComposeDelegate.ComposeVersion.V2, composeFiles, identifier, COMPOSE_EXECUTABLE, - DockerImageName.parse( - TestcontainersConfiguration - .getInstance() - .getEnvVarOrUserProperty("compose.container.image", DEFAULT_DOCKER_IMAGE) - ) + image ); this.project = this.composeDelegate.getProject(); } + /** + * @deprecated + * Use the new constructor ComposeContainer(DockerImageName image, File... composeFiles) + */ + @Deprecated + public ComposeContainer(File... composeFiles) { + this(getDockerImageName(),Arrays.asList(composeFiles)); + } + /** + * @deprecated + * Use the new constructor ComposeContainer(DockerImageName image,List composeFiles) + */ + @Deprecated + public ComposeContainer(List composeFiles) { + this(getDockerImageName(), composeFiles); + } + /** + * @deprecated + * Use the new constructor ComposeContainer(DockerImageName image, String identifier, File... composeFile) + */ + @Deprecated + public ComposeContainer(String identifier, File... composeFiles) { + this(getDockerImageName(),identifier, Arrays.asList(composeFiles)); + } + + /** + * @deprecated + * Use the new constructor ComposeContainer(DockerImageName image,String identifier, List composeFiles) + */ + @Deprecated + public ComposeContainer(String identifier, List composeFiles) { + this(getDockerImageName(),identifier, composeFiles); + } + + public static DockerImageName getDockerImageName() { + return DockerImageName.parse( + TestcontainersConfiguration + .getInstance() + .getEnvVarOrUserProperty("compose.container.image", DEFAULT_DOCKER_IMAGE) + ); + } + @Override @Deprecated public Statement apply(Statement base, Description description) { diff --git a/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java b/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java index 92dc75b6cde..d56edfeac05 100644 --- a/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java +++ b/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java @@ -13,11 +13,13 @@ import org.testcontainers.lifecycle.Startable; import org.testcontainers.utility.Base58; import org.testcontainers.utility.DockerImageName; +import org.testcontainers.utility.TestcontainersConfiguration; import java.io.File; import java.time.Duration; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -26,6 +28,8 @@ import java.util.Set; import java.util.function.Consumer; +import static org.testcontainers.containers.ComposeContainer.getDockerImageName; + /** * Container which launches Docker Compose, for the purposes of launching a defined set of containers. */ @@ -62,31 +66,59 @@ public class DockerComposeContainer> public static final String COMPOSE_EXECUTABLE = SystemUtils.IS_OS_WINDOWS ? "docker-compose.exe" : "docker-compose"; - private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("docker/compose:1.29.2"); - private final ComposeDelegate composeDelegate; private String project; private List filesInDirectory = new ArrayList<>(); + + + public DockerComposeContainer(DockerImageName image, String identifier, File composeFile) { + this(image, identifier, Collections.singletonList(composeFile)); + } + + public DockerComposeContainer(DockerImageName image, List composeFiles) { + this(image,Base58.randomString(6).toLowerCase(),composeFiles); + } + + public DockerComposeContainer(DockerImageName image, String identifier, File... composeFiles) { + this(image,identifier, Arrays.asList(composeFiles)); + } + public DockerComposeContainer(DockerImageName image, String identifier, List composeFiles) { + this.composeDelegate = + new ComposeDelegate( + ComposeDelegate.ComposeVersion.V2, + composeFiles, + identifier, + COMPOSE_EXECUTABLE, + image + ); + this.project = this.composeDelegate.getProject(); + } + + @Deprecated public DockerComposeContainer(File composeFile, String identifier) { this(identifier, composeFile); } + @Deprecated public DockerComposeContainer(File... composeFiles) { this(Arrays.asList(composeFiles)); } + @Deprecated public DockerComposeContainer(List composeFiles) { this(Base58.randomString(6).toLowerCase(), composeFiles); } + @Deprecated public DockerComposeContainer(String identifier, File... composeFiles) { this(identifier, Arrays.asList(composeFiles)); } + @Deprecated public DockerComposeContainer(String identifier, List composeFiles) { this.composeDelegate = new ComposeDelegate( @@ -94,11 +126,13 @@ public DockerComposeContainer(String identifier, List composeFiles) { composeFiles, identifier, COMPOSE_EXECUTABLE, - DEFAULT_IMAGE_NAME + getDockerImageName() ); this.project = this.composeDelegate.getProject(); } + + @Override @Deprecated public Statement apply(Statement base, Description description) { From 7c144531455a083078b42f3663c29afbff6d7318 Mon Sep 17 00:00:00 2001 From: Fokion Sotiropoulos Date: Tue, 21 Jan 2025 22:19:33 +0000 Subject: [PATCH 06/14] Fix an issue with the TestcontainersConfiguration.getInstance().getEnvVarOrUserProperty checking if the value is not empty --- .../java/org/testcontainers/containers/ComposeContainer.java | 2 +- .../org/testcontainers/containers/DockerComposeContainer.java | 4 ++-- .../testcontainers/utility/TestcontainersConfiguration.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/testcontainers/containers/ComposeContainer.java b/core/src/main/java/org/testcontainers/containers/ComposeContainer.java index dbf18e98c5d..bb970bbae87 100644 --- a/core/src/main/java/org/testcontainers/containers/ComposeContainer.java +++ b/core/src/main/java/org/testcontainers/containers/ComposeContainer.java @@ -62,7 +62,7 @@ public class ComposeContainer extends FailureDetectingExternalResource implement public static final String COMPOSE_EXECUTABLE = SystemUtils.IS_OS_WINDOWS ? "docker.exe" : "docker"; - public static final String DEFAULT_DOCKER_IMAGE = "docker:27.5.0"; + private static final String DEFAULT_DOCKER_IMAGE = "docker:27.5.0"; private final ComposeDelegate composeDelegate; diff --git a/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java b/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java index d56edfeac05..24769038971 100644 --- a/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java +++ b/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java @@ -88,7 +88,7 @@ public DockerComposeContainer(DockerImageName image, String identifier, File... public DockerComposeContainer(DockerImageName image, String identifier, List composeFiles) { this.composeDelegate = new ComposeDelegate( - ComposeDelegate.ComposeVersion.V2, + ComposeDelegate.ComposeVersion.V1, composeFiles, identifier, COMPOSE_EXECUTABLE, @@ -126,7 +126,7 @@ public DockerComposeContainer(String identifier, List composeFiles) { composeFiles, identifier, COMPOSE_EXECUTABLE, - getDockerImageName() + DockerImageName.parse("docker/compose:1.29.2") ); this.project = this.composeDelegate.getProject(); } diff --git a/core/src/main/java/org/testcontainers/utility/TestcontainersConfiguration.java b/core/src/main/java/org/testcontainers/utility/TestcontainersConfiguration.java index 5c80b82ba9c..47954ea7624 100644 --- a/core/src/main/java/org/testcontainers/utility/TestcontainersConfiguration.java +++ b/core/src/main/java/org/testcontainers/utility/TestcontainersConfiguration.java @@ -244,7 +244,7 @@ private String getConfigurable( } for (final Properties properties : propertiesSources) { - if (properties.get(propertyName) != null) { + if (properties.get(propertyName) != null && !properties.get(propertyName).toString().trim().isEmpty()) { return (String) properties.get(propertyName); } } From 1c8ac8c2048e0d3ead2644f5a41014368d394ae3 Mon Sep 17 00:00:00 2001 From: Fokion Sotiropoulos Date: Thu, 23 Jan 2025 08:38:26 +0000 Subject: [PATCH 07/14] apply spotless --- .../containers/ComposeContainer.java | 20 +++++++----------- .../containers/DockerComposeContainer.java | 21 ++++--------------- .../containers/ComposeContainerTest.java | 3 ++- 3 files changed, 14 insertions(+), 30 deletions(-) diff --git a/core/src/main/java/org/testcontainers/containers/ComposeContainer.java b/core/src/main/java/org/testcontainers/containers/ComposeContainer.java index bb970bbae87..593e4d9100a 100644 --- a/core/src/main/java/org/testcontainers/containers/ComposeContainer.java +++ b/core/src/main/java/org/testcontainers/containers/ComposeContainer.java @@ -75,22 +75,16 @@ public ComposeContainer(DockerImageName image, File... composeFiles) { } public ComposeContainer(DockerImageName image, List composeFiles) { - this(image,Base58.randomString(6).toLowerCase(),composeFiles); + this(image, Base58.randomString(6).toLowerCase(), composeFiles); } public ComposeContainer(DockerImageName image, String identifier, File... composeFiles) { - this(image,identifier, Arrays.asList(composeFiles)); + this(image, identifier, Arrays.asList(composeFiles)); } public ComposeContainer(DockerImageName image, String identifier, List composeFiles) { this.composeDelegate = - new ComposeDelegate( - ComposeDelegate.ComposeVersion.V2, - composeFiles, - identifier, - COMPOSE_EXECUTABLE, - image - ); + new ComposeDelegate(ComposeDelegate.ComposeVersion.V2, composeFiles, identifier, COMPOSE_EXECUTABLE, image); this.project = this.composeDelegate.getProject(); } @@ -100,8 +94,9 @@ public ComposeContainer(DockerImageName image, String identifier, List com */ @Deprecated public ComposeContainer(File... composeFiles) { - this(getDockerImageName(),Arrays.asList(composeFiles)); + this(getDockerImageName(), Arrays.asList(composeFiles)); } + /** * @deprecated * Use the new constructor ComposeContainer(DockerImageName image,List composeFiles) @@ -110,13 +105,14 @@ public ComposeContainer(File... composeFiles) { public ComposeContainer(List composeFiles) { this(getDockerImageName(), composeFiles); } + /** * @deprecated * Use the new constructor ComposeContainer(DockerImageName image, String identifier, File... composeFile) */ @Deprecated public ComposeContainer(String identifier, File... composeFiles) { - this(getDockerImageName(),identifier, Arrays.asList(composeFiles)); + this(getDockerImageName(), identifier, Arrays.asList(composeFiles)); } /** @@ -125,7 +121,7 @@ public ComposeContainer(String identifier, File... composeFiles) { */ @Deprecated public ComposeContainer(String identifier, List composeFiles) { - this(getDockerImageName(),identifier, composeFiles); + this(getDockerImageName(), identifier, composeFiles); } public static DockerImageName getDockerImageName() { diff --git a/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java b/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java index 24769038971..c2e40c8f83d 100644 --- a/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java +++ b/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java @@ -13,7 +13,6 @@ import org.testcontainers.lifecycle.Startable; import org.testcontainers.utility.Base58; import org.testcontainers.utility.DockerImageName; -import org.testcontainers.utility.TestcontainersConfiguration; import java.io.File; import java.time.Duration; @@ -28,8 +27,6 @@ import java.util.Set; import java.util.function.Consumer; -import static org.testcontainers.containers.ComposeContainer.getDockerImageName; - /** * Container which launches Docker Compose, for the purposes of launching a defined set of containers. */ @@ -72,32 +69,24 @@ public class DockerComposeContainer> private List filesInDirectory = new ArrayList<>(); - - public DockerComposeContainer(DockerImageName image, String identifier, File composeFile) { this(image, identifier, Collections.singletonList(composeFile)); } public DockerComposeContainer(DockerImageName image, List composeFiles) { - this(image,Base58.randomString(6).toLowerCase(),composeFiles); + this(image, Base58.randomString(6).toLowerCase(), composeFiles); } public DockerComposeContainer(DockerImageName image, String identifier, File... composeFiles) { - this(image,identifier, Arrays.asList(composeFiles)); + this(image, identifier, Arrays.asList(composeFiles)); } + public DockerComposeContainer(DockerImageName image, String identifier, List composeFiles) { this.composeDelegate = - new ComposeDelegate( - ComposeDelegate.ComposeVersion.V1, - composeFiles, - identifier, - COMPOSE_EXECUTABLE, - image - ); + new ComposeDelegate(ComposeDelegate.ComposeVersion.V1, composeFiles, identifier, COMPOSE_EXECUTABLE, image); this.project = this.composeDelegate.getProject(); } - @Deprecated public DockerComposeContainer(File composeFile, String identifier) { this(identifier, composeFile); @@ -131,8 +120,6 @@ public DockerComposeContainer(String identifier, List composeFiles) { this.project = this.composeDelegate.getProject(); } - - @Override @Deprecated public Statement apply(Statement base, Description description) { diff --git a/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java b/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java index f22c92bfefa..76ba8ba42f4 100644 --- a/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java +++ b/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java @@ -21,6 +21,7 @@ public class ComposeContainerTest { public static final String DOCKER_IMAGE = "docker:25.0.2"; + private TestLogAppender testLogAppender; private Logger rootLogger; @@ -53,7 +54,7 @@ public void testWithCustomDockerImage() throws IOException { assertThat(logs).isNotNull(); Optional verification = logs .stream() - .filter(line -> line.contains("Creating container for image: "+DOCKER_IMAGE)) + .filter(line -> line.contains("Creating container for image: " + DOCKER_IMAGE)) .findFirst(); assertThat(verification.isPresent()).isTrue(); } From 9882cd2fae893090d800bf7b6ed90071ccf7dd18 Mon Sep 17 00:00:00 2001 From: Fokion Sotiropoulos Date: Wed, 29 Jan 2025 16:16:00 +0000 Subject: [PATCH 08/14] fix javadoc step --- .../java/org/testcontainers/containers/ComposeContainer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/testcontainers/containers/ComposeContainer.java b/core/src/main/java/org/testcontainers/containers/ComposeContainer.java index 593e4d9100a..e1a08275275 100644 --- a/core/src/main/java/org/testcontainers/containers/ComposeContainer.java +++ b/core/src/main/java/org/testcontainers/containers/ComposeContainer.java @@ -99,7 +99,7 @@ public ComposeContainer(File... composeFiles) { /** * @deprecated - * Use the new constructor ComposeContainer(DockerImageName image,List composeFiles) + * Use the new constructor ComposeContainer(DockerImageName image,List composeFiles) */ @Deprecated public ComposeContainer(List composeFiles) { @@ -117,7 +117,7 @@ public ComposeContainer(String identifier, File... composeFiles) { /** * @deprecated - * Use the new constructor ComposeContainer(DockerImageName image,String identifier, List composeFiles) + * Use the new constructor ComposeContainer(DockerImageName image,String identifier, List composeFiles) */ @Deprecated public ComposeContainer(String identifier, List composeFiles) { From c89e308f36a82c5430cc1f79aba5fc41634cd3a2 Mon Sep 17 00:00:00 2001 From: Fokion Sotiropoulos Date: Thu, 6 Feb 2025 23:43:05 +0000 Subject: [PATCH 09/14] do not update the default image --- .../containers/ComposeContainer.java | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/core/src/main/java/org/testcontainers/containers/ComposeContainer.java b/core/src/main/java/org/testcontainers/containers/ComposeContainer.java index e1a08275275..b68e9ec693c 100644 --- a/core/src/main/java/org/testcontainers/containers/ComposeContainer.java +++ b/core/src/main/java/org/testcontainers/containers/ComposeContainer.java @@ -62,7 +62,7 @@ public class ComposeContainer extends FailureDetectingExternalResource implement public static final String COMPOSE_EXECUTABLE = SystemUtils.IS_OS_WINDOWS ? "docker.exe" : "docker"; - private static final String DEFAULT_DOCKER_IMAGE = "docker:27.5.0"; + private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("docker:24.0.2"); private final ComposeDelegate composeDelegate; @@ -94,7 +94,7 @@ public ComposeContainer(DockerImageName image, String identifier, List com */ @Deprecated public ComposeContainer(File... composeFiles) { - this(getDockerImageName(), Arrays.asList(composeFiles)); + this(DEFAULT_IMAGE_NAME, Arrays.asList(composeFiles)); } /** @@ -103,7 +103,7 @@ public ComposeContainer(File... composeFiles) { */ @Deprecated public ComposeContainer(List composeFiles) { - this(getDockerImageName(), composeFiles); + this(DEFAULT_IMAGE_NAME, composeFiles); } /** @@ -112,7 +112,7 @@ public ComposeContainer(List composeFiles) { */ @Deprecated public ComposeContainer(String identifier, File... composeFiles) { - this(getDockerImageName(), identifier, Arrays.asList(composeFiles)); + this(DEFAULT_IMAGE_NAME, identifier, Arrays.asList(composeFiles)); } /** @@ -121,15 +121,7 @@ public ComposeContainer(String identifier, File... composeFiles) { */ @Deprecated public ComposeContainer(String identifier, List composeFiles) { - this(getDockerImageName(), identifier, composeFiles); - } - - public static DockerImageName getDockerImageName() { - return DockerImageName.parse( - TestcontainersConfiguration - .getInstance() - .getEnvVarOrUserProperty("compose.container.image", DEFAULT_DOCKER_IMAGE) - ); + this(DEFAULT_IMAGE_NAME, identifier, composeFiles); } @Override From 44b674bdd825d63da5259b642c6e5b3fd38bdb3e Mon Sep 17 00:00:00 2001 From: Fokion Sotiropoulos Date: Sat, 15 Feb 2025 15:33:39 +0000 Subject: [PATCH 10/14] Adding javadoc to pass the step --- .../containers/DockerComposeContainer.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java b/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java index c2e40c8f83d..20e1c5ae61b 100644 --- a/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java +++ b/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java @@ -87,26 +87,47 @@ public DockerComposeContainer(DockerImageName image, String identifier, List composeFiles) { this(Base58.randomString(6).toLowerCase(), composeFiles); } + /** + * @deprecated + * Use the new constructor DockerComposeContainer(String identifier,File... composeFiles) + */ @Deprecated public DockerComposeContainer(String identifier, File... composeFiles) { this(identifier, Arrays.asList(composeFiles)); } + + /** + * @deprecated + * Use the new constructor DockerComposeContainer(String identifier,List composeFiles) + */ @Deprecated public DockerComposeContainer(String identifier, List composeFiles) { this.composeDelegate = From 8c52fdcb4fd70abd183e429a1c8dc24b4d9be32c Mon Sep 17 00:00:00 2001 From: Fokion Sotiropoulos Date: Sun, 6 Apr 2025 13:52:08 +0100 Subject: [PATCH 11/14] adding more tests to unblock this --- .../containers/ComposeContainerTest.java | 34 +++++--- ...DockerComposeContainerCustomImageTest.java | 79 +++++++++++++++++++ 2 files changed, 103 insertions(+), 10 deletions(-) create mode 100644 core/src/test/java/org/testcontainers/containers/DockerComposeContainerCustomImageTest.java diff --git a/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java b/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java index 76ba8ba42f4..ffcfe67fd0e 100644 --- a/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java +++ b/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java @@ -8,6 +8,7 @@ import org.junit.Before; import org.junit.Test; import org.slf4j.LoggerFactory; +import org.testcontainers.utility.DockerImageName; import org.testcontainers.utility.TestcontainersConfiguration; import java.io.File; @@ -21,7 +22,9 @@ public class ComposeContainerTest { public static final String DOCKER_IMAGE = "docker:25.0.2"; + private static final String COMPOSE_FILE_PATH = "src/test/resources/docker-compose-imagename-parsing-v2.yml"; + private ComposeContainer composeContainer; private TestLogAppender testLogAppender; private Logger rootLogger; @@ -33,6 +36,7 @@ public void setup() { rootLogger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); rootLogger.addAppender(testLogAppender); TestcontainersConfiguration.getInstance().updateUserConfig("compose.container.image", DOCKER_IMAGE); + composeContainer.stop(); } @After @@ -43,22 +47,32 @@ public void tearDown() { } @Test - public void testWithCustomDockerImage() throws IOException { - ComposeContainer composeContainer = new ComposeContainer( - Lists.newArrayList(new File("src/test/resources/docker-compose-imagename-parsing-v2.yml")) + public void testWithCustomDockerImage() { + composeContainer = new ComposeContainer( + DockerImageName.parse(DOCKER_IMAGE), new File(COMPOSE_FILE_PATH) + ); + composeContainer.start(); + verifyContainerCreation(); + } + + @Test + public void testWithCustomDockerImageAndIdentifier() { + composeContainer = new ComposeContainer( + DockerImageName.parse(DOCKER_IMAGE), "myidentifier", new File(COMPOSE_FILE_PATH) ); composeContainer.start(); + verifyContainerCreation(); + } + private void verifyContainerCreation() { List logs = testLogAppender.getLogs(); - composeContainer.stop(); - assertThat(logs).isNotNull(); - Optional verification = logs - .stream() - .filter(line -> line.contains("Creating container for image: " + DOCKER_IMAGE)) - .findFirst(); - assertThat(verification.isPresent()).isTrue(); + + assertThat(logs) + .isNotNull() + .anyMatch(line -> line.contains("Creating container for image: " + DOCKER_IMAGE)); } + private static class TestLogAppender extends AppenderBase { private final List logs = new ArrayList<>(); diff --git a/core/src/test/java/org/testcontainers/containers/DockerComposeContainerCustomImageTest.java b/core/src/test/java/org/testcontainers/containers/DockerComposeContainerCustomImageTest.java new file mode 100644 index 00000000000..ba1faa019e0 --- /dev/null +++ b/core/src/test/java/org/testcontainers/containers/DockerComposeContainerCustomImageTest.java @@ -0,0 +1,79 @@ +package org.testcontainers.containers; + +import ch.qos.logback.classic.Logger; +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.AppenderBase; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.slf4j.LoggerFactory; +import org.testcontainers.utility.DockerImageName; +import org.testcontainers.utility.TestcontainersConfiguration; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +public class DockerComposeContainerCustomImageTest { + public static final String DOCKER_IMAGE = "docker/compose:debian-1.29.2"; + private static final String COMPOSE_FILE_PATH = "src/test/resources/docker-compose-imagename-parsing-v1.yml"; + + private DockerComposeContainer composeContainer; + private TestLogAppender testLogAppender; + private Logger rootLogger; + + @Before + public void setup() { + testLogAppender = new TestLogAppender(); + testLogAppender.start(); + rootLogger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); + rootLogger.addAppender(testLogAppender); + TestcontainersConfiguration.getInstance().updateUserConfig("compose.container.image", DOCKER_IMAGE); + } + + @After + public void tearDown() { + rootLogger.detachAppender(testLogAppender); + TestcontainersConfiguration.getInstance().updateUserConfig("compose.container.image", ""); + System.clearProperty("compose.container.image"); + composeContainer.stop(); + } + + @Test + public void testWithCustomDockerImage() { + composeContainer = new DockerComposeContainer(DockerImageName.parse(DOCKER_IMAGE),"testing", new File(COMPOSE_FILE_PATH)); + composeContainer.start(); + verifyContainerCreation(); + } + + @Test + public void testWithCustomDockerImageAndIdentifier() { + composeContainer = new DockerComposeContainer(DockerImageName.parse(DOCKER_IMAGE), "myidentifier", new File(COMPOSE_FILE_PATH)); + composeContainer.start(); + verifyContainerCreation(); + } + + private void verifyContainerCreation() { + List logs = testLogAppender.getLogs(); + + assertThat(logs) + .isNotNull() + .anyMatch(line -> line.contains("Creating container for image: " + DOCKER_IMAGE)); + } + + private static class TestLogAppender extends AppenderBase { + + private final List logs = new ArrayList<>(); + + @Override + protected void append(ILoggingEvent eventObject) { + logs.add(eventObject.getFormattedMessage()); + } + + public List getLogs() { + return logs; + } + } +} From 49a22435ba3c6be8d9ff1b8b81d4f20c62d0881e Mon Sep 17 00:00:00 2001 From: Fokion Sotiropoulos Date: Sun, 6 Apr 2025 14:07:24 +0100 Subject: [PATCH 12/14] adding javadoc --- .../containers/ComposeContainer.java | 28 ++++++++++++++++++- .../containers/DockerComposeContainer.java | 28 +++++++++++++++++++ .../containers/ComposeContainerTest.java | 3 -- 3 files changed, 55 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/testcontainers/containers/ComposeContainer.java b/core/src/main/java/org/testcontainers/containers/ComposeContainer.java index b68e9ec693c..00741e0fec2 100644 --- a/core/src/main/java/org/testcontainers/containers/ComposeContainer.java +++ b/core/src/main/java/org/testcontainers/containers/ComposeContainer.java @@ -69,19 +69,45 @@ public class ComposeContainer extends FailureDetectingExternalResource implement private String project; private List filesInDirectory = new ArrayList<>(); - + /** + * Creates a new ComposeContainer with a random identifier using the specified Docker image and compose files. + * + * @param image The Docker image to use for the container + * @param composeFiles One or more Docker Compose configuration files + */ public ComposeContainer(DockerImageName image, File... composeFiles) { this(image, Arrays.asList(composeFiles)); } + /** + * Creates a new ComposeContainer with a random identifier using the specified Docker image and compose files. + * + * @param image The Docker image to use for the container + * @param composeFiles A list of Docker Compose configuration files + */ public ComposeContainer(DockerImageName image, List composeFiles) { this(image, Base58.randomString(6).toLowerCase(), composeFiles); } + /** + * Creates a new ComposeContainer with the specified Docker image, identifier, and compose files. + * + * @param image The Docker image to use for the container + * @param identifier A unique identifier for this compose environment + * @param composeFiles One or more Docker Compose configuration files + */ public ComposeContainer(DockerImageName image, String identifier, File... composeFiles) { this(image, identifier, Arrays.asList(composeFiles)); } + /** + * Creates a new ComposeContainer with the specified Docker image, identifier, and compose files. + * This is the primary constructor that all other constructors delegate to. + * + * @param image The Docker image to use for the container + * @param identifier A unique identifier for this compose environment + * @param composeFiles A list of Docker Compose configuration files + */ public ComposeContainer(DockerImageName image, String identifier, List composeFiles) { this.composeDelegate = new ComposeDelegate(ComposeDelegate.ComposeVersion.V2, composeFiles, identifier, COMPOSE_EXECUTABLE, image); diff --git a/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java b/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java index 20e1c5ae61b..270906c3ba2 100644 --- a/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java +++ b/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java @@ -69,18 +69,46 @@ public class DockerComposeContainer> private List filesInDirectory = new ArrayList<>(); + /** + * Creates a new DockerComposeContainer with the specified Docker image, identifier, and a single compose file. + * + * @param image The Docker image to use for the container + * @param identifier A unique identifier for this compose environment + * @param composeFile A Docker Compose configuration file + */ public DockerComposeContainer(DockerImageName image, String identifier, File composeFile) { this(image, identifier, Collections.singletonList(composeFile)); } + /** + * Creates a new DockerComposeContainer with a random identifier using the specified Docker image and compose files. + * + * @param image The Docker image to use for the container + * @param composeFiles A list of Docker Compose configuration files + */ public DockerComposeContainer(DockerImageName image, List composeFiles) { this(image, Base58.randomString(6).toLowerCase(), composeFiles); } + /** + * Creates a new DockerComposeContainer with the specified Docker image, identifier, and compose files. + * + * @param image The Docker image to use for the container + * @param identifier A unique identifier for this compose environment + * @param composeFiles One or more Docker Compose configuration files + */ public DockerComposeContainer(DockerImageName image, String identifier, File... composeFiles) { this(image, identifier, Arrays.asList(composeFiles)); } + /** + * Creates a new DockerComposeContainer with the specified Docker image, identifier, and compose files. + * This is the primary constructor that all other constructors delegate to. + * + * @param image The Docker image to use for the container + * @param identifier A unique identifier for this compose environment + * @param composeFiles A list of Docker Compose configuration files + */ public DockerComposeContainer(DockerImageName image, String identifier, List composeFiles) { this.composeDelegate = new ComposeDelegate(ComposeDelegate.ComposeVersion.V1, composeFiles, identifier, COMPOSE_EXECUTABLE, image); diff --git a/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java b/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java index ffcfe67fd0e..0f94f8acc7f 100644 --- a/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java +++ b/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java @@ -3,7 +3,6 @@ import ch.qos.logback.classic.Logger; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.AppenderBase; -import com.google.common.collect.Lists; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -12,10 +11,8 @@ import org.testcontainers.utility.TestcontainersConfiguration; import java.io.File; -import java.io.IOException; import java.util.ArrayList; import java.util.List; -import java.util.Optional; import static org.assertj.core.api.Assertions.assertThat; From 80eba59a4bb12aaa8cfaa920de6adec20d2bf0ad Mon Sep 17 00:00:00 2001 From: Fokion Sotiropoulos Date: Sun, 6 Apr 2025 14:25:23 +0100 Subject: [PATCH 13/14] fix tests apply spotless --- .../containers/ComposeContainer.java | 2 +- .../containers/DockerComposeContainer.java | 1 - .../containers/ComposeContainerTest.java | 16 +++++----------- .../DockerComposeContainerCustomImageTest.java | 15 ++++++++++----- 4 files changed, 16 insertions(+), 18 deletions(-) diff --git a/core/src/main/java/org/testcontainers/containers/ComposeContainer.java b/core/src/main/java/org/testcontainers/containers/ComposeContainer.java index 00741e0fec2..1ba2552ef7a 100644 --- a/core/src/main/java/org/testcontainers/containers/ComposeContainer.java +++ b/core/src/main/java/org/testcontainers/containers/ComposeContainer.java @@ -13,7 +13,6 @@ import org.testcontainers.lifecycle.Startable; import org.testcontainers.utility.Base58; import org.testcontainers.utility.DockerImageName; -import org.testcontainers.utility.TestcontainersConfiguration; import java.io.File; import java.time.Duration; @@ -69,6 +68,7 @@ public class ComposeContainer extends FailureDetectingExternalResource implement private String project; private List filesInDirectory = new ArrayList<>(); + /** * Creates a new ComposeContainer with a random identifier using the specified Docker image and compose files. * diff --git a/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java b/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java index 270906c3ba2..571d5a96398 100644 --- a/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java +++ b/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java @@ -151,7 +151,6 @@ public DockerComposeContainer(String identifier, File... composeFiles) { this(identifier, Arrays.asList(composeFiles)); } - /** * @deprecated * Use the new constructor DockerComposeContainer(String identifier,List composeFiles) diff --git a/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java b/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java index 0f94f8acc7f..0117096fb4d 100644 --- a/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java +++ b/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java @@ -33,11 +33,11 @@ public void setup() { rootLogger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); rootLogger.addAppender(testLogAppender); TestcontainersConfiguration.getInstance().updateUserConfig("compose.container.image", DOCKER_IMAGE); - composeContainer.stop(); } @After public void tearDown() { + composeContainer.stop(); rootLogger.detachAppender(testLogAppender); TestcontainersConfiguration.getInstance().updateUserConfig("compose.container.image", ""); System.clearProperty("compose.container.image"); @@ -45,18 +45,15 @@ public void tearDown() { @Test public void testWithCustomDockerImage() { - composeContainer = new ComposeContainer( - DockerImageName.parse(DOCKER_IMAGE), new File(COMPOSE_FILE_PATH) - ); + composeContainer = new ComposeContainer(DockerImageName.parse(DOCKER_IMAGE), new File(COMPOSE_FILE_PATH)); composeContainer.start(); verifyContainerCreation(); } @Test public void testWithCustomDockerImageAndIdentifier() { - composeContainer = new ComposeContainer( - DockerImageName.parse(DOCKER_IMAGE), "myidentifier", new File(COMPOSE_FILE_PATH) - ); + composeContainer = + new ComposeContainer(DockerImageName.parse(DOCKER_IMAGE), "myidentifier", new File(COMPOSE_FILE_PATH)); composeContainer.start(); verifyContainerCreation(); } @@ -64,12 +61,9 @@ public void testWithCustomDockerImageAndIdentifier() { private void verifyContainerCreation() { List logs = testLogAppender.getLogs(); - assertThat(logs) - .isNotNull() - .anyMatch(line -> line.contains("Creating container for image: " + DOCKER_IMAGE)); + assertThat(logs).isNotNull().anyMatch(line -> line.contains("Creating container for image: " + DOCKER_IMAGE)); } - private static class TestLogAppender extends AppenderBase { private final List logs = new ArrayList<>(); diff --git a/core/src/test/java/org/testcontainers/containers/DockerComposeContainerCustomImageTest.java b/core/src/test/java/org/testcontainers/containers/DockerComposeContainerCustomImageTest.java index ba1faa019e0..e861e9a6bad 100644 --- a/core/src/test/java/org/testcontainers/containers/DockerComposeContainerCustomImageTest.java +++ b/core/src/test/java/org/testcontainers/containers/DockerComposeContainerCustomImageTest.java @@ -17,6 +17,7 @@ import static org.assertj.core.api.Assertions.assertThat; public class DockerComposeContainerCustomImageTest { + public static final String DOCKER_IMAGE = "docker/compose:debian-1.29.2"; private static final String COMPOSE_FILE_PATH = "src/test/resources/docker-compose-imagename-parsing-v1.yml"; @@ -43,14 +44,20 @@ public void tearDown() { @Test public void testWithCustomDockerImage() { - composeContainer = new DockerComposeContainer(DockerImageName.parse(DOCKER_IMAGE),"testing", new File(COMPOSE_FILE_PATH)); + composeContainer = + new DockerComposeContainer(DockerImageName.parse(DOCKER_IMAGE), "testing", new File(COMPOSE_FILE_PATH)); composeContainer.start(); verifyContainerCreation(); } @Test public void testWithCustomDockerImageAndIdentifier() { - composeContainer = new DockerComposeContainer(DockerImageName.parse(DOCKER_IMAGE), "myidentifier", new File(COMPOSE_FILE_PATH)); + composeContainer = + new DockerComposeContainer( + DockerImageName.parse(DOCKER_IMAGE), + "myidentifier", + new File(COMPOSE_FILE_PATH) + ); composeContainer.start(); verifyContainerCreation(); } @@ -58,9 +65,7 @@ public void testWithCustomDockerImageAndIdentifier() { private void verifyContainerCreation() { List logs = testLogAppender.getLogs(); - assertThat(logs) - .isNotNull() - .anyMatch(line -> line.contains("Creating container for image: " + DOCKER_IMAGE)); + assertThat(logs).isNotNull().anyMatch(line -> line.contains("Creating container for image: " + DOCKER_IMAGE)); } private static class TestLogAppender extends AppenderBase { From ce917353d7170bd991b7172d745515d3d1e8c4bc Mon Sep 17 00:00:00 2001 From: Fokion Sotiropoulos Date: Sun, 6 Apr 2025 14:50:20 +0100 Subject: [PATCH 14/14] fixing checkstyle issues --- .../org/testcontainers/containers/ComposeContainerTest.java | 2 ++ .../containers/DockerComposeContainerCustomImageTest.java | 3 +++ 2 files changed, 5 insertions(+) diff --git a/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java b/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java index 0117096fb4d..81c056af823 100644 --- a/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java +++ b/core/src/test/java/org/testcontainers/containers/ComposeContainerTest.java @@ -19,9 +19,11 @@ public class ComposeContainerTest { public static final String DOCKER_IMAGE = "docker:25.0.2"; + private static final String COMPOSE_FILE_PATH = "src/test/resources/docker-compose-imagename-parsing-v2.yml"; private ComposeContainer composeContainer; + private TestLogAppender testLogAppender; private Logger rootLogger; diff --git a/core/src/test/java/org/testcontainers/containers/DockerComposeContainerCustomImageTest.java b/core/src/test/java/org/testcontainers/containers/DockerComposeContainerCustomImageTest.java index e861e9a6bad..cfdff3a18d0 100644 --- a/core/src/test/java/org/testcontainers/containers/DockerComposeContainerCustomImageTest.java +++ b/core/src/test/java/org/testcontainers/containers/DockerComposeContainerCustomImageTest.java @@ -19,10 +19,13 @@ public class DockerComposeContainerCustomImageTest { public static final String DOCKER_IMAGE = "docker/compose:debian-1.29.2"; + private static final String COMPOSE_FILE_PATH = "src/test/resources/docker-compose-imagename-parsing-v1.yml"; private DockerComposeContainer composeContainer; + private TestLogAppender testLogAppender; + private Logger rootLogger; @Before