Files
z-bar-qt/cli/tests/test_shell.py
T

92 lines
3.0 KiB
Python

from __future__ import annotations
import subprocess
from unittest.mock import patch, call
from zshell.subcommands.shell import app
def invoke(*args: str) -> None:
from typer.testing import CliRunner
runner = CliRunner()
result = runner.invoke(app, args)
if result.exit_code != 0:
raise RuntimeError(result.output)
return result
class TestKill:
@patch("zshell.subcommands.shell.subprocess.run")
def test_kill_runs_qs_kill(self, mock_run):
invoke("kill")
mock_run.assert_called_once_with(["qs", "-c", "zshell", "kill"], check=True)
class TestStart:
@patch("zshell.subcommands.shell.subprocess.run")
def test_start_default_daemon(self, mock_run):
invoke("start")
mock_run.assert_called_once_with(["qs", "-c", "zshell", "-n", "-d"], check=True)
@patch("zshell.subcommands.shell.subprocess.run")
def test_start_no_daemon(self, mock_run):
invoke("start", "--no-daemon")
mock_run.assert_called_once_with(["qs", "-c", "zshell", "-n"], check=True)
class TestShow:
@patch("zshell.subcommands.shell.subprocess.run")
def test_show_runs_ipc_show(self, mock_run):
invoke("show")
mock_run.assert_called_once_with(["qs", "-c", "zshell", "ipc", "show"], check=True)
class TestLog:
@patch("zshell.subcommands.shell.subprocess.run")
def test_log_runs_qs_log(self, mock_run):
invoke("log")
mock_run.assert_called_once_with(["qs", "-c", "zshell", "log"], check=True)
class TestLock:
@patch("zshell.subcommands.shell.subprocess.run")
def test_lock_runs_ipc_call_lock(self, mock_run):
invoke("lock")
mock_run.assert_called_once_with(
["qs", "-c", "zshell", "ipc", "call", "lock", "lock"], check=True
)
class TestCall:
@patch("zshell.subcommands.shell.subprocess.run")
def test_call_no_args(self, mock_run):
invoke("call", "target", "method")
mock_run.assert_called_once_with(
["qs", "-c", "zshell", "ipc", "call", "target", "method"], check=True
)
@patch("zshell.subcommands.shell.subprocess.run")
def test_call_with_args(self, mock_run):
invoke("call", "target", "method", "arg1", "arg2")
mock_run.assert_called_once_with(
["qs", "-c", "zshell", "ipc", "call", "target", "method", "arg1", "arg2"],
check=True,
)
class TestRestart:
@patch("zshell.subcommands.shell.subprocess.run")
def test_restart_kills_then_starts_daemon(self, mock_run):
invoke("restart")
assert mock_run.call_args_list == [
call(["qs", "-c", "zshell", "kill"], check=False),
call(["qs", "-c", "zshell", "-n", "-d"], check=True),
]
@patch("zshell.subcommands.shell.subprocess.run")
def test_restart_no_daemon(self, mock_run):
invoke("restart", "--no-daemon")
assert mock_run.call_args_list == [
call(["qs", "-c", "zshell", "kill"], check=False),
call(["qs", "-c", "zshell", "-n"], check=True),
]