- Strip '_tools' suffix from internal toolset identifiers in the banner (e.g. 'web_tools' -> 'web', 'homeassistant_tools' -> 'homeassistant') - Stop appending '_tools' to unavailable toolset names - Replace 6 hardcoded hex colors (#B8860B, #FFBF00, #FFF8DC) in toolset rows, overflow line, and MCP server rows with the skin variables (dim, accent, text) already resolved at the top of the function Inspired by PR #1871 by @kshitijk4poor. Adds 4 tests.
71 lines
2.4 KiB
Python
71 lines
2.4 KiB
Python
"""Tests for banner toolset name normalization and skin color usage."""
|
|
|
|
from unittest.mock import patch
|
|
|
|
from rich.console import Console
|
|
|
|
import hermes_cli.banner as banner
|
|
import model_tools
|
|
import tools.mcp_tool
|
|
|
|
|
|
def test_display_toolset_name_strips_legacy_suffix():
|
|
assert banner._display_toolset_name("homeassistant_tools") == "homeassistant"
|
|
assert banner._display_toolset_name("honcho_tools") == "honcho"
|
|
assert banner._display_toolset_name("web_tools") == "web"
|
|
|
|
|
|
def test_display_toolset_name_preserves_clean_names():
|
|
assert banner._display_toolset_name("browser") == "browser"
|
|
assert banner._display_toolset_name("file") == "file"
|
|
assert banner._display_toolset_name("terminal") == "terminal"
|
|
|
|
|
|
def test_display_toolset_name_handles_empty():
|
|
assert banner._display_toolset_name("") == "unknown"
|
|
assert banner._display_toolset_name(None) == "unknown"
|
|
|
|
|
|
def test_build_welcome_banner_uses_normalized_toolset_names():
|
|
"""Unavailable toolsets should not have '_tools' appended in banner output."""
|
|
with (
|
|
patch.object(
|
|
model_tools,
|
|
"check_tool_availability",
|
|
return_value=(
|
|
["web"],
|
|
[
|
|
{"name": "homeassistant", "tools": ["ha_call_service"]},
|
|
{"name": "honcho", "tools": ["honcho_conclude"]},
|
|
],
|
|
),
|
|
),
|
|
patch.object(banner, "get_available_skills", return_value={}),
|
|
patch.object(banner, "get_update_result", return_value=None),
|
|
patch.object(tools.mcp_tool, "get_mcp_status", return_value=[]),
|
|
):
|
|
console = Console(
|
|
record=True, force_terminal=False, color_system=None, width=160
|
|
)
|
|
banner.build_welcome_banner(
|
|
console=console,
|
|
model="anthropic/test-model",
|
|
cwd="/tmp/project",
|
|
tools=[
|
|
{"function": {"name": "web_search"}},
|
|
{"function": {"name": "read_file"}},
|
|
],
|
|
get_toolset_for_tool=lambda name: {
|
|
"web_search": "web_tools",
|
|
"read_file": "file",
|
|
}.get(name),
|
|
)
|
|
|
|
output = console.export_text()
|
|
assert "homeassistant:" in output
|
|
assert "honcho:" in output
|
|
assert "web:" in output
|
|
assert "homeassistant_tools:" not in output
|
|
assert "honcho_tools:" not in output
|
|
assert "web_tools:" not in output
|