t5000-t5999: detect and signal failure within loop

Failures within `for` and `while` loops can go unnoticed if not detected
and signaled manually since the loop itself does not abort when a
contained command fails, nor will a failure necessarily be detected when
the loop finishes since the loop returns the exit code of the last
command it ran on the final iteration, which may not be the command
which failed. Therefore, detect and signal failures manually within
loops using the idiom `|| return 1` (or `|| exit 1` within subshells).

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:14 -05:00
committed by Junio C Hamano
parent cbe1d9d630
commit d0fd993137
20 changed files with 50 additions and 50 deletions

View File

@ -77,7 +77,7 @@ check_tar() {
path=$(get_pax_header $header path) && path=$(get_pax_header $header path) &&
if test -n "$path" if test -n "$path"
then then
mv "$data" "$path" mv "$data" "$path" || exit 1
fi fi
fi fi
done done
@ -133,7 +133,7 @@ test_expect_success 'populate workdir' '
for depth in 1 2 3 4 5 for depth in 1 2 3 4 5
do do
mkdir $p && mkdir $p &&
cd $p cd $p || exit 1
done && done &&
echo text >file_with_long_path echo text >file_with_long_path
) && ) &&

View File

@ -106,7 +106,7 @@ test_expect_success \
printf "A\$Format:%s\$O" "$SUBSTFORMAT" >a/substfile1 && printf "A\$Format:%s\$O" "$SUBSTFORMAT" >a/substfile1 &&
printf "A not substituted O" >a/substfile2 && printf "A not substituted O" >a/substfile2 &&
(p=long_path_to_a_file && cd a && (p=long_path_to_a_file && cd a &&
for depth in 1 2 3 4 5; do mkdir $p && cd $p; done && for depth in 1 2 3 4 5; do mkdir $p && cd $p || exit 1; done &&
echo text >file_with_long_path) echo text >file_with_long_path)
' '

View File

@ -131,7 +131,7 @@ test_expect_success ZIPINFO 'zip archive with many entries' '
do do
for b in 0 1 2 3 4 5 6 7 8 9 a b c d e f for b in 0 1 2 3 4 5 6 7 8 9 a b c d e f
do do
: >00/$a$b : >00/$a$b || return 1
done done
done && done &&
git add 00 && git add 00 &&
@ -143,7 +143,7 @@ test_expect_success ZIPINFO 'zip archive with many entries' '
do do
for d in 0 1 2 3 4 5 6 7 8 9 a b c d e f for d in 0 1 2 3 4 5 6 7 8 9 a b c d e f
do do
echo "040000 tree $subtree $c$d" echo "040000 tree $subtree $c$d" || return 1
done done
done >tree && done >tree &&
tree=$(git mktree <tree) && tree=$(git mktree <tree) &&
@ -171,7 +171,7 @@ test_expect_success EXPENSIVE,UNZIP,UNZIP_ZIP64_SUPPORT \
# create tree containing 65500 entries of that blob # create tree containing 65500 entries of that blob
for i in $(test_seq 1 65500) for i in $(test_seq 1 65500)
do do
echo "100644 blob $blob $i" echo "100644 blob $blob $i" || return 1
done >tree && done >tree &&
tree=$(git mktree <tree) && tree=$(git mktree <tree) &&

View File

@ -122,7 +122,7 @@ test_expect_success 'mailinfo unescapes with --mboxrd' '
do do
git mailinfo mboxrd/msg mboxrd/patch \ git mailinfo mboxrd/msg mboxrd/patch \
<mboxrd/$i >mboxrd/out && <mboxrd/$i >mboxrd/out &&
test_cmp "$DATA/${i}mboxrd" mboxrd/msg test_cmp "$DATA/${i}mboxrd" mboxrd/msg || return 1
done && done &&
sp=" " && sp=" " &&
echo "From " >expect && echo "From " >expect &&

View File

