X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/68261ea30bdaec3384876f2fe152a377d2d5c0d1..5fa3d9aa99f952d8ca032f94f9c47b739e2ef7e7:/test/common.sh.in diff --git a/test/common.sh.in b/test/common.sh.in index 4734612c..d0c446de 100644 --- a/test/common.sh.in +++ b/test/common.sh.in @@ -29,18 +29,9 @@ test -z "$ICONV_ENABLED" && ICONV_ENABLED="@ICONV_ENABLED@" 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 @@ -50,7 +41,7 @@ unset MHLDEBUG MHPDEBUG MHWDEBUG PAGER XOAUTH SMTPUTF8 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 @@ -198,8 +189,6 @@ prepare_space() { #### '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. #### ':' -- will print '' in the failure message, #### to make it easier to tell which of multiple tests has failed. check() { @@ -207,13 +196,11 @@ 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 @@ -231,25 +218,15 @@ check() { 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 } @@ -295,6 +272,27 @@ run_test() { 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. @@ -304,7 +302,7 @@ cleanup() { #### 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