Skip to content

Commit 4095250

Browse files
committed
Add regression tests for oai compaction session
1 parent 19b7c0b commit 4095250

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

tests/memory/test_openai_responses_compaction_session.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
from __future__ import annotations
22

33
import warnings as warnings_module
4+
from types import SimpleNamespace
45
from typing import Any, cast
56
from unittest.mock import AsyncMock, MagicMock
67

78
import pytest
89

10+
from agents import Agent, Runner
911
from agents.items import TResponseInputItem
1012
from agents.memory import (
1113
OpenAIResponsesCompactionSession,
@@ -17,6 +19,9 @@
1719
is_openai_model_name,
1820
select_compaction_candidate_items,
1921
)
22+
from tests.fake_model import FakeModel
23+
from tests.test_responses import get_text_message
24+
from tests.utils.simple_session import SimpleListSession
2025

2126

2227
class TestIsOpenAIModelName:
@@ -253,6 +258,36 @@ def model_dump(
253258
await session.run_compaction({"response_id": "resp-123"})
254259

255260
assert warning_model.received_warnings_arg is False
261+
mock_client.responses.compact.assert_called_once_with(
262+
previous_response_id="resp-123",
263+
model="gpt-4.1",
264+
)
265+
266+
@pytest.mark.asyncio
267+
async def test_compaction_runs_during_runner_flow(self) -> None:
268+
"""Ensure Runner triggers compaction when using a compaction-aware session."""
269+
underlying = SimpleListSession()
270+
compacted = SimpleNamespace(
271+
output=[{"type": "compaction", "encrypted_content": "enc"}],
272+
)
273+
mock_client = MagicMock()
274+
mock_client.responses.compact = AsyncMock(return_value=compacted)
275+
276+
session = OpenAIResponsesCompactionSession(
277+
session_id="demo",
278+
underlying_session=underlying,
279+
client=mock_client,
280+
should_trigger_compaction=lambda ctx: True,
281+
)
282+
283+
model = FakeModel(initial_output=[get_text_message("ok")])
284+
agent = Agent(name="assistant", model=model)
285+
286+
await Runner.run(agent, "hello", session=session)
287+
288+
mock_client.responses.compact.assert_awaited_once()
289+
items = await session.get_items()
290+
assert any(isinstance(item, dict) and item.get("type") == "compaction" for item in items)
256291

257292

258293
class TestTypeGuard:

0 commit comments

Comments
 (0)