@ -347,7 +347,7 @@ test_expect_success 'unpacking with --strict' '
for i in 0 1 2 3 4 5 6 7 8 9 for i in 0 1 2 3 4 5 6 7 8 9
do do
o=$(echo $j$i | git hash-object -w --stdin) && o=$(echo $j$i | git hash-object -w --stdin) &&
echo "100644 $o 0 $j$i" echo "100644 $o 0 $j$i" || return 1
done done
done >LIST && done >LIST &&
rm -f .git/index && rm -f .git/index &&
@ -390,7 +390,7 @@ test_expect_success 'index-pack with --strict' '
for i in 0 1 2 3 4 5 6 7 8 9 for i in 0 1 2 3 4 5 6 7 8 9
do do
o=$(echo $j$i | git hash-object -w --stdin) && o=$(echo $j$i | git hash-object -w --stdin) &&
echo "100644 $o 0 $j$i" echo "100644 $o 0 $j$i" || return 1
done done
done >LIST && done >LIST &&
rm -f .git/index && rm -f .git/index &&
@ -586,7 +586,7 @@ test_expect_success 'setup for --stdin-packs tests' '
for id in A B C for id in A B C
do do
git pack-objects .git/objects/pack/pack-$id \ git pack-objects .git/objects/pack/pack-$id \
--incremental --revs <<-EOF --incremental --revs <<-EOF || exit 1
refs/tags/$id refs/tags/$id
EOF EOF
done && done &&

View File

@ -11,7 +11,7 @@ test_expect_success setup '
git add "file$i" && git add "file$i" &&
test_tick && test_tick &&
git commit -m "$i" && git commit -m "$i" &&
git tag "tag$i" git tag "tag$i" || return 1
done && done &&
obj=$(git rev-parse --verify tag3) && obj=$(git rev-parse --verify tag3) &&
fanout=$(expr "$obj" : "\(..\)") && fanout=$(expr "$obj" : "\(..\)") &&

View File

