Skip to content

Commit 862beb2

Browse files
fix: use threading.Event in error event test to avoid flaky busy-wait
Signed-off-by: Jonathan Norris <jonathan.norris@dynatrace.com>
1 parent 3dd16c1 commit 862beb2

1 file changed

Lines changed: 8 additions & 10 deletions

File tree

tests/test_api.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -475,26 +475,24 @@ def test_set_provider_and_wait_reraises_on_failure():
475475
def test_set_provider_swallows_error_and_emits_provider_error_event():
476476
# Given
477477
provider = MagicMock(spec=FeatureProvider)
478+
error_fired = threading.Event()
478479

479480
def failing_initialize(ctx):
480481
raise ProviderFatalError()
481482

482483
provider.initialize.side_effect = failing_initialize
483484

484485
spy = MagicMock()
485-
add_handler(ProviderEvent.PROVIDER_ERROR, spy.on_error)
486486

487-
# When: non-blocking set_provider — must not raise
488-
set_provider(provider)
487+
def on_error(details):
488+
spy.on_error(details)
489+
error_fired.set()
489490

490-
# Allow background thread to complete
491-
def wait_for_event():
492-
for _ in range(50):
493-
if spy.on_error.called:
494-
return
495-
threading.Event().wait(0.01)
491+
add_handler(ProviderEvent.PROVIDER_ERROR, on_error)
496492

497-
wait_for_event()
493+
# When: non-blocking set_provider — must not raise
494+
set_provider(provider)
498495

499496
# Then: error event fired, exception was not propagated
497+
assert error_fired.wait(timeout=2), "PROVIDER_ERROR event was never fired"
500498
spy.on_error.assert_called_once()

0 commit comments

Comments
 (0)