aboutsummaryrefslogtreecommitdiffstats
path: root/tests/fixtures.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/fixtures.py')
-rw-r--r--tests/fixtures.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/tests/fixtures.py b/tests/fixtures.py
index 9b55c4b..52d5447 100644
--- a/tests/fixtures.py
+++ b/tests/fixtures.py
@@ -68,3 +68,66 @@ def simple_tree(root):
user("hola", at=ts(0, hour=8), cwd="/home/u/otro"),
])
return root
+
+
+# ──────────────────────────────── memorias ────────────────────────────────
+
+def write_memory(root, project_dir, name, body="cuerpo", desc=None,
+ kind="project", origin=None, frontmatter=True):
+ """Escribe <proyecto>/memory/<name>.md y devuelve su ruta."""
+ d = os.path.join(root, project_dir, "memory")
+ os.makedirs(d, exist_ok=True)
+ path = os.path.join(d, name + ".md")
+
+ partes = []
+ if frontmatter:
+ campos = ["---", f"name: {name}"]
+ if desc is not None:
+ campos.append(f"description: {desc}")
+ campos += ["metadata:", " node_type: memory", f" type: {kind}"]
+ if origin:
+ campos.append(f" originSessionId: {origin}")
+ campos.append("---")
+ partes.append("\n".join(campos))
+ partes.append(body)
+
+ with open(path, "w", encoding="utf-8") as f:
+ f.write("\n".join(partes) + "\n")
+ return path
+
+
+def write_index(root, project_dir, names, extra=()):
+ """Escribe el MEMORY.md que enlaza esos nombres."""
+ d = os.path.join(root, project_dir, "memory")
+ os.makedirs(d, exist_ok=True)
+ lines = ["# Memory Index", ""]
+ for n in list(names) + list(extra):
+ lines.append(f"- [{n}]({n}.md) — pista de {n}")
+ path = os.path.join(d, "MEMORY.md")
+ with open(path, "w", encoding="utf-8") as f:
+ f.write("\n".join(lines) + "\n")
+ return path
+
+
+def memory_tree(root):
+ """Memorias variadas: indexada, sin listar, y un proyecto sin índice."""
+ write_memory(root, "-home-u-proj", "deploy-docker",
+ body="Se despliega con `make up`.\nVer [[roles-db]] y [[no-existe]].",
+ desc="Cómo se despliega el proyecto",
+ origin="aaaaaaaa-0000-0000-0000-000000000001")
+ write_memory(root, "-home-u-proj", "roles-db", body="Roles de la base.",
+ desc="Roles", kind="reference")
+ write_memory(root, "-home-u-proj", "suelta", body="No está en el índice.",
+ desc="Huérfana")
+ # El índice lista dos reales y una que ya no existe.
+ write_index(root, "-home-u-proj", ["deploy-docker", "roles-db"],
+ extra=["borrada-hace-rato"])
+
+ # Otro proyecto con memoria pero sin MEMORY.md.
+ write_memory(root, "-home-u-otro", "sin-indice", body="Nadie me indexa.",
+ desc="Sin índice", kind="user",
+ origin="ffffffff-0000-0000-0000-00000000000f")
+
+ # Un memory/ vacío no cuenta como proyecto con memoria.
+ os.makedirs(os.path.join(root, "-home-u-vacio", "memory"), exist_ok=True)
+ return root