#!/usr/bin/env bash
set -euo pipefail
repo_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
python_bin="$repo_dir/server/.venv/bin/python"
node_bin="${GATEWAY_NODE_BIN:-node}"
python3 "$repo_dir/firmware/tests/run_network_resilience_test.py"
cxx_test="$(mktemp)"
trap 'rm -f "$cxx_test"' EXIT
for test in approval_control button_gesture physical_input touch_gesture; do
    c++ -std=c++17 -Wall -Wextra -Werror -I "$repo_dir/boards/common/include" \
        "$repo_dir/firmware/tests/${test}_test.cpp" -o "$cxx_test"
    "$cxx_test"
done
c++ -std=c++17 -Wall -Wextra -Werror -I "$repo_dir/firmware/main" \
    "$repo_dir/firmware/tests/websocket_text_receiver_test.cpp" -o "$cxx_test"
"$cxx_test"
"$node_bin" --test --experimental-strip-types \
    "$repo_dir/integrations/pi/device-lab-pager.test.ts" \
    "$repo_dir/integrations/pi/control-socket.test.ts" \
    "$repo_dir/integrations/pi/approval.test.ts" \
    "$repo_dir/server/tests/admin.test.mjs"
cd "$repo_dir/server"
"$python_bin" -m pytest -q tests/test_network_resilience.py tests/test_gateway.py \
    tests/test_agent_downlink.py tests/test_pi_integration.py tests/test_approvals.py \
    tests/test_auth.py tests/test_control.py tests/test_admin.py \
    tests/test_system_collector.py tests/test_voice_settings.py tests/test_stt.py

python3 "$repo_dir/firmware/tests/run_navigator_input_test.py"
