[PATCH] scripts: add developer script validate-commits

Mads Kiilerich mads at kiilerich.com
Mon Dec 31 00:53:48 UTC 2018


On 12/30/18 8:52 PM, Thomas De Schampheleire wrote:
> # 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


Quoted $@ is special, and this will give confusing result if the script 
is invoked with less or more than 1 one parameter. I assume we should 
use $1 instead.


> +    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


I have found that in case of "different but compatible constraints", it 
is more stable to install both the app and dev requirements at once: pip 
install --upgrade -e . -r dev_requirements.txt

We should perhaps change to recommend that everywhere?


> +    pip install python-ldap python-pam


Should we just include these in dev_requirements.txt ?

/Mads


More information about the kallithea-general mailing list