Skip to content

Commit 417e6f8

Browse files
committed
test(conftest): Doctest default fixtures
Only run on DoctestItem's
1 parent 871c922 commit 417e6f8

File tree

1 file changed

+32
-7
lines changed

1 file changed

+32
-7
lines changed

tmuxp/conftest.py

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,21 @@
22
import logging
33
import os
44
import pathlib
5+
import typing as t
56

67
import pytest
78

9+
from _pytest.doctest import DoctestItem
10+
from _pytest.fixtures import SubRequest
11+
812
from libtmux import exc
13+
from libtmux.common import which
914
from libtmux.server import Server
1015
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
1120

1221
logger = logging.getLogger(__name__)
1322
USING_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

Comments
 (0)