from __future__ import annotations import sys import pytest import pyro_mcp.runtime_network_check as runtime_network_check def test_network_check_uses_network_enabled_manager(monkeypatch: pytest.MonkeyPatch) -> None: observed: dict[str, object] = {} class StubPyro: def __init__(self, **kwargs: object) -> None: observed.update(kwargs) def run_in_vm(self, **kwargs: object) -> dict[str, object]: observed["run_kwargs"] = kwargs return { "vm_id": "vm123", "execution_mode": "guest_vsock", "exit_code": 0, "stdout": "true\n", "stderr": "", "cleanup": {"deleted": True, "vm_id": "vm123", "reason": "post_exec_cleanup"}, } monkeypatch.setattr(runtime_network_check, "Pyro", StubPyro) result = runtime_network_check.run_network_check() assert observed["run_kwargs"] == { "environment": "debian:12", "command": runtime_network_check.NETWORK_CHECK_COMMAND, "vcpu_count": 1, "mem_mib": 1024, "timeout_seconds": 120, "ttl_seconds": 600, "network": True, } assert result.execution_mode == "guest_vsock" assert result.network_enabled is True assert result.exit_code == 0 def test_network_check_main_fails_on_unsuccessful_command( monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture[str] ) -> None: monkeypatch.setattr(sys, "argv", ["runtime-network-check"]) monkeypatch.setattr( runtime_network_check, "run_network_check", lambda **kwargs: runtime_network_check.NetworkCheckResult( vm_id="vm123", execution_mode="guest_vsock", network_enabled=True, exit_code=1, stdout="", stderr="curl failed", cleanup={"deleted": True}, ), ) with pytest.raises(SystemExit, match="1"): runtime_network_check.main() output = capsys.readouterr().out assert "[network] result=failure" in output assert "[network] stderr=curl failed" in output