[PATCH] scripts: add developer script validate-commits
Thomas De Schampheleire
patrickdepinguin at gmail.com
Sun Dec 30 19:52:15 UTC 2018
# HG changeset patch
# User Thomas De Schampheleire <thomas.de_schampheleire at nokia.com>
# Date 1546198086 -3600
# Sun Dec 30 20:28:06 2018 +0100
# Node ID 08ccc957e6bc3b170ce2c5db4a63574b51528a79
# Parent 42d4c56ad79c4a492b8bc607aa070de32d9c6073
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 <revset>
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 --git a/scripts/validate-commits b/scripts/validate-commits
new file mode 100755
--- /dev/null
+++ b/scripts/validate-commits
@@ -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 . >/dev/null; 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 "$@" -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 . >/dev/null ; 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
More information about the kallithea-general
mailing list