Tests + Bau-Pfad-Alert: 4 Baseline-Failures behoben

test_export_separatorliste.py (2 Failures, KeyError 'Separatorlist'): der Test
pruefte noch das alte Merkmal "Separatorlist" (nur SEP-Eintraege). write_
separatorliste_merkmale fuellt seit dem Umbau das Top-Level-Feld item["trackids"]
(CSV-Spalte "TrackIds") mit AS + Separatoren + ES in Baureihenfolge. Tests auf
die neue API/Semantik angepasst (empirisch verifiziert: "0054, 0052, 0053, 0055").

vf_linienzug.lsp - echter Fund des statischen Waechters: vfl-body-abschluss
setzte am "Kettenende nicht baubar"-Zweig ein (alert ...) im BAU-Pfad (blockiert
Batch/Headless). Auf vfl-meldung umgestellt (zeigt alert nur bei erlaubter GUI,
sonst princ) - genau die Regel, die der Waechter erzwingt.

test_vf_headless_statisch.py (2 Failures): Soll-Inventar an den aktuellen Code
angeglichen - 18 legitime neue Wizard-/Frage-Dialoge (vflw-gruppe-*-impl,
vflw-m2-*-impl, vfl-frage-ist-*) + vfl-ks-aus-hz-an-punkt (ssget, Zeichnung
durchsuchen) ergaenzt, vflw-gruppe-horizontal-impl entfernt (weg im Code),
vfl-edit-ent auf alert:2 (linienzug2-Abweisung, harter Schnitt).

