Files
KiloStar/tests/unit/test_gsm_tool_manager.py
T
zhaoxi 99520c69d7 feat(system):优化后端
1.新增后端测试
2.增加了后端的加密
3.增加了i18n(国际化)
2026-05-31 15:39:34 +00:00

94 lines
3.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""``GlobalToolManager`` 在真实仓库目录上的扫描结果。
期望(基于现有 plugin 目录):
- approval / file_readeris_system=True,进 system toolset
- tavily_searchis_system=Falsecategory=search,进 third_party
"""
import pytest
from kilostar.core.global_state_machine.tool_manager import GlobalToolManager
@pytest.fixture(scope="module")
def manager() -> GlobalToolManager:
return GlobalToolManager()
def test_metadata_contains_known_plugins(manager: GlobalToolManager):
names = set(manager.tool_metadata.keys())
assert {"approval", "file_reader", "tavily_search"} <= names
def test_system_and_third_party_classification(manager: GlobalToolManager):
sys_tools = {m["name"] for m in manager.get_system_tools()}
tp_tools = {m["name"] for m in manager.get_third_party_tools()}
assert {"approval", "file_reader"} <= sys_tools
assert "tavily_search" in tp_tools
assert sys_tools.isdisjoint(tp_tools)
def test_get_tools_by_category_returns_correct_buckets(manager: GlobalToolManager):
by_system = {m["name"] for m in manager.get_tools_by_category("system")}
by_search = {m["name"] for m in manager.get_tools_by_category("search")}
assert {"approval", "file_reader"} <= by_system
assert "tavily_search" in by_search
def test_is_third_party_tool(manager: GlobalToolManager):
assert manager.is_third_party_tool("tavily_search") is True
assert manager.is_third_party_tool("approval") is False
assert manager.is_third_party_tool("nonexistent") is False
def test_get_toolsets_for_scope_returns_function_toolsets(manager: GlobalToolManager):
from pydantic_ai.toolsets import FunctionToolset
sets = manager.get_toolsets_for_scope("control_node")
assert sets, "control_node 应该至少有 system toolset"
for ts in sets:
assert isinstance(ts, FunctionToolset)
def test_system_toolsets_have_correct_ids(manager: GlobalToolManager):
sets = manager.get_toolsets_for_scope("consciousness_node")
ids = {getattr(ts, "id", None) for ts in sets}
for tid in ids:
assert tid.startswith("system::") or tid.startswith("custom::")
def test_no_mcp_category_in_metadata_for_local_plugins(manager: GlobalToolManager):
for m in manager.tool_metadata.values():
if m["category"] == "mcp":
assert m["name"] not in manager._third_party_funcs
for scope_funcs in manager._tool_funcs.values():
assert m["name"] not in scope_funcs
def test_unknown_scope_returns_only_default_and_custom(manager: GlobalToolManager):
sets = manager.get_toolsets_for_scope("not_a_real_scope")
for ts in sets:
tid = getattr(ts, "id", "")
assert tid.endswith("::default") or tid.startswith("custom::")
def test_rebuild_custom_toolsets(manager: GlobalToolManager):
custom_defs = {
"grp1": {"tools": ["tavily_search"], "name": "search-group"},
}
manager.rebuild_custom_toolsets(custom_defs)
assert "grp1" in manager._custom_toolsets
sets = manager.get_toolsets_for_scope("default")
custom_ids = [getattr(ts, "id", "") for ts in sets if "custom::" in getattr(ts, "id", "")]
assert any("grp1" in cid for cid in custom_ids)
manager.rebuild_custom_toolsets({})
assert manager._custom_toolsets == {}
def test_get_personal_tools_compat(manager: GlobalToolManager):
assert manager.get_personal_tools() == manager.get_third_party_tools()
def test_get_non_system_tools_compat(manager: GlobalToolManager):
assert manager.get_non_system_tools() == manager.get_third_party_tools()