@@ -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
170190async 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
12711291async 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