oclaw/tests/test_oclaw_startup_workspace_resolution.py
oliver 9d2900db02 完成运行时与启动链路的全面相对路径整改,统一以仓库根为路径基准并移除 oclaw 双层硬编码。
同时补齐路径回归测试与开源自检文档,确保从非仓库 cwd 启动时 workspace 根、配置和 wiki 路径仍稳定可用。

Made-with: Cursor
2026-04-26 09:22:42 +08:00

39 lines
1.5 KiB
Python

from __future__ import annotations
from oclaw.platform.config.paths import PROJECT_ROOT
from oclaw.interfaces.http.fastapi_app import _resolve_startup_workspace_dir, _resolve_startup_workspace_dirs
def test_resolve_startup_workspace_dir_from_agents_default() -> None:
cfg = {
"agents": {
"list": [
{"id": "main", "default": True, "workspace": "D:/project/chatgpt/oclaw/workspace-main"},
{"id": "social", "workspace": "D:/project/chatgpt/oclaw/workspace-social"},
]
}
}
got = _resolve_startup_workspace_dir(cfg)
assert got.replace("\\", "/").endswith("/oclaw/workspace-main")
def test_resolve_startup_workspace_dirs_all_agents() -> None:
cfg = {
"agents": {
"list": [
{"id": "main", "default": True, "workspace": "D:/project/chatgpt/oclaw/workspace-main"},
{"id": "social", "workspace": "D:/project/chatgpt/oclaw/workspace-social"},
]
}
}
got = _resolve_startup_workspace_dirs(cfg)
got_norm = [(aid, ws.replace("\\", "/")) for aid, ws in got]
assert ("main", "D:/project/chatgpt/oclaw/workspace-main") in got_norm
assert ("social", "D:/project/chatgpt/oclaw/workspace-social") in got_norm
def test_resolve_startup_workspace_dir_fallback_to_repo_runtime_main() -> None:
got = _resolve_startup_workspace_dir({})
expect = str((PROJECT_ROOT / "runtime" / "workspaces" / "main").resolve()).replace("\\", "/")
assert got.replace("\\", "/") == expect