[TEST] Globaler GUI-Aus-Schalter fuer automatische Testlaeufe
Der VF-Linienzug-Wizard (*vfl-wizard-mode* Default T) oeffnete beim automatischen Replay-Test DCL-Dialoge und blockierte den Lauf. - ssg_core.lsp: globaler Schalter *ssg-gui-aus* + ssg-gui-p/-aus/-an - vf_linienzug.lsp: neue vfl-wizard-mode-p (Wizard nur wenn *vfl-wizard-mode* UND GUI nicht abgeschaltet); ersetzt die direkten *vfl-wizard-mode*-Checks in vfl-in-string/-real/-int, vfl-winkel-live und vfl-wizard-aktiv (deckt damit auch alle vflw-gruppe-*-Dialoge ab). Bei GUI-aus fallen die Eingaben auf den getstring/getint/getreal-Pfad, den die Testrunner per Mock/Replay bedienen. - test_linienzug.lsp: (ssg-gui-aus) vor dem Replay, (ssg-gui-an) danach (immer). - test_run_all.lsp: GUI aus um den gesamten Batch, danach wieder an. Alle Guards ueber atoms-family, damit aeltere Ladezustaende unveraendert funktionieren. Paren-Balance geprueft. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -137,6 +137,19 @@
|
||||
)
|
||||
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; GUI-MODUS (fuer automatische Tests)
|
||||
;; ------------------------------------------------------------
|
||||
;; Globaler Schalter, um alle interaktiven Oberflaechen-Abfragen (DCL-Dialoge,
|
||||
;; Wizard-Fenster) abzuschalten - dann laufen die Module ueber ihre Konsolen-
|
||||
;; bzw. Nicht-GUI-Pfade, die von den Testrunnern per Mock-Eingabe/Replay
|
||||
;; bedient werden. Default nil = GUI an (normaler Betrieb).
|
||||
;; Test-Setup ruft (ssg-gui-aus) auf; ssg-gui-p fragt den Zustand ab.
|
||||
(if (not (boundp '*ssg-gui-aus*)) (setq *ssg-gui-aus* nil))
|
||||
(defun ssg-gui-p () (null *ssg-gui-aus*)) ;; T = GUI erlaubt
|
||||
(defun ssg-gui-aus () (setq *ssg-gui-aus* T) (princ))
|
||||
(defun ssg-gui-an () (setq *ssg-gui-aus* nil) (princ))
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; LISP-PFAD-ERMITTLUNG
|
||||
;; ------------------------------------------------------------
|
||||
|
||||
+13
-5
@@ -413,6 +413,14 @@
|
||||
(if (not (boundp '*vflw-menu-default*)) (setq *vflw-menu-default* 1))
|
||||
(if (not (boundp '*vflw-menu-frage*)) (setq *vflw-menu-frage* nil))
|
||||
|
||||
;; Effektiver Wizard-Zustand: Wizard-DCL-Dialoge nur, wenn *vfl-wizard-mode*
|
||||
;; gesetzt UND die GUI global nicht abgeschaltet ist (Tests: (ssg-gui-aus)).
|
||||
;; Bei abgeschalteter GUI fallen alle Eingaben auf den Konsolen-/getXXX-Pfad
|
||||
;; zurueck, den die Testrunner per Mock/Replay bedienen.
|
||||
(defun vfl-wizard-mode-p ()
|
||||
(and *vfl-wizard-mode*
|
||||
(or (not (car (atoms-family 1 '("SSG-GUI-P")))) (ssg-gui-p))))
|
||||
|
||||
;; Wizard-GRUPPEN-Dialoge (vflw-gruppe-*-impl) duerfen NUR bei echter Live-
|
||||
;; Eingabe aufgehen - waehrend eines Journal-Replays (Editieren/Fortsetzen
|
||||
;; einer bestehenden Kette, *vfl-replay-queue* gesetzt) liefern vfl-in-point/
|
||||
@@ -424,7 +432,7 @@
|
||||
;; Eingabe umgeschaltet wird, liest der naechste Wrapper diese laengst
|
||||
;; veralteten, falsch typisierten Werte statt neu zu fragen (siehe
|
||||
;; vfl-neue-linie-messen: fuehrte zu einem String-statt-Punkt-Absturz).
|
||||
(defun vfl-wizard-aktiv () (and *vfl-wizard-mode* (null *vfl-replay-queue*)))
|
||||
(defun vfl-wizard-aktiv () (and (vfl-wizard-mode-p) (null *vfl-replay-queue*)))
|
||||
|
||||
(defun c:VF_WIZARD_AN ()
|
||||
(setq *vfl-wizard-mode* T)
|
||||
@@ -897,7 +905,7 @@
|
||||
(vfl-in-value-p "STR"
|
||||
(function (lambda (v) (eq (type v) 'STR)))
|
||||
(function (lambda ()
|
||||
(if (and *vfl-wizard-mode* *vflw-menu-optionen*)
|
||||
(if (and (vfl-wizard-mode-p) *vflw-menu-optionen*)
|
||||
(vflw-wahl (if *vflw-menu-frage* (ssg-text *vflw-menu-frage*) prompt)
|
||||
*vflw-menu-optionen* *vflw-menu-default*)
|
||||
(getstring prompt))))))
|
||||
@@ -905,12 +913,12 @@
|
||||
(defun vfl-in-real (prompt)
|
||||
(vfl-in-value "REAL"
|
||||
(function (lambda ()
|
||||
(if *vfl-wizard-mode* (vflw-zahl prompt) (getreal prompt))))))
|
||||
(if (vfl-wizard-mode-p) (vflw-zahl prompt) (getreal prompt))))))
|
||||
|
||||
(defun vfl-in-int (prompt)
|
||||
(vfl-in-value "INT"
|
||||
(function (lambda ( / vs)
|
||||
(if (and *vfl-wizard-mode* *vflw-menu-optionen*)
|
||||
(if (and (vfl-wizard-mode-p) *vflw-menu-optionen*)
|
||||
(progn
|
||||
(setq vs (vflw-wahl (if *vflw-menu-frage* (ssg-text *vflw-menu-frage*) prompt)
|
||||
*vflw-menu-optionen* *vflw-menu-default*))
|
||||
@@ -963,7 +971,7 @@
|
||||
;; Live-Abfrage eines Winkelwerts. Wizard: Auswahl aus den Labels, Position ->
|
||||
;; winkel-werte. Konsole: direkte Zahleneingabe (ENTER = Default).
|
||||
(defun vfl-winkel-live (prompt winkel-werte default-winkel / vs idx r)
|
||||
(if (and *vfl-wizard-mode* *vflw-menu-optionen*)
|
||||
(if (and (vfl-wizard-mode-p) *vflw-menu-optionen*)
|
||||
(progn
|
||||
(setq vs (vflw-wahl (if *vflw-menu-frage* (ssg-text *vflw-menu-frage*) prompt)
|
||||
*vflw-menu-optionen* *vflw-menu-default*))
|
||||
|
||||
@@ -163,6 +163,11 @@
|
||||
(setvar "ATTREQ" 0)
|
||||
(setvar "ATTDIA" 0)
|
||||
|
||||
;; GUI aus: keine Wizard-DCL-Dialoge waehrend des automatischen Replays -
|
||||
;; die Eingaben kommen aus der Mock-Queue (getstring/getint/getreal), siehe
|
||||
;; ssg-gui-aus/ssg-gui-p in ssg_core.lsp und vfl-wizard-mode-p.
|
||||
(if (car (atoms-family 1 '("SSG-GUI-AUS"))) (ssg-gui-aus))
|
||||
|
||||
;; --- Eingabe-Funktionen sichern und durch Mocks ersetzen ---
|
||||
;; Punkte ueber den Produktions-Wrapper vfl-getpoint (feste 2-Arity),
|
||||
;; getstring/getint/getreal (alle 1-argumentig) direkt.
|
||||
@@ -177,6 +182,9 @@
|
||||
|
||||
;; --- Eingabe-Funktionen wiederherstellen (IMMER) ---
|
||||
(setq vfl-getpoint old-vgp getstring old-gs getint old-gi getreal old-gr)
|
||||
;; GUI wieder einschalten (auch nach Fehler), damit eine folgende interaktive
|
||||
;; Sitzung nicht headless bleibt.
|
||||
(if (car (atoms-family 1 '("SSG-GUI-AN"))) (ssg-gui-an))
|
||||
|
||||
(setq rest-anz (length *tlz-q*))
|
||||
|
||||
|
||||
@@ -185,6 +185,11 @@
|
||||
))
|
||||
(princ "\n================================================================")
|
||||
|
||||
;; GUI aus fuer den gesamten Batch: kein Modul (insb. VarioFoerderer-Linienzug)
|
||||
;; oeffnet DCL-/Wizard-Dialoge, die den automatischen Lauf blockieren wuerden.
|
||||
;; Am Ende wieder einschalten. Siehe ssg-gui-aus/-an in ssg_core.lsp.
|
||||
(if (car (atoms-family 1 '("SSG-GUI-AUS"))) (ssg-gui-aus))
|
||||
|
||||
;; Tests laden und ausfuehren
|
||||
;; Jeder Test bekommt eine eigene neue Zeichnung (statt die aktuelle
|
||||
;; zu leeren/wiederzuverwenden) und bleibt danach als Tab offen.
|
||||
@@ -386,6 +391,9 @@
|
||||
)
|
||||
)
|
||||
|
||||
;; GUI wieder einschalten (Batch fertig).
|
||||
(if (car (atoms-family 1 '("SSG-GUI-AN"))) (ssg-gui-an))
|
||||
|
||||
(princ "\n\n================================================================")
|
||||
(princ "\n SSG_RUN_ALL_TESTS abgeschlossen.")
|
||||
(princ (strcat "\n Ergebnisse in: " (getenv "DXFMAKRO") "/tests/output/"))
|
||||
|
||||
Reference in New Issue
Block a user