Changeset - 69f70de15f26
[Not reviewed]
default
0 0 1
Thomas De Schampheleire - 7 years ago 2018-12-30 20:28:06
thomas.de_schampheleire@nokia.com
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)
1 file changed with 66 insertions and 0 deletions:
0 comments (0 inline, 0 general)
scripts/validate-commits
Show inline comments
 
new file 100755
 
#!/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
0 comments (0 inline, 0 general)