Suite: 11 -> 7 failed. Verbleibend NICHT hier: test_hundm05.py (auf Wunsch
ausgenommen) + test_vf_geometrie.py (6x, gebautes HundM05-DXF weicht von der
Referenz ab - braucht fachliches Urteil ueber die neue Geometrie, nicht blind
die Referenz ueberschreiben). 243/243 LISP-Unit-Tests gruen.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Michael Stangl
2026-09-18 21:30:14 +02:00
co-authored by Claude Opus 4.8
parent 8be256fb5a
commit 0babf78789
3 changed files with 40 additions and 12 deletions
+6 -4
View File
@@ -5279,11 +5279,13 @@
(t (ssg-textf "vfl-vorschlag-nur-auf" (list (rtos hoehe-auf 2 0))))))))
(princ (ssg-textf "vfl-fehler-rest-nicht-baubar-ohne-vorschlag"
(list (rtos hn 2 0) (rtos dL 2 0) (rtos dH 2 0) richtn))))
;; Kurze 2-Punkte-Zusammenfassung zusaetzlich als Alert-Popup (nicht
;; nur im Konsolen-Log) - zweiter Punkt nur, wenn Stufe 2 ueberhaupt
;; Kurze 2-Punkte-Zusammenfassung zusaetzlich als Meldung (nicht nur
;; im Konsolen-Log) - zweiter Punkt nur, wenn Stufe 2 ueberhaupt
;; versucht wurde (siehe *vfl-stufe2-min*-vorschlag*, von
;; vfl-stufe2-diagnose gesetzt).
(alert
;; vfl-stufe2-diagnose gesetzt). vfl-meldung statt alert: im Bau-Pfad
;; darf keine modale Box einen Batch-/Headless-Lauf blockieren (zeigt
;; das Alert nur bei erlaubter GUI, sonst princ - siehe vfl-meldung).
(vfl-meldung
(strcat
(ssg-textf "vfl-alert-kettenende-p1" (list (rtos dL 2 0) (rtos dH 2 0) richtn))
(cond
+11 -5
View File
@@ -99,10 +99,15 @@ class TestSeparatorlisteMerkmal:
write_separatorliste_merkmale(items, sep_kette_by_key)
# write_separatorliste_merkmale fuellt seit dem Umbau das Top-Level-Feld
# item["trackids"] (CSV-Spalte "TrackIds") mit AS-Ende + Separatoren +
# ES-Ende in Baureihenfolge - NICHT mehr das Merkmal "Separatorlist" mit
# nur den SEP-Eintraegen. AS/ES bekommen ueber build_strecke_schleus_items
# eigene TeileIds (hier 0054/0055), die SEP-Proxies sind 0052/0053.
strecke = next(it for it in items if it.get("teileid") == "0010")
assert strecke["merkmale"]["Separatorlist"] == "0052, 0053", (
f'Separatorlist = {strecke["merkmale"].get("Separatorlist")!r}, '
f'erwartet "0052, 0053" (Baureihenfolge, AS/ES ausgeschlossen)')
assert strecke.get("trackids") == "0054, 0052, 0053, 0055", (
f'trackids = {strecke.get("trackids")!r}, '
f'erwartet "0054, 0052, 0053, 0055" (AS, SEP, SEP, ES in Baureihenfolge)')
def test_vertauschte_proxy_reihenfolge_in_items_aendert_nichts(self):
"""Die Reihenfolge in "items" (bzw. in welcher Reihenfolge die Proxy-
@@ -127,15 +132,16 @@ class TestSeparatorlisteMerkmal:
write_separatorliste_merkmale(items, sep_kette_by_key)
strecke = next(it for it in items if it.get("teileid") == "0010")
assert strecke["merkmale"]["Separatorlist"] == "0052, 0053"
assert strecke.get("trackids") == "0054, 0052, 0053, 0055"
def test_strecke_ohne_sepliste_bleibt_unveraendert(self):
"""Altbestand ohne "sepliste"-XDATA darf kein leeres/kaputtes
Separatorlist-Merkmal bekommen - das Merkmal fehlt einfach."""
TrackIds-Feld bekommen - das Feld fehlt einfach."""
strecke = {
"teileart": "ILS 2.0 Strecke",
"teileid": "0020",
"merkmale": {"Anzahl_Separator": "0", "Anzahl_Scanner": "0"},
}
write_separatorliste_merkmale([strecke], {})
assert "trackids" not in strecke
assert "Separatorlist" not in strecke["merkmale"]
+23 -3
View File
@@ -144,7 +144,7 @@ ALERT_ERLAUBT = {
"vfl-dlg-modus": 1, # dcl/vfl_edit.dcl fehlt
"vfl-dlg-position": 1, # dito
"vfl-edit-glied": 1, # "Glied nicht einzeln editierbar"
"vfl-edit-ent": 1, # "kein Journal am Block"
"vfl-edit-ent": 2, # "kein Journal am Block" + alte OBJS-linienzug2 abweisen
}
@@ -181,21 +181,40 @@ EINGABE_ERLAUBT = {
"vflw-wahl-impl": {"new_dialog": 1},
"vflw-gruppe-as-impl": {"new_dialog": 1},
"vflw-gruppe-gefaelle-impl": {"new_dialog": 1},
"vflw-gruppe-horizontal-impl": {"new_dialog": 1},
"vflw-gruppe-punkt-hoehe-impl": {"new_dialog": 1},
"vflw-gruppe-variokurve-impl": {"new_dialog": 1},
"vflw-gruppe-winkel-seite-impl": {"new_dialog": 1},
"vflw-gruppe-ziel-hoehe-impl": {"new_dialog": 1},
"vflw-gruppe-gf-laenge-modus-impl": {"new_dialog": 1},
"vflw-gruppe-gf-steigend-untermodus-impl": {"new_dialog": 1},
"vflw-gruppe-gf-verteilung-impl": {"new_dialog": 1},
"vflw-gruppe-ist-kettenende-2opt-impl": {"new_dialog": 1},
"vflw-gruppe-ja-nein-impl": {"new_dialog": 1},
"vflw-gruppe-naechstes-element-impl": {"new_dialog": 1},
"vflw-gruppe-naechstes-im-vf-impl": {"new_dialog": 1},
"vflw-gruppe-qc-winkel-impl": {"new_dialog": 1},
"vflw-gruppe-richtung-impl": {"new_dialog": 1},
"vflw-gruppe-sep-gf-impl": {"new_dialog": 1},
"vflw-gruppe-startpunkt-typ-impl": {"new_dialog": 1},
"vflw-gruppe-winkel-hoehen-impl": {"new_dialog": 1},
"vflw-gruppe-winkel-wahl-impl": {"new_dialog": 1},
"vflw-m2-lauf-anfang-impl": {"new_dialog": 1},
"vflw-m2-lauf-abschluss-impl": {"new_dialog": 1},
"vflw-seg-bogen-impl": {"new_dialog": 1},
"vflw-seg-linie-m2-impl": {"new_dialog": 1},
"vflw-seg-linie-m3-impl": {"new_dialog": 1},
# --- Frage-Dialoge (Ja/Nein bzw. Menue-Gruppen, kein roher get*-Aufruf) ---
"vfl-frage-ist-endpunkt": {"new_dialog": 1},
"vfl-frage-ist-kettenende": {"new_dialog": 1},
# --- Edit-Dialoge: nur per Doppelklick erreichbar ---
"vfl-dlg-modus": {"new_dialog": 1, "alert": 1},
"vfl-dlg-position": {"new_dialog": 1, "alert": 1},
"vfl-glied-as-es-dialog": {"new_dialog": 1, "alert": 1},
"vfl-glied-gf-bogen-dialog": {"new_dialog": 1, "alert": 1},
"vfl-glied-vario-dialog": {"new_dialog": 1, "alert": 1},
"vfl-edit-ent": {"alert": 1},
# vfl-edit-ent: alert 1 = "kein Journal", alert 2 = alte OBJS-linienzug2-
# Bloecke abweisen (harter Schnitt, vfl-edit-m2-obsolet).
"vfl-edit-ent": {"alert": 2},
"vfl-edit-glied": {"alert": 1},
"vfl-meldung": {"alert": 1},
# --- reine Benutzer-Befehle (kein Bau-Pfad, nicht journalisiert) ---
@@ -205,6 +224,7 @@ EINGABE_ERLAUBT = {
"c:Vario_Kette_Merge": {"entsel": 1},
# --- Zeichnung durchsuchen, keine Benutzerfrage ---
"vfl-kette-sammle-alle": {"ssget": 1},
"vfl-ks-aus-hz-an-punkt": {"ssget": 1},
}