Add ability to run pylint check on modified files only
Change c0aa0b fused pylint with the checks done with the pep8 testenv. This has the drawback of increasing the execution time of the command 'tox -epep8' fourfold. This change introduces the ability to execute the pylint check on just the list of python files affected by a specific patch. For instance, this can be done with the following command: tox -epep8 HEAD~1 A kind reminder is added, so that folks who end up noticing the spike of time execution when they run tox -epep8 without posargs, can learn how they can get their precious minutes back. Change-Id: Ie2a2b3a0171908d8d8aa8713baaa875adccb7efe
This commit is contained in:
parent
a8873dc8d6
commit
1ed0dcf978
58
tools/coding-checks.sh
Normal file
58
tools/coding-checks.sh
Normal file
@ -0,0 +1,58 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -eu
|
||||
|
||||
usage () {
|
||||
echo "Usage: $0 [OPTION]..."
|
||||
echo "Run Neutron's coding check(s)"
|
||||
echo ""
|
||||
echo " -Y, --pylint [<basecommit>] Run pylint check on the entire neutron module or just files changed in basecommit (e.g. HEAD~1)"
|
||||
echo " -h, --help Print this usage message"
|
||||
echo
|
||||
exit 0
|
||||
}
|
||||
|
||||
process_options () {
|
||||
i=1
|
||||
while [ $i -le $# ]; do
|
||||
eval opt=\$$i
|
||||
case $opt in
|
||||
-h|--help) usage;;
|
||||
-Y|--pylint) pylint=1;;
|
||||
*) scriptargs="$scriptargs $opt"
|
||||
esac
|
||||
i=$((i+1))
|
||||
done
|
||||
}
|
||||
|
||||
run_pylint () {
|
||||
local target="${scriptargs:-all}"
|
||||
|
||||
if [ "$target" = "all" ]; then
|
||||
files="neutron"
|
||||
else
|
||||
case "$target" in
|
||||
*HEAD~[0-9]*) files=$(git diff --diff-filter=AM --name-only $target -- "*.py");;
|
||||
*) echo "$target is an unrecognized basecommit"; exit 1;;
|
||||
esac
|
||||
fi
|
||||
|
||||
echo "Running pylint..."
|
||||
echo "You can speed this up by running it on 'HEAD~[0-9]' (e.g. HEAD~1, this change only)..."
|
||||
if [ -n "${files}" ]; then
|
||||
pylint --rcfile=.pylintrc --output-format=colorized ${files}
|
||||
else
|
||||
echo "No python changes in this commit, pylint check not required."
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
|
||||
scriptargs=
|
||||
pylint=1
|
||||
|
||||
process_options $@
|
||||
|
||||
if [ $pylint -eq 1 ]; then
|
||||
run_pylint
|
||||
exit 0
|
||||
fi
|
3
tox.ini
3
tox.ini
@ -56,9 +56,10 @@ deps =
|
||||
commands=
|
||||
# If it is easier to add a check via a shell script, consider adding it in this file
|
||||
sh ./tools/misc-sanity-checks.sh
|
||||
# Checks for coding and style guidelines
|
||||
flake8
|
||||
sh ./tools/coding-checks.sh --pylint '{posargs}'
|
||||
neutron-db-manage check_migration
|
||||
pylint --rcfile=.pylintrc --output-format=colorized {posargs:neutron}
|
||||
whitelist_externals = sh
|
||||
|
||||
[testenv:cover]
|
||||
|
Loading…
Reference in New Issue
Block a user