Re: [PATCH] t/t3700: convert two uses of negation operator '!' to use test_must_fail
From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2016-06-15 22:49:09
On Tue, Jul 20, 2010 at 16:38, Jared Hance [off-list ref] wrote:
On Tue, Jul 20, 2010 at 11:32:33AM -0500, Brandon Casey wrote:quoted
I think you have misunderstood the explanation of test_must_fail. The paragraph you quoted actually recommends using test_must_fail instead of "! <git-command>". It says: Use this instead of "! <git-command>" to fail when git commands segfault. Or with a slight rewording: Use test_must_fail instead of "! <git-command>" since test_must_fail will fail when <git-command> segfaults.I think the wording of description of test_must_fail is slightly ambiguous. I read it to mean that: Use test_must_fail only when you are testing to see if git will segfault.
I've interpreted it to mean that as well, but it's starting to look
like a good example of a garden path sentence.
Anyway, it looks like we're wrong and Brandon was right. But I'm going
to submit a doc patch to t/README. Here's the existing use of !
v.s. test_must_fail:
$ cat *.sh | grep -c 'test_must_fail git'
863
$ cat *sh | grep -c '! git '
30
I.e. ! is only used to negate non-git commands like test.
The example in the comments for test_must_fail in test-lib.sh backs this up:
# Writing this as "! git checkout ../outerspace" is wrong, because
# the failure could be due to a segv. We want a controlled failure.
Rather than: Use test_must_fail to be safe from git segfaults.