Files
planer/backend/tests/test_artefakte.py
2026-07-22 16:12:23 +02:00

66 lines
2.0 KiB
Python

"""Artefakt-Schicht: Merge, ergaenze-anker, Writer, Prüfungs-Gerüst."""
from pathlib import Path
import artefakte
FRAG_A = """## a.py::eins
beschreibung: Erste.
input: x
output: y
## a.py::zwei
beschreibung: Zweite.
"""
FRAG_NACHFASS = """ergaenze-anker: a.py::_helfer zu a.py::eins
## a.py::drei
beschreibung: Dritte.
"""
def test_merge_mit_nachfass():
rumpf = artefakte.merge_fragmente([FRAG_A, FRAG_NACHFASS])
assert rumpf.index("## a.py::eins") < rumpf.index("## a.py::zwei") < rumpf.index("## a.py::drei")
assert "anker: a.py::_helfer" in rumpf.split("## a.py::zwei")[0] # im eins-Block
assert "ergaenze-anker" not in rumpf
def test_merge_dubletten_fallen_weg():
rumpf = artefakte.merge_fragmente([FRAG_A, FRAG_A])
assert rumpf.count("## a.py::eins") == 1
def test_einheiten_datei_und_stand():
text = artefakte.einheiten_datei("a.py", "## a.py::eins\nbeschreibung: X.", "abc123")
assert text.startswith("# Einheiten: a.py\nstand: abc123\n")
assert artefakte.lese_stand(text) == "abc123"
def test_alle_ids():
text = "## a.py::eins\nanker: a.py::_helfer\n\n## a.py::zwei\n"
assert artefakte.alle_ids(text) == {"a.py::eins", "a.py::_helfer", "a.py::zwei"}
def test_datei_pfad():
assert artefakte.datei_pfad("backend/kanban.py") == "einheiten/backend__kanban.py.md"
def test_schreibe_planer(tmp_path):
pfade = artefakte.schreibe_planer(tmp_path, {"kern.md": "# Kern\n",
"einheiten/a.py.md": "# Einheiten: a.py\n"})
assert (tmp_path / ".planer" / "kern.md").read_text() == "# Kern\n"
assert len(pfade) == 2
def test_pruefung_geruest_mit_makefile(tmp_path):
(tmp_path / "Makefile").write_text("test:\n\tpytest\ndev:\n\tuvicorn\n")
text = artefakte.pruefung_geruest(tmp_path, "demo")
assert "tests: make test" in text and "start: make dev" in text
assert "lint: (keins vorhanden)" in text
def test_pruefung_geruest_ohne_alles(tmp_path):
text = artefakte.pruefung_geruest(tmp_path, "demo")
assert "tests: (keins vorhanden)" in text