test: fix WS test port race; narrow to single smoke test covering both transport ends (#2267)

This commit is contained in:
Max Isbey 2026-03-18 15:48:30 +00:00 • committed by GitHub
commit 67201a9bbd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -10,7 +10,7 @@ from mcp import types
from mcp.shared.message import SessionMessage
@asynccontextmanager # pragma: no cover
@asynccontextmanager
async def websocket_server(scope: Scope, receive: Receive, send: Send):
"""WebSocket server transport for MCP. This is an ASGI application, suitable for use
with a framework like Starlette and a server like Hypercorn.
@ -34,13 +34,13 @@ async def websocket_server(scope: Scope, receive: Receive, send: Send):
async for msg in websocket.iter_text():
try:
client_message = types.jsonrpc_message_adapter.validate_json(msg, by_name=False)
except ValidationError as exc:
except ValidationError as exc: # pragma: no cover
await read_stream_writer.send(exc)
continue
session_message = SessionMessage(client_message)
await read_stream_writer.send(session_message)
except anyio.ClosedResourceError:
except anyio.ClosedResourceError: # pragma: no cover
await websocket.close()
async def ws_writer():
@ -49,7 +49,7 @@ async def websocket_server(scope: Scope, receive: Receive, send: Send):
async for session_message in write_stream_reader:
obj = session_message.message.model_dump_json(by_alias=True, exclude_unset=True)
await websocket.send_text(obj)
except anyio.ClosedResourceError:
except anyio.ClosedResourceError: # pragma: no cover
await websocket.close()
async with anyio.create_task_group() as tg: