Ctrl K
ComunidadGuías…

tests/test_git_head_stdin.py

Rama v8 · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
"""_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