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>
Subject: Re: [PATCH v1.1] lib-submodule-update: pass OVERWRITING_FAIL
Date: Fri, 01 May 2020 09:51:01 -0700	[thread overview]
Message-ID: <xmqq8siboayy.fsf@gitster.c.googlers.com> (raw)
In-Reply-To: <20200501093554.GA49619@generichostname> (Denton Liu's message of "Fri, 1 May 2020 05:35:54 -0400")

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

> Does this commit message increase the clarity?
> 
> 	lib-submodule-update: pass OVERWRITING_FAIL
>
> 	We are using `test_must_fail $command`. However, $command is not
> 	necessarily a git command; it could be a test helper function.
>
> 	In an effort to stop using test_must_fail with non-git commands, instead
> 	of invoking `test_must_fail $command`, run
> 	`OVERWRITING_FAIL=test_must_fail $command` instead in
> 	test_submodule_switch_common().
>
> 	In the case where $command is a git command,
> 	test_submodule_switch_common() is called by one of
> 	test_submodule_switch() or test_submodule_forced_switch(). In those two
> 	functions, pass $command like this:
>
> 		test_submodule_switch_common "eval \$OVERWRITING_FAIL git $command"
>
> 	In the case where $command is a test helper function, increase the
> 	granularity of the test helper function by marking the git invocation
> 	which was meant to fail like this:
>
> 		$OVERWRITING_FAIL git checkout "$1"
>
> 	This is useful because currently, when we run a test helper function, we
> 	just mark the whole thing as `test_must_fail`. However, it's possible
> 	that the helper function might fail earlier or later than expected due
> 	to an introduced bug. If this happens, then the test case will still
> 	report as passing but it should really be marked as failing since it
> 	didn't actually display the intended behaviour.
>
> 	While we're at it, some helper functions have git commands piping into
> 	another git command. Break these pipes up into two separate invocations
> 	with a file buffer so that the return code of the first command is not
> 	lost.
>
> 	This patch can be better viewed with `--ignore-all-space`.

It may be better, but not all that much.  I think it comes from the
design that this change is hard to understand.  Anybody who wants to
write more of these tests would need a much better guidance than
"just use OVERWRITING_FAIL=test_must_fail where you would normally
write test_must_fail and you'd be OK", as that is not what is going
on.  Before doing so, they would make sure that the place where they
are tempted to write test_must_fail MUST be called by these three
wrappers, or this guidance does not apply, for example.

>> If we have given up the "single-shot environment export" for
>> compatibility reasons (which is a sound decision to follow), we
>> should make sure it is clear to our readers that we are not using
>> that shell feature.  I.e.
>> 
>> 			export OVERWRITING_FAIL=test_must_fail &&
>> 			$command replace_sub1_with_directory &&
>> 			unset OVERWRITING_FAIL &&
>
> Makes sense. I would drop the export, though, because $OVERWRITING_FAIL
> should only be handled within the shell environment. We're never calling
> any external commands that need to know about this variable.

Yup, not pretending that this affects anywhere outside of shell by
exporting is a bad idea.

> On a tangent, I got a response[1] from the dash people about the
> "single-shot environment export" propagating past a function. It seems
> like in the most updated version of POSIX addresses this and it's up to
> the implementers whether or not variables propagate past a function
> invocation.

Yes, it is the reason why we discourage the unportable use of the
pattern in our tests.

  reply	other threads:[~2020-05-01 16:51 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 [this message]
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
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=xmqq8siboayy.fsf@gitster.c.googlers.com \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=liu.denton@gmail.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).