oclaw/tests/test_memory_wiki_tools_loader.py
oliver 420abac9f1 refactor: root-package imports (svc/runtime/interfaces) and fix PYTHONPATH
- Rename platform/ to svc/ to avoid shadowing stdlib platform.
- Replace from oclaw.* with from svc/runtime/interfaces; update -m CLI paths.
- tests/conftest: prepend repo root to sys.path (no parent-folder package name).
- CI: paths and offline_eval script under repo root.
- Ops scripts: PYTHONPATH must be repo root for python -m runtime.* (fixes gateway/WhatsApp sidecar startup).
- Fix default oclaw.json path in tabular/file attachment limits; stabilize attachment test config.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-13 14:51:17 +08:00

59 lines
2.1 KiB
Python

from __future__ import annotations
from pathlib import Path
from svc.config.paths import PROJECT_ROOT
from runtime.tools.public.memory_wiki_tools import (
memory_wiki_apply_tool,
memory_wiki_get_tool,
memory_wiki_lint_tool,
memory_wiki_search_tool,
memory_wiki_status_tool,
)
def test_memory_wiki_tools_handlers_load_without_dataclass_module_error() -> None:
status = memory_wiki_status_tool().handler({})
assert isinstance(status, dict)
assert "AttributeError" not in str(status.get("error", ""))
assert "__dict__" not in str(status.get("error", ""))
search = memory_wiki_search_tool().handler({"query": "test"})
assert isinstance(search, dict)
assert "AttributeError" not in str(search.get("error", ""))
assert "__dict__" not in str(search.get("error", ""))
get_res = memory_wiki_get_tool().handler({"path": "improvement/learnings.md"})
assert isinstance(get_res, dict)
assert "AttributeError" not in str(get_res.get("error", ""))
assert "__dict__" not in str(get_res.get("error", ""))
lint = memory_wiki_lint_tool().handler({})
assert isinstance(lint, dict)
assert "AttributeError" not in str(lint.get("error", ""))
assert "__dict__" not in str(lint.get("error", ""))
apply_res = memory_wiki_apply_tool().handler({"action": "delete", "path": "improvement/_nonexistent_test_.md"})
assert isinstance(apply_res, dict)
assert "AttributeError" not in str(apply_res.get("error", ""))
assert "__dict__" not in str(apply_res.get("error", ""))
def test_memory_wiki_tools_accept_relative_prefixed_and_absolute_paths() -> None:
wiki_root = (PROJECT_ROOT / "data" / "wiki").resolve()
rel = Path("improvement") / "learnings.md"
abs_path = str((wiki_root / rel).resolve())
prefixed_rel = str(Path("data/wiki") / rel)
# Relative
r1 = memory_wiki_get_tool().handler({"path": str(rel)})
assert r1.get("ok") is True
# Prefixed by "data/wiki/..."
r2 = memory_wiki_get_tool().handler({"path": prefixed_rel})
assert r2.get("ok") is True
# Absolute path under wiki_root
r3 = memory_wiki_get_tool().handler({"path": abs_path})
assert r3.get("ok") is True