Pete Dunn
Ship workbook UX surfaces and hosted smoke coverage
1047167
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BACKEND_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
cd "${BACKEND_DIR}"
WITH_OPENAI=0
FULL=0
INSTALL=0
for arg in "$@"; do
case "${arg}" in
--with-openai) WITH_OPENAI=1 ;;
--full) FULL=1 ;;
--install) INSTALL=1 ;;
*)
echo "Unknown arg: ${arg}"
echo "Usage: scripts/test_backend.sh [--with-openai] [--full] [--install]"
exit 2
;;
esac
done
if [[ -f ".env.test" ]]; then
set -a
# shellcheck disable=SC1091
source ".env.test"
set +a
elif [[ -f ".env.codex" ]]; then
set -a
# shellcheck disable=SC1091
source ".env.codex"
set +a
fi
if [[ ! -x ".venv/bin/python" ]]; then
python3 -m venv .venv
INSTALL=1
fi
if [[ "${INSTALL}" -eq 1 ]] || ! .venv/bin/python -c "import pytest" >/dev/null 2>&1; then
.venv/bin/python -m pip install --upgrade pip
.venv/bin/python -m pip install -r requirements.txt
fi
export PYTHONPATH="${BACKEND_DIR}:${PYTHONPATH:-}"
export ROUTER_RAG_ENABLE_RERANK="${ROUTER_RAG_ENABLE_RERANK:-false}"
export POTS_ENABLE_RERANK="${POTS_ENABLE_RERANK:-false}"
export MASTERS_ENABLE_RERANK="${MASTERS_ENABLE_RERANK:-false}"
if [[ "${WITH_OPENAI}" -eq 1 ]]; then
if ! .venv/bin/python - <<'PY'
import os,sys
k = str(os.getenv("OPENAI_API_KEY", "")).strip()
ku = k.upper()
bad = (not k) or ku.startswith("YOUR_KEY") or ku in {"<YOUR_OPENAI_API_KEY>", "YOUR_OPENAI_API_KEY"}
sys.exit(1 if bad else 0)
PY
then
echo "ERROR: OPENAI_API_KEY is missing or placeholder. Set a real key, then rerun with --with-openai."
exit 2
fi
else
export OPENAI_API_KEY=""
fi
if [[ "${FULL}" -eq 1 ]]; then
.venv/bin/python -m pytest -q app
else
.venv/bin/python -m pytest -q \
app/test_router_rag_module.py \
app/test_router_rag_api.py \
app/test_auth.py \
app/test_router_csv_sanity.py \
app/test_router_workbook_query_bank.py
fi
if [[ "${WITH_OPENAI}" -eq 1 ]]; then
.venv/bin/python scripts/router_rag_smoke.py --with-openai
else
.venv/bin/python scripts/router_rag_smoke.py
fi