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:
parent
928e6f237b
commit
825b1964bb
21
bin/dib-lint
21
bin/dib-lint
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user