From 620bb4da32ec2aad22cb017655bd798319163cd3 Mon Sep 17 00:00:00 2001 From: kshitijk4poor <82637225+kshitijk4poor@users.noreply.github.com> Date: Thu, 24 Sep 2026 20:25:00 +0530 Subject: [PATCH] test(api-server): reuse _claim_run in head-flush tests, drop base-green preamble test, trim redundant asserts --- tests/gateway/test_api_server_runs.py | 37 +-------------------------- tests/gateway/test_session_api.py | 3 --- 2 files changed, 1 insertion(+), 39 deletions(-) diff --git a/tests/gateway/test_api_server_runs.py b/tests/gateway/test_api_server_runs.py index e8c670048e..6774117a25 100644 --- a/tests/gateway/test_api_server_runs.py +++ b/tests/gateway/test_api_server_runs.py @@ -2574,14 +2574,6 @@ class TestHostedRoomRuns: ) assert rejected.status == 403 create.assert_not_called() -class _OwnedRequest: - """Stand-in request for computing the idempotency scope the real one will get. - - ``_run_idempotency_scope`` reads only headers, so an empty mapping yields the - same unauthenticated scope the TestClient request below produces. - """ - - headers: dict = {} class TestRunEventsHeadFlush: @@ -2604,9 +2596,7 @@ class TestRunEventsHeadFlush: # A registered run whose queue stays empty for the whole test — the # exact shape of "subscribed before the first event was emitted". adapter._run_streams[run_id] = asyncio.Queue() - # Ownership is a separate gate with its own tests; this one is about - # when the head reaches the wire. - adapter._run_owners[run_id] = adapter._run_idempotency_scope(_OwnedRequest()) + _claim_run(adapter, run_id) async with TestClient(TestServer(app)) as cli: resp = await asyncio.wait_for( @@ -2620,28 +2610,3 @@ class TestRunEventsHeadFlush: assert first, "no body byte arrived before the first event" resp.close() - - @pytest.mark.asyncio - async def test_preamble_is_an_ignorable_sse_comment(self, adapter): - """The flush must not look like an event to a conforming consumer.""" - app = _create_runs_app(adapter) - run_id = "run_comment_preamble" - q: asyncio.Queue = asyncio.Queue() - adapter._run_streams[run_id] = q - adapter._run_owners[run_id] = adapter._run_idempotency_scope(_OwnedRequest()) - - async with TestClient(TestServer(app)) as cli: - resp = await asyncio.wait_for( - cli.get(f"/v1/runs/{run_id}/events"), timeout=5.0 - ) - assert resp.status == 200 - - # Close the stream so the body is finite, then read it whole. - await q.put(None) - body = await asyncio.wait_for(resp.text(), timeout=5.0) - - # Every line before the close sentinel is an SSE comment: no `event:` - # or `data:` field, so EventSource dispatches nothing extra. - assert body.startswith(":") - assert "event:" not in body - assert "data:" not in body diff --git a/tests/gateway/test_session_api.py b/tests/gateway/test_session_api.py index 7a87cacf95..09efd8f984 100644 --- a/tests/gateway/test_session_api.py +++ b/tests/gateway/test_session_api.py @@ -403,9 +403,6 @@ async def test_session_chat_stream_classifies_failed_tool_completions(adapter, s assert any("event: tool.failed" in b and '"tool_name": "web_search"' in b for b in blocks) assert body.count("event: tool.completed") == 1 assert body.count("event: tool.failed") == 2 - assert '"tool_name": "read_file"' in body - assert '"tool_name": "terminal"' in body - assert '"tool_name": "web_search"' in body @pytest.mark.asyncio