Skip to content

Commit 29a6875

Browse files
committed
fix(gemini): update test_message_with_empty_content to match filtering behavior
Update test expectations to align with the implementation that filters out assistant messages with empty parts. Empty content assistant messages are now correctly expected to be removed rather than kept with empty parts lists.
1 parent bfe81c8 commit 29a6875

File tree

1 file changed

+15
-21
lines changed

1 file changed

+15
-21
lines changed

models/gemini/models/tests/test_llm.py

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -614,10 +614,10 @@ def test_empty_message_list(self):
614614
def test_message_with_empty_content(self):
615615
"""Test handling of messages with empty content
616616
617-
In Gemini message history, both empty parts list and empty string text parts
618-
for model messages are valid and won't cause communication errors.
617+
Assistant messages with empty parts are filtered out to avoid invalid requests.
618+
This ensures clean message history for Gemini API calls.
619619
"""
620-
# Test case 1: Assistant message with empty string content
620+
# Test case 1: Assistant message with empty string content is filtered out
621621
messages = [
622622
AssistantPromptMessage(content=""),
623623
UserPromptMessage(content="Hello"),
@@ -629,14 +629,12 @@ def test_message_with_empty_content(self):
629629
config=self.mock_config,
630630
)
631631

632-
# Empty string content creates an empty parts list, which is valid for Gemini
633-
assert len(contents) == 2
634-
assert contents[0].role == "model"
635-
assert contents[0].parts == [] # Empty parts list is valid
636-
assert contents[1].role == "user"
637-
assert contents[1].parts[0].text == "Hello"
632+
# Empty assistant message is filtered out, only user message remains
633+
assert len(contents) == 1
634+
assert contents[0].role == "user"
635+
assert contents[0].parts[0].text == "Hello"
638636

639-
# Test case 2: Assistant message with only thinking tags (results in empty content after removal)
637+
# Test case 2: Assistant message with only thinking tags is filtered out
640638
messages = [
641639
AssistantPromptMessage(content="<think>Internal thoughts only</think>"),
642640
UserPromptMessage(content="Hi"),
@@ -648,14 +646,12 @@ def test_message_with_empty_content(self):
648646
config=self.mock_config,
649647
)
650648

651-
# After removing thinking tags, content is empty - creates empty parts list
652-
assert len(contents) == 2
653-
assert contents[0].role == "model"
654-
assert contents[0].parts == [] # Empty parts list after thinking tag removal
655-
assert contents[1].role == "user"
656-
assert contents[1].parts[0].text == "Hi"
649+
# After removing thinking tags, content is empty and filtered out
650+
assert len(contents) == 1
651+
assert contents[0].role == "user"
652+
assert contents[0].parts[0].text == "Hi"
657653

658-
# Test case 3: Mixed empty and non-empty assistant messages
654+
# Test case 3: Empty assistant message is filtered, non-empty one is kept
659655
messages = [
660656
UserPromptMessage(content="Question"),
661657
AssistantPromptMessage(content=""),
@@ -669,14 +665,12 @@ def test_message_with_empty_content(self):
669665
config=self.mock_config,
670666
)
671667

672-
# Should have 3 contents - consecutive assistant messages are merged
668+
# Empty assistant message filtered out, remaining messages properly ordered
673669
assert len(contents) == 3
674670
assert contents[0].role == "user"
675671
assert contents[0].parts[0].text == "Question"
676672
assert contents[1].role == "model"
677-
assert (
678-
len(contents[1].parts) == 1
679-
) # Empty content doesn't add parts, only "Actual response" does
673+
assert len(contents[1].parts) == 1
680674
assert contents[1].parts[0].text == "Actual response"
681675
assert contents[2].role == "user"
682676
assert contents[2].parts[0].text == "Thanks"

0 commit comments

Comments
 (0)