threads / patch / 44009

patcht9903: fix broken && chain

Subject: [PATCH] t9903: fix broken && chain

## tl;dr

3 messages between Sep 5, 2016 and Sep 7, 2016. Diffs are folded; open one to read it.

replies: 2people: 3as markdown or json

Johannes Sixt· Sep 5, 2016, 19:00 UTC · lore

We might wonder why our && chain check does not catch this case: The && chain check uses a strange exit code with the expectation that the second or later part of a broken && chain would not exit with this particular code.

This expectation does not work in this case because __git_ps1, being the first command in the second part of the broken && chain, records the current exit code, does its work, and finally returns to the caller with the recorded exit code. This fools our && chain check.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
---
  t/t9903-bash-prompt.sh | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
Show changes to t/t9903-bash-prompt.sh +1 −1
diff --git a/t/t9903-bash-prompt.sh b/t/t9903-bash-prompt.sh
index 0db4469..97c9b32 100755
--- a/t/t9903-bash-prompt.sh
+++ b/t/t9903-bash-prompt.sh
@@ -177,7 +177,7 @@ test_expect_success 'prompt - interactive rebase' '
  	git checkout b1 &&
  	test_when_finished "git checkout master" &&
  	git rebase -i HEAD^ &&
-	test_when_finished "git rebase --abort"
+	test_when_finished "git rebase --abort" &&
  	__git_ps1 >"$actual" &&
  	test_cmp expected "$actual"
  '
-- 
2.10.0.85.gea34e30
Jeff King· Sep 6, 2016, 07:15 UTC · re: Johannes Sixt · lore

Re: [PATCH] t9903: fix broken && chain

On Mon, Sep 05, 2016 at 09:00:47PM +0200, Johannes Sixt wrote:
Show 9 quoted lines
> We might wonder why our && chain check does not catch this case:
> The && chain check uses a strange exit code with the expectation that
> the second or later part of a broken && chain would not exit with this
> particular code.
> 
> This expectation does not work in this case because __git_ps1, being
> the first command in the second part of the broken && chain, records
> the current exit code, does its work, and finally returns to the caller
> with the recorded exit code. This fools our && chain check.
Wow. Good find. Patch itself is obviously correct.
-Peff
Junio C Hamano· Sep 7, 2016, 18:35 UTC · re: Johannes Sixt · lore

Re: [PATCH] t9903: fix broken && chain

Johannes Sixt <j6t@kdbg.org> writes:
Show 28 quoted lines
> We might wonder why our && chain check does not catch this case:
> The && chain check uses a strange exit code with the expectation that
> the second or later part of a broken && chain would not exit with this
> particular code.
>
> This expectation does not work in this case because __git_ps1, being
> the first command in the second part of the broken && chain, records
> the current exit code, does its work, and finally returns to the caller
> with the recorded exit code. This fools our && chain check.
>
> Signed-off-by: Johannes Sixt <j6t@kdbg.org>
> ---
>  t/t9903-bash-prompt.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/t/t9903-bash-prompt.sh b/t/t9903-bash-prompt.sh
> index 0db4469..97c9b32 100755
> --- a/t/t9903-bash-prompt.sh
> +++ b/t/t9903-bash-prompt.sh
> @@ -177,7 +177,7 @@ test_expect_success 'prompt - interactive rebase' '
>  	git checkout b1 &&
>  	test_when_finished "git checkout master" &&
>  	git rebase -i HEAD^ &&
> -	test_when_finished "git rebase --abort"
> +	test_when_finished "git rebase --abort" &&
>  	__git_ps1 >"$actual" &&
>  	test_cmp expected "$actual"
>  '
Thanks.

← back to recent threads