28 lines
804 B
Bash
Executable File

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