Files
hermes-agent/tests/pm/test_shell_candidates.py

41 lines
1.5 KiB
Python

"""Windows bash resolution as pure data: Program Files Git beats PATH, and
the WSL / MSIX stubs never win (#116818). Host-independent — the candidate
ladder takes the ``which`` result and env as arguments."""
import pytest
from pm.shell import windows_bash_candidates
PF = r"D:\Progs"
@pytest.mark.parametrize(
"stub",
[r"C:\Windows\System32\bash.exe", r"C:\WINDOWS\system32\bash.exe",
r"C:\Users\u\AppData\Local\Microsoft\WindowsApps\bash.exe"],
)
def test_system_stub_bash_is_never_a_candidate(stub):
assert stub not in windows_bash_candidates(stub, {"ProgramFiles": PF})
def test_program_files_git_precedes_the_path_bash():
on_path = r"C:\msys64\usr\bin\bash.exe"
candidates = windows_bash_candidates(on_path, {"ProgramFiles": PF})
assert candidates[0] == PF + r"\Git\bin\bash.exe"
assert candidates[-1] == on_path
def test_per_user_and_32bit_git_roots_are_candidates():
candidates = windows_bash_candidates(None, {
"ProgramFiles": PF, "ProgramFiles(x86)": r"D:\Progs32",
"LOCALAPPDATA": r"C:\Users\u\AppData\Local",
})
assert r"D:\Progs32\Git\bin\bash.exe" in candidates
assert r"C:\Users\u\AppData\Local\Programs\Git\bin\bash.exe" in candidates
assert r"C:\Users\u\AppData\Local\hermes\git\usr\bin\bash.exe" in candidates
def test_nonstarting_bash_is_rejected(monkeypatch):
import subprocess
from pm import shell
monkeypatch.setattr(shell.subprocess, "run", lambda *a, **kw: subprocess.CompletedProcess(a, 1))
assert shell._bash_starts("broken-bash.exe") is False