File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1717 ReceiverStoppedError ,
1818 Sender ,
1919 SenderError ,
20+ broadcast ,
2021)
2122
2223
@@ -425,3 +426,50 @@ async def test_broadcast_close_receiver() -> None:
425426
426427 with pytest .raises (ReceiverStoppedError ):
427428 _ = await receiver_2 .receive ()
429+
430+
431+ async def test_broadcast_auto_close_1 () -> None :
432+ """Ensure broadcast auto close works when all receivers are closed."""
433+ sender , receiver = broadcast (int , name = "auto-close-test" )
434+
435+ receiver_2 = sender .subscribe ()
436+
437+ await sender .send (1 )
438+
439+ assert (await receiver .receive ()) == 1
440+ assert (await receiver_2 .receive ()) == 1
441+
442+ receiver .close ()
443+
444+ await sender .send (2 )
445+
446+ assert (await receiver_2 .receive ()) == 2
447+
448+ receiver_2 .close ()
449+
450+ with pytest .raises (SenderError ) as excinfo :
451+ await sender .send (3 )
452+ assert isinstance (excinfo .value .__cause__ , ChannelClosedError )
453+
454+
455+ async def test_broadcast_auto_close_2 () -> None :
456+ """Ensure broadcast auto close works when all senders are closed."""
457+ sender , receiver = broadcast (int , name = "auto-close-test" )
458+
459+ await sender .send (1 )
460+
461+ assert (await receiver .receive ()) == 1
462+
463+ sender_2 = sender .clone ()
464+
465+ sender .close ()
466+
467+ await sender_2 .send (2 )
468+
469+ sender_2 .close ()
470+
471+ assert (await receiver .receive ()) == 2
472+
473+ with pytest .raises (ReceiverStoppedError ) as excinfo :
474+ await receiver .receive ()
475+ assert isinstance (excinfo .value .__cause__ , ChannelClosedError )
You can’t perform that action at this time.
0 commit comments