Skip to content

Commit 9d6ffae

Browse files
committed
refactor!(test[random]) Move more helpers to test.random
1 parent 47db5e6 commit 9d6ffae

File tree

3 files changed

+92
-75
lines changed

3 files changed

+92
-75
lines changed

src/libtmux/pytest_plugin.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,8 @@
1313

1414
from libtmux import exc
1515
from libtmux.server import Server
16-
from libtmux.test import get_test_session_name
1716
from libtmux.test.constants import TEST_SESSION_PREFIX
18-
from libtmux.test.random import namer
17+
from libtmux.test.random import get_test_session_name, namer
1918

2019
if t.TYPE_CHECKING:
2120
import pathlib

src/libtmux/test/__init__.py

Lines changed: 1 addition & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
)
1818

1919
from ..exc import WaitTimeout
20-
from .random import namer
20+
from .random import get_test_session_name, get_test_window_name, namer
2121

2222
logger = logging.getLogger(__name__)
2323

@@ -90,78 +90,6 @@ def retry_until(
9090
return True
9191

9292

93-
def get_test_session_name(server: Server, prefix: str = TEST_SESSION_PREFIX) -> str:
94-
"""
95-
Faker to create a session name that doesn't exist.
96-
97-
Parameters
98-
----------
99-
server : :class:`libtmux.Server`
100-
libtmux server
101-
prefix : str
102-
prefix for sessions (e.g. ``libtmux_``). Defaults to
103-
``TEST_SESSION_PREFIX``.
104-
105-
Returns
106-
-------
107-
str
108-
Random session name guaranteed to not collide with current ones.
109-
110-
Examples
111-
--------
112-
>>> get_test_session_name(server=server)
113-
'libtmux_...'
114-
115-
Never the same twice:
116-
>>> get_test_session_name(server=server) != get_test_session_name(server=server)
117-
True
118-
"""
119-
while True:
120-
session_name = prefix + next(namer)
121-
if not server.has_session(session_name):
122-
break
123-
return session_name
124-
125-
126-
def get_test_window_name(
127-
session: Session,
128-
prefix: str | None = TEST_SESSION_PREFIX,
129-
) -> str:
130-
"""
131-
Faker to create a window name that doesn't exist.
132-
133-
Parameters
134-
----------
135-
session : :class:`libtmux.Session`
136-
libtmux session
137-
prefix : str
138-
prefix for windows (e.g. ``libtmux_``). Defaults to
139-
``TEST_SESSION_PREFIX``.
140-
141-
ATM we reuse the test session prefix here.
142-
143-
Returns
144-
-------
145-
str
146-
Random window name guaranteed to not collide with current ones.
147-
148-
Examples
149-
--------
150-
>>> get_test_window_name(session=session)
151-
'libtmux_...'
152-
153-
Never the same twice:
154-
>>> get_test_window_name(session=session) != get_test_window_name(session=session)
155-
True
156-
"""
157-
assert prefix is not None
158-
while True:
159-
window_name = prefix + next(namer)
160-
if len(session.windows.filter(window_name=window_name)) == 0:
161-
break
162-
return window_name
163-
164-
16593
@contextlib.contextmanager
16694
def temp_session(
16795
server: Server,

src/libtmux/test/random.py

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,24 @@
66
import random
77
import typing as t
88

9+
from libtmux.test.constants import (
10+
TEST_SESSION_PREFIX,
11+
)
12+
13+
logger = logging.getLogger(__name__)
14+
15+
if t.TYPE_CHECKING:
16+
import sys
17+
18+
from libtmux.server import Server
19+
from libtmux.session import Session
20+
21+
if sys.version_info >= (3, 11):
22+
pass
23+
else:
24+
pass
25+
26+
927
logger = logging.getLogger(__name__)
1028

1129
if t.TYPE_CHECKING:
@@ -46,3 +64,75 @@ def __next__(self) -> str:
4664

4765

4866
namer = RandomStrSequence()
67+
68+
69+
def get_test_session_name(server: Server, prefix: str = TEST_SESSION_PREFIX) -> str:
70+
"""
71+
Faker to create a session name that doesn't exist.
72+
73+
Parameters
74+
----------
75+
server : :class:`libtmux.Server`
76+
libtmux server
77+
prefix : str
78+
prefix for sessions (e.g. ``libtmux_``). Defaults to
79+
``TEST_SESSION_PREFIX``.
80+
81+
Returns
82+
-------
83+
str
84+
Random session name guaranteed to not collide with current ones.
85+
86+
Examples
87+
--------
88+
>>> get_test_session_name(server=server)
89+
'libtmux_...'
90+
91+
Never the same twice:
92+
>>> get_test_session_name(server=server) != get_test_session_name(server=server)
93+
True
94+
"""
95+
while True:
96+
session_name = prefix + next(namer)
97+
if not server.has_session(session_name):
98+
break
99+
return session_name
100+
101+
102+
def get_test_window_name(
103+
session: Session,
104+
prefix: str | None = TEST_SESSION_PREFIX,
105+
) -> str:
106+
"""
107+
Faker to create a window name that doesn't exist.
108+
109+
Parameters
110+
----------
111+
session : :class:`libtmux.Session`
112+
libtmux session
113+
prefix : str
114+
prefix for windows (e.g. ``libtmux_``). Defaults to
115+
``TEST_SESSION_PREFIX``.
116+
117+
ATM we reuse the test session prefix here.
118+
119+
Returns
120+
-------
121+
str
122+
Random window name guaranteed to not collide with current ones.
123+
124+
Examples
125+
--------
126+
>>> get_test_window_name(session=session)
127+
'libtmux_...'
128+
129+
Never the same twice:
130+
>>> get_test_window_name(session=session) != get_test_window_name(session=session)
131+
True
132+
"""
133+
assert prefix is not None
134+
while True:
135+
window_name = prefix + next(namer)
136+
if len(session.windows.filter(window_name=window_name)) == 0:
137+
break
138+
return window_name

0 commit comments

Comments
 (0)