# Faehrt die komplette Test-Suite gegen die Addon-Dateien. # # Warum es das gibt: die Tests lagen einzeln herum und wurden nur beim Bauen des # jeweiligen Features gestartet. Dadurch waren fuenf davon still veraltet - sie # pruesten gegen Namen und Zip-Versionen, die es laengst nicht mehr gab, und # haetten eine echte Regression nicht gemeldet. Ein Befehl fuer alles. # # Aufruf: # .\run_tests.ps1 # .\run_tests.ps1 -Blender "E:\SteamLibrary\steamapps\common\Blender\blender.exe" # .\run_tests.ps1 -Filter panels # nur tests\test_panels.py # # Hinweis: test_tree_addon.py prueft das GEBAUTE Zip aus dist\ - vorher # .\build.ps1 laufen lassen, sonst meldet der Test das fehlende Zip. param( [string]$Blender = "blender", [string]$Filter = "*" ) $root = $PSScriptRoot $tests = Get-ChildItem (Join-Path $root "tests") -Filter "test_$Filter.py" | Sort-Object Name if (-not $tests) { throw "Keine Tests gefunden fuer Filter '$Filter'" } $failed = @() foreach ($t in $tests) { $out = & $Blender --background --factory-startup --python $t.FullName 2>&1 | Out-String # Die Tests melden ihr Ergebnis als letzte Zeile mit "ERGEBNIS:" bzw. # "Alle Checks bestanden." - alles andere ist Blender-Rauschen. $line = ($out -split "`n" | Where-Object { $_ -match "ERGEBNIS|Alle Checks bestanden|FEHLGESCHLAGEN" } | Select-Object -Last 1) if (-not $line) { $line = "" } $line = $line.Trim() $ok = ($line -match "ALLE|OK$|bestanden") -and ($line -notmatch "FEHLER|FEHLGESCHLAGEN") $color = if ($ok) { "Green" } else { "Red" } if (-not $ok) { $failed += $t.BaseName } Write-Host ("{0,-24} {1}" -f $t.BaseName, $line) -ForegroundColor $color } Write-Host "" if ($failed) { Write-Host ("FEHLGESCHLAGEN ({0}): {1}" -f $failed.Count, ($failed -join ", ")) -ForegroundColor Red exit 1 } Write-Host ("Alle {0} Tests bestanden." -f $tests.Count) -ForegroundColor Green