From 825b1964bbe4339ae321cd1d2f8b00b25004f147 Mon Sep 17 00:00:00 2001 From: Ben Nemec Date: Fri, 25 Apr 2014 16:44:25 -0500 Subject: [PATCH] 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 --- bin/dib-lint | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/bin/dib-lint b/bin/dib-lint index 01b28c39..8aa42d25 100755 --- a/bin/dib-lint +++ b/bin/dib-lint @@ -18,15 +18,36 @@ # This script checks all files in the "elements" directory for some # 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 TMPDIR=$(mktemp -d) trap "rm -rf $TMPDIR" EXIT for i in $(find elements -type f); do + exclusions=("$(parse_exclusions $i)") # Check that files starting with a shebang are +x - firstline=$(head -n 1 "$i") - if [ ! -x "$i" ] && [ "${firstline:0:2}" = "#!" ]; then - echo "ERROR: $i is not executable" - rc=1 + if ! excluded executable; then + firstline=$(head -n 1 "$i") + if [ ! -x "$i" ] && [ "${firstline:0:2}" = "#!" ]; then + echo "ERROR: $i is not executable" + rc=1 + fi fi # Check alphabetical ordering of element-deps