#!/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 unter tools/station/tests/ - 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. # tools/mkimage/tests/test_suite_coverage.py haelt fest, dass hier keine Suite fehlt. "$ROOT/tools/station/tests/test_cli.sh" "$ROOT/tools/station/tests/test_deploy.sh" "$ROOT/tools/station/tests/test_setup_pi.sh"