Odisej / tests /test_agent_tools_truncate_nonstring.py
Nerdur's picture
🔄 Sync batch 4/7: code + text files from GitHub
1150ad9 verified
Raw
History Blame Contribute Delete
817 Bytes
"""Regression: agent_tools._truncate must always return a string.
It did `len(text)` directly, so `_truncate(None)` raised TypeError. Returning
the raw non-string just moves the crash downstream (callers treat it as text),
so non-strings are now coerced to a string and still truncated.
"""
from src.agent_tools import _truncate
def test_non_string_coerced_to_string():
assert _truncate(None) == ""
assert _truncate(123) == "123"
assert isinstance(_truncate({"a": 1}), str)
def test_non_string_is_also_truncated():
out = _truncate(12345, limit=3)
assert out.startswith("123") and "truncated" in out
def test_string_truncation_unchanged():
assert _truncate("hello", limit=100) == "hello"
out = _truncate("x" * 50, limit=10)
assert out.startswith("x" * 10) and "truncated" in out