@@ -515,37 +515,92 @@ def test_shell(
515
515
assert expected_output .format (** template_ctx ) in result .output
516
516
517
517
518
+ @pytest .mark .parametrize ("cli_cmd" , ['shell' , 'shell_plus' ])
518
519
@pytest .mark .parametrize (
519
- "cli_args,inputs,env,exception,message" ,
520
+ "cli_args,inputs,env,template_ctx, exception,message" ,
520
521
[
521
522
(
522
- ['shell' , '-L{SOCKET_NAME} ' , '-c' , 'print(str(server.socket_name))' ],
523
+ ['-LDoesNotExist ' , '-c' , 'print(str(server.socket_name))' ],
523
524
[],
524
525
{},
526
+ {},
525
527
LibTmuxException ,
526
- r'.*{SOCKET_NAME}\s\(No such file or directory\).*' ,
528
+ r'.*DoesNotExist\s\(No such file or directory\).*' ,
529
+ ),
530
+ (
531
+ [
532
+ '-L{SOCKET_NAME}' ,
533
+ 'nonexistant_session' ,
534
+ '-c' ,
535
+ 'print(str(server.socket_name))' ,
536
+ ],
537
+ [],
538
+ {},
539
+ {'session_name' : 'nonexistant_session' },
540
+ None ,
541
+ 'Session not found: nonexistant_session' ,
542
+ ),
543
+ (
544
+ [
545
+ '-L{SOCKET_NAME}' ,
546
+ '{SESSION_NAME}' ,
547
+ 'nonexistant_window' ,
548
+ '-c' ,
549
+ 'print(str(server.socket_name))' ,
550
+ ],
551
+ [],
552
+ {},
553
+ {'window_name' : 'nonexistant_window' },
554
+ None ,
555
+ 'Window not found: {WINDOW_NAME}' ,
527
556
),
528
557
],
529
558
)
530
- def test_shell_no_server (
531
- cli_args , inputs , env , exception , message , tmpdir , monkeypatch , socket_name
559
+ def test_shell_target_missing (
560
+ cli_cmd ,
561
+ cli_args ,
562
+ inputs ,
563
+ env ,
564
+ template_ctx ,
565
+ exception ,
566
+ message ,
567
+ tmpdir ,
568
+ monkeypatch ,
569
+ socket_name ,
570
+ server ,
571
+ session ,
532
572
):
533
573
monkeypatch .setenv ('HOME' , str (tmpdir ))
574
+ window_name = 'my_window'
575
+ window = session .new_window (window_name = window_name )
576
+ window .split_window ()
577
+
534
578
template_ctx = dict (
535
- SOCKET_NAME = socket_name ,
579
+ SOCKET_NAME = server .socket_name ,
580
+ SOCKET_PATH = server .socket_path ,
581
+ SESSION_NAME = session .name ,
582
+ WINDOW_NAME = template_ctx .get ('window_name' , window_name ),
583
+ PANE_ID = template_ctx .get ('pane_id' ),
584
+ SERVER_SOCKET_NAME = server .socket_name ,
536
585
)
586
+ cli_args = [cli_cmd ] + [cli_arg .format (** template_ctx ) for cli_arg in cli_args ]
537
587
538
- cli_args [:] = [cli_arg .format (** template_ctx ) for cli_arg in cli_args ]
539
588
for k , v in env .items ():
540
589
monkeypatch .setenv (k , v .format (** template_ctx ))
541
590
542
591
with tmpdir .as_cwd ():
543
592
runner = CliRunner ()
544
593
545
- with pytest .raises (exception , match = message .format (** template_ctx )):
546
- runner .invoke (
594
+ if exception is not None :
595
+ with pytest .raises (exception , match = message .format (** template_ctx )):
596
+ result = runner .invoke (
597
+ cli .cli , cli_args , input = '' .join (inputs ), catch_exceptions = False
598
+ )
599
+ else :
600
+ result = runner .invoke (
547
601
cli .cli , cli_args , input = '' .join (inputs ), catch_exceptions = False
548
602
)
603
+ assert message .format (** template_ctx ) in result .output
549
604
550
605
551
606
@pytest .mark .parametrize (
0 commit comments