7
7
8
8
import pytest
9
9
10
+ from libtmux .test .constants import TEST_SESSION_PREFIX
10
11
from libtmux .test .random import (
11
12
RandomStrSequence ,
12
13
get_test_session_name ,
@@ -54,23 +55,100 @@ def test_random_str_sequence_iterator() -> None:
54
55
assert iter (rng ) is rng
55
56
56
57
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."""
59
73
result = get_test_session_name (server = server )
60
74
61
75
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)
64
78
assert not server .has_session (result )
65
79
66
80
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."""
69
115
result = get_test_window_name (session = session )
70
116
71
117
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
74
152
assert not any (w .window_name == result for w in session .windows )
75
153
76
154
0 commit comments