66 lines
2.0 KiB
Python
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
|