69 lines
2.8 KiB
Python
69 lines
2.8 KiB
Python
from pathlib import Path
|
|
import importlib.util
|
|
import unittest
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parent.parent
|
|
SCRIPT_PATH = ROOT / "scripts" / "mempalace_ezra_integration.py"
|
|
DOC_PATH = ROOT / "docs" / "MEMPALACE_EZRA_INTEGRATION.md"
|
|
|
|
|
|
def load_module(path: Path, name: str):
|
|
assert path.exists(), f"missing {path.relative_to(ROOT)}"
|
|
spec = importlib.util.spec_from_file_location(name, path)
|
|
assert spec and spec.loader
|
|
module = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(module)
|
|
return module
|
|
|
|
|
|
class TestMempalaceEzraIntegration(unittest.TestCase):
|
|
def test_build_plan_contains_issue_required_steps_and_gotchas(self):
|
|
mod = load_module(SCRIPT_PATH, "mempalace_ezra_integration")
|
|
plan = mod.build_plan({})
|
|
|
|
self.assertEqual(plan["package_spec"], "mempalace==3.0.0")
|
|
self.assertIn("pip install mempalace==3.0.0", plan["install_command"])
|
|
self.assertEqual(plan["wing"], "ezra_home")
|
|
self.assertIn('echo "" | mempalace mine ~/.hermes/', plan["mine_home_command"])
|
|
self.assertIn('--mode convos', plan["mine_sessions_command"])
|
|
self.assertIn('mempalace wake-up', plan["wake_up_command"])
|
|
self.assertIn('hermes mcp add mempalace -- python -m mempalace.mcp_server', plan["mcp_command"])
|
|
self.assertIn('wing:', plan["yaml_template"])
|
|
self.assertTrue(any('stdin' in item.lower() for item in plan["gotchas"]))
|
|
self.assertTrue(any('wing:' in item for item in plan["gotchas"]))
|
|
|
|
def test_build_plan_accepts_path_and_wing_overrides(self):
|
|
mod = load_module(SCRIPT_PATH, "mempalace_ezra_integration")
|
|
plan = mod.build_plan(
|
|
{
|
|
"hermes_home": "/root/wizards/ezra/home",
|
|
"sessions_dir": "/root/wizards/ezra/home/sessions",
|
|
"wing": "ezra_archive",
|
|
}
|
|
)
|
|
|
|
self.assertEqual(plan["wing"], "ezra_archive")
|
|
self.assertIn('/root/wizards/ezra/home', plan["mine_home_command"])
|
|
self.assertIn('/root/wizards/ezra/home/sessions', plan["mine_sessions_command"])
|
|
self.assertIn('wing: ezra_archive', plan["yaml_template"])
|
|
|
|
def test_repo_contains_mem_palace_ezra_doc(self):
|
|
self.assertTrue(DOC_PATH.exists(), "missing committed MemPalace Ezra integration doc")
|
|
text = DOC_PATH.read_text(encoding="utf-8")
|
|
required = [
|
|
"# MemPalace v3.0.0 — Ezra Integration Packet",
|
|
"pip install mempalace==3.0.0",
|
|
'echo "" | mempalace mine ~/.hermes/',
|
|
"mempalace mine ~/.hermes/sessions/ --mode convos",
|
|
"mempalace wake-up",
|
|
"hermes mcp add mempalace -- python -m mempalace.mcp_server",
|
|
"Report back to #568",
|
|
]
|
|
for snippet in required:
|
|
self.assertIn(snippet, text)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|