]> git.ipfire.org Git - thirdparty/git.git/commitdiff
tests: fix broken &&-chains in `{...}` groups
authorEric Sunshine <sunshine@sunshineco.com>
Thu, 9 Dec 2021 05:11:08 +0000 (00:11 -0500)
committerJunio C Hamano <gitster@pobox.com>
Mon, 13 Dec 2021 18:29:48 +0000 (10:29 -0800)
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>
19 files changed:
t/t0021-conversion.sh
t/t0069-oidtree.sh
t/t1006-cat-file.sh
t/t1300-config.sh
t/t1403-show-ref.sh
t/t2200-add-update.sh
t/t2201-add-update-typechange.sh
t/t4023-diff-rename-typechange.sh
t/t4124-apply-ws-rule.sh
t/t4150-am.sh
t/t4212-log-corrupt.sh
t/t5316-pack-delta-depth.sh
t/t5510-fetch.sh
t/t5515-fetch-merge-logic.sh
t/t5562-http-backend-content-length.sh
t/t5570-git-daemon.sh
t/t5571-pre-push-hook.sh
t/t7513-interpret-trailers.sh
t/t8002-blame.sh

index 1a1a69ad92fb648f0bbf3094295f2b2b6744d946..bb3de2701ab2ccd509e85f92406f46a8fc43116f 100755 (executable)
@@ -76,13 +76,13 @@ test_expect_success setup '
        git config filter.rot13.clean ./rot13.sh &&
 
        {
-           echo "*.t filter=rot13"
+           echo "*.t filter=rot13" &&
            echo "*.i ident"
        } >.gitattributes &&
 
        {
-           echo a b c d e f g h i j k l m
-           echo n o p q r s t u v w x y z
+           echo a b c d e f g h i j k l m &&
+           echo n o p q r s t u v w x y z &&
            echo '\''$Id$'\''
        } >test &&
        cat test >test.t &&
@@ -159,7 +159,7 @@ test_expect_success expanded_in_repo '
                printf "\$Id: NoTerminatingSymbolAtEOF"
        } >expected-output-crlf &&
        {
-               echo "expanded-keywords ident"
+               echo "expanded-keywords ident" &&
                echo "expanded-keywords-crlf ident text eol=crlf"
        } >>.gitattributes &&
 
index 74cc59bf8a7de8dfe1f4605c5cd1059d889bc4c6..889db508183f7c858c438aa5144629279660e864 100755 (executable)
@@ -28,7 +28,7 @@ test_expect_success 'oidtree insert and contains' '
        EOF
        {
                echoid insert 444 1 2 3 4 5 a b c d e &&
-               echoid contains 44 441 440 444 4440 4444
+               echoid contains 44 441 440 444 4440 4444 &&
                echo clear
        } | test-tool oidtree >actual &&
        test_cmp expect actual
@@ -37,11 +37,11 @@ test_expect_success 'oidtree insert and contains' '
 test_expect_success 'oidtree each' '
        echoid "" 123 321 321 >expect &&
        {
-               echoid insert f 9 8 123 321 a b c d e
-               echo each 12300
-               echo each 3211
-               echo each 3210
-               echo each 32100
+               echoid insert f 9 8 123 321 a b c d e &&
+               echo each 12300 &&
+               echo each 3211 &&
+               echo each 3210 &&
+               echo each 32100 &&
                echo clear
        } | test-tool oidtree >actual &&
        test_cmp expect actual
index 67a3f64c2d68008edb3695234b6d1e6c43124c0a..f6f00c70399572f7e411100569b47e34184d361b 100755 (executable)
@@ -283,7 +283,7 @@ test_expect_success "--batch-check with multiple sha1s gives correct format" '
 
 test_expect_success 'setup blobs which are likely to delta' '
        test-tool genrandom foo 10240 >foo &&
-       { cat foo; echo plus; } >foo-plus &&
+       { cat foo && echo plus; } >foo-plus &&
        git add foo foo-plus &&
        git commit -m foo &&
        cat >blobs <<-\EOF
