test: fake minisweagent for docker cwd mount regressions
Make the new Docker cwd-mount tests pass in CI environments that do not have the minisweagent package installed by injecting a fake module instead of monkeypatching an import path that may not exist.
This commit is contained in:
parent
780ddd102b
commit
b72f522e30
1 changed files with 24 additions and 48 deletions
|
|
@ -1,11 +1,31 @@
|
||||||
import logging
|
import logging
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import types
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from tools.environments import docker as docker_env
|
from tools.environments import docker as docker_env
|
||||||
|
|
||||||
|
|
||||||
|
def _install_fake_minisweagent(monkeypatch, captured_run_args):
|
||||||
|
class MockInnerDocker:
|
||||||
|
container_id = "fake-container"
|
||||||
|
config = type("Config", (), {"executable": "/usr/bin/docker", "forward_env": [], "env": {}})()
|
||||||
|
|
||||||
|
def __init__(self, **kwargs):
|
||||||
|
captured_run_args.extend(kwargs.get("run_args", []))
|
||||||
|
|
||||||
|
minisweagent_mod = types.ModuleType("minisweagent")
|
||||||
|
environments_mod = types.ModuleType("minisweagent.environments")
|
||||||
|
docker_mod = types.ModuleType("minisweagent.environments.docker")
|
||||||
|
docker_mod.DockerEnvironment = MockInnerDocker
|
||||||
|
|
||||||
|
monkeypatch.setitem(sys.modules, "minisweagent", minisweagent_mod)
|
||||||
|
monkeypatch.setitem(sys.modules, "minisweagent.environments", environments_mod)
|
||||||
|
monkeypatch.setitem(sys.modules, "minisweagent.environments.docker", docker_mod)
|
||||||
|
|
||||||
|
|
||||||
def _make_dummy_env(**kwargs):
|
def _make_dummy_env(**kwargs):
|
||||||
"""Helper to construct DockerEnvironment with minimal required args."""
|
"""Helper to construct DockerEnvironment with minimal required args."""
|
||||||
return docker_env.DockerEnvironment(
|
return docker_env.DockerEnvironment(
|
||||||
|
|
@ -101,18 +121,7 @@ def test_auto_mount_host_cwd_adds_volume(monkeypatch, tmp_path):
|
||||||
monkeypatch.setattr(docker_env.subprocess, "run", _run_docker_version)
|
monkeypatch.setattr(docker_env.subprocess, "run", _run_docker_version)
|
||||||
|
|
||||||
captured_run_args = []
|
captured_run_args = []
|
||||||
|
_install_fake_minisweagent(monkeypatch, captured_run_args)
|
||||||
class MockInnerDocker:
|
|
||||||
container_id = "mock-container-123"
|
|
||||||
config = type("Config", (), {"executable": "/usr/bin/docker", "forward_env": [], "env": {}})()
|
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
|
||||||
captured_run_args.extend(kwargs.get("run_args", []))
|
|
||||||
|
|
||||||
monkeypatch.setattr(
|
|
||||||
"minisweagent.environments.docker.DockerEnvironment",
|
|
||||||
MockInnerDocker,
|
|
||||||
)
|
|
||||||
|
|
||||||
_make_dummy_env(
|
_make_dummy_env(
|
||||||
cwd="/workspace",
|
cwd="/workspace",
|
||||||
|
|
@ -136,18 +145,7 @@ def test_auto_mount_disabled_by_default(monkeypatch, tmp_path):
|
||||||
monkeypatch.setattr(docker_env.subprocess, "run", _run_docker_version)
|
monkeypatch.setattr(docker_env.subprocess, "run", _run_docker_version)
|
||||||
|
|
||||||
captured_run_args = []
|
captured_run_args = []
|
||||||
|
_install_fake_minisweagent(monkeypatch, captured_run_args)
|
||||||
class MockInnerDocker:
|
|
||||||
container_id = "mock-container-456"
|
|
||||||
config = type("Config", (), {"executable": "/usr/bin/docker", "forward_env": [], "env": {}})()
|
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
|
||||||
captured_run_args.extend(kwargs.get("run_args", []))
|
|
||||||
|
|
||||||
monkeypatch.setattr(
|
|
||||||
"minisweagent.environments.docker.DockerEnvironment",
|
|
||||||
MockInnerDocker,
|
|
||||||
)
|
|
||||||
|
|
||||||
_make_dummy_env(
|
_make_dummy_env(
|
||||||
cwd="/root",
|
cwd="/root",
|
||||||
|
|
@ -173,18 +171,7 @@ def test_auto_mount_skipped_when_workspace_already_mounted(monkeypatch, tmp_path
|
||||||
monkeypatch.setattr(docker_env.subprocess, "run", _run_docker_version)
|
monkeypatch.setattr(docker_env.subprocess, "run", _run_docker_version)
|
||||||
|
|
||||||
captured_run_args = []
|
captured_run_args = []
|
||||||
|
_install_fake_minisweagent(monkeypatch, captured_run_args)
|
||||||
class MockInnerDocker:
|
|
||||||
container_id = "mock-container-789"
|
|
||||||
config = type("Config", (), {"executable": "/usr/bin/docker", "forward_env": [], "env": {}})()
|
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
|
||||||
captured_run_args.extend(kwargs.get("run_args", []))
|
|
||||||
|
|
||||||
monkeypatch.setattr(
|
|
||||||
"minisweagent.environments.docker.DockerEnvironment",
|
|
||||||
MockInnerDocker,
|
|
||||||
)
|
|
||||||
|
|
||||||
_make_dummy_env(
|
_make_dummy_env(
|
||||||
cwd="/workspace",
|
cwd="/workspace",
|
||||||
|
|
@ -210,18 +197,7 @@ def test_auto_mount_replaces_persistent_workspace_bind(monkeypatch, tmp_path):
|
||||||
monkeypatch.setattr(docker_env.subprocess, "run", _run_docker_version)
|
monkeypatch.setattr(docker_env.subprocess, "run", _run_docker_version)
|
||||||
|
|
||||||
captured_run_args = []
|
captured_run_args = []
|
||||||
|
_install_fake_minisweagent(monkeypatch, captured_run_args)
|
||||||
class MockInnerDocker:
|
|
||||||
container_id = "mock-container-persistent"
|
|
||||||
config = type("Config", (), {"executable": "/usr/bin/docker", "forward_env": [], "env": {}})()
|
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
|
||||||
captured_run_args.extend(kwargs.get("run_args", []))
|
|
||||||
|
|
||||||
monkeypatch.setattr(
|
|
||||||
"minisweagent.environments.docker.DockerEnvironment",
|
|
||||||
MockInnerDocker,
|
|
||||||
)
|
|
||||||
|
|
||||||
_make_dummy_env(
|
_make_dummy_env(
|
||||||
cwd="/workspace",
|
cwd="/workspace",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue