@@ -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
176196async 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
12841304async 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