From 18b138a1003cf07114c2a4d03e4372e4e7bdc5f4 Mon Sep 17 00:00:00 2001 From: David Levine Date: Sat, 18 Feb 2012 08:03:21 -0600 Subject: [PATCH] The test check() function now removes the expected and actual output files if they're the same, by default. Added check-string() function. --- test/common.sh.in | 27 ++++++++++++++++++++++++++- test/new/test-basic | 6 +++--- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/test/common.sh.in b/test/common.sh.in index 0d7e858..2308d70 100644 --- a/test/common.sh.in +++ b/test/common.sh.in @@ -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 () diff --git a/test/new/test-basic b/test/new/test-basic index e22f5a1..63f4f80 100755 --- a/test/new/test-basic +++ b/test/new/test-basic @@ -40,14 +40,14 @@ cat > $expected < $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 -- 1.7.10.4