GRM-91: feat: adopt devx tools, devx.mak fragment, ci extra, remove legacy install-devx
Post-merge / detect-type (push) Successful in 10s
Post-merge / validate-commit-msg (push) Successful in 10s
Post-merge / configure-repo (push) Successful in 12s
Post-merge / release (push) Successful in 1m41s
Post-merge / vikunja (push) Successful in 12s
Post-merge / badges (push) Successful in 1m37s
Post-merge / sync-wiki (push) Successful in 2m0s
Post-merge / detect-type (push) Successful in 10s
Post-merge / validate-commit-msg (push) Successful in 10s
Post-merge / configure-repo (push) Successful in 12s
Post-merge / release (push) Successful in 1m41s
Post-merge / vikunja (push) Successful in 12s
Post-merge / badges (push) Successful in 1m37s
Post-merge / sync-wiki (push) Successful in 2m0s
This commit was merged in pull request #153.
This commit is contained in:
+60
-5
@@ -1,6 +1,61 @@
|
||||
#!/usr/bin/env bash
|
||||
# pre-push hook: fail if unit tests are too slow.
|
||||
# Checks both total suite time (10s) and per-test time (0.5s).
|
||||
# Aligned with CI (ci.yml uses same thresholds).
|
||||
set -e
|
||||
python3 -m devx.tools.check_test_speed --max-seconds 4 --max-single-seconds 0.5
|
||||
# pre-push hook: validate Vikunja task exists and tests are fast.
|
||||
#
|
||||
# This catches issues that would otherwise only surface in CI:
|
||||
# - Branch name missing task ID (e.g., GRM-N)
|
||||
# - Vikunja task does not exist for the task ID in the branch name
|
||||
# - Unit tests too slow (total > 4s, per-test > 0.5s)
|
||||
#
|
||||
# Uses devx.tools.pre_push_check for reusable validation logic.
|
||||
# Project config (task prefix, Vikunja project ID) is read from
|
||||
# [tool.devx] in pyproject.toml by devx.config — no hardcoded values here.
|
||||
#
|
||||
# Bootstrap resilience: if devx is not importable (e.g., during devx
|
||||
# upgrades), the hook prints a warning and allows the push.
|
||||
|
||||
# Determine the branch being pushed
|
||||
BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "")
|
||||
|
||||
if [ -z "$BRANCH" ] || [ "$BRANCH" = "master" ] || [ "$BRANCH" = "main" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Load .env if present (for VIKUNJA_TOKEN)
|
||||
if [ -f .env ]; then
|
||||
set -a
|
||||
# shellcheck disable=SC1091
|
||||
. .env
|
||||
set +a
|
||||
fi
|
||||
|
||||
# Find the Python interpreter with devx installed
|
||||
if [ -f .venv/bin/python ]; then
|
||||
PY=.venv/bin/python
|
||||
elif [ -x "${HOME}/.pyenv/bin/pyenv" ]; then
|
||||
export PYENV_ROOT="${HOME}/.pyenv"
|
||||
export PATH="${PYENV_ROOT}/bin:${PYENV_ROOT}/shims:${PATH}"
|
||||
eval "$("${PYENV_ROOT}/bin/pyenv" init -)" 2>/dev/null || true
|
||||
eval "$("${PYENV_ROOT}/bin/pyenv" virtualenv-init -)" 2>/dev/null || true
|
||||
pyenv activate gitea-runner-manager 2>/dev/null || true
|
||||
PY=python3
|
||||
else
|
||||
PY=python3
|
||||
fi
|
||||
|
||||
# Bootstrap resilience: if devx is not importable, warn but allow the push
|
||||
if ! $PY -c "import devx.tools.pre_push_check" 2>/dev/null; then
|
||||
echo "WARNING: devx not installed — pre-push check skipped."
|
||||
echo "Run 'make setup' to install devx."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Run pre-push validation via devx
|
||||
$PY -m devx.tools.pre_push_check --branch "$BRANCH" || {
|
||||
echo ""
|
||||
echo "Pre-push validation failed. Fix the issues above before pushing."
|
||||
echo "To bypass (NOT recommended): git push --no-verify"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Check test speed (aligned with CI thresholds)
|
||||
$PY -m devx.tools.check_test_speed --max-seconds 4 --max-single-seconds 0.5
|
||||
|
||||
Reference in New Issue
Block a user