Fixrunde 1 zu Task 4: - C1 (kritisch): die Unit leerte /run/ninlight-station bei jedem systemctl restart, weil RuntimeDirectoryPreserve fehlte - genau der Neustart, mit dem migrate/recovery on den Dienst hochfahren, wischte die eben geschriebene Modus-/Steuerdatei wieder weg, und der Server fiel still auf den Recovery-Default zurueck. Unit bekommt RuntimeDirectoryPreserve=restart, und start_and_verify() prueft nach dem Neustart zusaetzlich ausdruecklich nach, dass Modus und Phase noch stimmen. - I1: status las die Phase aus status.json, die arm/listen (die den Dienst bewusst nicht neu starten) nie aktualisieren - jetzt kommt sie aus control.json. - I2: off pruefte nach dem Herunterfahren nichts nach und konnte "Station aus" melden, waehrend ein Profil wegen haengendem NetworkManager weiterhin aktiv war - ap_switch() verifiziert das jetzt auch im Aus-Fall. - I3: der Fehlerzweig von ap_switch (Mismatch nach dem Umschalten) war im bisherigen Test nie erreichbar; der nmcli-Stub kann das jetzt erzwingen. - I4: neue Pflichtschluessel blockierten jeden Unterbefehl auf einem bereits eingerichteten Pi. setup_pi.sh ergaenzt fehlende Schluessel in einer bestehenden Konfiguration jetzt einzeln, statt sie unangetastet zu lassen; dafuer musste das Skript per bash-s-Heredocs und ueberschreibbaren Pfadvariablen erst testbar gemacht werden (neuer test_setup_pi.sh). Dazu vier kleinere Punkte aus derselben Review: grep -Fqx statt grep -qx fuer Profilnamen, install-Stub durch tee+chmod ersetzt (POSIX, kein Sonderfall mehr fuer macOS), Rechtepruefung auf control.json in den arm/listen-Testfaellen, stderr sauber von stdout getrennt in den Warnungs-/Fehlerfaellen.
17 lines
560 B
Bash
Executable File
17 lines
560 B
Bash
Executable File
#!/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
|
|
python3 -m pytest "$ROOT/tools/mkimage/tests" "$ROOT/tools/station/tests" -q
|
|
else
|
|
echo "Hinweis: pytest fehlt - Python-Tests uebersprungen" >&2
|
|
fi
|
|
|
|
"$ROOT/tools/station/tests/test_cli.sh"
|
|
"$ROOT/tools/station/tests/test_setup_pi.sh"
|