@@ -104,6 +104,60 @@ class CLIShellFixture(t.NamedTuple):
104
104
]
105
105
106
106
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
+
107
161
@pytest .mark .parametrize ("cli_cmd" , [["shell" ], ["shell" , "--pdb" ]])
108
162
@pytest .mark .parametrize (
109
163
list (CLIShellFixture ._fields ),
@@ -159,47 +213,13 @@ def test_shell(
159
213
],
160
214
)
161
215
@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 ],
200
219
)
201
220
def test_shell_target_missing (
202
221
cli_cmd : list [str ],
222
+ test_id : str ,
203
223
cli_args : list [str ],
204
224
inputs : list [t .Any ],
205
225
env : dict [t .Any , t .Any ],
@@ -245,41 +265,52 @@ def test_shell_target_missing(
245
265
assert message .format (** template_ctx ) in result .out
246
266
247
267
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
+
248
300
@pytest .mark .parametrize (
249
301
"cli_cmd" ,
250
302
[
251
- # ['shell'],
252
- # ['shell', '--pdb'),
253
303
["shell" , "--code" ],
254
- # ['shell', '--bpython'],
255
- # ['shell', '--ptipython'],
256
- # ['shell', '--ptpython'],
257
- # ['shell', '--ipython'],
258
304
],
259
305
)
260
306
@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 ],
280
310
)
281
311
def test_shell_interactive (
282
312
cli_cmd : list [str ],
313
+ test_id : str ,
283
314
cli_args : list [str ],
284
315
inputs : list [t .Any ],
285
316
env : dict [str , str ],
0 commit comments