git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "SZEDER Gábor" <szeder@ira.uka.de>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 21/25] t9001: use test_when_finished
Date: Wed, 25 Mar 2015 03:00:22 +0100	[thread overview]
Message-ID: <20150325030022.Horde.yvJScxCdU4w4HDIV_xUwrw1@webmail.informatik.kit.edu> (raw)
In-Reply-To: <20150320101321.GU12543@peff.net>


Quoting Jeff King <peff@peff.net>:

> The confirmation tests in t9001 all save the value of
> sendemail.confirm, do something to it, then restore it at
> the end, in a way that breaks the &&-chain (they are not
> wrong, because they save the $? value, but it fools
> --chain-lint).
>
> Instead, they can all use test_when_finished, and we can
> even make the code simpler by factoring out the shared
> lines.

I think that saving the value of 'sendemail.confirm' is not necessary.

There are two blocks of confirmation tests, this patch concerns only tests
of the second block.  The first block of confirmation tests is nearly at
the beginning of the file in order to check the "no confirm" cases early.
If any of those fails the remainig tests in the file are skipped because
they might hang.  The last of those tests sets 'sendemail.confirm' to
'never' and leaves it so to avoid unintentional prompting in the remaining
tests and then its value is not modified until that second block of
confirm tests are reached.  This means that when those tests save the
value of 'sendemail.confirm' they always save 'never'.  Then why save it,
just use test_when_finished to restore it to 'never' and all is well.


