"""``utils.get_tool`` 在真实仓库目录上的加载行为。""" from kilostar.utils import get_tool from kilostar.utils.get_tool import ( _get_tool_func, del_tool_cache, load_tools_from_list, ) def setup_function(_func): """每个测试前清空模块级缓存,避免相互影响。""" get_tool._tool_cache.clear() def test_load_existing_tool_via_load_tools_from_list(): tools = load_tools_from_list(["file_reader"]) assert len(tools) == 1 assert tools[0].__name__ == "file_reader" def test_loader_caches_function(): f1 = _get_tool_func("file_reader") f2 = _get_tool_func("file_reader") assert f1 is f2 assert "file_reader" in get_tool._tool_cache def test_del_tool_cache_removes_entry(): _get_tool_func("file_reader") assert "file_reader" in get_tool._tool_cache del_tool_cache("file_reader") assert "file_reader" not in get_tool._tool_cache def test_load_unknown_tool_returns_none_and_keeps_others(): tools = load_tools_from_list(["file_reader", "definitely_not_exist"]) assert len(tools) == 1 assert tools[0].__name__ == "file_reader" def test_load_tools_from_list_handles_none_and_empty(): assert load_tools_from_list(None) == [] assert load_tools_from_list([]) == []