diff --git a/tests/unittests/test_runners.py b/tests/unittests/test_runners.py index ca7eb37533..04b02a39c6 100644 --- a/tests/unittests/test_runners.py +++ b/tests/unittests/test_runners.py @@ -676,6 +676,36 @@ async def test_run_config_custom_metadata_propagates_to_events(): assert user_event.custom_metadata == {"request_id": "req-1"} +@pytest.mark.asyncio +async def test_run_async_assertions_use_refetched_session_snapshot(): + session_service = InMemorySessionService() + runner = Runner( + app_name=TEST_APP_ID, + agent=MockAgent("snapshot_agent"), + session_service=session_service, + artifact_service=InMemoryArtifactService(), + ) + created_session = await session_service.create_session( + app_name=TEST_APP_ID, user_id=TEST_USER_ID, session_id=TEST_SESSION_ID + ) + + async for _ in runner.run_async( + user_id=TEST_USER_ID, + session_id=TEST_SESSION_ID, + new_message=types.Content(role="user", parts=[types.Part(text="hi")]), + ): + pass + + # InMemorySessionService returns copies; the original handle is stale after run_async. + assert len(created_session.events) == 0 + + refreshed_session = await session_service.get_session( + app_name=TEST_APP_ID, user_id=TEST_USER_ID, session_id=TEST_SESSION_ID + ) + assert refreshed_session is not None + assert len(refreshed_session.events) > 0 + + class TestRunnerWithPlugins: """Tests for Runner with plugins."""