changeset 7503:69f70de15f26

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)
author Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
date Sun, 30 Dec 2018 20:28:06 +0100
parents 0996e43e89c7
children 8f8ee972820f
files scripts/validate-commits
diffstat 1 files changed, 66 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /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