#!/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"} 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