Files
hermes-agent/tests/pm/test_shell_discovery.py
2026-10-10 15:20:13 +02:00

38 lines
1.4 KiB
Python

"""The local transport can use Git Bash without a PATH entry."""
import os
from pathlib import Path
import subprocess
import pytest
@pytest.mark.platforms("windows")
def test_local_transport_finds_conventional_bash_without_path(monkeypatch, tmp_path):
from tools.environments.local import _find_bash
program_files = Path(os.environ.get("ProgramFiles", r"C:\Program Files"))
conventional = program_files / "Git/bin/bash.exe"
if not conventional.is_file():
pytest.skip("a conventional Git for Windows installation is required")
monkeypatch.setenv("ProgramFiles", str(program_files))
monkeypatch.setenv("HERMES_RUNTIME_DIR", str(tmp_path / "tools"))
empty_bin = tmp_path / "empty-bin"
alias_bin = tmp_path / "WindowsApps"
empty_bin.mkdir()
alias_bin.mkdir()
(alias_bin / "bash.exe").write_bytes(b"unusable execution alias")
monkeypatch.setenv("PATHEXT", ".EXE;.CMD")
for directory in (empty_bin, alias_bin):
monkeypatch.setenv("PATH", str(directory))
selected = _find_bash()
assert Path(selected) == conventional
child = subprocess.run(
[selected, "--noprofile", "--norc", "-c", "printf shell-ready"],
cwd=tmp_path, capture_output=True, text=True, timeout=10,
check=False,
)
assert child.returncode == 0, child.stderr
assert child.stdout == "shell-ready"