Make sure all scripts are set -e

If scripts are not set -e then errors can be ignored, causing more
confusing failures later.

Also adds an exclusion comment to the ramdisk init script since we
don't want that to exit on failure.

Change-Id: Idf43993bd10b1ef16c1d3b0d9df8d0ad94c46458
This commit is contained in:
Ben Nemec 2014-03-19 21:06:31 -05:00
parent 825b1964bb
commit 79ab95b16e
2 changed files with 26 additions and 1 deletions

View File

@ -18,6 +18,9 @@
# This script checks all files in the "elements" directory for some
# common mistakes and exits with a non-zero status if it finds any.
set -eu
set -o pipefail
parse_exclusions() {
# Exclusions are currently only read on a per-file basis
local filename=$1
@ -62,5 +65,23 @@ for i in $(find elements -type f); do
rc=1
fi
fi
# Check that all scripts are set -e
# NOTE(bnemec): This doesn't verify that the set call occurs high
# enough in the file to be useful, but hopefully nobody will be
# sticking set calls at the end of their file to trick us. And if
# they are, that's easy enough to catch in reviews.
# Also, this is only going to check bash scripts - we've decided to
# explicitly require bash for any scripts that don't have a specific
# need to run under other shells, and any exceptions to that rule
# may not want these checks either.
if [ -n "$(echo $firstline | grep '#!/bin/bash')" ]; then
if ! excluded sete; then
if [ -z "$(grep "^set -[^ ]*e" $i)" ]; then
echo "ERROR: $i is not set -e"
rc=1
fi
fi
fi
done
exit $rc
exit $rc

View File

@ -16,6 +16,10 @@
# License for the specific language governing permissions and limitations
# under the License.
# NOTE(bnemec): We don't want this script to exit on failures because if init
# dies then we get a kernel panic on ramdisk boot.
# dib-lint: disable=sete setu setpipefail
echo "init"
source /init-func