#!/usr/bin/env bash
set -euo pipefail

COMPOSE="docker compose -f docker-compose.test.yml --profile cpu"

usage() {
  echo "Usage: $0 <test_path> [pytest_args...]"
  echo ""
  echo "Examples:"
  echo "  $0 tests/test_video.py                              # run all tests in file"
  echo "  $0 tests/test_video.py::test_ft_p_10_frame_sampling_ac1  # run single test"
  echo "  $0 tests/test_video.py -k 'frame_sampling'          # run by keyword"
  echo ""
  echo "Flags -v -x -s are always included."
  exit 1
}

[[ $# -lt 1 ]] && usage

$COMPOSE up -d --build detections
echo "--- Waiting for detections service to become healthy..."
for i in $(seq 1 60); do
  if $COMPOSE exec -T detections python3 -c "import urllib.request; urllib.request.urlopen('http://localhost:8080/health')" 2>/dev/null; then
    echo "--- Detections service is healthy"
    break
  fi
  sleep 2
done

echo "--- Running: pytest $* -v -x -s --csv=/results/report.csv"
$COMPOSE run --rm --no-deps e2e-runner pytest "$@" -v -x -s --csv=/results/report.csv
EXIT_CODE=$?

echo "--- Test finished with exit code $EXIT_CODE"
echo "--- Detections logs (last 100 lines):"
$COMPOSE logs detections --tail 100
exit $EXIT_CODE
