mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-06-17 10:15:27 -04:00
fix(windows): detect per-user Git for Windows bash under %LocalAppData%\Programs\Git (#3738)
find_bash() rejected the WindowsApps WSL stub and then probed only %LocalAppData%\Git, so per-user Git for Windows installs (winget / Inno Setup {userpf}) under %LocalAppData%\Programs\Git were never found and the Cookbook reported "needs Git Bash" despite Git being installed.
Add the Programs\Git subfolder to the LocalAppData fallback root.
This commit is contained in:
@@ -191,6 +191,8 @@ def _windows_bash_fallbacks() -> List[str]:
|
|||||||
base = os.environ.get(env_name)
|
base = os.environ.get(env_name)
|
||||||
if base:
|
if base:
|
||||||
roots.append(ntpath.join(base, "Git"))
|
roots.append(ntpath.join(base, "Git"))
|
||||||
|
if env_name == "LocalAppData":
|
||||||
|
roots.append(ntpath.join(base, "Programs", "Git"))
|
||||||
roots.extend(_WINDOWS_BASH_DEFAULT_ROOTS)
|
roots.extend(_WINDOWS_BASH_DEFAULT_ROOTS)
|
||||||
|
|
||||||
paths: List[str] = []
|
paths: List[str] = []
|
||||||
|
|||||||
@@ -47,6 +47,20 @@ def test_find_bash_checks_local_app_data_git_install(monkeypatch):
|
|||||||
assert platform_compat.find_bash() == expected
|
assert platform_compat.find_bash() == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_find_bash_checks_local_app_data_programs_git_install(monkeypatch):
|
||||||
|
_reset_bash_cache(monkeypatch)
|
||||||
|
monkeypatch.setattr(platform_compat, "IS_WINDOWS", True)
|
||||||
|
monkeypatch.setattr(platform_compat.shutil, "which", lambda _name: None)
|
||||||
|
for env_name in platform_compat._WINDOWS_BASH_ROOT_ENV_VARS:
|
||||||
|
monkeypatch.delenv(env_name, raising=False)
|
||||||
|
monkeypatch.setenv("LocalAppData", r"C:\Users\alice\AppData\Local")
|
||||||
|
|
||||||
|
expected = r"C:\Users\alice\AppData\Local\Programs\Git\bin\bash.exe"
|
||||||
|
monkeypatch.setattr(platform_compat.os.path, "exists", lambda path: path == expected)
|
||||||
|
|
||||||
|
assert platform_compat.find_bash() == expected
|
||||||
|
|
||||||
|
|
||||||
def test_find_bash_skips_windows_wsl_stub(monkeypatch):
|
def test_find_bash_skips_windows_wsl_stub(monkeypatch):
|
||||||
_reset_bash_cache(monkeypatch)
|
_reset_bash_cache(monkeypatch)
|
||||||
monkeypatch.setattr(platform_compat, "IS_WINDOWS", True)
|
monkeypatch.setattr(platform_compat, "IS_WINDOWS", True)
|
||||||
|
|||||||
Reference in New Issue
Block a user