Skip to content

Commit f0443d6

Browse files
committed
test: satisfy pyright + branch coverage for SSE cleanup
1 parent 6bc5d3b commit f0443d6

1 file changed

Lines changed: 20 additions & 8 deletions

File tree

tests/client/test_streamable_http_response_cleanup.py

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import contextlib
22

3-
import anyio
43
import httpx
54
import pytest
65
from httpx_sse import ServerSentEvent
76

87
from mcp.client.streamable_http import RequestContext, StreamableHTTPTransport
8+
from mcp.shared._context_streams import create_context_streams
99
from mcp.shared.message import ClientMessageMetadata, SessionMessage
1010
from mcp.types import JSONRPCRequest
1111

@@ -32,7 +32,7 @@ async def spy_aclose() -> None:
3232

3333
monkeypatch.setattr("mcp.client.streamable_http.EventSource", _RaiseEventSource)
3434

35-
send_stream, receive_stream = anyio.create_memory_object_stream[SessionMessage | Exception](1)
35+
send_stream, receive_stream = create_context_streams[SessionMessage | Exception](1)
3636
async with send_stream, receive_stream:
3737
transport = StreamableHTTPTransport("http://example.invalid/mcp")
3838
async with httpx.AsyncClient(transport=httpx.MockTransport(lambda _: httpx.Response(200))) as client:
@@ -53,13 +53,13 @@ async def test_handle_resumption_request_closes_response_when_aconnect_sse_raise
5353
monkeypatch: pytest.MonkeyPatch,
5454
) -> None:
5555
@contextlib.asynccontextmanager
56-
async def fake_aconnect_sse(*_args, **_kwargs):
56+
async def fake_aconnect_sse(*_args: object, **_kwargs: object):
5757
raise RuntimeError("connect failed")
5858
yield
5959

6060
monkeypatch.setattr("mcp.client.streamable_http.aconnect_sse", fake_aconnect_sse)
6161

62-
send_stream, receive_stream = anyio.create_memory_object_stream[SessionMessage | Exception](1)
62+
send_stream, receive_stream = create_context_streams[SessionMessage | Exception](1)
6363
async with send_stream, receive_stream:
6464
transport = StreamableHTTPTransport("http://example.invalid/mcp")
6565
metadata = ClientMessageMetadata(resumption_token="1")
@@ -72,8 +72,14 @@ async def fake_aconnect_sse(*_args, **_kwargs):
7272
read_stream_writer=send_stream,
7373
)
7474

75-
with pytest.raises(RuntimeError, match="connect failed"):
75+
error: RuntimeError | None = None
76+
try:
7677
await transport._handle_resumption_request(ctx)
78+
except RuntimeError as exc:
79+
error = exc
80+
81+
assert error is not None
82+
assert str(error) == "connect failed"
7783

7884

7985
@pytest.mark.anyio
@@ -92,12 +98,12 @@ async def spy_aclose() -> None:
9298
response.aclose = spy_aclose # type: ignore[method-assign]
9399

94100
@contextlib.asynccontextmanager
95-
async def fake_aconnect_sse(*_args, **_kwargs):
101+
async def fake_aconnect_sse(*_args: object, **_kwargs: object):
96102
yield _RaiseEventSource(response)
97103

98104
monkeypatch.setattr("mcp.client.streamable_http.aconnect_sse", fake_aconnect_sse)
99105

100-
send_stream, receive_stream = anyio.create_memory_object_stream[SessionMessage | Exception](1)
106+
send_stream, receive_stream = create_context_streams[SessionMessage | Exception](1)
101107
async with send_stream, receive_stream:
102108
transport = StreamableHTTPTransport("http://example.invalid/mcp")
103109
metadata = ClientMessageMetadata(resumption_token="1")
@@ -110,7 +116,13 @@ async def fake_aconnect_sse(*_args, **_kwargs):
110116
read_stream_writer=send_stream,
111117
)
112118

113-
with pytest.raises(RuntimeError, match="boom"):
119+
error: RuntimeError | None = None
120+
try:
114121
await transport._handle_resumption_request(ctx)
122+
except RuntimeError as exc:
123+
error = exc
124+
125+
assert error is not None
126+
assert str(error) == "boom"
115127

116128
assert closed

0 commit comments

Comments
 (0)