diff options
author | Michael J Gruber <git@drmicha.warpmail.net> | 2014-06-16 20:03:43 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-06-17 13:39:52 -0700 |
commit | 7b1732c11605f84b809bd120401df49866c27141 (patch) | |
tree | 9dcd209fc7704b4a6af39979927f3faffd0af85a | |
parent | 526d56e07200483fc93be9c2dfee81bb87713c9b (diff) | |
download | git-7b1732c11605f84b809bd120401df49866c27141.tar.gz git-7b1732c11605f84b809bd120401df49866c27141.tar.xz |
t7510: use consistent &&-chains in loop
We check multiple commits in a loop. Because we want to
break out of the loop if any single iteration fails, we use
a subshell/exit like:
(
for i in $stuff
do
do-something $i || exit 1
done
)
However, we are inconsistent in our loop body. Some commands
get their own "|| exit 1", and others try to chain to the
next command with "&&", like:
X &&
Y || exit 1
Z || exit 1
This is a little hard to read and follow, because X and Y
are treated differently for no good reason. But much worse,
the second loop follows a similar pattern and gets it wrong.
"Y" is expected to fail, so we use "&& exit 1", giving us:
X &&
Y && exit 1
Z || exit 1
That gets the test for X wrong (we do not exit unless both X
fails and Y unexpectedly succeeds, but we would want to exit
if _either_ is wrong). We can write this clearly and
correctly by consistently using "&&", followed by a single
"|| exit 1", and negating Y with "!" (as we would in a
normal &&-chain). Like:
X &&
! Y &&
Z || exit 1
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-x | t/t7510-signed-commit.sh | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/t/t7510-signed-commit.sh b/t/t7510-signed-commit.sh index 37c3778b2..cdffcbdc3 100755 --- a/t/t7510-signed-commit.sh +++ b/t/t7510-signed-commit.sh @@ -50,18 +50,18 @@ test_expect_success GPG 'show signatures' ' for commit in initial second merge fourth-signed fifth-signed sixth-signed seventh-signed do git show --pretty=short --show-signature $commit >actual && - grep "Good signature from" actual || exit 1 - ! grep "BAD signature from" actual || exit 1 - echo $commit OK + grep "Good signature from" actual && + ! grep "BAD signature from" actual && + echo $commit OK || exit 1 done ) && ( for commit in merge^2 fourth-unsigned sixth-unsigned seventh-unsigned do git show --pretty=short --show-signature $commit >actual && - grep "Good signature from" actual && exit 1 - ! grep "BAD signature from" actual || exit 1 - echo $commit OK + ! grep "Good signature from" actual && + ! grep "BAD signature from" actual && + echo $commit OK || exit 1 done ) ' |