@echo off setlocal EnableDelayedExpansion REM ================================================================ REM run_tests.bat - Testausfuehrung fuer SSG_LIB REM REM Schalter: 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 --check REM bin\run_tests.bat --check test_kreisel.py REM bin\run_tests.bat --diff_references REM bin\run_tests.bat --diff_references kreisel_tests_export.csv REM ================================================================ REM Umgebung setzen call "%~dp0setenv.bat" REM Virtuelle Umgebung aktivieren if exist "%DXFMAKRO%\.venv\Scripts\activate.bat" ( call "%DXFMAKRO%\.venv\Scripts\activate.bat" ) else ( echo WARNUNG: .venv nicht gefunden - pytest muss im PATH sein! ) set DO_CHECK=0 set CHECK_ARG= set DO_DIFF=0 set DIFF_ARG= REM Argumente parsen :parse_args if "%~1"=="" goto :after_args if "%~1"=="--check" ( set DO_CHECK=1 if not "%~2"=="" ( set "CHECK_ARG=%~2" shift ) shift goto :parse_args ) if "%~1"=="--diff_references" ( set DO_DIFF=1 if not "%~2"=="" ( set "DIFF_ARG=%~2" shift ) shift goto :parse_args ) echo Unbekannter Schalter: %~1 goto :show_help :after_args if %DO_CHECK%==0 if %DO_DIFF%==0 goto :show_help REM ================================================================ REM --check: pytest-Validierung REM ================================================================ if %DO_CHECK%==1 ( echo. echo ================================================================ echo PYTEST VALIDIERUNG echo ================================================================ REM Pruefen ob output-Verzeichnis Ergebnisse enthaelt if not exist "%DXFM_TESTOUT%\*.json" ( echo. echo WARNUNG: Keine Ergebnisse in %DXFM_TESTOUT% echo Zuerst TESTRUN in BricsCAD ausfuehren! echo. ) if not "%CHECK_ARG%"=="" ( echo Teste: %CHECK_ARG% pytest "%DXFM_TESTS%\%CHECK_ARG%" -v ) else ( echo Teste: alle Module pytest "%DXFM_TESTS%" -v ) if errorlevel 1 ( echo. echo ================================================================ echo ERGEBNIS: TESTS FEHLGESCHLAGEN echo ================================================================ exit /b 1 ) echo. echo ================================================================ echo ERGEBNIS: ALLE TESTS BESTANDEN echo ================================================================ ) REM ================================================================ REM --diff_references: CSV-Referenzvergleich REM ================================================================ if %DO_DIFF%==1 ( echo. echo ================================================================ echo REFERENZVERGLEICH ^(--diff_references^) echo ================================================================ if not defined DXFM_DIFFTOOL ( echo. echo FEHLER: Kein Diff-Tool ^(meld^) gefunden - siehe setenv.bat. echo meld installieren: https://meldmerge.org exit /b 1 ) set DIFF_COUNT=0 if not "%DIFF_ARG%"=="" ( if not exist "%DXFM_TESTREF%\%DIFF_ARG%" ( echo FEHLER: Referenzdatei nicht gefunden: %DXFM_TESTREF%\%DIFF_ARG% exit /b 1 ) call :diff_one "%DXFM_TESTREF%\%DIFF_ARG%" ) else ( for %%F in ("%DXFM_TESTREF%\*.csv") do call :diff_one "%%F" ) echo. if !DIFF_COUNT!==0 ( echo ================================================================ echo ERGEBNIS: KEINE UNTERSCHIEDE GEFUNDEN echo ================================================================ ) else ( echo ================================================================ echo ERGEBNIS: !DIFF_COUNT! DATEI^(EN^) MIT UNTERSCHIEDEN echo ================================================================ ) ) exit /b 0 REM ---------------------------------------------------------------- REM :diff_one REM Vergleicht eine Referenzdatei mit der gleichnamigen Output-Datei REM und ruft bei Unterschieden das Diff-Tool auf. REM ---------------------------------------------------------------- :diff_one set "REF_FILE=%~1" set "OUT_FILE=%DXFM_TESTOUT%\%~nx1" if not exist "%OUT_FILE%" ( echo WARNUNG: Keine Output-Datei fuer %~nx1 gefunden - uebersprungen. goto :eof ) fc "%REF_FILE%" "%OUT_FILE%" >nul 2>nul if errorlevel 1 ( set /a DIFF_COUNT+=1 echo Unterschied: %~nx1 "%DXFM_DIFFTOOL%" "%REF_FILE%" "%OUT_FILE%" ) goto :eof :show_help echo. echo Aufruf: bin\run_tests.bat --check [testdatei] echo bin\run_tests.bat --diff_references [csv-datei] echo. echo Schalter: 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, echo ruft bei Unterschieden meld auf echo --diff_references datei.csv Vergleicht nur die angegebene CSV-Datei echo. echo Workflow: echo 1. In BricsCAD: SSG_RUN_ALL_TESTS ausfuehren echo 2. bin\run_tests.bat --check echo 3. bin\run_tests.bat --diff_references echo. exit /b 1