All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Hardik Kumar <hardikxk@gmail.com>
Cc: git@vger.kernel.org,  Patrick Steinhardt <ps@pks.im>
Subject: Re: [PATCH] t/t1467-refs-rename: Use test_must_fail in place of NOT operator
Date: Tue, 27 Oct 2026 20:43:20 -0700	[thread overview]
Message-ID: <xmqqld7iebhj.fsf@gitster.g> (raw)
In-Reply-To: <20261028-refs-rename-test-fail-v1-1-b7458ca62149@gmail.com> (Hardik Kumar's message of "Wed, 28 Oct 2026 00:18:43 +0530")

Hardik Kumar <hardikxk@gmail.com> writes:

> All tests in `t/t1467-refs-rename.sh` use test_must_fail for verifying
> when a test or command is expected to fail. `test_must_fail` is used for
> all Git commands.

"all Git commands" that are expected to fail, right?

For two "git" commands that appear immediately before the line you
touched in the patch, test_must_fail is not used ;-)

> The use of the NOT operator is replaced with `test_must_fail` to ensure
> consistency in the unit tests without any functional changes to the
> tests themselves.

A more common way for our proposed commit log message phrase the
above is

	Replace the "not" (!) operator with `test_must_fail` to ...

More importantly, the use of test_must_fail is *NOT* about
consistency.  The most important reason why it is the better way to
write than "! git refs rename ..." is that test_must_fail notices
and fails loudly if the command line getting tested does not fail in
a graceful way.  If somebody tries to update the "git refs" command,
introduces a bug and makes it segfault when 

	git refs rename refs/heads/symref refs/heads/renamed

is run, the command line prefixed with '!' will happily say "ah, the
command crashed and did not succeed, and I am happy", but that is
not the kind of failing that we want to be happy with.  If you
prefix the command line with test_must_fail, however, test_must_fail
would still fail when the "git refs rename" died with segfault or
otherwise killed by a signal.

Thanks.


> Signed-off-by: Hardik Kumar <hardikxk@gmail.com>
> ---
>  t/t1467-refs-rename.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/t/t1467-refs-rename.sh b/t/t1467-refs-rename.sh
> index 2b28be75c8..b7d290d05b 100755
> --- a/t/t1467-refs-rename.sh
> +++ b/t/t1467-refs-rename.sh
> @@ -88,7 +88,7 @@ test_expect_success 'rename with symbolic ref fails' '
>  		A=$(git rev-parse A) &&
>  		git refs create refs/heads/target $A &&
>  		git symbolic-ref refs/heads/symref refs/heads/target &&
> -		! git refs rename refs/heads/symref refs/heads/renamed 2>err &&
> +		test_must_fail git refs rename refs/heads/symref refs/heads/renamed 2>err &&
>  		test_grep "is a symbolic ref, .* not supported" err
>  	)
>  '
>
> ---
> base-commit: 37b3475fb530c14109211faca33716a173db61ed
> change-id: 20261028-refs-rename-test-fail-ec7a8fa74e54

  reply	other threads:[~2026-10-28  3:43 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-27 18:48 [PATCH] t/t1467-refs-rename: Use test_must_fail in place of NOT operator Hardik Kumar
2026-10-28  3:43 ` Junio C Hamano [this message]
2026-10-28  9:59   ` Hardik Kumar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqld7iebhj.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=hardikxk@gmail.com \
    --cc=ps@pks.im \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.