Skip to content

Commit 5037ad3

Browse files
committed
test: cover receive loop cleanup
1 parent c540060 commit 5037ad3

1 file changed

Lines changed: 20 additions & 1 deletion

File tree

tests/shared/test_session.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ async def make_request(client_session: ClientSession):
477477
tg.start_soon(mock_server)
478478
tg.start_soon(make_request, client_session)
479479

480-
with anyio.fail_after(2):
480+
with anyio.fail_after(2): # pragma: no branch
481481
await ev_server_received_error.wait()
482482

483483
assert len(server_error_holder) == 1
@@ -508,3 +508,22 @@ async def make_request(client_session: ClientSession):
508508
):
509509
tg.start_soon(mock_server, client_session)
510510
tg.start_soon(make_request, client_session)
511+
512+
513+
@pytest.mark.anyio
514+
async def test_receive_loop_handles_closed_response_stream():
515+
"""Cover receive loop cleanup when a response stream is already closed."""
516+
async with create_client_server_memory_streams() as (client_streams, server_streams):
517+
client_read, client_write = client_streams
518+
_server_read, server_write = server_streams
519+
520+
async with ClientSession(read_stream=client_read, write_stream=client_write) as client_session:
521+
response_stream, _ = anyio.create_memory_object_stream[JSONRPCResponse | JSONRPCError](1)
522+
await response_stream.aclose()
523+
client_session._response_streams[0] = response_stream
524+
525+
server_write.close()
526+
527+
with anyio.fail_after(2): # pragma: no branch
528+
while client_session._response_streams:
529+
await anyio.sleep(0)

0 commit comments

Comments
 (0)