tests: fix broken &&-chains in `$(...)` command substitutions

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 `$(...)` command substitutions 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>
maint
Eric Sunshine 2021-12-09 00:11:07 -05:00 committed by Junio C Hamano
parent 74d2f5695d
commit c576868eaf
6 changed files with 11 additions and 11 deletions

View File

@ -1445,7 +1445,7 @@ test_expect_success 'subtree descendant check' '
) && ) &&
test_create_commit "$test_count" folder_subtree/0 && test_create_commit "$test_count" folder_subtree/0 &&
test_create_commit "$test_count" folder_subtree/b && test_create_commit "$test_count" folder_subtree/b &&
cherry=$(cd "$test_count"; git rev-parse HEAD) && cherry=$(cd "$test_count" && git rev-parse HEAD) &&
( (
cd "$test_count" && cd "$test_count" &&
git checkout branch git checkout branch

View File

@ -48,7 +48,7 @@ test_expect_success !MINGW 'a constipated git dies with SIGPIPE' '
' '


test_expect_success !MINGW 'a constipated git dies with SIGPIPE even if parent ignores it' ' test_expect_success !MINGW 'a constipated git dies with SIGPIPE even if parent ignores it' '
OUT=$( ((trap "" PIPE; large_git; echo $? 1>&3) | :) 3>&1 ) && OUT=$( ((trap "" PIPE && large_git; echo $? 1>&3) | :) 3>&1 ) &&
test_match_signal 13 "$OUT" test_match_signal 13 "$OUT"
' '



View File

@ -216,7 +216,7 @@ test_expect_success SYMLINKS 'real path works on symlinks' '
mkdir second && mkdir second &&
ln -s ../first second/other && ln -s ../first second/other &&
mkdir third && mkdir third &&
dir="$(cd .git; pwd -P)" && dir="$(cd .git && pwd -P)" &&
dir2=third/../second/other/.git && dir2=third/../second/other/.git &&
test "$dir" = "$(test-tool path-utils real_path $dir2)" && test "$dir" = "$(test-tool path-utils real_path $dir2)" &&
file="$dir"/index && file="$dir"/index &&
@ -224,7 +224,7 @@ test_expect_success SYMLINKS 'real path works on symlinks' '
basename=blub && basename=blub &&
test "$dir/$basename" = "$(cd .git && test-tool path-utils real_path "$basename")" && test "$dir/$basename" = "$(cd .git && test-tool path-utils real_path "$basename")" &&
ln -s ../first/file .git/syml && ln -s ../first/file .git/syml &&
sym="$(cd first; pwd -P)"/file && sym="$(cd first && pwd -P)"/file &&
test "$sym" = "$(test-tool path-utils real_path "$dir2/syml")" test "$sym" = "$(test-tool path-utils real_path "$dir2/syml")"
' '



View File

@ -211,14 +211,14 @@ done
test_expect_success "--batch-check for a non-existent named object" ' test_expect_success "--batch-check for a non-existent named object" '
test "foobar42 missing test "foobar42 missing
foobar84 missing" = \ foobar84 missing" = \
"$( ( echo foobar42; echo_without_newline foobar84; ) | git cat-file --batch-check)" "$( ( echo foobar42 && echo_without_newline foobar84 ) | git cat-file --batch-check)"
' '


test_expect_success "--batch-check for a non-existent hash" ' test_expect_success "--batch-check for a non-existent hash" '
test "0000000000000000000000000000000000000042 missing test "0000000000000000000000000000000000000042 missing
0000000000000000000000000000000000000084 missing" = \ 0000000000000000000000000000000000000084 missing" = \
"$( ( echo 0000000000000000000000000000000000000042; "$( ( echo 0000000000000000000000000000000000000042 &&
echo_without_newline 0000000000000000000000000000000000000084; ) | echo_without_newline 0000000000000000000000000000000000000084 ) |
git cat-file --batch-check)" git cat-file --batch-check)"
' '


@ -226,8 +226,8 @@ test_expect_success "--batch for an existent and a non-existent hash" '
test "$tag_sha1 tag $tag_size test "$tag_sha1 tag $tag_size
$tag_content $tag_content
0000000000000000000000000000000000000000 missing" = \ 0000000000000000000000000000000000000000 missing" = \
"$( ( echo $tag_sha1; "$( ( echo $tag_sha1 &&
echo_without_newline 0000000000000000000000000000000000000000; ) | echo_without_newline 0000000000000000000000000000000000000000 ) |
git cat-file --batch)" git cat-file --batch)"
' '



View File

@ -265,7 +265,7 @@ test_expect_success 'choking "git rm" should not let it die with cruft (induce S


test_expect_success !MINGW 'choking "git rm" should not let it die with cruft (induce and check SIGPIPE)' ' test_expect_success !MINGW 'choking "git rm" should not let it die with cruft (induce and check SIGPIPE)' '
choke_git_rm_setup && choke_git_rm_setup &&
OUT=$( ((trap "" PIPE; git rm -n "some-file-*"; echo $? 1>&3) | :) 3>&1 ) && OUT=$( ((trap "" PIPE && git rm -n "some-file-*"; echo $? 1>&3) | :) 3>&1 ) &&
test_match_signal 13 "$OUT" && test_match_signal 13 "$OUT" &&
test_path_is_missing .git/index.lock test_path_is_missing .git/index.lock
' '

View File

@ -137,7 +137,7 @@ test_expect_success 'setup deeper work tree' '


test_expect_success 'add a directory outside the work tree' '( test_expect_success 'add a directory outside the work tree' '(
cd tester && cd tester &&
d1="$(cd .. ; pwd)" && d1="$(cd .. && pwd)" &&
test_must_fail git add "$d1" test_must_fail git add "$d1"
)' )'