Fixed test suite to work with Solaris Bourne shell:
authorDavid Levine <levinedl@acm.org>
Wed, 25 Apr 2012 02:04:54 +0000 (21:04 -0500)
committerDavid Levine <levinedl@acm.org>
Wed, 25 Apr 2012 02:09:39 +0000 (21:09 -0500)
1) Removed ! (negation) of statuses.
2) Removed initializations from export statements.
3) Replaced $() with ``.
4) Replaced $(()) (and expr) with new function arith_eval ().
(cherry picked from commit a6af3b6300e02ade9f223f8d91667f590d191dc9)

23 files changed:
test/bad-input/test-header
test/common.sh.in
test/folder/test-create
test/format/test-localmbox
test/format/test-myhost
test/format/test-mymbox
test/format/test-myname
test/forw/test-forw-digest
test/inc/test-eom-align
test/inc/test-inc-scanout
test/mhlist/test-mhlist
test/mhparam/test-mhparam
test/mhpath/test-mhpath
test/mhshow/test-cte-binary
test/mhshow/test-qp
test/mhshow/test-subpart
test/mhstore/test-mhstore
test/pick/test-pick
test/post/test-post-fcc
test/refile/test-refile
test/whatnow/test-attach-detach
test/whatnow/test-cd
test/whatnow/test-ls

index b45a576..af7e784 100755 (executable)
@@ -18,8 +18,8 @@ expected=$MH_TEST_DIR/$$.expected
 actual=$MH_TEST_DIR/$$.actual
 
 # Write message with bogus header field (missing blank line, really).
-msgfile=$(mhpath new)
-msgnum=$(basename $msgfile)
+msgfile=`mhpath new`
+msgnum=`basename $msgfile`
 cat > $msgfile <<EOF
 Date: Sun, 18 Dec 2005 00:52:39 +0100
 From: foo@example.edu
index 7c38d7d..58297f0 100644 (file)
@@ -29,6 +29,17 @@ output_md5()
   @MD5SUM@ $* | @MD5FMT@ | cut -d ' ' -f 1
 }
 
+#### Use built-in $((...)) in test suite if shell supports it.
+#### Borrowed from configure's as_fn_arith.  The result is placed
+#### in global arith_val.
+#### Detected at run-time instead of by configure to allow testing
+#### with different shells.
+if (eval "test \$(( 1 + 1 )) = 2" 2>/dev/null); then
+  eval 'arith_eval () { arith_val=$(( $* )); }'
+else
+  arith_eval () { arith_val=`expr "$@" || test $? -eq 1`; }
+fi
+
 test_skip ()
 {
   WHY="$1"
@@ -57,7 +68,7 @@ findprog()
 
 require_prog ()
 {
-  if [ -z "$(findprog $1)" ]; then
+  if [ -z `findprog $1` ]; then
     test_skip "missing $1"
   fi
 }
@@ -68,10 +79,10 @@ progress_update ()
   THIS="$1"
   FIRST="$2"
   LAST="$3"
-  RANGE="$(($LAST - $FIRST))"
-  PROG="$(($THIS - $FIRST))"
+  arith_eval $LAST - $FIRST; RANGE=$arith_val
+  arith_eval $THIS - $FIRST; PROG=$arith_val
   # this automatically rounds to nearest integer
-  PERC="$(((100 * $PROG) / $RANGE))"
+  arith_eval 100 \* $PROG / $RANGE; PERC=$arith_val
   # note \r so next update will overwrite
   printf "%3d%%\r" $PERC
 }
