X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/00d3bf7d5d3a78bebb43bb102e3d43bf41fc9369..b18f2d1fcd634e79fff9d69bc9b7ddf220755290:/test/common.sh.in?ds=inline diff --git a/test/common.sh.in b/test/common.sh.in index 07b01f3f..d3875a39 100644 --- a/test/common.sh.in +++ b/test/common.sh.in @@ -35,10 +35,13 @@ HOME="$MH_TEST_DIR" export HOME unset MAILDROP MHBUILD MHCONTEXT MHMTSUSERCONF MHN MHSHOW MHSTORE -unset MHLDEBUG MHPDEBUG MHWDEBUG PAGER XOAUTH SMTPUTF8 +unset MHLDEBUG MHWDEBUG PAGER XOAUTH SMTPUTF8 #### Set LC_ALL in individual tests as needed. Unset these so #### that we don't depend on user's settings in other tests. unset LANG LC_ALL LC_CTYPE +# Don't have libcurl(3) use the environment's proxy for tests' +# connections to 127.0.0.1. +unset http_proxy ALL_PROXY all_proxy #### Use a test dir for tmp files when MHTMPDIR applies. MHTMPDIR="$MH_TEST_DIR"/Mail @@ -70,8 +73,8 @@ fi test_skip () { - WHY="$1" - echo "$Test $0 SKIP ($WHY)" + why="$1" + echo "$0: skipped: $why" exit 77 } @@ -175,6 +178,12 @@ squeeze_lines() { sed '/^$/N;/\n$/D' } +#### Filter that removes blank lines and leading space that lynx inserts. +#### but sufficient for our purpose. +squeeze_whitespace() { + sed '/^$/D; s/^ *//;' +} + #### Filter that converts non-breakable space U+00A0 to an ASCII space. prepare_space() { sed 's/'"`printf '\\302\\240'`"'/ /g' @@ -272,6 +281,36 @@ run_test() { fi } +#### Run a command but don't wait for user input. We switched from script(1) +#### to our own utility, runpty. Check that it makes the command look like +#### it's connected to a terminal below. +#### The single argument is the name of the file in which to place the output. +run_without_input() { + actual=$1 + shift + runpty="${MH_OBJ_DIR}/test/runpty" + + #### Create a command to use as a shell for script. + cmd="${MH_TEST_DIR}/Mail/cmd" + cat >"${cmd}" </dev/null || test_skip "runpty doesn't simulate tty" + rm -f "$actual" +} + #### 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 @@ -302,7 +341,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 @@ -311,7 +350,7 @@ cleanup() { #### 1) Set test name before running the test, use start_test(). #### 2) Unset upon successful completion, use finish_test(). if test -n "$nmh_tests_testname"; then - echo "first test failure: $nmh_tests_testname" + echo "first named test failure: $nmh_tests_testname" fi #### Exit with non-zero status if failure. Failure is defined as either