rev-list tests: don't hide abort() in "test_expect_failure"

Change a couple of uses of "test_expect_failure" to use a "test_expect_success" to positively assert the current behavior, and replace the intent of "test_expect_failure" with a "TODO" comment int the description. As noted in [1] the "test_expect_failure" feature is overly eager to accept any failure as OK, and thus by design hides segfaults, abort() etc. Because of that I didn't notice in dd9cede9136 (leak tests: mark some rev-list tests as passing with SANITIZE=leak, 2021-10-31) that this test leaks memory under SANITIZE=leak. I have some larger local changes to add a better "test_expect_failure", which would work just like "test_expect_success", but would allow us say "test_todo" here (and "success" would emit a "not ok [...] # TODO", not "ok [...]". So even though using "test_expect_success" here comes with its own problems[2], let's use it as a narrow change to fix the problem at hand here and stop conflating the current "success" with actual SANITIZE=leak failures. 1. https://lore.kernel.org/git/87tuhmk19c.fsf@evledraar.gmail.com/ 2. https://lore.kernel.org/git/xmqq4k9kj15p.fsf@gitster.g/ Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Ævar Arnfjörð Bjarmason committed Mar 7, 2022 at 13:49 UTC cf10c5b4cf75e383eb50daa17dd073583260e1a5
1 file changed +9 -4
t/t6102-rev-list-unexpected-objects.sh
+9 -4
@@ -17,8 +17,13 @@ test_expect_success 'setup unexpected non-blob entry' '
17 broken_tree="$(git hash-object -w --literally -t tree broken-tree)"
18 '
19
20 -test_expect_failure 'traverse unexpected non-blob entry (lone)' '
21 - test_must_fail git rev-list --objects $broken_tree
20 +test_expect_success !SANITIZE_LEAK 'TODO (should fail!): traverse unexpected non-blob entry (lone)' '
21 + sed "s/Z$//" >expect <<-EOF &&
22 + $broken_tree Z
23 + $tree foo
24 + EOF
25 + git rev-list --objects $broken_tree >actual &&
26 + test_cmp expect actual
27 '
28
29 test_expect_success 'traverse unexpected non-blob entry (seen)' '
@@ -116,8 +121,8 @@ test_expect_success 'setup unexpected non-blob tag' '
121 tag=$(git hash-object -w --literally -t tag broken-tag)
122 '
123
119 -test_expect_failure 'traverse unexpected non-blob tag (lone)' '
120 - test_must_fail git rev-list --objects $tag
124 +test_expect_success !SANITIZE_LEAK 'TODO (should fail!): traverse unexpected non-blob tag (lone)' '
125 + git rev-list --objects $tag
126 '
127
128 test_expect_success 'traverse unexpected non-blob tag (seen)' '