|
|
#!/bin/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
|
|
|
|
|
|
revset=$1
|
|
|
if [ -z "$revset" ]; then
|
|
|
echo "Warning: no revisions specified, checking draft changes up to the current one."
|
|
|
revset='draft() and ancestors(.)'
|
|
|
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 "$revset" -T '{node}\n'); do
|
|
|
hg log -r "$rev"
|
|
|
hg update "$rev"
|
|
|
|
|
|
cleanup
|
|
|
python3 -m venv "$venv"
|
|
|
source "$venv/bin/activate"
|
|
|
pip install --upgrade "pip<24.1" "setuptools<67"
|
|
|
pip install -e . -r dev_requirements.txt python-ldap python-pam
|
|
|
|
|
|
# run-all-cleanup
|
|
|
if ! scripts/run-all-cleanup ; then
|
|
|
echo "run-all-cleanup encountered errors!"
|
|
|
result="NOK"
|
|
|
else
|
|
|
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
|
|
|
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
|
|
|
|