Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 9385862

Browse filesBrowse files
committed
test(random): Fix collision tests and improve coverage
why: Ensure test utilities handle name collisions correctly what: - Fix mocking of RandomStrSequence.__next__ - Add doctest examples coverage - Test name collision handling in both session and window names refs: Coverage improved from 52% to 58%
1 parent 647c9d1 commit 9385862
Copy full SHA for 9385862

File tree

Expand file treeCollapse file tree

1 file changed

+86
-8
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+86
-8
lines changed

‎tests/test/test_random.py

Copy file name to clipboardExpand all lines: tests/test/test_random.py
+86-8Lines changed: 86 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import pytest
99

10+
from libtmux.test.constants import TEST_SESSION_PREFIX
1011
from libtmux.test.random import (
1112
RandomStrSequence,
1213
get_test_session_name,
@@ -54,23 +55,100 @@ def test_random_str_sequence_iterator() -> None:
5455
assert iter(rng) is rng
5556

5657

57-
def test_get_test_session_name(server: Server) -> None:
58-
"""Test get_test_session_name function."""
58+
def test_random_str_sequence_doctest_examples() -> None:
59+
"""Test the doctest examples for RandomStrSequence."""
60+
rng = RandomStrSequence()
61+
result1 = next(rng)
62+
result2 = next(rng)
63+
64+
assert isinstance(result1, str)
65+
assert len(result1) == 8
66+
assert isinstance(result2, str)
67+
assert len(result2) == 8
68+
assert isinstance(next(rng), str)
69+
70+
71+
def test_get_test_session_name_default_prefix(server: Server) -> None:
72+
"""Test get_test_session_name with default prefix."""
5973
result = get_test_session_name(server=server)
6074

6175
assert isinstance(result, str)
62-
assert result.startswith("libtmux_") # Uses TEST_SESSION_PREFIX
63-
assert len(result) == 16 # prefix(8) + random(8)
76+
assert result.startswith(TEST_SESSION_PREFIX)
77+
assert len(result) == len(TEST_SESSION_PREFIX) + 8 # prefix + random(8)
6478
assert not server.has_session(result)
6579

6680

67-
def test_get_test_window_name(session: Session) -> None:
68-
"""Test get_test_window_name function."""
81+
def test_get_test_session_name_custom_prefix(server: Server) -> None:
82+
"""Test get_test_session_name with custom prefix."""
83+
prefix = "test_"
84+
result = get_test_session_name(server=server, prefix=prefix)
85+
86+
assert isinstance(result, str)
87+
assert result.startswith(prefix)
88+
assert len(result) == len(prefix) + 8 # prefix + random(8)
89+
assert not server.has_session(result)
90+
91+
92+
def test_get_test_session_name_collision(
93+
server: Server,
94+
monkeypatch: pytest.MonkeyPatch,
95+
) -> None:
96+
"""Test get_test_session_name when first attempts collide."""
97+
collision_name = TEST_SESSION_PREFIX + "collision"
98+
success_name = TEST_SESSION_PREFIX + "success"
99+
name_iter = iter(["collision", "success"])
100+
101+
def mock_next(self: t.Any) -> str:
102+
return next(name_iter)
103+
104+
monkeypatch.setattr(RandomStrSequence, "__next__", mock_next)
105+
106+
# Create a session that will cause a collision
107+
with server.new_session(collision_name):
108+
result = get_test_session_name(server=server)
109+
assert result == success_name
110+
assert not server.has_session(result)
111+
112+
113+
def test_get_test_window_name_default_prefix(session: Session) -> None:
114+
"""Test get_test_window_name with default prefix."""
69115
result = get_test_window_name(session=session)
70116

71117
assert isinstance(result, str)
72-
assert result.startswith("libtmux_") # Uses TEST_SESSION_PREFIX
73-
assert len(result) == 16 # prefix(8) + random(8)
118+
assert result.startswith(TEST_SESSION_PREFIX)
119+
assert len(result) == len(TEST_SESSION_PREFIX) + 8 # prefix + random(8)
120+
assert not any(w.window_name == result for w in session.windows)
121+
122+
123+
def test_get_test_window_name_custom_prefix(session: Session) -> None:
124+
"""Test get_test_window_name with custom prefix."""
125+
prefix = "test_"
126+
result = get_test_window_name(session=session, prefix=prefix)
127+
128+
assert isinstance(result, str)
129+
assert result.startswith(prefix)
130+
assert len(result) == len(prefix) + 8 # prefix + random(8)
131+
assert not any(w.window_name == result for w in session.windows)
132+
133+
134+
def test_get_test_window_name_collision(
135+
session: Session,
136+
monkeypatch: pytest.MonkeyPatch,
137+
) -> None:
138+
"""Test get_test_window_name when first attempts collide."""
139+
collision_name = TEST_SESSION_PREFIX + "collision"
140+
success_name = TEST_SESSION_PREFIX + "success"
141+
name_iter = iter(["collision", "success"])
142+
143+
def mock_next(self: t.Any) -> str:
144+
return next(name_iter)
145+
146+
monkeypatch.setattr(RandomStrSequence, "__next__", mock_next)
147+
148+
# Create a window that will cause a collision
149+
session.new_window(window_name=collision_name)
150+
result = get_test_window_name(session=session)
151+
assert result == success_name
74152
assert not any(w.window_name == result for w in session.windows)
75153

76154

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.