#!/usr/bin/env bash # Run the default QA suite (pytest, mypy, flake8, black --check). # Additional arguments are forwarded to pytest. set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-${0}}")" && pwd)" PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" VENV_DIR="${PROJECT_ROOT}/.venv" PYTHON_BIN="${VENV_DIR}/bin/python" if [ ! -x "${PYTHON_BIN}" ]; then echo "Virtualenv not found. Run 'bash scripts/bootstrap.sh' first." >&2 exit 1 fi CACHE_DIR="${PROJECT_ROOT}/bin/pycache" mkdir -p "${CACHE_DIR}" export PYTHONPYCACHEPREFIX="${CACHE_DIR}" export PYTHONPATH="${PROJECT_ROOT}/src${PYTHONPATH:+:${PYTHONPATH}}" PYTEST_ARGS=("$@") "${PYTHON_BIN}" -m pytest "${PYTEST_ARGS[@]}" "${PYTHON_BIN}" -m mypy src "${VENV_DIR}/bin/flake8" src tests "${VENV_DIR}/bin/black" --check src tests