fix: clean exit on Ctrl+C in muxplex service logs
subprocess.run with check=True raised CalledProcessError then KeyboardInterrupt on Ctrl+C, printing an ugly traceback. Fix: remove check=True, catch KeyboardInterrupt, exit silently.
This commit is contained in:
+8
-2
@@ -152,7 +152,10 @@ def _systemd_status() -> None:
|
||||
|
||||
|
||||
def _systemd_logs() -> None:
|
||||
subprocess.run(["journalctl", "--user", "-u", "muxplex", "-f"], check=True)
|
||||
try:
|
||||
subprocess.run(["journalctl", "--user", "-u", "muxplex", "-f"])
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
@@ -205,7 +208,10 @@ def _launchd_status() -> None:
|
||||
|
||||
|
||||
def _launchd_logs() -> None:
|
||||
subprocess.run(["tail", "-f", "/tmp/muxplex.log"], check=True)
|
||||
try:
|
||||
subprocess.run(["tail", "-f", "/tmp/muxplex.log"])
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
@@ -522,3 +522,32 @@ def test_prompt_host_missing_host_key_no_keyerror(monkeypatch):
|
||||
|
||||
# Must not raise KeyError
|
||||
svc._prompt_host_if_localhost()
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Bug fix: Ctrl+C handling in logs functions (clean exit on KeyboardInterrupt)
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
|
||||
def test_systemd_logs_handles_keyboard_interrupt(monkeypatch):
|
||||
"""service logs must exit cleanly on Ctrl+C."""
|
||||
import muxplex.service as svc
|
||||
|
||||
def mock_run(*args, **kwargs):
|
||||
raise KeyboardInterrupt()
|
||||
|
||||
monkeypatch.setattr(subprocess, "run", mock_run)
|
||||
# Should not raise
|
||||
svc._systemd_logs()
|
||||
|
||||
|
||||
def test_launchd_logs_handles_keyboard_interrupt(monkeypatch):
|
||||
"""service logs must exit cleanly on Ctrl+C on macOS."""
|
||||
import muxplex.service as svc
|
||||
|
||||
def mock_run(*args, **kwargs):
|
||||
raise KeyboardInterrupt()
|
||||
|
||||
monkeypatch.setattr(subprocess, "run", mock_run)
|
||||
# Should not raise
|
||||
svc._launchd_logs()
|
||||
|
||||
Reference in New Issue
Block a user