From c7d74f75625c613e1064a6acc9069aebad2cd776 Mon Sep 17 00:00:00 2001 From: Vineeth Sai Date: Wed, 21 Oct 2026 09:31:18 -0700 Subject: [PATCH] test(streaming): pin that reasoning_items are concatenated across chunks The reasoning_items fix landed upstream. Its test puts every item in the last chunk, so an aggregation that read only the first or last chunk would still pass. Add one case with an item in each of two chunks and expect both, in order. --- .../test_streaming_chunk_builder_utils.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/tests/unit/litellm_core_utils/test_streaming_chunk_builder_utils.py b/tests/unit/litellm_core_utils/test_streaming_chunk_builder_utils.py index 5c56245cf33..32426f99d9b 100644 --- a/tests/unit/litellm_core_utils/test_streaming_chunk_builder_utils.py +++ b/tests/unit/litellm_core_utils/test_streaming_chunk_builder_utils.py @@ -2517,3 +2517,44 @@ def test_stream_chunk_builder_keeps_reasoning_items_on_text_only_replies(): assert response is not None assert response.choices[0].message.content == "Hello world" assert response.choices[0].message.reasoning_items == reasoning_items + + +def test_stream_chunk_builder_concatenates_reasoning_items_from_every_chunk(): + from litellm.types.utils import Delta, ModelResponseStream, StreamingChoices + + first: Final = {"type": "reasoning", "id": "rs_1", "summary": [], "encrypted_content": "enc_1"} + second: Final = {"type": "reasoning", "id": "rs_2", "summary": [], "encrypted_content": "enc_2"} + chunks: Final = [ + ModelResponseStream( + id="chatcmpl-rs", + created=1, + model="gpt-5.5", + object="chat.completion.chunk", + choices=[ + StreamingChoices( + finish_reason=None, + index=0, + delta=Delta(content="Hello", role="assistant", reasoning_items=[first]), + ) + ], + ), + ModelResponseStream( + id="chatcmpl-rs", + created=1, + model="gpt-5.5", + object="chat.completion.chunk", + choices=[ + StreamingChoices( + finish_reason="stop", + index=0, + delta=Delta(content=" world", role="assistant", reasoning_items=[second]), + ) + ], + ), + ] + + response: Final = stream_chunk_builder(chunks=list(chunks)) + + assert response is not None + assert response.choices[0].message.content == "Hello world" + assert response.choices[0].message.reasoning_items == [first, second]