···446446447447test_run_ () {
448448 test_cleanup=:
449449+ expecting_failure=$2
449450 eval >&3 2>&4 "$1"
450451 eval_ret=$?
451451- eval >&3 2>&4 "$test_cleanup"
452452+453453+ if test -z "$immediate" || test $eval_ret = 0 || test -n "$expecting_failure"
454454+ then
455455+ eval >&3 2>&4 "$test_cleanup"
456456+ fi
452457 if test "$verbose" = "t" && test -n "$HARNESS_ACTIVE"; then
453458 echo ""
454459 fi
···497502 if ! test_skip "$@"
498503 then
499504 say >&3 "checking known breakage: $2"
500500- test_run_ "$2"
505505+ test_run_ "$2" expecting_failure
501506 if [ "$?" = 0 -a "$eval_ret" = 0 ]
502507 then
503508 test_known_broken_ok_ "$1"
···774779#
775780# except that the greeting and config --unset must both succeed for
776781# the test to pass.
782782+#
783783+# Note that under --immediate mode, no clean-up is done to help diagnose
784784+# what went wrong.
777785778786test_when_finished () {
779787 test_cleanup="{ $*