index 9571649c425e3d1355c5226c45866d59e6dcd1a3..516dd8bfa8920b027c7657edb669cf387233d165 100755 (executable)
@@ -901,7 +901,7 @@ test_expect_success 'get --expiry-date' '
        EOF
        : "work around heredoc parsing bug fixed in dash 0.5.7 (in ec2c84d)" &&
        {
-               echo "$rel_out $(git config --expiry-date date.valid1)"
+               echo "$rel_out $(git config --expiry-date date.valid1)" &&
                git config --expiry-date date.valid2 &&
                git config --expiry-date date.valid3 &&
                git config --expiry-date date.valid4 &&
index 17d3cc14050695d42bc19d043e9c3c5f4ab000e4..bbc01aae344c5dadf6df50cbef3927b690d3a99f 100755 (executable)
@@ -78,7 +78,7 @@ test_expect_success 'show-ref --verify -q' '
 test_expect_success 'show-ref -d' '
        {
                echo $(git rev-parse refs/tags/A) refs/tags/A &&
-               echo $(git rev-parse refs/tags/A^0) "refs/tags/A^{}"
+               echo $(git rev-parse refs/tags/A^0) "refs/tags/A^{}" &&
                echo $(git rev-parse refs/tags/C) refs/tags/C
        } >expect &&
        git show-ref -d A C >actual &&
@@ -148,7 +148,7 @@ test_expect_success 'show-ref --heads, --tags, --head, pattern' '
 
        {
                echo $(git rev-parse HEAD) HEAD &&
-               echo $(git rev-parse refs/heads/B) refs/heads/B
+               echo $(git rev-parse refs/heads/B) refs/heads/B &&
                echo $(git rev-parse refs/tags/B) refs/tags/B
        } >expect &&
        git show-ref --head B >actual &&
@@ -156,8 +156,8 @@ test_expect_success 'show-ref --heads, --tags, --head, pattern' '
 
        {
                echo $(git rev-parse HEAD) HEAD &&
-               echo $(git rev-parse refs/heads/B) refs/heads/B
-               echo $(git rev-parse refs/tags/B) refs/tags/B
+               echo $(git rev-parse refs/heads/B) refs/heads/B &&
+               echo $(git rev-parse refs/tags/B) refs/tags/B &&
                echo $(git rev-parse refs/tags/B^0) "refs/tags/B^{}"
        } >expect &&
        git show-ref --head -d B >actual &&
index 67b9cc752f8ffb633e9a66780c0471f76a8d2152..d2ef0041f9515b1cb3aaf674cf73a8dc4fb6c5ff 100755 (executable)
@@ -153,10 +153,10 @@ test_expect_success 'add -u resolves unmerged paths' '
                        echo "100644 $one 1     $path" &&
                        echo "100644 $two 2     $path" &&
                        echo "100644 $three 3   $path"
-               done
-               echo "100644 $one 1     path3"
-               echo "100644 $one 1     path4"
-               echo "100644 $one 3     path5"
+               done &&
+               echo "100644 $one 1     path3" &&
+               echo "100644 $one 1     path4" &&
+               echo "100644 $one 3     path5" &&
                echo "100644 $one 3     path6"
        } |
        git update-index --index-info &&
@@ -173,8 +173,8 @@ test_expect_success 'add -u resolves unmerged paths' '
        git add -u &&
        git ls-files -s path1 path2 path3 path4 path5 path6 >actual &&
        {
-               echo "100644 $three 0   path1"
-               echo "100644 $two 0     path3"
+               echo "100644 $three 0   path1" &&
+               echo "100644 $two 0     path3" &&
                echo "100644 $two 0     path5"
        } >expect &&
        test_cmp expect actual
index a4eec0a3465bc02fb5c88e007ee4e32aa9c2794f..687be974d413a1f50e0f25377d9ff3f30af47ec2 100755 (executable)
@@ -97,17 +97,17 @@ test_expect_success modify '
                "
        } >expect &&
        {
-               cat expect
-               echo ":100644 160000 $_empty $ZERO_OID T        yonk"
+               cat expect &&
+               echo ":100644 160000 $_empty $ZERO_OID T        yonk" &&
                echo ":100644 000000 $_empty $ZERO_OID D        zifmia"
        } >expect-files &&
        {
-               cat expect
+               cat expect &&
                echo ":000000 160000 $ZERO_OID $ZERO_OID A      yonk"
        } >expect-index &&
        {
-               echo "100644 $_empty 0  nitfol"
-               echo "160000 $yomin 0   yomin"
+               echo "100644 $_empty 0  nitfol" &&
+               echo "160000 $yomin 0   yomin" &&
                echo "160000 $yonk 0    yonk"
        } >expect-final
 '
