#!/usr/bin/env bash # Builds and runs all host unit tests. set -euo pipefail ROOT=$(cd "$(dirname "$0")/.." && pwd) cmake -S "$ROOT/test" -B "$ROOT/build/host" -G Ninja >/dev/null cmake --build "$ROOT/build/host" ctest --test-dir "$ROOT/build/host" --output-on-failure "$@" if python3 -c 'import pytest' 2>/dev/null; then # tools/mkimage als GANZES Verzeichnis, nicht nur tools/mkimage/tests: die 19 Tests in # tools/mkimage/test_nl_mkimage.py liegen direkt daneben und liefen sonst in keiner # Suite mit - darunter test_stays_python38_compatible, die Wache fuer die bindende # 3.8-Randbedingung des Docker-Build-Containers. # # Diese Wache braucht das Paket "vermin" und schlaegt ohne es HART fehl (kein Skip): # eine Wache, die sich beim Fehlen ihres Werkzeugs stillschweigend abschaltet, haette # den Build-Bruch von damals genauso durchgelassen wie gar kein Test. Fehlt vermin, # nachinstallieren: # pip install vermin (oder: pip3 install --user vermin) python3 -m pytest "$ROOT/tools/mkimage" "$ROOT/tools/station/tests" -q else echo "Hinweis: pytest fehlt - Python-Tests uebersprungen" >&2 echo " Installation: pip install pytest vermin (vermin braucht" >&2 echo " tools/mkimage/test_nl_mkimage.py::test_stays_python38_compatible)" >&2 fi # Alle Shell-Suiten - test_deploy.sh fehlte hier und lief damit nur bei Handaufruf # (Task 6b F1, I3): dieselbe Klasse von Luecke wie die aus keiner Suite gefallene # test_nl_mkimage.py, nur eine Ebene hoeher. Mit ihr liefen 95 Zusagen nirgends mit, # darunter die komplette Deploy-Haelfte der Anzeige-Auslieferung. # # Als ausdrueckliche Liste, nicht als lose Folge von Aufrufen (Task 6b F2): so gibt es # EINE Stelle, die vollstaendig sein muss, und # tools/mkimage/tests/test_suite_coverage.py kann sie gegen das Dateisystem pruefen, # statt im Skripttext nach Dateinamen zu suchen - eine Textsuche haelt schon ein # nachgestellter Kommentar zum Narren. SHELL_SUITES=( "$ROOT/tools/station/tests/test_cli.sh" "$ROOT/tools/station/tests/test_deploy.sh" "$ROOT/tools/station/tests/test_setup_pi.sh" ) for suite in "${SHELL_SUITES[@]}"; do "$suite" done