mirror of
https://github.com/safishamsi/graphify.git
synced 2026-10-17 09:29:27 +00:00
graph_stats asks git for HEAD to report staleness. The child inherited the
MCP stdio pipe, and on Windows git blocks on it: the call sat on the 3s
timeout, or hung under Claude Code. prs.py already isolates stdin (#3318);
these two _git_head copies were missed.
(cherry picked from commit 7092f980ed)
22 lines
794 B
Python
22 lines
794 B
Python
"""_git_head must not hand git the caller's stdin (#4440).
|
|
|
|
Under an MCP stdio host, stdin is the protocol pipe. On Windows a git child that
|
|
inherits it blocks, so `graph_stats` stalls on the timeout or hangs. Same class
|
|
as the prs.py isolation in #3318.
|
|
"""
|
|
import subprocess
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
import pytest
|
|
|
|
from graphify import export, watch
|
|
|
|
|
|
@pytest.mark.parametrize("module", [export, watch], ids=["export", "watch"])
|
|
def test_git_head_passes_devnull_stdin(module, tmp_path):
|
|
completed = MagicMock(returncode=0, stdout="abc123\n", stderr="")
|
|
with patch("subprocess.run", return_value=completed) as mock_run:
|
|
assert module._git_head(tmp_path) == "abc123"
|
|
_args, kwargs = mock_run.call_args
|
|
assert kwargs.get("stdin") == subprocess.DEVNULL
|