-#### 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
+#### run_test() 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;
+#### if there is an optional third argument, it is used in the error message.
+run_test() {
+ 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
+ echo "but instead got:" 1>&2
+ echo " '$actual_output'" 1>&2