mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-04-02 09:22:36 +00:00
Fix failing test
This commit is contained in:
parent
76226274bf
commit
61d7411238
@ -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)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user