f2a0410ebd
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
70 lines
1.9 KiB
Bash
Executable File
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
|