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:
parent
b51f604f75
commit
e0aae9f0d3
@ -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
|
||||
|
12
ctdb/tests/shellcheck/base_scripts.sh
Executable file
12
ctdb/tests/shellcheck/base_scripts.sh
Executable 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"
|
9
ctdb/tests/shellcheck/ctdb_helpers.sh
Executable file
9
ctdb/tests/shellcheck/ctdb_helpers.sh
Executable 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"
|
7
ctdb/tests/shellcheck/ctdbd_wrapper.sh
Executable file
7
ctdb/tests/shellcheck/ctdbd_wrapper.sh
Executable file
@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
. "${TEST_SCRIPTS_DIR}/unit.sh"
|
||||
|
||||
define_test "ctdbd_wrapper"
|
||||
|
||||
shellcheck_test "${CTDB_SCRIPTS_SBIN_DIR}/ctdbd_wrapper"
|
7
ctdb/tests/shellcheck/event_scripts.sh
Executable file
7
ctdb/tests/shellcheck/event_scripts.sh
Executable 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].*
|
7
ctdb/tests/shellcheck/functions.sh
Executable file
7
ctdb/tests/shellcheck/functions.sh
Executable file
@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
. "${TEST_SCRIPTS_DIR}/unit.sh"
|
||||
|
||||
define_test "functions file"
|
||||
|
||||
shellcheck_test -s sh "${CTDB_SCRIPTS_BASE}/functions"
|
20
ctdb/tests/shellcheck/init_script.sh
Executable file
20
ctdb/tests/shellcheck/init_script.sh
Executable 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"
|
44
ctdb/tests/shellcheck/scripts/local.sh
Normal file
44
ctdb/tests/shellcheck/scripts/local.sh
Normal 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
9
ctdb/tests/shellcheck/tools.sh
Executable 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"
|
@ -731,6 +731,7 @@ def build(bld):
|
||||
'events.d',
|
||||
'eventscripts',
|
||||
'onnode',
|
||||
'shellcheck',
|
||||
'simple',
|
||||
'takeover',
|
||||
'tool'
|
||||
|
Loading…
x
Reference in New Issue
Block a user