Files
odysseus/tests/test_skills_cli_preview.py
Alexandre Teixeira 43a101d305 refactor(tests): finish shared CLI loader adoption
Test-only refactor continuing #2523. Replaces remaining obvious CLI/script loader boilerplate with tests.helpers.cli_loader.load_script while preserving existing stubs and assertions.
2026-06-05 06:00:05 +01:00

33 lines
1.1 KiB
Python

"""Regression: the skills CLI summary must tolerate a non-string description.
`_summary` did `(skill.get("description") or "")[:200]`. A non-string
description (e.g. a number from a hand-edited/legacy skill store) is truthy, so
`123[:200]` raised TypeError. `_preview_text` coerces non-strings to "".
"""
import sys
import types
from unittest.mock import MagicMock
from tests.helpers.cli_loader import load_script
def _load_cli(monkeypatch):
mod = types.ModuleType("services.memory.skills")
mod.SkillsManager = MagicMock()
monkeypatch.setitem(sys.modules, "services.memory.skills", mod)
return load_script("odysseus-skills")
def test_preview_text_ignores_non_string(monkeypatch):
cli = _load_cli(monkeypatch)
assert cli._preview_text(None) == ""
assert cli._preview_text(123) == ""
assert cli._preview_text({"x": 1}) == ""
assert cli._preview_text("y" * 250) == "y" * 200
def test_summary_does_not_crash_on_non_string_description(monkeypatch):
cli = _load_cli(monkeypatch)
out = cli._summary({"name": "n", "description": 123})
assert out["description"] == ""