Files
flow/tests/test_core_tmux.py

98 lines
3.2 KiB
Python

"""Tests for flow.adapters.tmux."""
import subprocess
from flow.adapters.tmux import TmuxClient, build_new_session_argv
from tests.fakes import FakeRunner
class TestTmuxClient:
def test_has_session_true(self):
runner = FakeRunner({
("tmux", "has-session", "-t"): subprocess.CompletedProcess([], 0),
})
tmux = TmuxClient(runner)
assert tmux.has_session("dev-api") is True
assert runner.calls[-1] == ["tmux", "has-session", "-t", "dev-api"]
def test_has_session_false(self):
runner = FakeRunner({
("tmux", "has-session", "-t"): subprocess.CompletedProcess([], 1),
})
tmux = TmuxClient(runner)
assert tmux.has_session("dev-api") is False
def test_new_session_detached_with_env_and_command(self):
runner = FakeRunner()
tmux = TmuxClient(runner)
tmux.new_session(
"dev-api",
detached=True,
env={"DF_IMAGE": "reg/img"},
command="flow dev exec api",
)
call = runner.calls[-1]
assert call[:4] == ["tmux", "new-session", "-ds", "dev-api"]
assert "-e" in call
assert "DF_IMAGE=reg/img" in call
assert call[-1] == "flow dev exec api"
def test_new_session_minimal(self):
runner = FakeRunner()
tmux = TmuxClient(runner)
tmux.new_session("sess")
assert runner.calls[-1] == ["tmux", "new-session", "-s", "sess"]
def test_set_option(self):
runner = FakeRunner()
tmux = TmuxClient(runner)
tmux.set_option("dev-api", "default-command", "flow dev exec api")
assert runner.calls[-1] == [
"tmux", "set-option", "-t", "dev-api", "default-command", "flow dev exec api",
]
def test_list_panes(self):
runner = FakeRunner({
("tmux", "list-panes", "-t"): subprocess.CompletedProcess(
[], 0, stdout="dev-api:0.0\ndev-api:0.1\n",
),
})
tmux = TmuxClient(runner)
panes = tmux.list_panes("dev-api")
assert panes == ["dev-api:0.0", "dev-api:0.1"]
def test_list_panes_empty(self):
runner = FakeRunner({
("tmux", "list-panes", "-t"): subprocess.CompletedProcess([], 0, stdout=""),
})
tmux = TmuxClient(runner)
assert tmux.list_panes("dev-api") == []
def test_respawn_pane(self):
runner = FakeRunner()
tmux = TmuxClient(runner)
tmux.respawn_pane("dev-api:0.0")
assert runner.calls[-1] == ["tmux", "respawn-pane", "-t", "dev-api:0.0"]
class TestBuildNewSessionArgv:
def test_basic(self):
argv = build_new_session_argv("default")
assert argv == ["tmux", "new-session", "-As", "default"]
def test_with_env(self):
argv = build_new_session_argv(
"main",
env={"DF_NAMESPACE": "personal", "DF_PLATFORM": "orb"},
)
assert argv == [
"tmux", "new-session", "-As", "main",
"-e", "DF_NAMESPACE=personal",
"-e", "DF_PLATFORM=orb",
]
def test_empty_env(self):
argv = build_new_session_argv("sess", env={})
assert argv == ["tmux", "new-session", "-As", "sess"]