Skip to content

Commit b04532c

Browse files
committed
Add test for vendor_part_id=None to achieve 100% coverage
1 parent ed5f056 commit b04532c

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

tests/test_parts_manager.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,27 @@ def test_handle_text_deltas_with_split_tags_and_interleaved_content():
338338
)
339339

340340

341+
def test_handle_text_deltas_with_split_tags_no_vendor_id():
342+
"""Test that potential tag handling works when vendor_part_id is None."""
343+
manager = ModelResponsePartsManager()
344+
thinking_tags = ('<think>', '</think>')
345+
346+
# When vendor_part_id is None and content could be start of tag, no event is returned
347+
# but we can't buffer (no vendor_part_id to store under)
348+
event = manager.handle_text_delta(vendor_part_id=None, content='<thi', thinking_tags=thinking_tags)
349+
# Returns None because it might be a tag start
350+
assert event is None
351+
# But no part is created yet (can't buffer without vendor_part_id)
352+
assert manager.get_parts() == snapshot([])
353+
354+
# Next chunk shows it's not a tag, process as normal
355+
event = manager.handle_text_delta(vendor_part_id=None, content='s is text', thinking_tags=thinking_tags)
356+
assert event == snapshot(
357+
PartStartEvent(index=0, part=TextPart(content='s is text', part_kind='text'), event_kind='part_start')
358+
)
359+
assert manager.get_parts() == snapshot([TextPart(content='s is text', part_kind='text')])
360+
361+
341362
def test_handle_tool_call_deltas():
342363
manager = ModelResponsePartsManager()
343364

0 commit comments

Comments
 (0)