Git development
 help / color / mirror / Atom feed
* Re: [PATCH 2/2] test-lib-functions: use BUG() in 'test_must_fail'
       [not found]   ` <YDLXf+OoJabrJTWu@coredump.intra.peff.net>
@ 2026-04-14 20:52     ` SZEDER Gábor
  2026-04-14 21:11       ` Junio C Hamano
  2026-04-14 22:14       ` Jeff King
  0 siblings, 2 replies; 5+ messages in thread
From: SZEDER Gábor @ 2026-04-14 20:52 UTC (permalink / raw)
  To: Jeff King; +Cc: git, Denton Liu

On Sun, Feb 21, 2021 at 04:58:23PM -0500, Jeff King wrote:
> On Sun, Feb 21, 2021 at 08:25:12PM +0100, SZEDER Gábor wrote:
> 
> > In many test helper functions we verify that they were invoked with
> > sensible parameters, and call BUG() to abort the test script when the
> > parameters are buggy.  6a67c75948 (test-lib-functions: restrict
> > test_must_fail usage, 2020-07-07) added such a parameter verification
> > to 'test_must_fail', but it didn't report the error with BUG(), like
> > we usually do.
> 
> OK. I do not care all that much between BUG() and not-BUG here, since we
> are unlikely to have a test where test_must_fail returning 0 yields
> success. I guess the most interesting outcome is that we would notice a
> bug in a test_expect_failure block.

If I had managed to send a new version of this patch series in the
last 5 years :), then this would have caught the issue noted in:

  https://public-inbox.org/git/ad6hovxCkwMTG11U@szeder.dev/



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2] test-lib-functions: use BUG() in 'test_must_fail'
  2026-04-14 20:52     ` [PATCH 2/2] test-lib-functions: use BUG() in 'test_must_fail' SZEDER Gábor
@ 2026-04-14 21:11       ` Junio C Hamano
  2026-04-14 22:18         ` Jeff King
  2026-04-14 22:14       ` Jeff King
  1 sibling, 1 reply; 5+ messages in thread
From: Junio C Hamano @ 2026-04-14 21:11 UTC (permalink / raw)
  To: SZEDER Gábor; +Cc: Jeff King, git, Denton Liu

SZEDER Gábor <szeder.dev@gmail.com> writes:

> On Sun, Feb 21, 2021 at 04:58:23PM -0500, Jeff King wrote:
>> On Sun, Feb 21, 2021 at 08:25:12PM +0100, SZEDER Gábor wrote:
>> 
>> > In many test helper functions we verify that they were invoked with
>> > sensible parameters, and call BUG() to abort the test script when the
>> > parameters are buggy.  6a67c75948 (test-lib-functions: restrict
>> > test_must_fail usage, 2020-07-07) added such a parameter verification
>> > to 'test_must_fail', but it didn't report the error with BUG(), like
>> > we usually do.
>> 
>> OK. I do not care all that much between BUG() and not-BUG here, since we
>> are unlikely to have a test where test_must_fail returning 0 yields
>> success. I guess the most interesting outcome is that we would notice a
>> bug in a test_expect_failure block.
>
> If I had managed to send a new version of this patch series in the
> last 5 years :), then this would have caught the issue noted in:
>
>   https://public-inbox.org/git/ad6hovxCkwMTG11U@szeder.dev/

I was wondering if we should remove "test_might_fail".  Its use case
is rather limited to very narrow cases, like

 * we want to kill something but it may have exited on its own

 * we want "git config --unset" but the variable may or may not be set

 * we want "git foo --abort" just in case we are in the middle of
   "git foo"

all of which is clearer with "|| :", and more importantly, the thing
whose "failure" is protected against the test framework declaring a
test failure is *not* what we are testing (these "config --unset"
are not about testing "git config", in other words).

So the extra ability test_must_fail and test_might_fail have that
they can detect uncontrolled death with non-zero exit status (aka
"crash") is not very interesting---it is more like "As we are
running a git command here, it would be better to catch than not
catch a segfault here as well", i.e., a nice to have item.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2] test-lib-functions: use BUG() in 'test_must_fail'
  2026-04-14 20:52     ` [PATCH 2/2] test-lib-functions: use BUG() in 'test_must_fail' SZEDER Gábor
  2026-04-14 21:11       ` Junio C Hamano
