@@ -472,12 +472,12 @@ async def effect():
472
472
await asyncio .wait_for (cleanup_ran .wait (), 1 )
473
473
474
474
475
- async def test_use_async_effect_cancel ():
475
+ async def test_use_async_effect_cancel (caplog ):
476
476
element_hook = HookCatcher ()
477
477
effect_ran = asyncio .Event ()
478
478
effect_was_cancelled = asyncio .Event ()
479
479
480
- event_that_is_never_set = asyncio .Event ()
480
+ event_that_never_occurs = asyncio .Event ()
481
481
482
482
@idom .element
483
483
@element_hook .capture
@@ -486,9 +486,10 @@ def ElementWithLongWaitingEffect():
486
486
async def effect ():
487
487
effect_ran .set ()
488
488
try :
489
- await event_that_is_never_set .wait ()
489
+ await event_that_never_occurs .wait ()
490
490
except asyncio .CancelledError :
491
491
effect_was_cancelled .set ()
492
+ raise
492
493
493
494
return idom .html .div ()
494
495
@@ -502,6 +503,12 @@ async def effect():
502
503
503
504
await asyncio .wait_for (effect_was_cancelled .wait (), 1 )
504
505
506
+ # So I know we said the event never occurs but... to ensure the effect's future is
507
+ # cancelled before the test is cleaned up we need to set the event. This is because
508
+ # the cancellation doesn't propogate before the test is resolved which causes
509
+ # delayed log messages that impact other tests.
510
+ event_that_never_occurs .set ()
511
+
505
512
506
513
async def test_error_in_effect_is_gracefully_handled (caplog ):
507
514
@idom .element
0 commit comments