#!/usr/bin/env bash set -euo pipefail COMPOSE="docker compose -f docker-compose.test.yml --profile cpu" usage() { echo "Usage: $0 [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