Skip to content

Commit 507c941

Browse files
author
Jianke LIN
committed
test: cover ClientSession reentry guard
1 parent f848fbe commit 507c941

1 file changed

Lines changed: 22 additions & 2 deletions

File tree

tests/client/test_session.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,26 @@ async def test_client_session_requires_context_manager():
172172
await session.initialize()
173173

174174

175+
@pytest.mark.anyio
176+
async def test_client_session_reentry_raises_runtime_error():
177+
client_to_server_send, client_to_server_receive = anyio.create_memory_object_stream[SessionMessage](1)
178+
server_to_client_send, server_to_client_receive = anyio.create_memory_object_stream[SessionMessage](1)
179+
180+
async with (
181+
client_to_server_send,
182+
client_to_server_receive,
183+
server_to_client_send,
184+
server_to_client_receive,
185+
):
186+
session = ClientSession(server_to_client_receive, client_to_server_send)
187+
await session.__aenter__()
188+
try:
189+
with pytest.raises(RuntimeError, match="already running"):
190+
await session.__aenter__()
191+
finally:
192+
await session.__aexit__(None, None, None)
193+
194+
175195
@pytest.mark.anyio
176196
async def test_client_session_custom_client_info():
177197
client_to_server_send, client_to_server_receive = anyio.create_memory_object_stream[SessionMessage](1)
@@ -1282,12 +1302,12 @@ async def server_on_notify(
12821302

12831303
@pytest.mark.anyio
12841304
async def test_dispatcher_keyword_send_request_before_enter_raises_runtimeerror():
1285-
"""The documented pre-enter RuntimeError holds for dispatcher= sessions too."""
1305+
"""The documented pre-enter RuntimeError holds before any dispatcher call."""
12861306
client_side, _server_side = create_direct_dispatcher_pair()
12871307
session = ClientSession(dispatcher=client_side)
12881308
with anyio.fail_after(5), pytest.raises(RuntimeError) as exc:
12891309
await session.send_ping()
1290-
assert str(exc.value) == "DirectDispatcher.send_raw_request called before run()"
1310+
assert "async context manager" in str(exc.value)
12911311

12921312

12931313
@pytest.mark.anyio

0 commit comments

Comments
 (0)