tests: fix broken &&-chains in {...} groups

The top-level &&-chain checker built into t/test-lib.sh causes tests to
magically exit with code 117 if the &&-chain is broken. However, it has
the shortcoming that the magic does not work within `{...}` groups,
`(...)` subshells, `$(...)` substitutions, or within bodies of compound
statements, such as `if`, `for`, `while`, `case`, etc. `chainlint.sed`
partly fills in the gap by catching broken &&-chains in `(...)`
subshells, but bugs can still lurk behind broken &&-chains in the other
cases.

Fix broken &&-chains in `{...}` groups in order to reduce the number of
possible lurking bugs.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Reviewed-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Eric Sunshine
2021-12-09 00:11:08 -05:00
committed by Junio C Hamano
parent c576868eaf
commit 7abcbcb7ea
19 changed files with 53 additions and 50 deletions

View File

@ -191,17 +191,17 @@ do
cp "$expect_r" expect_r &&
convert_expected expect_r sed_script &&
{
echo "# $cmd"
set x $cmd; shift
git symbolic-ref HEAD refs/heads/$1 ; shift
rm -f .git/FETCH_HEAD
echo "# $cmd" &&
set x $cmd && shift &&
git symbolic-ref HEAD refs/heads/$1 && shift &&
rm -f .git/FETCH_HEAD &&
git for-each-ref \
refs/heads refs/remotes/rem refs/tags |
while read val type refname
do
git update-ref -d "$refname" "$val"
done
git fetch "$@" >/dev/null
done &&
git fetch "$@" >/dev/null &&
cat .git/FETCH_HEAD
} >"$actual_f" &&
git show-ref >"$actual_r" &&