diff options
Diffstat (limited to 'tests/fixtures.py')
| -rw-r--r-- | tests/fixtures.py | 63 |
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 |