Allow excluding tests from certain files

There are certain scripts (such as the ramdisk init script) that
need to ignore linting rules for one reason or another.  This adds
support for exclusions via a comment in the file like:

"# dib-lint: disable=executable sete"

There should be no ", but I need those to prevent git from treating
that as a comment.  This syntax is similar to the pylint exclusion
mechanism.

Exclusion support is added to the executable check, but not
the alphabetical ordering one because I can't imagine a reason we
would need to disable that, and I don't know that comments are
supported in those files anyway.

Change-Id: I9ecfb47269841dc75a005855455ac26ad2cbc642
This commit is contained in:
Ben Nemec 2014-04-25 16:44:25 -05:00
parent 928e6f237b
commit 825b1964bb

View File

@ -18,16 +18,37 @@
# This script checks all files in the "elements" directory for some # This script checks all files in the "elements" directory for some
# common mistakes and exits with a non-zero status if it finds any. # common mistakes and exits with a non-zero status if it finds any.
parse_exclusions() {
# Exclusions are currently only read on a per-file basis
local filename=$1
local disable_pattern="# dib-lint: disable="
local exclusions=$(grep "^$disable_pattern.*$" $filename | sed "s/$disable_pattern//g")
echo $exclusions
}
excluded() {
local test_name=$1
for e in $exclusions; do
if [ "$e" = "$test_name" ]; then
return 0
fi
done
return 1
}
rc=0 rc=0
TMPDIR=$(mktemp -d) TMPDIR=$(mktemp -d)
trap "rm -rf $TMPDIR" EXIT trap "rm -rf $TMPDIR" EXIT
for i in $(find elements -type f); do for i in $(find elements -type f); do
exclusions=("$(parse_exclusions $i)")
# Check that files starting with a shebang are +x # Check that files starting with a shebang are +x
if ! excluded executable; then
firstline=$(head -n 1 "$i") firstline=$(head -n 1 "$i")
if [ ! -x "$i" ] && [ "${firstline:0:2}" = "#!" ]; then if [ ! -x "$i" ] && [ "${firstline:0:2}" = "#!" ]; then
echo "ERROR: $i is not executable" echo "ERROR: $i is not executable"
rc=1 rc=1
fi fi
fi
# Check alphabetical ordering of element-deps # Check alphabetical ordering of element-deps
if [ $(basename $i) = "element-deps" ]; then if [ $(basename $i) = "element-deps" ]; then