fix: stub system commands in install tests (#4, M-7)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
081b4691fc
commit
ed159eadff
@ -4,6 +4,7 @@ import tempfile
|
|||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
ROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")
|
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"})
|
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):
|
def assert_refused(self, *cmd):
|
||||||
for extra in SSH_ENVS:
|
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 = {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)
|
r = subprocess.run(["bash", *cmd], cwd=ROOT, env=env, capture_output=True, text=True)
|
||||||
self.assertNotEqual(r.returncode, 0)
|
self.assertNotEqual(r.returncode, 0)
|
||||||
self.assertIn("за самим Mac", r.stdout + r.stderr)
|
self.assertIn("за самим Mac", r.stdout + r.stderr)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user