@@ -861,7 +861,7 @@ async def inner_func() -> None:
861
861
inner_nursery .start_soon (sleep , 1 )
862
862
863
863
with pytest .RaisesGroup (
864
- pytest .RaisesExc (RuntimeError , match = "Cancel scope stack corrupted" )
864
+ pytest .RaisesExc (RuntimeError , match = "Nursery stack corrupted" )
865
865
):
866
866
async with _core .open_nursery () as outer_nursery :
867
867
inner_cm = _core .open_nursery ()
@@ -874,20 +874,37 @@ async def asynccontextmanager_that_creates_a_nursery_internally() -> (
874
874
AsyncGenerator [None ]
875
875
):
876
876
async with _core .open_nursery () as nursery :
877
- nursery .start_soon (
878
- print_sleep_print , "task_in_asynccontextmanager_nursery" , 2.0
879
- )
877
+ await nursery .start (started_sleeper )
878
+ nursery .start_soon (unstarted_task )
880
879
yield
881
880
882
- async def print_sleep_print (name : str , sleep_time : float ) -> None :
883
- await sleep (sleep_time )
881
+ async def started_sleeper (task_status : _core .TaskStatus [None ]) -> None :
882
+ task_status .started ()
883
+ await sleep_forever ()
884
884
885
- async with AsyncExitStack () as stack , _core .open_nursery () as nursery :
885
+ async def unstarted_task () -> None :
886
+ raise AssertionError ("this should not even get a chance to run" )
887
+
888
+ async with AsyncExitStack () as stack :
889
+ manager = _core .open_nursery ()
890
+ nursery = await manager .__aenter__ ()
886
891
# The asynccontextmanager is going to create a nursery that outlives this nursery!
887
892
nursery .start_soon (
888
893
stack .enter_async_context ,
889
894
asynccontextmanager_that_creates_a_nursery_internally (),
890
895
)
896
+ with pytest .RaisesGroup (
897
+ pytest .RaisesExc (RuntimeError , match = "Nursery stack corrupted" )
898
+ ):
899
+ await manager .__aexit__ (None , None , None )
900
+
901
+ # The outer nursery forcefully aborts the inner nursery and stops `unstarted_task`
902
+ # from ever being started.
903
+ with pytest .warns (
904
+ RuntimeWarning ,
905
+ match = "^coroutine 'test_asyncexitstack_nursery_misnest.<locals>.unstarted_task' was never awaited$" ,
906
+ ):
907
+ gc_collect_harder ()
891
908
892
909
893
910
@slow
0 commit comments