From ed159eadff350bc34216156dea212bee92bbb2bf Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Sun, 18 Oct 2026 21:19:08 +0400 Subject: [PATCH] fix: stub system commands in install tests (#4, M-7) Co-Authored-By: Claude Opus 5.5 --- tests/test_install.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/test_install.py b/tests/test_install.py index 447b402..20c7e52 100644 --- a/tests/test_install.py +++ b/tests/test_install.py @@ -4,6 +4,7 @@ import tempfile import unittest ROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..") +STUBBED = ("launchctl", "lsof", "defaults", "osascript", "pgrep", "pkill", "curl") SSH_ENVS = ({"SSH_CONNECTION": "10.0.0.2 50000 10.0.0.1 22"}, {"SSH_TTY": "/dev/ttys009"}) @@ -12,9 +13,16 @@ class RefuseOverSsh(unittest.TestCase): def assert_refused(self, *cmd): for extra in SSH_ENVS: - with self.subTest(cmd=cmd, env=extra), tempfile.TemporaryDirectory() as home: + with self.subTest(cmd=cmd, env=extra), tempfile.TemporaryDirectory() as home, \ + tempfile.TemporaryDirectory() as stubs: + # второй рубеж: даже если охрана не сработает, системные команды — заглушки + for name in STUBBED: + path = os.path.join(stubs, name) + with open(path, "w") as f: + f.write("#!/bin/sh\nexit 1\n") + os.chmod(path, 0o755) env = {k: v for k, v in os.environ.items() if k not in ("SSH_CONNECTION", "SSH_TTY")} - env.update(HOME=home, **extra) + env.update(HOME=home, PATH=stubs + os.pathsep + env.get("PATH", ""), **extra) r = subprocess.run(["bash", *cmd], cwd=ROOT, env=env, capture_output=True, text=True) self.assertNotEqual(r.returncode, 0) self.assertIn("за самим Mac", r.stdout + r.stderr)