test-lib: make test_expect_code a test command
commit892e6f7ea61e39d8504e3f227ee3ae874521f05c
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Sun, 3 Oct 2010 19:59:59 +0000 (3 13:59 -0600)
committerJunio C Hamano <gitster@pobox.com>
Wed, 6 Oct 2010 20:26:11 +0000 (6 13:26 -0700)
tree4948f14e9ba239820ce5b6c2d92a69ec80872716
parent6db2103f92cf6c5caeeddec0bfd5f57f94e81d81
test-lib: make test_expect_code a test command

Change test_expect_code to be a normal test command instead of a
top-level command.

As a top-level command it would fail in cases like:

    test_expect_code 1 'phoney' '
        foo && bar && (exit 1)
    '

Here the test might incorrectly succeed if "foo" or "bar" happened to
fail with exit status 1. Instead we now do:

    test_expect_success 'phoney' '
        foo && bar && test_expect_code 1 "(exit 1)"
    '

Which will only succeed if "foo" and "bar" return status 0, and "(exit
1)" returns status 1.  Note that test_expect_code has been made slightly
noisier, as it reports the exit code it receives even upon success.

Some test code in t0000-basic.sh relied on the old semantics of
test_expect_code to test the test_when_finished command. I've
converted that code to use an external test similar to the TODO test I
added in v1.7.3-rc0~2^2~3.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Acked-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/README
t/t0000-basic.sh
t/t1504-ceiling-dirs.sh
t/t6020-merge-df.sh
t/test-lib.sh