The test check() function now removes the expected and actual output files if they...
authorDavid Levine <levinedl@acm.org>
Sat, 18 Feb 2012 14:03:21 +0000 (08:03 -0600)
committerDavid Levine <levinedl@acm.org>
Sat, 18 Feb 2012 14:03:21 +0000 (08:03 -0600)
test/common.sh.in
test/new/test-basic

index 0d7e858..2308d70 100644 (file)
@@ -78,10 +78,35 @@ progress_done ()
 
 #### check() requires two arguments, each the name of a file to be
 #### diff'ed.
+#### If the same, the second file is removed.  And the first file is
+####   removed unless the optional third argument has a value of
+####   'keep first'.
 #### If different, global variable "failed" is incremented.
 check() {
     #### POSIX diff should support -c.
-    diff -c "$1" "$2"  ||  failed=`expr ${failed:-0} + 1`
+    if diff -c "$1" "$2"; then
+      test $# -lt 3 -o "$3" != 'keep first'  &&  rm -f "$1"
+      rm -f "$2"
+    else
+      echo "$0: test failed, outputs are in $1 and $2."
+      failed=`expr ${failed:-0} + 1`
+    fi
+}
+
+#### check_string() requires two arguments, the first is a program and
+#### arguments, the second is its expected one-line output string.  If
+#### the actual output does not match that string, an error message is
+#### printed and global variable "failed" is incremented.
+check_string() {
+  #### Invert exit status to prevent triggering immediate exit due to set -e.
+  ! actual_output=`$1 2>&1`
+  if test "$actual_output" != "$2"; then
+    echo "$0: \"$1\" should have produced:" 1>&2
+    echo "    $2" 1>&2
+    echo "but instead produced:" 1>&2
+    echo "    $actual_output" 1>&2
+    failed=`expr ${failed:-0} + 1`
+  fi
 }
 
 setup_test ()
index e22f5a1..63f4f80 100755 (executable)
@@ -40,14 +40,14 @@ cat > $expected <<EOF
  total      0.
 EOF
 new aseq > $actual 2>&1
-check $expected $actual
+check $expected $actual 'keep first'
 new -folders $folders aseq > $actual 2>&1
 check $expected $actual
 
 # test fnext/fprev with no desired messages
 cat /dev/null > $expected
 fnext aseq > $actual 2>&1
-check $expected $actual
+check $expected $actual 'keep first'
 fprev aseq > $actual 2>&1
 check $expected $actual
 
@@ -88,7 +88,7 @@ inbox      3.* 1 3-4
  total      9.
 EOF
 new aseq bseq > $actual 2>&1
-check $expected $actual
+check $expected $actual 'keep first'
 
 # set aseq bseq as unseen
 echo 'Unseen-Sequence: aseq bseq' >> $MH