15
15
for repeat in range({repeats}):
16
16
sleep({interval})
17
17
print('{message}', end='')
18
+
19
+ if {add_excess}:
20
+ print("extra", end='')
21
+
18
22
print()
19
23
"""
20
24
@@ -23,12 +27,18 @@ class CommunicatorSpawner:
23
27
def __init__ (self , tmp_path ):
24
28
self .tmp_path = tmp_path
25
29
26
- def spawn_writer (self , message : str , repeats : int = 1 , interval = None ):
30
+ def spawn_writer (
31
+ self , message : str , repeats : int = 1 , interval = None , add_excess = False
32
+ ):
27
33
length = len (message ) * repeats
28
34
commands_file = self .tmp_path / "writer.py"
29
35
commands_file .write_text (
30
36
WRITER_TEMPLATE .format (
31
- length = length , repeats = repeats , interval = interval or 0 , message = message
37
+ length = length ,
38
+ repeats = repeats ,
39
+ interval = interval or 0 ,
40
+ message = message ,
41
+ add_excess = add_excess ,
32
42
)
33
43
)
34
44
return subprocess .Popen (
@@ -50,21 +60,22 @@ async def join_process(process: subprocess.Popen, headstart=1, timeout=1):
50
60
51
61
52
62
@pytest .mark .parametrize (
53
- "message,repeats,interval" ,
63
+ "message,repeats,interval,add_excess " ,
54
64
[
55
- ["short" , 1 , None ],
56
- ["ab" * 10_0000 , 1 , None ],
57
- ["ab" , 2 , 0.01 ],
58
- ["ab" , 45 , 0.01 ],
65
+ ["short" , 1 , None , False ],
66
+ ["ab" * 10_0000 , 1 , None , False ],
67
+ ["ab" , 2 , 0.01 , False ],
68
+ ["ab" , 45 , 0.01 , False ],
69
+ ["message" , 2 , 0.01 , True ],
59
70
],
60
- ids = ["short" , "long" , "intermittent" , "intensive-intermittent" ],
71
+ ids = ["short" , "long" , "intermittent" , "intensive-intermittent" , "with-excess" ],
61
72
)
62
73
@pytest .mark .asyncio
63
- async def test_reader (message , repeats , interval , communicator_spawner ):
74
+ async def test_reader (message , repeats , interval , add_excess , communicator_spawner ):
64
75
queue = Queue ()
65
76
66
77
process = communicator_spawner .spawn_writer (
67
- message = message , repeats = repeats , interval = interval
78
+ message = message , repeats = repeats , interval = interval , add_excess = add_excess
68
79
)
69
80
reader = LspStdIoReader (stream = process .stdout , queue = queue )
70
81
0 commit comments