diff --git a/tests/tools/test_subprocess_stdin_guard.py b/tests/tools/test_subprocess_stdin_guard.py new file mode 100644 index 00000000000..ab4ea5690ab --- /dev/null +++ b/tests/tools/test_subprocess_stdin_guard.py @@ -0,0 +1,25 @@ +"""Verify that TUI-context subprocess calls specify stdin=. + +This is the pytest wrapper for scripts/check_subprocess_stdin.py. +It runs as part of the test suite so CI catches regressions when new +subprocess calls are added without stdin=subprocess.DEVNULL. +""" + +import subprocess +import sys +from pathlib import Path + +SCRIPT = Path(__file__).resolve().parents[2] / "scripts" / "check_subprocess_stdin.py" + + +def test_all_tui_subprocess_calls_have_stdin(): + """Every subprocess.run/Popen in TUI-context code must set stdin=.""" + result = subprocess.run( + [sys.executable, str(SCRIPT)], + capture_output=True, + text=True, + timeout=30, + ) + assert result.returncode == 0, ( + f"subprocess stdin= check failed:\n{result.stdout}\n{result.stderr}" + )