+
+ if [ "$success" ]; then
+ [ "$keepfirst" ] || rm -f "$first"
+ rm -f "$second"
+ else
+ echo
+ #### POSIX diff should support -c.
+ diff -c "$first" "$second" || true
+ echo
+ echo "$0: test failed, outputs are in $first and $second."
+ failed=`expr ${failed:-0} + 1`
+ #### Set return status of the function.
+ [ $failed -eq 0 ]
+ fi
+}
+
+
+#### Shortcut to enable use of valgrind: set NMH_VALGRIND environment
+#### variable (to anything) so run_* will use valgrind.
+if [ "${NMH_VALGRIND}" -a -z "${NMH_TEST_PREFIX}" ]; then
+ #### Need absolute path to valgrind.supp in case the test does a cd.
+ NMH_TEST_PREFIX="valgrind --quiet --error-exitcode=1 \
+ --suppressions=`cd ${srcdir} && pwd`/test/valgrind.supp"
+fi
+
+#### Run test under another program by setting NMH_TEST_PREFIX
+#### environment variable to, e.g., 'valgrind --quiet'.
+run_prog() {
+ case $1 in
+ #### Don't run valgrind on shell built-in.
+ eval\ *) "$@" ;;
+ *) ${NMH_TEST_PREFIX} "$@" ;;
+ esac