1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-27 22:50:26 +03:00

ctdb-tests: Add shellcheck test suite

CTDB has a lot of scripts and shellcheck can be useful to find dubious
scripting practices.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>

Autobuild-User(master): Amitay Isaacs <amitay@samba.org>
Autobuild-Date(master): Thu Jul 21 06:06:49 CEST 2016 on sn-devel-144
This commit is contained in:
Martin Schwenke 2016-07-14 12:01:14 +10:00 committed by Amitay Isaacs
parent b51f604f75
commit e0aae9f0d3
10 changed files with 117 additions and 1 deletions

View File

@ -255,7 +255,7 @@ export TEST_SCRIPTS_DIR="${test_dir}/scripts"
# If no tests specified then run some defaults
if [ -z "$1" ] ; then
if [ -n "$TEST_LOCAL_DAEMONS" ] ; then
set -- onnode takeover tool eventscripts cunit simple
set -- onnode takeover tool eventscripts cunit shellcheck simple
else
set -- simple complex
fi

View File

@ -0,0 +1,12 @@
#!/bin/sh
. "${TEST_SCRIPTS_DIR}/unit.sh"
define_test "base scripts"
shellcheck_test \
"${CTDB_SCRIPTS_BASE}/ctdb-crash-cleanup.sh" \
"${CTDB_SCRIPTS_BASE}/debug-hung-script.sh" \
"${CTDB_SCRIPTS_BASE}/debug_locks.sh" \
"${CTDB_SCRIPTS_BASE}/nfs-linux-kernel-callout" \
"${CTDB_SCRIPTS_BASE}/statd-callout"

View File

@ -0,0 +1,9 @@
#!/bin/sh
. "${TEST_SCRIPTS_DIR}/unit.sh"
define_test "ctdb helpers"
shellcheck_test \
"${CTDB_SCRIPTS_TOOLS_HELPER_DIR}/ctdb_lvs" \
"${CTDB_SCRIPTS_TOOLS_HELPER_DIR}/ctdb_natgw"

View File

@ -0,0 +1,7 @@
#!/bin/sh
. "${TEST_SCRIPTS_DIR}/unit.sh"
define_test "ctdbd_wrapper"
shellcheck_test "${CTDB_SCRIPTS_SBIN_DIR}/ctdbd_wrapper"

View File

@ -0,0 +1,7 @@
#!/bin/sh
. "${TEST_SCRIPTS_DIR}/unit.sh"
define_test "event scripts"
shellcheck_test "${CTDB_SCRIPTS_BASE}/events.d"/[0-9][0-9].*

View File

@ -0,0 +1,7 @@
#!/bin/sh
. "${TEST_SCRIPTS_DIR}/unit.sh"
define_test "functions file"
shellcheck_test -s sh "${CTDB_SCRIPTS_BASE}/functions"

View File

@ -0,0 +1,20 @@
#!/bin/sh
. "${TEST_SCRIPTS_DIR}/unit.sh"
define_test "init script"
script="$CTDB_SCRIPTS_INIT_DIR"
if [ -z "$script" ] ; then
script="/etc/init.d/ctdb"
if [ ! -r "$script" ] ; then
script="/usr/local/etc/init.d/ctdb"
fi
if [ ! -r "$script" ] ; then
echo "WARNING: Unable to find ctdb init script, skipping test"
exit 0
fi
fi
shellcheck_test "$script"

View File

@ -0,0 +1,44 @@
# Hey Emacs, this is a -*- shell-script -*- !!! :-)
. "${TEST_SCRIPTS_DIR}/script_install_paths.sh"
define_test ()
{
_f=$(basename "$0" ".sh")
printf "%-28s - %s\n" "$_f" "$1"
}
shellcheck_test ()
{
ok_null
if type shellcheck >/dev/null ; then
# Skip some recent checks:
#
# SC1090: Can't follow non-constant source. Use a
# directive to specify location.
# SC1091: Not following: FILE was not specified as
# input (see shellcheck -x).
# - Shellcheck doesn't handle our includes
# very well. Adding directives to handle
# include for both in-tree and installed
# cases just isn't going to be possible.
# SC2162: read without -r will mangle backslashes.
# - We never read things with backslashes,
# unnecessary churn.
# SC2164: Use cd ... || exit in case cd fails.
# - Most hits are on known directories. Too
# much churn, maybe later.
# SC2166: Prefer [ p ] && [ q ] as [ p -a q ] is not
# well defined.
# SC2166: Prefer [ p ] || [ q ] as [ p -o q ] is not
# well defined.
# - This can cause issues but the number of
# true positives will be very low. Too much
# churn, maybe later.
_excludes="SC1090,SC1091,SC2162,SC2164,SC2166"
unit_test shellcheck --exclude="$_excludes" "$@"
else
echo "WARNING: shellcheck not installed, skipping test"
unit_test true
fi
}

9
ctdb/tests/shellcheck/tools.sh Executable file
View File

@ -0,0 +1,9 @@
#!/bin/sh
. "${TEST_SCRIPTS_DIR}/unit.sh"
define_test "tools"
shellcheck_test \
"${CTDB_SCRIPTS_TOOLS_BIN_DIR}/onnode" \
"${CTDB_SCRIPTS_TOOLS_BIN_DIR}/ctdb_diagnostics"

View File

@ -731,6 +731,7 @@ def build(bld):
'events.d',
'eventscripts',
'onnode',
'shellcheck',
'simple',
'takeover',
'tool'