# HG changeset patch # User Thomas De Schampheleire # Date 1546198086 -3600 # Node ID 69f70de15f26c92d277f988ae7be40ee0d2b0f4a # Parent 0996e43e89c7e97bd8f537e9759481ea798d7a82 scripts: add developer script validate-commits validate-commits can be used to verify a series of commits before submitting/pushing it. It will create a virtualenv and run run-all-cleanup and pytest. Invocation: validate-commits Output: OK: 99c28d4459286261f7e798ab3fe60be3b0be2e7e (run-all-cleanup) OK: 99c28d4459286261f7e798ab3fe60be3b0be2e7e (pytest) OK: 8a79857fb430eea80556af8d7e7c88810eee7f25 (run-all-cleanup) NOK: 8a79857fb430eea80556af8d7e7c88810eee7f25 (pytest) OK: 42d4c56ad79c4a492b8bc607aa070de32d9c6073 (run-all-cleanup) NOK: 42d4c56ad79c4a492b8bc607aa070de32d9c6073 (pytest) diff -r 0996e43e89c7 -r 69f70de15f26 scripts/validate-commits --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/validate-commits Sun Dec 30 20:28:06 2018 +0100 @@ -0,0 +1,66 @@ +#!/usr/bin/env bash +# Validate the specified commits against test suite and other checks. + +if [ -n "$VIRTUAL_ENV" ]; then + echo "Please run this script from outside a virtualenv." + exit 1 +fi + +if ! hg update --check -q .; then + echo "Working dir is not clean, please commit/revert changes first." + exit 1 +fi + +venv=$(mktemp -d kallithea-validatecommits-env-XXXXXX) +resultfile=$(mktemp kallithea-validatecommits-result-XXXXXX) +echo > "$resultfile" + +cleanup() +{ + rm -rf /tmp/kallithea-test* + rm -rf "$venv" +} +finish() +{ + cleanup + # print (possibly intermediate) results + cat "$resultfile" + rm "$resultfile" +} +trap finish EXIT + +for rev in $(hg log -r "$1" -T '{node}\n'); do + hg log -r "$rev" + hg update "$rev" + + cleanup + virtualenv -p "$(command -v python2)" "$venv" + source "$venv/bin/activate" + pip install --upgrade pip setuptools + pip install -e . + pip install -r dev_requirements.txt + pip install python-ldap python-pam + + # run-all-cleanup + scripts/run-all-cleanup + if ! hg update --check -q .; then + echo "run-all-cleanup did not give clean results!" + result="NOK" + hg diff + hg revert -a + else + result=" OK" + fi + echo "$result: $rev (run-all-cleanup)" >> "$resultfile" + + # pytest + if py.test; then + result=" OK" + else + result="NOK" + fi + echo "$result: $rev (pytest)" >> "$resultfile" + + deactivate + echo +done