]> git.ipfire.org Git - thirdparty/git.git/commitdiff
test-lib: have --immediate emit valid TAP on failure
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Wed, 23 Mar 2022 20:51:31 +0000 (21:51 +0100)
committerJunio C Hamano <gitster@pobox.com>
Thu, 24 Mar 2022 21:47:02 +0000 (14:47 -0700)
Change the "--immediate" option so that it emits valid TAP on
failure. Before this it would omit the required plan at the end,
e.g. under SANITIZE=leak we'd show a "No plan found in TAP output"
error from "prove":

    $ prove t0006-date.sh ::  --immediate
    t0006-date.sh .. Dubious, test returned 1 (wstat 256, 0x100)
    Failed 1/22 subtests

    Test Summary Report
    -------------------
    t0006-date.sh (Wstat: 256 Tests: 22 Failed: 1)
      Failed test:  22
      Non-zero exit status: 1
      Parse errors: No plan found in TAP output
    Files=1, Tests=22,  0 wallclock secs ( 0.02 usr  0.01 sys +  0.18 cusr  0.06 csys =  0.27 CPU)
    Result: FAIL

Now we'll emit output that doesn't result in TAP parsing failures:

    $ prove t0006-date.sh ::  --immediate
    t0006-date.sh .. Dubious, test returned 1 (wstat 256, 0x100)
    Failed 1/22 subtests

    Test Summary Report
    -------------------
    t0006-date.sh (Wstat: 256 Tests: 22 Failed: 1)
      Failed test:  22
      Non-zero exit status: 1
    Files=1, Tests=22,  0 wallclock secs ( 0.02 usr  0.00 sys +  0.19 cusr  0.05 csys =  0.26 CPU)
    Result: FAIL

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t0000-basic.sh
t/test-lib.sh

index 9dcbf518a7828e25965bda8f16884867c768b62a..17a268ccd1b014201e25c810ebade41f6f31aecf 100755 (executable)
@@ -101,6 +101,19 @@ test_expect_success 'subtest: 2/3 tests passing' '
        EOF
 '
 
+test_expect_success 'subtest: --immediate' '
+       run_sub_test_lib_test_err partial-pass \
+               --immediate &&
+       check_sub_test_lib_test_err partial-pass \
+               <<-\EOF_OUT 3<<-EOF_ERR
+       > ok 1 - passing test #1
+       > not ok 2 - failing test #2
+       > #     false
+       > 1..2
+       EOF_OUT
+       EOF_ERR
+'
+
 test_expect_success 'subtest: a failing TODO test' '
        write_and_run_sub_test_lib_test failing-todo <<-\EOF &&
        test_expect_success "passing test" "true"
index 515b1af7ed4bf03d8e49c1099b8acb481268b35f..4373f7d70b5ebb765ff5fdae3ec3f665dba7dc05 100644 (file)
@@ -806,7 +806,11 @@ test_failure_ () {
        say_color error "not ok $test_count - $1"
        shift
        printf '%s\n' "$*" | sed -e 's/^/#      /'
-       test "$immediate" = "" || _error_exit
+       if test -n "$immediate"
+       then
+               say_color error "1..$test_count"
+               _error_exit
+       fi
 }
 
 test_known_broken_ok_ () {