Skip to content

Commit dc34e20

Browse files
committed
test: cover ClientSession reentry guard
1 parent 7d507ca commit dc34e20

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
@@ -166,6 +166,26 @@ async def test_client_session_requires_context_manager():
166166
await session.initialize()
167167

168168

169+
@pytest.mark.anyio
170+
async def test_client_session_reentry_raises_runtime_error():
171+
client_to_server_send, client_to_server_receive = anyio.create_memory_object_stream[SessionMessage](1)
172+
server_to_client_send, server_to_client_receive = anyio.create_memory_object_stream[SessionMessage](1)
173+
174+
async with (
175+
client_to_server_send,
176+
client_to_server_receive,
177+
server_to_client_send,
178+
server_to_client_receive,
179+
):
180+
session = ClientSession(server_to_client_receive, client_to_server_send)
181+
await session.__aenter__()
182+
try:
183+
with pytest.raises(RuntimeError, match="already running"):
184+
await session.__aenter__()
185+
finally:
186+
await session.__aexit__(None, None, None)
187+
188+
169189
@pytest.mark.anyio
170190
async def test_client_session_custom_client_info():
171191
client_to_server_send, client_to_server_receive = anyio.create_memory_object_stream[SessionMessage](1)
@@ -1269,12 +1289,12 @@ async def server_on_notify(
12691289

12701290
@pytest.mark.anyio
12711291
async def test_dispatcher_keyword_send_request_before_enter_raises_runtimeerror():
1272-
"""The documented pre-enter RuntimeError holds for dispatcher= sessions too."""
1292+
"""The documented pre-enter RuntimeError holds before any dispatcher call."""
12731293
client_side, _server_side = create_direct_dispatcher_pair()
12741294
session = ClientSession(dispatcher=client_side)
12751295
with anyio.fail_after(5), pytest.raises(RuntimeError) as exc:
12761296
await session.send_ping()
1277-
assert str(exc.value) == "DirectDispatcher.send_raw_request called before run()"
1297+
assert "async context manager" in str(exc.value)
12781298

12791299

12801300
@pytest.mark.anyio

0 commit comments

Comments
 (0)