git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Denton Liu <liu.denton@gmail.com>
Cc: Git Mailing List <git@vger.kernel.org>,
	Taylor Blau <me@ttaylorr.com>, Johannes Sixt <j6t@kdbg.org>,
	Eric Sunshine <sunshine@sunshineco.com>,
	Jeff King <peff@peff.net>
Subject: Re: [PATCH v5.1] lib-submodule-update: pass 'test_must_fail' as an argument
Date: Tue, 23 Jun 2020 16:54:31 -0700	[thread overview]
Message-ID: <xmqq4kr1bao8.fsf@gitster.c.googlers.com> (raw)
In-Reply-To: <7b9c19b3606f31b12a79591a41847dcb0a071751.1592942452.git.liu.denton@gmail.com> (Denton Liu's message of "Tue, 23 Jun 2020 16:21:20 -0400")

Denton Liu <liu.denton@gmail.com> writes:

> When $command is a helper function, the parent function calling
> test_submodule_switch_common() is test_submodule_switch_func(). For all
> test_submodule_switch_func() invocations, increase the granularity of
> the argument test helper function by prefixing the git invocation which is
> meant to fail with the second argument like this:
>
> 	$2 git checkout "$1"
>
> ...
> Finally, as an added bonus, `test_must_fail` will now only run on git
> commands.

> This patch replaces v5 4/4. Hopefully, this'll be the last iteration...

So three copies of v5.1 are identical replacement for 4/4, they seem.

> -			test_must_fail $command replace_sub1_with_directory &&
> +			$command replace_sub1_with_directory test_must_fail &&

> +# The following example uses `git some-command` as an example command to be
> +# tested. It updates the worktree and index to match a target, but not any
> +# submodule directories.
>  #
>  # my_func () {
> +#   ...prepare for `git some-command` to be run...
> +#   $2 git some-command "$1" &&
> +#   if test -n "$2"
> +#   then
> +#     return
> +#   fi &&

So, in practice $2 MUST BE either test_must_fail OR an empty
string.  Feeding the my_func anything other than these two values is
a BUG.  I wonder if we can somehow make sure to reduce mental burden
by readers.  Perhaps

> +git_test_func () {

	may_only_be_test_must_fail "$2"

> +	$2 git $gitcmd "$1"
> +}

where

	may_only_be_test_must_fail () {
		test -z "$1" || test "$1" = test_must_fail || die
	}

or something.  The idea is to make sure that this extra helper can
be named in such a way that it can serve as a documention to help
readers of "git_test_func ()" and others about "$2".

> diff --git a/t/t3426-rebase-submodule.sh b/t/t3426-rebase-submodule.sh
> index 788605ccc0..dd5daa53d3 100755
> --- a/t/t3426-rebase-submodule.sh
> +++ b/t/t3426-rebase-submodule.sh
> @@ -17,7 +17,7 @@ git_rebase () {
>  	git status -su >actual &&
>  	ls -1pR * >>actual &&
>  	test_cmp expect actual &&
> -	git rebase "$1"
> +	$2 git rebase "$1"

Likewise here.

Even without such a change this round reads much better than the
previous ones.

> An alternate design was considered where the global variable,
> $OVERWRITING_FAIL, is set from test_submodule_switch_common() and
> exposed to the helper function.  This would allow $command to be
> set to a more sensible value. However ...

By the way, I do not think this paragraph adds much value to the
message.  It wasn't clear how OVERWRITING_FAIL wanted to achieve its
goal back in its own commit, and without any actual code but with
only the four lines to go by, there is no chance that you can
convince anybody how $command could have been "more sensible value".

Thanks.


  parent reply	other threads:[~2020-06-23 23:54 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-29 12:22 [PATCH 0/4] t: replace incorrect test_must_fail usage (part 5) Denton Liu
2020-04-29 12:22 ` [PATCH 1/4] lib-submodule-update: add space after function name Denton Liu
2020-04-29 12:22 ` [PATCH 2/4] lib-submodule-update: consolidate --recurse-submodules Denton Liu
2020-04-29 18:06   ` Junio C Hamano
2020-04-29 12:22 ` [PATCH 3/4] lib-submodule-update: prepend "git" to $command Denton Liu
2020-04-29 12:22 ` [PATCH 4/4] lib-submodule-update: pass OVERWRITING_FAIL Denton Liu
2020-04-29 19:24   ` Junio C Hamano
2020-04-30  1:10     ` Denton Liu
2020-04-30  3:41       ` Junio C Hamano
2020-04-30  9:22         ` Denton Liu
2020-04-30 10:25   ` [PATCH v1.1] " Denton Liu
2020-04-30 20:38     ` Junio C Hamano
2020-05-01  9:35       ` Denton Liu
2020-05-01 16:51         ` Junio C Hamano
2020-05-05 11:43     ` [PATCH v1.2] " Denton Liu
2020-04-29 19:50 ` [PATCH 0/4] t: replace incorrect test_must_fail usage (part 5) Taylor Blau
2020-04-29 21:30   ` Johannes Sixt
2020-04-29 21:42     ` Re* " Junio C Hamano
2020-04-29 21:49       ` Taylor Blau
2020-04-29 22:10         ` Junio C Hamano
2020-04-29 22:16           ` Taylor Blau
2020-04-29 22:36         ` Junio C Hamano
2020-04-29 22:41           ` Taylor Blau
2020-04-29 22:00       ` Eric Sunshine
2020-04-29 22:06         ` Junio C Hamano
2020-05-21  0:24 ` [PATCH v2 " Denton Liu
2020-05-21  0:24   ` [PATCH v2 1/4] lib-submodule-update: add space after function name Denton Liu
2020-05-21  0:24   ` [PATCH v2 2/4] lib-submodule-update: consolidate --recurse-submodules Denton Liu
2020-05-21  0:24   ` [PATCH v2 3/4] lib-submodule-update: prepend "git" to $command Denton Liu
2020-05-21 10:39     ` Philip Oakley
2020-05-21 11:25       ` Denton Liu
2020-05-21  0:24   ` [PATCH v2 4/4] lib-submodule-update: pass OVERWRITING_FAIL Denton Liu
2020-05-21 18:29     ` Jeff King
2020-05-21 18:55       ` Denton Liu
2020-05-21 21:11       ` Junio C Hamano
2020-05-21 22:37         ` Jeff King
2020-05-21 18:34     ` Jeff King
2020-05-21 16:47   ` [PATCH v2 0/4] t: replace incorrect test_must_fail usage (part 5) Junio C Hamano
2020-05-21 18:35     ` Jeff King
2020-06-11 17:41 ` [PATCH v3 " Denton Liu
2020-06-11 17:41   ` [PATCH v3 1/4] lib-submodule-update: add space after function name Denton Liu
2020-06-11 17:41   ` [PATCH v3 2/4] lib-submodule-update: consolidate --recurse-submodules Denton Liu
2020-06-11 17:41   ` [PATCH v3 3/4] lib-submodule-update: prepend "git" to $command Denton Liu
2020-06-11 17:41   ` [PATCH v3 4/4] lib-submodule-update: use callbacks in test_submodule_switch_common() Denton Liu
2020-06-12 18:46     ` Junio C Hamano
2020-06-18  6:11     ` Junio C Hamano
2020-06-18  8:49   ` [PATCH v4 0/4] t: replace incorrect test_must_fail usage (part 5) Denton Liu
2020-06-18  8:49     ` [PATCH v4 1/4] lib-submodule-update: add space after function name Denton Liu
2020-06-18  8:49     ` [PATCH v4 2/4] lib-submodule-update: consolidate --recurse-submodules Denton Liu
2020-06-18  8:49     ` [PATCH v4 3/4] lib-submodule-update: prepend "git" to $command Denton Liu
2020-06-18  8:49     ` [PATCH v4 4/4] lib-submodule-update: use callbacks in test_submodule_switch_common() Denton Liu
2020-06-18 18:15       ` Jeff King
2020-06-23 10:28     ` [PATCH v5 0/4] t: replace incorrect test_must_fail usage (part 5) Denton Liu
2020-06-23 10:28       ` [PATCH v5 1/4] lib-submodule-update: add space after function name Denton Liu
2020-06-23 10:28       ` [PATCH v5 2/4] lib-submodule-update: consolidate --recurse-submodules Denton Liu
2020-06-23 10:28       ` [PATCH v5 3/4] lib-submodule-update: prepend "git" to $command Denton Liu
2020-06-23 10:28       ` [PATCH v5 4/4] lib-submodule-update: use callbacks in test_submodule_switch_common() Denton Liu
2020-06-23 18:40       ` [PATCH v5 0/4] t: replace incorrect test_must_fail usage (part 5) Jeff King
2020-06-23 20:21       ` [PATCH v5.1] lib-submodule-update: pass 'test_must_fail' as an argument Denton Liu
2020-06-23 20:04         ` Denton Liu
2020-06-23 23:54         ` Junio C Hamano [this message]
2020-06-24  0:16         ` Đoàn Trần Công Danh
2020-06-24  8:50         ` [PATCH v5.2] " Denton Liu
2020-06-24 16:00           ` Junio C Hamano
2020-06-23 20:35       ` [PATCH v5.1] " Denton Liu

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=xmqq4kr1bao8.fsf@gitster.c.googlers.com \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=j6t@kdbg.org \
    --cc=liu.denton@gmail.com \
    --cc=me@ttaylorr.com \
    --cc=peff@peff.net \
    --cc=sunshine@sunshineco.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).