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>
This commit is contained in:

committed by
Junio C Hamano

parent
6db2103f92
commit
892e6f7ea6
16
t/README
16
t/README
@ -395,13 +395,6 @@ library for your script to use.
|
||||
Like test_expect_success this function can optionally use a three
|
||||
argument invocation with a prerequisite as the first argument.
|
||||
|
||||
- test_expect_code [<prereq>] <code> <message> <script>
|
||||
|
||||
Analogous to test_expect_success, but pass the test if it exits
|
||||
with a given exit <code>
|
||||
|
||||
test_expect_code 1 'Merge with d/f conflicts' 'git merge "merge msg" B master'
|
||||
|
||||
- test_debug <script>
|
||||
|
||||
This takes a single argument, <script>, and evaluates it only
|
||||
@ -482,6 +475,15 @@ library for your script to use.
|
||||
'Perl API' \
|
||||
"$PERL_PATH" "$TEST_DIRECTORY"/t9700/test.pl
|
||||
|
||||
- test_expect_code <exit-code> <command>
|
||||
|
||||
Run a command and ensure that it exits with the given exit code.
|
||||
For example:
|
||||
|
||||
test_expect_success 'Merge with d/f conflicts' '
|
||||
test_expect_code 1 git merge "merge msg" B master
|
||||
'
|
||||
|
||||
- test_must_fail <git-command>
|
||||
|
||||
Run a git command and ensure it fails in a controlled way. Use
|
||||
|
Reference in New Issue
Block a user