manila/tools/coding-checks.sh
Goutham Pacha Ravi f2a0410ebd [pylint] Use filenames in coding-checks
When using the argument "all" in our pylint
script, we invoke tests against the whole tree.
This doesn't really work well with module names
since it ignores some submodules that are not
traversable from the main manila module.

By using filenames, we allow pylint to cover
all modules.

Change-Id: I37ea7f72e71ae93f8f654e0aa99744b2ecc1cea9
2019-03-05 22:08:53 +00:00

70 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
set -eu
usage() {
echo "Usage: $0 [OPTION]..."
echo "Run Manila's coding check(s)"
echo ""
echo " -Y, --pylint [<basecommit>] Run pylint check on the entire manila 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:-HEAD~1}"
local concurrency=$(python -c 'import multiprocessing as mp; print(mp.cpu_count())')
CODE_OKAY=0
if [[ "$target" = *"all"* ]]; then
files=$(find manila/ -type f -name "*.py" -and ! -path "manila/tests*")
test_files=$(find manila/tests/ -type f -name "*.py")
else
files=$(git diff --name-only --diff-filter=ACMRU HEAD~1 ':!manila/tests/*' '*.py')
test_files=$(git diff --name-only --diff-filter=ACMRU HEAD~1 'manila/tests/*.py')
fi
if [[ -z "${files}" || -z "${test_files}" ]]; then
echo "No python changes in this commit, pylint check not required."
exit 0
fi
if [[ -n "${files}" ]]; then
echo "Running pylint against manila code modules:"
printf "\t%s\n" "${files[@]}"
pylint --rcfile=.pylintrc --output-format=colorized ${files} \
-E -j $concurrency || CODE_OKAY=1
fi
if [[ -n "${test_files}" ]]; then
echo "Running pylint against manila test modules:"
printf "\t%s\n" "${test_files[@]}"
pylint --rcfile=.pylintrc --output-format=colorized ${test_files} \
-E -d "no-member,assignment-from-no-return,assignment-from-none" \
-j $concurrency || CODE_OKAY=1
fi
exit $CODE_OKAY
}
scriptargs=
pylint=1
process_options $@
if [ $pylint -eq 1 ]; then
run_pylint
exit 0
fi