From 1ed0dcf9789a04d7ba3322542d7ee2dae4d8ccc1 Mon Sep 17 00:00:00 2001 From: armando-migliaccio Date: Wed, 25 Feb 2015 21:53:27 -0800 Subject: [PATCH] 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 --- tools/coding-checks.sh | 58 ++++++++++++++++++++++++++++++++++++++++++ tox.ini | 3 ++- 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 tools/coding-checks.sh diff --git a/tools/coding-checks.sh b/tools/coding-checks.sh new file mode 100644 index 000000000..287b205e9 --- /dev/null +++ b/tools/coding-checks.sh @@ -0,0 +1,58 @@ +#!/bin/sh + +set -eu + +usage () { + echo "Usage: $0 [OPTION]..." + echo "Run Neutron's coding check(s)" + echo "" + echo " -Y, --pylint [] 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 diff --git a/tox.ini b/tox.ini index 54d916123..3e03249da 100644 --- a/tox.ini +++ b/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] -- 2.45.2