Fix failing test

This commit is contained in:
Kunal Karmakar 2026-03-31 09:22:50 +00:00 committed by Xubin Ren
parent 76226274bf
commit 61d7411238

View File

@ -1,9 +1,8 @@
"""Tests for the shared openai_responses_common converters and parsers.""" """Tests for the shared openai_responses_common converters and parsers."""
from unittest.mock import MagicMock from unittest.mock import MagicMock, patch
import pytest import pytest
from loguru import logger
from nanobot.providers.base import LLMResponse, ToolCallRequest from nanobot.providers.base import LLMResponse, ToolCallRequest
from nanobot.providers.openai_responses_common.converters import ( from nanobot.providers.openai_responses_common.converters import (
@ -19,15 +18,6 @@ from nanobot.providers.openai_responses_common.parsing import (
) )
@pytest.fixture()
def loguru_capture():
"""Capture loguru messages into a list for assertion."""
messages: list[str] = []
handler_id = logger.add(lambda m: messages.append(str(m)), format="{message}", level="DEBUG")
yield messages
logger.remove(handler_id)
# ====================================================================== # ======================================================================
# converters — split_tool_call_id # converters — split_tool_call_id
# ====================================================================== # ======================================================================
@ -332,7 +322,7 @@ class TestParseResponseOutput:
assert result.tool_calls[0].arguments == {"city": "SF"} assert result.tool_calls[0].arguments == {"city": "SF"}
assert result.tool_calls[0].id == "call_1|fc_1" assert result.tool_calls[0].id == "call_1|fc_1"
def test_malformed_tool_arguments_logged(self, loguru_capture): def test_malformed_tool_arguments_logged(self):
"""Malformed JSON arguments should log a warning and fallback.""" """Malformed JSON arguments should log a warning and fallback."""
resp = { resp = {
"output": [{ "output": [{
@ -342,9 +332,11 @@ class TestParseResponseOutput:
}], }],
"status": "completed", "usage": {}, "status": "completed", "usage": {},
} }
result = parse_response_output(resp) with patch("nanobot.providers.openai_responses_common.parsing.logger") as mock_logger:
result = parse_response_output(resp)
assert result.tool_calls[0].arguments == {"raw": "{bad json"} assert result.tool_calls[0].arguments == {"raw": "{bad json"}
assert any("Failed to parse tool call arguments" in m for m in loguru_capture) mock_logger.warning.assert_called_once()
assert "Failed to parse tool call arguments" in str(mock_logger.warning.call_args)
def test_reasoning_content_extracted(self): def test_reasoning_content_extracted(self):
resp = { resp = {
@ -507,7 +499,7 @@ class TestConsumeSdkStream:
await consume_sdk_stream(stream()) await consume_sdk_stream(stream())
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_malformed_tool_args_logged(self, loguru_capture): async def test_malformed_tool_args_logged(self):
"""Malformed JSON in streaming tool args should log a warning.""" """Malformed JSON in streaming tool args should log a warning."""
item_added = MagicMock(type="function_call", call_id="c1", id="fc1", arguments="") item_added = MagicMock(type="function_call", call_id="c1", id="fc1", arguments="")
item_added.name = "f" item_added.name = "f"
@ -523,6 +515,8 @@ class TestConsumeSdkStream:
for e in [ev1, ev2, ev3, ev4]: for e in [ev1, ev2, ev3, ev4]:
yield e yield e
_, tool_calls, _, _, _ = await consume_sdk_stream(stream()) with patch("nanobot.providers.openai_responses_common.parsing.logger") as mock_logger:
_, tool_calls, _, _, _ = await consume_sdk_stream(stream())
assert tool_calls[0].arguments == {"raw": "{bad"} assert tool_calls[0].arguments == {"raw": "{bad"}
assert any("Failed to parse tool call arguments" in m for m in loguru_capture) mock_logger.warning.assert_called_once()
assert "Failed to parse tool call arguments" in str(mock_logger.warning.call_args)