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) &&
if test -n "$path"
then
mv "$data" "$path"
mv "$data" "$path" || exit 1
fi
fi
done
@ -133,7 +133,7 @@ test_expect_success 'populate workdir' '
for depth in 1 2 3 4 5
do
mkdir $p &&
cd $p
cd $p || exit 1
done &&
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 not substituted O" >a/substfile2 &&
(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)
'

View File

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

View File

@ -122,7 +122,7 @@ test_expect_success 'mailinfo unescapes with --mboxrd' '
do
git mailinfo mboxrd/msg mboxrd/patch \
<mboxrd/$i >mboxrd/out &&
test_cmp "$DATA/${i}mboxrd" mboxrd/msg
test_cmp "$DATA/${i}mboxrd" mboxrd/msg || return 1
done &&
sp=" " &&
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
do
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 >LIST &&
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
do
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 >LIST &&
rm -f .git/index &&
@ -586,7 +586,7 @@ test_expect_success 'setup for --stdin-packs tests' '
for id in A B C
do
git pack-objects .git/objects/pack/pack-$id \
--incremental --revs <<-EOF
--incremental --revs <<-EOF || exit 1
refs/tags/$id
EOF
done &&

View File

@ -11,7 +11,7 @@ test_expect_success setup '
git add "file$i" &&
test_tick &&
git commit -m "$i" &&
git tag "tag$i"
git tag "tag$i" || return 1
done &&
obj=$(git rev-parse --verify tag3) &&
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" &&
for i in .git/objects/pack/*.pack
do
>${i%.pack}.keep
>${i%.pack}.keep || return 1
done &&
reusable_pack --honor-pack-keep >empty.pack &&
git index-pack empty.pack &&

View File

@ -18,7 +18,7 @@ test_expect_success 'setup r1' '
do
echo "This is file: $n" > r1/file.$n &&
git -C r1 add file.$n &&
git -C r1 commit -m "$n"
git -C r1 commit -m "$n" || return 1
done
'
@ -118,7 +118,7 @@ test_expect_success 'setup r2' '
do
printf "%"$n"s" X > r2/large.$n &&
git -C r2 add large.$n &&
git -C r2 commit -m "$n"
git -C r2 commit -m "$n" || return 1
done
'
@ -281,7 +281,7 @@ test_expect_success 'setup r3' '
echo "This is file: $n" > r3/$n &&
git -C r3 add $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 &&
git -C r3 commit -m "sparse" &&
echo dir1/ >pattern1 &&
@ -334,7 +334,7 @@ test_expect_success 'setup r4' '
echo "This is file: $n" > r4/$n &&
git -C r4 add $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 &&
echo dir1/ >r4/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|..|&/|"`
do
rm r1/.git/objects/$id
rm r1/.git/objects/$id || return 1
done
'

View File

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

View File

@ -93,7 +93,7 @@ test_expect_success 'create objects' '
test_commit initial &&
for i in $(test_seq 1 5)
do
generate_objects $i
generate_objects $i || return 1
done &&
commit_and_list_objects
'
@ -155,7 +155,7 @@ test_expect_success 'corrupt idx reports errors' '
test_expect_success 'add more objects' '
for i in $(test_seq 6 10)
do
generate_objects $i
generate_objects $i || return 1
done &&
commit_and_list_objects
'
@ -203,7 +203,7 @@ test_expect_success 'add more packs' '
do
generate_objects $j &&
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
'
@ -594,7 +594,7 @@ test_expect_success 'force some 64-bit offsets with pack-objects' '
mkdir objects64/pack &&
for i in $(test_seq 1 11)
do
generate_objects 11
generate_objects 11 || return 1
done &&
commit_and_list_objects &&
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 &&
for i in $(test_seq 1 20)
do
test_commit $i
test_commit $i || exit 1
done &&
git branch A HEAD &&
git branch B HEAD~8 &&

View File

@ -14,7 +14,7 @@ test_expect_success 'setup repo' '
for j in $(test_seq 1 3)
do
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 &&
git add . &&
@ -23,7 +23,7 @@ test_expect_success 'setup repo' '
do
git checkout -b topic$i main &&
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 &&
cat >packinput.txt <<-EOF &&
topic1

View File

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

View File

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

View File

@ -550,7 +550,7 @@ test_expect_success 'bundle should record HEAD correctly' '
git bundle list-heads bundle5 >actual &&
for h in HEAD refs/heads/main
do
echo "$(git rev-parse --verify $h) $h"
echo "$(git rev-parse --verify $h) $h" || return 1
done >expect &&
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-octopus.remote $remote &&
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 &&
build_script sed_script
'
@ -199,7 +199,7 @@ do
refs/heads refs/remotes/rem refs/tags |
while read val type refname
do
git update-ref -d "$refname" "$val"
git update-ref -d "$refname" "$val" || return 1
done &&
git fetch "$@" >/dev/null &&
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 &&
for i in $(test_seq 7)
do
test_commit -C client c$i
test_commit -C client c$i || return 1
done &&
# 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 &&
for i in $(test_seq 11)
do
test_commit -C client c$i
test_commit -C client c$i || return 1
done &&
git -C client checkout c5 &&
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)
do
git -C client checkout --orphan b$i &&
test_commit -C client b$i.c0
test_commit -C client b$i.c0 || return 1
done &&
for j in $(test_seq 19)
do
for i in $(test_seq 8)
do
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 &&
@ -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).
for i in $(test_seq 0 8)
do
have_not_sent b1.c$i
have_not_sent b1.c$i || return 1
done &&
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
do
nr=$(( $nr + 1 )) &&
echo "create refs/heads/b/$nr $COMMIT3"
echo "create refs/heads/b/$nr $COMMIT3" || return 1
done
} | 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 &&
git -C src add file.$n.txt &&
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 &&
awk -f print_2.awk <temp | sort >expect_1.oids &&
test_line_count = 4 expect_1.oids
@ -74,7 +74,7 @@ test_expect_success 'push new commits to server' '
do
echo "Mod file.1.txt $x" >>src/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 &&
git -C src blame main -- file.1.txt >expect.blame &&
git -C src push -u srv main
@ -116,7 +116,7 @@ test_expect_success 'push new commits to server for file.2.txt' '
do
echo "Mod file.2.txt $x" >>src/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 &&
git -C src push -u srv main
'
@ -137,7 +137,7 @@ test_expect_success 'push new commits to server for file.3.txt' '
do
echo "Mod file.3.txt $x" >>src/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 &&
git -C src push -u srv main
'
@ -385,7 +385,7 @@ setup_triangle () {
for i in $(test_seq 1 100)
do
echo "make the tree big" >server/file$i &&
git -C server add file$i
git -C server add file$i || return 1
done &&
git -C server commit -m "initial" &&
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)
do
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 &&
git -C "$SERVER" add foo.txt have.txt &&
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 "M 644 inline bla.txt" &&
echo "data 4" &&
echo "bla"
echo "bla" || return 1
done | git -C "$HTTPD_DOCUMENT_ROOT_PATH/big" fast-import &&
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
>h2found
fi
fi
fi || return 1
done &&
test -f hfound &&
test -f h2found &&