@ -230,7 +230,7 @@ test_expect_success 'pack reuse respects --honor-pack-keep' '
test_when_finished "rm -f .git/objects/pack/*.keep" && test_when_finished "rm -f .git/objects/pack/*.keep" &&
for i in .git/objects/pack/*.pack for i in .git/objects/pack/*.pack
do do
>${i%.pack}.keep >${i%.pack}.keep || return 1
done && done &&
reusable_pack --honor-pack-keep >empty.pack && reusable_pack --honor-pack-keep >empty.pack &&
git index-pack empty.pack && git index-pack empty.pack &&

View File

@ -18,7 +18,7 @@ test_expect_success 'setup r1' '
do do
echo "This is file: $n" > r1/file.$n && echo "This is file: $n" > r1/file.$n &&
git -C r1 add file.$n && git -C r1 add file.$n &&
git -C r1 commit -m "$n" git -C r1 commit -m "$n" || return 1
done done
' '
@ -118,7 +118,7 @@ test_expect_success 'setup r2' '
do do
printf "%"$n"s" X > r2/large.$n && printf "%"$n"s" X > r2/large.$n &&
git -C r2 add large.$n && git -C r2 add large.$n &&
git -C r2 commit -m "$n" git -C r2 commit -m "$n" || return 1
done done
' '
@ -281,7 +281,7 @@ test_expect_success 'setup r3' '
echo "This is file: $n" > r3/$n && echo "This is file: $n" > r3/$n &&
git -C r3 add $n && git -C r3 add $n &&
echo "This is file: dir1/$n" > r3/dir1/$n && echo "This is file: dir1/$n" > r3/dir1/$n &&
git -C r3 add dir1/$n git -C r3 add dir1/$n || return 1
done && done &&
git -C r3 commit -m "sparse" && git -C r3 commit -m "sparse" &&
echo dir1/ >pattern1 && echo dir1/ >pattern1 &&
@ -334,7 +334,7 @@ test_expect_success 'setup r4' '
echo "This is file: $n" > r4/$n && echo "This is file: $n" > r4/$n &&
git -C r4 add $n && git -C r4 add $n &&
echo "This is file: dir1/$n" > r4/dir1/$n && echo "This is file: dir1/$n" > r4/dir1/$n &&
git -C r4 add dir1/$n git -C r4 add dir1/$n || return 1
done && done &&
echo dir1/ >r4/pattern && echo dir1/ >r4/pattern &&
git -C r4 add pattern && git -C r4 add pattern &&
@ -409,7 +409,7 @@ test_expect_success 'setup r1 - delete loose blobs' '
for id in `cat expected | sed "s|..|&/|"` for id in `cat expected | sed "s|..|&/|"`
do do
rm r1/.git/objects/$id rm r1/.git/objects/$id || return 1
done done
' '

View File

@ -64,7 +64,7 @@ test_expect_success 'create commits and repack' '
for i in $(test_seq 3) for i in $(test_seq 3)
do do
test_commit $i && test_commit $i &&
git branch commits/$i git branch commits/$i || return 1
done && done &&
git repack git repack
' '
@ -147,13 +147,13 @@ test_expect_success 'Add more commits' '
for i in $(test_seq 4 5) for i in $(test_seq 4 5)
do do
test_commit $i && test_commit $i &&
git branch commits/$i git branch commits/$i || return 1
done && done &&
git reset --hard commits/2 && git reset --hard commits/2 &&
for i in $(test_seq 6 7) for i in $(test_seq 6 7)
do do
test_commit $i && test_commit $i &&
git branch commits/$i git branch commits/$i || return 1
done && done &&
git reset --hard commits/2 && git reset --hard commits/2 &&
git merge commits/4 && git merge commits/4 &&

View File

@ -93,7 +93,7 @@ test_expect_success 'create objects' '
test_commit initial && test_commit initial &&
for i in $(test_seq 1 5) for i in $(test_seq 1 5)
do do
generate_objects $i generate_objects $i || return 1
done && done &&
commit_and_list_objects commit_and_list_objects
' '
@ -155,7 +155,7 @@ test_expect_success 'corrupt idx reports errors' '
test_expect_success 'add more objects' ' test_expect_success 'add more objects' '
for i in $(test_seq 6 10) for i in $(test_seq 6 10)
do do
generate_objects $i generate_objects $i || return 1
done && done &&
commit_and_list_objects commit_and_list_objects
' '
@ -203,7 +203,7 @@ test_expect_success 'add more packs' '
do do
generate_objects $j && generate_objects $j &&
commit_and_list_objects && commit_and_list_objects &&
git pack-objects --index-version=2 $objdir/pack/test-pack <obj-list git pack-objects --index-version=2 $objdir/pack/test-pack <obj-list || return 1
done done
' '
@ -594,7 +594,7 @@ test_expect_success 'force some 64-bit offsets with pack-objects' '
mkdir objects64/pack && mkdir objects64/pack &&
for i in $(test_seq 1 11) for i in $(test_seq 1 11)
do do
generate_objects 11 generate_objects 11 || return 1
done && done &&
commit_and_list_objects && commit_and_list_objects &&
pack64=$(git pack-objects --index-version=2,0x40 objects64/pack/test-64 <obj-list) && pack64=$(git pack-objects --index-version=2,0x40 objects64/pack/test-64 <obj-list) &&
@ -638,7 +638,7 @@ test_expect_success 'setup expire tests' '
git update-index --add large_file.txt && git update-index --add large_file.txt &&
for i in $(test_seq 1 20) for i in $(test_seq 1 20)
do do
test_commit $i test_commit $i || exit 1
done && done &&
git branch A HEAD && git branch A HEAD &&
git branch B HEAD~8 && git branch B HEAD~8 &&

View File

@ -14,7 +14,7 @@ test_expect_success 'setup repo' '
for j in $(test_seq 1 3) for j in $(test_seq 1 3)
do do
mkdir f$i/f$j && mkdir f$i/f$j &&
echo $j >f$i/f$j/data.txt echo $j >f$i/f$j/data.txt || return 1
done done
done && done &&
git add . && git add . &&
@ -23,7 +23,7 @@ test_expect_success 'setup repo' '
do do
git checkout -b topic$i main && git checkout -b topic$i main &&
echo change-$i >f$i/f$i/data.txt && echo change-$i >f$i/f$i/data.txt &&
git commit -a -m "Changed f$i/f$i/data.txt" git commit -a -m "Changed f$i/f$i/data.txt" || return 1
done && done &&
cat >packinput.txt <<-EOF && cat >packinput.txt <<-EOF &&
topic1 topic1

View File

@ -46,7 +46,7 @@ test_expect_success 'index-pack with --[no-]rev-index' '
test_path_exists $rev && test_path_exists $rev &&
test_index_pack "$conf" --no-rev-index && test_index_pack "$conf" --no-rev-index &&
test_path_is_missing $rev test_path_is_missing $rev || return 1
done done
' '

View File

@ -95,7 +95,7 @@ test_expect_success 'setup' '
while [ $cur -le 10 ]; do while [ $cur -le 10 ]; do
add A$cur $(eval echo \$A$prev) && add A$cur $(eval echo \$A$prev) &&
prev=$cur && prev=$cur &&
cur=$(($cur+1)) cur=$(($cur+1)) || return 1
done && done &&
add B1 $A1 && add B1 $A1 &&
git update-ref refs/heads/A "$ATIP" && git update-ref refs/heads/A "$ATIP" &&
@ -112,7 +112,7 @@ test_expect_success 'post 1st pull setup' '
while [ $cur -le 65 ]; do while [ $cur -le 65 ]; do
add B$cur $(eval echo \$B$prev) && add B$cur $(eval echo \$B$prev) &&
prev=$cur && prev=$cur &&
cur=$(($cur+1)) cur=$(($cur+1)) || return 1
done done
' '
@ -464,11 +464,11 @@ test_expect_success 'fetch creating new shallow root' '
test_expect_success 'setup tests for the --stdin parameter' ' test_expect_success 'setup tests for the --stdin parameter' '
for head in C D E F for head in C D E F
do do
add $head add $head || return 1
done && done &&
for head in A B C D E F for head in A B C D E F
do do
git tag $head $head git tag $head $head || return 1
done && done &&
cat >input <<-\EOF && cat >input <<-\EOF &&
refs/heads/C refs/heads/C

View File

@ -130,7 +130,7 @@ test_expect_success 'quickfetch should handle ~1000 refs (on Windows)' '
for i in 0 1 2 3 4 5 6 7 8 9; do for i in 0 1 2 3 4 5 6 7 8 9; do
for j in 0 1 2 3 4 5 6 7 8 9; do for j in 0 1 2 3 4 5 6 7 8 9; do
for k in 0 1 2 3 4 5 6 7 8 9; do for k in 0 1 2 3 4 5 6 7 8 9; do
echo "$branchprefix$i$j$k" >> .git/packed-refs echo "$branchprefix$i$j$k" >> .git/packed-refs || return 1
done done
done done
done && done &&

View File

@ -550,7 +550,7 @@ test_expect_success 'bundle should record HEAD correctly' '
git bundle list-heads bundle5 >actual && git bundle list-heads bundle5 >actual &&
for h in HEAD refs/heads/main for h in HEAD refs/heads/main
do do
echo "$(git rev-parse --verify $h) $h" echo "$(git rev-parse --verify $h) $h" || return 1
done >expect && done >expect &&
test_cmp expect actual test_cmp expect actual

View File

@ -133,7 +133,7 @@ test_expect_success setup '
git config branch.br-$remote-merge.merge refs/heads/three && git config branch.br-$remote-merge.merge refs/heads/three &&
git config branch.br-$remote-octopus.remote $remote && git config branch.br-$remote-octopus.remote $remote &&
git config branch.br-$remote-octopus.merge refs/heads/one && git config branch.br-$remote-octopus.merge refs/heads/one &&
git config --add branch.br-$remote-octopus.merge two git config --add branch.br-$remote-octopus.merge two || return 1
done && done &&
build_script sed_script build_script sed_script
' '
@ -199,7 +199,7 @@ do
refs/heads refs/remotes/rem refs/tags | refs/heads refs/remotes/rem refs/tags |
while read val type refname while read val type refname
do do
git update-ref -d "$refname" "$val" git update-ref -d "$refname" "$val" || return 1
done && done &&
git fetch "$@" >/dev/null && git fetch "$@" >/dev/null &&
cat .git/FETCH_HEAD cat .git/FETCH_HEAD

View File

@ -48,7 +48,7 @@ test_expect_success 'commits with no parents are sent regardless of skip distanc
git init client && git init client &&
for i in $(test_seq 7) for i in $(test_seq 7)
do do
test_commit -C client c$i test_commit -C client c$i || return 1
done && done &&
# We send: "c7" (skip 1) "c5" (skip 2) "c2" (skip 4). After that, since # We send: "c7" (skip 1) "c5" (skip 2) "c2" (skip 4). After that, since
@ -68,7 +68,7 @@ test_expect_success 'when two skips collide, favor the larger one' '
git init client && git init client &&
for i in $(test_seq 11) for i in $(test_seq 11)
do do
test_commit -C client c$i test_commit -C client c$i || return 1
done && done &&
git -C client checkout c5 && git -C client checkout c5 &&
test_commit -C client c5side && test_commit -C client c5side &&
@ -155,14 +155,14 @@ test_expect_success 'do not send "have" with ancestors of commits that server AC
for i in $(test_seq 8) for i in $(test_seq 8)
do do
git -C client checkout --orphan b$i && git -C client checkout --orphan b$i &&
test_commit -C client b$i.c0 test_commit -C client b$i.c0 || return 1
done && done &&
for j in $(test_seq 19) for j in $(test_seq 19)
do do
for i in $(test_seq 8) for i in $(test_seq 8)
do do
git -C client checkout b$i && git -C client checkout b$i &&
test_commit -C client b$i.c$j test_commit -C client b$i.c$j || return 1
done done
done && done &&
@ -201,7 +201,7 @@ test_expect_success 'do not send "have" with ancestors of commits that server AC
# should still send the others (in this test, just check b2). # should still send the others (in this test, just check b2).
for i in $(test_seq 0 8) for i in $(test_seq 0 8)
do do
have_not_sent b1.c$i have_not_sent b1.c$i || return 1
done && done &&
have_sent b2.c1 b2.c0 have_sent b2.c1 b2.c0
' '

View File

@ -118,7 +118,7 @@ test_expect_success 'set up many-ref tests' '
while test $nr -lt 2000 while test $nr -lt 2000
do do
nr=$(( $nr + 1 )) && nr=$(( $nr + 1 )) &&
echo "create refs/heads/b/$nr $COMMIT3" echo "create refs/heads/b/$nr $COMMIT3" || return 1
done done
} | git update-ref --stdin } | git update-ref --stdin
' '

View File

@ -19,7 +19,7 @@ test_expect_success 'setup normal src repo' '
echo "This is file: $n" > src/file.$n.txt && echo "This is file: $n" > src/file.$n.txt &&
git -C src add file.$n.txt && git -C src add file.$n.txt &&
git -C src commit -m "file $n" && git -C src commit -m "file $n" &&
git -C src ls-files -s file.$n.txt >>temp git -C src ls-files -s file.$n.txt >>temp || return 1
done && done &&
awk -f print_2.awk <temp | sort >expect_1.oids && awk -f print_2.awk <temp | sort >expect_1.oids &&
test_line_count = 4 expect_1.oids test_line_count = 4 expect_1.oids
@ -74,7 +74,7 @@ test_expect_success 'push new commits to server' '
do do
echo "Mod file.1.txt $x" >>src/file.1.txt && echo "Mod file.1.txt $x" >>src/file.1.txt &&
git -C src add file.1.txt && git -C src add file.1.txt &&
git -C src commit -m "mod $x" git -C src commit -m "mod $x" || return 1
done && done &&
git -C src blame main -- file.1.txt >expect.blame && git -C src blame main -- file.1.txt >expect.blame &&
git -C src push -u srv main git -C src push -u srv main
@ -116,7 +116,7 @@ test_expect_success 'push new commits to server for file.2.txt' '
do do
echo "Mod file.2.txt $x" >>src/file.2.txt && echo "Mod file.2.txt $x" >>src/file.2.txt &&
git -C src add file.2.txt && git -C src add file.2.txt &&
git -C src commit -m "mod $x" git -C src commit -m "mod $x" || return 1
done && done &&
git -C src push -u srv main git -C src push -u srv main
' '
@ -137,7 +137,7 @@ test_expect_success 'push new commits to server for file.3.txt' '
do do
echo "Mod file.3.txt $x" >>src/file.3.txt && echo "Mod file.3.txt $x" >>src/file.3.txt &&
git -C src add file.3.txt && git -C src add file.3.txt &&
git -C src commit -m "mod $x" git -C src commit -m "mod $x" || return 1
done && done &&
git -C src push -u srv main git -C src push -u srv main
' '
@ -385,7 +385,7 @@ setup_triangle () {
for i in $(test_seq 1 100) for i in $(test_seq 1 100)
do do
echo "make the tree big" >server/file$i && echo "make the tree big" >server/file$i &&
git -C server add file$i git -C server add file$i || return 1
done && done &&
git -C server commit -m "initial" && git -C server commit -m "initial" &&
git clone --bare --filter=tree:0 "file://$(pwd)/server" client && git clone --bare --filter=tree:0 "file://$(pwd)/server" client &&
@ -669,7 +669,7 @@ test_expect_success 'tolerate server sending REF_DELTA against missing promisor
for i in $(test_seq 10) for i in $(test_seq 10)
do do
echo "this is a line" >>"$SERVER/foo.txt" && echo "this is a line" >>"$SERVER/foo.txt" &&
echo "this is another line" >>"$SERVER/have.txt" echo "this is another line" >>"$SERVER/have.txt" || return 1
done && done &&
git -C "$SERVER" add foo.txt have.txt && git -C "$SERVER" add foo.txt have.txt &&
git -C "$SERVER" commit -m bar && git -C "$SERVER" commit -m bar &&

View File

@ -747,7 +747,7 @@ test_expect_success 'clone big repository with http:// using protocol v2' '
echo "data 0" && echo "data 0" &&
echo "M 644 inline bla.txt" && echo "M 644 inline bla.txt" &&
echo "data 4" && echo "data 4" &&
echo "bla" echo "bla" || return 1
done | git -C "$HTTPD_DOCUMENT_ROOT_PATH/big" fast-import && done | git -C "$HTTPD_DOCUMENT_ROOT_PATH/big" fast-import &&
GIT_TRACE_PACKET="$(pwd)/log" GIT_TRACE_CURL="$(pwd)/log" git \ GIT_TRACE_PACKET="$(pwd)/log" GIT_TRACE_CURL="$(pwd)/log" git \
@ -942,7 +942,7 @@ test_expect_success 'part of packfile response provided as URI' '
then then
>h2found >h2found
fi fi
fi fi || return 1
done && done &&
test -f hfound && test -f hfound &&
test -f h2found && test -f h2found &&