Skip to content

Commit 7faf619

Browse files
committed
refactor(tests): convert test_shell.py tests to use NamedTuple fixtures
1 parent 229e826 commit 7faf619

File tree

1 file changed

+94
-63
lines changed

1 file changed

+94
-63
lines changed

tests/cli/test_shell.py

+94-63
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,60 @@ class CLIShellFixture(t.NamedTuple):
104104
]
105105

106106

107+
class CLIShellTargetMissingFixture(t.NamedTuple):
108+
"""Test fixture for tmuxp shell target missing tests."""
109+
110+
test_id: str
111+
cli_args: list[str]
112+
inputs: list[t.Any]
113+
env: dict[t.Any, t.Any]
114+
template_ctx: dict[str, str]
115+
exception: type[exc.TmuxpException | subprocess.CalledProcessError]
116+
message: str
117+
118+
119+
TEST_SHELL_TARGET_MISSING_FIXTURES: list[CLIShellTargetMissingFixture] = [
120+
CLIShellTargetMissingFixture(
121+
test_id="nonexistent_socket",
122+
cli_args=["-LDoesNotExist", "-c", "print(str(server.socket_name))"],
123+
inputs=[],
124+
env={},
125+
template_ctx={},
126+
exception=subprocess.CalledProcessError,
127+
message=r".*DoesNotExist.*",
128+
),
129+
CLIShellTargetMissingFixture(
130+
test_id="nonexistent_session",
131+
cli_args=[
132+
"-L{SOCKET_NAME}",
133+
"nonexistent_session",
134+
"-c",
135+
"print(str(server.socket_name))",
136+
],
137+
inputs=[],
138+
env={},
139+
template_ctx={"session_name": "nonexistent_session"},
140+
exception=exc.TmuxpException,
141+
message="Session not found: nonexistent_session",
142+
),
143+
CLIShellTargetMissingFixture(
144+
test_id="nonexistent_window",
145+
cli_args=[
146+
"-L{SOCKET_NAME}",
147+
"{SESSION_NAME}",
148+
"nonexistent_window",
149+
"-c",
150+
"print(str(server.socket_name))",
151+
],
152+
inputs=[],
153+
env={},
154+
template_ctx={"window_name": "nonexistent_window"},
155+
exception=exc.TmuxpException,
156+
message="Window not found: {WINDOW_NAME}",
157+
),
158+
]
159+
160+
107161
@pytest.mark.parametrize("cli_cmd", [["shell"], ["shell", "--pdb"]])
108162
@pytest.mark.parametrize(
109163
list(CLIShellFixture._fields),
@@ -159,47 +213,13 @@ def test_shell(
159213
],
160214
)
161215
@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-
],
216+
list(CLIShellTargetMissingFixture._fields),
217+
TEST_SHELL_TARGET_MISSING_FIXTURES,
218+
ids=[test.test_id for test in TEST_SHELL_TARGET_MISSING_FIXTURES],
200219
)
201220
def test_shell_target_missing(
202221
cli_cmd: list[str],
222+
test_id: str,
203223
cli_args: list[str],
204224
inputs: list[t.Any],
205225
env: dict[t.Any, t.Any],
@@ -245,41 +265,52 @@ def test_shell_target_missing(
245265
assert message.format(**template_ctx) in result.out
246266

247267

268+
class CLIShellInteractiveFixture(t.NamedTuple):
269+
"""Test fixture for tmuxp shell interactive tests."""
270+
271+
test_id: str
272+
cli_args: list[str]
273+
inputs: list[t.Any]
274+
env: dict[str, str]
275+
message: str
276+
277+
278+
TEST_SHELL_INTERACTIVE_FIXTURES: list[CLIShellInteractiveFixture] = [
279+
CLIShellInteractiveFixture(
280+
test_id="basic_interactive",
281+
cli_args=[
282+
"-L{SOCKET_NAME}",
283+
],
284+
inputs=[],
285+
env={},
286+
message="(InteractiveConsole)",
287+
),
288+
CLIShellInteractiveFixture(
289+
test_id="interactive_with_pane_id",
290+
cli_args=[
291+
"-L{SOCKET_NAME}",
292+
],
293+
inputs=[],
294+
env={"PANE_ID": "{PANE_ID}"},
295+
message="(InteractiveConsole)",
296+
),
297+
]
298+
299+
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)