зеркало из https://github.com/microsoft/git.git
Merge branch 'jc/doc-test-leaving-early'
Document the recommended way to abort a failing test early (e.g. by exiting a loop), which is to say "return 1". * jc/doc-test-leaving-early: t/README: suggest how to leave test early with failure
This commit is contained in:
Коммит
b07c72100f
35
t/README
35
t/README
|
@ -547,6 +547,41 @@ Here are the "do's:"
|
|||
reports "ok" or "not ok" to the end user running the tests. Under
|
||||
--verbose, they are shown to help debug the tests.
|
||||
|
||||
- Be careful when you loop
|
||||
|
||||
You may need to verify multiple things in a loop, but the
|
||||
following does not work correctly:
|
||||
|
||||
test_expect_success 'test three things' '
|
||||
for i in one two three
|
||||
do
|
||||
test_something "$i"
|
||||
done &&
|
||||
test_something_else
|
||||
'
|
||||
|
||||
Because the status of the loop itself is the exit status of the
|
||||
test_something in the last round, the loop does not fail when
|
||||
"test_something" for "one" or "two" fails. This is not what you
|
||||
want.
|
||||
|
||||
Instead, you can break out of the loop immediately when you see a
|
||||
failure. Because all test_expect_* snippets are executed inside
|
||||
a function, "return 1" can be used to fail the test immediately
|
||||
upon a failure:
|
||||
|
||||
test_expect_success 'test three things' '
|
||||
for i in one two three
|
||||
do
|
||||
test_something "$i" || return 1
|
||||
done &&
|
||||
test_something_else
|
||||
'
|
||||
|
||||
Note that we still &&-chain the loop to propagate failures from
|
||||
earlier commands.
|
||||
|
||||
|
||||
And here are the "don'ts:"
|
||||
|
||||
- Don't exit() within a <script> part.
|
||||
|
|
Загрузка…
Ссылка в новой задаче