1515for repeat in range({repeats}):
1616 sleep({interval})
1717 print('{message}', end='')
18+
19+ if {add_excess}:
20+ print("extra", end='')
21+
1822print()
1923"""
2024
@@ -23,12 +27,18 @@ class CommunicatorSpawner:
2327 def __init__ (self , tmp_path ):
2428 self .tmp_path = tmp_path
2529
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+ ):
2733 length = len (message ) * repeats
2834 commands_file = self .tmp_path / "writer.py"
2935 commands_file .write_text (
3036 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 ,
3242 )
3343 )
3444 return subprocess .Popen (
@@ -50,21 +60,22 @@ async def join_process(process: subprocess.Popen, headstart=1, timeout=1):
5060
5161
5262@pytest .mark .parametrize (
53- "message,repeats,interval" ,
63+ "message,repeats,interval,add_excess " ,
5464 [
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 ],
5970 ],
60- ids = ["short" , "long" , "intermittent" , "intensive-intermittent" ],
71+ ids = ["short" , "long" , "intermittent" , "intensive-intermittent" , "with-excess" ],
6172)
6273@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 ):
6475 queue = Queue ()
6576
6677 process = communicator_spawner .spawn_writer (
67- message = message , repeats = repeats , interval = interval
78+ message = message , repeats = repeats , interval = interval , add_excess = add_excess
6879 )
6980 reader = LspStdIoReader (stream = process .stdout , queue = queue )
7081
0 commit comments