diff --git a/internal/core/docker_host.go b/internal/core/docker_host.go index fc06ea8ad1..73ff0a9776 100644 --- a/internal/core/docker_host.go +++ b/internal/core/docker_host.go @@ -298,12 +298,14 @@ func testcontainersHostFromProperties(_ context.Context) (string, error) { cfg := config.Read() testcontainersHost := cfg.TestcontainersHost if testcontainersHost != "" { - parsed, err := parseURL(testcontainersHost) + // Validate the URL format + _, err := parseURL(testcontainersHost) if err != nil { return "", err } - return parsed, nil + // Return the original URL to preserve schema for Docker client + return testcontainersHost, nil } return "", ErrTestcontainersHostNotSetInProperties diff --git a/internal/core/docker_host_test.go b/internal/core/docker_host_test.go index cce55d7f3d..ccd33e52c3 100644 --- a/internal/core/docker_host_test.go +++ b/internal/core/docker_host_test.go @@ -177,13 +177,26 @@ func TestExtractDockerHost(t *testing.T) { t.Cleanup(resetSocketOverrideFn) t.Run("Testcontainers host is defined in properties", func(t *testing.T) { - content := "tc.host=" + testRemoteHost + t.Run("TCP host", func(t *testing.T) { + content := "tc.host=" + testRemoteHost - setupTestcontainersProperties(t, content) + setupTestcontainersProperties(t, content) - socket, err := testcontainersHostFromProperties(context.Background()) - require.NoError(t, err) - require.Equal(t, testRemoteHost, socket) + socket, err := testcontainersHostFromProperties(context.Background()) + require.NoError(t, err) + require.Equal(t, testRemoteHost, socket) + }) + + t.Run("Unix socket host preserves schema", func(t *testing.T) { + unixSocket := "unix:///var/run/docker.sock" + content := "tc.host=" + unixSocket + + setupTestcontainersProperties(t, content) + + socket, err := testcontainersHostFromProperties(context.Background()) + require.NoError(t, err) + require.Equal(t, unixSocket, socket) + }) }) t.Run("Testcontainers host is not defined in properties", func(t *testing.T) {