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