DEVX-24: fix: use separate Docker socket for DinD in CI
Post-merge / detect-type (push) Successful in 14s
Post-merge / validate-commit-msg (push) Successful in 15s
Post-merge / configure-repo (push) Successful in 43s
Post-merge / release (push) Successful in 51s
Post-merge / vikunja (push) Successful in 18s
Post-merge / sync-wiki (push) Successful in 45s
Post-merge / badges (push) Successful in 44s

This commit was merged in pull request #39.
This commit is contained in:
2026-06-24 01:08:10 +00:00
parent ea4ee0d303
commit 0b88c211f1
3 changed files with 52 additions and 13 deletions
+29 -4
View File
@@ -4,7 +4,7 @@ from unittest.mock import MagicMock, patch
from click.testing import CliRunner
from devx.molecule.start_docker import is_docker_ready, main, start_docker_daemon
from devx.molecule.start_docker import DOCKER_SOCK, is_docker_ready, main, start_docker_daemon
class TestIsDockerReady:
@@ -12,7 +12,9 @@ class TestIsDockerReady:
def test_ready(self, mock_run: MagicMock) -> None:
mock_run.return_value = MagicMock(returncode=0)
assert is_docker_ready() is True
mock_run.assert_called_once_with(["docker", "info"], capture_output=True, check=False)
call_kwargs = mock_run.call_args
assert call_kwargs.args[0] == ["docker", "info"]
assert call_kwargs.kwargs["env"]["DOCKER_HOST"] == f"unix://{DOCKER_SOCK}"
@patch("devx.molecule.start_docker.subprocess.run")
def test_not_ready(self, mock_run: MagicMock) -> None:
@@ -33,10 +35,15 @@ class TestStartDockerDaemon:
mock_sleep: MagicMock,
) -> None:
mock_ntf.return_value = MagicMock()
# First loop iteration: dockerd not ready yet. Second: ready.
mock_ready.side_effect = [False, True]
assert start_docker_daemon(timeout=5) is True
mock_popen.assert_called_once()
popen_args = mock_popen.call_args.args[0]
assert "dockerd" in popen_args
assert "--storage-driver" in popen_args
assert "vfs" in popen_args
assert "-H" in popen_args
assert f"unix://{DOCKER_SOCK}" in popen_args
mock_sleep.assert_called_once_with(1)
@patch("devx.molecule.start_docker.time.sleep")
@@ -84,11 +91,29 @@ class TestStartDockerDaemon:
mock_sleep: MagicMock,
) -> None:
mock_ntf.return_value = MagicMock()
# 9 iterations not ready, 10th ready.
mock_ready.side_effect = [False] * 9 + [True]
assert start_docker_daemon(timeout=10) is True
assert mock_sleep.call_count == 9
@patch("devx.molecule.start_docker.os.environ")
@patch("devx.molecule.start_docker.time.sleep")
@patch("devx.molecule.start_docker.is_docker_ready")
@patch("devx.molecule.start_docker.subprocess.Popen")
@patch("devx.molecule.start_docker.tempfile.NamedTemporaryFile")
def test_sets_docker_host(
self,
mock_ntf: MagicMock,
mock_popen: MagicMock,
mock_ready: MagicMock,
mock_sleep: MagicMock,
mock_environ: MagicMock,
) -> None:
"""DOCKER_HOST must be set so molecule connects to local daemon."""
mock_ntf.return_value = MagicMock()
mock_ready.return_value = True
start_docker_daemon(timeout=5)
mock_environ.__setitem__.assert_called_with("DOCKER_HOST", f"unix://{DOCKER_SOCK}")
class TestMain:
@patch("devx.molecule.start_docker.start_docker_daemon", return_value=True)