@ 2026-04-14 22:14       ` Jeff King
  1 sibling, 0 replies; 5+ messages in thread
From: Jeff King @ 2026-04-14 22:14 UTC (permalink / raw)
  To: SZEDER Gábor; +Cc: git, Denton Liu

On Tue, Apr 14, 2026 at 10:52:33PM +0200, SZEDER Gábor wrote:

> On Sun, Feb 21, 2021 at 04:58:23PM -0500, Jeff King wrote:
> > On Sun, Feb 21, 2021 at 08:25:12PM +0100, SZEDER Gábor wrote:
> > 
> > > In many test helper functions we verify that they were invoked with
> > > sensible parameters, and call BUG() to abort the test script when the
> > > parameters are buggy.  6a67c75948 (test-lib-functions: restrict
> > > test_must_fail usage, 2020-07-07) added such a parameter verification
> > > to 'test_must_fail', but it didn't report the error with BUG(), like
> > > we usually do.
> > 
> > OK. I do not care all that much between BUG() and not-BUG here, since we
> > are unlikely to have a test where test_must_fail returning 0 yields
> > success. I guess the most interesting outcome is that we would notice a
> > bug in a test_expect_failure block.
> 
> If I had managed to send a new version of this patch series in the
> last 5 years :), then this would have caught the issue noted in:
> 
>   https://public-inbox.org/git/ad6hovxCkwMTG11U@szeder.dev/

Looking at that old thread, I do not see any reason you should not
re-send it (with or without the cosmetic fixups I suggested on top).

-Peff

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2] test-lib-functions: use BUG() in 'test_must_fail'
  2026-04-14 21:11       ` Junio C Hamano
@ 2026-04-14 22:18         ` Jeff King
  2026-04-15 15:25           ` Junio C Hamano
  0 siblings, 1 reply; 5+ messages in thread
From: Jeff King @ 2026-04-14 22:18 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: SZEDER Gábor, git, Denton Liu

On Tue, Apr 14, 2026 at 02:11:00PM -0700, Junio C Hamano wrote:

> I was wondering if we should remove "test_might_fail".  Its use case
> is rather limited to very narrow cases, like
> 
>  * we want to kill something but it may have exited on its own
> 
>  * we want "git config --unset" but the variable may or may not be set
> 
>  * we want "git foo --abort" just in case we are in the middle of
>    "git foo"
> 
> all of which is clearer with "|| :", and more importantly, the thing
> whose "failure" is protected against the test framework declaring a
> test failure is *not* what we are testing (these "config --unset"
> are not about testing "git config", in other words).
> 
> So the extra ability test_must_fail and test_might_fail have that
> they can detect uncontrolled death with non-zero exit status (aka
> "crash") is not very interesting---it is more like "As we are
> running a git command here, it would be better to catch than not
> catch a segfault here as well", i.e., a nice to have item.

I think the main value of both (but especially test_might_fail) is that
they slot naturally into &&-chains. I left a similar comment in that
other thread, but to expand a bit, if you do:

  false &&
  true || : &&
  echo everything ok

you will get "everything ok", even though step 1 failed. You need:

  false &&
  { true || : } &&
  echo everything ok

except that because it is shell you have to add an extra semicolon after
the ":". ;)

Syntax-complaints aside, I think it is a very easy thing for
contributors to get wrong. So I think test_might_fail has value, though
I do not care if it has a different name.

-Peff

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2] test-lib-functions: use BUG() in 'test_must_fail'
  2026-04-14 22:18         ` Jeff King
@ 2026-04-15 15:25           ` Junio C Hamano
  0 siblings, 0 replies; 5+ messages in thread
From: Junio C Hamano @ 2026-04-15 15:25 UTC (permalink / raw)
  To: Jeff King; +Cc: SZEDER Gábor, git, Denton Liu

Jeff King <peff@peff.net> writes:

> I think the main value of both (but especially test_might_fail) is that
> they slot naturally into &&-chains. I left a similar comment in that
> other thread, but to expand a bit, if you do:
>
>   false &&
>   true || : &&
>   echo everything ok
>
> you will get "everything ok", even though step 1 failed. You need:
>
>   false &&
>   { true || : } &&
>   echo everything ok
>
> except that because it is shell you have to add an extra semicolon after
> the ":". ;)
>
> Syntax-complaints aside, I think it is a very easy thing for
> contributors to get wrong. So I think test_might_fail has value, though
> I do not care if it has a different name.

Yup, I recall that I recently said that I hate that semicolon ;-)

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-04-15 15:25 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20210221192512.3096291-1-szeder.dev@gmail.com>
     [not found] ` <20210221192512.3096291-2-szeder.dev@gmail.com>
     [not found]   ` <YDLXf+OoJabrJTWu@coredump.intra.peff.net>
2026-04-14 20:52     ` [PATCH 2/2] test-lib-functions: use BUG() in 'test_must_fail' SZEDER Gábor
2026-04-14 21:11       ` Junio C Hamano
2026-04-14 22:18         ` Jeff King
2026-04-15 15:25           ` Junio C Hamano
2026-04-14 22:14       ` Jeff King

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox