chore: import upstream snapshot with attribution
This commit is contained in:
Executable
+81
@@ -0,0 +1,81 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
cd "$ROOT_DIR"
|
||||
|
||||
if [ "$#" -eq 0 ]; then
|
||||
set -- tests
|
||||
fi
|
||||
|
||||
declare -a TRIED=()
|
||||
|
||||
run_python() {
|
||||
local candidate="$1"
|
||||
local label="$2"
|
||||
local resolved=""
|
||||
shift 2
|
||||
|
||||
TRIED+=("$label: $candidate")
|
||||
|
||||
if [[ "$candidate" == */* ]]; then
|
||||
if [ ! -x "$candidate" ]; then
|
||||
return 1
|
||||
fi
|
||||
resolved="$candidate"
|
||||
else
|
||||
resolved="$(command -v "$candidate" 2>/dev/null || true)"
|
||||
if [ -z "$resolved" ]; then
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if "$resolved" -c "import pytest" >/dev/null 2>&1; then
|
||||
printf "Using %s: %s\n" "$label" "$resolved"
|
||||
exec "$resolved" -m pytest "$@"
|
||||
fi
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
run_uv() {
|
||||
if ! command -v uv >/dev/null 2>&1 || [ ! -f "$ROOT_DIR/uv.lock" ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
TRIED+=("uv-managed environment: uv run python -m pytest")
|
||||
|
||||
if uv run python -c "import pytest" >/dev/null 2>&1; then
|
||||
printf "Using uv-managed environment\n"
|
||||
exec uv run python -m pytest "$@"
|
||||
fi
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
if [ -n "${PYTHON:-}" ]; then
|
||||
if run_python "$PYTHON" "PYTHON override" "$@"; then
|
||||
exit 0
|
||||
fi
|
||||
printf "Configured PYTHON does not provide pytest: %s\n" "$PYTHON" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -n "${VIRTUAL_ENV:-}" ]; then
|
||||
run_python "$VIRTUAL_ENV/bin/python" "active virtualenv" "$@" || true
|
||||
fi
|
||||
|
||||
run_uv "$@" || true
|
||||
run_python "$ROOT_DIR/.venv/bin/python" "repo .venv" "$@" || true
|
||||
run_python "$ROOT_DIR/venv/bin/python" "repo venv" "$@" || true
|
||||
run_python python "PATH python" "$@" || true
|
||||
run_python python3 "PATH python3" "$@" || true
|
||||
|
||||
printf "Unable to find a Python environment with pytest available.\n" >&2
|
||||
printf "Tried:\n" >&2
|
||||
for entry in "${TRIED[@]}"; do
|
||||
printf " - %s\n" "$entry" >&2
|
||||
done
|
||||
printf "Set PYTHON=/path/to/python, activate a virtualenv, create .venv/venv, or sync the project environment.\n" >&2
|
||||
exit 1
|
||||
Reference in New Issue
Block a user