t0000: run cleaning test inside sub-test

Our check of test_when_finished is done directly in the main script, and
if we failed to clean, we complain and exit immediately. It's nicer to
signal a test failure here, for a few reasons:

  - this gives better output to the user when run under a TAP harness
    like "prove"

  - constency; it's the only test left in the file that behaves this way

  - half of its "if" conditional is nonsense anyway; it picked up a
    reference to GIT_TEST_FAIL_PREREQS_INTERNAL in dfe1a17df9 (tests:
    add a special setup where prerequisites fail, 2019-05-13) along with
    its neighbors, even though it has nothing to do with that flag

We could actually do this without a sub-test at all, and just put our
two tests (one to do cleanup, and one to check that it happened) in the
main script. But doing it in a subtest is conceptually cleaner (from the
perspective of the main test script, we are checking only one thing),
and it remains consistent with the "cleanup when failing" test directly
after it, which has to happen in a sub-test (to avoid the main script
complaining of the failed test).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King 2021-01-28 01:32:35 -05:00 committed by Junio C Hamano
parent efd2600e6f
commit 080e295248

View File

@ -852,16 +852,25 @@ test_expect_success 'lazy prereqs do not turn off tracing' "
grep 'echo trace' lazy-prereq-and-tracing/err
"
clean=no
test_expect_success 'tests clean up after themselves' '
run_sub_test_lib_test cleanup "test with cleanup" <<-\EOF &&
clean=no
test_expect_success "do cleanup" "
test_when_finished clean=yes
'
"
test_expect_success "cleanup happened" "
test $clean = yes
"
test_done
EOF
if test -z "$GIT_TEST_FAIL_PREREQS_INTERNAL" -a $clean != yes
then
say "bug in test framework: basic cleanup command does not work reliably"
exit 1
fi
check_sub_test_lib_test cleanup <<-\EOF
ok 1 - do cleanup
ok 2 - cleanup happened
# passed all 2 test(s)
1..2
EOF
'
test_expect_success 'tests clean up even on failures' "
run_sub_test_lib_test_err \