diff --git a/core/src/main/java/org/testcontainers/dockerclient/DockerDesktopClientProviderStrategy.java b/core/src/main/java/org/testcontainers/dockerclient/DockerDesktopClientProviderStrategy.java index 56fd0b59ee4..0f5bf3585ff 100644 --- a/core/src/main/java/org/testcontainers/dockerclient/DockerDesktopClientProviderStrategy.java +++ b/core/src/main/java/org/testcontainers/dockerclient/DockerDesktopClientProviderStrategy.java @@ -66,7 +66,7 @@ public String getRemoteDockerUnixSocketPath() { @Override protected boolean isApplicable() { - return (SystemUtils.IS_OS_LINUX || SystemUtils.IS_OS_MAC) && this.socketPath != null; + return (SystemUtils.IS_OS_LINUX || SystemUtils.IS_OS_MAC) && getSocketPath() != null; } private Optional tryFolder(Path path) { diff --git a/core/src/test/java/org/testcontainers/dockerclient/DockerDesktopClientProviderStrategyTest.java b/core/src/test/java/org/testcontainers/dockerclient/DockerDesktopClientProviderStrategyTest.java new file mode 100644 index 00000000000..0b394f18b48 --- /dev/null +++ b/core/src/test/java/org/testcontainers/dockerclient/DockerDesktopClientProviderStrategyTest.java @@ -0,0 +1,48 @@ +package org.testcontainers.dockerclient; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledOnOs; +import org.junit.jupiter.api.condition.OS; +import org.junit.jupiter.api.io.TempDir; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +import static org.assertj.core.api.Assertions.assertThat; + +@SuppressWarnings("deprecation") +class DockerDesktopClientProviderStrategyTest { + + private final String originalUserHome = System.getProperty("user.home"); + + @AfterEach + void restoreUserHome() { + System.setProperty("user.home", originalUserHome); + } + + @Test + @EnabledOnOs({ OS.LINUX, OS.MAC }) + void notApplicableWhenDockerDesktopSocketIsMissing(@TempDir Path userHome) { + // user.home without a Docker Desktop socket under .docker/desktop or .docker/run + System.setProperty("user.home", userHome.toString()); + + DockerDesktopClientProviderStrategy strategy = new DockerDesktopClientProviderStrategy(); + + assertThat(strategy.isApplicable()).isFalse(); + } + + @Test + @EnabledOnOs({ OS.LINUX, OS.MAC }) + void applicableWhenDockerDesktopSocketExists(@TempDir Path userHome) throws IOException { + Path socketPath = userHome.resolve(".docker").resolve("desktop").resolve("docker.sock"); + Files.createDirectories(socketPath.getParent()); + Files.createFile(socketPath); + System.setProperty("user.home", userHome.toString()); + + DockerDesktopClientProviderStrategy strategy = new DockerDesktopClientProviderStrategy(); + + assertThat(strategy.isApplicable()).isTrue(); + } +}