Mercurial > kallithea
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