from pathlib import Path import pytest HELPER_PATH = "/usr/local/libexec/left4me/left4me-overlay" def test_mount_invokes_helper_with_name_only(monkeypatch: pytest.MonkeyPatch) -> None: from l4d2host.fs.kernel_overlayfs import KernelOverlayFSMounter calls: list[list[str]] = [] def fake_run_command(cmd, **kwargs): del kwargs calls.append(list(cmd)) monkeypatch.setattr("l4d2host.fs.kernel_overlayfs.run_command", fake_run_command) KernelOverlayFSMounter().mount( lowerdirs="/var/lib/left4me/installation", upperdir=Path("/var/lib/left4me/runtime/alpha/upper"), workdir=Path("/var/lib/left4me/runtime/alpha/work"), merged=Path("/var/lib/left4me/runtime/alpha/merged"), ) assert calls == [["sudo", "-n", HELPER_PATH, "mount", "alpha"]] def test_unmount_invokes_helper_with_umount_verb(monkeypatch: pytest.MonkeyPatch) -> None: from l4d2host.fs.kernel_overlayfs import KernelOverlayFSMounter calls: list[list[str]] = [] def fake_run_command(cmd, **kwargs): del kwargs calls.append(list(cmd)) monkeypatch.setattr("l4d2host.fs.kernel_overlayfs.run_command", fake_run_command) KernelOverlayFSMounter().unmount(merged=Path("/var/lib/left4me/runtime/alpha/merged")) assert calls == [["sudo", "-n", HELPER_PATH, "umount", "alpha"]] def test_mount_propagates_run_command_kwargs(monkeypatch: pytest.MonkeyPatch) -> None: from l4d2host.fs.kernel_overlayfs import KernelOverlayFSMounter captured: dict = {} def fake_run_command(cmd, **kwargs): captured["cmd"] = list(cmd) captured["kwargs"] = kwargs monkeypatch.setattr("l4d2host.fs.kernel_overlayfs.run_command", fake_run_command) out: list[str] = [] err: list[str] = [] KernelOverlayFSMounter().mount( lowerdirs="/var/lib/left4me/installation", upperdir=Path("/var/lib/left4me/runtime/alpha/upper"), workdir=Path("/var/lib/left4me/runtime/alpha/work"), merged=Path("/var/lib/left4me/runtime/alpha/merged"), on_stdout=out.append, on_stderr=err.append, passthrough=False, should_cancel=lambda: False, ) assert captured["cmd"][0:3] == ["sudo", "-n", HELPER_PATH] captured["kwargs"]["on_stdout"]("hi") captured["kwargs"]["on_stderr"]("oops") assert out == ["hi"] assert err == ["oops"] assert captured["kwargs"]["passthrough"] is False assert callable(captured["kwargs"]["should_cancel"])