mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-08-04 16:38:49 +00:00
35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
import inspect
|
|
|
|
|
|
def test_sanitize_persisted_blocks_truncate_text_shadowing_regression() -> None:
|
|
"""Regression: avoid bool param shadowing imported truncate_text.
|
|
|
|
Buggy behavior (historical):
|
|
- loop.py imports `truncate_text` from helpers
|
|
- `_sanitize_persisted_blocks(..., truncate_text: bool=...)` uses same name
|
|
- when called with `truncate_text=True`, function body executes `truncate_text(text, ...)`
|
|
which resolves to bool and raises `TypeError: 'bool' object is not callable`.
|
|
|
|
This test asserts the fixed API exists and truncation works without raising.
|
|
"""
|
|
|
|
from nanobot.session.turn_history import sanitize_persisted_blocks
|
|
|
|
sig = inspect.signature(sanitize_persisted_blocks)
|
|
assert "should_truncate_text" in sig.parameters
|
|
assert "truncate_text" not in sig.parameters
|
|
|
|
content = [{"type": "text", "text": "0123456789"}]
|
|
|
|
out = sanitize_persisted_blocks(
|
|
content,
|
|
max_tool_result_chars=5,
|
|
runtime_context_tag="[runtime]",
|
|
should_truncate_text=True,
|
|
)
|
|
assert isinstance(out, list)
|
|
assert out and out[0]["type"] == "text"
|
|
assert isinstance(out[0]["text"], str)
|
|
assert out[0]["text"] != content[0]["text"]
|
|
|