index 47d6f35dcc4d93bbbdd083d6cdd23e7a5c2dff36..7cb99092938d7dd64e8ab6f4e147fc5f70c0a310 100755 (executable)
@@ -55,7 +55,7 @@ test_expect_success 'cross renames to be detected for regular files' '
 
        git diff-tree five six -r --name-status -B -M | sort >actual &&
        {
-               echo "R100      foo     bar"
+               echo "R100      foo     bar" &&
                echo "R100      bar     foo"
        } | sort >expect &&
        test_cmp expect actual
@@ -66,7 +66,7 @@ test_expect_success 'cross renames to be detected for typechange' '
 
        git diff-tree one two -r --name-status -B -M | sort >actual &&
        {
-               echo "R100      foo     bar"
+               echo "R100      foo     bar" &&
                echo "R100      bar     foo"
        } | sort >expect &&
        test_cmp expect actual
@@ -78,7 +78,7 @@ test_expect_success 'moves and renames' '
        git diff-tree three four -r --name-status -B -M | sort >actual &&
        {
                # see -B -M (#6) in t4008
-               echo "C100      foo     bar"
+               echo "C100      foo     bar" &&
                echo "T100      foo"
        } | sort >expect &&
        test_cmp expect actual
index ebff6c6883dc71a8e5fa0441ecc354ee9712383e..ec5c10d2a0bd27f18d9de399d5128d24c9dacd11 100755 (executable)
@@ -233,7 +233,7 @@ test_expect_success 'blank at EOF with --whitespace=fix (1)' '
        test_write_lines a b c >one &&
        git add one &&
        test_write_lines a b c >expect &&
-       { cat expect; echo; } >one &&
+       { cat expect && echo; } >one &&
        git diff -- one >patch &&
 
        git checkout one &&
index 2aaaa0d7dedf68934e8d5b4c6610f1a859acbb29..103cd39148cea0996fbbe79bb076f178accb05d9 100755 (executable)
@@ -116,7 +116,7 @@ test_expect_success setup '
                git format-patch --stdout first | sed -e "1d"
        } | append_cr >patch1-crlf.eml &&
        {
-               printf "%255s\\n" ""
+               printf "%255s\\n" "" &&
                echo "X-Fake-Field: Line One" &&
                echo "X-Fake-Field: Line Two" &&
                echo "X-Fake-Field: Line Three" &&
index 03b952c90d2fca011038e38075344530b5d64477..0244888a5a7a8939276b0425b9144a8e262a2c8f 100755 (executable)
@@ -20,10 +20,10 @@ test_expect_success 'fsck notices broken commit' '
 
 test_expect_success 'git log with broken author email' '
        {
-               echo commit $(cat broken_email.hash)
-               echo "Author: A U Thor <author@example.com>"
-               echo "Date:   Thu Apr 7 15:13:13 2005 -0700"
-               echo
+               echo commit $(cat broken_email.hash) &&
+               echo "Author: A U Thor <author@example.com>" &&
+               echo "Date:   Thu Apr 7 15:13:13 2005 -0700" &&
+               echo &&
                echo "    foo"
        } >expect.out &&
 
index 759169d0742c999adb33f91bc1ae1283877cb3db..df524f7b6dde1fa63d268bb88730dc766a003f4d 100755 (executable)
@@ -57,8 +57,11 @@ test_expect_success 'create series of packs' '
                git commit -m $i &&
                cur=$(git rev-parse HEAD^{tree}) &&
                {
-                       test -n "$prev" && echo "-$prev"
-                       echo $cur
+                       if test -n "$prev"
+                       then
+                               echo "-$prev"
+                       fi &&
+                       echo $cur &&
                        echo "$(git rev-parse :file) file"
                } | git pack-objects --stdout >tmp &&
                git index-pack --stdin --fix-thin <tmp || return 1
index 1892d6615a6562ff08a9d7a07f0d794a66662bd3..01468ce6d87ef799085567be4a8fb23bd8147243 100755 (executable)
@@ -71,7 +71,7 @@ test_expect_success "fetch test for-merge" '
        main_in_two=$(cd ../two && git rev-parse main) &&
        one_in_two=$(cd ../two && git rev-parse one) &&
        {
-               echo "$one_in_two       "
+               echo "$one_in_two       " &&
                echo "$main_in_two      not-for-merge"
        } >expected &&
        cut -f -2 .git/FETCH_HEAD >actual &&
index 9d440e2821a6f5515f5afdcb3efbcccbe3d99ca3..c69cfd5c648efb6e32481aa52abed55830fd1e94 100755 (executable)
@@ -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" &&
index 05a58069b0cd41243f072c37b612c721ee88c2e1..b68ec22d3fdb0bab650b39642a61a11a6579fcb5 100755 (executable)
@@ -63,7 +63,7 @@ test_expect_success 'setup' '
        hash_next=$(git commit-tree -p HEAD -m next HEAD^{tree}) &&
        {
                printf "%s %s refs/heads/newbranch\\0report-status object-format=%s\\n" \
-                       "$ZERO_OID" "$hash_next" "$(test_oid algo)" | packetize_raw
+                       "$ZERO_OID" "$hash_next" "$(test_oid algo)" | packetize_raw &&
                printf 0000 &&
                echo "$hash_next" | git pack-objects --stdout
        } >push_body &&
index b87ca06a585ca9791ca766dea212704dacddd7ff..1131503b760c48cbb6f6b0d10a5027d76ec40db5 100755 (executable)
@@ -194,7 +194,7 @@ test_expect_success 'hostname cannot break out of directory' '
 
 test_expect_success FAKENC 'hostname interpolation works after LF-stripping' '
        {
-               printf "git-upload-pack /interp.git\n\0host=localhost" | packetize_raw
+               printf "git-upload-pack /interp.git\n\0host=localhost" | packetize_raw &&
                printf "0000"
        } >input &&
        fake_nc "$GIT_DAEMON_HOST_PORT" <input >output &&
index b043a279f15f6ff3d85ba29dddd6f22eeaff6b1f..80e86d82843b408b46585dc8693ec81db4d130f5 100755 (executable)
@@ -114,7 +114,7 @@ test_expect_success 'push to URL' '
 
 test_expect_success 'set up many-ref tests' '
        {
-               nr=1000
+               nr=1000 &&
                while test $nr -lt 2000
                do
                        nr=$(( $nr + 1 )) &&
index 04885d0a5e5c2697409395698af15b48002cabe2..97f10905d23fd3077aa9dd253fa079eb9c5be73d 100755 (executable)
@@ -156,7 +156,7 @@ test_expect_success 'with config option on the command line' '
                Acked-by: Johan
                Reviewed-by: Peff
        EOF
-       { echo; echo "Acked-by: Johan"; } |
+       { echo && echo "Acked-by: Johan"; } |
        git -c "trailer.Acked-by.ifexists=addifdifferent" interpret-trailers \
                --trailer "Reviewed-by: Peff" --trailer "Acked-by: Johan" >actual &&
        test_cmp expected actual
index 5bb302b1ba0f36eff7c3bd64a4a0dd690a135559..ee4fdd8f18d572f82392b6ed2e4b4da9837b63b5 100755 (executable)
@@ -97,7 +97,7 @@ test_expect_success 'set up abbrev tests' '
        test_commit abbrev &&
        sha1=$(git rev-parse --verify HEAD) &&
        check_abbrev () {
-               expect=$1; shift
+               expect=$1 && shift &&
                echo $sha1 | cut -c 1-$expect >expect &&
                git blame "$@" abbrev.t >actual &&
                perl -lne "/[0-9a-f]+/ and print \$&" <actual >actual.sha &&