> Note that we can _almost_ use test_config here, except that:
>
>  1. We do not restore the config with test_unconfig, but by
>     setting it back to some prior value.
>
>  2. We are not always setting a config variable. Sometimes
>     the change to be undone is unsetting it entirely.
>
> We could teach test_config to handle these cases, but it's
> not worth the complexity for a single call-site.
>
> Signed-off-by: Jeff King <peff@peff.net>
> ---
> t/t9001-send-email.sh | 30 ++++++++++--------------------
> 1 file changed, 10 insertions(+), 20 deletions(-)
>
> diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh
> index 37caa18..c9f54d5 100755
> --- a/t/t9001-send-email.sh
> +++ b/t/t9001-send-email.sh
> @@ -817,26 +817,25 @@ test_expect_success $PREREQ '--confirm=compose' '
> 	test_confirm --confirm=compose --compose
> '
>
> -test_expect_success $PREREQ 'confirm by default (due to cc)' '
> +save_confirm () {
> 	CONFIRM=$(git config --get sendemail.confirm) &&
> +	test_when_finished "git config sendemail.confirm ${CONFIRM:-never}"
> +}
> +
> +test_expect_success $PREREQ 'confirm by default (due to cc)' '
> +	save_confirm &&
> 	git config --unset sendemail.confirm &&
> 	test_confirm
> -	ret="$?"
> -	git config sendemail.confirm ${CONFIRM:-never}
> -	test $ret = "0"
> '
>
> test_expect_success $PREREQ 'confirm by default (due to --compose)' '
> -	CONFIRM=$(git config --get sendemail.confirm) &&
> +	save_confirm &&
> 	git config --unset sendemail.confirm &&
> 	test_confirm --suppress-cc=all --compose
> -	ret="$?"
> -	git config sendemail.confirm ${CONFIRM:-never}
> -	test $ret = "0"
> '
>
> test_expect_success $PREREQ 'confirm detects EOF (inform assumes y)' '
> -	CONFIRM=$(git config --get sendemail.confirm) &&
> +	save_confirm &&
> 	git config --unset sendemail.confirm &&
> 	rm -fr outdir &&
> 	git format-patch -2 -o outdir &&
> @@ -846,13 +845,10 @@ test_expect_success $PREREQ 'confirm detects EOF
> (inform assumes y)' '
> 			--to=nobody@example.com \
> 			--smtp-server="$(pwd)/fake.sendmail" \
> 			outdir/*.patch </dev/null
> -	ret="$?"
> -	git config sendemail.confirm ${CONFIRM:-never}
> -	test $ret = "0"
> '
>
> test_expect_success $PREREQ 'confirm detects EOF (auto causes failure)' '
> -	CONFIRM=$(git config --get sendemail.confirm) &&
> +	save_confirm &&
> 	git config sendemail.confirm auto &&
> 	GIT_SEND_EMAIL_NOTTY=1 &&
> 	export GIT_SEND_EMAIL_NOTTY &&
> @@ -861,13 +857,10 @@ test_expect_success $PREREQ 'confirm detects EOF
> (auto causes failure)' '
> 			--to=nobody@example.com \
> 			--smtp-server="$(pwd)/fake.sendmail" \
> 			$patches </dev/null
> -	ret="$?"
> -	git config sendemail.confirm ${CONFIRM:-never}
> -	test $ret = "0"
> '
>
> test_expect_success $PREREQ 'confirm does not loop forever' '
> -	CONFIRM=$(git config --get sendemail.confirm) &&
> +	save_confirm &&
> 	git config sendemail.confirm auto &&
> 	GIT_SEND_EMAIL_NOTTY=1 &&
> 	export GIT_SEND_EMAIL_NOTTY &&
> @@ -876,9 +869,6 @@ test_expect_success $PREREQ 'confirm does not loop
> forever' '
> 			--to=nobody@example.com \
> 			--smtp-server="$(pwd)/fake.sendmail" \
> 			$patches
> -	ret="$?"
> -	git config sendemail.confirm ${CONFIRM:-never}
> -	test $ret = "0"
> '
>
> test_expect_success $PREREQ 'utf8 Cc is rfc2047 encoded' '
> --
> 2.3.3.520.g3cfbb5d

  reply	other threads:[~2015-03-25  2:00 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-20 10:04 [PATCH 0/25] detecting &&-chain breakage Jeff King
2015-03-20 10:05 ` [PATCH 01/25] t/test-lib: introduce --chain-lint option Jeff King
2015-03-25  2:53   ` SZEDER Gábor
2015-03-25  3:05     ` Jeff King
2015-03-20 10:06 ` [PATCH 02/25] t: fix severe &&-chain breakage Jeff King
2015-03-20 10:06 ` [PATCH 03/25] t: fix moderate " Jeff King
2015-03-20 10:07 ` [PATCH 04/25] t: fix trivial " Jeff King
2015-03-20 10:07 ` [PATCH 05/25] t: assume test_cmp produces verbose output Jeff King
2015-03-20 10:09 ` [PATCH 06/25] t: use verbose instead of hand-rolled errors Jeff King
2015-03-20 10:09 ` [PATCH 07/25] t: use test_must_fail instead of hand-rolled blocks Jeff King
2015-03-20 10:10 ` [PATCH 08/25] t: fix &&-chaining issues around setup which might fail Jeff King
2015-03-20 10:11 ` [PATCH 09/25] t: use test_might_fail for diff and grep Jeff King
2015-03-20 10:11 ` [PATCH 10/25] t: use test_expect_code instead of hand-rolled comparison Jeff King
2015-03-20 10:12 ` [PATCH 11/25] t: wrap complicated expect_code users in a block Jeff King
2015-03-20 10:12 ` [PATCH 12/25] t: avoid using ":" for comments Jeff King
2015-03-20 10:12 ` [PATCH 13/25] t3600: fix &&-chain breakage for setup commands Jeff King
2015-03-20 10:12 ` [PATCH 14/25] t7201: fix &&-chain breakage Jeff King
2015-03-20 10:13 ` [PATCH 15/25] t9502: " Jeff King
2015-03-20 17:48   ` Johannes Sixt
2015-03-20 18:03     ` Jeff King
2015-03-20 10:13 ` [PATCH 16/25] t6030: use modern test_* helpers Jeff King
2015-03-20 10:13 ` [PATCH 17/25] t0020: " Jeff King
2015-03-25  0:23   ` SZEDER Gábor
2015-03-25  2:56     ` Jeff King
2015-03-25  5:24       ` [PATCH 0/8] more &&-chaining test fixups Jeff King
2015-03-25  5:25         ` [PATCH 1/8] perf-lib: fix ignored exit code inside loop Jeff King
2015-03-25  5:28         ` [PATCH 2/8] t0020: fix ignored exit code inside loops Jeff King
2015-03-25  5:28         ` [PATCH 3/8] t3305: fix ignored exit code inside loop Jeff King
2015-03-25  8:40           ` Johan Herland
2015-03-25  5:29         ` [PATCH 4/8] t7701: " Jeff King
2015-03-25  5:29         ` [PATCH 5/8] t: fix some trivial cases of ignored exit codes in loops Jeff King
2015-03-25  5:30         ` [PATCH 6/8] t: simplify loop exit-code status variables Jeff King
2015-03-25 17:27           ` Junio C Hamano
2015-03-25 17:43             ` Jeff King
2015-03-25  5:31         ` [PATCH 7/8] t0020: use test_* helpers instead of hand-rolled messages Jeff King
2015-03-25  5:32         ` [PATCH 8/8] t9001: drop save_confirm helper Jeff King
2015-03-25 17:29         ` [PATCH 0/8] more &&-chaining test fixups Junio C Hamano
2015-03-20 10:13 ` [PATCH 18/25] t1301: use modern test_* helpers Jeff King
2015-03-24 23:51   ` SZEDER Gábor
2015-03-25  2:45     ` Jeff King
2015-03-20 10:13 ` [PATCH 19/25] t6034: " Jeff King
2015-03-24 23:43   ` SZEDER Gábor
2015-03-20 10:13 ` [PATCH 20/25] t4117: " Jeff King
2015-03-20 10:13 ` [PATCH 21/25] t9001: use test_when_finished Jeff King
2015-03-25  2:00   ` SZEDER Gábor [this message]
2015-03-25  2:47     ` Jeff King
2015-03-20 10:13 ` [PATCH 22/25] t0050: appease --chain-lint Jeff King
2015-03-20 10:13 ` [PATCH 23/25] t7004: fix embedded single-quotes Jeff King
2015-03-20 10:13 ` [PATCH 24/25] t0005: fix broken &&-chains Jeff King
2015-03-20 10:13 ` [PATCH 25/25] t4104: drop hand-rolled error reporting Jeff King
2015-03-20 10:23 ` [PATCH 0/25] detecting &&-chain breakage Jeff King
2015-03-20 14:28 ` Michael J Gruber
2015-03-20 14:32   ` [PATCH 26/27] t/*svn*: fix moderate " Michael J Gruber
2015-03-20 14:32     ` [PATCH 27/27] t9104: fix test for following larger parents Michael J Gruber
2015-03-20 18:04     ` [PATCH 26/27] t/*svn*: fix moderate &&-chain breakage Junio C Hamano
2015-03-20 19:35       ` Junio C Hamano
2015-03-20 20:02         ` Jeff King
2015-03-20 20:13           ` Jeff King
2015-03-23  9:36             ` Michael J Gruber
2015-03-20 17:57   ` [PATCH 0/25] detecting " Jeff King
2015-03-20 17:44 ` Junio C Hamano
2015-03-20 18:00   ` Junio C Hamano
2015-03-20 18:04     ` Jeff King
2015-03-20 18:33       ` Junio C Hamano
2015-03-20 23:18 ` Eric Sunshine
2015-03-21  8:19   ` Jeff King
2015-03-21 18:01     ` Junio C Hamano
2015-03-21 22:23       ` Jeff King

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=20150325030022.Horde.yvJScxCdU4w4HDIV_xUwrw1@webmail.informatik.kit.edu \
    --to=szeder@ira.uka.de \
    --cc=git@vger.kernel.org \
    --cc=peff@peff.net \
    /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).