import subprocess import pytest from l4d2host.steam_install import SteamInstaller def test_windows_then_linux(monkeypatch: pytest.MonkeyPatch) -> None: calls: list[list[str]] = [] def fake_run_command(cmd, **kwargs): del kwargs calls.append(list(cmd)) monkeypatch.setattr("l4d2host.steam_install.run_command", fake_run_command) SteamInstaller().install_or_update() assert "windows" in calls[0] assert "linux" in calls[1] def test_fail_fast_on_first_failure(monkeypatch: pytest.MonkeyPatch) -> None: calls: list[list[str]] = [] def fake_run_command(cmd, **kwargs): del kwargs calls.append(list(cmd)) if len(calls) == 1: raise subprocess.CalledProcessError(returncode=1, cmd=cmd) monkeypatch.setattr("l4d2host.steam_install.run_command", fake_run_command) with pytest.raises(subprocess.CalledProcessError): SteamInstaller().install_or_update() assert len(calls) == 1