@@ -35,7 +35,7 @@ async def test_server_session_initialize():
3535 client_to_server_send , client_to_server_receive = anyio .create_memory_object_stream [SessionMessage ](1 )
3636
3737 # Create a message handler to catch exceptions
38- async def message_handler (
38+ async def message_handler ( # pragma: no cover
3939 message : RequestResponder [types .ServerRequest , types .ClientResult ] | types .ServerNotification | Exception ,
4040 ) -> None :
4141 if isinstance (message , Exception ):
@@ -55,15 +55,15 @@ async def run_server():
5555 capabilities = ServerCapabilities (),
5656 ),
5757 ) as server_session :
58- async for message in server_session .incoming_messages :
59- assert message is not None , "Expected to receive messages"
60- if isinstance (message , Exception ):
58+ async for message in server_session .incoming_messages : # pragma: no branch
59+ if isinstance (message , Exception ): # pragma: no cover
6160 raise message
6261
63- assert isinstance (message , ClientNotification ), "Expected ClientNotification"
64- assert isinstance (message .root , InitializedNotification ), "Expected InitializedNotification"
65- received_initialized = True
66- return
62+ if isinstance (message , ClientNotification ) and isinstance (
63+ message .root , InitializedNotification
64+ ): # pragma: no branch
65+ received_initialized = True
66+ return
6767
6868 try :
6969 async with (
@@ -77,8 +77,7 @@ async def run_server():
7777 tg .start_soon (run_server )
7878
7979 await client_session .initialize ()
80- except anyio .ClosedResourceError :
81- # This can happen if the server closes before the client finishes
80+ except anyio .ClosedResourceError : # pragma: no cover
8281 pass
8382
8483 assert received_initialized
@@ -90,12 +89,6 @@ async def test_server_session_initialize_with_title_and_description():
9089 server_to_client_send , server_to_client_receive = anyio .create_memory_object_stream [SessionMessage ](1 )
9190 client_to_server_send , client_to_server_receive = anyio .create_memory_object_stream [SessionMessage ](1 )
9291
93- async def message_handler (
94- message : RequestResponder [types .ServerRequest , types .ClientResult ] | types .ServerNotification | Exception ,
95- ) -> None :
96- if isinstance (message , Exception ):
97- raise message
98-
9992 async def run_server ():
10093 async with ServerSession (
10194 client_to_server_receive ,
@@ -107,32 +100,22 @@ async def run_server():
107100 description = "A description of what this server does." ,
108101 capabilities = ServerCapabilities (),
109102 ),
110- ) as server_session :
111- async for message in server_session .incoming_messages :
112- assert message is not None , "Expected to receive messages"
113- if isinstance (message , Exception ):
114- raise message
115-
116- assert isinstance (message , ClientNotification ), "Expected ClientNotification"
117- assert isinstance (message .root , InitializedNotification ), "Expected InitializedNotification"
118- return
103+ ) as _ :
104+ # Just run the server without handling incoming messages
105+ # The server will process messages internally
106+ await anyio .sleep (0.1 ) # Give time for initialization to complete
119107
120108 result : types .InitializeResult | None = None
121- try :
122- async with (
123- ClientSession (
124- server_to_client_receive ,
125- client_to_server_send ,
126- message_handler = message_handler ,
127- ) as client_session ,
128- anyio .create_task_group () as tg ,
129- ):
130- tg .start_soon (run_server )
109+ async with (
110+ ClientSession (
111+ server_to_client_receive ,
112+ client_to_server_send ,
113+ ) as client_session ,
114+ anyio .create_task_group () as tg ,
115+ ):
116+ tg .start_soon (run_server )
131117
132- result = await client_session .initialize ()
133- except anyio .ClosedResourceError :
134- # This can happen if the server closes before the client finishes
135- pass
118+ result = await client_session .initialize ()
136119
137120 assert result is not None
138121 assert result .serverInfo .name == "test-server"
@@ -155,7 +138,7 @@ async def test_server_capabilities():
155138
156139 # Add a prompts handler
157140 @server .list_prompts ()
158- async def list_prompts () -> list [Prompt ]:
141+ async def list_prompts () -> list [Prompt ]: # pragma: no cover
159142 return []
160143
161144 caps = server .get_capabilities (notification_options , experimental_capabilities )
@@ -165,7 +148,7 @@ async def list_prompts() -> list[Prompt]:
165148
166149 # Add a resources handler
167150 @server .list_resources ()
168- async def list_resources () -> list [Resource ]:
151+ async def list_resources () -> list [Resource ]: # pragma: no cover
169152 return []
170153
171154 caps = server .get_capabilities (notification_options , experimental_capabilities )
@@ -175,7 +158,7 @@ async def list_resources() -> list[Resource]:
175158
176159 # Add a complete handler
177160 @server .completion ()
178- async def complete (
161+ async def complete ( # pragma: no cover
179162 ref : PromptReference | ResourceTemplateReference ,
180163 argument : CompletionArgument ,
181164 context : CompletionContext | None ,
@@ -211,15 +194,15 @@ async def run_server():
211194 capabilities = ServerCapabilities (),
212195 ),
213196 ) as server_session :
214- async for message in server_session .incoming_messages :
215- assert message is not None , "Expected to receive messages"
216- if isinstance (message , Exception ):
197+ async for message in server_session .incoming_messages : # pragma: no branch
198+ if isinstance (message , Exception ): # pragma: no cover
217199 raise message
218200
219- assert isinstance (message , types .ClientNotification ), "Expected ClientNotification"
220- assert isinstance (message .root , InitializedNotification ), "Expected InitializedNotification"
221- received_initialized = True
222- return
201+ if isinstance (message , types .ClientNotification ) and isinstance (
202+ message .root , InitializedNotification
203+ ): # pragma: no branch
204+ received_initialized = True
205+ return
223206
224207 async def mock_client ():
225208 nonlocal received_protocol_version
@@ -297,18 +280,18 @@ async def run_server():
297280 capabilities = ServerCapabilities (),
298281 ),
299282 ) as server_session :
300- async for message in server_session .incoming_messages :
301- assert message is not None , "Expected to receive messages"
302- if isinstance (message , Exception ):
283+ async for message in server_session .incoming_messages : # pragma: no branch
284+ if isinstance (message , Exception ): # pragma: no cover
303285 raise message
304286
305287 # We should receive a ping request before initialization
306- assert isinstance (message , RequestResponder ), "Expected RequestResponder"
307- assert isinstance (message .request .root , types .PingRequest ), "Expected PingRequest"
308- # Respond to the ping
309- with message :
310- await message .respond (types .ServerResult (types .EmptyResult ()))
311- return
288+ if isinstance (message , RequestResponder ) and isinstance (
289+ message .request .root , types .PingRequest
290+ ): # pragma: no branch
291+ # Respond to the ping
292+ with message :
293+ await message .respond (types .ServerResult (types .EmptyResult ()))
294+ return
312295
313296 async def mock_client ():
314297 nonlocal ping_response_received , ping_response_id
@@ -566,9 +549,9 @@ async def mock_client():
566549
567550 # Wait for the error response
568551 error_message = await server_to_client_receive .receive ()
569- assert isinstance (error_message .message .root , types .JSONRPCError ), "Expected JSONRPCError response"
570- error_response_received = True
571- error_code = error_message .message .root .error .code
552+ if isinstance (error_message .message .root , types .JSONRPCError ): # pragma: no branch
553+ error_response_received = True
554+ error_code = error_message .message .root .error .code
572555
573556 async with (
574557 client_to_server_send ,
0 commit comments