[PATCH] Trapping exit in tests, using return for errors
commit4d9d62fa7ca01c481d224e2a2187e38ec2f0996a
authorPavel Roskin <proski@gnu.org>
Thu, 11 Aug 2005 03:56:21 +0000 (10 23:56 -0400)
committerJunio C Hamano <junkio@cox.net>
Fri, 12 Aug 2005 01:26:16 +0000 (11 18:26 -0700)
tree273d35e3cf278fff4a64824c36571ba385207b63
parentd9bdd39eee54ebd77bc01235c00e827ddbe892d0
[PATCH] Trapping exit in tests, using return for errors

I have noticed that "make test" fails without any explanations when the
"merge" utility is missing.  I don't think tests should be silent in
case of failure.

It turned out that the particular test was using "exit" to interrupt the
test in case of an error.  This caused the whole test script to exit.
No further tests would be run even if "--immediate" wasn't specified.
No error message was printed.

This patch does following:

All instances of "exit", "exit 1" and "(exit 1)" in tests have been
replaced with "return 1".  In fact, "(exit 1)" had no effect.

File descriptor 5 is duplicated from file descriptor 1.  This is needed
to print important error messages from tests.

New function test_run_() has been introduced.  Any "return" in the test
would merely cause that function to return without skipping calls to
test_failure_() and test_ok_().  The new function also traps "exit" and
treats it like a fatal error (in case somebody reintroduces "exit" in
the tests).

test_expect_failure() and test_expect_success() check both the result of
eval and the return value of test_run_().  If the later is not 0, it's
always a failure because it indicates the the test didn't complete.

Signed-off-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
t/t1001-read-tree-m-2way.sh
t/t1002-read-tree-m-u-2way.sh
t/t1005-read-tree-m-2way-emu23.sh
t/t4002-diff-basic.sh
t/t5300-pack-object.sh
t/t5400-send-pack.sh
t/test-lib.sh