"""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