Skip to content

Commit 2c691d0

Browse files
vdusekclaude
andauthored
test: Fix flaky event manager tests by replacing sleep with wait (#1830)
## Summary - Replace `asyncio.sleep(0.1)` with `event_manager.wait_for_all_listeners_to_complete()` in 5 event manager tests - The sleep-based approach was a race condition — under CI load (parallel xdist workers), 100ms wasn't always enough for `asyncio.to_thread()` to complete sync listeners --- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent d5715f3 commit 2c691d0

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

tests/unit/events/test_event_manager.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ async def test_emit_invokes_registered_sync_listener(
5555
event_manager.on(event=Event.SYSTEM_INFO, listener=sync_listener)
5656
event_manager.emit(event=Event.SYSTEM_INFO, event_data=event_system_info_data)
5757

58-
await asyncio.sleep(0.1) # Allow some time for the event to be processed
58+
await event_manager.wait_for_all_listeners_to_complete()
5959

6060
assert sync_listener.call_count == 1
6161
assert sync_listener.call_args[0] == (event_system_info_data,)
@@ -71,7 +71,7 @@ async def test_emit_invokes_both_sync_and_async_listeners(
7171
event_manager.on(event=Event.SYSTEM_INFO, listener=async_listener)
7272
event_manager.emit(event=Event.SYSTEM_INFO, event_data=event_system_info_data)
7373

74-
await asyncio.sleep(0.1) # Allow some time for the event to be processed
74+
await event_manager.wait_for_all_listeners_to_complete()
7575

7676
assert async_listener.call_count == 1
7777
assert async_listener.call_args[0] == (event_system_info_data,)
@@ -90,7 +90,7 @@ async def test_emit_event_with_no_listeners(
9090

9191
# Attempt to emit an event for which no listeners are registered, it should not fail
9292
event_manager.emit(event=Event.SYSTEM_INFO, event_data=event_system_info_data)
93-
await asyncio.sleep(0.1) # Allow some time for the event to be processed
93+
await event_manager.wait_for_all_listeners_to_complete()
9494

9595
# Ensure the listener for the other event was not called
9696
assert async_listener.call_count == 0
@@ -114,7 +114,7 @@ async def async_listener() -> None:
114114
event_manager.on(event=Event.SYSTEM_INFO, listener=async_listener)
115115

116116
event_manager.emit(event=Event.SYSTEM_INFO, event_data=event_system_info_data)
117-
await asyncio.sleep(0.1) # Allow some time for the event to be processed
117+
await event_manager.wait_for_all_listeners_to_complete()
118118

119119
assert sync_mock.call_count == 1
120120
assert async_mock.call_count == 1
@@ -139,7 +139,7 @@ async def test_removed_listener_not_invoked_on_emit(
139139
event_manager.off(event=Event.SYSTEM_INFO, listener=async_listener)
140140
event_manager.emit(event=Event.SYSTEM_INFO, event_data=event_system_info_data)
141141

142-
await asyncio.sleep(0.1) # Allow some time for the event to be processed
142+
await event_manager.wait_for_all_listeners_to_complete()
143143
assert async_listener.call_count == 0
144144

145145

0 commit comments

Comments
 (0)