Skip to content

Commit 7f347bd

Browse files
committed
Test the auto-close feature of broadcast channels
Signed-off-by: Sahas Subramanian <sahas.subramanian@proton.me>
1 parent 51e746d commit 7f347bd

1 file changed

Lines changed: 48 additions & 0 deletions

File tree

tests/test_broadcast.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
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)

0 commit comments

Comments
 (0)