1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
# Hey Emacs, this is a -*- shell-script -*- !!! :-)
. "${TEST_SCRIPTS_DIR}/common.sh"
# Common variables and functions for CTDB unit tests.
# 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
required_output="$2"
fi
else
if ! tty -s ; then
required_output=$(cat)
else
required_output=""
fi
fi
}
ok ()
{
required_result 0 "$@"
}
ok_null ()
{
ok --
}
result_print ()
{
_passed="$1"
_out="$2"
_rc="$3"
_extra_header="$4"
if "$TEST_VERBOSE" || ! $_passed ; then
if [ -n "$_extra_header" ] ; then
cat <<EOF
##################################################
$_extra_header
EOF
fi
cat <<EOF
--------------------------------------------------
Output (Exit status: ${_rc}):
--------------------------------------------------
EOF
echo "$_out" | cat $TEST_CAT_RESULTS_OPTS
fi
if ! $_passed ; then
cat <<EOF
--------------------------------------------------
Required output (Exit status: ${required_rc}):
--------------------------------------------------
EOF
echo "$required_output" | cat $TEST_CAT_RESULTS_OPTS
if $TEST_DIFF_RESULTS ; then
_outr=$(mktemp)
echo "$required_output" >"$_outr"
_outf=$(mktemp)
echo "$_fout" >"$_outf"
cat <<EOF
--------------------------------------------------
Diff:
--------------------------------------------------
EOF
diff -u "$_outr" "$_outf" | cat -A
rm "$_outr" "$_outf"
fi
fi
}
result_footer ()
{
_passed="$1"
_extra_footer="$2"
if "$TEST_VERBOSE" || ! $_passed ; then
if [ -n "$_extra_footer" ] ; then
cat <<EOF
--------------------------------------------------
$_extra_footer
--------------------------------------------------
EOF
fi
fi
if $_passed ; then
echo "PASSED"
return 0
else
echo
echo "FAILED"
return 1
fi
}
result_check ()
{
_rc=$?
_extra_header="$1"
if [ -n "$OUT_FILTER" ] ; then
_fout=$(echo "$_out" | eval sed -r $OUT_FILTER)
else
_fout="$_out"
fi
if [ "$_fout" = "$required_output" -a $_rc = $required_rc ] ; then
_passed=true
else
_passed=false
fi
result_print "$_passed" "$_out" "$_rc" "$_extra_header"
result_footer "$_passed"
}
local="${TEST_SUBDIR}/scripts/local.sh"
if [ -r "$local" ] ; then
. "$local"
fi
|