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
1116
17+ if t .TYPE_CHECKING :
18+ from libtmux .session import Session
19+
1220logger = logging .getLogger (__name__ )
1321USING_ZSH = "zsh" in os .getenv ("SHELL" , "" )
1422
@@ -62,16 +70,16 @@ def socket_name(request):
6270
6371
6472@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
6876
69- def fin ():
70- t .kill_server ()
77+ def fin () -> None :
78+ tmux .kill_server ()
7179
7280 request .addfinalizer (fin )
7381
74- return t
82+ return tmux
7583
7684
7785@pytest .fixture (scope = "function" )
@@ -108,8 +116,10 @@ def session(server):
108116 Make sure that tmuxp can :ref:`test_builder_visually` and switches to
109117 the newly created session for that testcase.
110118 """
119+ session_id = session .get ("session_id" )
120+ assert session_id is not None
111121 try :
112- server .switch_client (session . get ( " session_id" ) )
122+ server .switch_client (target_session = session_id )
113123 except exc .LibTmuxException :
114124 # server.attach_session(session.get('session_id'))
115125 pass
@@ -121,3 +131,16 @@ def session(server):
121131 assert TEST_SESSION_NAME != "tmuxp"
122132
123133 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" ]: "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