22import logging
33import os
44import pathlib
5+ import typing as t
56
67import pytest
78
9+ from _pytest .doctest import DoctestItem
10+ from _pytest .fixtures import SubRequest
11+
812from libtmux import exc
13+ from libtmux .common import which
914from libtmux .server import Server
1015from 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
1120
1221logger = logging .getLogger (__name__ )
1322USING_ZSH = "zsh" in os .getenv ("SHELL" , "" )
@@ -62,16 +71,16 @@ def socket_name(request):
6271
6372
6473@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
6877
69- def fin ():
70- t .kill_server ()
78+ def fin () -> None :
79+ tmux .kill_server ()
7180
7281 request .addfinalizer (fin )
7382
74- return t
83+ return tmux
7584
7685
7786@pytest .fixture (scope = "function" )
@@ -108,8 +117,10 @@ def session(server):
108117 Make sure that tmuxp can :ref:`test_builder_visually` and switches to
109118 the newly created session for that testcase.
110119 """
120+ session_id = session .get ("session_id" )
121+ assert session_id is not None
111122 try :
112- server .switch_client (session . get ( " session_id" ) )
123+ server .switch_client (target_session = session_id )
113124 except exc .LibTmuxException :
114125 # server.attach_session(session.get('session_id'))
115126 pass
@@ -121,3 +132,17 @@ def session(server):
121132 assert TEST_SESSION_NAME != "tmuxp"
122133
123134 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