Skip to content

Commit 45b7fa6

Browse files
committed
add tests for helper methods within cli
1 parent 99aaf53 commit 45b7fa6

File tree

2 files changed

+105
-1
lines changed

2 files changed

+105
-1
lines changed

tests/test_cli.py

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import json
66
import os
7+
from unittest.mock import MagicMock
78

89
import pytest
910

@@ -18,6 +19,8 @@
1819
from tmuxp import cli, config, exc
1920
from tmuxp.cli import (
2021
_reattach,
22+
_load_attached,
23+
_load_append_windows_to_current_session,
2124
command_debug_info,
2225
command_ls,
2326
get_config_dir,
@@ -1088,6 +1091,107 @@ def test_reattach_plugins(server):
10881091
assert proc.stdout[0] == "'plugin_test_r'"
10891092

10901093

1094+
def test_load_attached(server, monkeypatch):
1095+
# Load a session and attach from outside tmux
1096+
monkeypatch.delenv('TMUX', raising=False)
1097+
1098+
attach_session_mock = MagicMock()
1099+
attach_session_mock.return_value.stderr = None
1100+
1101+
monkeypatch.setattr("libtmux.session.Session.attach_session", attach_session_mock)
1102+
1103+
yaml_config = loadfixture("workspacebuilder/two_pane.yaml")
1104+
sconfig = kaptan.Kaptan(handler='yaml')
1105+
sconfig = sconfig.import_config(yaml_config).get()
1106+
1107+
builder = WorkspaceBuilder(sconf=sconfig, server=server)
1108+
1109+
_load_attached(builder, False)
1110+
1111+
assert builder.session.attach_session.call_count == 1
1112+
1113+
1114+
def test_load_attached_detached(server, monkeypatch):
1115+
# Load a session but don't attach
1116+
monkeypatch.delenv('TMUX', raising=False)
1117+
1118+
attach_session_mock = MagicMock()
1119+
attach_session_mock.return_value.stderr = None
1120+
1121+
monkeypatch.setattr("libtmux.session.Session.attach_session", attach_session_mock)
1122+
1123+
yaml_config = loadfixture("workspacebuilder/two_pane.yaml")
1124+
sconfig = kaptan.Kaptan(handler='yaml')
1125+
sconfig = sconfig.import_config(yaml_config).get()
1126+
1127+
builder = WorkspaceBuilder(sconf=sconfig, server=server)
1128+
1129+
_load_attached(builder, True)
1130+
1131+
assert builder.session.attach_session.call_count == 0
1132+
1133+
1134+
def test_load_attached_within_tmux(server, monkeypatch):
1135+
# Load a session and attach from within tmux
1136+
monkeypatch.setenv('TMUX', "/tmp/tmux-1234/default,123,0")
1137+
1138+
switch_client_mock = MagicMock()
1139+
switch_client_mock.return_value.stderr = None
1140+
1141+
monkeypatch.setattr("libtmux.session.Session.switch_client", switch_client_mock)
1142+
1143+
yaml_config = loadfixture("workspacebuilder/two_pane.yaml")
1144+
sconfig = kaptan.Kaptan(handler='yaml')
1145+
sconfig = sconfig.import_config(yaml_config).get()
1146+
1147+
builder = WorkspaceBuilder(sconf=sconfig, server=server)
1148+
1149+
_load_attached(builder, False)
1150+
1151+
assert builder.session.switch_client.call_count == 1
1152+
1153+
1154+
def test_load_attached_within_tmux_detached(server, monkeypatch):
1155+
# Load a session and attach from within tmux
1156+
monkeypatch.setenv('TMUX', "/tmp/tmux-1234/default,123,0")
1157+
1158+
switch_client_mock = MagicMock()
1159+
switch_client_mock.return_value.stderr = None
1160+
1161+
monkeypatch.setattr("libtmux.session.Session.switch_client", switch_client_mock)
1162+
1163+
yaml_config = loadfixture("workspacebuilder/two_pane.yaml")
1164+
sconfig = kaptan.Kaptan(handler='yaml')
1165+
sconfig = sconfig.import_config(yaml_config).get()
1166+
1167+
builder = WorkspaceBuilder(sconf=sconfig, server=server)
1168+
1169+
_load_attached(builder, True)
1170+
1171+
assert builder.session.switch_client.call_count == 1
1172+
1173+
def test_load_append_windows_to_current_session(server, monkeypatch):
1174+
yaml_config = loadfixture("workspacebuilder/two_pane.yaml")
1175+
sconfig = kaptan.Kaptan(handler='yaml')
1176+
sconfig = sconfig.import_config(yaml_config).get()
1177+
1178+
builder = WorkspaceBuilder(sconf=sconfig, server=server)
1179+
builder.build()
1180+
1181+
assert len(server.list_sessions()) == 1
1182+
assert len(server._list_windows()) == 3
1183+
1184+
# Assign an active pane to the session
1185+
monkeypatch.setenv("TMUX_PANE", server._list_panes()[0]["pane_id"])
1186+
1187+
builder = WorkspaceBuilder(sconf=sconfig, server=server)
1188+
_load_append_windows_to_current_session(builder)
1189+
1190+
assert len(server.list_sessions()) == 1
1191+
assert len(server._list_windows()) == 6
1192+
1193+
1194+
10911195
def test_debug_info_cli(monkeypatch, tmpdir):
10921196
monkeypatch.setenv('SHELL', '/bin/bash')
10931197

tmuxp/cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ def _reattach(builder):
463463

464464
def _load_attached(builder, detached):
465465
"""
466-
Load config in new session and attach
466+
Load config in new session
467467
468468
Parameters
469469
----------

0 commit comments

Comments
 (0)