update
This commit is contained in:
@@ -313,7 +313,7 @@ async def test_reparieren_bewegt_false_bei_identischem_text(monkeypatch):
|
||||
b_id = db.insert("bausteine", topic=topic, ziel_id=ziel, titel="B", ord=0, status="neu")
|
||||
a = db.insert("atome", topic=topic, titel="A", typ="begriff", definition="d",
|
||||
status="neu", baustein_id=b_id, braucht=db.j([]))
|
||||
lang = f"<!-- atom: {a} | A -->\n" + "Wort " * 60
|
||||
lang = f"<!-- atom: {a} | A -->\n" + ("Wort " * 60).strip() # ohne Trailing-Space
|
||||
db.insert("sections", baustein_id=b_id, stage="fix", text_lang=lang,
|
||||
text_kompakt="- p", befunde=db.j(["Behebe (laenge): kürzen"]))
|
||||
monkeypatch.setitem(fake_agents._HANDLER, "Guide-Fix",
|
||||
@@ -366,6 +366,20 @@ def test_split_writer_delimited_und_fallback():
|
||||
assert guide._split_writer("nur text")[1] == "nur text"
|
||||
|
||||
|
||||
def test_writer_saeubern_terminator():
|
||||
import guide
|
||||
# geleakter `=====`-Terminator (Setext-H1 unter Bullet) + </s> raus
|
||||
roh = "- $M$ gilt\n\n$$L \\in NP$$\n- Für jedes $L$ gilt\n=====\n</s>"
|
||||
sauber = guide._writer_saeubern(roh)
|
||||
assert "=====" not in sauber and "</s>" not in sauber
|
||||
assert sauber.endswith("- Für jedes $L$ gilt")
|
||||
# _split_writer säubert den kompakt-Block (letzter Block fängt sonst das =====)
|
||||
k, l = guide._split_writer("===LANG===\nText\n===KOMPAKT===\n- a\n- b\n=====\n</s>")
|
||||
assert k == "- a\n- b" and l == "Text"
|
||||
# Tabellen-Trenner (---) bleibt unangetastet
|
||||
assert "---" in guide._writer_saeubern("| A | B |\n|---|---|\n| 1 | 2 |")
|
||||
|
||||
|
||||
async def test_fix_cap_friert_section_ein(monkeypatch):
|
||||
"""Nach FIX_MAX_VERSUCHE erfolglosen Fixes (Text unverändert) wird die Section
|
||||
für Stil-Befunde eingefroren → reparieren meldet bewegt=False (Stillstand)."""
|
||||
@@ -388,3 +402,25 @@ async def test_fix_cap_friert_section_ein(monkeypatch):
|
||||
bewegt = await guide.reparieren(
|
||||
ctx, [{"art": "det_check", "item": str(b), "detail": "Kürzen"}])
|
||||
assert bewegt is False # eingefroren → nicht geroutet → kein Fortschritt
|
||||
|
||||
|
||||
async def test_marker_platzieren_deterministisch():
|
||||
"""Der Writer setzt keine Beispiel-Marker mehr — _marker_platzieren fügt sie
|
||||
hinter den Atom-Absatz ein (atom-genau)."""
|
||||
import db
|
||||
import guide
|
||||
from conftest import topic_anlegen
|
||||
topic = topic_anlegen("platz")
|
||||
b = db.insert("bausteine", topic=topic, ziel_id=1, titel="B", ord=0, status="neu")
|
||||
a = db.insert("atome", topic=topic, titel="X", typ="begriff", definition="d",
|
||||
status="neu", baustein_id=b, ord=0, braucht=db.j([]))
|
||||
art = db.insert("artefakte", atom_id=a, typ="beispiel", status="verifiziert",
|
||||
inhalt=db.j({"form": "tabelle", "tabelle": "| A | B |\n|---|---|\n| 1 | 2 |"}))
|
||||
lang = f"#### X\n<!-- atom: {a} | X -->\nErklärung von X.\n\nWeiterer Absatz zum Thema."
|
||||
out = guide._marker_platzieren(db.one("SELECT * FROM bausteine WHERE id=?", (b,)), lang)
|
||||
assert f"<!-- beispiel: {art} -->" in out
|
||||
# der Marker steht NACH dem Atom-Absatz
|
||||
assert out.index("<!-- beispiel:") < out.index("Weiterer Absatz")
|
||||
# idempotent: zweiter Lauf dupliziert nicht
|
||||
assert guide._marker_platzieren(db.one("SELECT * FROM bausteine WHERE id=?", (b,)),
|
||||
out).count("<!-- beispiel:") == 1
|
||||
|
||||
Reference in New Issue
Block a user