test -z "$OAUTH_SUPPORT" && OAUTH_SUPPORT="@OAUTH_SUPPORT@"
test -z "$CURL_USER_AGENT" && CURL_USER_AGENT="@CURL_USER_AGENT@"
-#### If w3m is used, HOME needs to be set, assuming default w3m config.
-#### So make sure that HOME is set to avoid run-time warning about not
-#### being able to create config directory.
-test -z "$HOME" && HOME=$MH_TEST_DIR
-HOME=$MH_TEST_DIR
-export HOME
-
-#### If w3m is used, HOME needs to be set, assuming default w3m config.
-#### So make sure that HOME is set to avoid run-time warning about not
-#### being able to create config directory.
-test -z "$HOME" && HOME=$MH_TEST_DIR
-HOME=$MH_TEST_DIR
+#### Make sure that HOME is set to avoid run-time warning from w3m about
+#### not being able to create config directory.
+HOME="$MH_TEST_DIR"
export HOME
unset MAILDROP MHBUILD MHCONTEXT MHMTSUSERCONF MHN MHSHOW MHSTORE
unset LANG LC_ALL LC_CTYPE
#### Use a test dir for tmp files when MHTMPDIR applies.
-MHTMPDIR=$MH_TEST_DIR/Mail
+MHTMPDIR="$MH_TEST_DIR"/Mail
export MHTMPDIR
#### If you're reading this .... you can set MH_TEST_NOCLEANUP to prevent
#### 'ignore space' -- spacing differences will not be considered
#### significant, emulating GNU diff -w. It is assumed that the
#### first file has already been run through prepare_space.
-#### 'expectfail' -- The test is expected to fail, e.g. due to a code
-#### bug, but the test should run as a placeholder for the fix.
#### ':' <test name> -- will print '<test name>' in the failure message,
#### to make it easier to tell which of multiple tests has failed.
check() {
second=$1; shift
keepfirst=
ignorespace=
- expectfail=false
label=test
while [ $# -gt 0 ]; do
case $1 in
'keep first') keepfirst=1 ;;
'ignore space') ignorespace=1 ;;
- expectfail) expectfail=true;;
':') shift; label=\'"$*"\'; break ;;
*) echo "$0: invalid check() argument \"$1\" in test suite" >&2 ;;
esac
if [ "$success" ]; then
[ "$keepfirst" ] || rm -f "$first"
rm -f "$second"
- if $expectfail; then
- echo "$0: expected test to fail, but it passed"
- failed=`expr ${failed:-0} + 1`
- #### Set return status of the function.
- [ $failed -eq 0 ]
- fi
else
echo
#### POSIX diff should support -c.
diff -c "$first" "$second" || true
echo
echo "$0: $label failed, outputs are in $first and $second."
- if $expectfail; then
- echo "$0: $label expected to fail, ignoring"
- else
- failed=`expr ${failed:-0} + 1`
- #### Set return status of the function.
- [ $failed -eq 0 ]
- fi
+ failed=`expr ${failed:-0} + 1`
+ #### Set return status of the function.
+ [ $failed -eq 0 ]
fi
}
fi
}
+#### check_exit() runs the command in $2..., capturing stdout and
+#### stderr, and then tests its exit status with the test(1) condition
+#### in $1. If that fails, the captured stdout and stderr are
+#### displayed, and $failed incremented.
+check_exit() {
+ c="$1"; shift
+ t="$MH_TEST_DIR/.check_exit"
+ r=0
+ $NMH_TEST_PREFIX "$@" >"$t.1" 2>"$t.2" || r=$?
+ if test $r $c; then
+ rm "$t.1" "$t.2"
+ else
+ echo "$0: check_exit: $r $c failed: $*" >&2
+ echo " stdout:" >&2
+ sed 's/^/ /' "$t.1" >&2
+ echo " stderr:" >&2
+ sed 's/^/ /' "$t.2" >&2
+ failed=`expr ${failed:-0} + 1`
+ fi
+}
+
#### Function invoked by trap on exit.
cleanup() {
#### Save exit status to use as status for this program.
#### cd to $MH_TEST_DIR before trying to remove its Mail
#### subdirectory. rm on Solaris won't remove it if it's in the
#### path of the current working directory.
- test -z "$MH_TEST_NOCLEANUP" && (cd $MH_TEST_DIR; rm -rf "$MH_TEST_DIR"/Mail)
+ test -z "$MH_TEST_NOCLEANUP" && (cd "$MH_TEST_DIR"; rm -rf "$MH_TEST_DIR"/Mail)
#### Report test name if set, which indicates failure.
#### Relies on set -e to invoke the trap which calls