From 50b381d2339e741f7f107b74911c6bfeeb292ab9 Mon Sep 17 00:00:00 2001 From: Richard North Date: Wed, 7 Oct 2020 21:46:09 +0100 Subject: [PATCH 1/3] Ensure that when a version is not specified, `latest` is used as the default tag --- .../testcontainers/utility/Versioning.java | 4 +-- .../dockerclient/AmbiguousImagePullTest.java | 32 +++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 core/src/test/java/org/testcontainers/dockerclient/AmbiguousImagePullTest.java diff --git a/core/src/main/java/org/testcontainers/utility/Versioning.java b/core/src/main/java/org/testcontainers/utility/Versioning.java index 8944b3f0ba6..84dcf46274e 100644 --- a/core/src/main/java/org/testcontainers/utility/Versioning.java +++ b/core/src/main/java/org/testcontainers/utility/Versioning.java @@ -24,12 +24,12 @@ public boolean isValid() { @Override public String getSeparator() { - return ""; + return ":"; } @Override public String toString() { - return ""; + return "latest"; } @Override diff --git a/core/src/test/java/org/testcontainers/dockerclient/AmbiguousImagePullTest.java b/core/src/test/java/org/testcontainers/dockerclient/AmbiguousImagePullTest.java new file mode 100644 index 00000000000..5369186906b --- /dev/null +++ b/core/src/test/java/org/testcontainers/dockerclient/AmbiguousImagePullTest.java @@ -0,0 +1,32 @@ +package org.testcontainers.dockerclient; + +import com.github.dockerjava.api.DockerClient; +import com.github.dockerjava.api.model.Image; +import org.junit.Test; +import org.testcontainers.DockerClientFactory; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.startupcheck.OneShotStartupCheckStrategy; +import org.testcontainers.utility.DockerImageName; + +import java.util.List; + +public class AmbiguousImagePullTest { + + @Test(timeout = 30_000) + public void testNotUsingParse() { + DockerClient client = DockerClientFactory.instance().client(); + List alpineImages = client.listImagesCmd() + .withImageNameFilter("alpine:latest") + .exec(); + for (Image alpineImage : alpineImages) { + client.removeImageCmd(alpineImage.getId()).exec(); + } + + try (final GenericContainer container = new GenericContainer<>(DockerImageName.parse("alpine")) + .withCommand("/bin/sh", "-c", "sleep 0") + .withStartupCheckStrategy(new OneShotStartupCheckStrategy())) { + container.start(); + // do nothing other than start and stop + } + } +} From 244b7759a9573fea31739fb911bfe27eca24ffd7 Mon Sep 17 00:00:00 2001 From: Richard North Date: Wed, 7 Oct 2020 22:49:23 +0100 Subject: [PATCH 2/3] Fix test --- .../java/org/testcontainers/utility/DockerImageNameTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/test/java/org/testcontainers/utility/DockerImageNameTest.java b/core/src/test/java/org/testcontainers/utility/DockerImageNameTest.java index 34575f2b4b9..e06407fbf56 100644 --- a/core/src/test/java/org/testcontainers/utility/DockerImageNameTest.java +++ b/core/src/test/java/org/testcontainers/utility/DockerImageNameTest.java @@ -112,7 +112,7 @@ public void testParsing() { canonicalName = unversionedPart + versionSeparator + version; } else { combined = unversionedPart; - canonicalName = unversionedPart; + canonicalName = unversionedPart + ":latest"; } VisibleAssertions.context("For " + combined); @@ -124,7 +124,7 @@ public void testParsing() { if (version != null) { assertEquals(combined + " has version part: " + version, version, imageName.getVersionPart()); } else { - assertEquals(combined + " has no version specified", "", imageName.getVersionPart()); + assertEquals(combined + " has automatic 'latest' version specified", "latest", imageName.getVersionPart()); } assertEquals(combined + " has canonical name: " + canonicalName, canonicalName, imageName.asCanonicalNameString()); From 406629e19f9b44b6a7c0dee0612593bf2879dd0c Mon Sep 17 00:00:00 2001 From: Richard North Date: Sat, 10 Oct 2020 16:37:40 +0100 Subject: [PATCH 3/3] Tweak formatting --- .../dockerclient/AmbiguousImagePullTest.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/core/src/test/java/org/testcontainers/dockerclient/AmbiguousImagePullTest.java b/core/src/test/java/org/testcontainers/dockerclient/AmbiguousImagePullTest.java index 5369186906b..5d2c42ed1b2 100644 --- a/core/src/test/java/org/testcontainers/dockerclient/AmbiguousImagePullTest.java +++ b/core/src/test/java/org/testcontainers/dockerclient/AmbiguousImagePullTest.java @@ -22,9 +22,11 @@ public void testNotUsingParse() { client.removeImageCmd(alpineImage.getId()).exec(); } - try (final GenericContainer container = new GenericContainer<>(DockerImageName.parse("alpine")) - .withCommand("/bin/sh", "-c", "sleep 0") - .withStartupCheckStrategy(new OneShotStartupCheckStrategy())) { + try ( + final GenericContainer container = new GenericContainer<>(DockerImageName.parse("alpine")) + .withCommand("/bin/sh", "-c", "sleep 0") + .withStartupCheckStrategy(new OneShotStartupCheckStrategy()) + ) { container.start(); // do nothing other than start and stop }