@@ -104,8 +115,9 @@ check() {
 #### an error message is printed and global variable "failed" is incremented;
 #### if there is an optional third argument, it is used in the error message.
 run_test() {
-  #### Invert exit status to prevent triggering immediate exit due to set -e.
-  ! actual_output="`$1 2>&1`"
+  set +e
+  actual_output=`$1 2>&1`
+  set -e
   if test x"$actual_output" != x"$2"; then
     echo "$0: ${3:-\"$1\"} expected:" 1>&2
     echo "    '$2'" 1>&2
@@ -117,15 +129,18 @@ run_test() {
 
 setup_test ()
 {
-  export MH=${MH_TEST_DIR}/Mail/.mh_profile
-  export MHMTSCONF=${MH_INST_DIR}${sysconfdir}/mts.conf
-  export PATH=${MH_INST_DIR}${bindir}:${PATH}
-  export MH_LIB_DIR=${MH_INST_DIR}${auxexecdir}
+  MH=${MH_TEST_DIR}/Mail/.mh_profile
+  MHMTSCONF=${MH_INST_DIR}${sysconfdir}/mts.conf
+  PATH=${MH_INST_DIR}${bindir}:${PATH}
+  MH_LIB_DIR=${MH_INST_DIR}${auxexecdir}
+  export MH MHMTSCONF MH_LIB_DIR
 
   #
   # Only install once
   #
-  if [ ! -d ${MH_INST_DIR}${bindir} ]; then
+  if [ -d ${MH_INST_DIR}${bindir} ]; then
+    :
+  else
     (cd ${MH_OBJ_DIR} && make DESTDIR=${MH_INST_DIR} install) || exit 1
   fi
 
index 1af751e..59e7c3f 100755 (executable)
@@ -15,7 +15,9 @@ fi
 setup_test
 
 folder -create +testfolder > /dev/null
-if [ ! -d "$MH_TEST_DIR/Mail/testfolder" ]; then
+if [ -d "$MH_TEST_DIR/Mail/testfolder" ]; then
+    :
+else
     exit 1
 fi
 
index 36f9392..d3c43ef 100755 (executable)
@@ -19,7 +19,7 @@ echo "Local-Mailbox: ${testname}" >> ${MH}
 
 # We can use "ap" to get the output of format commands
 
-testoutput=$(${MH_LIB_DIR}/ap -format "%(localmbox)" ignore)
+testoutput=`${MH_LIB_DIR}/ap -format "%(localmbox)" ignore`
 
 if [ x"${testname}" != x"${testoutput}" ]; then
        echo "Expected ${testname}, got ${testoutput}"
index 635f35f..375f8ac 100755 (executable)
@@ -18,7 +18,7 @@ run_test "${MH_LIB_DIR}/ap -format %(myhost) ignore" "$host" \
          "local hostname test"
 
 cp ${MHMTSCONF} ${MH_TEST_DIR}/Mail/mts.conf || exit 1
-export MHMTSCONF="${MH_TEST_DIR}/Mail/mts.conf"
+MHMTSCONF="${MH_TEST_DIR}/Mail/mts.conf"
 
 echo "localname: some.random.name" >> ${MHMTSCONF}
 
index c154a8b..ba0f706 100755 (executable)
@@ -13,7 +13,7 @@ fi
 
 setup_test
 
-user="`id -un`"
+user=`id -un`
 host=`${MH_OBJ_DIR}/test/getfqdn`
 
 run_test "${MH_LIB_DIR}/ap -format %(mymbox{text}) ${user}" \
index 15ca852..dda0f37 100755 (executable)
@@ -26,7 +26,8 @@ echo "Signature: Some Random Name 1" >> ${MH}
 run_test "${MH_LIB_DIR}/ap -format %(myname) ignore" \
          "Some Random Name 1" "MH Profile Signature test"
 
-export SIGNATURE="Some Random Name 2"
+SIGNATURE="Some Random Name 2"
+export SIGNATURE
 
 run_test "${MH_LIB_DIR}/ap -format %(myname) ignore" \
          "${SIGNATURE}" "SIGNATURE Environment test"
index 7106fe8..ff39ddd 100755 (executable)
@@ -24,7 +24,7 @@ cc4="CC User Four <ccuserfour@example.com>"
 fcc1="+nosuchmailbox"
 fcc2="+nosuchmailbox2"
 
-digestdate=$(date "+%A, %e %b %Y")
+digestdate=`date "+%A, %e %b %Y"`
 
 cat > "$expected" <<EOF
 From:     ${from}
@@ -50,14 +50,14 @@ EOF
 i=1
 while [ "$i" -le 6 ]
 do
-    filename=$(mhpath +inbox $i)
+    filename=`mhpath +inbox $i`
     cat $filename >> "$expected"
     cat >> "$expected" <<EOF
 
 ------------------------------
 
 EOF
-    i=$(expr $i + 1)
+    i=`expr $i + 1`
 done
 
 cat >> "$expected" <<EOF
@@ -96,14 +96,14 @@ EOF
 i=7
 while [ "$i" -le 8 ]
 do
-    filename=$(mhpath +inbox $i)
+    filename=`mhpath +inbox $i`
     cat $filename >> "$expected"
     cat >> "$expected" <<EOF
 
 ------------------------------
 
 EOF
-    i=$(expr $i + 1)
+    i=`expr $i + 1`
 done
 
 cat >> "$expected" <<EOF
index 5d4b616..c6e6225 100755 (executable)
@@ -15,13 +15,13 @@ setup_test
 
 THISDIR="$srcdir/test/inc"
 
-if [ ! -z "$VALGRIND_ME" ]; then
+if [ -z "$VALGRIND_ME" ]; then
+    VALGRIND=
+else
     require_prog valgrind
     # Lack of quotes here is important
     VALGRIND="valgrind --quiet --error-exitcode=1"
     echo "Running tests under valgrind: takes ages!"
-else
-    VALGRIND=
 fi
 
 # First check that all our various pieces of text are
@@ -51,8 +51,8 @@ fi
 # bigger as well.
 STDIO_BUFSZ=16384
 
-FROMLINESZ="$(wc -c "$FROMLINE" | cut -d ' ' -f 1)"
-HDRSZ="$(wc -c "$HDR" | cut -d ' ' -f 1)"
+FROMLINESZ=`wc -c "$FROMLINE" | cut -d ' ' -f 1`
+HDRSZ=`wc -c "$HDR" | cut -d ' ' -f 1`
 
 # makembox_A mboxname sz
 # Assemble a mailbox into file mboxname, with two messages, such
@@ -65,7 +65,7 @@ makembox_A () {
   MBOX="$1"
   SZ=$2
 
-  WANTSZ="$(($SZ - $HDRSZ - $FROMLINESZ - 1))"
+  arith_eval $SZ - $HDRSZ - $FROMLINESZ - 1; WANTSZ=$arith_val
   dd if="$FILLER" of="$MBOX.body" bs="$WANTSZ" count=1 2>/dev/null
   echo >> "$MBOX.body"
   cat "$FROMLINE" "$HDR" "$MBOX.body" > "$MBOX"
@@ -84,7 +84,7 @@ makembox_B () {
   MBOX="$1"
   SZ=$2
 
-  WANTSZ="$(($SZ - $HDRSZ - $FROMLINESZ - 1))"
+  arith_eval $SZ - $HDRSZ - $FROMLINESZ - 1; WANTSZ=$arith_val
   dd if="$FILLER" of="$MBOX.body" bs="$WANTSZ" count=1 2>/dev/null
   echo >> "$MBOX.body"
   cat "$FROMLINE" "$HDR" "$MBOX.body" > "$MBOX"
@@ -124,15 +124,16 @@ do_one_test_B () {
 # Cover a decent range around the stdio buffer size to make sure we catch
 # any corner cases whether they relate to total message size equal to
 # buffer size or to body size equal to buffer size.
-START=$(($STDIO_BUFSZ - 16))
-FINISH=$(($STDIO_BUFSZ + $HDRSZ + $FROMLINESZ + 32))
-echo "Testing inc of files with various alignments of eom marker with buffer size..."
+arith_eval $STDIO_BUFSZ - 16; START=$arith_val
+arith_eval $STDIO_BUFSZ + $HDRSZ + $FROMLINESZ + 32; FINISH=$arith_val
+echo \
+"Testing inc of files with various alignments of eom marker with buffer size..."
 i="$START"
 while test $i -le $FINISH; do
   progress_update $i $START $FINISH
   do_one_test_A $i
   do_one_test_B $i
-  i=$(expr $i + 1)
+  i=`expr $i + 1`
 done
 progress_done
 
index 419147c..b66965a 100755 (executable)
@@ -189,7 +189,7 @@ run_test "inc -file ${MH_TEST_DIR}/test.mbox -width 120 -truncate" \
 
   11+ 03/01 Mr Nobody          Who is on first?<<Abbott: Every dollar of it. And why not, the man's entitled to it. Cos"
 
-check "$(mhpath +inbox 11)" "${MH_TEST_DIR}/test.mbox.2" "keep first"
+check `mhpath +inbox 11` "${MH_TEST_DIR}/test.mbox.2" "keep first"
 rm -f "${MH_TEST_DIR}/test.mbox" "${MH_TEST_DIR}/test.mbox.2"
 
 run_test "scan -width 120 +inbox 11" \
index c1bac06..0588199 100755 (executable)
@@ -72,7 +72,7 @@ mhlist 2 8 > $actual 2>&1
 check $expected $actual
 
 # Write message with a text/plain subpart.
-msgfile=$(mhpath new)
+msgfile=`mhpath new`
 cat > $msgfile <<EOF
 To: recipient@example.com
 From: sender@example.com
index cdaab59..08aff2c 100755 (executable)
@@ -31,13 +31,16 @@ Usage: mhparam [profile-components] [switches]
   -version
   -help
 EOF
-# The exit status is 1 with -help, so invert it to prevent
-# triggering immediate exit due to set -e.
-! mhparam -help >$actual 2>&1
+# The exit status is 1 with -help, so temporarily disable -e.
+set +e
+mhparam -help >$actual 2>&1
+set -e
 check $expected $actual
 
 # check -version
-if ! mhparam -v | grep '^mhparam --' >/dev/null; then
+if mhparam -v | grep '^mhparam --' >/dev/null; then
+  :
+else
   echo "$0: mhparam -v generated unexpected output" 1>&2
   failed=`expr ${failed:-0} + 1`
 fi
@@ -133,8 +136,10 @@ check $expected $actual
 run_test 'mhparam faceproc formatproc rmmproc' ''
 
 #### test sbackup separately because it's only passed as a -D compile option
-if ! mhparam sbackup | grep -F ',
+if mhparam sbackup | grep -F ',
 #' >/dev/null; then
+  :
+else
   echo mhparam sbackup failed
   failed=`expr ${failed:-0} + 1`
 fi
index 71ee9ea..54a1a12 100755 (executable)
@@ -27,13 +27,16 @@ Usage: mhpath [+folder] [msgs] [switches]
   -version
   -help
 EOF
-# The exit status is 1 with -help, so invert it to prevent
-# triggering immediate exit due to set -e.
-! mhpath -help > $actual 2>&1
+# The exit status is 1 with -help, so temporarily disable -e.
+set +e
+mhpath -help > $actual 2>&1
+set -e
 check $expected $actual
 
 # check -version
-if ! mhpath -v | grep '^mhpath --' > /dev/null; then
+if mhpath -v | grep '^mhpath --' > /dev/null; then
+  :
+else
   echo "$0: mhpath -v generated unexpected output" 1>&2
   failed=`expr ${failed:-0} + 1`
 fi
index b53f1e0..8f582b0 100755 (executable)
@@ -17,8 +17,8 @@ expected=$MH_TEST_DIR/$$.expected
 actual=$MH_TEST_DIR/$$.actual
 
 # Write message with Content-Transfer-Encoding: binary text.
-msgfile=$(mhpath new)
-msgnum=$(basename $msgfile)
+msgfile=`mhpath new`
+msgnum=`basename $msgfile`
 cat > $msgfile <<EOF
 Content-Transfer-Encoding: binary
 To: bar@example.edu
index 12f7f83..924ee7b 100755 (executable)
@@ -20,8 +20,8 @@ expected=$MH_TEST_DIR/$$.expected
 actual=$MH_TEST_DIR/$$.actual
 
 # Write message with bogus quoted-printable data.
-msgfile=$(mhpath new)
-msgnum=$(basename $msgfile)
+msgfile=`mhpath new`
+msgnum=`basename $msgfile`
 cat > $msgfile <<EOF
 From: foo@example.edu
 To: bar@example.edu
index c2a7262..eb74acd 100755 (executable)
@@ -21,8 +21,8 @@ expected=$MH_TEST_DIR/$$.expected
 actual=$MH_TEST_DIR/$$.actual
 
 # Write message with a text/plain subpart.
-msgfile=$(mhpath new)
-msgnum=$(basename $msgfile)
+msgfile=`mhpath new`
+msgnum=`basename $msgfile`
 cat > $msgfile <<EOF
 MIME-Version: 1.0
 Content-Type: multipart/mixed; boundary="NextPart_001"
index cbb1859..55cea9f 100755 (executable)
@@ -66,7 +66,7 @@ EOF
 check $expected 6.txt
 
 # Write message with a text/plain subpart.
-msgfile=$(mhpath new)
+msgfile=`mhpath new`
 cat > $msgfile <<EOF
 To: recipient@example.com
 From: sender@example.com
@@ -192,7 +192,7 @@ run_test 'mhstore last -part 2 -check -nocheck' \
 check $expected 11.2.txt
 
 # check reassembly of message/partial messages (RFC 1521, 7.3.2)
-msgfile=$(mhpath new)
+msgfile=`mhpath new`
 cat > $msgfile <<EOF
 To: recipient@example.com
 From: sender@example.com
@@ -205,7 +205,7 @@ Content-Type: text/plain; charset="iso-8859-1"
 This is part one of three.
 EOF
 
-msgfile=$(mhpath new)
+msgfile=`mhpath new`
 cat > $msgfile <<EOF
 To: recipient@example.com
 From: sender@example.com
@@ -216,7 +216,7 @@ Content-Type: message/partial; id="test-mhstore message/partial test"; number=2
 This is part two of three.
 EOF
 
-msgfile=$(mhpath new)
+msgfile=`mhpath new`
 cat > $msgfile <<EOF
 To: recipient@example.com
 From: sender@example.com
index 8df115f..ac9f6e4 100755 (executable)
@@ -145,7 +145,9 @@ EOF
 check $expected $actual
 
 # Invert exit status so execution doesn't terminate due to -e.
-! pick -after '29 Sep 2008 00:00:00' >$actual 2>/dev/null
+set +e
+pick -after '29 Sep 2008 00:00:00' >$actual 2>/dev/null
+set -e
 cat >$expected <<EOF
 0
 EOF
@@ -165,16 +167,18 @@ cat >$expected <<EOF
 10
 EOF
 check $expected $actual
-# Invert exit status so execution doesn't terminate due to -e.
-! pick -before '28 Sep 2006 00:00:00' last:3 >$actual 2>/dev/null
+set +e
+pick -before '28 Sep 2006 00:00:00' last:3 >$actual 2>/dev/null
+set -e
 cat >$expected <<EOF
 0
 EOF
 check $expected $actual
 
 # Test -datefield.
-# Invert exit status so execution doesn't terminate due to -e.
-! pick -datefield date -after '29 Sep 2008 00:00:00' >$actual 2>/dev/null
+set +e
+pick -datefield date -after '29 Sep 2008 00:00:00' >$actual 2>/dev/null
+set -e
 cat >$expected <<EOF
 0
 EOF
index 5ade972..159823f 100755 (executable)
@@ -52,7 +52,7 @@ Date:
 This is a fcc test
 EOF
 
-msgname=$(mhpath +inbox 11)
+msgname=`mhpath +inbox 11`
 
 sed -i.bak -e 's/^Date:.*/Date:/' "${msgname}"
 
index 128ebd4..9de20e2 100755 (executable)
@@ -176,7 +176,9 @@ run_test 'folders -noheader' \
 other  has 7 messages  (1-13).
 
 TOTAL = 12 messages in 2 folders.'
-if ! test -f $MH_TEST_DIR/Mail/inbox/,2; then
+if test -f $MH_TEST_DIR/Mail/inbox/,2; then
+  :
+else
   echo "$0: refile -nounlink failed" 1>&2
   failed=`expr ${failed:-0} + 1`
 fi
index fe5785c..7d538a2 100755 (executable)
@@ -38,7 +38,7 @@ touch $expected $expectederr $actual $actualerr
 #
 
 set +e
-whatnowtest="$(echo cd | TERM=dumb whatnow -prompt '')"
+whatnowtest=`echo cd | TERM=dumb whatnow -prompt ''`
 set -e
 
 case "${whatnowtest}" in
@@ -49,15 +49,15 @@ $testname
 detach $testname_quoted
 alist
 EOF
-    break;;
+    ;;
     "") cat > "$expected" <<EOF
 $testname
 EOF
-    break;;
+    ;;
     *) echo "Unknown response to whatnow readline test"
     echo "Response is: ${whatnowtest}"
     exit 1
-    break;;
+    ;;
 esac
 
 # whatnow's exit status is always 1 so that is not a failure
index f7f7bc9..9cc3286 100755 (executable)
@@ -32,7 +32,7 @@ actual=$MH_TEST_DIR/$$.actual
 #
 
 set +e
-whatnowtest="$(echo cd | TERM=dumb whatnow -prompt '')"
+whatnowtest=`echo cd | TERM=dumb whatnow -prompt ''`
 set -e
 
 case "${whatnowtest}" in
@@ -41,15 +41,15 @@ cd ${MH_TEST_DIR}/foo\'s\ bar
 pwd
 $SPDIR
 EOF
-    break;;
+    ;;
     "") cat > "$expected" <<EOF
 $SPDIR
 EOF
-    break;;
+    ;;
     *) echo "Unknown response to whatnow readline test"
     echo "Response is: ${whatnowtest}"
     exit 1
-    break;;
+    ;;
 esac
 
 cat > $expectederr <<EOF
index 9d072fa..6509fd0 100755 (executable)
@@ -33,7 +33,7 @@ actual=$MH_TEST_DIR/$$.actual
 #
 
 set +e
-whatnowtest="$(echo cd | TERM=dumb whatnow -prompt '')"
+whatnowtest=`echo cd | TERM=dumb whatnow -prompt ''`
 set -e
 
 case "${whatnowtest}" in
@@ -42,16 +42,16 @@ baz
 boz
 ls
 EOF
-    break;;
+    ;;
     "") cat > "$expected" <<EOF
 baz
 boz
 EOF
-    break;;
+    ;;
     *) echo "Unknown response to whatnow readline test"
     echo "Response is: ${whatnowtest}"
     exit 1
-    break;;
+    ;;
 esac
 
 cat > $expectederr <<EOF