From 4f5791ebd03eaec1c7da0865a383175b05102712 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 5 May 2024 19:47:29 +0200 Subject: Adding upstream version 2:4.17.12+dfsg. Signed-off-by: Daniel Baumann --- ctdb/tests/scripts/unit.sh | 267 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 267 insertions(+) create mode 100644 ctdb/tests/scripts/unit.sh (limited to 'ctdb/tests/scripts/unit.sh') diff --git a/ctdb/tests/scripts/unit.sh b/ctdb/tests/scripts/unit.sh new file mode 100644 index 0000000..403ee07 --- /dev/null +++ b/ctdb/tests/scripts/unit.sh @@ -0,0 +1,267 @@ +# Hey Emacs, this is a -*- shell-script -*- !!! :-) + +. "${TEST_SCRIPTS_DIR}/common.sh" + +# Common variables and functions for CTDB unit tests. + +trap -- '' PIPE + +# Set the required result for a test. +# - Argument 1 is exit code. +# - Argument 2, if present is the required test output but "--" +# indicates empty output. +# If argument 2 is not present or null then read required test output +# from stdin. +required_result() +{ + required_rc="${1:-0}" + if [ -n "$2" ]; then + if [ "$2" = "--" ]; then + required_output="" + else + # Use a sub-shell to strip trailing newlines. + # They can't be matched anyway because the + # test is run in a sub-shell, which strips + # trailing newlines. + # shellcheck disable=SC2116 + required_output=$(echo "$2") + fi + else + if ! tty -s; then + required_output=$(cat) + else + required_output="" + fi + fi +} + +required_error() +{ + rc=$(errcode "$1") + shift + required_result "$rc" "$@" +} + +ok() +{ + required_result 0 "$@" +} + +ok_null() +{ + ok -- +} + +reset_extra_header() +{ + # Re-define this function to output extra header information + extra_header() + { + : + } +} + +reset_extra_footer() +{ + # Re-define this function to output extra footer information + extra_footer() + { + : + } +} + +reset_extra_header +reset_extra_footer + +result_print() +{ + _passed="$1" + _out="$2" + _rc="$3" + + if "$CTDB_TEST_VERBOSE" || ! $_passed; then + extra_header + + cat <"$_outr" + + _outf=$(mktemp) + # Avoid echo, which might expand unintentional escapes + printf '%s\n' "$_fout" >"$_outf" + + cat <&1) + + result_check || exit $? +} + +# Simple test harness for running shell script unit tests +script_test() +{ + test_header "$@" + + _shell="" + if ${CTDB_TEST_COMMAND_TRACE}; then + _shell="sh -x" + else + _shell="sh" + fi + + _out=$($_shell "$@" 2>&1) + + result_check || exit $? +} + +# Simple test harness for running tests without tracing +unit_test_notrace() +{ + test_header "$@" + + _out=$("$@" 2>&1) + + result_check || exit $? +} + +test_cleanup_hooks="" + +test_cleanup() +{ + test_cleanup_hooks="${test_cleanup_hooks}${test_cleanup_hooks:+ ; }$*" +} + +trap 'eval $test_cleanup_hooks' 0 + +local="${CTDB_TEST_SUITE_DIR}/scripts/local.sh" +if [ -r "$local" ]; then + . "$local" +fi -- cgit v1.2.3