mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-17 12:03:20 +08:00
初始化:独立 oclaw 仓库首提交
- 在 oclaw/ 下重新初始化 Git 仓库 - 补齐子仓库 .gitignore,避免提交本地运行态数据(_local、node_modules、logs 等) - 提交当前工程代码与配置 Made-with: Cursor
This commit is contained in:
commit
ba3836f00f
579 changed files with 83112 additions and 0 deletions
53
tests/test_mcp_installer.py
Normal file
53
tests/test_mcp_installer.py
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
|
||||
from oclaw.tools.mcp.installer import (
|
||||
_safe_server_id,
|
||||
detect_local_dependencies,
|
||||
install_mcp_server,
|
||||
preflight_mcp_server,
|
||||
uninstall_mcp_server,
|
||||
)
|
||||
from oclaw.tools.mcp.manifest import McpServerManifest
|
||||
|
||||
|
||||
class McpInstallerTests(unittest.TestCase):
|
||||
def test_safe_server_id(self) -> None:
|
||||
self.assertEqual(_safe_server_id("Hello World/Repo"), "hello-world-repo")
|
||||
|
||||
def test_install_dry_run(self) -> None:
|
||||
m = McpServerManifest(server_id="x", source_type="npm", source_ref="demo-server", version="1.0.0")
|
||||
res = install_mcp_server(m, dry_run=True)
|
||||
self.assertTrue(res.ok)
|
||||
self.assertIn(" install -g ", res.install_command)
|
||||
self.assertIn("demo-server@1.0.0", res.install_command)
|
||||
|
||||
def test_invalid_source(self) -> None:
|
||||
m = McpServerManifest(server_id="x", source_type="invalid", source_ref="x")
|
||||
res = install_mcp_server(m, dry_run=True)
|
||||
self.assertFalse(res.ok)
|
||||
self.assertEqual(res.error_code, "mcp_invalid_source")
|
||||
|
||||
def test_uninstall_dry_run(self) -> None:
|
||||
m = McpServerManifest(server_id="x", source_type="npm", source_ref="demo-server")
|
||||
res = uninstall_mcp_server(m, dry_run=True)
|
||||
self.assertTrue(res.ok)
|
||||
self.assertIn(" uninstall -g ", res.install_command)
|
||||
|
||||
def test_preflight_missing_entry(self) -> None:
|
||||
m = McpServerManifest(server_id="x", source_type="npm", source_ref="demo", entry_command="")
|
||||
res = preflight_mcp_server(m)
|
||||
self.assertFalse(res["ok"])
|
||||
self.assertEqual(res["error_code"], "mcp_entry_missing")
|
||||
self.assertTrue(isinstance(res.get("fix_suggestions"), list))
|
||||
|
||||
def test_detect_local_dependencies_shape(self) -> None:
|
||||
rows = detect_local_dependencies()
|
||||
self.assertTrue(isinstance(rows, list))
|
||||
self.assertTrue(all(isinstance(x, dict) for x in rows))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue