]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t5000-t5999: detect and signal failure within loop
authorEric Sunshine <sunshine@sunshineco.com>
Thu, 9 Dec 2021 05:11:14 +0000 (00:11 -0500)
committerJunio C Hamano <gitster@pobox.com>
Mon, 13 Dec 2021 18:29:48 +0000 (10:29 -0800)
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>
20 files changed:
t/t5000-tar-tree.sh
t/t5003-archive-zip.sh
t/t5004-archive-corner-cases.sh
t/t5100-mailinfo.sh
t/t5300-pack-object.sh
t/t5307-pack-missing-commit.sh
t/t5310-pack-bitmaps.sh
t/t5317-pack-objects-filter-objects.sh
t/t5318-commit-graph.sh
t/t5319-multi-pack-index.sh
t/t5322-pack-objects-sparse.sh
t/t5325-reverse-index.sh
t/t5500-fetch-pack.sh
t/t5502-quickfetch.sh
t/t5510-fetch.sh
t/t5515-fetch-merge-logic.sh
t/t5552-skipping-fetch-negotiator.sh
t/t5571-pre-push-hook.sh
t/t5616-partial-clone.sh
t/t5702-protocol-v2.sh

index 2c88d1c159623d6ba8a201352f7df26b4d2f23f7..7f8d2ab0a72dac716198a424556d1e9323f2f8c3 100755 (executable)
@@ -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
        ) &&
index 1e6d18b140e5193d1eb046adbbbbba8c20cb63b1..d726964307ca89373eeaf206bbb2dc2d4c1c3008 100755 (executable)
@@ -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)
 '
 
index 2d32d0ed122277089966b44f015b5f8ff6765e1c..ae508e21623fb4af7b55c1c8afe27556b24bb232 100755 (executable)
@@ -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) &&
 
index 141b29f0319a606ceefce3a06cd26990a64c8f06..cebad1048cfca3a142bcaef361dfab69fe889ceb 100755 (executable)
@@ -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 &&
index f9877d42d72bf682726d672059e05ecc019942d4..2fd845187e76bd2ca7269ae45441c1495eae5839 100755 (executable)
@@ -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 &&
index f4338abb78a83967a1bdc6b264600262a0f94d65..fa4bc269fe86f47244c861ea49d2996355c2f1aa 100755 (executable)
@@ -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" : "\(..\)") &&
index dcf03d324a25a4bdc14156c6b53c5442f9c3d83b..783cd96290899b59c737b7667856b5b1e3b4f552 100755 (executable)
@@ -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 &&
index 8fb6acae47dee8920a6c1d07d7f65baacbfa5a98..33b740ce628f834a339154bd05d1acb5a1bbe4b7 100755 (executable)
@@ -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
 '
 
index f516fda7cc934dc7672f0e0765206461a01df51e..edb728f77c3583cecde2d87555a4547464db7b96 100755 (executable)
@@ -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 &&
index 3f69e43178c1d9b7eec4b3b14c8311c867328bce..86b0372dc8ed3ba436456bd87b717a4930ad77ee 100755 (executable)
@@ -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 &&
index 61cb907a9035219aecde0d425bfe73a7c98083ae..d39958c066de5e3739b48a4a3a64cb46f21f6700 100755 (executable)
@@ -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
index da453f68d67974327248563c25694adbe19154af..d042d26f2b393d52049ba3c9972e2516b03ed239 100755 (executable)
@@ -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
 '
 
index 8a5d3492c713b8ca5eceef13ed55f7bd49edcae9..f0dc4e696860a4435a1be1182457325290bb1eb4 100755 (executable)
@@ -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
index 8c05c7715bff85c643bf8f09540a13ebe9312fb0..b160f8b7fb7e1f9973361cf3ed86d769d5610206 100755 (executable)
@@ -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 &&
index 01468ce6d87ef799085567be4a8fb23bd8147243..ce18c20acdfefcefb3e9f9c4df548e6212eea5bf 100755 (executable)
@@ -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
 
index c69cfd5c648efb6e32481aa52abed55830fd1e94..320d26796d24d8a2281d37220a7bdf73cafaa503 100755 (executable)
@@ -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
index 7b9fb4ff02c2145a6029dee781661dcab37c3bdc..165427d57e5cfb2c4ecd3826564bf7ea89fba629 100755 (executable)
@@ -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
 '
index 80e86d82843b408b46585dc8693ec81db4d130f5..660f876eec2122f3b00e2dd087a03e2ffcd685e2 100755 (executable)
@@ -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
 '
index 23c156e3991cc9643aa3c15437d92667059625da..34469b6ac10fef6dac4fb161f5377a8f47a6dd98 100755 (executable)
@@ -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 &&
index d527cf6c49f9d864ca7c296515e7509caf5a0c34..ed8a07196153dbdfaa87d029ee21056fc11ef99b 100755 (executable)
@@ -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 &&