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