Lisp-Unit-Tests fuer reine Standardfunktionen + run_tests.bat --lisp

- tests/test_unit.lsp: Mini-Test-Framework (tu-eq/tu-eqf/tu-true/tu-nil)
  und Testfaelle fuer reine Funktionen aus ssg_core, ssg_lang, ssg_id,
  vf_core, export, Gefaellestrecke, OmniModulInsert, KreiselInsert.
  Befehl TEST_UNIT schreibt tests/output/unit_results.txt.
- tests/test_unit.scr: Headless-Startskript (laedt SSG_LIB, ruft
  TEST_UNIT, beendet BricsCAD), pfadunabhaengig ueber DXFMAKRO.
- bin/run_tests.bat: Schalter --lisp startet BricsCAD headless, wertet
  den Report aus (RESULT: OK/FAIL) und setzt den Exit-Code.
- tests/README.md: Abschnitt zu den LISP-Unit-Tests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-23 14:44:11 +02:00
parent 52264f1531
commit 3f7074f06b
4 changed files with 491 additions and 2 deletions
+64 -2
View File
@@ -4,12 +4,15 @@ REM ================================================================
REM run_tests.bat - Testausfuehrung fuer SSG_LIB
REM
REM Schalter:
REM --lisp Startet BricsCAD headless, fuehrt die LISP-Unit-Tests
REM (TEST_UNIT) aus und wertet tests\output\unit_results.txt aus
REM --check Fuehrt pytest-Validierung aus
REM --diff_references Vergleicht CSVs in tests\reference und tests\output,
REM ruft bei Unterschieden das Diff-Tool (meld) auf
REM (ohne) Zeigt Hilfe an
REM
REM Beispiele:
REM bin\run_tests.bat --lisp
REM bin\run_tests.bat --check
REM bin\run_tests.bat --check test_kreisel.py
REM bin\run_tests.bat --diff_references
@@ -30,10 +33,16 @@ set DO_CHECK=0
set CHECK_ARG=
set DO_DIFF=0
set DIFF_ARG=
set DO_LISP=0
REM Argumente parsen
:parse_args
if "%~1"=="" goto :after_args
if "%~1"=="--lisp" (
set DO_LISP=1
shift
goto :parse_args
)
if "%~1"=="--check" (
set DO_CHECK=1
if not "%~2"=="" (
@@ -56,7 +65,56 @@ echo Unbekannter Schalter: %~1
goto :show_help
:after_args
if %DO_CHECK%==0 if %DO_DIFF%==0 goto :show_help
if %DO_LISP%==0 if %DO_CHECK%==0 if %DO_DIFF%==0 goto :show_help
REM ================================================================
REM --lisp: LISP-Unit-Tests in BricsCAD ausfuehren
REM ================================================================
if %DO_LISP%==1 (
echo.
echo ================================================================
echo LISP UNIT-TESTS ^(TEST_UNIT^)
echo ================================================================
if not defined BRICSCAD (
echo FEHLER: BricsCAD nicht gefunden - siehe setenv.bat.
exit /b 1
)
if not exist "%DXFM_TESTS%\test_unit.scr" (
echo FEHLER: %DXFM_TESTS%\test_unit.scr nicht gefunden.
exit /b 1
)
REM Altes Ergebnis loeschen - fehlender Report = fehlgeschlagener Lauf
if exist "%DXFM_TESTOUT%\unit_results.txt" del "%DXFM_TESTOUT%\unit_results.txt"
echo BricsCAD wird headless gestartet ^(Skript: test_unit.scr^)...
start /wait "" "%BRICSCAD%" /s "%DXFM_TESTS%\test_unit.scr"
if not exist "%DXFM_TESTOUT%\unit_results.txt" (
echo.
echo FEHLER: Kein Report erzeugt ^(%DXFM_TESTOUT%\unit_results.txt^).
echo Lief TEST_UNIT in BricsCAD durch?
exit /b 1
)
echo.
type "%DXFM_TESTOUT%\unit_results.txt"
findstr /b /c:"RESULT: OK" "%DXFM_TESTOUT%\unit_results.txt" >nul
if errorlevel 1 (
echo.
echo ================================================================
echo ERGEBNIS: LISP-TESTS FEHLGESCHLAGEN
echo ================================================================
exit /b 1
)
echo.
echo ================================================================
echo ERGEBNIS: ALLE LISP-TESTS BESTANDEN
echo ================================================================
)
REM ================================================================
REM --check: pytest-Validierung
@@ -159,10 +217,13 @@ goto :eof
:show_help
echo.
echo Aufruf: bin\run_tests.bat --check [testdatei]
echo Aufruf: bin\run_tests.bat --lisp
echo bin\run_tests.bat --check [testdatei]
echo bin\run_tests.bat --diff_references [csv-datei]
echo.
echo Schalter:
echo --lisp Startet BricsCAD headless, fuehrt TEST_UNIT aus
echo und wertet tests\output\unit_results.txt aus
echo --check Fuehrt pytest-Validierung fuer alle Module aus
echo --check test_kreisel.py Validiert nur Kreisel-Tests
echo --diff_references Vergleicht alle CSVs in tests\reference/output,
@@ -170,6 +231,7 @@ echo ruft bei Unterschieden meld auf
echo --diff_references datei.csv Vergleicht nur die angegebene CSV-Datei
echo.
echo Workflow:
echo 0. bin\run_tests.bat --lisp ^(reine LISP-Funktionen, ohne Zeichnung^)
echo 1. In BricsCAD: SSG_RUN_ALL_TESTS ausfuehren
echo 2. bin\run_tests.bat --check
echo 3. bin\run_tests.bat --diff_references