From: Denton Liu <liu.denton@gmail.com>
To: Johannes Sixt <j6t@kdbg.org>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: Re: [PATCH 8/8] t9902: don't use `test_must_fail __git_*`
Date: Wed, 22 Apr 2020 04:35:50 -0400 [thread overview]
Message-ID: <20200422083550.GA12348@generichostname> (raw)
In-Reply-To: <60627dc6-fb9c-549f-d76d-0e110c5b0de2@kdbg.org>
Hi Hannes,
On Tue, Apr 21, 2020 at 11:16:09PM +0200, Johannes Sixt wrote:
> Am 20.04.20 um 10:54 schrieb Denton Liu:
> > We should only use test_must_fail() to test git commands. Replace
> > `test_must_fail` with `!` so that we don't use test_must_fail() on the
> > completion functions.
> >
> > This is done because test_must_fail() is used to except git exiting with
> > an expected error but it will still return an error if it detects
> > unexpected errors such as a segfault. In the case of these completion
> > functions, the return codes of the git commands aren't checked and, most
> > of the time, they will just explicitly return 1 or have an unrelated
> > command return 0. As a result, it doesn't really make sense to use
> > `test_must_fail` so use `!` instead.
> >
> > Signed-off-by: Denton Liu <liu.denton@gmail.com>
> > ---
> > t/t9902-completion.sh | 12 ++++++------
> > 1 file changed, 6 insertions(+), 6 deletions(-)
> >
> > diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh
> > index 5505e5aa24..320c755971 100755
> > --- a/t/t9902-completion.sh
> > +++ b/t/t9902-completion.sh
> > @@ -294,7 +294,7 @@ test_expect_success '__git_find_repo_path - "git -C" while .git directory in par
> > test_expect_success '__git_find_repo_path - non-existing path in "git -C"' '
> > (
> > __git_C_args=(-C non-existing) &&
> > - test_must_fail __git_find_repo_path &&
> > + ! __git_find_repo_path &&
> > printf "$__git_repo_path" >"$actual"
> > ) &&
> > test_must_be_empty "$actual"
> > @@ -303,7 +303,7 @@ test_expect_success '__git_find_repo_path - non-existing path in "git -C"' '
> > test_expect_success '__git_find_repo_path - non-existing path in $__git_dir' '
> > (
> > __git_dir="non-existing" &&
> > - test_must_fail __git_find_repo_path &&
> > + ! __git_find_repo_path &&
> > printf "$__git_repo_path" >"$actual"
> > ) &&
> > test_must_be_empty "$actual"
> > @@ -313,7 +313,7 @@ test_expect_success '__git_find_repo_path - non-existing $GIT_DIR' '
> > (
> > GIT_DIR="$ROOT/non-existing" &&
> > export GIT_DIR &&
> > - test_must_fail __git_find_repo_path &&
> > + ! __git_find_repo_path &&
> > printf "$__git_repo_path" >"$actual"
> > ) &&
> > test_must_be_empty "$actual"
> > @@ -362,7 +362,7 @@ test_expect_success '__git_find_repo_path - not a git repository' '
> > cd non-repo &&
> > GIT_CEILING_DIRECTORIES="$ROOT" &&
> > export GIT_CEILING_DIRECTORIES &&
> > - test_must_fail __git_find_repo_path &&
> > + ! __git_find_repo_path &&
> > printf "$__git_repo_path" >"$actual"
> > ) &&
> > test_must_be_empty "$actual"
> > @@ -381,7 +381,7 @@ test_expect_success '__gitdir - finds repo' '
> > test_expect_success '__gitdir - returns error when cannot find repo' '
> > (
> > __git_dir="non-existing" &&
> > - test_must_fail __gitdir >"$actual"
> > + ! __gitdir >"$actual"
> > ) &&
> > test_must_be_empty "$actual"
> > '
> > @@ -608,7 +608,7 @@ test_expect_success '__git_is_configured_remote' '
> > git remote add remote_2 git://remote_2 &&
> > (
> > verbose __git_is_configured_remote remote_2 &&
> > - test_must_fail __git_is_configured_remote non-existent
> > + ! __git_is_configured_remote non-existent
> > )
> > '
> >
> >
>
> I actually think that the use of test_must_fail has some merit in these
> cases, because the shell function __git_find_repo_path runs `git
> rev-parse` behind the scenes, and it runs it in such a way that
> test_must_fail would do the right thing: the function just dispatches
> into a handful of simple cases, each basically only with a variable
> assignment, two of them in the form
>
> var=$(git rev-parse ...)
>
> I would suggest to drop this patch.
Thanks for the analysis. I agree with you. I think it's good to avoid
using test_must_fail unnecessarily but it wouldn't hurt to err on the
side of caution when we're potentially wrapping a git command (like in
this case).
In a future patch where I disable test_must_fail except for approved
commands, I'll add __git* commands to the whitelist.
Thanks,
Denton
> -- Hannes
next prev parent reply other threads:[~2020-04-22 8:35 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-20 8:54 [PATCH 0/8] t: replace incorrect test_must_fail usage (part 4) Denton Liu
2020-04-20 8:54 ` [PATCH 1/8] t6030: use test_path_is_missing() Denton Liu
2020-04-20 8:54 ` [PATCH 2/8] t7408: replace incorrect uses of test_must_fail Denton Liu
2020-04-20 8:54 ` [PATCH 3/8] t7508: don't use `test_must_fail test_cmp` Denton Liu
2020-04-21 20:59 ` Johannes Sixt
2020-04-20 8:54 ` [PATCH 4/8] t9141: use test_path_is_missing() Denton Liu
2020-04-20 8:54 ` [PATCH 5/8] t9160: " Denton Liu
2020-04-20 8:54 ` [PATCH 6/8] t9164: don't use `test_must_fail test_cmp` Denton Liu
2020-04-20 16:21 ` Eric Sunshine
2020-04-20 20:09 ` Junio C Hamano
2020-04-20 20:13 ` Eric Sunshine
2020-04-21 20:16 ` Denton Liu
2020-04-21 20:44 ` Junio C Hamano
2020-04-22 8:54 ` Denton Liu
2020-04-22 15:50 ` Junio C Hamano
2020-04-20 8:54 ` [PATCH 7/8] t9819: don't use test_must_fail with p4 Denton Liu
2020-04-20 8:54 ` [PATCH 8/8] t9902: don't use `test_must_fail __git_*` Denton Liu
2020-04-21 21:16 ` Johannes Sixt
2020-04-22 8:35 ` Denton Liu [this message]
2020-04-20 11:49 ` [PATCH 0/8] t: replace incorrect test_must_fail usage (part 4) Derrick Stolee
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=20200422083550.GA12348@generichostname \
--to=liu.denton@gmail.com \
--cc=git@vger.kernel.org \
--cc=j6t@kdbg.org \
/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.