2
2
import logging
3
3
import os
4
4
import pathlib
5
+ import typing as t
5
6
6
7
import pytest
7
8
9
+ from _pytest .doctest import DoctestItem
10
+ from _pytest .fixtures import SubRequest
11
+
8
12
from libtmux import exc
13
+ from libtmux .common import which
9
14
from libtmux .server import Server
10
15
from libtmux .test import TEST_SESSION_PREFIX , get_test_session_name , namer
11
16
17
+ if t .TYPE_CHECKING :
18
+ from libtmux .session import Session
19
+
12
20
logger = logging .getLogger (__name__ )
13
21
USING_ZSH = "zsh" in os .getenv ("SHELL" , "" )
14
22
@@ -62,16 +70,16 @@ def socket_name(request):
62
70
63
71
64
72
@pytest .fixture (scope = "function" )
65
- def server (request , socket_name ) :
66
- t = Server ()
67
- t .socket_name = socket_name
73
+ def server (request : SubRequest , monkeypatch : pytest . MonkeyPatch ) -> Server :
74
+ tmux = Server ()
75
+ tmux .socket_name = socket_name
68
76
69
- def fin ():
70
- t .kill_server ()
77
+ def fin () -> None :
78
+ tmux .kill_server ()
71
79
72
80
request .addfinalizer (fin )
73
81
74
- return t
82
+ return tmux
75
83
76
84
77
85
@pytest .fixture (scope = "function" )
@@ -108,8 +116,10 @@ def session(server):
108
116
Make sure that tmuxp can :ref:`test_builder_visually` and switches to
109
117
the newly created session for that testcase.
110
118
"""
119
+ session_id = session .get ("session_id" )
120
+ assert session_id is not None
111
121
try :
112
- server .switch_client (session . get ( " session_id" ) )
122
+ server .switch_client (target_session = session_id )
113
123
except exc .LibTmuxException :
114
124
# server.attach_session(session.get('session_id'))
115
125
pass
@@ -121,3 +131,16 @@ def session(server):
121
131
assert TEST_SESSION_NAME != "tmuxp"
122
132
123
133
return session
134
+
135
+
136
+ @pytest .fixture (autouse = True )
137
+ def add_doctest_fixtures (
138
+ request : SubRequest ,
139
+ doctest_namespace : t .Dict [str , t .Any ],
140
+ ) -> None :
141
+ if isinstance (request ._pyfuncitem , DoctestItem ) and which ("tmux" ):
142
+ doctest_namespace ["server" ] = request .getfixturevalue ("server" )
143
+ session : "Session" = request .getfixturevalue ("session" )
144
+ doctest_namespace ["session" ] = session
145
+ doctest_namespace ["window" ] = session .attached_window
146
+ doctest_namespace ["pane" ] = session .attached_pane
0 commit comments