Skip to content

Commit 0b40c97

Browse files
committed
refactor(tests): convert test_shell.py tests to use NamedTuple fixtures
1 parent 546d564 commit 0b40c97

File tree

1 file changed

+94
-63
lines changed

1 file changed

+94
-63
lines changed

tests/cli/test_shell.py

Lines changed: 94 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,28 @@ class CLIShellFixture(t.NamedTuple):
3131
expected_output: str
3232

3333

34+
class CLIShellTargetMissingFixture(t.NamedTuple):
35+
"""Test fixture for tmuxp shell target missing tests."""
36+
37+
test_id: str
38+
cli_args: list[str]
39+
inputs: list[t.Any]
40+
env: dict[t.Any, t.Any]
41+
template_ctx: dict[str, str]
42+
exception: type[exc.TmuxpException | subprocess.CalledProcessError]
43+
message: str
44+
45+
46+
class CLIShellInteractiveFixture(t.NamedTuple):
47+
"""Test fixture for tmuxp shell interactive tests."""
48+
49+
test_id: str
50+
cli_args: list[str]
51+
inputs: list[t.Any]
52+
env: dict[str, str]
53+
message: str
54+
55+
3456
TEST_SHELL_FIXTURES: list[CLIShellFixture] = [
3557
CLIShellFixture(
3658
test_id="print-socket-name",
@@ -104,6 +126,70 @@ class CLIShellFixture(t.NamedTuple):
104126
]
105127

106128

129+
TEST_SHELL_TARGET_MISSING_FIXTURES: list[CLIShellTargetMissingFixture] = [
130+
CLIShellTargetMissingFixture(
131+
test_id="nonexistent_socket",
132+
cli_args=["-LDoesNotExist", "-c", "print(str(server.socket_name))"],
133+
inputs=[],
134+
env={},
135+
template_ctx={},
136+
exception=subprocess.CalledProcessError,
137+
message=r".*DoesNotExist.*",
138+
),
139+
CLIShellTargetMissingFixture(
140+
test_id="nonexistent_session",
141+
cli_args=[
142+
"-L{SOCKET_NAME}",
143+
"nonexistent_session",
144+
"-c",
145+
"print(str(server.socket_name))",
146+
],
147+
inputs=[],
148+
env={},
149+
template_ctx={"session_name": "nonexistent_session"},
150+
exception=exc.TmuxpException,
151+
message="Session not found: nonexistent_session",
152+
),
153+
CLIShellTargetMissingFixture(
154+
test_id="nonexistent_window",
155+
cli_args=[
156+
"-L{SOCKET_NAME}",
157+
"{SESSION_NAME}",
158+
"nonexistent_window",
159+
"-c",
160+
"print(str(server.socket_name))",
161+
],
162+
inputs=[],
163+
env={},
164+
template_ctx={"window_name": "nonexistent_window"},
165+
exception=exc.TmuxpException,
166+
message="Window not found: {WINDOW_NAME}",
167+
),
168+
]
169+
170+
171+
TEST_SHELL_INTERACTIVE_FIXTURES: list[CLIShellInteractiveFixture] = [
172+
CLIShellInteractiveFixture(
173+
test_id="basic_interactive",
174+
cli_args=[
175+
"-L{SOCKET_NAME}",
176+
],
177+
inputs=[],
178+
env={},
179+
message="(InteractiveConsole)",
180+
),
181+
CLIShellInteractiveFixture(
182+
test_id="interactive_with_pane_id",
183+
cli_args=[
184+
"-L{SOCKET_NAME}",
185+
],
186+
inputs=[],
187+
env={"PANE_ID": "{PANE_ID}"},
188+
message="(InteractiveConsole)",
189+
),
190+
]
191+
192+
107193
@pytest.mark.parametrize("cli_cmd", [["shell"], ["shell", "--pdb"]])
108194
@pytest.mark.parametrize(
109195
list(CLIShellFixture._fields),
@@ -159,47 +245,13 @@ def test_shell(
159245
],
160246
)
161247
@pytest.mark.parametrize(
162-
("cli_args", "inputs", "env", "template_ctx", "exception", "message"),
163-
[
164-
(
165-
["-LDoesNotExist", "-c", "print(str(server.socket_name))"],
166-
[],
167-
{},
168-
{},
169-
subprocess.CalledProcessError,
170-
r".*DoesNotExist.*",
171-
),
172-
(
173-
[
174-
"-L{SOCKET_NAME}",
175-
"nonexistent_session",
176-
"-c",
177-
"print(str(server.socket_name))",
178-
],
179-
[],
180-
{},
181-
{"session_name": "nonexistent_session"},
182-
exc.TmuxpException,
183-
"Session not found: nonexistent_session",
184-
),
185-
(
186-
[
187-
"-L{SOCKET_NAME}",
188-
"{SESSION_NAME}",
189-
"nonexistent_window",
190-
"-c",
191-
"print(str(server.socket_name))",
192-
],
193-
[],
194-
{},
195-
{"window_name": "nonexistent_window"},
196-
exc.TmuxpException,
197-
"Window not found: {WINDOW_NAME}",
198-
),
199-
],
248+
list(CLIShellTargetMissingFixture._fields),
249+
TEST_SHELL_TARGET_MISSING_FIXTURES,
250+
ids=[test.test_id for test in TEST_SHELL_TARGET_MISSING_FIXTURES],
200251
)
201252
def test_shell_target_missing(
202253
cli_cmd: list[str],
254+
test_id: str,
203255
cli_args: list[str],
204256
inputs: list[t.Any],
205257
env: dict[t.Any, t.Any],
@@ -248,38 +300,17 @@ def test_shell_target_missing(
248300
@pytest.mark.parametrize(
249301
"cli_cmd",
250302
[
251-
# ['shell'],
252-
# ['shell', '--pdb'),
253303
["shell", "--code"],
254-
# ['shell', '--bpython'],
255-
# ['shell', '--ptipython'],
256-
# ['shell', '--ptpython'],
257-
# ['shell', '--ipython'],
258304
],
259305
)
260306
@pytest.mark.parametrize(
261-
("cli_args", "inputs", "env", "message"),
262-
[
263-
(
264-
[
265-
"-L{SOCKET_NAME}",
266-
],
267-
[],
268-
{},
269-
"(InteractiveConsole)",
270-
),
271-
(
272-
[
273-
"-L{SOCKET_NAME}",
274-
],
275-
[],
276-
{"PANE_ID": "{PANE_ID}"},
277-
"(InteractiveConsole)",
278-
),
279-
],
307+
list(CLIShellInteractiveFixture._fields),
308+
TEST_SHELL_INTERACTIVE_FIXTURES,
309+
ids=[test.test_id for test in TEST_SHELL_INTERACTIVE_FIXTURES],
280310
)
281311
def test_shell_interactive(
282312
cli_cmd: list[str],
313+
test_id: str,
283314
cli_args: list[str],
284315
inputs: list[t.Any],
285316
env: dict[str, str],

0 commit comments

Comments
 (0)