Files
dxfmakros/bin/run_tests.bat
T
m.stangl 6ab698286f CSV-Export: Nachbarschaftserkennung ueber Bounding-Box-Ueberschneidung (STRtree/shapely)
Neue Spalte "Nachbarn" (kommaseparierte TeileId-Liste) in export_csv.py:
zwei Elemente gelten als benachbart, wenn ihre Bounding-Boxes (x/y-Ebene)
sich ueberschneiden. Toleranz konfigurierbar in mm ueber cfg/export.cfg
[Nachbarschaft] -> toleranz_mm, siehe lib/export_neighbors.py.
Nur EXPORTCSV betroffen, EXPORTSIVAS bleibt unveraendert.

shapely als neue Abhaengigkeit in requirements.txt ergaenzt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-22 15:26:30 +02:00

178 lines
5.5 KiB
Batchfile

@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 <referenzdatei>
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