]> diplodocus.org Git - nmh/blobdiff - test/common.sh.in
Removed unused fail label.
[nmh] / test / common.sh.in
index e47cca0969c02179162247c0564bbe06da4729f4..d3875a39d9da0296ecf710cbf96fa64ecac16517 100644 (file)
@@ -29,28 +29,22 @@ 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
-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
+MHTMPDIR="$MH_TEST_DIR"/Mail
 export MHTMPDIR
 
 #### If you're reading this .... you can set MH_TEST_NOCLEANUP to prevent
@@ -79,8 +73,8 @@ fi
 
 test_skip ()
 {
-  WHY="$1"
-  echo "$Test $0 SKIP ($WHY)"
+  why="$1"
+  echo "$0: skipped: $why"
   exit 77
 }
 
@@ -184,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'
@@ -281,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}" <<EOF
+#! /bin/sh
+$*
+EOF
+    chmod +x "${cmd}"
+
+    "${runpty}" "${actual}" "${cmd}"
+}
+
+#### Ensure that runpty makes the program look like it's connected to a
+#### terminal.  The welcome message code in sbr/utils.c needs that.
+require_runpty_to_simulate_tty() {
+  actual="${MH_TEST_DIR}/test-runpty"
+  run_without_input "${actual}" \
+                    'if test -t 0  -a  -t 1  -a  -t 2; then echo tty; fi'
+  grep tty "${actual}" >/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
@@ -311,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
@@ -320,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 $nmh_tests_testname failed
+        echo "first named test failure: $nmh_tests_testname"
     fi
 
     #### Exit with non-zero status if failure.  Failure is defined as either