Skip to content

Commit bc9fc48

Browse files
committed
refactor(conftest): Move to libtmux/conftest.py
1 parent 2e52837 commit bc9fc48

File tree

2 files changed

+103
-102
lines changed

2 files changed

+103
-102
lines changed

libtmux/conftest.py

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
import logging
2+
import os
3+
import typing as t
4+
5+
import pytest
6+
7+
from _pytest.fixtures import SubRequest
8+
from _pytest.monkeypatch import MonkeyPatch
9+
10+
from libtmux import exc
11+
from libtmux.server import Server
12+
from libtmux.test import TEST_SESSION_PREFIX, get_test_session_name, namer
13+
14+
if t.TYPE_CHECKING:
15+
from libtmux.session import Session
16+
17+
logger = logging.getLogger(__name__)
18+
19+
20+
@pytest.fixture(autouse=True)
21+
def clear_env(monkeypatch: MonkeyPatch) -> None:
22+
"""Clear out any unnecessary environment variables that could interrupt tests.
23+
24+
tmux show-environment tests were being interrupted due to a lot of crazy env vars.
25+
"""
26+
for k, v in os.environ.items():
27+
if not any(
28+
needle in k.lower()
29+
for needle in [
30+
"window",
31+
"tmux",
32+
"pane",
33+
"session",
34+
"pytest",
35+
"path",
36+
"pwd",
37+
"shell",
38+
"home",
39+
"xdg",
40+
"disable_auto_title",
41+
"lang",
42+
"term",
43+
]
44+
):
45+
monkeypatch.delenv(k)
46+
47+
48+
@pytest.fixture(scope="function")
49+
def server(request: SubRequest, monkeypatch: MonkeyPatch) -> Server:
50+
51+
t = Server()
52+
t.socket_name = "tmuxp_test%s" % next(namer)
53+
54+
def fin() -> None:
55+
t.kill_server()
56+
57+
request.addfinalizer(fin)
58+
59+
return t
60+
61+
62+
@pytest.fixture(scope="function")
63+
def session(request: SubRequest, server: Server) -> "Session":
64+
session_name = "tmuxp"
65+
66+
if not server.has_session(session_name):
67+
server.cmd("new-session", "-d", "-s", session_name)
68+
69+
# find current sessions prefixed with tmuxp
70+
old_test_sessions = []
71+
for s in server._sessions:
72+
old_name = s.get("session_name")
73+
if old_name is not None and old_name.startswith(TEST_SESSION_PREFIX):
74+
old_test_sessions.append(old_name)
75+
76+
TEST_SESSION_NAME = get_test_session_name(server=server)
77+
78+
try:
79+
session = server.new_session(session_name=TEST_SESSION_NAME)
80+
except exc.LibTmuxException as e:
81+
raise e
82+
83+
"""
84+
Make sure that tmuxp can :ref:`test_builder_visually` and switches to
85+
the newly created session for that testcase.
86+
"""
87+
session_id = session.get("session_id")
88+
assert session_id is not None
89+
90+
try:
91+
server.switch_client(target_session=session_id)
92+
except exc.LibTmuxException:
93+
# server.attach_session(session.get('session_id'))
94+
pass
95+
96+
for old_test_session in old_test_sessions:
97+
logger.debug("Old test test session %s found. Killing it." % old_test_session)
98+
server.kill_session(old_test_session)
99+
assert TEST_SESSION_NAME == session.get("session_name")
100+
assert TEST_SESSION_NAME != "tmuxp"
101+
102+
return session

tests/conftest.py

Lines changed: 1 addition & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -1,102 +1 @@
1-
import logging
2-
import os
3-
import typing as t
4-
5-
import pytest
6-
7-
from _pytest.fixtures import SubRequest
8-
from _pytest.monkeypatch import MonkeyPatch
9-
10-
from libtmux import exc
11-
from libtmux.server import Server
12-
from libtmux.test import TEST_SESSION_PREFIX, get_test_session_name, namer
13-
14-
if t.TYPE_CHECKING:
15-
from libtmux.session import Session
16-
17-
logger = logging.getLogger(__name__)
18-
19-
20-
@pytest.fixture(autouse=True)
21-
def clear_env(monkeypatch: MonkeyPatch) -> None:
22-
"""Clear out any unnecessary environment variables that could interrupt tests.
23-
24-
tmux show-environment tests were being interrupted due to a lot of crazy env vars.
25-
"""
26-
for k, v in os.environ.items():
27-
if not any(
28-
needle in k.lower()
29-
for needle in [
30-
"window",
31-
"tmux",
32-
"pane",
33-
"session",
34-
"pytest",
35-
"path",
36-
"pwd",
37-
"shell",
38-
"home",
39-
"xdg",
40-
"disable_auto_title",
41-
"lang",
42-
"term",
43-
]
44-
):
45-
monkeypatch.delenv(k)
46-
47-
48-
@pytest.fixture(scope="function")
49-
def server(request: SubRequest, monkeypatch: MonkeyPatch) -> Server:
50-
51-
t = Server()
52-
t.socket_name = "tmuxp_test%s" % next(namer)
53-
54-
def fin() -> None:
55-
t.kill_server()
56-
57-
request.addfinalizer(fin)
58-
59-
return t
60-
61-
62-
@pytest.fixture(scope="function")
63-
def session(request: SubRequest, server: Server) -> "Session":
64-
session_name = "tmuxp"
65-
66-
if not server.has_session(session_name):
67-
server.cmd("new-session", "-d", "-s", session_name)
68-
69-
# find current sessions prefixed with tmuxp
70-
old_test_sessions = []
71-
for s in server._sessions:
72-
old_name = s.get("session_name")
73-
if old_name is not None and old_name.startswith(TEST_SESSION_PREFIX):
74-
old_test_sessions.append(old_name)
75-
76-
TEST_SESSION_NAME = get_test_session_name(server=server)
77-
78-
try:
79-
session = server.new_session(session_name=TEST_SESSION_NAME)
80-
except exc.LibTmuxException as e:
81-
raise e
82-
83-
"""
84-
Make sure that tmuxp can :ref:`test_builder_visually` and switches to
85-
the newly created session for that testcase.
86-
"""
87-
session_id = session.get("session_id")
88-
assert session_id is not None
89-
90-
try:
91-
server.switch_client(target_session=session_id)
92-
except exc.LibTmuxException:
93-
# server.attach_session(session.get('session_id'))
94-
pass
95-
96-
for old_test_session in old_test_sessions:
97-
logger.debug("Old test test session %s found. Killing it." % old_test_session)
98-
server.kill_session(old_test_session)
99-
assert TEST_SESSION_NAME == session.get("session_name")
100-
assert TEST_SESSION_NAME != "tmuxp"
101-
102-
return session
1+
from libtmux.conftest import * # noqa F40

0 commit comments

Comments
 (0)