Skip to content

Commit b06d661

Browse files
authored
test: fix flaky event handler test (#609)
fix flaky event handler test Signed-off-by: gruebel <anton.gruebel@gmail.com>
1 parent 0a96426 commit b06d661

1 file changed

Lines changed: 17 additions & 9 deletions

File tree

tests/test_client.py

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -592,18 +592,25 @@ def test_provider_event_handler_exception_does_not_stop_subsequent_handlers():
592592
provider = NoOpProvider()
593593
set_provider(provider)
594594

595-
spy = MagicMock()
596-
handler_called = threading.Event()
595+
raising_handler_called = threading.Event()
596+
recording_handler_called = threading.Event()
597597

598598
raising_handler = MagicMock(side_effect=RuntimeError("handler failed"))
599+
recording_handler = MagicMock()
600+
601+
def raising_handler_wrap(details):
602+
try:
603+
raising_handler(details)
604+
finally:
605+
raising_handler_called.set()
599606

600-
def recording_handler(details):
601-
spy.provider_error(details)
602-
handler_called.set()
607+
def recording_handler_wrap(details):
608+
recording_handler(details)
609+
recording_handler_called.set()
603610

604611
client = get_client()
605-
client.add_handler(ProviderEvent.PROVIDER_ERROR, raising_handler)
606-
client.add_handler(ProviderEvent.PROVIDER_ERROR, recording_handler)
612+
client.add_handler(ProviderEvent.PROVIDER_ERROR, raising_handler_wrap)
613+
client.add_handler(ProviderEvent.PROVIDER_ERROR, recording_handler_wrap)
607614

608615
details = ProviderEventDetails(error_code=ErrorCode.GENERAL, message="some_error")
609616
expected_details = EventDetails.from_provider_event_details(
@@ -614,9 +621,10 @@ def recording_handler(details):
614621
provider.emit_provider_error(details)
615622

616623
# Then
617-
assert handler_called.wait(timeout=1)
624+
assert raising_handler_called.wait(timeout=1)
625+
assert recording_handler_called.wait(timeout=1)
618626
raising_handler.assert_called_once_with(expected_details)
619-
spy.provider_error.assert_called_once_with(expected_details)
627+
recording_handler.assert_called_once_with(expected_details)
620628

621629

622630
def test_provider_event_handlers_do_not_block_emitter():

0 commit comments

Comments
 (0)