Git fork

tests: teach callers of test_i18ngrep to use test_grep

They are equivalents and the former still exists, so as long as the
only change this commit makes are to rewrite test_i18ngrep to
test_grep, there won't be any new bug, even if there still are
callers of test_i18ngrep remaining in the tree, or when merged to
other topics that add new uses of test_i18ngrep.

This patch was produced more or less with

git grep -l -e 'test_i18ngrep ' 't/t[0-9][0-9][0-9][0-9]-*.sh' |
xargs perl -p -i -e 's/test_i18ngrep /test_grep /'

and a good way to sanity check the result yourself is to run the
above in a checkout of c4603c1c (test framework: further deprecate
test_i18ngrep, 2023-10-31) and compare the resulting working tree
contents with the result of applying this patch to the same commit.
You'll see that test_i18ngrep in a few t/lib-*.sh files corrected,
in addition to the manual reproduction.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

+1191 -1191
+1 -1
contrib/mw-to-git/t/t9363-mw-to-git-export-import.sh
··· 161 git add foo.forbidden && 162 git commit -m "add a file" && 163 git push 2>actual && 164 - test_i18ngrep "foo.forbidden is not a permitted file" actual 165 ) 166 ' 167
··· 161 git add foo.forbidden && 162 git commit -m "add a file" && 163 git push 2>actual && 164 + test_grep "foo.forbidden is not a permitted file" actual 165 ) 166 ' 167
+1 -1
t/lib-httpd.sh
··· 255 ' 256 257 test_expect_success 'non-fast-forward push shows help message' ' 258 - test_i18ngrep "Updates were rejected because" output 259 ' 260 261 test_expect_${EXPECT_CAS_RESULT} 'force with lease aka cas' '
··· 255 ' 256 257 test_expect_success 'non-fast-forward push shows help message' ' 258 + test_grep "Updates were rejected because" output 259 ' 260 261 test_expect_${EXPECT_CAS_RESULT} 'force with lease aka cas' '
+1 -1
t/lib-submodule-update.sh
··· 830 cd submodule_update && 831 git branch -t invalid_sub1 origin/invalid_sub1 && 832 test_must_fail $command invalid_sub1 2>err && 833 - test_i18ngrep sub1 err && 834 test_superproject_content origin/add_sub1 && 835 test_submodule_content sub1 origin/add_sub1 836 )
··· 830 cd submodule_update && 831 git branch -t invalid_sub1 origin/invalid_sub1 && 832 test_must_fail $command invalid_sub1 2>err && 833 + test_grep sub1 err && 834 test_superproject_content origin/add_sub1 && 835 test_submodule_content sub1 origin/add_sub1 836 )
+8 -8
t/t0001-init.sh
··· 168 git -c init.defaultBranch=initial init >out1 2>err1 && 169 git init >out2 2>err2 170 ) && 171 - test_i18ngrep "Initialized empty" again/out1 && 172 - test_i18ngrep "Reinitialized existing" again/out2 && 173 test_must_be_empty again/err1 && 174 test_must_be_empty again/err2 175 ' ··· 332 333 test_expect_success 'explicit bare & --separate-git-dir incompatible' ' 334 test_must_fail git init --bare --separate-git-dir goop.git bare.git 2>err && 335 - test_i18ngrep "cannot be used together" err 336 ' 337 338 test_expect_success 'implicit bare & --separate-git-dir incompatible' ' ··· 340 mkdir -p bare.git && 341 test_must_fail env GIT_DIR=. \ 342 git -C bare.git init --separate-git-dir goop.git 2>err && 343 - test_i18ngrep "incompatible" err 344 ' 345 346 test_expect_success 'bare & --separate-git-dir incompatible within worktree' ' ··· 349 git clone --bare . bare.git && 350 git -C bare.git worktree add --detach ../linkwt && 351 test_must_fail git -C linkwt init --separate-git-dir seprepo 2>err && 352 - test_i18ngrep "incompatible" err 353 ' 354 355 test_lazy_prereq GETCWD_IGNORES_PERMS ' ··· 563 564 : re-initializing should not change the branch name && 565 git init --initial-branch=ignore initial-branch-option 2>err && 566 - test_i18ngrep "ignored --initial-branch" err && 567 git -C initial-branch-option symbolic-ref HEAD >actual && 568 grep hello actual 569 ' ··· 579 GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME= git -c color.advice=always \ 580 init unconfigured-default-branch-name 2>err && 581 test_decode_color <err >decoded && 582 - test_i18ngrep "<YELLOW>hint: " decoded 583 ' 584 585 test_expect_success 'overridden default main branch name (env)' ' ··· 592 test_expect_success 'invalid default branch name' ' 593 test_must_fail env GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME="with space" \ 594 git init initial-branch-invalid 2>err && 595 - test_i18ngrep "invalid branch name" err 596 ' 597 598 test_expect_success 'branch -m with the initial branch' '
··· 168 git -c init.defaultBranch=initial init >out1 2>err1 && 169 git init >out2 2>err2 170 ) && 171 + test_grep "Initialized empty" again/out1 && 172 + test_grep "Reinitialized existing" again/out2 && 173 test_must_be_empty again/err1 && 174 test_must_be_empty again/err2 175 ' ··· 332 333 test_expect_success 'explicit bare & --separate-git-dir incompatible' ' 334 test_must_fail git init --bare --separate-git-dir goop.git bare.git 2>err && 335 + test_grep "cannot be used together" err 336 ' 337 338 test_expect_success 'implicit bare & --separate-git-dir incompatible' ' ··· 340 mkdir -p bare.git && 341 test_must_fail env GIT_DIR=. \ 342 git -C bare.git init --separate-git-dir goop.git 2>err && 343 + test_grep "incompatible" err 344 ' 345 346 test_expect_success 'bare & --separate-git-dir incompatible within worktree' ' ··· 349 git clone --bare . bare.git && 350 git -C bare.git worktree add --detach ../linkwt && 351 test_must_fail git -C linkwt init --separate-git-dir seprepo 2>err && 352 + test_grep "incompatible" err 353 ' 354 355 test_lazy_prereq GETCWD_IGNORES_PERMS ' ··· 563 564 : re-initializing should not change the branch name && 565 git init --initial-branch=ignore initial-branch-option 2>err && 566 + test_grep "ignored --initial-branch" err && 567 git -C initial-branch-option symbolic-ref HEAD >actual && 568 grep hello actual 569 ' ··· 579 GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME= git -c color.advice=always \ 580 init unconfigured-default-branch-name 2>err && 581 test_decode_color <err >decoded && 582 + test_grep "<YELLOW>hint: " decoded 583 ' 584 585 test_expect_success 'overridden default main branch name (env)' ' ··· 592 test_expect_success 'invalid default branch name' ' 593 test_must_fail env GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME="with space" \ 594 git init initial-branch-invalid 2>err && 595 + test_grep "invalid branch name" err 596 ' 597 598 test_expect_success 'branch -m with the initial branch' '
+2 -2
t/t0002-gitfile.sh
··· 22 test_expect_success 'bad setup: invalid .git file format' ' 23 echo "gitdir $REAL" >.git && 24 test_must_fail git rev-parse 2>.err && 25 - test_i18ngrep "invalid gitfile format" .err 26 ' 27 28 test_expect_success 'bad setup: invalid .git file path' ' 29 echo "gitdir: $REAL.not" >.git && 30 test_must_fail git rev-parse 2>.err && 31 - test_i18ngrep "not a git repository" .err 32 ' 33 34 test_expect_success 'final setup + check rev-parse --git-dir' '
··· 22 test_expect_success 'bad setup: invalid .git file format' ' 23 echo "gitdir $REAL" >.git && 24 test_must_fail git rev-parse 2>.err && 25 + test_grep "invalid gitfile format" .err 26 ' 27 28 test_expect_success 'bad setup: invalid .git file path' ' 29 echo "gitdir: $REAL.not" >.git && 30 test_must_fail git rev-parse 2>.err && 31 + test_grep "not a git repository" .err 32 ' 33 34 test_expect_success 'final setup + check rev-parse --git-dir' '
+2 -2
t/t0003-attributes.sh
··· 259 test_expect_success 'negative patterns' ' 260 echo "!f test=bar" >.gitattributes && 261 git check-attr test -- '"'"'!f'"'"' 2>errors && 262 - test_i18ngrep "Negative patterns are ignored" errors 263 ' 264 265 test_expect_success 'patterns starting with exclamation' ' ··· 424 mkdir subdir && 425 ln -s ../attr subdir/.gitattributes && 426 attr_check_basic subdir/file unspecified && 427 - test_i18ngrep "unable to access.*gitattributes" err 428 ' 429 430 test_expect_success 'large attributes line ignored in tree' '
··· 259 test_expect_success 'negative patterns' ' 260 echo "!f test=bar" >.gitattributes && 261 git check-attr test -- '"'"'!f'"'"' 2>errors && 262 + test_grep "Negative patterns are ignored" errors 263 ' 264 265 test_expect_success 'patterns starting with exclamation' ' ··· 424 mkdir subdir && 425 ln -s ../attr subdir/.gitattributes && 426 attr_check_basic subdir/file unspecified && 427 + test_grep "unable to access.*gitattributes" err 428 ' 429 430 test_expect_success 'large attributes line ignored in tree' '
+2 -2
t/t0008-ignores.sh
··· 49 50 stderr_contains () { 51 regexp="$1" 52 - if test_i18ngrep "$regexp" "$HOME/stderr" 53 then 54 return 0 55 else ··· 942 ln -s ignore subdir/.gitignore && 943 test_must_fail git check-ignore subdir/file >actual 2>err && 944 test_must_be_empty actual && 945 - test_i18ngrep "unable to access.*gitignore" err 946 ' 947 948 test_done
··· 49 50 stderr_contains () { 51 regexp="$1" 52 + if test_grep "$regexp" "$HOME/stderr" 53 then 54 return 0 55 else ··· 942 ln -s ignore subdir/.gitignore && 943 test_must_fail git check-ignore subdir/file >actual 2>err && 944 test_must_be_empty actual && 945 + test_grep "unable to access.*gitignore" err 946 ' 947 948 test_done
+8 -8
t/t0012-help.sh
··· 100 101 test_expect_success 'git help' ' 102 git help >help.output && 103 - test_i18ngrep "^ clone " help.output && 104 - test_i18ngrep "^ add " help.output && 105 - test_i18ngrep "^ log " help.output && 106 - test_i18ngrep "^ commit " help.output && 107 - test_i18ngrep "^ fetch " help.output 108 ' 109 110 test_expect_success 'git help -g' ' 111 git help -g >help.output && 112 - test_i18ngrep "^ everyday " help.output && 113 - test_i18ngrep "^ tutorial " help.output 114 ' 115 116 test_expect_success 'git help fails for non-existing html pages' ' ··· 257 export GIT_CEILING_DIRECTORIES && 258 test_expect_code 129 git -C sub $builtin -h >output 2>&1 259 ) && 260 - test_i18ngrep usage output 261 ' 262 done <builtins 263
··· 100 101 test_expect_success 'git help' ' 102 git help >help.output && 103 + test_grep "^ clone " help.output && 104 + test_grep "^ add " help.output && 105 + test_grep "^ log " help.output && 106 + test_grep "^ commit " help.output && 107 + test_grep "^ fetch " help.output 108 ' 109 110 test_expect_success 'git help -g' ' 111 git help -g >help.output && 112 + test_grep "^ everyday " help.output && 113 + test_grep "^ tutorial " help.output 114 ' 115 116 test_expect_success 'git help fails for non-existing html pages' ' ··· 257 export GIT_CEILING_DIRECTORIES && 258 test_expect_code 129 git -C sub $builtin -h >output 2>&1 259 ) && 260 + test_grep usage output 261 ' 262 done <builtins 263
+1 -1
t/t0013-sha1dc.sh
··· 16 17 test_expect_success 'test-sha1 detects shattered pdf' ' 18 test_must_fail test-tool sha1 <"$TEST_DATA/shattered-1.pdf" 2>err && 19 - test_i18ngrep collision err && 20 grep 38762cf7f55934b34d179ae6a4c80cadccbb7f0a err 21 ' 22
··· 16 17 test_expect_success 'test-sha1 detects shattered pdf' ' 18 test_must_fail test-tool sha1 <"$TEST_DATA/shattered-1.pdf" 2>err && 19 + test_grep collision err && 20 grep 38762cf7f55934b34d179ae6a4c80cadccbb7f0a err 21 ' 22
+4 -4
t/t0014-alias.sh
··· 8 git config alias.nested-internal-1 nested-internal-2 && 9 git config alias.nested-internal-2 status && 10 git nested-internal-1 >output && 11 - test_i18ngrep "^On branch " output 12 ' 13 14 test_expect_success 'nested aliases - mixed execution' ' ··· 16 git config alias.nested-external-2 "!git nested-external-3" && 17 git config alias.nested-external-3 status && 18 git nested-external-1 >output && 19 - test_i18ngrep "^On branch " output 20 ' 21 22 test_expect_success 'looping aliases - internal execution' ' ··· 24 git config alias.loop-internal-2 loop-internal-3 && 25 git config alias.loop-internal-3 loop-internal-2 && 26 test_must_fail git loop-internal-1 2>output && 27 - test_i18ngrep "^fatal: alias loop detected: expansion of" output 28 ' 29 30 # This test is disabled until external loops are fixed, because would block ··· 34 # git config alias.loop-mixed-1 loop-mixed-2 && 35 # git config alias.loop-mixed-2 "!git loop-mixed-1" && 36 # test_must_fail git loop-mixed-1 2>output && 37 - # test_i18ngrep "^fatal: alias loop detected: expansion of" output 38 #' 39 40 test_expect_success 'run-command formats empty args properly' '
··· 8 git config alias.nested-internal-1 nested-internal-2 && 9 git config alias.nested-internal-2 status && 10 git nested-internal-1 >output && 11 + test_grep "^On branch " output 12 ' 13 14 test_expect_success 'nested aliases - mixed execution' ' ··· 16 git config alias.nested-external-2 "!git nested-external-3" && 17 git config alias.nested-external-3 status && 18 git nested-external-1 >output && 19 + test_grep "^On branch " output 20 ' 21 22 test_expect_success 'looping aliases - internal execution' ' ··· 24 git config alias.loop-internal-2 loop-internal-3 && 25 git config alias.loop-internal-3 loop-internal-2 && 26 test_must_fail git loop-internal-1 2>output && 27 + test_grep "^fatal: alias loop detected: expansion of" output 28 ' 29 30 # This test is disabled until external loops are fixed, because would block ··· 34 # git config alias.loop-mixed-1 loop-mixed-2 && 35 # git config alias.loop-mixed-2 "!git loop-mixed-1" && 36 # test_must_fail git loop-mixed-1 2>output && 37 + # test_grep "^fatal: alias loop detected: expansion of" output 38 #' 39 40 test_expect_success 'run-command formats empty args properly' '
+3 -3
t/t0021-conversion.sh
··· 263 264 echo test >test.ac && 265 test_must_fail git add test.ac 2>stderr && 266 - test_i18ngrep "fatal: test.ac: clean filter .absentclean. failed" stderr 267 ' 268 269 test_expect_success 'required filter with absent smudge field' ' ··· 276 git add test.as && 277 rm -f test.as && 278 test_must_fail git checkout -- test.as 2>stderr && 279 - test_i18ngrep "fatal: test.as: smudge filter absentsmudge failed" stderr 280 ' 281 282 test_expect_success 'filtering large input to small output should use little memory' ' ··· 733 git checkout --quiet --no-progress . 2>git-stderr.log && 734 735 grep "smudge write error" git-stderr.log && 736 - test_i18ngrep "error: external filter" git-stderr.log && 737 738 cat >expected.log <<-EOF && 739 START
··· 263 264 echo test >test.ac && 265 test_must_fail git add test.ac 2>stderr && 266 + test_grep "fatal: test.ac: clean filter .absentclean. failed" stderr 267 ' 268 269 test_expect_success 'required filter with absent smudge field' ' ··· 276 git add test.as && 277 rm -f test.as && 278 test_must_fail git checkout -- test.as 2>stderr && 279 + test_grep "fatal: test.as: smudge filter absentsmudge failed" stderr 280 ' 281 282 test_expect_success 'filtering large input to small output should use little memory' ' ··· 733 git checkout --quiet --no-progress . 2>git-stderr.log && 734 735 grep "smudge write error" git-stderr.log && 736 + test_grep "error: external filter" git-stderr.log && 737 738 cat >expected.log <<-EOF && 739 START
+16 -16
t/t0028-working-tree-encoding.sh
··· 92 # In these cases the BOM is prohibited. 93 cp bebom.utf${i}be.raw bebom.utf${i}be && 94 test_must_fail git add bebom.utf${i}be 2>err.out && 95 - test_i18ngrep "fatal: BOM is prohibited .* utf-${i}be" err.out && 96 - test_i18ngrep "use UTF-${i} as working-tree-encoding" err.out && 97 98 cp lebom.utf${i}le.raw lebom.utf${i}be && 99 test_must_fail git add lebom.utf${i}be 2>err.out && 100 - test_i18ngrep "fatal: BOM is prohibited .* utf-${i}be" err.out && 101 - test_i18ngrep "use UTF-${i} as working-tree-encoding" err.out && 102 103 cp bebom.utf${i}be.raw bebom.utf${i}le && 104 test_must_fail git add bebom.utf${i}le 2>err.out && 105 - test_i18ngrep "fatal: BOM is prohibited .* utf-${i}LE" err.out && 106 - test_i18ngrep "use UTF-${i} as working-tree-encoding" err.out && 107 108 cp lebom.utf${i}le.raw lebom.utf${i}le && 109 test_must_fail git add lebom.utf${i}le 2>err.out && 110 - test_i18ngrep "fatal: BOM is prohibited .* utf-${i}LE" err.out && 111 - test_i18ngrep "use UTF-${i} as working-tree-encoding" err.out 112 ' 113 114 test_expect_success "check required UTF-${i} BOM" ' ··· 118 119 cp nobom.utf${i}be.raw nobom.utf${i} && 120 test_must_fail git add nobom.utf${i} 2>err.out && 121 - test_i18ngrep "fatal: BOM is required .* utf-${i}" err.out && 122 - test_i18ngrep "use UTF-${i}BE or UTF-${i}LE" err.out && 123 124 cp nobom.utf${i}le.raw nobom.utf${i} && 125 test_must_fail git add nobom.utf${i} 2>err.out && 126 - test_i18ngrep "fatal: BOM is required .* utf-${i}" err.out && 127 - test_i18ngrep "use UTF-${i}BE or UTF-${i}LE" err.out 128 ' 129 130 test_expect_success "eol conversion for UTF-${i} encoded files on checkout" ' ··· 169 echo "*.set text working-tree-encoding" >.gitattributes && 170 printf "set" >t.set && 171 test_must_fail git add t.set 2>err.out && 172 - test_i18ngrep "true/false are no valid working-tree-encodings" err.out && 173 174 echo "*.unset text -working-tree-encoding" >.gitattributes && 175 printf "unset" >t.unset && ··· 182 echo "*.garbage text working-tree-encoding=garbage" >.gitattributes && 183 printf "garbage" >t.garbage && 184 test_must_fail git add t.garbage 2>err.out && 185 - test_i18ngrep "failed to encode" err.out 186 ' 187 188 test_expect_success 'error if encoding round trip is not the same during refresh' ' ··· 201 git update-ref refs/heads/main $COMMIT && 202 203 test_must_fail git checkout HEAD^ 2>err.out && 204 - test_i18ngrep "error: .* overwritten by checkout:" err.out 205 ' 206 207 test_expect_success 'error if encoding garbage is already in Git' ' ··· 217 git update-ref refs/heads/main $COMMIT && 218 219 git diff 2>err.out && 220 - test_i18ngrep "error: BOM is required" err.out 221 ' 222 223 test_lazy_prereq ICONV_SHIFT_JIS '
··· 92 # In these cases the BOM is prohibited. 93 cp bebom.utf${i}be.raw bebom.utf${i}be && 94 test_must_fail git add bebom.utf${i}be 2>err.out && 95 + test_grep "fatal: BOM is prohibited .* utf-${i}be" err.out && 96 + test_grep "use UTF-${i} as working-tree-encoding" err.out && 97 98 cp lebom.utf${i}le.raw lebom.utf${i}be && 99 test_must_fail git add lebom.utf${i}be 2>err.out && 100 + test_grep "fatal: BOM is prohibited .* utf-${i}be" err.out && 101 + test_grep "use UTF-${i} as working-tree-encoding" err.out && 102 103 cp bebom.utf${i}be.raw bebom.utf${i}le && 104 test_must_fail git add bebom.utf${i}le 2>err.out && 105 + test_grep "fatal: BOM is prohibited .* utf-${i}LE" err.out && 106 + test_grep "use UTF-${i} as working-tree-encoding" err.out && 107 108 cp lebom.utf${i}le.raw lebom.utf${i}le && 109 test_must_fail git add lebom.utf${i}le 2>err.out && 110 + test_grep "fatal: BOM is prohibited .* utf-${i}LE" err.out && 111 + test_grep "use UTF-${i} as working-tree-encoding" err.out 112 ' 113 114 test_expect_success "check required UTF-${i} BOM" ' ··· 118 119 cp nobom.utf${i}be.raw nobom.utf${i} && 120 test_must_fail git add nobom.utf${i} 2>err.out && 121 + test_grep "fatal: BOM is required .* utf-${i}" err.out && 122 + test_grep "use UTF-${i}BE or UTF-${i}LE" err.out && 123 124 cp nobom.utf${i}le.raw nobom.utf${i} && 125 test_must_fail git add nobom.utf${i} 2>err.out && 126 + test_grep "fatal: BOM is required .* utf-${i}" err.out && 127 + test_grep "use UTF-${i}BE or UTF-${i}LE" err.out 128 ' 129 130 test_expect_success "eol conversion for UTF-${i} encoded files on checkout" ' ··· 169 echo "*.set text working-tree-encoding" >.gitattributes && 170 printf "set" >t.set && 171 test_must_fail git add t.set 2>err.out && 172 + test_grep "true/false are no valid working-tree-encodings" err.out && 173 174 echo "*.unset text -working-tree-encoding" >.gitattributes && 175 printf "unset" >t.unset && ··· 182 echo "*.garbage text working-tree-encoding=garbage" >.gitattributes && 183 printf "garbage" >t.garbage && 184 test_must_fail git add t.garbage 2>err.out && 185 + test_grep "failed to encode" err.out 186 ' 187 188 test_expect_success 'error if encoding round trip is not the same during refresh' ' ··· 201 git update-ref refs/heads/main $COMMIT && 202 203 test_must_fail git checkout HEAD^ 2>err.out && 204 + test_grep "error: .* overwritten by checkout:" err.out 205 ' 206 207 test_expect_success 'error if encoding garbage is already in Git' ' ··· 217 git update-ref refs/heads/main $COMMIT && 218 219 git diff 2>err.out && 220 + test_grep "error: BOM is required" err.out 221 ' 222 223 test_lazy_prereq ICONV_SHIFT_JIS '
+2 -2
t/t0040-parse-options.sh
··· 366 test_expect_success 'OPT_CMDMODE() detects incompatibility' ' 367 test_must_fail test-tool parse-options --mode1 --mode2 >output 2>output.err && 368 test_must_be_empty output && 369 - test_i18ngrep "incompatible with --mode" output.err 370 ' 371 372 test_expect_success 'OPT_CMDMODE() detects incompatibility with something else' ' 373 test_must_fail test-tool parse-options --set23 --mode2 >output 2>output.err && 374 test_must_be_empty output && 375 - test_i18ngrep "incompatible with something else" output.err 376 ' 377 378 test_expect_success 'OPT_COUNTUP() with PARSE_OPT_NODASH works' '
··· 366 test_expect_success 'OPT_CMDMODE() detects incompatibility' ' 367 test_must_fail test-tool parse-options --mode1 --mode2 >output 2>output.err && 368 test_must_be_empty output && 369 + test_grep "incompatible with --mode" output.err 370 ' 371 372 test_expect_success 'OPT_CMDMODE() detects incompatibility with something else' ' 373 test_must_fail test-tool parse-options --set23 --mode2 >output 2>output.err && 374 test_must_be_empty output && 375 + test_grep "incompatible with something else" output.err 376 ' 377 378 test_expect_success 'OPT_COUNTUP() with PARSE_OPT_NODASH works' '
+16 -16
t/t0041-usage.sh
··· 21 test_expect_success 'tag --contains <inexistent_tag>' ' 22 test_must_fail git tag --contains "notag" >actual 2>actual.err && 23 test_line_count = 0 actual && 24 - test_i18ngrep "error" actual.err && 25 - test_i18ngrep ! "usage" actual.err 26 ' 27 28 test_expect_success 'tag --no-contains <existent_tag>' ' ··· 34 test_expect_success 'tag --no-contains <inexistent_tag>' ' 35 test_must_fail git tag --no-contains "notag" >actual 2>actual.err && 36 test_line_count = 0 actual && 37 - test_i18ngrep "error" actual.err && 38 - test_i18ngrep ! "usage" actual.err 39 ' 40 41 test_expect_success 'tag usage error' ' 42 test_must_fail git tag --noopt >actual 2>actual.err && 43 test_line_count = 0 actual && 44 - test_i18ngrep "usage" actual.err 45 ' 46 47 test_expect_success 'branch --contains <existent_commit>' ' 48 git branch --contains "main" >actual 2>actual.err && 49 - test_i18ngrep "main" actual && 50 test_line_count = 0 actual.err 51 ' 52 53 test_expect_success 'branch --contains <inexistent_commit>' ' 54 test_must_fail git branch --no-contains "nocommit" >actual 2>actual.err && 55 test_line_count = 0 actual && 56 - test_i18ngrep "error" actual.err && 57 - test_i18ngrep ! "usage" actual.err 58 ' 59 60 test_expect_success 'branch --no-contains <existent_commit>' ' ··· 66 test_expect_success 'branch --no-contains <inexistent_commit>' ' 67 test_must_fail git branch --no-contains "nocommit" >actual 2>actual.err && 68 test_line_count = 0 actual && 69 - test_i18ngrep "error" actual.err && 70 - test_i18ngrep ! "usage" actual.err 71 ' 72 73 test_expect_success 'branch usage error' ' 74 test_must_fail git branch --noopt >actual 2>actual.err && 75 test_line_count = 0 actual && 76 - test_i18ngrep "usage" actual.err 77 ' 78 79 test_expect_success 'for-each-ref --contains <existent_object>' ' ··· 85 test_expect_success 'for-each-ref --contains <inexistent_object>' ' 86 test_must_fail git for-each-ref --no-contains "noobject" >actual 2>actual.err && 87 test_line_count = 0 actual && 88 - test_i18ngrep "error" actual.err && 89 - test_i18ngrep ! "usage" actual.err 90 ' 91 92 test_expect_success 'for-each-ref --no-contains <existent_object>' ' ··· 98 test_expect_success 'for-each-ref --no-contains <inexistent_object>' ' 99 test_must_fail git for-each-ref --no-contains "noobject" >actual 2>actual.err && 100 test_line_count = 0 actual && 101 - test_i18ngrep "error" actual.err && 102 - test_i18ngrep ! "usage" actual.err 103 ' 104 105 test_expect_success 'for-each-ref usage error' ' 106 test_must_fail git for-each-ref --noopt >actual 2>actual.err && 107 test_line_count = 0 actual && 108 - test_i18ngrep "usage" actual.err 109 ' 110 111 test_done
··· 21 test_expect_success 'tag --contains <inexistent_tag>' ' 22 test_must_fail git tag --contains "notag" >actual 2>actual.err && 23 test_line_count = 0 actual && 24 + test_grep "error" actual.err && 25 + test_grep ! "usage" actual.err 26 ' 27 28 test_expect_success 'tag --no-contains <existent_tag>' ' ··· 34 test_expect_success 'tag --no-contains <inexistent_tag>' ' 35 test_must_fail git tag --no-contains "notag" >actual 2>actual.err && 36 test_line_count = 0 actual && 37 + test_grep "error" actual.err && 38 + test_grep ! "usage" actual.err 39 ' 40 41 test_expect_success 'tag usage error' ' 42 test_must_fail git tag --noopt >actual 2>actual.err && 43 test_line_count = 0 actual && 44 + test_grep "usage" actual.err 45 ' 46 47 test_expect_success 'branch --contains <existent_commit>' ' 48 git branch --contains "main" >actual 2>actual.err && 49 + test_grep "main" actual && 50 test_line_count = 0 actual.err 51 ' 52 53 test_expect_success 'branch --contains <inexistent_commit>' ' 54 test_must_fail git branch --no-contains "nocommit" >actual 2>actual.err && 55 test_line_count = 0 actual && 56 + test_grep "error" actual.err && 57 + test_grep ! "usage" actual.err 58 ' 59 60 test_expect_success 'branch --no-contains <existent_commit>' ' ··· 66 test_expect_success 'branch --no-contains <inexistent_commit>' ' 67 test_must_fail git branch --no-contains "nocommit" >actual 2>actual.err && 68 test_line_count = 0 actual && 69 + test_grep "error" actual.err && 70 + test_grep ! "usage" actual.err 71 ' 72 73 test_expect_success 'branch usage error' ' 74 test_must_fail git branch --noopt >actual 2>actual.err && 75 test_line_count = 0 actual && 76 + test_grep "usage" actual.err 77 ' 78 79 test_expect_success 'for-each-ref --contains <existent_object>' ' ··· 85 test_expect_success 'for-each-ref --contains <inexistent_object>' ' 86 test_must_fail git for-each-ref --no-contains "noobject" >actual 2>actual.err && 87 test_line_count = 0 actual && 88 + test_grep "error" actual.err && 89 + test_grep ! "usage" actual.err 90 ' 91 92 test_expect_success 'for-each-ref --no-contains <existent_object>' ' ··· 98 test_expect_success 'for-each-ref --no-contains <inexistent_object>' ' 99 test_must_fail git for-each-ref --no-contains "noobject" >actual 2>actual.err && 100 test_line_count = 0 actual && 101 + test_grep "error" actual.err && 102 + test_grep ! "usage" actual.err 103 ' 104 105 test_expect_success 'for-each-ref usage error' ' 106 test_must_fail git for-each-ref --noopt >actual 2>actual.err && 107 test_line_count = 0 actual && 108 + test_grep "usage" actual.err 109 ' 110 111 test_done
+3 -3
t/t0061-run-command.sh
··· 19 20 test_expect_success 'start_command reports ENOENT (slash)' ' 21 test-tool run-command start-command-ENOENT ./does-not-exist 2>err && 22 - test_i18ngrep "\./does-not-exist" err 23 ' 24 25 test_expect_success 'start_command reports ENOENT (no slash)' ' 26 test-tool run-command start-command-ENOENT does-not-exist 2>err && 27 - test_i18ngrep "does-not-exist" err 28 ' 29 30 test_expect_success 'run_command can run a command' ' ··· 49 echo yikes 50 EOF 51 test_must_fail test-tool run-command run-command should-not-run 2>err && 52 - test_i18ngrep "should-not-run" err 53 ' 54 55 test_expect_success !MINGW 'run_command can run a script without a #! line' '
··· 19 20 test_expect_success 'start_command reports ENOENT (slash)' ' 21 test-tool run-command start-command-ENOENT ./does-not-exist 2>err && 22 + test_grep "\./does-not-exist" err 23 ' 24 25 test_expect_success 'start_command reports ENOENT (no slash)' ' 26 test-tool run-command start-command-ENOENT does-not-exist 2>err && 27 + test_grep "does-not-exist" err 28 ' 29 30 test_expect_success 'run_command can run a command' ' ··· 49 echo yikes 50 EOF 51 test_must_fail test-tool run-command run-command should-not-run 2>err && 52 + test_grep "should-not-run" err 53 ' 54 55 test_expect_success !MINGW 'run_command can run a script without a #! line' '
+2 -2
t/t0070-fundamental.sh
··· 44 test_expect_success 'eof on sideband message is reported' ' 45 printf 1234 >input && 46 test-tool pkt-line receive-sideband <input 2>err && 47 - test_i18ngrep "unexpected disconnect" err 48 ' 49 50 test_expect_success 'missing sideband designator is reported' ' 51 printf 0004 >input && 52 test-tool pkt-line receive-sideband <input 2>err && 53 - test_i18ngrep "missing sideband" err 54 ' 55 56 test_done
··· 44 test_expect_success 'eof on sideband message is reported' ' 45 printf 1234 >input && 46 test-tool pkt-line receive-sideband <input 2>err && 47 + test_grep "unexpected disconnect" err 48 ' 49 50 test_expect_success 'missing sideband designator is reported' ' 51 printf 0004 >input && 52 test-tool pkt-line receive-sideband <input 2>err && 53 + test_grep "missing sideband" err 54 ' 55 56 test_done
+1 -1
t/t0091-bugreport.sh
··· 65 66 test_expect_success 'incorrect arguments abort with usage' ' 67 test_must_fail git bugreport --false 2>output && 68 - test_i18ngrep usage output && 69 test_path_is_missing git-bugreport-* 70 ' 71
··· 65 66 test_expect_success 'incorrect arguments abort with usage' ' 67 test_must_fail git bugreport --false 2>output && 68 + test_grep usage output && 69 test_path_is_missing git-bugreport-* 70 ' 71
+1 -1
t/t0300-credentials.sh
··· 827 git -c credential.$partial.helper=yep \ 828 -c credential.with%0anewline.username=uh-oh \ 829 credential fill <stdin 2>stderr && 830 - test_i18ngrep "skipping credential lookup for key" stderr 831 ' 832 833 test_done
··· 827 git -c credential.$partial.helper=yep \ 828 -c credential.with%0anewline.username=uh-oh \ 829 credential fill <stdin 2>stderr && 830 + test_grep "skipping credential lookup for key" stderr 831 ' 832 833 test_done
+1 -1
t/t1060-object-corruption.sh
··· 125 cd bit-error-cp && 126 test_must_fail git -c transfer.unpackLimit=1 \ 127 fetch ../no-bit-error 2>stderr && 128 - test_i18ngrep ! -i collision stderr 129 ) 130 ' 131
··· 125 cd bit-error-cp && 126 test_must_fail git -c transfer.unpackLimit=1 \ 127 fetch ../no-bit-error 2>stderr && 128 + test_grep ! -i collision stderr 129 ) 130 ' 131
+34 -34
t/t1091-sparse-checkout-builtin.sh
··· 47 test_expect_success 'git sparse-checkout list (not sparse)' ' 48 test_must_fail git -C repo sparse-checkout list >list 2>err && 49 test_must_be_empty list && 50 - test_i18ngrep "this worktree is not sparse" err 51 ' 52 53 test_expect_success 'git sparse-checkout list (not sparse)' ' ··· 55 rm repo/.git/info/sparse-checkout && 56 git -C repo sparse-checkout list >list 2>err && 57 test_must_be_empty list && 58 - test_i18ngrep "this worktree is not sparse (sparse-checkout file may not exist)" err 59 ' 60 61 test_expect_success 'git sparse-checkout list (populated)' ' ··· 230 git -C repo config --worktree core.sparseCheckoutCone true && 231 rm -rf repo/a repo/folder1 repo/folder2 && 232 git -C repo read-tree -mu HEAD 2>err && 233 - test_i18ngrep ! "disabling cone patterns" err && 234 git -C repo reset --hard && 235 check_files repo a folder1 folder2 236 ' ··· 240 cp repo/.git/info/sparse-checkout . && 241 echo "!/deep/deeper/*/" >>repo/.git/info/sparse-checkout && 242 git -C repo read-tree -mu HEAD 2>err && 243 - test_i18ngrep "unrecognized negative pattern" err 244 ' 245 246 test_expect_success 'sparse-checkout disable' ' ··· 283 test_expect_success 'cone mode: init and set' ' 284 git -C repo sparse-checkout init --cone && 285 git -C repo config --list >config && 286 - test_i18ngrep "core.sparsecheckoutcone=true" config && 287 list_files repo >dir && 288 echo a >expect && 289 test_cmp expect dir && ··· 386 387 git -C repo sparse-checkout set deep/deeper1 2>err && 388 389 - test_i18ngrep "The following paths are not up to date" err && 390 test_cmp expect repo/.git/info/sparse-checkout && 391 check_files repo/deep a deeper1 deeper2 && 392 check_files repo/deep/deeper1 a deepest && ··· 401 git add file && 402 git commit -m "test" && 403 git sparse-checkout set nothing 2>err && 404 - test_i18ngrep ! "Sparse checkout leaves no entry on working directory" err && 405 - test_i18ngrep ! ".git/index.lock" err && 406 git sparse-checkout set --no-cone file 407 ) 408 ' ··· 411 test_when_finished rm -rf repo/.git/info/sparse-checkout.lock && 412 touch repo/.git/info/sparse-checkout.lock && 413 test_must_fail git -C repo sparse-checkout set deep 2>err && 414 - test_i18ngrep "Unable to create .*\.lock" err 415 ' 416 417 test_expect_success '.gitignore should not warn about cone mode' ' 418 git -C repo config --worktree core.sparseCheckoutCone true && 419 echo "**/bin/*" >repo/.gitignore && 420 git -C repo reset --hard 2>err && 421 - test_i18ngrep ! "disabling cone patterns" err 422 ' 423 424 test_expect_success 'sparse-checkout (init|set|disable) warns with dirty status' ' ··· 426 echo dirty >dirty/folder1/a && 427 428 git -C dirty sparse-checkout init --no-cone 2>err && 429 - test_i18ngrep "warning.*The following paths are not up to date" err && 430 431 git -C dirty sparse-checkout set /folder2/* /deep/deeper1/* 2>err && 432 - test_i18ngrep "warning.*The following paths are not up to date" err && 433 test_path_is_file dirty/folder1/a && 434 435 git -C dirty sparse-checkout disable 2>err && ··· 453 git -C unmerged update-index --index-info <input && 454 455 git -C unmerged sparse-checkout init --no-cone 2>err && 456 - test_i18ngrep "warning.*The following paths are unmerged" err && 457 458 git -C unmerged sparse-checkout set /folder2/* /deep/deeper1/* 2>err && 459 - test_i18ngrep "warning.*The following paths are unmerged" err && 460 test_path_is_file dirty/folder1/a && 461 462 git -C unmerged sparse-checkout disable 2>err && 463 - test_i18ngrep "warning.*The following paths are unmerged" err && 464 465 git -C unmerged reset --hard && 466 git -C unmerged sparse-checkout init --no-cone && ··· 480 git -C tweak update-index --index-info <input && 481 482 git -C tweak sparse-checkout init --cone 2>err && 483 - test_i18ngrep "warning.*The following paths are not up to date" err && 484 - test_i18ngrep "warning.*The following paths are unmerged" err && 485 486 git -C tweak sparse-checkout set folder2 deep/deeper1 2>err && 487 - test_i18ngrep "warning.*The following paths are not up to date" err && 488 - test_i18ngrep "warning.*The following paths are unmerged" err && 489 490 git -C tweak sparse-checkout reapply 2>err && 491 - test_i18ngrep "warning.*The following paths are not up to date" err && 492 test_path_is_file tweak/deep/deeper2/a && 493 - test_i18ngrep "warning.*The following paths are unmerged" err && 494 test_path_is_file tweak/folder1/a && 495 496 git -C tweak checkout HEAD deep/deeper2/a && 497 git -C tweak sparse-checkout reapply 2>err && 498 - test_i18ngrep ! "warning.*The following paths are not up to date" err && 499 test_path_is_missing tweak/deep/deeper2/a && 500 - test_i18ngrep "warning.*The following paths are unmerged" err && 501 test_path_is_file tweak/folder1/a && 502 503 # NEEDSWORK: We are asking to update a file outside of the ··· 578 git -C super ls-tree --name-only -r HEAD >all-files && 579 git -C super sparse-checkout check-rules >check-rules-matches <all-files && 580 581 - test_i18ngrep ! "modules/" check-rules-matches && 582 - test_i18ngrep "folder1/" check-rules-matches 583 ' 584 585 test_expect_success 'different sparse-checkouts with worktrees' ' ··· 616 then 617 test_must_be_empty err 618 else 619 - test_i18ngrep "$ERRORS" err 620 fi && 621 check_files $REPO $FILES 622 } ··· 898 ' 899 test_expect_success 'list fails outside work tree' ' 900 test_must_fail git -C bare sparse-checkout list 2>err && 901 - test_i18ngrep "this operation must be run in a work tree" err 902 ' 903 904 test_expect_success 'add fails outside work tree' ' 905 test_must_fail git -C bare sparse-checkout add deeper 2>err && 906 - test_i18ngrep "this operation must be run in a work tree" err 907 ' 908 909 test_expect_success 'set fails outside work tree' ' 910 test_must_fail git -C bare sparse-checkout set deeper 2>err && 911 - test_i18ngrep "this operation must be run in a work tree" err 912 ' 913 914 test_expect_success 'init fails outside work tree' ' 915 test_must_fail git -C bare sparse-checkout init 2>err && 916 - test_i18ngrep "this operation must be run in a work tree" err 917 ' 918 919 test_expect_success 'reapply fails outside work tree' ' 920 test_must_fail git -C bare sparse-checkout reapply 2>err && 921 - test_i18ngrep "this operation must be run in a work tree" err 922 ' 923 924 test_expect_success 'disable fails outside work tree' ' 925 test_must_fail git -C bare sparse-checkout disable 2>err && 926 - test_i18ngrep "this operation must be run in a work tree" err 927 ' 928 929 test_expect_success 'setup clean' ' ··· 946 947 git -C repo sparse-checkout check-rules >check-rules-default <all-files && 948 949 - test_i18ngrep "deep/deeper1/deepest/a" check-rules-file && 950 - test_i18ngrep ! "deep/deeper2" check-rules-file && 951 952 test_cmp check-rules-file ls-files && 953 test_cmp check-rules-file check-rules-default
··· 47 test_expect_success 'git sparse-checkout list (not sparse)' ' 48 test_must_fail git -C repo sparse-checkout list >list 2>err && 49 test_must_be_empty list && 50 + test_grep "this worktree is not sparse" err 51 ' 52 53 test_expect_success 'git sparse-checkout list (not sparse)' ' ··· 55 rm repo/.git/info/sparse-checkout && 56 git -C repo sparse-checkout list >list 2>err && 57 test_must_be_empty list && 58 + test_grep "this worktree is not sparse (sparse-checkout file may not exist)" err 59 ' 60 61 test_expect_success 'git sparse-checkout list (populated)' ' ··· 230 git -C repo config --worktree core.sparseCheckoutCone true && 231 rm -rf repo/a repo/folder1 repo/folder2 && 232 git -C repo read-tree -mu HEAD 2>err && 233 + test_grep ! "disabling cone patterns" err && 234 git -C repo reset --hard && 235 check_files repo a folder1 folder2 236 ' ··· 240 cp repo/.git/info/sparse-checkout . && 241 echo "!/deep/deeper/*/" >>repo/.git/info/sparse-checkout && 242 git -C repo read-tree -mu HEAD 2>err && 243 + test_grep "unrecognized negative pattern" err 244 ' 245 246 test_expect_success 'sparse-checkout disable' ' ··· 283 test_expect_success 'cone mode: init and set' ' 284 git -C repo sparse-checkout init --cone && 285 git -C repo config --list >config && 286 + test_grep "core.sparsecheckoutcone=true" config && 287 list_files repo >dir && 288 echo a >expect && 289 test_cmp expect dir && ··· 386 387 git -C repo sparse-checkout set deep/deeper1 2>err && 388 389 + test_grep "The following paths are not up to date" err && 390 test_cmp expect repo/.git/info/sparse-checkout && 391 check_files repo/deep a deeper1 deeper2 && 392 check_files repo/deep/deeper1 a deepest && ··· 401 git add file && 402 git commit -m "test" && 403 git sparse-checkout set nothing 2>err && 404 + test_grep ! "Sparse checkout leaves no entry on working directory" err && 405 + test_grep ! ".git/index.lock" err && 406 git sparse-checkout set --no-cone file 407 ) 408 ' ··· 411 test_when_finished rm -rf repo/.git/info/sparse-checkout.lock && 412 touch repo/.git/info/sparse-checkout.lock && 413 test_must_fail git -C repo sparse-checkout set deep 2>err && 414 + test_grep "Unable to create .*\.lock" err 415 ' 416 417 test_expect_success '.gitignore should not warn about cone mode' ' 418 git -C repo config --worktree core.sparseCheckoutCone true && 419 echo "**/bin/*" >repo/.gitignore && 420 git -C repo reset --hard 2>err && 421 + test_grep ! "disabling cone patterns" err 422 ' 423 424 test_expect_success 'sparse-checkout (init|set|disable) warns with dirty status' ' ··· 426 echo dirty >dirty/folder1/a && 427 428 git -C dirty sparse-checkout init --no-cone 2>err && 429 + test_grep "warning.*The following paths are not up to date" err && 430 431 git -C dirty sparse-checkout set /folder2/* /deep/deeper1/* 2>err && 432 + test_grep "warning.*The following paths are not up to date" err && 433 test_path_is_file dirty/folder1/a && 434 435 git -C dirty sparse-checkout disable 2>err && ··· 453 git -C unmerged update-index --index-info <input && 454 455 git -C unmerged sparse-checkout init --no-cone 2>err && 456 + test_grep "warning.*The following paths are unmerged" err && 457 458 git -C unmerged sparse-checkout set /folder2/* /deep/deeper1/* 2>err && 459 + test_grep "warning.*The following paths are unmerged" err && 460 test_path_is_file dirty/folder1/a && 461 462 git -C unmerged sparse-checkout disable 2>err && 463 + test_grep "warning.*The following paths are unmerged" err && 464 465 git -C unmerged reset --hard && 466 git -C unmerged sparse-checkout init --no-cone && ··· 480 git -C tweak update-index --index-info <input && 481 482 git -C tweak sparse-checkout init --cone 2>err && 483 + test_grep "warning.*The following paths are not up to date" err && 484 + test_grep "warning.*The following paths are unmerged" err && 485 486 git -C tweak sparse-checkout set folder2 deep/deeper1 2>err && 487 + test_grep "warning.*The following paths are not up to date" err && 488 + test_grep "warning.*The following paths are unmerged" err && 489 490 git -C tweak sparse-checkout reapply 2>err && 491 + test_grep "warning.*The following paths are not up to date" err && 492 test_path_is_file tweak/deep/deeper2/a && 493 + test_grep "warning.*The following paths are unmerged" err && 494 test_path_is_file tweak/folder1/a && 495 496 git -C tweak checkout HEAD deep/deeper2/a && 497 git -C tweak sparse-checkout reapply 2>err && 498 + test_grep ! "warning.*The following paths are not up to date" err && 499 test_path_is_missing tweak/deep/deeper2/a && 500 + test_grep "warning.*The following paths are unmerged" err && 501 test_path_is_file tweak/folder1/a && 502 503 # NEEDSWORK: We are asking to update a file outside of the ··· 578 git -C super ls-tree --name-only -r HEAD >all-files && 579 git -C super sparse-checkout check-rules >check-rules-matches <all-files && 580 581 + test_grep ! "modules/" check-rules-matches && 582 + test_grep "folder1/" check-rules-matches 583 ' 584 585 test_expect_success 'different sparse-checkouts with worktrees' ' ··· 616 then 617 test_must_be_empty err 618 else 619 + test_grep "$ERRORS" err 620 fi && 621 check_files $REPO $FILES 622 } ··· 898 ' 899 test_expect_success 'list fails outside work tree' ' 900 test_must_fail git -C bare sparse-checkout list 2>err && 901 + test_grep "this operation must be run in a work tree" err 902 ' 903 904 test_expect_success 'add fails outside work tree' ' 905 test_must_fail git -C bare sparse-checkout add deeper 2>err && 906 + test_grep "this operation must be run in a work tree" err 907 ' 908 909 test_expect_success 'set fails outside work tree' ' 910 test_must_fail git -C bare sparse-checkout set deeper 2>err && 911 + test_grep "this operation must be run in a work tree" err 912 ' 913 914 test_expect_success 'init fails outside work tree' ' 915 test_must_fail git -C bare sparse-checkout init 2>err && 916 + test_grep "this operation must be run in a work tree" err 917 ' 918 919 test_expect_success 'reapply fails outside work tree' ' 920 test_must_fail git -C bare sparse-checkout reapply 2>err && 921 + test_grep "this operation must be run in a work tree" err 922 ' 923 924 test_expect_success 'disable fails outside work tree' ' 925 test_must_fail git -C bare sparse-checkout disable 2>err && 926 + test_grep "this operation must be run in a work tree" err 927 ' 928 929 test_expect_success 'setup clean' ' ··· 946 947 git -C repo sparse-checkout check-rules >check-rules-default <all-files && 948 949 + test_grep "deep/deeper1/deepest/a" check-rules-file && 950 + test_grep ! "deep/deeper2" check-rules-file && 951 952 test_cmp check-rules-file ls-files && 953 test_cmp check-rules-file check-rules-default
+3 -3
t/t1092-sparse-checkout-compatibility.sh
··· 337 init_repos && 338 git -C sparse-checkout status >full && 339 git -C sparse-index status >sparse && 340 - test_i18ngrep "You are in a sparse checkout with " full && 341 - test_i18ngrep "You are in a sparse checkout." sparse 342 ' 343 344 test_expect_success 'add, commit, checkout' ' ··· 1182 # Without --ignore-skip-worktree-bits, outside-of-cone files will trigger 1183 # an error 1184 test_sparse_match test_must_fail git checkout-index -- folder1/a && 1185 - test_i18ngrep "folder1/a has skip-worktree enabled" sparse-checkout-err && 1186 test_path_is_missing folder1/a && 1187 1188 # With --ignore-skip-worktree-bits, outside-of-cone files are checked out
··· 337 init_repos && 338 git -C sparse-checkout status >full && 339 git -C sparse-index status >sparse && 340 + test_grep "You are in a sparse checkout with " full && 341 + test_grep "You are in a sparse checkout." sparse 342 ' 343 344 test_expect_success 'add, commit, checkout' ' ··· 1182 # Without --ignore-skip-worktree-bits, outside-of-cone files will trigger 1183 # an error 1184 test_sparse_match test_must_fail git checkout-index -- folder1/a && 1185 + test_grep "folder1/a has skip-worktree enabled" sparse-checkout-err && 1186 test_path_is_missing folder1/a && 1187 1188 # With --ignore-skip-worktree-bits, outside-of-cone files are checked out
+22 -22
t/t1300-config.sh
··· 453 454 test_expect_success 'no arguments, but no crash' ' 455 test_must_fail git config >output 2>&1 && 456 - test_i18ngrep usage output 457 ' 458 459 cat > .git/config << EOF ··· 720 git config aninvalid.unit "1auto" && 721 test_cmp_config 1auto aninvalid.unit && 722 test_must_fail git config --int --get aninvalid.unit 2>actual && 723 - test_i18ngrep "bad numeric config value .1auto. for .aninvalid.unit. in file .git/config: invalid unit" actual 724 ' 725 726 test_expect_success 'invalid unit boolean' ' 727 git config commit.gpgsign "1true" && 728 test_cmp_config 1true commit.gpgsign && 729 test_must_fail git config --bool --get commit.gpgsign 2>actual && 730 - test_i18ngrep "bad boolean config value .1true. for .commit.gpgsign." actual 731 ' 732 733 test_expect_success 'line number is reported correctly' ' 734 printf "[bool]\n\tvar\n" >invalid && 735 test_must_fail git config -f invalid --path bool.var 2>actual && 736 - test_i18ngrep "line 2" actual 737 ' 738 739 test_expect_success 'invalid stdin config' ' 740 echo "[broken" | test_must_fail git config --list --file - >output 2>&1 && 741 - test_i18ngrep "bad config line 1 in standard input" output 742 ' 743 744 cat > expect << EOF ··· 919 git config --get --path path.normal >>result && 920 git config --get --path path.trailingtilde >>result 921 ) && 922 - test_i18ngrep "[Ff]ailed to expand.*~/" msg && 923 test_cmp expect result 924 ' 925 ··· 986 987 test_expect_success 'set --type=color barfs on non-color' ' 988 test_must_fail git config --type=color foo.color "not-a-color" 2>error && 989 - test_i18ngrep "cannot parse color" error 990 ' 991 992 cat > expect << EOF ··· 1447 1448 test_expect_success 'git --config-env fails with invalid parameters' ' 1449 test_must_fail git --config-env=foo.flag config --bool foo.flag 2>error && 1450 - test_i18ngrep "invalid config format: foo.flag" error && 1451 test_must_fail git --config-env=foo.flag= config --bool foo.flag 2>error && 1452 - test_i18ngrep "missing environment variable name for configuration ${SQ}foo.flag${SQ}" error && 1453 sane_unset NONEXISTENT && 1454 test_must_fail git --config-env=foo.flag=NONEXISTENT config --bool foo.flag 2>error && 1455 - test_i18ngrep "missing environment variable ${SQ}NONEXISTENT${SQ} for configuration ${SQ}foo.flag${SQ}" error 1456 ' 1457 1458 test_expect_success 'git -c and --config-env work together' ' ··· 1533 1534 test_expect_success 'git config fails with invalid count' ' 1535 test_must_fail env GIT_CONFIG_COUNT=10a git config --list 2>error && 1536 - test_i18ngrep "bogus count" error && 1537 test_must_fail env GIT_CONFIG_COUNT=9999999999999999 git config --list 2>error && 1538 - test_i18ngrep "too many entries" error 1539 ' 1540 1541 test_expect_success 'git config fails with missing config key' ' 1542 test_must_fail env GIT_CONFIG_COUNT=1 GIT_CONFIG_VALUE_0="value" \ 1543 git config --list 2>error && 1544 - test_i18ngrep "missing config key" error 1545 ' 1546 1547 test_expect_success 'git config fails with missing config value' ' 1548 test_must_fail env GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0="pair.one" \ 1549 git config --list 2>error && 1550 - test_i18ngrep "missing config value" error 1551 ' 1552 1553 test_expect_success 'git config fails with invalid config pair key' ' ··· 1617 key garbage 1618 EOF 1619 test_must_fail git config --get section.key 2>error && 1620 - test_i18ngrep " line 3 " error 1621 ' 1622 1623 test_expect_success 'barf on incomplete section header' ' ··· 1627 key = value 1628 EOF 1629 test_must_fail git config --get section.key 2>error && 1630 - test_i18ngrep " line 2 " error 1631 ' 1632 1633 test_expect_success 'barf on incomplete string' ' ··· 1637 key = "value string 1638 EOF 1639 test_must_fail git config --get section.key 2>error && 1640 - test_i18ngrep " line 3 " error 1641 ' 1642 1643 test_expect_success 'urlmatch' ' ··· 2266 2267 test_expect_success 'non-identical modern --type specifiers are not allowed' ' 2268 test_must_fail git config --type=int --type=bool section.big 2>error && 2269 - test_i18ngrep "only one type at a time" error 2270 ' 2271 2272 test_expect_success 'non-identical legacy --type specifiers are not allowed' ' 2273 test_must_fail git config --int --bool section.big 2>error && 2274 - test_i18ngrep "only one type at a time" error 2275 ' 2276 2277 test_expect_success 'non-identical mixed --type specifiers are not allowed' ' 2278 test_must_fail git config --type=int --bool section.big 2>error && 2279 - test_i18ngrep "only one type at a time" error 2280 ' 2281 2282 test_expect_success '--type allows valid type specifiers' ' ··· 2293 2294 test_expect_success '--type rejects unknown specifiers' ' 2295 test_must_fail git config --type=nonsense section.foo 2>error && 2296 - test_i18ngrep "unrecognized --type argument" error 2297 ' 2298 2299 test_expect_success '--type=int requires at least one digit' ' ··· 2339 2340 # multiple matches => failure 2341 test_must_fail git config --file=config abc.key three o+ 2>err && 2342 - test_i18ngrep "has multiple values" err && 2343 2344 # multiple values, no match => add 2345 git config --file=config abc.key three a+ &&
··· 453 454 test_expect_success 'no arguments, but no crash' ' 455 test_must_fail git config >output 2>&1 && 456 + test_grep usage output 457 ' 458 459 cat > .git/config << EOF ··· 720 git config aninvalid.unit "1auto" && 721 test_cmp_config 1auto aninvalid.unit && 722 test_must_fail git config --int --get aninvalid.unit 2>actual && 723 + test_grep "bad numeric config value .1auto. for .aninvalid.unit. in file .git/config: invalid unit" actual 724 ' 725 726 test_expect_success 'invalid unit boolean' ' 727 git config commit.gpgsign "1true" && 728 test_cmp_config 1true commit.gpgsign && 729 test_must_fail git config --bool --get commit.gpgsign 2>actual && 730 + test_grep "bad boolean config value .1true. for .commit.gpgsign." actual 731 ' 732 733 test_expect_success 'line number is reported correctly' ' 734 printf "[bool]\n\tvar\n" >invalid && 735 test_must_fail git config -f invalid --path bool.var 2>actual && 736 + test_grep "line 2" actual 737 ' 738 739 test_expect_success 'invalid stdin config' ' 740 echo "[broken" | test_must_fail git config --list --file - >output 2>&1 && 741 + test_grep "bad config line 1 in standard input" output 742 ' 743 744 cat > expect << EOF ··· 919 git config --get --path path.normal >>result && 920 git config --get --path path.trailingtilde >>result 921 ) && 922 + test_grep "[Ff]ailed to expand.*~/" msg && 923 test_cmp expect result 924 ' 925 ··· 986 987 test_expect_success 'set --type=color barfs on non-color' ' 988 test_must_fail git config --type=color foo.color "not-a-color" 2>error && 989 + test_grep "cannot parse color" error 990 ' 991 992 cat > expect << EOF ··· 1447 1448 test_expect_success 'git --config-env fails with invalid parameters' ' 1449 test_must_fail git --config-env=foo.flag config --bool foo.flag 2>error && 1450 + test_grep "invalid config format: foo.flag" error && 1451 test_must_fail git --config-env=foo.flag= config --bool foo.flag 2>error && 1452 + test_grep "missing environment variable name for configuration ${SQ}foo.flag${SQ}" error && 1453 sane_unset NONEXISTENT && 1454 test_must_fail git --config-env=foo.flag=NONEXISTENT config --bool foo.flag 2>error && 1455 + test_grep "missing environment variable ${SQ}NONEXISTENT${SQ} for configuration ${SQ}foo.flag${SQ}" error 1456 ' 1457 1458 test_expect_success 'git -c and --config-env work together' ' ··· 1533 1534 test_expect_success 'git config fails with invalid count' ' 1535 test_must_fail env GIT_CONFIG_COUNT=10a git config --list 2>error && 1536 + test_grep "bogus count" error && 1537 test_must_fail env GIT_CONFIG_COUNT=9999999999999999 git config --list 2>error && 1538 + test_grep "too many entries" error 1539 ' 1540 1541 test_expect_success 'git config fails with missing config key' ' 1542 test_must_fail env GIT_CONFIG_COUNT=1 GIT_CONFIG_VALUE_0="value" \ 1543 git config --list 2>error && 1544 + test_grep "missing config key" error 1545 ' 1546 1547 test_expect_success 'git config fails with missing config value' ' 1548 test_must_fail env GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0="pair.one" \ 1549 git config --list 2>error && 1550 + test_grep "missing config value" error 1551 ' 1552 1553 test_expect_success 'git config fails with invalid config pair key' ' ··· 1617 key garbage 1618 EOF 1619 test_must_fail git config --get section.key 2>error && 1620 + test_grep " line 3 " error 1621 ' 1622 1623 test_expect_success 'barf on incomplete section header' ' ··· 1627 key = value 1628 EOF 1629 test_must_fail git config --get section.key 2>error && 1630 + test_grep " line 2 " error 1631 ' 1632 1633 test_expect_success 'barf on incomplete string' ' ··· 1637 key = "value string 1638 EOF 1639 test_must_fail git config --get section.key 2>error && 1640 + test_grep " line 3 " error 1641 ' 1642 1643 test_expect_success 'urlmatch' ' ··· 2266 2267 test_expect_success 'non-identical modern --type specifiers are not allowed' ' 2268 test_must_fail git config --type=int --type=bool section.big 2>error && 2269 + test_grep "only one type at a time" error 2270 ' 2271 2272 test_expect_success 'non-identical legacy --type specifiers are not allowed' ' 2273 test_must_fail git config --int --bool section.big 2>error && 2274 + test_grep "only one type at a time" error 2275 ' 2276 2277 test_expect_success 'non-identical mixed --type specifiers are not allowed' ' 2278 test_must_fail git config --type=int --bool section.big 2>error && 2279 + test_grep "only one type at a time" error 2280 ' 2281 2282 test_expect_success '--type allows valid type specifiers' ' ··· 2293 2294 test_expect_success '--type rejects unknown specifiers' ' 2295 test_must_fail git config --type=nonsense section.foo 2>error && 2296 + test_grep "unrecognized --type argument" error 2297 ' 2298 2299 test_expect_success '--type=int requires at least one digit' ' ··· 2339 2340 # multiple matches => failure 2341 test_must_fail git config --file=config abc.key three o+ 2>err && 2342 + test_grep "has multiple values" err && 2343 2344 # multiple values, no match => add 2345 git config --file=config abc.key three a+ &&
+1 -1
t/t1307-config-blob.sh
··· 63 git commit -m broken && 64 65 test_must_fail git config --blob=HEAD:config some.value 2>err && 66 - test_i18ngrep "HEAD:config" err 67 ' 68 69 test_expect_success 'can parse blob ending with CR' '
··· 63 git commit -m broken && 64 65 test_must_fail git config --blob=HEAD:config some.value 2>err && 66 + test_grep "HEAD:config" err 67 ' 68 69 test_expect_success 'can parse blob ending with CR' '
+5 -5
t/t1308-config-set.sh
··· 172 173 test_expect_success 'check line error when NULL string is queried' ' 174 test_expect_code 128 test-tool config get_string case.foo 2>result && 175 - test_i18ngrep "fatal: .*case\.foo.*\.git/config.*line 7" result 176 ' 177 178 test_expect_success 'find integer if value is non parse-able' ' ··· 342 br 343 EOF 344 test_expect_code 128 git br 2>result && 345 - test_i18ngrep "missing value for .alias\.br" result && 346 - test_i18ngrep "fatal: .*\.git/config" result && 347 - test_i18ngrep "fatal: .*line 2" result 348 ' 349 350 test_expect_success 'error on modifying repo config without repo' ' 351 nongit test_must_fail git config a.b c 2>err && 352 - test_i18ngrep "not in a git directory" err 353 ' 354 355 cmdline_config="'foo.bar=from-cmdline'"
··· 172 173 test_expect_success 'check line error when NULL string is queried' ' 174 test_expect_code 128 test-tool config get_string case.foo 2>result && 175 + test_grep "fatal: .*case\.foo.*\.git/config.*line 7" result 176 ' 177 178 test_expect_success 'find integer if value is non parse-able' ' ··· 342 br 343 EOF 344 test_expect_code 128 git br 2>result && 345 + test_grep "missing value for .alias\.br" result && 346 + test_grep "fatal: .*\.git/config" result && 347 + test_grep "fatal: .*line 2" result 348 ' 349 350 test_expect_success 'error on modifying repo config without repo' ' 351 nongit test_must_fail git config a.b c 2>err && 352 + test_grep "not in a git directory" err 353 ' 354 355 cmdline_config="'foo.bar=from-cmdline'"
+1 -1
t/t1309-early-config.sh
··· 78 79 test_expect_success 'ignore .git/ with incompatible repository version' ' 80 test_with_config "[core]repositoryformatversion = 999999" 2>err && 81 - test_i18ngrep "warning:.* Expected git repo version <= [1-9]" err 82 ' 83 84 test_expect_failure 'ignore .git/ with invalid repository version' '
··· 78 79 test_expect_success 'ignore .git/ with incompatible repository version' ' 80 test_with_config "[core]repositoryformatversion = 999999" 2>err && 81 + test_grep "warning:.* Expected git repo version <= [1-9]" err 82 ' 83 84 test_expect_failure 'ignore .git/ with invalid repository version' '
+2 -2
t/t1310-config-default.sh
··· 26 test_expect_success 'dies when --default cannot be parsed' ' 27 test_must_fail git config -f config --type=expiry-date --default=x --get \ 28 not.a.section 2>error && 29 - test_i18ngrep "failed to format default config value" error 30 ' 31 32 test_expect_success 'does not allow --default without --get' ' 33 test_must_fail git config --default=quux --unset a.section >output 2>&1 && 34 - test_i18ngrep "\-\-default is only applicable to" output 35 ' 36 37 test_done
··· 26 test_expect_success 'dies when --default cannot be parsed' ' 27 test_must_fail git config -f config --type=expiry-date --default=x --get \ 28 not.a.section 2>error && 29 + test_grep "failed to format default config value" error 30 ' 31 32 test_expect_success 'does not allow --default without --get' ' 33 test_must_fail git config --default=quux --unset a.section >output 2>&1 && 34 + test_grep "\-\-default is only applicable to" output 35 ' 36 37 test_done
+11 -11
t/t1400-update-ref.sh
··· 410 git rev-parse --verify "main@{2005-05-26 23:33:01}" >o 2>e && 411 echo "$B" >expect && 412 test_cmp expect o && 413 - test_i18ngrep -F "warning: log for ref $m has gap after $gd" e 414 ' 415 test_expect_success 'Query "main@{2005-05-26 23:38:00}" (middle of history)' ' 416 test_when_finished "rm -f o e" && ··· 431 git rev-parse --verify "main@{2005-05-28}" >o 2>e && 432 echo "$D" >expect && 433 test_cmp expect o && 434 - test_i18ngrep -F "warning: log for ref $m unexpectedly ended on $ld" e 435 ' 436 437 rm -f .git/$m .git/logs/$m expect ··· 486 test_expect_success 'given old value for missing pseudoref, do not create' ' 487 test_must_fail git update-ref PSEUDOREF $A $B 2>err && 488 test_must_fail git rev-parse PSEUDOREF && 489 - test_i18ngrep "unable to resolve reference" err 490 ' 491 492 test_expect_success 'create pseudoref' ' ··· 507 test_expect_success 'do not overwrite pseudoref with wrong old value' ' 508 test_must_fail git update-ref PSEUDOREF $D $E 2>err && 509 test $C = $(git rev-parse PSEUDOREF) && 510 - test_i18ngrep "cannot lock ref.*expected" err 511 ' 512 513 test_expect_success 'delete pseudoref' ' ··· 519 git update-ref PSEUDOREF $A && 520 test_must_fail git update-ref -d PSEUDOREF $B 2>err && 521 test $A = $(git rev-parse PSEUDOREF) && 522 - test_i18ngrep "cannot lock ref.*expected" err 523 ' 524 525 test_expect_success 'delete pseudoref with correct old value' ' ··· 536 test_when_finished git update-ref -d PSEUDOREF && 537 test_must_fail git update-ref PSEUDOREF $B $Z 2>err && 538 test $A = $(git rev-parse PSEUDOREF) && 539 - test_i18ngrep "already exists" err 540 ' 541 542 # Test --stdin ··· 556 557 test_expect_success '-z fails without --stdin' ' 558 test_must_fail git update-ref -z $m $m $m 2>err && 559 - test_i18ngrep "usage: git update-ref" err 560 ' 561 562 test_expect_success 'stdin works with no input' ' ··· 674 create $a $m 675 EOF 676 test_must_fail git update-ref --stdin <stdin 2>err && 677 - test_i18ngrep "fatal: multiple updates for ref '"'"'$a'"'"' not allowed" err 678 ' 679 680 test_expect_success 'stdin create ref works' ' ··· 1107 test_expect_success 'stdin -z fails with duplicate refs' ' 1108 printf $F "create $a" "$m" "create $b" "$m" "create $a" "$m" >stdin && 1109 test_must_fail git update-ref -z --stdin <stdin 2>err && 1110 - test_i18ngrep "fatal: multiple updates for ref '"'"'$a'"'"' not allowed" err 1111 ' 1112 1113 test_expect_success 'stdin -z create ref works' ' ··· 1338 update HEAD $B 1339 EOF 1340 test_must_fail git update-ref --stdin <stdin 2>err && 1341 - test_i18ngrep "fatal: multiple updates for '\''HEAD'\'' (including one via its referent .refs/heads/target1.) are not allowed" err && 1342 echo "refs/heads/target1" >expect && 1343 git symbolic-ref HEAD >actual && 1344 test_cmp expect actual && ··· 1355 update refs/heads/symref2 $B 1356 EOF 1357 test_must_fail git update-ref --stdin <stdin 2>err && 1358 - test_i18ngrep "fatal: multiple updates for '\''refs/heads/target2'\'' (including one via symref .refs/heads/symref2.) are not allowed" err && 1359 echo "refs/heads/target2" >expect && 1360 git symbolic-ref refs/heads/symref2 >actual && 1361 test_cmp expect actual &&
··· 410 git rev-parse --verify "main@{2005-05-26 23:33:01}" >o 2>e && 411 echo "$B" >expect && 412 test_cmp expect o && 413 + test_grep -F "warning: log for ref $m has gap after $gd" e 414 ' 415 test_expect_success 'Query "main@{2005-05-26 23:38:00}" (middle of history)' ' 416 test_when_finished "rm -f o e" && ··· 431 git rev-parse --verify "main@{2005-05-28}" >o 2>e && 432 echo "$D" >expect && 433 test_cmp expect o && 434 + test_grep -F "warning: log for ref $m unexpectedly ended on $ld" e 435 ' 436 437 rm -f .git/$m .git/logs/$m expect ··· 486 test_expect_success 'given old value for missing pseudoref, do not create' ' 487 test_must_fail git update-ref PSEUDOREF $A $B 2>err && 488 test_must_fail git rev-parse PSEUDOREF && 489 + test_grep "unable to resolve reference" err 490 ' 491 492 test_expect_success 'create pseudoref' ' ··· 507 test_expect_success 'do not overwrite pseudoref with wrong old value' ' 508 test_must_fail git update-ref PSEUDOREF $D $E 2>err && 509 test $C = $(git rev-parse PSEUDOREF) && 510 + test_grep "cannot lock ref.*expected" err 511 ' 512 513 test_expect_success 'delete pseudoref' ' ··· 519 git update-ref PSEUDOREF $A && 520 test_must_fail git update-ref -d PSEUDOREF $B 2>err && 521 test $A = $(git rev-parse PSEUDOREF) && 522 + test_grep "cannot lock ref.*expected" err 523 ' 524 525 test_expect_success 'delete pseudoref with correct old value' ' ··· 536 test_when_finished git update-ref -d PSEUDOREF && 537 test_must_fail git update-ref PSEUDOREF $B $Z 2>err && 538 test $A = $(git rev-parse PSEUDOREF) && 539 + test_grep "already exists" err 540 ' 541 542 # Test --stdin ··· 556 557 test_expect_success '-z fails without --stdin' ' 558 test_must_fail git update-ref -z $m $m $m 2>err && 559 + test_grep "usage: git update-ref" err 560 ' 561 562 test_expect_success 'stdin works with no input' ' ··· 674 create $a $m 675 EOF 676 test_must_fail git update-ref --stdin <stdin 2>err && 677 + test_grep "fatal: multiple updates for ref '"'"'$a'"'"' not allowed" err 678 ' 679 680 test_expect_success 'stdin create ref works' ' ··· 1107 test_expect_success 'stdin -z fails with duplicate refs' ' 1108 printf $F "create $a" "$m" "create $b" "$m" "create $a" "$m" >stdin && 1109 test_must_fail git update-ref -z --stdin <stdin 2>err && 1110 + test_grep "fatal: multiple updates for ref '"'"'$a'"'"' not allowed" err 1111 ' 1112 1113 test_expect_success 'stdin -z create ref works' ' ··· 1338 update HEAD $B 1339 EOF 1340 test_must_fail git update-ref --stdin <stdin 2>err && 1341 + test_grep "fatal: multiple updates for '\''HEAD'\'' (including one via its referent .refs/heads/target1.) are not allowed" err && 1342 echo "refs/heads/target1" >expect && 1343 git symbolic-ref HEAD >actual && 1344 test_cmp expect actual && ··· 1355 update refs/heads/symref2 $B 1356 EOF 1357 test_must_fail git update-ref --stdin <stdin 2>err && 1358 + test_grep "fatal: multiple updates for '\''refs/heads/target2'\'' (including one via symref .refs/heads/symref2.) are not allowed" err && 1359 echo "refs/heads/target2" >expect && 1360 git symbolic-ref refs/heads/symref2 >actual && 1361 test_cmp expect actual &&
+2 -2
t/t1404-update-ref-errors.sh
··· 29 fi && 30 printf "create $prefix/%s $C\n" $create >input && 31 test_must_fail git update-ref --stdin <input 2>output.err && 32 - test_i18ngrep -F "$error" output.err && 33 git for-each-ref $prefix >actual && 34 test_cmp unchanged actual 35 } ··· 613 test_when_finished "rm -f .git/packed-refs.lock" && 614 test_must_fail git update-ref -d $prefix/foo >out 2>err && 615 git for-each-ref $prefix >actual && 616 - test_i18ngrep "Unable to create $SQ.*packed-refs.lock$SQ: " err && 617 test_cmp unchanged actual 618 ' 619
··· 29 fi && 30 printf "create $prefix/%s $C\n" $create >input && 31 test_must_fail git update-ref --stdin <input 2>output.err && 32 + test_grep -F "$error" output.err && 33 git for-each-ref $prefix >actual && 34 test_cmp unchanged actual 35 } ··· 613 test_when_finished "rm -f .git/packed-refs.lock" && 614 test_must_fail git update-ref -d $prefix/foo >out 2>err && 615 git for-each-ref $prefix >actual && 616 + test_grep "Unable to create $SQ.*packed-refs.lock$SQ: " err && 617 test_cmp unchanged actual 618 ' 619
+3 -3
t/t1410-reflog.sh
··· 29 '') 30 test_must_be_empty fsck.output ;; 31 *) 32 - test_i18ngrep "$1" fsck.output ;; 33 esac 34 } 35 ··· 308 test_config gc.reflogexpireunreachable never && 309 310 test_must_fail git reflog expire main@{123} 2>stderr && 311 - test_i18ngrep "points nowhere" stderr && 312 test_must_fail git reflog expire does-not-exist 2>stderr && 313 - test_i18ngrep "points nowhere" stderr 314 ' 315 316 test_expect_success 'checkout should not delete log for packed ref' '
··· 29 '') 30 test_must_be_empty fsck.output ;; 31 *) 32 + test_grep "$1" fsck.output ;; 33 esac 34 } 35 ··· 308 test_config gc.reflogexpireunreachable never && 309 310 test_must_fail git reflog expire main@{123} 2>stderr && 311 + test_grep "points nowhere" stderr && 312 test_must_fail git reflog expire does-not-exist 2>stderr && 313 + test_grep "points nowhere" stderr 314 ' 315 316 test_expect_success 'checkout should not delete log for packed ref' '
+1 -1
t/t1416-ref-transaction-hooks.sh
··· 37 fi 38 EOF 39 test_must_fail git update-ref HEAD POST 2>err && 40 - test_i18ngrep "ref updates aborted by hook" err 41 ' 42 43 test_expect_success 'hook gets all queued updates in prepared state' '
··· 37 fi 38 EOF 39 test_must_fail git update-ref HEAD POST 2>err && 40 + test_grep "ref updates aborted by hook" err 41 ' 42 43 test_expect_success 'hook gets all queued updates in prepared state' '
+11 -11
t/t1430-bad-ref-name.sh
··· 47 test-tool ref-store main update-ref msg "refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION && 48 test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" && 49 git branch >output 2>error && 50 - test_i18ngrep -e "ignoring ref with broken name refs/heads/broken\.\.\.ref" error && 51 ! grep -e "broken\.\.\.ref" output 52 ' 53 ··· 158 git rev-parse --verify one >expect && 159 git rev-parse --verify shadow >actual 2>err && 160 test_cmp expect actual && 161 - test_i18ngrep "ignoring dangling symref refs/tags/shadow" err 162 ' 163 164 test_expect_success 'for-each-ref emits warnings for broken names' ' ··· 172 ! grep -e "broken\.\.\.ref" output && 173 ! grep -e "badname" output && 174 ! grep -e "broken\.\.\.symref" output && 175 - test_i18ngrep "ignoring ref with broken name refs/heads/broken\.\.\.ref" error && 176 - test_i18ngrep ! "ignoring broken ref refs/heads/badname" error && 177 - test_i18ngrep "ignoring ref with broken name refs/heads/broken\.\.\.symref" error 178 ' 179 180 test_expect_success 'update-ref -d can delete broken name' ' ··· 192 test-tool ref-store main update-ref msg "refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION && 193 test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" && 194 git branch -d broken...ref >output 2>error && 195 - test_i18ngrep "Deleted branch broken...ref (was broken)" output && 196 test_must_be_empty error && 197 git branch >output 2>error && 198 ! grep -e "broken\.\.\.ref" error && ··· 218 test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/badname" && 219 git branch -d badname >output 2>error && 220 test_path_is_missing .git/refs/heads/badname && 221 - test_i18ngrep "Deleted branch badname (was refs/heads/broken\.\.\.ref)" output && 222 test_must_be_empty error 223 ' 224 ··· 236 test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/badname" && 237 git branch -d badname >output 2>error && 238 test_path_is_missing .git/refs/heads/badname && 239 - test_i18ngrep "Deleted branch badname (was refs/heads/broken\.\.\.ref)" output && 240 test_must_be_empty error 241 ' 242 ··· 265 test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...symref" && 266 git branch -d broken...symref >output 2>error && 267 test_path_is_missing .git/refs/heads/broken...symref && 268 - test_i18ngrep "Deleted branch broken...symref (was refs/heads/main)" output && 269 test_must_be_empty error 270 ' 271 ··· 283 test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...symref" && 284 git branch -d broken...symref >output 2>error && 285 test_path_is_missing .git/refs/heads/broken...symref && 286 - test_i18ngrep "Deleted branch broken...symref (was refs/heads/idonotexist)" output && 287 test_must_be_empty error 288 ' 289 ··· 292 echo precious >expect && 293 test_must_fail git update-ref -d my-private-file >output 2>error && 294 test_must_be_empty output && 295 - test_i18ngrep -e "refusing to update ref with bad name" error && 296 test_cmp expect .git/my-private-file 297 ' 298
··· 47 test-tool ref-store main update-ref msg "refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION && 48 test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" && 49 git branch >output 2>error && 50 + test_grep -e "ignoring ref with broken name refs/heads/broken\.\.\.ref" error && 51 ! grep -e "broken\.\.\.ref" output 52 ' 53 ··· 158 git rev-parse --verify one >expect && 159 git rev-parse --verify shadow >actual 2>err && 160 test_cmp expect actual && 161 + test_grep "ignoring dangling symref refs/tags/shadow" err 162 ' 163 164 test_expect_success 'for-each-ref emits warnings for broken names' ' ··· 172 ! grep -e "broken\.\.\.ref" output && 173 ! grep -e "badname" output && 174 ! grep -e "broken\.\.\.symref" output && 175 + test_grep "ignoring ref with broken name refs/heads/broken\.\.\.ref" error && 176 + test_grep ! "ignoring broken ref refs/heads/badname" error && 177 + test_grep "ignoring ref with broken name refs/heads/broken\.\.\.symref" error 178 ' 179 180 test_expect_success 'update-ref -d can delete broken name' ' ··· 192 test-tool ref-store main update-ref msg "refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION && 193 test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" && 194 git branch -d broken...ref >output 2>error && 195 + test_grep "Deleted branch broken...ref (was broken)" output && 196 test_must_be_empty error && 197 git branch >output 2>error && 198 ! grep -e "broken\.\.\.ref" error && ··· 218 test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/badname" && 219 git branch -d badname >output 2>error && 220 test_path_is_missing .git/refs/heads/badname && 221 + test_grep "Deleted branch badname (was refs/heads/broken\.\.\.ref)" output && 222 test_must_be_empty error 223 ' 224 ··· 236 test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/badname" && 237 git branch -d badname >output 2>error && 238 test_path_is_missing .git/refs/heads/badname && 239 + test_grep "Deleted branch badname (was refs/heads/broken\.\.\.ref)" output && 240 test_must_be_empty error 241 ' 242 ··· 265 test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...symref" && 266 git branch -d broken...symref >output 2>error && 267 test_path_is_missing .git/refs/heads/broken...symref && 268 + test_grep "Deleted branch broken...symref (was refs/heads/main)" output && 269 test_must_be_empty error 270 ' 271 ··· 283 test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...symref" && 284 git branch -d broken...symref >output 2>error && 285 test_path_is_missing .git/refs/heads/broken...symref && 286 + test_grep "Deleted branch broken...symref (was refs/heads/idonotexist)" output && 287 test_must_be_empty error 288 ' 289 ··· 292 echo precious >expect && 293 test_must_fail git update-ref -d my-private-file >output 2>error && 294 test_must_be_empty output && 295 + test_grep -e "refusing to update ref with bad name" error && 296 test_cmp expect .git/my-private-file 297 ' 298
+40 -40
t/t1450-fsck.sh
··· 118 git rev-parse HEAD^{tree} >.git/refs/heads/invalid && 119 test_when_finished "git update-ref -d refs/heads/invalid" && 120 test_must_fail git fsck 2>out && 121 - test_i18ngrep "not a commit" out 122 ' 123 124 test_expect_success 'HEAD link pointing at a funny object' ' ··· 127 echo $ZERO_OID >.git/HEAD && 128 # avoid corrupt/broken HEAD from interfering with repo discovery 129 test_must_fail env GIT_DIR=.git git fsck 2>out && 130 - test_i18ngrep "detached HEAD points" out 131 ' 132 133 test_expect_success 'HEAD link pointing at a funny place' ' ··· 136 echo "ref: refs/funny/place" >.git/HEAD && 137 # avoid corrupt/broken HEAD from interfering with repo discovery 138 test_must_fail env GIT_DIR=.git git fsck 2>out && 139 - test_i18ngrep "HEAD points to something strange" out 140 ' 141 142 test_expect_success 'HEAD link pointing at a funny object (from different wt)' ' ··· 147 echo $ZERO_OID >.git/HEAD && 148 # avoid corrupt/broken HEAD from interfering with repo discovery 149 test_must_fail git -C wt fsck 2>out && 150 - test_i18ngrep "main-worktree/HEAD: detached HEAD points" out 151 ' 152 153 test_expect_success 'other worktree HEAD link pointing at a funny object' ' ··· 155 git worktree add other && 156 echo $ZERO_OID >.git/worktrees/other/HEAD && 157 test_must_fail git fsck 2>out && 158 - test_i18ngrep "worktrees/other/HEAD: detached HEAD points" out 159 ' 160 161 test_expect_success 'other worktree HEAD link pointing at missing object' ' ··· 163 git worktree add other && 164 echo "Contents missing from repo" | git hash-object --stdin >.git/worktrees/other/HEAD && 165 test_must_fail git fsck 2>out && 166 - test_i18ngrep "worktrees/other/HEAD: invalid sha1 pointer" out 167 ' 168 169 test_expect_success 'other worktree HEAD link pointing at a funny place' ' ··· 171 git worktree add other && 172 echo "ref: refs/funny/place" >.git/worktrees/other/HEAD && 173 test_must_fail git fsck 2>out && 174 - test_i18ngrep "worktrees/other/HEAD points to something strange" out 175 ' 176 177 test_expect_success 'commit with multiple signatures is okay' ' ··· 217 git update-ref refs/heads/bogus "$new" && 218 test_when_finished "git update-ref -d refs/heads/bogus" && 219 test_must_fail git fsck 2>out && 220 - test_i18ngrep "error in commit $new" out 221 ' 222 223 test_expect_success 'missing < email delimiter is reported nicely' ' ··· 228 git update-ref refs/heads/bogus "$new" && 229 test_when_finished "git update-ref -d refs/heads/bogus" && 230 test_must_fail git fsck 2>out && 231 - test_i18ngrep "error in commit $new.* - bad name" out 232 ' 233 234 test_expect_success 'missing email is reported nicely' ' ··· 239 git update-ref refs/heads/bogus "$new" && 240 test_when_finished "git update-ref -d refs/heads/bogus" && 241 test_must_fail git fsck 2>out && 242 - test_i18ngrep "error in commit $new.* - missing email" out 243 ' 244 245 test_expect_success '> in name is reported' ' ··· 250 git update-ref refs/heads/bogus "$new" && 251 test_when_finished "git update-ref -d refs/heads/bogus" && 252 test_must_fail git fsck 2>out && 253 - test_i18ngrep "error in commit $new" out 254 ' 255 256 # date is 2^64 + 1 ··· 263 git update-ref refs/heads/bogus "$new" && 264 test_when_finished "git update-ref -d refs/heads/bogus" && 265 test_must_fail git fsck 2>out && 266 - test_i18ngrep "error in commit $new.*integer overflow" out 267 ' 268 269 test_expect_success 'commit with NUL in header' ' ··· 274 git update-ref refs/heads/bogus "$new" && 275 test_when_finished "git update-ref -d refs/heads/bogus" && 276 test_must_fail git fsck 2>out && 277 - test_i18ngrep "error in commit $new.*unterminated header: NUL at offset" out 278 ' 279 280 test_expect_success 'tree object with duplicate entries' ' ··· 295 git hash-object --literally -w -t tree --stdin 296 ) && 297 test_must_fail git fsck 2>out && 298 - test_i18ngrep "error in tree .*contains duplicate file entries" out 299 ' 300 301 check_duplicate_names () { ··· 318 done >badtree && 319 badtree=$(git mktree <badtree) && 320 test_must_fail git fsck 2>out && 321 - test_i18ngrep "$badtree" out && 322 - test_i18ngrep "error in tree .*contains duplicate file entries" out 323 ' 324 } 325 ··· 341 commit_sha1=$(git commit-tree $tree_sha1) && 342 git update-ref refs/heads/wrong $commit_sha1 && 343 test_must_fail git fsck 2>out && 344 - test_i18ngrep "error: empty filename in tree entry" out && 345 - test_i18ngrep "$tree_sha1" out && 346 - test_i18ngrep ! "fatal: empty filename in tree entry" out 347 ' 348 349 test_expect_success 'tree entry with type mismatch' ' ··· 360 commit=$(git commit-tree $tree) && 361 git update-ref refs/heads/type_mismatch $commit && 362 test_must_fail git fsck >out 2>&1 && 363 - test_i18ngrep "is a blob, not a tree" out && 364 - test_i18ngrep ! "dangling blob" out 365 ' 366 367 test_expect_success 'tree entry with bogus mode' ' ··· 394 echo $tag >.git/refs/tags/invalid && 395 test_when_finished "git update-ref -d refs/tags/invalid" && 396 test_must_fail git fsck --tags >out && 397 - test_i18ngrep "broken link" out 398 ' 399 400 test_expect_success 'tag pointing to something else than its type' ' ··· 455 echo $tag >.git/refs/tags/wrong && 456 test_when_finished "git update-ref -d refs/tags/wrong" && 457 test_must_fail git fsck --tags 2>out && 458 - test_i18ngrep "error in tag .*: invalid author/committer" out 459 ' 460 461 test_expect_success 'tag with NUL in header' ' ··· 474 echo $tag >.git/refs/tags/wrong && 475 test_when_finished "git update-ref -d refs/tags/wrong" && 476 test_must_fail git fsck --tags 2>out && 477 - test_i18ngrep "error in tag $tag.*unterminated header: NUL at offset" out 478 ' 479 480 test_expect_success 'cleaned up' ' ··· 504 test_when_finished "git update-ref -d refs/heads/bogus" && 505 506 test_might_fail git rev-list --verify-objects refs/heads/bogus >/dev/null 2>out && 507 - test_i18ngrep -q "error: hash mismatch $(dirname $new)$(test_oid ff_2)" out 508 ' 509 510 # An actual bit corruption is more likely than swapped commits, but ··· 575 sha=$(printf "100644 file$_bz$_bzoid" | 576 git hash-object --literally -w --stdin -t tree) && 577 git fsck 2>out && 578 - test_i18ngrep "warning.*null sha1" out 579 ) 580 ' 581 ··· 585 sha=$(printf "160000 submodule$_bz$_bzoid" | 586 git hash-object --literally -w --stdin -t tree) && 587 git fsck 2>out && 588 - test_i18ngrep "warning.*null sha1" out 589 ) 590 ' 591 ··· 606 printf "$mode $type %s\t%s" "$value" "$path" >bad && 607 bad_tree=$(git mktree <bad) && 608 git fsck 2>out && 609 - test_i18ngrep "warning.*tree $bad_tree" out 610 )' 611 done <<-\EOF 612 100644 blob ··· 652 git branch bad $(cat name) && 653 654 test_must_fail git -c fsck.nulInCommit=error fsck 2>warn.1 && 655 - test_i18ngrep nulInCommit warn.1 && 656 git fsck 2>warn.2 && 657 - test_i18ngrep nulInCommit warn.2 658 ) 659 ' 660 ··· 774 tree=$(git rev-parse --verify julius:) && 775 git tag -d julius && 776 test_must_fail git fsck --name-objects >out && 777 - test_i18ngrep "$tree (refs/tags/augustus44\\^:" out 778 ) 779 ' 780 ··· 787 mkdir alt.git/objects/$(dirname $path) && 788 >alt.git/objects/$(dirname $path)/$(basename $path) && 789 test_must_fail git fsck >out 2>&1 && 790 - test_i18ngrep alt.git out 791 ' 792 793 test_expect_success 'fsck errors in packed objects' ' ··· 806 remove_object $one && 807 remove_object $two && 808 test_must_fail git fsck 2>out && 809 - test_i18ngrep "error in commit $one.* - bad name" out && 810 - test_i18ngrep "error in commit $two.* - bad name" out && 811 ! grep corrupt out 812 ' 813 ··· 824 test_when_finished "rm -f .git/objects/pack/pack-$pack.*" && 825 remove_object $hsh && 826 test_must_fail git fsck 2>out && 827 - test_i18ngrep "checksum mismatch" out 828 ' 829 830 test_expect_success 'fsck finds problems in duplicate loose objects' ' ··· 861 chmod +w "$file" && 862 echo garbage >>"$file" && 863 test_must_fail git fsck 2>out && 864 - test_i18ngrep "garbage.*$commit" out 865 ' 866 867 test_expect_success 'fsck detects trailing loose garbage (large blob)' ' ··· 871 chmod +w "$file" && 872 echo garbage >>"$file" && 873 test_must_fail git -c core.bigfilethreshold=5 fsck 2>out && 874 - test_i18ngrep "garbage.*$blob" out 875 ' 876 877 test_expect_success 'fsck detects truncated loose object' ' ··· 887 888 # check both regular and streaming code paths 889 test_must_fail git fsck 2>out && 890 - test_i18ngrep corrupt.*$blob out && 891 892 test_must_fail git -c core.bigfilethreshold=128 fsck 2>out && 893 - test_i18ngrep corrupt.*$blob out 894 ' 895 896 # for each of type, we have one version which is referenced by another object ··· 979 test_when_finished "mv .git/index.backup .git/index" && 980 corrupt_index_checksum && 981 test_must_fail git fsck --cache 2>errors && 982 - test_i18ngrep "bad index file" errors 983 ' 984 985 test_expect_success 'fsck error and recovery on invalid object type' '
··· 118 git rev-parse HEAD^{tree} >.git/refs/heads/invalid && 119 test_when_finished "git update-ref -d refs/heads/invalid" && 120 test_must_fail git fsck 2>out && 121 + test_grep "not a commit" out 122 ' 123 124 test_expect_success 'HEAD link pointing at a funny object' ' ··· 127 echo $ZERO_OID >.git/HEAD && 128 # avoid corrupt/broken HEAD from interfering with repo discovery 129 test_must_fail env GIT_DIR=.git git fsck 2>out && 130 + test_grep "detached HEAD points" out 131 ' 132 133 test_expect_success 'HEAD link pointing at a funny place' ' ··· 136 echo "ref: refs/funny/place" >.git/HEAD && 137 # avoid corrupt/broken HEAD from interfering with repo discovery 138 test_must_fail env GIT_DIR=.git git fsck 2>out && 139 + test_grep "HEAD points to something strange" out 140 ' 141 142 test_expect_success 'HEAD link pointing at a funny object (from different wt)' ' ··· 147 echo $ZERO_OID >.git/HEAD && 148 # avoid corrupt/broken HEAD from interfering with repo discovery 149 test_must_fail git -C wt fsck 2>out && 150 + test_grep "main-worktree/HEAD: detached HEAD points" out 151 ' 152 153 test_expect_success 'other worktree HEAD link pointing at a funny object' ' ··· 155 git worktree add other && 156 echo $ZERO_OID >.git/worktrees/other/HEAD && 157 test_must_fail git fsck 2>out && 158 + test_grep "worktrees/other/HEAD: detached HEAD points" out 159 ' 160 161 test_expect_success 'other worktree HEAD link pointing at missing object' ' ··· 163 git worktree add other && 164 echo "Contents missing from repo" | git hash-object --stdin >.git/worktrees/other/HEAD && 165 test_must_fail git fsck 2>out && 166 + test_grep "worktrees/other/HEAD: invalid sha1 pointer" out 167 ' 168 169 test_expect_success 'other worktree HEAD link pointing at a funny place' ' ··· 171 git worktree add other && 172 echo "ref: refs/funny/place" >.git/worktrees/other/HEAD && 173 test_must_fail git fsck 2>out && 174 + test_grep "worktrees/other/HEAD points to something strange" out 175 ' 176 177 test_expect_success 'commit with multiple signatures is okay' ' ··· 217 git update-ref refs/heads/bogus "$new" && 218 test_when_finished "git update-ref -d refs/heads/bogus" && 219 test_must_fail git fsck 2>out && 220 + test_grep "error in commit $new" out 221 ' 222 223 test_expect_success 'missing < email delimiter is reported nicely' ' ··· 228 git update-ref refs/heads/bogus "$new" && 229 test_when_finished "git update-ref -d refs/heads/bogus" && 230 test_must_fail git fsck 2>out && 231 + test_grep "error in commit $new.* - bad name" out 232 ' 233 234 test_expect_success 'missing email is reported nicely' ' ··· 239 git update-ref refs/heads/bogus "$new" && 240 test_when_finished "git update-ref -d refs/heads/bogus" && 241 test_must_fail git fsck 2>out && 242 + test_grep "error in commit $new.* - missing email" out 243 ' 244 245 test_expect_success '> in name is reported' ' ··· 250 git update-ref refs/heads/bogus "$new" && 251 test_when_finished "git update-ref -d refs/heads/bogus" && 252 test_must_fail git fsck 2>out && 253 + test_grep "error in commit $new" out 254 ' 255 256 # date is 2^64 + 1 ··· 263 git update-ref refs/heads/bogus "$new" && 264 test_when_finished "git update-ref -d refs/heads/bogus" && 265 test_must_fail git fsck 2>out && 266 + test_grep "error in commit $new.*integer overflow" out 267 ' 268 269 test_expect_success 'commit with NUL in header' ' ··· 274 git update-ref refs/heads/bogus "$new" && 275 test_when_finished "git update-ref -d refs/heads/bogus" && 276 test_must_fail git fsck 2>out && 277 + test_grep "error in commit $new.*unterminated header: NUL at offset" out 278 ' 279 280 test_expect_success 'tree object with duplicate entries' ' ··· 295 git hash-object --literally -w -t tree --stdin 296 ) && 297 test_must_fail git fsck 2>out && 298 + test_grep "error in tree .*contains duplicate file entries" out 299 ' 300 301 check_duplicate_names () { ··· 318 done >badtree && 319 badtree=$(git mktree <badtree) && 320 test_must_fail git fsck 2>out && 321 + test_grep "$badtree" out && 322 + test_grep "error in tree .*contains duplicate file entries" out 323 ' 324 } 325 ··· 341 commit_sha1=$(git commit-tree $tree_sha1) && 342 git update-ref refs/heads/wrong $commit_sha1 && 343 test_must_fail git fsck 2>out && 344 + test_grep "error: empty filename in tree entry" out && 345 + test_grep "$tree_sha1" out && 346 + test_grep ! "fatal: empty filename in tree entry" out 347 ' 348 349 test_expect_success 'tree entry with type mismatch' ' ··· 360 commit=$(git commit-tree $tree) && 361 git update-ref refs/heads/type_mismatch $commit && 362 test_must_fail git fsck >out 2>&1 && 363 + test_grep "is a blob, not a tree" out && 364 + test_grep ! "dangling blob" out 365 ' 366 367 test_expect_success 'tree entry with bogus mode' ' ··· 394 echo $tag >.git/refs/tags/invalid && 395 test_when_finished "git update-ref -d refs/tags/invalid" && 396 test_must_fail git fsck --tags >out && 397 + test_grep "broken link" out 398 ' 399 400 test_expect_success 'tag pointing to something else than its type' ' ··· 455 echo $tag >.git/refs/tags/wrong && 456 test_when_finished "git update-ref -d refs/tags/wrong" && 457 test_must_fail git fsck --tags 2>out && 458 + test_grep "error in tag .*: invalid author/committer" out 459 ' 460 461 test_expect_success 'tag with NUL in header' ' ··· 474 echo $tag >.git/refs/tags/wrong && 475 test_when_finished "git update-ref -d refs/tags/wrong" && 476 test_must_fail git fsck --tags 2>out && 477 + test_grep "error in tag $tag.*unterminated header: NUL at offset" out 478 ' 479 480 test_expect_success 'cleaned up' ' ··· 504 test_when_finished "git update-ref -d refs/heads/bogus" && 505 506 test_might_fail git rev-list --verify-objects refs/heads/bogus >/dev/null 2>out && 507 + test_grep -q "error: hash mismatch $(dirname $new)$(test_oid ff_2)" out 508 ' 509 510 # An actual bit corruption is more likely than swapped commits, but ··· 575 sha=$(printf "100644 file$_bz$_bzoid" | 576 git hash-object --literally -w --stdin -t tree) && 577 git fsck 2>out && 578 + test_grep "warning.*null sha1" out 579 ) 580 ' 581 ··· 585 sha=$(printf "160000 submodule$_bz$_bzoid" | 586 git hash-object --literally -w --stdin -t tree) && 587 git fsck 2>out && 588 + test_grep "warning.*null sha1" out 589 ) 590 ' 591 ··· 606 printf "$mode $type %s\t%s" "$value" "$path" >bad && 607 bad_tree=$(git mktree <bad) && 608 git fsck 2>out && 609 + test_grep "warning.*tree $bad_tree" out 610 )' 611 done <<-\EOF 612 100644 blob ··· 652 git branch bad $(cat name) && 653 654 test_must_fail git -c fsck.nulInCommit=error fsck 2>warn.1 && 655 + test_grep nulInCommit warn.1 && 656 git fsck 2>warn.2 && 657 + test_grep nulInCommit warn.2 658 ) 659 ' 660 ··· 774 tree=$(git rev-parse --verify julius:) && 775 git tag -d julius && 776 test_must_fail git fsck --name-objects >out && 777 + test_grep "$tree (refs/tags/augustus44\\^:" out 778 ) 779 ' 780 ··· 787 mkdir alt.git/objects/$(dirname $path) && 788 >alt.git/objects/$(dirname $path)/$(basename $path) && 789 test_must_fail git fsck >out 2>&1 && 790 + test_grep alt.git out 791 ' 792 793 test_expect_success 'fsck errors in packed objects' ' ··· 806 remove_object $one && 807 remove_object $two && 808 test_must_fail git fsck 2>out && 809 + test_grep "error in commit $one.* - bad name" out && 810 + test_grep "error in commit $two.* - bad name" out && 811 ! grep corrupt out 812 ' 813 ··· 824 test_when_finished "rm -f .git/objects/pack/pack-$pack.*" && 825 remove_object $hsh && 826 test_must_fail git fsck 2>out && 827 + test_grep "checksum mismatch" out 828 ' 829 830 test_expect_success 'fsck finds problems in duplicate loose objects' ' ··· 861 chmod +w "$file" && 862 echo garbage >>"$file" && 863 test_must_fail git fsck 2>out && 864 + test_grep "garbage.*$commit" out 865 ' 866 867 test_expect_success 'fsck detects trailing loose garbage (large blob)' ' ··· 871 chmod +w "$file" && 872 echo garbage >>"$file" && 873 test_must_fail git -c core.bigfilethreshold=5 fsck 2>out && 874 + test_grep "garbage.*$blob" out 875 ' 876 877 test_expect_success 'fsck detects truncated loose object' ' ··· 887 888 # check both regular and streaming code paths 889 test_must_fail git fsck 2>out && 890 + test_grep corrupt.*$blob out && 891 892 test_must_fail git -c core.bigfilethreshold=128 fsck 2>out && 893 + test_grep corrupt.*$blob out 894 ' 895 896 # for each of type, we have one version which is referenced by another object ··· 979 test_when_finished "mv .git/index.backup .git/index" && 980 corrupt_index_checksum && 981 test_must_fail git fsck --cache 2>errors && 982 + test_grep "bad index file" errors 983 ' 984 985 test_expect_success 'fsck error and recovery on invalid object type' '
+17 -17
t/t1506-rev-parse-diagnosis.sh
··· 107 108 test_expect_success 'incorrect revision id' ' 109 test_must_fail git rev-parse foobar:file.txt 2>error && 110 - test_i18ngrep "invalid object name .foobar." error && 111 test_must_fail git rev-parse foobar 2>error && 112 - test_i18ngrep "unknown revision or path not in the working tree." error 113 ' 114 115 test_expect_success 'incorrect file in sha1:path' ' 116 test_must_fail git rev-parse HEAD:nothing.txt 2>error && 117 - test_i18ngrep "path .nothing.txt. does not exist in .HEAD." error && 118 test_must_fail git rev-parse HEAD:index-only.txt 2>error && 119 - test_i18ngrep "path .index-only.txt. exists on disk, but not in .HEAD." error && 120 (cd subdir && 121 test_must_fail git rev-parse HEAD:file2.txt 2>error && 122 test_did_you_mean HEAD subdir/ file2.txt exists ) ··· 124 125 test_expect_success 'incorrect file in :path and :N:path' ' 126 test_must_fail git rev-parse :nothing.txt 2>error && 127 - test_i18ngrep "path .nothing.txt. does not exist (neither on disk nor in the index)" error && 128 test_must_fail git rev-parse :1:nothing.txt 2>error && 129 - test_i18ngrep "path .nothing.txt. does not exist (neither on disk nor in the index)" error && 130 test_must_fail git rev-parse :1:file.txt 2>error && 131 test_did_you_mean ":0" "" file.txt "is in the index" "at stage 1" && 132 (cd subdir && ··· 137 test_must_fail git rev-parse :2:file2.txt 2>error && 138 test_did_you_mean :0 subdir/ file2.txt "is in the index") && 139 test_must_fail git rev-parse :disk-only.txt 2>error && 140 - test_i18ngrep "path .disk-only.txt. exists on disk, but not in the index" error 141 ' 142 143 test_expect_success 'invalid @{n} reference' ' 144 test_must_fail git rev-parse main@{99999} >output 2>error && 145 test_must_be_empty output && 146 - test_i18ngrep "log for [^ ]* only has [0-9][0-9]* entries" error && 147 test_must_fail git rev-parse --verify main@{99999} >output 2>error && 148 test_must_be_empty output && 149 - test_i18ngrep "log for [^ ]* only has [0-9][0-9]* entries" error 150 ' 151 152 test_expect_success 'relative path not found' ' 153 ( 154 cd subdir && 155 test_must_fail git rev-parse HEAD:./nonexistent.txt 2>error && 156 - test_i18ngrep subdir/nonexistent.txt error 157 ) 158 ' 159 160 test_expect_success 'relative path outside worktree' ' 161 test_must_fail git rev-parse HEAD:../file.txt >output 2>error && 162 test_must_be_empty output && 163 - test_i18ngrep "outside repository" error 164 ' 165 166 test_expect_success 'relative path when cwd is outside worktree' ' 167 test_must_fail git --git-dir=.git --work-tree=subdir rev-parse HEAD:./file.txt >output 2>error && 168 test_must_be_empty output && 169 - test_i18ngrep "relative path syntax can.t be used outside working tree" error 170 ' 171 172 test_expect_success '<commit>:file correctly diagnosed after a pathname' ' 173 test_must_fail git rev-parse file.txt HEAD:file.txt 1>actual 2>error && 174 - test_i18ngrep ! "exists on disk" error && 175 - test_i18ngrep "no such path in the working tree" error && 176 cat >expect <<-\EOF && 177 file.txt 178 HEAD:file.txt ··· 214 215 test_expect_success 'arg before dashdash must be a revision (missing)' ' 216 test_must_fail git rev-parse foobar -- 2>stderr && 217 - test_i18ngrep "bad revision" stderr 218 ' 219 220 test_expect_success 'arg before dashdash must be a revision (file)' ' 221 >foobar && 222 test_must_fail git rev-parse foobar -- 2>stderr && 223 - test_i18ngrep "bad revision" stderr 224 ' 225 226 test_expect_success 'arg before dashdash must be a revision (ambiguous)' ' ··· 269 270 test_expect_success 'arg after end-of-options not interpreted as option' ' 271 test_must_fail git rev-parse --end-of-options --not-real -- 2>err && 272 - test_i18ngrep bad.revision.*--not-real err 273 ' 274 275 test_expect_success 'end-of-options still allows --' '
··· 107 108 test_expect_success 'incorrect revision id' ' 109 test_must_fail git rev-parse foobar:file.txt 2>error && 110 + test_grep "invalid object name .foobar." error && 111 test_must_fail git rev-parse foobar 2>error && 112 + test_grep "unknown revision or path not in the working tree." error 113 ' 114 115 test_expect_success 'incorrect file in sha1:path' ' 116 test_must_fail git rev-parse HEAD:nothing.txt 2>error && 117 + test_grep "path .nothing.txt. does not exist in .HEAD." error && 118 test_must_fail git rev-parse HEAD:index-only.txt 2>error && 119 + test_grep "path .index-only.txt. exists on disk, but not in .HEAD." error && 120 (cd subdir && 121 test_must_fail git rev-parse HEAD:file2.txt 2>error && 122 test_did_you_mean HEAD subdir/ file2.txt exists ) ··· 124 125 test_expect_success 'incorrect file in :path and :N:path' ' 126 test_must_fail git rev-parse :nothing.txt 2>error && 127 + test_grep "path .nothing.txt. does not exist (neither on disk nor in the index)" error && 128 test_must_fail git rev-parse :1:nothing.txt 2>error && 129 + test_grep "path .nothing.txt. does not exist (neither on disk nor in the index)" error && 130 test_must_fail git rev-parse :1:file.txt 2>error && 131 test_did_you_mean ":0" "" file.txt "is in the index" "at stage 1" && 132 (cd subdir && ··· 137 test_must_fail git rev-parse :2:file2.txt 2>error && 138 test_did_you_mean :0 subdir/ file2.txt "is in the index") && 139 test_must_fail git rev-parse :disk-only.txt 2>error && 140 + test_grep "path .disk-only.txt. exists on disk, but not in the index" error 141 ' 142 143 test_expect_success 'invalid @{n} reference' ' 144 test_must_fail git rev-parse main@{99999} >output 2>error && 145 test_must_be_empty output && 146 + test_grep "log for [^ ]* only has [0-9][0-9]* entries" error && 147 test_must_fail git rev-parse --verify main@{99999} >output 2>error && 148 test_must_be_empty output && 149 + test_grep "log for [^ ]* only has [0-9][0-9]* entries" error 150 ' 151 152 test_expect_success 'relative path not found' ' 153 ( 154 cd subdir && 155 test_must_fail git rev-parse HEAD:./nonexistent.txt 2>error && 156 + test_grep subdir/nonexistent.txt error 157 ) 158 ' 159 160 test_expect_success 'relative path outside worktree' ' 161 test_must_fail git rev-parse HEAD:../file.txt >output 2>error && 162 test_must_be_empty output && 163 + test_grep "outside repository" error 164 ' 165 166 test_expect_success 'relative path when cwd is outside worktree' ' 167 test_must_fail git --git-dir=.git --work-tree=subdir rev-parse HEAD:./file.txt >output 2>error && 168 test_must_be_empty output && 169 + test_grep "relative path syntax can.t be used outside working tree" error 170 ' 171 172 test_expect_success '<commit>:file correctly diagnosed after a pathname' ' 173 test_must_fail git rev-parse file.txt HEAD:file.txt 1>actual 2>error && 174 + test_grep ! "exists on disk" error && 175 + test_grep "no such path in the working tree" error && 176 cat >expect <<-\EOF && 177 file.txt 178 HEAD:file.txt ··· 214 215 test_expect_success 'arg before dashdash must be a revision (missing)' ' 216 test_must_fail git rev-parse foobar -- 2>stderr && 217 + test_grep "bad revision" stderr 218 ' 219 220 test_expect_success 'arg before dashdash must be a revision (file)' ' 221 >foobar && 222 test_must_fail git rev-parse foobar -- 2>stderr && 223 + test_grep "bad revision" stderr 224 ' 225 226 test_expect_success 'arg before dashdash must be a revision (ambiguous)' ' ··· 269 270 test_expect_success 'arg after end-of-options not interpreted as option' ' 271 test_must_fail git rev-parse --end-of-options --not-real -- 2>err && 272 + test_grep bad.revision.*--not-real err 273 ' 274 275 test_expect_success 'end-of-options still allows --' '
+3 -3
t/t1512-rev-parse-disambiguation.sh
··· 129 130 test_expect_success 'warn ambiguity when no candidate matches type hint' ' 131 test_must_fail git rev-parse --verify 000000000^{commit} 2>actual && 132 - test_i18ngrep "short object ID 000000000 is ambiguous" actual 133 ' 134 135 test_expect_success 'disambiguate tree-ish' ' ··· 470 echo "0000 ambiguous" >expect && 471 echo 0000 | git cat-file --batch-check >actual 2>err && 472 test_cmp expect actual && 473 - test_i18ngrep hint: err && 474 echo 0000 | git cat-file --batch >actual 2>err && 475 test_cmp expect actual && 476 - test_i18ngrep hint: err 477 ' 478 479 test_done
··· 129 130 test_expect_success 'warn ambiguity when no candidate matches type hint' ' 131 test_must_fail git rev-parse --verify 000000000^{commit} 2>actual && 132 + test_grep "short object ID 000000000 is ambiguous" actual 133 ' 134 135 test_expect_success 'disambiguate tree-ish' ' ··· 470 echo "0000 ambiguous" >expect && 471 echo 0000 | git cat-file --batch-check >actual 2>err && 472 test_cmp expect actual && 473 + test_grep hint: err && 474 echo 0000 | git cat-file --batch >actual 2>err && 475 test_cmp expect actual && 476 + test_grep hint: err 477 ' 478 479 test_done
+1 -1
t/t2004-checkout-cache-temp.sh
··· 93 rm -f path* .merge_* actual && 94 test_must_fail git checkout-index --stage=all --temp \ 95 -- does-not-exist 2>stderr && 96 - test_i18ngrep not.in.the.cache stderr 97 ' 98 99 test_expect_success 'checkout all stages/one file to nothing' '
··· 93 rm -f path* .merge_* actual && 94 test_must_fail git checkout-index --stage=all --temp \ 95 -- does-not-exist 2>stderr && 96 + test_grep not.in.the.cache stderr 97 ' 98 99 test_expect_success 'checkout all stages/one file to nothing' '
+7 -7
t/t2006-checkout-index-basic.sh
··· 8 9 test_expect_success 'checkout-index --gobbledegook' ' 10 test_expect_code 129 git checkout-index --gobbledegook 2>err && 11 - test_i18ngrep "[Uu]sage" err 12 ' 13 14 test_expect_success 'checkout-index -h in broken repository' ' ··· 19 >.git/index && 20 test_expect_code 129 git checkout-index -h >usage 2>&1 21 ) && 22 - test_i18ngrep "[Uu]sage" broken/usage 23 ' 24 25 test_expect_success 'checkout-index reports errors (cmdline)' ' 26 test_must_fail git checkout-index -- does-not-exist 2>stderr && 27 - test_i18ngrep not.in.the.cache stderr 28 ' 29 30 test_expect_success 'checkout-index reports errors (stdin)' ' 31 echo does-not-exist | 32 test_must_fail git checkout-index --stdin 2>stderr && 33 - test_i18ngrep not.in.the.cache stderr 34 ' 35 for mode in 'case' 'utf-8' 36 do ··· 88 git update-index --index-info <objs && 89 90 test_must_fail git checkout-index --temp symlink file 2>stderr && 91 - test_i18ngrep "unable to read sha1 file of file ($missing_blob)" stderr && 92 - test_i18ngrep "unable to read sha1 file of symlink ($missing_blob)" stderr 93 ' 94 95 test_expect_success 'checkout-index --temp correctly reports error for submodules' ' ··· 98 git submodule add ./sub && 99 git commit -m sub && 100 test_must_fail git checkout-index --temp sub 2>stderr && 101 - test_i18ngrep "cannot create temporary submodule sub" stderr 102 ' 103 104 test_done
··· 8 9 test_expect_success 'checkout-index --gobbledegook' ' 10 test_expect_code 129 git checkout-index --gobbledegook 2>err && 11 + test_grep "[Uu]sage" err 12 ' 13 14 test_expect_success 'checkout-index -h in broken repository' ' ··· 19 >.git/index && 20 test_expect_code 129 git checkout-index -h >usage 2>&1 21 ) && 22 + test_grep "[Uu]sage" broken/usage 23 ' 24 25 test_expect_success 'checkout-index reports errors (cmdline)' ' 26 test_must_fail git checkout-index -- does-not-exist 2>stderr && 27 + test_grep not.in.the.cache stderr 28 ' 29 30 test_expect_success 'checkout-index reports errors (stdin)' ' 31 echo does-not-exist | 32 test_must_fail git checkout-index --stdin 2>stderr && 33 + test_grep not.in.the.cache stderr 34 ' 35 for mode in 'case' 'utf-8' 36 do ··· 88 git update-index --index-info <objs && 89 90 test_must_fail git checkout-index --temp symlink file 2>stderr && 91 + test_grep "unable to read sha1 file of file ($missing_blob)" stderr && 92 + test_grep "unable to read sha1 file of symlink ($missing_blob)" stderr 93 ' 94 95 test_expect_success 'checkout-index --temp correctly reports error for submodules' ' ··· 98 git submodule add ./sub && 99 git commit -m sub && 100 test_must_fail git checkout-index --temp sub 2>stderr && 101 + test_grep "cannot create temporary submodule sub" stderr 102 ' 103 104 test_done
+2 -2
t/t2010-checkout-ambiguous.sh
··· 62 63 test_expect_success 'accurate error message with more than one ref' ' 64 test_must_fail git checkout HEAD main -- 2>actual && 65 - test_i18ngrep 2 actual && 66 - test_i18ngrep "one reference expected, 2 given" actual 67 ' 68 69 test_done
··· 62 63 test_expect_success 'accurate error message with more than one ref' ' 64 test_must_fail git checkout HEAD main -- 2>actual && 65 + test_grep 2 actual && 66 + test_grep "one reference expected, 2 given" actual 67 ' 68 69 test_done
+2 -2
t/t2018-checkout-branch.sh
··· 278 279 test_expect_success 'checkout -b rejects an invalid start point' ' 280 test_must_fail git checkout -b branch4 file1 2>err && 281 - test_i18ngrep "is not a commit" err 282 ' 283 284 test_expect_success 'checkout -b rejects an extra path argument' ' 285 test_must_fail git checkout -b branch5 branch1 file1 2>err && 286 - test_i18ngrep "Cannot update paths and switch to branch" err 287 ' 288 289 test_done
··· 278 279 test_expect_success 'checkout -b rejects an invalid start point' ' 280 test_must_fail git checkout -b branch4 file1 2>err && 281 + test_grep "is not a commit" err 282 ' 283 284 test_expect_success 'checkout -b rejects an extra path argument' ' 285 test_must_fail git checkout -b branch5 branch1 file1 2>err && 286 + test_grep "Cannot update paths and switch to branch" err 287 ' 288 289 test_done
+4 -4
t/t2019-checkout-ambiguous-ref.sh
··· 32 ' 33 34 test_expect_success 'checkout reports switch to branch' ' 35 - test_i18ngrep "Switched to branch" stderr && 36 - test_i18ngrep ! "^HEAD is now at" stderr 37 ' 38 39 test_expect_success 'checkout vague ref succeeds' ' ··· 54 ' 55 56 test_expect_success VAGUENESS_SUCCESS 'checkout reports switch to branch' ' 57 - test_i18ngrep "Switched to branch" stderr && 58 - test_i18ngrep ! "^HEAD is now at" stderr 59 ' 60 61 test_done
··· 32 ' 33 34 test_expect_success 'checkout reports switch to branch' ' 35 + test_grep "Switched to branch" stderr && 36 + test_grep ! "^HEAD is now at" stderr 37 ' 38 39 test_expect_success 'checkout vague ref succeeds' ' ··· 54 ' 55 56 test_expect_success VAGUENESS_SUCCESS 'checkout reports switch to branch' ' 57 + test_grep "Switched to branch" stderr && 58 + test_grep ! "^HEAD is now at" stderr 59 ' 60 61 test_done
+4 -4
t/t2020-checkout-detach.sh
··· 17 18 PREV_HEAD_DESC='Previous HEAD position was' 19 check_orphan_warning() { 20 - test_i18ngrep "you are leaving $2 behind" "$1" && 21 - test_i18ngrep ! "$PREV_HEAD_DESC" "$1" 22 } 23 check_no_orphan_warning() { 24 - test_i18ngrep ! "you are leaving .* commit.*behind" "$1" && 25 - test_i18ngrep "$PREV_HEAD_DESC" "$1" 26 } 27 28 reset () {
··· 17 18 PREV_HEAD_DESC='Previous HEAD position was' 19 check_orphan_warning() { 20 + test_grep "you are leaving $2 behind" "$1" && 21 + test_grep ! "$PREV_HEAD_DESC" "$1" 22 } 23 check_no_orphan_warning() { 24 + test_grep ! "you are leaving .* commit.*behind" "$1" && 25 + test_grep "$PREV_HEAD_DESC" "$1" 26 } 27 28 reset () {
+4 -4
t/t2024-checkout-dwim.sh
··· 93 94 test_must_fail git checkout ambiguous_branch_and_file 2>err && 95 96 - test_i18ngrep "matched multiple (2) remote tracking branches" err && 97 98 # file must not be altered 99 test_cmp expect ambiguous_branch_and_file ··· 105 test_must_fail git checkout foo 2>stderr && 106 test_branch main && 107 status_uno_is_clean && 108 - test_i18ngrep "^hint: " stderr && 109 test_must_fail git -c advice.checkoutAmbiguousRemoteBranchName=false \ 110 checkout foo 2>stderr && 111 test_branch main && 112 status_uno_is_clean && 113 - test_i18ngrep ! "^hint: " stderr 114 ' 115 116 test_expect_success PERL 'checkout -p with multiple remotes does not print advice' ' ··· 118 test_might_fail git branch -D foo && 119 120 git checkout -p foo 2>stderr && 121 - test_i18ngrep ! "^hint: " stderr && 122 status_uno_is_clean 123 ' 124
··· 93 94 test_must_fail git checkout ambiguous_branch_and_file 2>err && 95 96 + test_grep "matched multiple (2) remote tracking branches" err && 97 98 # file must not be altered 99 test_cmp expect ambiguous_branch_and_file ··· 105 test_must_fail git checkout foo 2>stderr && 106 test_branch main && 107 status_uno_is_clean && 108 + test_grep "^hint: " stderr && 109 test_must_fail git -c advice.checkoutAmbiguousRemoteBranchName=false \ 110 checkout foo 2>stderr && 111 test_branch main && 112 status_uno_is_clean && 113 + test_grep ! "^hint: " stderr 114 ' 115 116 test_expect_success PERL 'checkout -p with multiple remotes does not print advice' ' ··· 118 test_might_fail git branch -D foo && 119 120 git checkout -p foo 2>stderr && 121 + test_grep ! "^hint: " stderr && 122 status_uno_is_clean 123 ' 124
+1 -1
t/t2025-checkout-no-overlay.sh
··· 26 27 test_expect_success 'checkout -p --overlay is disallowed' ' 28 test_must_fail git checkout -p --overlay HEAD 2>actual && 29 - test_i18ngrep "fatal: options .-p. and .--overlay. cannot be used together" actual 30 ' 31 32 test_expect_success '--no-overlay --theirs with D/F conflict deletes file' '
··· 26 27 test_expect_success 'checkout -p --overlay is disallowed' ' 28 test_must_fail git checkout -p --overlay HEAD 2>actual && 29 + test_grep "fatal: options .-p. and .--overlay. cannot be used together" actual 30 ' 31 32 test_expect_success '--no-overlay --theirs with D/F conflict deletes file' '
+4 -4
t/t2026-checkout-pathspec-file.sh
··· 149 echo fileA.t >list && 150 151 test_must_fail git checkout --pathspec-from-file=list --detach 2>err && 152 - test_i18ngrep -e "options .--pathspec-from-file. and .--detach. cannot be used together" err && 153 154 test_must_fail git checkout --pathspec-from-file=list --patch 2>err && 155 - test_i18ngrep -e "options .--pathspec-from-file. and .--patch. cannot be used together" err && 156 157 test_must_fail git checkout --pathspec-from-file=list -- fileA.t 2>err && 158 - test_i18ngrep -e ".--pathspec-from-file. and pathspec arguments cannot be used together" err && 159 160 test_must_fail git checkout --pathspec-file-nul 2>err && 161 - test_i18ngrep -e "the option .--pathspec-file-nul. requires .--pathspec-from-file." err 162 ' 163 164 test_done
··· 149 echo fileA.t >list && 150 151 test_must_fail git checkout --pathspec-from-file=list --detach 2>err && 152 + test_grep -e "options .--pathspec-from-file. and .--detach. cannot be used together" err && 153 154 test_must_fail git checkout --pathspec-from-file=list --patch 2>err && 155 + test_grep -e "options .--pathspec-from-file. and .--patch. cannot be used together" err && 156 157 test_must_fail git checkout --pathspec-from-file=list -- fileA.t 2>err && 158 + test_grep -e ".--pathspec-from-file. and pathspec arguments cannot be used together" err && 159 160 test_must_fail git checkout --pathspec-file-nul 2>err && 161 + test_grep -e "the option .--pathspec-file-nul. requires .--pathspec-from-file." err 162 ' 163 164 test_done
+1 -1
t/t2027-checkout-track.sh
··· 22 23 test_expect_success 'checkout --track -b rejects an extra path argument' ' 24 test_must_fail git checkout --track -b branch2 main one.t 2>err && 25 - test_i18ngrep "cannot be used with updating paths" err 26 ' 27 28 test_expect_success 'checkout --track -b overrides autoSetupMerge=inherit' '
··· 22 23 test_expect_success 'checkout --track -b rejects an extra path argument' ' 24 test_must_fail git checkout --track -b branch2 main one.t 2>err && 25 + test_grep "cannot be used with updating paths" err 26 ' 27 28 test_expect_success 'checkout --track -b overrides autoSetupMerge=inherit' '
+1 -1
t/t2030-unresolve-info.sh
··· 191 git commit -m "add differently" && 192 test_must_fail git merge fifth && 193 git rerere forget add-differently 2>actual && 194 - test_i18ngrep "no remembered" actual 195 ' 196 197 test_expect_success 'resolve-undo keeps blobs from gc' '
··· 191 git commit -m "add differently" && 192 test_must_fail git merge fifth && 193 git rerere forget add-differently 2>actual && 194 + test_grep "no remembered" actual 195 ' 196 197 test_expect_success 'resolve-undo keeps blobs from gc' '
+4 -4
t/t2072-restore-pathspec-file.sh
··· 152 >empty_list && 153 154 test_must_fail git restore --pathspec-from-file=list --patch --source=HEAD^1 2>err && 155 - test_i18ngrep -e "options .--pathspec-from-file. and .--patch. cannot be used together" err && 156 157 test_must_fail git restore --pathspec-from-file=list --source=HEAD^1 -- fileA.t 2>err && 158 - test_i18ngrep -e ".--pathspec-from-file. and pathspec arguments cannot be used together" err && 159 160 test_must_fail git restore --pathspec-file-nul --source=HEAD^1 2>err && 161 - test_i18ngrep -e "the option .--pathspec-file-nul. requires .--pathspec-from-file." err && 162 163 test_must_fail git restore --pathspec-from-file=empty_list --source=HEAD^1 2>err && 164 - test_i18ngrep -e "you must specify path(s) to restore" err 165 ' 166 167 test_expect_success 'wildcard pathspec matches file in subdirectory' '
··· 152 >empty_list && 153 154 test_must_fail git restore --pathspec-from-file=list --patch --source=HEAD^1 2>err && 155 + test_grep -e "options .--pathspec-from-file. and .--patch. cannot be used together" err && 156 157 test_must_fail git restore --pathspec-from-file=list --source=HEAD^1 -- fileA.t 2>err && 158 + test_grep -e ".--pathspec-from-file. and pathspec arguments cannot be used together" err && 159 160 test_must_fail git restore --pathspec-file-nul --source=HEAD^1 2>err && 161 + test_grep -e "the option .--pathspec-file-nul. requires .--pathspec-from-file." err && 162 163 test_must_fail git restore --pathspec-from-file=empty_list --source=HEAD^1 2>err && 164 + test_grep -e "you must specify path(s) to restore" err 165 ' 166 167 test_expect_success 'wildcard pathspec matches file in subdirectory' '
+1 -1
t/t2106-update-index-assume-unchanged.sh
··· 22 echo dirt >file && 23 git update-index --assume-unchanged file && 24 test_must_fail git checkout - 2>err && 25 - test_i18ngrep overwritten err 26 ' 27 28 test_done
··· 22 echo dirt >file && 23 git update-index --assume-unchanged file && 24 test_must_fail git checkout - 2>err && 25 + test_grep overwritten err 26 ' 27 28 test_done
+2 -2
t/t2107-update-index-basic.sh
··· 14 15 test_expect_success 'update-index --nonsense dumps usage' ' 16 test_expect_code 129 git update-index --nonsense 2>err && 17 - test_i18ngrep "[Uu]sage: git update-index" err 18 ' 19 20 test_expect_success 'update-index -h with corrupt index' ' ··· 25 >.git/index && 26 test_expect_code 129 git update-index -h >usage 2>&1 27 ) && 28 - test_i18ngrep "[Uu]sage: git update-index" broken/usage 29 ' 30 31 test_expect_success '--cacheinfo complains of missing arguments' '
··· 14 15 test_expect_success 'update-index --nonsense dumps usage' ' 16 test_expect_code 129 git update-index --nonsense 2>err && 17 + test_grep "[Uu]sage: git update-index" err 18 ' 19 20 test_expect_success 'update-index -h with corrupt index' ' ··· 25 >.git/index && 26 test_expect_code 129 git update-index -h >usage 2>&1 27 ) && 28 + test_grep "[Uu]sage: git update-index" broken/usage 29 ' 30 31 test_expect_success '--cacheinfo complains of missing arguments' '
+3 -3
t/t2203-add-intent.sh
··· 173 git add -N third && 174 175 git status | grep -v "^?" >actual.1 && 176 - test_i18ngrep "renamed: *first -> third" actual.1 && 177 178 git status --porcelain | grep -v "^?" >actual.2 && 179 cat >expected.2 <<-\EOF && ··· 213 git add -N third && 214 215 git status | grep -v "^?" >actual.1 && 216 - test_i18ngrep "renamed: *first -> second" actual.1 && 217 - test_i18ngrep "renamed: *second -> third" actual.1 && 218 219 git status --porcelain | grep -v "^?" >actual.2 && 220 cat >expected.2 <<-\EOF &&
··· 173 git add -N third && 174 175 git status | grep -v "^?" >actual.1 && 176 + test_grep "renamed: *first -> third" actual.1 && 177 178 git status --porcelain | grep -v "^?" >actual.2 && 179 cat >expected.2 <<-\EOF && ··· 213 git add -N third && 214 215 git status | grep -v "^?" >actual.1 && 216 + test_grep "renamed: *first -> second" actual.1 && 217 + test_grep "renamed: *second -> third" actual.1 && 218 219 git status --porcelain | grep -v "^?" >actual.2 && 220 cat >expected.2 <<-\EOF &&
+4 -4
t/t2204-add-ignored.sh
··· 36 ' 37 38 test_expect_success "complaints for ignored $i output" ' 39 - test_i18ngrep -e "Use -f if" err 40 ' 41 42 test_expect_success "complaints for ignored $i with unignored file" ' ··· 46 test_must_be_empty out 47 ' 48 test_expect_success "complaints for ignored $i with unignored file output" ' 49 - test_i18ngrep -e "Use -f if" err 50 ' 51 done 52 ··· 65 test_expect_success "complaints for ignored $i in dir output" ' 66 ( 67 cd dir && 68 - test_i18ngrep -e "Use -f if" err 69 ) 70 ' 71 done ··· 85 test_expect_success "complaints for ignored $i in sub output" ' 86 ( 87 cd sub && 88 - test_i18ngrep -e "Use -f if" err 89 ) 90 ' 91 done
··· 36 ' 37 38 test_expect_success "complaints for ignored $i output" ' 39 + test_grep -e "Use -f if" err 40 ' 41 42 test_expect_success "complaints for ignored $i with unignored file" ' ··· 46 test_must_be_empty out 47 ' 48 test_expect_success "complaints for ignored $i with unignored file output" ' 49 + test_grep -e "Use -f if" err 50 ' 51 done 52 ··· 65 test_expect_success "complaints for ignored $i in dir output" ' 66 ( 67 cd dir && 68 + test_grep -e "Use -f if" err 69 ) 70 ' 71 done ··· 85 test_expect_success "complaints for ignored $i in sub output" ' 86 ( 87 cd sub && 88 + test_grep -e "Use -f if" err 89 ) 90 ' 91 done
+5 -5
t/t2401-worktree-prune.sh
··· 47 : >.git/worktrees/def/gitdir && 48 chmod u-r .git/worktrees/def/gitdir && 49 git worktree prune --verbose 2>actual && 50 - test_i18ngrep "Removing worktrees/def: unable to read gitdir file" actual && 51 ! test -d .git/worktrees/def && 52 ! test -d .git/worktrees 53 ' ··· 57 : >.git/worktrees/def/def && 58 : >.git/worktrees/def/gitdir && 59 git worktree prune --verbose 2>actual && 60 - test_i18ngrep "Removing worktrees/def: invalid gitdir file" actual && 61 ! test -d .git/worktrees/def && 62 ! test -d .git/worktrees 63 ' ··· 67 : >.git/worktrees/def/def && 68 echo "$(pwd)"/nowhere >.git/worktrees/def/gitdir && 69 git worktree prune --verbose 2>actual && 70 - test_i18ngrep "Removing worktrees/def: gitdir file points to non-existent location" actual && 71 ! test -d .git/worktrees/def && 72 ! test -d .git/worktrees 73 ' ··· 103 sed "s/w2/w1/" .git/worktrees/w2/gitdir >.git/worktrees/w2/gitdir.new && 104 mv .git/worktrees/w2/gitdir.new .git/worktrees/w2/gitdir && 105 git worktree prune --verbose 2>actual && 106 - test_i18ngrep "duplicate entry" actual && 107 test -d .git/worktrees/w1 && 108 ! test -d .git/worktrees/w2 109 ' ··· 116 rm -fr wt && 117 mv repo wt && 118 git -C wt worktree prune --verbose 2>actual && 119 - test_i18ngrep "duplicate entry" actual && 120 ! test -d .git/worktrees/wt 121 ' 122
··· 47 : >.git/worktrees/def/gitdir && 48 chmod u-r .git/worktrees/def/gitdir && 49 git worktree prune --verbose 2>actual && 50 + test_grep "Removing worktrees/def: unable to read gitdir file" actual && 51 ! test -d .git/worktrees/def && 52 ! test -d .git/worktrees 53 ' ··· 57 : >.git/worktrees/def/def && 58 : >.git/worktrees/def/gitdir && 59 git worktree prune --verbose 2>actual && 60 + test_grep "Removing worktrees/def: invalid gitdir file" actual && 61 ! test -d .git/worktrees/def && 62 ! test -d .git/worktrees 63 ' ··· 67 : >.git/worktrees/def/def && 68 echo "$(pwd)"/nowhere >.git/worktrees/def/gitdir && 69 git worktree prune --verbose 2>actual && 70 + test_grep "Removing worktrees/def: gitdir file points to non-existent location" actual && 71 ! test -d .git/worktrees/def && 72 ! test -d .git/worktrees 73 ' ··· 103 sed "s/w2/w1/" .git/worktrees/w2/gitdir >.git/worktrees/w2/gitdir.new && 104 mv .git/worktrees/w2/gitdir.new .git/worktrees/w2/gitdir && 105 git worktree prune --verbose 2>actual && 106 + test_grep "duplicate entry" actual && 107 test -d .git/worktrees/w1 && 108 ! test -d .git/worktrees/w2 109 ' ··· 116 rm -fr wt && 117 mv repo wt && 118 git -C wt worktree prune --verbose 2>actual && 119 + test_grep "duplicate entry" actual && 120 ! test -d .git/worktrees/wt 121 ' 122
+3 -3
t/t2402-worktree-list.sh
··· 143 rm -rf prunable && 144 git worktree list --porcelain >out && 145 sed -n "/^worktree .*\/prunable$/,/^$/p" <out >only_prunable && 146 - test_i18ngrep "^prunable gitdir file points to non-existent location$" only_prunable 147 ' 148 149 test_expect_success '"list" all worktrees with prunable consistent with "prune"' ' ··· 155 grep "/prunable *[0-9a-f].* prunable$" out && 156 ! grep "/unprunable *[0-9a-f].* unprunable$" out && 157 git worktree prune --verbose 2>out && 158 - test_i18ngrep "^Removing worktrees/prunable" out && 159 - test_i18ngrep ! "^Removing worktrees/unprunable" out 160 ' 161 162 test_expect_success '"list" --verbose and --porcelain mutually exclusive' '
··· 143 rm -rf prunable && 144 git worktree list --porcelain >out && 145 sed -n "/^worktree .*\/prunable$/,/^$/p" <out >only_prunable && 146 + test_grep "^prunable gitdir file points to non-existent location$" only_prunable 147 ' 148 149 test_expect_success '"list" all worktrees with prunable consistent with "prune"' ' ··· 155 grep "/prunable *[0-9a-f].* prunable$" out && 156 ! grep "/unprunable *[0-9a-f].* unprunable$" out && 157 git worktree prune --verbose 2>out && 158 + test_grep "^Removing worktrees/prunable" out && 159 + test_grep ! "^Removing worktrees/unprunable" out 160 ' 161 162 test_expect_success '"list" --verbose and --porcelain mutually exclusive' '
+1 -1
t/t2403-worktree-move.sh
··· 202 for i in noodle noodle/bork 203 do 204 test_must_fail git worktree lock $i 2>err && 205 - test_i18ngrep "not a working tree" err || return 1 206 done 207 ' 208
··· 202 for i in noodle noodle/bork 203 do 204 test_must_fail git worktree lock $i 2>err && 205 + test_grep "not a working tree" err || return 1 206 done 207 ' 208
+12 -12
t/t2406-worktree-repair.sh
··· 25 >notdir && 26 test_must_fail git worktree repair >out 2>err && 27 test_must_be_empty out && 28 - test_i18ngrep "not a directory" err 29 ' 30 31 test_expect_success "don't clobber .git repo" ' ··· 35 test_create_repo repo && 36 test_must_fail git worktree repair >out 2>err && 37 test_must_be_empty out && 38 - test_i18ngrep ".git is not a file" err 39 ' 40 41 test_corrupt_gitfile () { ··· 47 git -C corrupt rev-parse --absolute-git-dir >expect && 48 eval "$butcher" && 49 git -C "$repairdir" worktree repair 2>err && 50 - test_i18ngrep "$problem" err && 51 git -C corrupt rev-parse --absolute-git-dir >actual && 52 test_cmp expect actual 53 } ··· 93 test_expect_success 'invalid worktree path' ' 94 test_must_fail git worktree repair /notvalid >out 2>err && 95 test_must_be_empty out && 96 - test_i18ngrep "not a valid path" err 97 ' 98 99 test_expect_success 'repo not found; .git not file' ' ··· 101 test_create_repo not-a-worktree && 102 test_must_fail git worktree repair not-a-worktree >out 2>err && 103 test_must_be_empty out && 104 - test_i18ngrep ".git is not a file" err 105 ' 106 107 test_expect_success 'repo not found; .git not referencing repo' ' ··· 111 mv side/.newgit side/.git && 112 mkdir not-a-repo && 113 test_must_fail git worktree repair side 2>err && 114 - test_i18ngrep ".git file does not reference a repository" err 115 ' 116 117 test_expect_success 'repo not found; .git file broken' ' ··· 121 mv orig moved && 122 test_must_fail git worktree repair moved >out 2>err && 123 test_must_be_empty out && 124 - test_i18ngrep ".git file broken" err 125 ' 126 127 test_expect_success 'repair broken gitdir' ' ··· 132 mv orig moved && 133 git worktree repair moved 2>err && 134 test_cmp expect .git/worktrees/orig/gitdir && 135 - test_i18ngrep "gitdir unreadable" err 136 ' 137 138 test_expect_success 'repair incorrect gitdir' ' ··· 142 mv orig moved && 143 git worktree repair moved 2>err && 144 test_cmp expect .git/worktrees/orig/gitdir && 145 - test_i18ngrep "gitdir incorrect" err 146 ' 147 148 test_expect_success 'repair gitdir (implicit) from linked worktree' ' ··· 152 mv orig moved && 153 git -C moved worktree repair 2>err && 154 test_cmp expect .git/worktrees/orig/gitdir && 155 - test_i18ngrep "gitdir incorrect" err 156 ' 157 158 test_expect_success 'unable to repair gitdir (implicit) from main worktree' ' ··· 177 git worktree repair moved1 moved2 2>err && 178 test_cmp expect1 .git/worktrees/orig1/gitdir && 179 test_cmp expect2 .git/worktrees/orig2/gitdir && 180 - test_i18ngrep "gitdir incorrect:.*orig1/gitdir$" err && 181 - test_i18ngrep "gitdir incorrect:.*orig2/gitdir$" err 182 ' 183 184 test_expect_success 'repair moved main and linked worktrees' '
··· 25 >notdir && 26 test_must_fail git worktree repair >out 2>err && 27 test_must_be_empty out && 28 + test_grep "not a directory" err 29 ' 30 31 test_expect_success "don't clobber .git repo" ' ··· 35 test_create_repo repo && 36 test_must_fail git worktree repair >out 2>err && 37 test_must_be_empty out && 38 + test_grep ".git is not a file" err 39 ' 40 41 test_corrupt_gitfile () { ··· 47 git -C corrupt rev-parse --absolute-git-dir >expect && 48 eval "$butcher" && 49 git -C "$repairdir" worktree repair 2>err && 50 + test_grep "$problem" err && 51 git -C corrupt rev-parse --absolute-git-dir >actual && 52 test_cmp expect actual 53 } ··· 93 test_expect_success 'invalid worktree path' ' 94 test_must_fail git worktree repair /notvalid >out 2>err && 95 test_must_be_empty out && 96 + test_grep "not a valid path" err 97 ' 98 99 test_expect_success 'repo not found; .git not file' ' ··· 101 test_create_repo not-a-worktree && 102 test_must_fail git worktree repair not-a-worktree >out 2>err && 103 test_must_be_empty out && 104 + test_grep ".git is not a file" err 105 ' 106 107 test_expect_success 'repo not found; .git not referencing repo' ' ··· 111 mv side/.newgit side/.git && 112 mkdir not-a-repo && 113 test_must_fail git worktree repair side 2>err && 114 + test_grep ".git file does not reference a repository" err 115 ' 116 117 test_expect_success 'repo not found; .git file broken' ' ··· 121 mv orig moved && 122 test_must_fail git worktree repair moved >out 2>err && 123 test_must_be_empty out && 124 + test_grep ".git file broken" err 125 ' 126 127 test_expect_success 'repair broken gitdir' ' ··· 132 mv orig moved && 133 git worktree repair moved 2>err && 134 test_cmp expect .git/worktrees/orig/gitdir && 135 + test_grep "gitdir unreadable" err 136 ' 137 138 test_expect_success 'repair incorrect gitdir' ' ··· 142 mv orig moved && 143 git worktree repair moved 2>err && 144 test_cmp expect .git/worktrees/orig/gitdir && 145 + test_grep "gitdir incorrect" err 146 ' 147 148 test_expect_success 'repair gitdir (implicit) from linked worktree' ' ··· 152 mv orig moved && 153 git -C moved worktree repair 2>err && 154 test_cmp expect .git/worktrees/orig/gitdir && 155 + test_grep "gitdir incorrect" err 156 ' 157 158 test_expect_success 'unable to repair gitdir (implicit) from main worktree' ' ··· 177 git worktree repair moved1 moved2 2>err && 178 test_cmp expect1 .git/worktrees/orig1/gitdir && 179 test_cmp expect2 .git/worktrees/orig2/gitdir && 180 + test_grep "gitdir incorrect:.*orig1/gitdir$" err && 181 + test_grep "gitdir incorrect:.*orig2/gitdir$" err 182 ' 183 184 test_expect_success 'repair moved main and linked worktrees' '
+2 -2
t/t3004-ls-files-basic.sh
··· 21 22 test_expect_success 'ls-files with nonsense option' ' 23 test_expect_code 129 git ls-files --nonsense 2>actual && 24 - test_i18ngrep "[Uu]sage: git ls-files" actual 25 ' 26 27 test_expect_success 'ls-files -h in corrupt repository' ' ··· 32 >.git/index && 33 test_expect_code 129 git ls-files -h >usage 2>&1 34 ) && 35 - test_i18ngrep "[Uu]sage: git ls-files " broken/usage 36 ' 37 38 test_expect_success SYMLINKS 'ls-files with absolute paths to symlinks' '
··· 21 22 test_expect_success 'ls-files with nonsense option' ' 23 test_expect_code 129 git ls-files --nonsense 2>actual && 24 + test_grep "[Uu]sage: git ls-files" actual 25 ' 26 27 test_expect_success 'ls-files -h in corrupt repository' ' ··· 32 >.git/index && 33 test_expect_code 129 git ls-files -h >usage 2>&1 34 ) && 35 + test_grep "[Uu]sage: git ls-files " broken/usage 36 ' 37 38 test_expect_success SYMLINKS 'ls-files with absolute paths to symlinks' '
+2 -2
t/t3007-ls-files-recurse-submodules.sh
··· 296 297 test_expect_success '--recurse-submodules does not support --error-unmatch' ' 298 test_must_fail git ls-files --recurse-submodules --error-unmatch 2>actual && 299 - test_i18ngrep "does not support --error-unmatch" actual 300 ' 301 302 test_expect_success '--recurse-submodules parses submodule repo config' ' ··· 335 test_incompatible_with_recurse_submodules () { 336 test_expect_success "--recurse-submodules and $1 are incompatible" " 337 test_must_fail git ls-files --recurse-submodules $1 2>actual && 338 - test_i18ngrep 'unsupported mode' actual 339 " 340 } 341
··· 296 297 test_expect_success '--recurse-submodules does not support --error-unmatch' ' 298 test_must_fail git ls-files --recurse-submodules --error-unmatch 2>actual && 299 + test_grep "does not support --error-unmatch" actual 300 ' 301 302 test_expect_success '--recurse-submodules parses submodule repo config' ' ··· 335 test_incompatible_with_recurse_submodules () { 336 test_expect_success "--recurse-submodules and $1 are incompatible" " 337 test_must_fail git ls-files --recurse-submodules $1 2>actual && 338 + test_grep 'unsupported mode' actual 339 " 340 } 341
+9 -9
t/t3200-branch.sh
··· 36 >.git/refs/heads/main && 37 test_expect_code 129 git branch -h >usage 2>&1 38 ) && 39 - test_i18ngrep "[Uu]sage" broken/usage 40 ' 41 42 test_expect_success 'git branch abc should create a branch' ' ··· 103 104 test_expect_success 'git branch -m dumps usage' ' 105 test_expect_code 128 git branch -m 2>err && 106 - test_i18ngrep "branch name required" err 107 ' 108 109 test_expect_success 'git branch -m m broken_symref should work' ' ··· 581 582 test_expect_success 'git branch -c dumps usage' ' 583 test_expect_code 128 git branch -c 2>err && 584 - test_i18ngrep "branch name required" err 585 ' 586 587 test_expect_success 'git branch --copy dumps usage' ' 588 test_expect_code 128 git branch --copy 2>err && 589 - test_i18ngrep "branch name required" err 590 ' 591 592 test_expect_success 'git branch -c d e should work' ' ··· 1025 1026 test_expect_success '--set-upstream-to fails on a missing src branch' ' 1027 test_must_fail git branch --set-upstream-to does-not-exist main 2>err && 1028 - test_i18ngrep "the requested upstream branch '"'"'does-not-exist'"'"' does not exist" err 1029 ' 1030 1031 test_expect_success '--set-upstream-to fails on a non-ref' ' ··· 1039 >.git/config.lock && 1040 git branch locked && 1041 test_must_fail git branch --set-upstream-to locked 2>err && 1042 - test_i18ngrep "could not lock config file .git/config" err 1043 ' 1044 1045 test_expect_success 'use --set-upstream-to modify HEAD' ' ··· 1070 git branch --set-upstream-to locked && 1071 >.git/config.lock && 1072 test_must_fail git branch --unset-upstream 2>err && 1073 - test_i18ngrep "could not lock config file .git/config" err 1074 ' 1075 1076 test_expect_success 'test --unset-upstream on HEAD' ' ··· 1506 set_fake_editor && 1507 git rebase -i HEAD~2 && 1508 git branch --list >actual && 1509 - test_i18ngrep "rebasing main" actual 1510 ' 1511 1512 test_expect_success '--list during rebase from detached HEAD' ' ··· 1518 set_fake_editor && 1519 git rebase -i HEAD~2 && 1520 git branch --list >actual && 1521 - test_i18ngrep "rebasing detached HEAD $oid" actual 1522 ' 1523 1524 test_expect_success 'tracking with unexpected .fetch refspec' '
··· 36 >.git/refs/heads/main && 37 test_expect_code 129 git branch -h >usage 2>&1 38 ) && 39 + test_grep "[Uu]sage" broken/usage 40 ' 41 42 test_expect_success 'git branch abc should create a branch' ' ··· 103 104 test_expect_success 'git branch -m dumps usage' ' 105 test_expect_code 128 git branch -m 2>err && 106 + test_grep "branch name required" err 107 ' 108 109 test_expect_success 'git branch -m m broken_symref should work' ' ··· 581 582 test_expect_success 'git branch -c dumps usage' ' 583 test_expect_code 128 git branch -c 2>err && 584 + test_grep "branch name required" err 585 ' 586 587 test_expect_success 'git branch --copy dumps usage' ' 588 test_expect_code 128 git branch --copy 2>err && 589 + test_grep "branch name required" err 590 ' 591 592 test_expect_success 'git branch -c d e should work' ' ··· 1025 1026 test_expect_success '--set-upstream-to fails on a missing src branch' ' 1027 test_must_fail git branch --set-upstream-to does-not-exist main 2>err && 1028 + test_grep "the requested upstream branch '"'"'does-not-exist'"'"' does not exist" err 1029 ' 1030 1031 test_expect_success '--set-upstream-to fails on a non-ref' ' ··· 1039 >.git/config.lock && 1040 git branch locked && 1041 test_must_fail git branch --set-upstream-to locked 2>err && 1042 + test_grep "could not lock config file .git/config" err 1043 ' 1044 1045 test_expect_success 'use --set-upstream-to modify HEAD' ' ··· 1070 git branch --set-upstream-to locked && 1071 >.git/config.lock && 1072 test_must_fail git branch --unset-upstream 2>err && 1073 + test_grep "could not lock config file .git/config" err 1074 ' 1075 1076 test_expect_success 'test --unset-upstream on HEAD' ' ··· 1506 set_fake_editor && 1507 git rebase -i HEAD~2 && 1508 git branch --list >actual && 1509 + test_grep "rebasing main" actual 1510 ' 1511 1512 test_expect_success '--list during rebase from detached HEAD' ' ··· 1518 set_fake_editor && 1519 git rebase -i HEAD~2 && 1520 git branch --list >actual && 1521 + test_grep "rebasing detached HEAD $oid" actual 1522 ' 1523 1524 test_expect_success 'tracking with unexpected .fetch refspec' '
+1 -1
t/t3202-show-branch.sh
··· 253 test_branch_op_in_wt() { 254 test_orphan_error() { 255 test_must_fail git $* 2>actual && 256 - test_i18ngrep "No commit on branch .orphan-branch. yet.$" actual 257 } && 258 test_orphan_error -C wt branch $1 $2 && # implicit branch 259 test_orphan_error -C wt branch $1 orphan-branch $2 && # explicit branch
··· 253 test_branch_op_in_wt() { 254 test_orphan_error() { 255 test_must_fail git $* 2>actual && 256 + test_grep "No commit on branch .orphan-branch. yet.$" actual 257 } && 258 test_orphan_error -C wt branch $1 $2 && # implicit branch 259 test_orphan_error -C wt branch $1 orphan-branch $2 && # explicit branch
+11 -11
t/t3206-range-diff.sh
··· 195 196 test_expect_success 'A^{/..} is not mistaken for a range' ' 197 test_must_fail git range-diff topic^.. topic^{/..} -- 2>error && 198 - test_i18ngrep "not a commit range" error 199 ' 200 201 test_expect_success 'trivial reordering' ' ··· 537 main..unmodified >actual && 538 test_when_finished "rm 000?-*" && 539 test_line_count = 5 actual && 540 - test_i18ngrep "^Range-diff:$" 0000-* && 541 grep "= 1: .* s/5/A" 0000-* && 542 grep "= 2: .* s/4/A" 0000-* && 543 grep "= 3: .* s/11/B" 0000-* && ··· 549 git format-patch --range-diff=HEAD~1 HEAD~1 >actual && 550 test_when_finished "rm 0001-*" && 551 test_line_count = 1 actual && 552 - test_i18ngrep "^Range-diff:$" 0001-* && 553 grep "> 1: .* new message" 0001-* 554 ' 555 ··· 557 git format-patch --range-diff=HEAD~1 -v2.9 HEAD~1 >actual && 558 test_when_finished "rm v2.9-0001-*" && 559 test_line_count = 1 actual && 560 - test_i18ngrep "^Range-diff:$" v2.9-0001-* && 561 grep "> 1: .* new message" v2.9-0001-* 562 ' 563 ··· 565 git format-patch --range-diff=HEAD~1 -v2 HEAD~1 >actual && 566 test_when_finished "rm v2-0001-*" && 567 test_line_count = 1 actual && 568 - test_i18ngrep "^Range-diff ..* v1:$" v2-0001-* && 569 grep "> 1: .* new message" v2-0001-* 570 ' 571 ··· 573 git format-patch --range-diff=HEAD~1 -v0 HEAD~1 >actual && 574 test_when_finished "rm v0-0001-*" && 575 test_line_count = 1 actual && 576 - test_i18ngrep "^Range-diff:$" v0-0001-* && 577 grep "> 1: .* new message" v0-0001-* 578 ' 579 ··· 670 main..unmodified >actual && 671 test_when_finished "rm 000?-*" && 672 test_line_count = 5 actual && 673 - test_i18ngrep "^Range-diff:$" 0000-* && 674 grep "= 1: .* s/5/A" 0000-* && 675 grep "= 2: .* s/4/A" 0000-* && 676 grep "= 3: .* s/11/B" 0000-* && ··· 687 main..unmodified >actual && 688 test_when_finished "rm 000?-*" && 689 test_line_count = 5 actual && 690 - test_i18ngrep "^Range-diff:$" 0000-* && 691 grep "= 1: .* s/5/A" 0000-* && 692 grep "= 2: .* s/4/A" 0000-* && 693 grep "= 3: .* s/11/B" 0000-* && ··· 704 main..unmodified >actual && 705 test_when_finished "rm 000?-*" && 706 test_line_count = 5 actual && 707 - test_i18ngrep "^Range-diff:$" 0000-* && 708 grep "= 1: .* s/5/A" 0000-* && 709 grep "= 2: .* s/4/A" 0000-* && 710 grep "= 3: .* s/11/B" 0000-* && ··· 733 main..unmodified >actual && 734 test_when_finished "rm 000?-*" && 735 test_line_count = 5 actual && 736 - test_i18ngrep "^Range-diff:$" 0000-* && 737 grep "= 1: .* s/5/A" 0000-* && 738 grep "= 2: .* s/4/A" 0000-* && 739 grep "= 3: .* s/11/B" 0000-* && ··· 764 main..unmodified >actual && 765 test_when_finished "rm 000?-*" && 766 test_line_count = 5 actual && 767 - test_i18ngrep "^Range-diff:$" 0000-* && 768 grep "= 1: .* s/5/A" 0000-* && 769 grep "= 2: .* s/4/A" 0000-* && 770 grep "= 3: .* s/11/B" 0000-* &&
··· 195 196 test_expect_success 'A^{/..} is not mistaken for a range' ' 197 test_must_fail git range-diff topic^.. topic^{/..} -- 2>error && 198 + test_grep "not a commit range" error 199 ' 200 201 test_expect_success 'trivial reordering' ' ··· 537 main..unmodified >actual && 538 test_when_finished "rm 000?-*" && 539 test_line_count = 5 actual && 540 + test_grep "^Range-diff:$" 0000-* && 541 grep "= 1: .* s/5/A" 0000-* && 542 grep "= 2: .* s/4/A" 0000-* && 543 grep "= 3: .* s/11/B" 0000-* && ··· 549 git format-patch --range-diff=HEAD~1 HEAD~1 >actual && 550 test_when_finished "rm 0001-*" && 551 test_line_count = 1 actual && 552 + test_grep "^Range-diff:$" 0001-* && 553 grep "> 1: .* new message" 0001-* 554 ' 555 ··· 557 git format-patch --range-diff=HEAD~1 -v2.9 HEAD~1 >actual && 558 test_when_finished "rm v2.9-0001-*" && 559 test_line_count = 1 actual && 560 + test_grep "^Range-diff:$" v2.9-0001-* && 561 grep "> 1: .* new message" v2.9-0001-* 562 ' 563 ··· 565 git format-patch --range-diff=HEAD~1 -v2 HEAD~1 >actual && 566 test_when_finished "rm v2-0001-*" && 567 test_line_count = 1 actual && 568 + test_grep "^Range-diff ..* v1:$" v2-0001-* && 569 grep "> 1: .* new message" v2-0001-* 570 ' 571 ··· 573 git format-patch --range-diff=HEAD~1 -v0 HEAD~1 >actual && 574 test_when_finished "rm v0-0001-*" && 575 test_line_count = 1 actual && 576 + test_grep "^Range-diff:$" v0-0001-* && 577 grep "> 1: .* new message" v0-0001-* 578 ' 579 ··· 670 main..unmodified >actual && 671 test_when_finished "rm 000?-*" && 672 test_line_count = 5 actual && 673 + test_grep "^Range-diff:$" 0000-* && 674 grep "= 1: .* s/5/A" 0000-* && 675 grep "= 2: .* s/4/A" 0000-* && 676 grep "= 3: .* s/11/B" 0000-* && ··· 687 main..unmodified >actual && 688 test_when_finished "rm 000?-*" && 689 test_line_count = 5 actual && 690 + test_grep "^Range-diff:$" 0000-* && 691 grep "= 1: .* s/5/A" 0000-* && 692 grep "= 2: .* s/4/A" 0000-* && 693 grep "= 3: .* s/11/B" 0000-* && ··· 704 main..unmodified >actual && 705 test_when_finished "rm 000?-*" && 706 test_line_count = 5 actual && 707 + test_grep "^Range-diff:$" 0000-* && 708 grep "= 1: .* s/5/A" 0000-* && 709 grep "= 2: .* s/4/A" 0000-* && 710 grep "= 3: .* s/11/B" 0000-* && ··· 733 main..unmodified >actual && 734 test_when_finished "rm 000?-*" && 735 test_line_count = 5 actual && 736 + test_grep "^Range-diff:$" 0000-* && 737 grep "= 1: .* s/5/A" 0000-* && 738 grep "= 2: .* s/4/A" 0000-* && 739 grep "= 3: .* s/11/B" 0000-* && ··· 764 main..unmodified >actual && 765 test_when_finished "rm 000?-*" && 766 test_line_count = 5 actual && 767 + test_grep "^Range-diff:$" 0000-* && 768 grep "= 1: .* s/5/A" 0000-* && 769 grep "= 2: .* s/4/A" 0000-* && 770 grep "= 3: .* s/11/B" 0000-* &&
+1 -1
t/t3210-pack-refs.sh
··· 227 228 test_expect_success 'existing directory reports concrete ref' ' 229 test_must_fail git branch foo 2>stderr && 230 - test_i18ngrep refs/heads/foo/bar/baz stderr 231 ' 232 233 test_expect_success 'notice d/f conflict with existing ref' '
··· 227 228 test_expect_success 'existing directory reports concrete ref' ' 229 test_must_fail git branch foo 2>stderr && 230 + test_grep refs/heads/foo/bar/baz stderr 231 ' 232 233 test_expect_success 'notice d/f conflict with existing ref' '
+2 -2
t/t3301-notes.sh
··· 1469 1470 test_expect_success 'git notes copy diagnoses too many or too few arguments' ' 1471 test_must_fail git notes copy 2>error && 1472 - test_i18ngrep "too few arguments" error && 1473 test_must_fail git notes copy one two three 2>error && 1474 - test_i18ngrep "too many arguments" error 1475 ' 1476 1477 test_expect_success 'git notes get-ref expands refs/heads/main to refs/notes/refs/heads/main' '
··· 1469 1470 test_expect_success 'git notes copy diagnoses too many or too few arguments' ' 1471 test_must_fail git notes copy 2>error && 1472 + test_grep "too few arguments" error && 1473 test_must_fail git notes copy one two three 2>error && 1474 + test_grep "too many arguments" error 1475 ' 1476 1477 test_expect_success 'git notes get-ref expands refs/heads/main to refs/notes/refs/heads/main' '
+8 -8
t/t3310-notes-merge-manual-resolve.sh
··· 216 git config core.notesRef refs/notes/m && 217 test_must_fail git notes merge z >output 2>&1 && 218 # Output should point to where to resolve conflicts 219 - test_i18ngrep "\\.git/NOTES_MERGE_WORKTREE" output && 220 # Inspect merge conflicts 221 ls .git/NOTES_MERGE_WORKTREE >output_conflicts && 222 test_cmp expect_conflicts output_conflicts && ··· 263 test -d .git/NOTES_MERGE_WORKTREE && 264 test_must_fail git notes merge z >output 2>&1 && 265 # Output should indicate what is wrong 266 - test_i18ngrep -q "\\.git/NOTES_MERGE_\\* exists" output 267 ' 268 269 # Setup non-conflicting merge between x and new notes ref w ··· 417 git config core.notesRef refs/notes/m && 418 test_must_fail git notes merge z >output 2>&1 && 419 # Output should point to where to resolve conflicts 420 - test_i18ngrep "\\.git/NOTES_MERGE_WORKTREE" output && 421 # Inspect merge conflicts 422 ls .git/NOTES_MERGE_WORKTREE >output_conflicts && 423 test_cmp expect_conflicts output_conflicts && ··· 449 test_expect_success 'redo merge of z into m (== y) with default ("manual") resolver => Conflicting 3-way merge' ' 450 test_must_fail git notes merge z >output 2>&1 && 451 # Output should point to where to resolve conflicts 452 - test_i18ngrep "\\.git/NOTES_MERGE_WORKTREE" output && 453 # Inspect merge conflicts 454 ls .git/NOTES_MERGE_WORKTREE >output_conflicts && 455 test_cmp expect_conflicts output_conflicts && ··· 528 git update-ref refs/notes/m refs/notes/y && 529 test_must_fail git notes merge z >output 2>&1 && 530 # Output should point to where to resolve conflicts 531 - test_i18ngrep "\\.git/NOTES_MERGE_WORKTREE" output && 532 # Inspect merge conflicts 533 ls .git/NOTES_MERGE_WORKTREE >output_conflicts && 534 test_cmp expect_conflicts output_conflicts && ··· 573 test "$(git rev-parse refs/notes/y)" = "$(git rev-parse NOTES_MERGE_PARTIAL^1)" && 574 test "$(git rev-parse refs/notes/m)" != "$(git rev-parse NOTES_MERGE_PARTIAL^1)" && 575 # Mention refs/notes/m, and its current and expected value in output 576 - test_i18ngrep -q "refs/notes/m" output && 577 - test_i18ngrep -q "$(git rev-parse refs/notes/m)" output && 578 - test_i18ngrep -q "$(git rev-parse NOTES_MERGE_PARTIAL^1)" output && 579 # Verify that other notes refs has not changed (w, x, y and z) 580 verify_notes w && 581 verify_notes x &&
··· 216 git config core.notesRef refs/notes/m && 217 test_must_fail git notes merge z >output 2>&1 && 218 # Output should point to where to resolve conflicts 219 + test_grep "\\.git/NOTES_MERGE_WORKTREE" output && 220 # Inspect merge conflicts 221 ls .git/NOTES_MERGE_WORKTREE >output_conflicts && 222 test_cmp expect_conflicts output_conflicts && ··· 263 test -d .git/NOTES_MERGE_WORKTREE && 264 test_must_fail git notes merge z >output 2>&1 && 265 # Output should indicate what is wrong 266 + test_grep -q "\\.git/NOTES_MERGE_\\* exists" output 267 ' 268 269 # Setup non-conflicting merge between x and new notes ref w ··· 417 git config core.notesRef refs/notes/m && 418 test_must_fail git notes merge z >output 2>&1 && 419 # Output should point to where to resolve conflicts 420 + test_grep "\\.git/NOTES_MERGE_WORKTREE" output && 421 # Inspect merge conflicts 422 ls .git/NOTES_MERGE_WORKTREE >output_conflicts && 423 test_cmp expect_conflicts output_conflicts && ··· 449 test_expect_success 'redo merge of z into m (== y) with default ("manual") resolver => Conflicting 3-way merge' ' 450 test_must_fail git notes merge z >output 2>&1 && 451 # Output should point to where to resolve conflicts 452 + test_grep "\\.git/NOTES_MERGE_WORKTREE" output && 453 # Inspect merge conflicts 454 ls .git/NOTES_MERGE_WORKTREE >output_conflicts && 455 test_cmp expect_conflicts output_conflicts && ··· 528 git update-ref refs/notes/m refs/notes/y && 529 test_must_fail git notes merge z >output 2>&1 && 530 # Output should point to where to resolve conflicts 531 + test_grep "\\.git/NOTES_MERGE_WORKTREE" output && 532 # Inspect merge conflicts 533 ls .git/NOTES_MERGE_WORKTREE >output_conflicts && 534 test_cmp expect_conflicts output_conflicts && ··· 573 test "$(git rev-parse refs/notes/y)" = "$(git rev-parse NOTES_MERGE_PARTIAL^1)" && 574 test "$(git rev-parse refs/notes/m)" != "$(git rev-parse NOTES_MERGE_PARTIAL^1)" && 575 # Mention refs/notes/m, and its current and expected value in output 576 + test_grep -q "refs/notes/m" output && 577 + test_grep -q "$(git rev-parse refs/notes/m)" output && 578 + test_grep -q "$(git rev-parse NOTES_MERGE_PARTIAL^1)" output && 579 # Verify that other notes refs has not changed (w, x, y and z) 580 verify_notes w && 581 verify_notes x &&
+2 -2
t/t3320-notes-merge-worktrees.sh
··· 57 cd worktree && 58 git config core.notesRef refs/notes/y && 59 test_must_fail git notes merge z 2>err && 60 - test_i18ngrep "a notes merge into refs/notes/y is already in-progress at" err 61 ) && 62 test_must_fail git -C worktree symbolic-ref NOTES_MERGE_REF 63 ' ··· 67 cd worktree2 && 68 git config core.notesRef refs/notes/x && 69 test_must_fail git notes merge z >out 2>&1 && 70 - test_i18ngrep "Automatic notes merge failed" out && 71 grep -v "A notes merge into refs/notes/x is already in-progress in" out 72 ) && 73 echo "refs/notes/x" >expect &&
··· 57 cd worktree && 58 git config core.notesRef refs/notes/y && 59 test_must_fail git notes merge z 2>err && 60 + test_grep "a notes merge into refs/notes/y is already in-progress at" err 61 ) && 62 test_must_fail git -C worktree symbolic-ref NOTES_MERGE_REF 63 ' ··· 67 cd worktree2 && 68 git config core.notesRef refs/notes/x && 69 test_must_fail git notes merge z >out 2>&1 && 70 + test_grep "Automatic notes merge failed" out && 71 grep -v "A notes merge into refs/notes/x is already in-progress in" out 72 ) && 73 echo "refs/notes/x" >expect &&
+1 -1
t/t3321-notes-stripspace.sh
··· 428 git notes add -m "${LF}" \ 429 -m "${MULTI_LF}" \ 430 -m "${LF}" >actual 2>&1 && 431 - test_i18ngrep "Removing note for object" actual 432 ' 433 434 test_expect_success 'add note by specifying "-C", "--no-stripspace" is the default behavior' '
··· 428 git notes add -m "${LF}" \ 429 -m "${MULTI_LF}" \ 430 -m "${LF}" >actual 2>&1 && 431 + test_grep "Removing note for object" actual 432 ' 433 434 test_expect_success 'add note by specifying "-C", "--no-stripspace" is the default behavior' '
+3 -3
t/t3400-rebase.sh
··· 143 >B && 144 test_when_finished "rm -f B" && 145 test_must_fail git rebase topic 2>output.err >output.out && 146 - test_i18ngrep "The following untracked working tree files would be overwritten by checkout:" output.err && 147 - test_i18ngrep B output.err 148 ' 149 150 test_expect_success 'fail when upstream arg is missing and not on branch' ' ··· 421 git checkout main && 422 git worktree add wt && 423 test_must_fail git -C wt rebase main main 2>err && 424 - test_i18ngrep "already checked out" err 425 ' 426 427 test_expect_success MINGW,SYMLINKS_WINDOWS 'rebase when .git/logs is a symlink' '
··· 143 >B && 144 test_when_finished "rm -f B" && 145 test_must_fail git rebase topic 2>output.err >output.out && 146 + test_grep "The following untracked working tree files would be overwritten by checkout:" output.err && 147 + test_grep B output.err 148 ' 149 150 test_expect_success 'fail when upstream arg is missing and not on branch' ' ··· 421 git checkout main && 422 git worktree add wt && 423 test_must_fail git -C wt rebase main main 2>err && 424 + test_grep "already checked out" err 425 ' 426 427 test_expect_success MINGW,SYMLINKS_WINDOWS 'rebase when .git/logs is a symlink' '
+1 -1
t/t3402-rebase-merge.sh
··· 171 172 # Regular rebase fails, because the 1-11 commit is deduplicated 173 test_must_fail git -C repo rebase --merge main 2> err && 174 - test_i18ngrep "error: could not apply.*add 12 in another branch" err && 175 git -C repo rebase --abort && 176 177 # With --reapply-cherry-picks, it works
··· 171 172 # Regular rebase fails, because the 1-11 commit is deduplicated 173 test_must_fail git -C repo rebase --merge main 2> err && 174 + test_grep "error: could not apply.*add 12 in another branch" err && 175 git -C repo rebase --abort && 176 177 # With --reapply-cherry-picks, it works
+15 -15
t/t3403-rebase-skip.sh
··· 108 test_when_finished "git rebase --abort" && 109 test_must_fail git rebase -i --onto goodbye \ 110 amended-goodbye^ amended-goodbye 2>err && 111 - test_i18ngrep "previous cherry-pick is now empty" err && 112 - test_i18ngrep "git rebase --skip" err && 113 test_must_fail git commit && 114 - test_i18ngrep "git rebase --skip" err 115 ' 116 117 test_expect_success 'correct authorship when committing empty pick' ' ··· 131 test_must_fail env FAKE_LINES="reword 1" git rebase -i \ 132 --onto goodbye amended-goodbye^ amended-goodbye 2>err 133 ) && 134 - test_i18ngrep "previous cherry-pick is now empty" err && 135 - test_i18ngrep "git rebase --skip" err && 136 test_must_fail git commit && 137 - test_i18ngrep "git rebase --skip" err 138 ' 139 140 test_expect_success 'correct advice upon editing empty commit' ' ··· 144 test_must_fail env FAKE_LINES="edit 1" git rebase -i \ 145 --onto goodbye amended-goodbye^ amended-goodbye 2>err 146 ) && 147 - test_i18ngrep "previous cherry-pick is now empty" err && 148 - test_i18ngrep "git rebase --skip" err && 149 test_must_fail git commit && 150 - test_i18ngrep "git rebase --skip" err 151 ' 152 153 test_expect_success 'correct advice upon cherry-picking an empty commit during a rebase' ' ··· 157 test_must_fail env FAKE_LINES="1 exec_git_cherry-pick_amended-goodbye" \ 158 git rebase -i goodbye^ goodbye 2>err 159 ) && 160 - test_i18ngrep "previous cherry-pick is now empty" err && 161 - test_i18ngrep "git cherry-pick --skip" err && 162 test_must_fail git commit 2>err && 163 - test_i18ngrep "git cherry-pick --skip" err 164 ' 165 166 test_expect_success 'correct advice upon multi cherry-pick picking an empty commit during a rebase' ' ··· 170 test_must_fail env FAKE_LINES="1 exec_git_cherry-pick_goodbye_amended-goodbye" \ 171 git rebase -i goodbye^^ goodbye 2>err 172 ) && 173 - test_i18ngrep "previous cherry-pick is now empty" err && 174 - test_i18ngrep "git cherry-pick --skip" err && 175 test_must_fail git commit 2>err && 176 - test_i18ngrep "git cherry-pick --skip" err 177 ' 178 179 test_expect_success 'fixup that empties commit fails' '
··· 108 test_when_finished "git rebase --abort" && 109 test_must_fail git rebase -i --onto goodbye \ 110 amended-goodbye^ amended-goodbye 2>err && 111 + test_grep "previous cherry-pick is now empty" err && 112 + test_grep "git rebase --skip" err && 113 test_must_fail git commit && 114 + test_grep "git rebase --skip" err 115 ' 116 117 test_expect_success 'correct authorship when committing empty pick' ' ··· 131 test_must_fail env FAKE_LINES="reword 1" git rebase -i \ 132 --onto goodbye amended-goodbye^ amended-goodbye 2>err 133 ) && 134 + test_grep "previous cherry-pick is now empty" err && 135 + test_grep "git rebase --skip" err && 136 test_must_fail git commit && 137 + test_grep "git rebase --skip" err 138 ' 139 140 test_expect_success 'correct advice upon editing empty commit' ' ··· 144 test_must_fail env FAKE_LINES="edit 1" git rebase -i \ 145 --onto goodbye amended-goodbye^ amended-goodbye 2>err 146 ) && 147 + test_grep "previous cherry-pick is now empty" err && 148 + test_grep "git rebase --skip" err && 149 test_must_fail git commit && 150 + test_grep "git rebase --skip" err 151 ' 152 153 test_expect_success 'correct advice upon cherry-picking an empty commit during a rebase' ' ··· 157 test_must_fail env FAKE_LINES="1 exec_git_cherry-pick_amended-goodbye" \ 158 git rebase -i goodbye^ goodbye 2>err 159 ) && 160 + test_grep "previous cherry-pick is now empty" err && 161 + test_grep "git cherry-pick --skip" err && 162 test_must_fail git commit 2>err && 163 + test_grep "git cherry-pick --skip" err 164 ' 165 166 test_expect_success 'correct advice upon multi cherry-pick picking an empty commit during a rebase' ' ··· 170 test_must_fail env FAKE_LINES="1 exec_git_cherry-pick_goodbye_amended-goodbye" \ 171 git rebase -i goodbye^^ goodbye 2>err 172 ) && 173 + test_grep "previous cherry-pick is now empty" err && 174 + test_grep "git cherry-pick --skip" err && 175 test_must_fail git commit 2>err && 176 + test_grep "git cherry-pick --skip" err 177 ' 178 179 test_expect_success 'fixup that empties commit fails' '
+19 -19
t/t3404-rebase-interactive.sh
··· 291 git rm --cached file1 && 292 git commit -m "remove file in base" && 293 test_must_fail git rebase -i primary > output 2>&1 && 294 - test_i18ngrep "The following untracked working tree files would be overwritten by checkout:" \ 295 output && 296 - test_i18ngrep "file1" output && 297 test_path_is_missing .git/rebase-merge && 298 rm file1 && 299 git reset --hard HEAD^ ··· 604 echo "edited again" > file7 && 605 git add file7 && 606 test_must_fail git rebase --continue 2>error && 607 - test_i18ngrep "you have staged changes in your working tree" error 608 ' 609 610 test_expect_success 'rebase a detached HEAD' ' ··· 955 git reset --hard execute && 956 rm -rf exec_output && 957 EDITOR="echo >invoked_editor" git rebase --exec "echo a line >>exec_output" HEAD~2 2>actual && 958 - test_i18ngrep "Successfully rebased and updated" actual && 959 test_line_count = 2 exec_output && 960 test_path_is_missing invoked_editor 961 ' ··· 963 test_expect_success 'rebase -i --exec without <CMD>' ' 964 git reset --hard execute && 965 test_must_fail git rebase -i --exec 2>actual && 966 - test_i18ngrep "requires a value" actual && 967 git checkout primary 968 ' 969 ··· 1272 test_set_editor "$(pwd)/dump-raw.sh" && 1273 git rebase -i HEAD~4 >actual 1274 ) && 1275 - test_i18ngrep "^# Rebase ..* onto ..* ([0-9]" actual 1276 ' 1277 1278 test_expect_success 'rebase -i commits that overwrite untracked files (pick)' ' ··· 1379 FAKE_LINES="1 2 3 4" git rebase -i --root 2>actual 1380 ) && 1381 test D = $(git cat-file commit HEAD | sed -ne \$p) && 1382 - test_i18ngrep \ 1383 "Successfully rebased and updated refs/heads/missing-commit" \ 1384 actual 1385 ' ··· 1442 git rebase --continue 2>actual 1443 ) && 1444 test D = $(git cat-file commit HEAD | sed -ne \$p) && 1445 - test_i18ngrep \ 1446 "Successfully rebased and updated refs/heads/missing-commit" \ 1447 actual 1448 ' ··· 1477 git rebase --continue 2>actual 1478 ) && 1479 test D = $(git cat-file commit HEAD | sed -ne \$p) && 1480 - test_i18ngrep \ 1481 "Successfully rebased and updated refs/heads/missing-commit" \ 1482 actual 1483 ' ··· 1525 git rebase --continue 2>actual 1526 ) && 1527 test D = $(git cat-file commit HEAD | sed -ne \$p) && 1528 - test_i18ngrep \ 1529 "Successfully rebased and updated refs/heads/missing-commit" \ 1530 actual 1531 ' ··· 1585 set_fake_editor && 1586 test_must_fail env FAKE_LINES="1 2 3 bad 4 5" \ 1587 git rebase -i --root 2>actual && 1588 - test_i18ngrep "pickled $(git rev-list --oneline -1 primary~1)" \ 1589 actual && 1590 - test_i18ngrep "You can fix this with .git rebase --edit-todo.." \ 1591 actual && 1592 FAKE_LINES="1 2 3 drop 4 5" git rebase --edit-todo 1593 ) && ··· 1645 set_fake_editor && 1646 test_must_fail env FAKE_LINES="1 2 edit fakesha 3 4 5 #" \ 1647 git rebase -i --root 2>actual && 1648 - test_i18ngrep "edit XXXXXXX False commit" actual && 1649 - test_i18ngrep "You can fix this with .git rebase --edit-todo.." \ 1650 actual && 1651 FAKE_LINES="1 2 4 5 6" git rebase --edit-todo 1652 ) && ··· 1673 FAKE_LINES="edit 1" git rebase -i --gpg-sign="\"S I Gner\"" \ 1674 HEAD^ >out 2>err 1675 ) && 1676 - test_i18ngrep "$SQ-S\"S I Gner\"$SQ" err 1677 ' 1678 1679 test_expect_success 'rebase -i --gpg-sign=<key-id> overrides commit.gpgSign' ' ··· 1684 FAKE_LINES="edit 1" git rebase -i --gpg-sign="\"S I Gner\"" \ 1685 HEAD^ >out 2>err 1686 ) && 1687 - test_i18ngrep "$SQ-S\"S I Gner\"$SQ" err 1688 ' 1689 1690 test_expect_success 'valid author header after --root swap' ' ··· 1738 ) && 1739 echo x >file1 && 1740 test_must_fail git commit file1 2>err && 1741 - test_i18ngrep "cannot do a partial commit during a rebase." err 1742 ' 1743 1744 test_expect_success 'correct error message for commit --amend after empty pick' ' ··· 1751 ) && 1752 echo x>file1 && 1753 test_must_fail git commit -a --amend 2>err && 1754 - test_i18ngrep "middle of a rebase -- cannot amend." err 1755 ' 1756 1757 test_expect_success 'todo has correct onto hash' ' 1758 GIT_SEQUENCE_EDITOR=cat git rebase -i no-conflict-branch~4 no-conflict-branch >actual && 1759 onto=$(git rev-parse --short HEAD~4) && 1760 - test_i18ngrep "^# Rebase ..* onto $onto" actual 1761 ' 1762 1763 test_expect_success 'ORIG_HEAD is updated correctly' '
··· 291 git rm --cached file1 && 292 git commit -m "remove file in base" && 293 test_must_fail git rebase -i primary > output 2>&1 && 294 + test_grep "The following untracked working tree files would be overwritten by checkout:" \ 295 output && 296 + test_grep "file1" output && 297 test_path_is_missing .git/rebase-merge && 298 rm file1 && 299 git reset --hard HEAD^ ··· 604 echo "edited again" > file7 && 605 git add file7 && 606 test_must_fail git rebase --continue 2>error && 607 + test_grep "you have staged changes in your working tree" error 608 ' 609 610 test_expect_success 'rebase a detached HEAD' ' ··· 955 git reset --hard execute && 956 rm -rf exec_output && 957 EDITOR="echo >invoked_editor" git rebase --exec "echo a line >>exec_output" HEAD~2 2>actual && 958 + test_grep "Successfully rebased and updated" actual && 959 test_line_count = 2 exec_output && 960 test_path_is_missing invoked_editor 961 ' ··· 963 test_expect_success 'rebase -i --exec without <CMD>' ' 964 git reset --hard execute && 965 test_must_fail git rebase -i --exec 2>actual && 966 + test_grep "requires a value" actual && 967 git checkout primary 968 ' 969 ··· 1272 test_set_editor "$(pwd)/dump-raw.sh" && 1273 git rebase -i HEAD~4 >actual 1274 ) && 1275 + test_grep "^# Rebase ..* onto ..* ([0-9]" actual 1276 ' 1277 1278 test_expect_success 'rebase -i commits that overwrite untracked files (pick)' ' ··· 1379 FAKE_LINES="1 2 3 4" git rebase -i --root 2>actual 1380 ) && 1381 test D = $(git cat-file commit HEAD | sed -ne \$p) && 1382 + test_grep \ 1383 "Successfully rebased and updated refs/heads/missing-commit" \ 1384 actual 1385 ' ··· 1442 git rebase --continue 2>actual 1443 ) && 1444 test D = $(git cat-file commit HEAD | sed -ne \$p) && 1445 + test_grep \ 1446 "Successfully rebased and updated refs/heads/missing-commit" \ 1447 actual 1448 ' ··· 1477 git rebase --continue 2>actual 1478 ) && 1479 test D = $(git cat-file commit HEAD | sed -ne \$p) && 1480 + test_grep \ 1481 "Successfully rebased and updated refs/heads/missing-commit" \ 1482 actual 1483 ' ··· 1525 git rebase --continue 2>actual 1526 ) && 1527 test D = $(git cat-file commit HEAD | sed -ne \$p) && 1528 + test_grep \ 1529 "Successfully rebased and updated refs/heads/missing-commit" \ 1530 actual 1531 ' ··· 1585 set_fake_editor && 1586 test_must_fail env FAKE_LINES="1 2 3 bad 4 5" \ 1587 git rebase -i --root 2>actual && 1588 + test_grep "pickled $(git rev-list --oneline -1 primary~1)" \ 1589 actual && 1590 + test_grep "You can fix this with .git rebase --edit-todo.." \ 1591 actual && 1592 FAKE_LINES="1 2 3 drop 4 5" git rebase --edit-todo 1593 ) && ··· 1645 set_fake_editor && 1646 test_must_fail env FAKE_LINES="1 2 edit fakesha 3 4 5 #" \ 1647 git rebase -i --root 2>actual && 1648 + test_grep "edit XXXXXXX False commit" actual && 1649 + test_grep "You can fix this with .git rebase --edit-todo.." \ 1650 actual && 1651 FAKE_LINES="1 2 4 5 6" git rebase --edit-todo 1652 ) && ··· 1673 FAKE_LINES="edit 1" git rebase -i --gpg-sign="\"S I Gner\"" \ 1674 HEAD^ >out 2>err 1675 ) && 1676 + test_grep "$SQ-S\"S I Gner\"$SQ" err 1677 ' 1678 1679 test_expect_success 'rebase -i --gpg-sign=<key-id> overrides commit.gpgSign' ' ··· 1684 FAKE_LINES="edit 1" git rebase -i --gpg-sign="\"S I Gner\"" \ 1685 HEAD^ >out 2>err 1686 ) && 1687 + test_grep "$SQ-S\"S I Gner\"$SQ" err 1688 ' 1689 1690 test_expect_success 'valid author header after --root swap' ' ··· 1738 ) && 1739 echo x >file1 && 1740 test_must_fail git commit file1 2>err && 1741 + test_grep "cannot do a partial commit during a rebase." err 1742 ' 1743 1744 test_expect_success 'correct error message for commit --amend after empty pick' ' ··· 1751 ) && 1752 echo x>file1 && 1753 test_must_fail git commit -a --amend 2>err && 1754 + test_grep "middle of a rebase -- cannot amend." err 1755 ' 1756 1757 test_expect_success 'todo has correct onto hash' ' 1758 GIT_SEQUENCE_EDITOR=cat git rebase -i no-conflict-branch~4 no-conflict-branch >actual && 1759 onto=$(git rev-parse --short HEAD~4) && 1760 + test_grep "^# Rebase ..* onto $onto" actual 1761 ' 1762 1763 test_expect_success 'ORIG_HEAD is updated correctly' '
+9 -9
t/t3406-rebase-message.sh
··· 33 34 test_expect_success 'rebase against main twice' ' 35 git rebase --apply main >out && 36 - test_i18ngrep "Current branch topic is up to date" out 37 ' 38 39 test_expect_success 'rebase against main twice with --force' ' 40 git rebase --force-rebase --apply main >out && 41 - test_i18ngrep "Current branch topic is up to date, rebase forced" out 42 ' 43 44 test_expect_success 'rebase against main twice from another branch' ' 45 git checkout topic^ && 46 git rebase --apply main topic >out && 47 - test_i18ngrep "Current branch topic is up to date" out 48 ' 49 50 test_expect_success 'rebase fast-forward to main' ' 51 git checkout topic^ && 52 git rebase --apply topic >out && 53 - test_i18ngrep "Fast-forwarded HEAD to topic" out 54 ' 55 56 test_expect_success 'rebase --stat' ' ··· 75 76 test_expect_success 'rebase --onto outputs the invalid ref' ' 77 test_must_fail git rebase --onto invalid-ref HEAD HEAD 2>err && 78 - test_i18ngrep "invalid-ref" err 79 ' 80 81 test_expect_success 'error out early upon -C<n> or --whitespace=<bad>' ' 82 test_must_fail git rebase -Cnot-a-number HEAD 2>err && 83 - test_i18ngrep "numerical value" err && 84 test_must_fail git rebase --whitespace=bad HEAD 2>err && 85 - test_i18ngrep "Invalid whitespace option" err 86 ' 87 88 write_reflog_expect () { ··· 251 git -C unrelated remote add -f origin "$PWD" && 252 git -C unrelated branch --set-upstream-to=origin/main && 253 git -C unrelated -c core.editor=true rebase -i -v --stat >actual && 254 - test_i18ngrep "Changes to " actual && 255 - test_i18ngrep "5 files changed" actual 256 ' 257 258 test_done
··· 33 34 test_expect_success 'rebase against main twice' ' 35 git rebase --apply main >out && 36 + test_grep "Current branch topic is up to date" out 37 ' 38 39 test_expect_success 'rebase against main twice with --force' ' 40 git rebase --force-rebase --apply main >out && 41 + test_grep "Current branch topic is up to date, rebase forced" out 42 ' 43 44 test_expect_success 'rebase against main twice from another branch' ' 45 git checkout topic^ && 46 git rebase --apply main topic >out && 47 + test_grep "Current branch topic is up to date" out 48 ' 49 50 test_expect_success 'rebase fast-forward to main' ' 51 git checkout topic^ && 52 git rebase --apply topic >out && 53 + test_grep "Fast-forwarded HEAD to topic" out 54 ' 55 56 test_expect_success 'rebase --stat' ' ··· 75 76 test_expect_success 'rebase --onto outputs the invalid ref' ' 77 test_must_fail git rebase --onto invalid-ref HEAD HEAD 2>err && 78 + test_grep "invalid-ref" err 79 ' 80 81 test_expect_success 'error out early upon -C<n> or --whitespace=<bad>' ' 82 test_must_fail git rebase -Cnot-a-number HEAD 2>err && 83 + test_grep "numerical value" err && 84 test_must_fail git rebase --whitespace=bad HEAD 2>err && 85 + test_grep "Invalid whitespace option" err 86 ' 87 88 write_reflog_expect () { ··· 251 git -C unrelated remote add -f origin "$PWD" && 252 git -C unrelated branch --set-upstream-to=origin/main && 253 git -C unrelated -c core.editor=true rebase -i -v --stat >actual && 254 + test_grep "Changes to " actual && 255 + test_grep "5 files changed" actual 256 ' 257 258 test_done
+3 -3
t/t3418-rebase-continue.sh
··· 182 183 : Final squash failed, but there was still a squash && 184 head -n1 .git/copy.txt >first-line && 185 - test_i18ngrep "# This is a combination of 3 commits" first-line && 186 - test_i18ngrep "# This is the commit message #3:" .git/copy.txt 187 ' 188 189 test_expect_success 'setup rerere database' ' ··· 276 test_must_fail git -c rebase.rescheduleFailedExec=true \ 277 rebase -x false HEAD^ 2>err && 278 grep "^exec false" .git/rebase-merge/git-rebase-todo && 279 - test_i18ngrep "has been rescheduled" err 280 ' 281 282 test_expect_success 'rebase.rescheduleFailedExec only affects `rebase -i`' '
··· 182 183 : Final squash failed, but there was still a squash && 184 head -n1 .git/copy.txt >first-line && 185 + test_grep "# This is a combination of 3 commits" first-line && 186 + test_grep "# This is the commit message #3:" .git/copy.txt 187 ' 188 189 test_expect_success 'setup rerere database' ' ··· 276 test_must_fail git -c rebase.rescheduleFailedExec=true \ 277 rebase -x false HEAD^ 2>err && 278 grep "^exec false" .git/rebase-merge/git-rebase-todo && 279 + test_grep "has been rescheduled" err 280 ' 281 282 test_expect_success 'rebase.rescheduleFailedExec only affects `rebase -i`' '
+1 -1
t/t3431-rebase-fork-point.sh
··· 84 85 test_expect_success '--fork-point and --root both given' ' 86 test_must_fail git rebase --fork-point --root 2>err && 87 - test_i18ngrep "cannot be used together" err 88 ' 89 90 test_expect_success 'rebase.forkPoint set to false' '
··· 84 85 test_expect_success '--fork-point and --root both given' ' 86 test_must_fail git rebase --fork-point --root 2>err && 87 + test_grep "cannot be used together" err 88 ' 89 90 test_expect_success 'rebase.forkPoint set to false' '
+3 -3
t/t3501-revert-cherry-pick.sh
··· 43 git diff --exit-code HEAD && 44 test_must_fail git cherry-pick --nonsense 2>msg && 45 git diff --exit-code HEAD "$pos" && 46 - test_i18ngrep "[Uu]sage:" msg 47 ' 48 49 test_expect_success 'revert --nonsense' ' ··· 52 git diff --exit-code HEAD && 53 test_must_fail git revert --nonsense 2>msg && 54 git diff --exit-code HEAD "$pos" && 55 - test_i18ngrep "[Uu]sage:" msg 56 ' 57 58 # the following two test cherry-pick and revert with renames ··· 99 echo content >extra_file && 100 git add extra_file && 101 test_must_fail git revert HEAD 2>errors && 102 - test_i18ngrep "your local changes would be overwritten by " errors 103 104 ' 105
··· 43 git diff --exit-code HEAD && 44 test_must_fail git cherry-pick --nonsense 2>msg && 45 git diff --exit-code HEAD "$pos" && 46 + test_grep "[Uu]sage:" msg 47 ' 48 49 test_expect_success 'revert --nonsense' ' ··· 52 git diff --exit-code HEAD && 53 test_must_fail git revert --nonsense 2>msg && 54 git diff --exit-code HEAD "$pos" && 55 + test_grep "[Uu]sage:" msg 56 ' 57 58 # the following two test cherry-pick and revert with renames ··· 99 echo content >extra_file && 100 git add extra_file && 101 test_must_fail git revert HEAD 2>errors && 102 + test_grep "your local changes would be overwritten by " errors 103 104 ' 105
+4 -4
t/t3507-cherry-pick-conflict.sh
··· 177 git add foo && 178 test_must_fail git commit foo 2>err && 179 180 - test_i18ngrep "cannot do a partial commit during a cherry-pick." err 181 ' 182 183 test_expect_success 'commit --amend of cherry-pick fails' ' ··· 188 git add foo && 189 test_must_fail git commit --amend 2>err && 190 191 - test_i18ngrep "in the middle of a cherry-pick -- cannot amend." err 192 ' 193 194 test_expect_success 'successful final commit clears cherry-pick state' ' ··· 498 test_expect_success 'failed cherry-pick does not forget -s' ' 499 pristine_detach initial && 500 test_must_fail git cherry-pick -s picked && 501 - test_i18ngrep -e "Signed-off-by" .git/MERGE_MSG 502 ' 503 504 test_expect_success 'commit after failed cherry-pick does not add duplicated -s' ' ··· 563 echo /unrelated >.git/info/sparse-checkout && 564 git read-tree --reset -u HEAD && 565 test_must_fail git cherry-pick -Xours picked>actual && 566 - test_i18ngrep ! "Changes not staged for commit:" actual 567 ' 568 569 test_expect_success 'cherry-pick --continue remembers --keep-redundant-commits' '
··· 177 git add foo && 178 test_must_fail git commit foo 2>err && 179 180 + test_grep "cannot do a partial commit during a cherry-pick." err 181 ' 182 183 test_expect_success 'commit --amend of cherry-pick fails' ' ··· 188 git add foo && 189 test_must_fail git commit --amend 2>err && 190 191 + test_grep "in the middle of a cherry-pick -- cannot amend." err 192 ' 193 194 test_expect_success 'successful final commit clears cherry-pick state' ' ··· 498 test_expect_success 'failed cherry-pick does not forget -s' ' 499 pristine_detach initial && 500 test_must_fail git cherry-pick -s picked && 501 + test_grep -e "Signed-off-by" .git/MERGE_MSG 502 ' 503 504 test_expect_success 'commit after failed cherry-pick does not add duplicated -s' ' ··· 563 echo /unrelated >.git/info/sparse-checkout && 564 git read-tree --reset -u HEAD && 565 test_must_fail git cherry-pick -Xours picked>actual && 566 + test_grep ! "Changes not staged for commit:" actual 567 ' 568 569 test_expect_success 'cherry-pick --continue remembers --keep-redundant-commits' '
+3 -3
t/t3510-cherry-pick-sequence.sh
··· 154 pristine_detach picked && 155 test_commit dummy foo d && 156 test_must_fail git cherry-pick anotherpick 2>err && 157 - test_i18ngrep "git cherry-pick --skip" err && 158 git cherry-pick --skip && 159 test_cmp_rev dummy HEAD 160 ' ··· 314 git reset --hard base && 315 test_must_fail git cherry-pick picked anotherpick && 316 git cherry-pick --abort 2>actual && 317 - test_i18ngrep "You seem to have moved HEAD" actual && 318 test_cmp_rev base HEAD 319 ' 320 ··· 520 test_cmp_rev unrelatedpick CHERRY_PICK_HEAD && 521 git checkout HEAD -- unrelated && 522 test_must_fail git cherry-pick --continue 2>msg && 523 - test_i18ngrep "The previous cherry-pick is now empty" msg 524 ' 525 526 test_expect_success 'follow advice and skip nil patch' '
··· 154 pristine_detach picked && 155 test_commit dummy foo d && 156 test_must_fail git cherry-pick anotherpick 2>err && 157 + test_grep "git cherry-pick --skip" err && 158 git cherry-pick --skip && 159 test_cmp_rev dummy HEAD 160 ' ··· 314 git reset --hard base && 315 test_must_fail git cherry-pick picked anotherpick && 316 git cherry-pick --abort 2>actual && 317 + test_grep "You seem to have moved HEAD" actual && 318 test_cmp_rev base HEAD 319 ' 320 ··· 520 test_cmp_rev unrelatedpick CHERRY_PICK_HEAD && 521 git checkout HEAD -- unrelated && 522 test_must_fail git cherry-pick --continue 2>msg && 523 + test_grep "The previous cherry-pick is now empty" msg 524 ' 525 526 test_expect_success 'follow advice and skip nil patch' '
+4 -4
t/t3600-rm.sh
··· 276 blob=$(echo blob | git hash-object -w --stdin) && 277 printf "100644 $blob %d\tblob\n" 1 2 3 | git update-index --index-info && 278 git rm blob >msg 2>&1 && 279 - test_i18ngrep ! "needs merge" msg && 280 test_must_fail git ls-files -s --error-unmatch blob 281 ' 282 ··· 631 test_path_is_missing submod/.git && 632 git status -s -uno --ignore-submodules=none >actual && 633 test_file_not_empty actual && 634 - test_i18ngrep Migrating output.err 635 ' 636 637 cat >expect.deepmodified <<EOF ··· 722 test_path_is_missing submod/subsubmod/.git && 723 git status -s -uno --ignore-submodules=none >actual && 724 test_file_not_empty actual && 725 - test_i18ngrep Migrating output.err 726 ' 727 728 test_expect_success 'checking out a commit after submodule removal needs manual updates' ' ··· 731 git submodule update && 732 git checkout -q HEAD^ && 733 git checkout -q main 2>actual && 734 - test_i18ngrep "^warning: unable to rmdir '\''submod'\'':" actual && 735 git status -s submod >actual && 736 echo "?? submod/" >expected && 737 test_cmp expected actual &&
··· 276 blob=$(echo blob | git hash-object -w --stdin) && 277 printf "100644 $blob %d\tblob\n" 1 2 3 | git update-index --index-info && 278 git rm blob >msg 2>&1 && 279 + test_grep ! "needs merge" msg && 280 test_must_fail git ls-files -s --error-unmatch blob 281 ' 282 ··· 631 test_path_is_missing submod/.git && 632 git status -s -uno --ignore-submodules=none >actual && 633 test_file_not_empty actual && 634 + test_grep Migrating output.err 635 ' 636 637 cat >expect.deepmodified <<EOF ··· 722 test_path_is_missing submod/subsubmod/.git && 723 git status -s -uno --ignore-submodules=none >actual && 724 test_file_not_empty actual && 725 + test_grep Migrating output.err 726 ' 727 728 test_expect_success 'checking out a commit after submodule removal needs manual updates' ' ··· 731 git submodule update && 732 git checkout -q HEAD^ && 733 git checkout -q main 2>actual && 734 + test_grep "^warning: unable to rmdir '\''submod'\'':" actual && 735 git status -s submod >actual && 736 echo "?? submod/" >expected && 737 test_cmp expected actual &&
+3 -3
t/t3601-rm-pathspec-file.sh
··· 67 echo fileA.t >list && 68 69 test_must_fail git rm --pathspec-from-file=list -- fileA.t 2>err && 70 - test_i18ngrep -e ".--pathspec-from-file. and pathspec arguments cannot be used together" err && 71 72 test_must_fail git rm --pathspec-file-nul 2>err && 73 - test_i18ngrep -e "the option .--pathspec-file-nul. requires .--pathspec-from-file." err && 74 75 >empty_list && 76 test_must_fail git rm --pathspec-from-file=empty_list 2>err && 77 - test_i18ngrep -e "No pathspec was given. Which files should I remove?" err 78 ' 79 80 test_done
··· 67 echo fileA.t >list && 68 69 test_must_fail git rm --pathspec-from-file=list -- fileA.t 2>err && 70 + test_grep -e ".--pathspec-from-file. and pathspec arguments cannot be used together" err && 71 72 test_must_fail git rm --pathspec-file-nul 2>err && 73 + test_grep -e "the option .--pathspec-file-nul. requires .--pathspec-from-file." err && 74 75 >empty_list && 76 test_must_fail git rm --pathspec-from-file=empty_list 2>err && 77 + test_grep -e "No pathspec was given. Which files should I remove?" err 78 ' 79 80 test_done
+3 -3
t/t3700-add.sh
··· 438 test_ln_s_add foo foo3 && 439 touch foo4 && 440 test_must_fail git add --chmod=+x foo3 foo4 2>stderr && 441 - test_i18ngrep "cannot chmod +x .foo3." stderr && 442 test_mode_in_index 120000 foo3 && 443 test_mode_in_index 100755 foo4 444 ' ··· 455 git reset --hard && 456 test_ln_s_add foo foo4 && 457 test_must_fail git add --chmod=+x --dry-run foo4 2>stderr && 458 - test_i18ngrep "cannot chmod +x .foo4." stderr 459 ' 460 461 test_expect_success 'git add --chmod --dry-run reports error for unmatched pathspec' ' 462 test_must_fail git add --chmod=+x --dry-run nonexistent 2>stderr && 463 - test_i18ngrep "pathspec .nonexistent. did not match any files" stderr 464 ' 465 466 test_expect_success 'no file status change if no pathspec is given' '
··· 438 test_ln_s_add foo foo3 && 439 touch foo4 && 440 test_must_fail git add --chmod=+x foo3 foo4 2>stderr && 441 + test_grep "cannot chmod +x .foo3." stderr && 442 test_mode_in_index 120000 foo3 && 443 test_mode_in_index 100755 foo4 444 ' ··· 455 git reset --hard && 456 test_ln_s_add foo foo4 && 457 test_must_fail git add --chmod=+x --dry-run foo4 2>stderr && 458 + test_grep "cannot chmod +x .foo4." stderr 459 ' 460 461 test_expect_success 'git add --chmod --dry-run reports error for unmatched pathspec' ' 462 test_must_fail git add --chmod=+x --dry-run nonexistent 2>stderr && 463 + test_grep "pathspec .nonexistent. did not match any files" stderr 464 ' 465 466 test_expect_success 'no file status change if no pathspec is given' '
+4 -4
t/t3701-add-interactive.sh
··· 335 test_expect_success 'correct message when there is nothing to do' ' 336 git reset --hard && 337 git add -p 2>err && 338 - test_i18ngrep "No changes" err && 339 printf "\\0123" >binary && 340 git add binary && 341 printf "\\0abc" >binary && 342 git add -p 2>err && 343 - test_i18ngrep "Only binary files changed" err 344 ' 345 346 test_expect_success 'setup again' ' ··· 497 498 echo y | git checkout -p added-file -- >actual && 499 test_path_is_file empty && 500 - test_i18ngrep "Apply addition to index and worktree" actual 501 ) 502 ' 503 ··· 838 git add file && 839 echo changed >file && 840 test_must_fail git -c diff.algorithm=bogus add -p 2>err && 841 - test_i18ngrep "error: option diff-algorithm accepts " err 842 ' 843 844 test_expect_success 'patch-mode via -i prompts for files' '
··· 335 test_expect_success 'correct message when there is nothing to do' ' 336 git reset --hard && 337 git add -p 2>err && 338 + test_grep "No changes" err && 339 printf "\\0123" >binary && 340 git add binary && 341 printf "\\0abc" >binary && 342 git add -p 2>err && 343 + test_grep "Only binary files changed" err 344 ' 345 346 test_expect_success 'setup again' ' ··· 497 498 echo y | git checkout -p added-file -- >actual && 499 test_path_is_file empty && 500 + test_grep "Apply addition to index and worktree" actual 501 ) 502 ' 503 ··· 838 git add file && 839 echo changed >file && 840 test_must_fail git -c diff.algorithm=bogus add -p 2>err && 841 + test_grep "error: option diff-algorithm accepts " err 842 ' 843 844 test_expect_success 'patch-mode via -i prompts for files' '
+6 -6
t/t3704-add-pathspec-file.sh
··· 138 >empty_list && 139 140 test_must_fail git add --pathspec-from-file=list --interactive 2>err && 141 - test_i18ngrep -e "options .--pathspec-from-file. and .--interactive/--patch. cannot be used together" err && 142 143 test_must_fail git add --pathspec-from-file=list --patch 2>err && 144 - test_i18ngrep -e "options .--pathspec-from-file. and .--interactive/--patch. cannot be used together" err && 145 146 test_must_fail git add --pathspec-from-file=list --edit 2>err && 147 - test_i18ngrep -e "options .--pathspec-from-file. and .--edit. cannot be used together" err && 148 149 test_must_fail git add --pathspec-from-file=list -- fileA.t 2>err && 150 - test_i18ngrep -e ".--pathspec-from-file. and pathspec arguments cannot be used together" err && 151 152 test_must_fail git add --pathspec-file-nul 2>err && 153 - test_i18ngrep -e "the option .--pathspec-file-nul. requires .--pathspec-from-file." err && 154 155 # This case succeeds, but still prints to stderr 156 git add --pathspec-from-file=empty_list 2>err && 157 - test_i18ngrep -e "Nothing specified, nothing added." err 158 ' 159 160 test_done
··· 138 >empty_list && 139 140 test_must_fail git add --pathspec-from-file=list --interactive 2>err && 141 + test_grep -e "options .--pathspec-from-file. and .--interactive/--patch. cannot be used together" err && 142 143 test_must_fail git add --pathspec-from-file=list --patch 2>err && 144 + test_grep -e "options .--pathspec-from-file. and .--interactive/--patch. cannot be used together" err && 145 146 test_must_fail git add --pathspec-from-file=list --edit 2>err && 147 + test_grep -e "options .--pathspec-from-file. and .--edit. cannot be used together" err && 148 149 test_must_fail git add --pathspec-from-file=list -- fileA.t 2>err && 150 + test_grep -e ".--pathspec-from-file. and pathspec arguments cannot be used together" err && 151 152 test_must_fail git add --pathspec-file-nul 2>err && 153 + test_grep -e "the option .--pathspec-file-nul. requires .--pathspec-from-file." err && 154 155 # This case succeeds, but still prints to stderr 156 git add --pathspec-from-file=empty_list 2>err && 157 + test_grep -e "Nothing specified, nothing added." err 158 ' 159 160 test_done
+4 -4
t/t3900-i18n-commit.sh
··· 45 printf "Commit message\n\nInvalid surrogate:\355\240\200\n" \ 46 >"$HOME/invalid" && 47 git commit -a -F "$HOME/invalid" 2>"$HOME"/stderr && 48 - test_i18ngrep "did not conform" "$HOME"/stderr 49 ' 50 51 test_expect_success 'UTF-8 overlong sequences rejected' ' ··· 55 printf "\340\202\251ommit message\n\nThis is not a space:\300\240\n" \ 56 >"$HOME/invalid" && 57 git commit -a -F "$HOME/invalid" 2>"$HOME"/stderr && 58 - test_i18ngrep "did not conform" "$HOME"/stderr 59 ' 60 61 test_expect_success 'UTF-8 non-characters refused' ' ··· 64 printf "Commit message\n\nNon-character:\364\217\277\276\n" \ 65 >"$HOME/invalid" && 66 git commit -a -F "$HOME/invalid" 2>"$HOME"/stderr && 67 - test_i18ngrep "did not conform" "$HOME"/stderr 68 ' 69 70 test_expect_success 'UTF-8 non-characters refused' ' ··· 73 printf "Commit message\n\nNon-character:\357\267\220\n" \ 74 >"$HOME/invalid" && 75 git commit -a -F "$HOME/invalid" 2>"$HOME"/stderr && 76 - test_i18ngrep "did not conform" "$HOME"/stderr 77 ' 78 79 for H in ISO8859-1 eucJP ISO-2022-JP
··· 45 printf "Commit message\n\nInvalid surrogate:\355\240\200\n" \ 46 >"$HOME/invalid" && 47 git commit -a -F "$HOME/invalid" 2>"$HOME"/stderr && 48 + test_grep "did not conform" "$HOME"/stderr 49 ' 50 51 test_expect_success 'UTF-8 overlong sequences rejected' ' ··· 55 printf "\340\202\251ommit message\n\nThis is not a space:\300\240\n" \ 56 >"$HOME/invalid" && 57 git commit -a -F "$HOME/invalid" 2>"$HOME"/stderr && 58 + test_grep "did not conform" "$HOME"/stderr 59 ' 60 61 test_expect_success 'UTF-8 non-characters refused' ' ··· 64 printf "Commit message\n\nNon-character:\364\217\277\276\n" \ 65 >"$HOME/invalid" && 66 git commit -a -F "$HOME/invalid" 2>"$HOME"/stderr && 67 + test_grep "did not conform" "$HOME"/stderr 68 ' 69 70 test_expect_success 'UTF-8 non-characters refused' ' ··· 73 printf "Commit message\n\nNon-character:\357\267\220\n" \ 74 >"$HOME/invalid" && 75 git commit -a -F "$HOME/invalid" 2>"$HOME"/stderr && 76 + test_grep "did not conform" "$HOME"/stderr 77 ' 78 79 for H in ISO8859-1 eucJP ISO-2022-JP
+1 -1
t/t3901-i18n-patch.sh
··· 298 299 # commit-tree will warn that the commit message does not contain valid UTF-8 300 # as mailinfo did not convert it 301 - test_i18ngrep "did not conform" err && 302 303 check_encoding 2 304 '
··· 298 299 # commit-tree will warn that the commit message does not contain valid UTF-8 300 # as mailinfo did not convert it 301 + test_grep "did not conform" err && 302 303 check_encoding 2 304 '
+5 -5
t/t3903-stash.sh
··· 395 396 test_expect_success 'dont assume push with non-option args' ' 397 test_must_fail git stash -q drop 2>err && 398 - test_i18ngrep -e "subcommand wasn'\''t specified; '\''push'\'' can'\''t be assumed due to unexpected token '\''drop'\''" err 399 ' 400 401 test_expect_success 'stash --invalid-option' ' ··· 596 for type in apply pop "branch stash-branch" 597 do 598 test_must_fail git stash $type stash@{0} stash@{1} 2>err && 599 - test_i18ngrep "Too many revisions" err && 600 test 123456789 = $(test-tool chmtime -g file2) || return 1 601 done 602 ' ··· 604 test_expect_success 'drop: too many arguments errors out (does nothing)' ' 605 git stash list >expect && 606 test_must_fail git stash drop stash@{0} stash@{1} 2>err && 607 - test_i18ngrep "Too many revisions" err && 608 git stash list >actual && 609 test_cmp expect actual 610 ' 611 612 test_expect_success 'show: too many arguments errors out (does nothing)' ' 613 test_must_fail git stash show stash@{0} stash@{1} 2>err 1>out && 614 - test_i18ngrep "Too many revisions" err && 615 test_must_be_empty out 616 ' 617 ··· 654 655 test_expect_success 'stash branch complains with no arguments' ' 656 test_must_fail git stash branch 2>err && 657 - test_i18ngrep "No branch name specified" err 658 ' 659 660 test_expect_success 'stash show format defaults to --stat' '
··· 395 396 test_expect_success 'dont assume push with non-option args' ' 397 test_must_fail git stash -q drop 2>err && 398 + test_grep -e "subcommand wasn'\''t specified; '\''push'\'' can'\''t be assumed due to unexpected token '\''drop'\''" err 399 ' 400 401 test_expect_success 'stash --invalid-option' ' ··· 596 for type in apply pop "branch stash-branch" 597 do 598 test_must_fail git stash $type stash@{0} stash@{1} 2>err && 599 + test_grep "Too many revisions" err && 600 test 123456789 = $(test-tool chmtime -g file2) || return 1 601 done 602 ' ··· 604 test_expect_success 'drop: too many arguments errors out (does nothing)' ' 605 git stash list >expect && 606 test_must_fail git stash drop stash@{0} stash@{1} 2>err && 607 + test_grep "Too many revisions" err && 608 git stash list >actual && 609 test_cmp expect actual 610 ' 611 612 test_expect_success 'show: too many arguments errors out (does nothing)' ' 613 test_must_fail git stash show stash@{0} stash@{1} 2>err 1>out && 614 + test_grep "Too many revisions" err && 615 test_must_be_empty out 616 ' 617 ··· 654 655 test_expect_success 'stash branch complains with no arguments' ' 656 test_must_fail git stash branch 2>err && 657 + test_grep "No branch name specified" err 658 ' 659 660 test_expect_success 'stash show format defaults to --stat' '
+1 -1
t/t3905-stash-include-untracked.sh
··· 404 ) && 405 w_commit=$(git commit-tree -p HEAD -p "$i_commit" -p "$u_commit" -m "WIP on any-branch" "$tree") && 406 test_must_fail git stash show --include-untracked "$w_commit" 2>err && 407 - test_i18ngrep "worktree and untracked commit have duplicate entries: tracked" err 408 ' 409 410 test_expect_success 'stash show --{include,only}-untracked on stashes without untracked entries' '
··· 404 ) && 405 w_commit=$(git commit-tree -p HEAD -p "$i_commit" -p "$u_commit" -m "WIP on any-branch" "$tree") && 406 test_must_fail git stash show --include-untracked "$w_commit" 2>err && 407 + test_grep "worktree and untracked commit have duplicate entries: tracked" err 408 ' 409 410 test_expect_success 'stash show --{include,only}-untracked on stashes without untracked entries' '
+3 -3
t/t3909-stash-pathspec-file.sh
··· 88 echo fileA.t >list && 89 90 test_must_fail git stash push --pathspec-from-file=list --patch 2>err && 91 - test_i18ngrep -e "options .--pathspec-from-file. and .--patch. cannot be used together" err && 92 93 test_must_fail git stash push --pathspec-from-file=list -- fileA.t 2>err && 94 - test_i18ngrep -e ".--pathspec-from-file. and pathspec arguments cannot be used together" err && 95 96 test_must_fail git stash push --pathspec-file-nul 2>err && 97 - test_i18ngrep -e "the option .--pathspec-file-nul. requires .--pathspec-from-file." err 98 ' 99 100 test_done
··· 88 echo fileA.t >list && 89 90 test_must_fail git stash push --pathspec-from-file=list --patch 2>err && 91 + test_grep -e "options .--pathspec-from-file. and .--patch. cannot be used together" err && 92 93 test_must_fail git stash push --pathspec-from-file=list -- fileA.t 2>err && 94 + test_grep -e ".--pathspec-from-file. and pathspec arguments cannot be used together" err && 95 96 test_must_fail git stash push --pathspec-file-nul 2>err && 97 + test_grep -e "the option .--pathspec-file-nul. requires .--pathspec-from-file." err 98 ' 99 100 test_done
+17 -17
t/t4001-diff-rename.sh
··· 135 mkdir subdir && 136 git mv another-path subdir/path1 && 137 git status >out && 138 - test_i18ngrep "renamed: .*path1 -> subdir/path1" out 139 ' 140 141 test_expect_success 'test diff.renames=true for git status' ' 142 git -c diff.renames=true status >out && 143 - test_i18ngrep "renamed: .*path1 -> subdir/path1" out 144 ' 145 146 test_expect_success 'test diff.renames=false for git status' ' 147 git -c diff.renames=false status >out && 148 - test_i18ngrep ! "renamed: .*path1 -> subdir/path1" out && 149 - test_i18ngrep "new file: .*subdir/path1" out && 150 - test_i18ngrep "deleted: .*[^/]path1" out 151 ' 152 153 test_expect_success 'favour same basenames even with minor differences' ' 154 git show HEAD:path1 | sed "s/15/16/" > subdir/path1 && 155 git status >out && 156 - test_i18ngrep "renamed: .*path1 -> subdir/path1" out 157 ' 158 159 test_expect_success 'two files with same basename and same content' ' ··· 165 git commit -m 2 && 166 git mv dir other-dir && 167 git status >out && 168 - test_i18ngrep "renamed: .*dir/A/file -> other-dir/A/file" out 169 ' 170 171 test_expect_success 'setup for many rename source candidates' ' ··· 202 git mv a/b/c c/b/a && 203 git commit -m "a/b/c -> c/b/a" && 204 git diff -M --summary HEAD^ HEAD >output && 205 - test_i18ngrep " a/b/c => c/b/a " output && 206 git diff -M --stat HEAD^ HEAD >output && 207 - test_i18ngrep " a/b/c => c/b/a " output 208 ' 209 210 test_expect_success 'rename pretty print with common prefix' ' ··· 212 git mv c/b/a c/d/e && 213 git commit -m "c/b/a -> c/d/e" && 214 git diff -M --summary HEAD^ HEAD >output && 215 - test_i18ngrep " c/{b/a => d/e} " output && 216 git diff -M --stat HEAD^ HEAD >output && 217 - test_i18ngrep " c/{b/a => d/e} " output 218 ' 219 220 test_expect_success 'rename pretty print with common suffix' ' ··· 222 git mv c/d/e d/e && 223 git commit -m "c/d/e -> d/e" && 224 git diff -M --summary HEAD^ HEAD >output && 225 - test_i18ngrep " {c/d => d}/e " output && 226 git diff -M --stat HEAD^ HEAD >output && 227 - test_i18ngrep " {c/d => d}/e " output 228 ' 229 230 test_expect_success 'rename pretty print with common prefix and suffix' ' ··· 232 git mv d/e d/f/e && 233 git commit -m "d/e -> d/f/e" && 234 git diff -M --summary HEAD^ HEAD >output && 235 - test_i18ngrep " d/{ => f}/e " output && 236 git diff -M --stat HEAD^ HEAD >output && 237 - test_i18ngrep " d/{ => f}/e " output 238 ' 239 240 test_expect_success 'rename pretty print common prefix and suffix overlap' ' ··· 242 git mv d/f/e d/f/f/e && 243 git commit -m "d/f/e d/f/f/e" && 244 git diff -M --summary HEAD^ HEAD >output && 245 - test_i18ngrep " d/f/{ => f}/e " output && 246 git diff -M --stat HEAD^ HEAD >output && 247 - test_i18ngrep " d/f/{ => f}/e " output 248 ' 249 250 test_expect_success 'diff-tree -l0 defaults to a big rename limit, not zero' '
··· 135 mkdir subdir && 136 git mv another-path subdir/path1 && 137 git status >out && 138 + test_grep "renamed: .*path1 -> subdir/path1" out 139 ' 140 141 test_expect_success 'test diff.renames=true for git status' ' 142 git -c diff.renames=true status >out && 143 + test_grep "renamed: .*path1 -> subdir/path1" out 144 ' 145 146 test_expect_success 'test diff.renames=false for git status' ' 147 git -c diff.renames=false status >out && 148 + test_grep ! "renamed: .*path1 -> subdir/path1" out && 149 + test_grep "new file: .*subdir/path1" out && 150 + test_grep "deleted: .*[^/]path1" out 151 ' 152 153 test_expect_success 'favour same basenames even with minor differences' ' 154 git show HEAD:path1 | sed "s/15/16/" > subdir/path1 && 155 git status >out && 156 + test_grep "renamed: .*path1 -> subdir/path1" out 157 ' 158 159 test_expect_success 'two files with same basename and same content' ' ··· 165 git commit -m 2 && 166 git mv dir other-dir && 167 git status >out && 168 + test_grep "renamed: .*dir/A/file -> other-dir/A/file" out 169 ' 170 171 test_expect_success 'setup for many rename source candidates' ' ··· 202 git mv a/b/c c/b/a && 203 git commit -m "a/b/c -> c/b/a" && 204 git diff -M --summary HEAD^ HEAD >output && 205 + test_grep " a/b/c => c/b/a " output && 206 git diff -M --stat HEAD^ HEAD >output && 207 + test_grep " a/b/c => c/b/a " output 208 ' 209 210 test_expect_success 'rename pretty print with common prefix' ' ··· 212 git mv c/b/a c/d/e && 213 git commit -m "c/b/a -> c/d/e" && 214 git diff -M --summary HEAD^ HEAD >output && 215 + test_grep " c/{b/a => d/e} " output && 216 git diff -M --stat HEAD^ HEAD >output && 217 + test_grep " c/{b/a => d/e} " output 218 ' 219 220 test_expect_success 'rename pretty print with common suffix' ' ··· 222 git mv c/d/e d/e && 223 git commit -m "c/d/e -> d/e" && 224 git diff -M --summary HEAD^ HEAD >output && 225 + test_grep " {c/d => d}/e " output && 226 git diff -M --stat HEAD^ HEAD >output && 227 + test_grep " {c/d => d}/e " output 228 ' 229 230 test_expect_success 'rename pretty print with common prefix and suffix' ' ··· 232 git mv d/e d/f/e && 233 git commit -m "d/e -> d/f/e" && 234 git diff -M --summary HEAD^ HEAD >output && 235 + test_grep " d/{ => f}/e " output && 236 git diff -M --stat HEAD^ HEAD >output && 237 + test_grep " d/{ => f}/e " output 238 ' 239 240 test_expect_success 'rename pretty print common prefix and suffix overlap' ' ··· 242 git mv d/f/e d/f/f/e && 243 git commit -m "d/f/e d/f/f/e" && 244 git diff -M --summary HEAD^ HEAD >output && 245 + test_grep " d/f/{ => f}/e " output && 246 git diff -M --stat HEAD^ HEAD >output && 247 + test_grep " d/f/{ => f}/e " output 248 ' 249 250 test_expect_success 'diff-tree -l0 defaults to a big rename limit, not zero' '
+1 -1
t/t4013-diff-various.sh
··· 613 614 test_expect_success 'diff -I<regex>: detect malformed regex' ' 615 test_expect_code 129 git diff --ignore-matching-lines="^[124-9" 2>error && 616 - test_i18ngrep "invalid regex given to -I: " error 617 ' 618 619 # check_prefix <patch> <src> <dst>
··· 613 614 test_expect_success 'diff -I<regex>: detect malformed regex' ' 615 test_expect_code 129 git diff --ignore-matching-lines="^[124-9" 2>error && 616 + test_grep "invalid regex given to -I: " error 617 ' 618 619 # check_prefix <patch> <src> <dst>
+6 -6
t/t4014-format-patch.sh
··· 2369 --q 2370 EOF 2371 git format-patch --cover-letter --interdiff=boop~2 -1 boop && 2372 - test_i18ngrep "^Interdiff:$" 0000-cover-letter.patch && 2373 - test_i18ngrep ! "^Interdiff:$" 0001-fleep.patch && 2374 sed "1,/^@@ /d; /^-- $/q" 0000-cover-letter.patch >actual && 2375 test_cmp expect actual 2376 ' 2377 2378 test_expect_success 'interdiff: reroll-count' ' 2379 git format-patch --cover-letter --interdiff=boop~2 -v2 -1 boop && 2380 - test_i18ngrep "^Interdiff ..* v1:$" v2-0000-cover-letter.patch 2381 ' 2382 2383 test_expect_success 'interdiff: reroll-count with a non-integer' ' 2384 git format-patch --cover-letter --interdiff=boop~2 -v2.2 -1 boop && 2385 - test_i18ngrep "^Interdiff:$" v2.2-0000-cover-letter.patch 2386 ' 2387 2388 test_expect_success 'interdiff: reroll-count with a integer' ' 2389 git format-patch --cover-letter --interdiff=boop~2 -v2 -1 boop && 2390 - test_i18ngrep "^Interdiff ..* v1:$" v2-0000-cover-letter.patch 2391 ' 2392 2393 test_expect_success 'interdiff: solo-patch' ' ··· 2396 2397 EOF 2398 git format-patch --interdiff=boop~2 -1 boop && 2399 - test_i18ngrep "^Interdiff:$" 0001-fleep.patch && 2400 sed "1,/^ @@ /d; /^$/q" 0001-fleep.patch >actual && 2401 test_cmp expect actual 2402 '
··· 2369 --q 2370 EOF 2371 git format-patch --cover-letter --interdiff=boop~2 -1 boop && 2372 + test_grep "^Interdiff:$" 0000-cover-letter.patch && 2373 + test_grep ! "^Interdiff:$" 0001-fleep.patch && 2374 sed "1,/^@@ /d; /^-- $/q" 0000-cover-letter.patch >actual && 2375 test_cmp expect actual 2376 ' 2377 2378 test_expect_success 'interdiff: reroll-count' ' 2379 git format-patch --cover-letter --interdiff=boop~2 -v2 -1 boop && 2380 + test_grep "^Interdiff ..* v1:$" v2-0000-cover-letter.patch 2381 ' 2382 2383 test_expect_success 'interdiff: reroll-count with a non-integer' ' 2384 git format-patch --cover-letter --interdiff=boop~2 -v2.2 -1 boop && 2385 + test_grep "^Interdiff:$" v2.2-0000-cover-letter.patch 2386 ' 2387 2388 test_expect_success 'interdiff: reroll-count with a integer' ' 2389 git format-patch --cover-letter --interdiff=boop~2 -v2 -1 boop && 2390 + test_grep "^Interdiff ..* v1:$" v2-0000-cover-letter.patch 2391 ' 2392 2393 test_expect_success 'interdiff: solo-patch' ' ··· 2396 2397 EOF 2398 git format-patch --interdiff=boop~2 -1 boop && 2399 + test_grep "^Interdiff:$" 0001-fleep.patch && 2400 sed "1,/^ @@ /d; /^$/q" 0001-fleep.patch >actual && 2401 test_cmp expect actual 2402 '
+10 -10
t/t4015-diff-whitespace.sh
··· 909 git commit -m "the other side" x && 910 git config core.autocrlf true && 911 test_must_fail git merge one-side >actual && 912 - test_i18ngrep "Automatic merge failed" actual && 913 914 git diff >actual.raw && 915 sed -e "1,/^@@@/d" actual.raw >actual && ··· 2187 2188 test_expect_success 'bogus settings in move detection erroring out' ' 2189 test_must_fail git diff --color-moved=bogus 2>err && 2190 - test_i18ngrep "must be one of" err && 2191 - test_i18ngrep bogus err && 2192 2193 test_must_fail git -c diff.colormoved=bogus diff 2>err && 2194 - test_i18ngrep "must be one of" err && 2195 - test_i18ngrep "from command-line config" err && 2196 2197 test_must_fail git diff --color-moved-ws=bogus 2>err && 2198 - test_i18ngrep "possible values" err && 2199 - test_i18ngrep bogus err && 2200 2201 test_must_fail git -c diff.colormovedws=bogus diff 2>err && 2202 - test_i18ngrep "possible values" err && 2203 - test_i18ngrep "from command-line config" err 2204 ' 2205 2206 test_expect_success 'compare whitespace delta incompatible with other space options' ' 2207 test_must_fail git diff \ 2208 --color-moved-ws=allow-indentation-change,ignore-all-space \ 2209 2>err && 2210 - test_i18ngrep allow-indentation-change err 2211 ' 2212 2213 EMPTY=''
··· 909 git commit -m "the other side" x && 910 git config core.autocrlf true && 911 test_must_fail git merge one-side >actual && 912 + test_grep "Automatic merge failed" actual && 913 914 git diff >actual.raw && 915 sed -e "1,/^@@@/d" actual.raw >actual && ··· 2187 2188 test_expect_success 'bogus settings in move detection erroring out' ' 2189 test_must_fail git diff --color-moved=bogus 2>err && 2190 + test_grep "must be one of" err && 2191 + test_grep bogus err && 2192 2193 test_must_fail git -c diff.colormoved=bogus diff 2>err && 2194 + test_grep "must be one of" err && 2195 + test_grep "from command-line config" err && 2196 2197 test_must_fail git diff --color-moved-ws=bogus 2>err && 2198 + test_grep "possible values" err && 2199 + test_grep bogus err && 2200 2201 test_must_fail git -c diff.colormovedws=bogus diff 2>err && 2202 + test_grep "possible values" err && 2203 + test_grep "from command-line config" err 2204 ' 2205 2206 test_expect_success 'compare whitespace delta incompatible with other space options' ' 2207 test_must_fail git diff \ 2208 --color-moved-ws=allow-indentation-change,ignore-all-space \ 2209 2>err && 2210 + test_grep allow-indentation-change err 2211 ' 2212 2213 EMPTY=''
+7 -7
t/t4018-diff-funcname.sh
··· 53 echo "*.java diff=$p" >.gitattributes && 54 test_expect_code 1 git diff --no-index \ 55 A.java B.java 2>msg && 56 - test_i18ngrep ! fatal msg && 57 - test_i18ngrep ! error msg 58 ' 59 test_expect_success "builtin $p wordRegex pattern compiles" ' 60 echo "*.java diff=$p" >.gitattributes && 61 test_expect_code 1 git diff --no-index --word-diff \ 62 A.java B.java 2>msg && 63 - test_i18ngrep ! fatal msg && 64 - test_i18ngrep ! error msg 65 ' 66 67 test_expect_success "builtin $p pattern compiles on bare repo with --attr-source" ' ··· 79 git -C bare.git symbolic-ref HEAD refs/heads/master && 80 test_expect_code 1 git -C bare.git --attr-source=branchA \ 81 diff --exit-code HEAD:A.java HEAD:B.java 2>msg && 82 - test_i18ngrep ! fatal msg && 83 - test_i18ngrep ! error msg 84 ' 85 done 86 ··· 88 echo "*.java diff=java" >.gitattributes && 89 test_config diff.java.funcname "!static" && 90 test_expect_code 128 git diff --no-index A.java B.java 2>msg && 91 - test_i18ngrep ": Last expression must not be negated:" msg 92 ' 93 94 test_expect_success 'setup hunk header tests' '
··· 53 echo "*.java diff=$p" >.gitattributes && 54 test_expect_code 1 git diff --no-index \ 55 A.java B.java 2>msg && 56 + test_grep ! fatal msg && 57 + test_grep ! error msg 58 ' 59 test_expect_success "builtin $p wordRegex pattern compiles" ' 60 echo "*.java diff=$p" >.gitattributes && 61 test_expect_code 1 git diff --no-index --word-diff \ 62 A.java B.java 2>msg && 63 + test_grep ! fatal msg && 64 + test_grep ! error msg 65 ' 66 67 test_expect_success "builtin $p pattern compiles on bare repo with --attr-source" ' ··· 79 git -C bare.git symbolic-ref HEAD refs/heads/master && 80 test_expect_code 1 git -C bare.git --attr-source=branchA \ 81 diff --exit-code HEAD:A.java HEAD:B.java 2>msg && 82 + test_grep ! fatal msg && 83 + test_grep ! error msg 84 ' 85 done 86 ··· 88 echo "*.java diff=java" >.gitattributes && 89 test_config diff.java.funcname "!static" && 90 test_expect_code 128 git diff --no-index A.java B.java 2>msg && 91 + test_grep ": Last expression must not be negated:" msg 92 ' 93 94 test_expect_success 'setup hunk header tests' '
+1 -1
t/t4031-diff-rewrite-binary.sh
··· 53 test_expect_success 'diff --stat counts binary rewrite as 0 lines' ' 54 git diff -B --stat --summary >diff && 55 grep "Bin" diff && 56 - test_i18ngrep "0 insertions.*0 deletions" diff && 57 grep " rewrite file" diff 58 ' 59
··· 53 test_expect_success 'diff --stat counts binary rewrite as 0 lines' ' 54 git diff -B --stat --summary >diff && 55 grep "Bin" diff && 56 + test_grep "0 insertions.*0 deletions" diff && 57 grep " rewrite file" diff 58 ' 59
+11 -11
t/t4047-diff-dirstat.sh
··· 943 test_must_fail git diff --dirstat=future_param,lines,0 HEAD^..HEAD >actual_diff_dirstat 2>actual_error && 944 test_debug "cat actual_error" && 945 test_must_be_empty actual_diff_dirstat && 946 - test_i18ngrep -q "future_param" actual_error && 947 - test_i18ngrep -q "\--dirstat" actual_error 948 ' 949 950 test_expect_success '--dirstat=dummy1,cumulative,2dummy should report both unrecognized parameters' ' 951 test_must_fail git diff --dirstat=dummy1,cumulative,2dummy HEAD^..HEAD >actual_diff_dirstat 2>actual_error && 952 test_debug "cat actual_error" && 953 test_must_be_empty actual_diff_dirstat && 954 - test_i18ngrep -q "dummy1" actual_error && 955 - test_i18ngrep -q "2dummy" actual_error && 956 - test_i18ngrep -q "\--dirstat" actual_error 957 ' 958 959 test_expect_success 'diff.dirstat=future_param,0,lines should warn, but still work' ' 960 git -c diff.dirstat=future_param,0,lines diff --dirstat HEAD^..HEAD >actual_diff_dirstat 2>actual_error && 961 test_debug "cat actual_error" && 962 test_cmp expect_diff_dirstat actual_diff_dirstat && 963 - test_i18ngrep -q "future_param" actual_error && 964 - test_i18ngrep -q "diff\\.dirstat" actual_error && 965 966 git -c diff.dirstat=future_param,0,lines diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M 2>actual_error && 967 test_debug "cat actual_error" && 968 test_cmp expect_diff_dirstat_M actual_diff_dirstat_M && 969 - test_i18ngrep -q "future_param" actual_error && 970 - test_i18ngrep -q "diff\\.dirstat" actual_error && 971 972 git -c diff.dirstat=future_param,0,lines diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC 2>actual_error && 973 test_debug "cat actual_error" && 974 test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC && 975 - test_i18ngrep -q "future_param" actual_error && 976 - test_i18ngrep -q "diff\\.dirstat" actual_error 977 ' 978 979 test_expect_success '--shortstat --dirstat should output only one dirstat' '
··· 943 test_must_fail git diff --dirstat=future_param,lines,0 HEAD^..HEAD >actual_diff_dirstat 2>actual_error && 944 test_debug "cat actual_error" && 945 test_must_be_empty actual_diff_dirstat && 946 + test_grep -q "future_param" actual_error && 947 + test_grep -q "\--dirstat" actual_error 948 ' 949 950 test_expect_success '--dirstat=dummy1,cumulative,2dummy should report both unrecognized parameters' ' 951 test_must_fail git diff --dirstat=dummy1,cumulative,2dummy HEAD^..HEAD >actual_diff_dirstat 2>actual_error && 952 test_debug "cat actual_error" && 953 test_must_be_empty actual_diff_dirstat && 954 + test_grep -q "dummy1" actual_error && 955 + test_grep -q "2dummy" actual_error && 956 + test_grep -q "\--dirstat" actual_error 957 ' 958 959 test_expect_success 'diff.dirstat=future_param,0,lines should warn, but still work' ' 960 git -c diff.dirstat=future_param,0,lines diff --dirstat HEAD^..HEAD >actual_diff_dirstat 2>actual_error && 961 test_debug "cat actual_error" && 962 test_cmp expect_diff_dirstat actual_diff_dirstat && 963 + test_grep -q "future_param" actual_error && 964 + test_grep -q "diff\\.dirstat" actual_error && 965 966 git -c diff.dirstat=future_param,0,lines diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M 2>actual_error && 967 test_debug "cat actual_error" && 968 test_cmp expect_diff_dirstat_M actual_diff_dirstat_M && 969 + test_grep -q "future_param" actual_error && 970 + test_grep -q "diff\\.dirstat" actual_error && 971 972 git -c diff.dirstat=future_param,0,lines diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC 2>actual_error && 973 test_debug "cat actual_error" && 974 test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC && 975 + test_grep -q "future_param" actual_error && 976 + test_grep -q "diff\\.dirstat" actual_error 977 ' 978 979 test_expect_success '--shortstat --dirstat should output only one dirstat' '
+1 -1
t/t4053-diff-no-index.sh
··· 56 export GIT_CEILING_DIRECTORIES && 57 cd non/git && 58 test_must_fail git diff --no-index a 2>actual.err && 59 - test_i18ngrep "usage: git diff --no-index" actual.err 60 ) 61 ' 62
··· 56 export GIT_CEILING_DIRECTORIES && 57 cd non/git && 58 test_must_fail git diff --no-index a 2>actual.err && 59 + test_grep "usage: git diff --no-index" actual.err 60 ) 61 ' 62
+2 -2
t/t4055-diff-context.sh
··· 74 test_expect_success 'non-integer config parsing' ' 75 git config diff.context no && 76 test_must_fail git diff 2>output && 77 - test_i18ngrep "bad numeric config value" output 78 ' 79 80 test_expect_success 'negative integer config parsing' ' 81 git config diff.context -1 && 82 test_must_fail git diff 2>output && 83 - test_i18ngrep "bad config variable" output 84 ' 85 86 test_expect_success '-U0 is valid, so is diff.context=0' '
··· 74 test_expect_success 'non-integer config parsing' ' 75 git config diff.context no && 76 test_must_fail git diff 2>output && 77 + test_grep "bad numeric config value" output 78 ' 79 80 test_expect_success 'negative integer config parsing' ' 81 git config diff.context -1 && 82 test_must_fail git diff 2>output && 83 + test_grep "bad config variable" output 84 ' 85 86 test_expect_success '-U0 is valid, so is diff.context=0' '
+14 -14
t/t4068-diff-symmetric-merge-base.sh
··· 68 69 test_expect_success 'diff with no merge bases' ' 70 test_must_fail git diff br2...br3 2>err && 71 - test_i18ngrep "fatal: br2...br3: no merge base" err 72 ' 73 74 test_expect_success 'diff with too many symmetric differences' ' 75 test_must_fail git diff br1...main br2...br3 2>err && 76 - test_i18ngrep "usage" err 77 ' 78 79 test_expect_success 'diff with symmetric difference and extraneous arg' ' 80 test_must_fail git diff main br1...main 2>err && 81 - test_i18ngrep "usage" err 82 ' 83 84 test_expect_success 'diff with two ranges' ' 85 test_must_fail git diff main br1..main br2..br3 2>err && 86 - test_i18ngrep "usage" err 87 ' 88 89 test_expect_success 'diff with ranges and extra arg' ' 90 test_must_fail git diff main br1..main commit-D 2>err && 91 - test_i18ngrep "usage" err 92 ' 93 94 test_expect_success 'diff --merge-base with no commits' ' ··· 97 98 test_expect_success 'diff --merge-base with three commits' ' 99 test_must_fail git diff --merge-base br1 br2 main 2>err && 100 - test_i18ngrep "usage" err 101 ' 102 103 for cmd in diff-index diff ··· 143 test_expect_success "$cmd --merge-base with non-commit" ' 144 git checkout main && 145 test_must_fail git $cmd --merge-base main^{tree} 2>err && 146 - test_i18ngrep "fatal: --merge-base only works with commits" err 147 ' 148 149 test_expect_success "$cmd --merge-base with no merge bases and one commit" ' 150 git checkout main && 151 test_must_fail git $cmd --merge-base br3 2>err && 152 - test_i18ngrep "fatal: no merge base found" err 153 ' 154 155 test_expect_success "$cmd --merge-base with multiple merge bases and one commit" ' 156 git checkout main && 157 test_must_fail git $cmd --merge-base br1 2>err && 158 - test_i18ngrep "fatal: multiple merge bases found" err 159 ' 160 done 161 ··· 169 170 test_expect_success "$cmd --merge-base commit and non-commit" ' 171 test_must_fail git $cmd --merge-base br2 main^{tree} 2>err && 172 - test_i18ngrep "fatal: --merge-base only works with commits" err 173 ' 174 175 test_expect_success "$cmd --merge-base with no merge bases and two commits" ' 176 test_must_fail git $cmd --merge-base br2 br3 2>err && 177 - test_i18ngrep "fatal: no merge base found" err 178 ' 179 180 test_expect_success "$cmd --merge-base with multiple merge bases and two commits" ' 181 test_must_fail git $cmd --merge-base main br1 2>err && 182 - test_i18ngrep "fatal: multiple merge bases found" err 183 ' 184 done 185 186 test_expect_success 'diff-tree --merge-base with one commit' ' 187 test_must_fail git diff-tree --merge-base main 2>err && 188 - test_i18ngrep "fatal: --merge-base only works with two commits" err 189 ' 190 191 test_expect_success 'diff --merge-base with range' ' 192 test_must_fail git diff --merge-base br2..br3 2>err && 193 - test_i18ngrep "fatal: --merge-base does not work with ranges" err 194 ' 195 196 test_done
··· 68 69 test_expect_success 'diff with no merge bases' ' 70 test_must_fail git diff br2...br3 2>err && 71 + test_grep "fatal: br2...br3: no merge base" err 72 ' 73 74 test_expect_success 'diff with too many symmetric differences' ' 75 test_must_fail git diff br1...main br2...br3 2>err && 76 + test_grep "usage" err 77 ' 78 79 test_expect_success 'diff with symmetric difference and extraneous arg' ' 80 test_must_fail git diff main br1...main 2>err && 81 + test_grep "usage" err 82 ' 83 84 test_expect_success 'diff with two ranges' ' 85 test_must_fail git diff main br1..main br2..br3 2>err && 86 + test_grep "usage" err 87 ' 88 89 test_expect_success 'diff with ranges and extra arg' ' 90 test_must_fail git diff main br1..main commit-D 2>err && 91 + test_grep "usage" err 92 ' 93 94 test_expect_success 'diff --merge-base with no commits' ' ··· 97 98 test_expect_success 'diff --merge-base with three commits' ' 99 test_must_fail git diff --merge-base br1 br2 main 2>err && 100 + test_grep "usage" err 101 ' 102 103 for cmd in diff-index diff ··· 143 test_expect_success "$cmd --merge-base with non-commit" ' 144 git checkout main && 145 test_must_fail git $cmd --merge-base main^{tree} 2>err && 146 + test_grep "fatal: --merge-base only works with commits" err 147 ' 148 149 test_expect_success "$cmd --merge-base with no merge bases and one commit" ' 150 git checkout main && 151 test_must_fail git $cmd --merge-base br3 2>err && 152 + test_grep "fatal: no merge base found" err 153 ' 154 155 test_expect_success "$cmd --merge-base with multiple merge bases and one commit" ' 156 git checkout main && 157 test_must_fail git $cmd --merge-base br1 2>err && 158 + test_grep "fatal: multiple merge bases found" err 159 ' 160 done 161 ··· 169 170 test_expect_success "$cmd --merge-base commit and non-commit" ' 171 test_must_fail git $cmd --merge-base br2 main^{tree} 2>err && 172 + test_grep "fatal: --merge-base only works with commits" err 173 ' 174 175 test_expect_success "$cmd --merge-base with no merge bases and two commits" ' 176 test_must_fail git $cmd --merge-base br2 br3 2>err && 177 + test_grep "fatal: no merge base found" err 178 ' 179 180 test_expect_success "$cmd --merge-base with multiple merge bases and two commits" ' 181 test_must_fail git $cmd --merge-base main br1 2>err && 182 + test_grep "fatal: multiple merge bases found" err 183 ' 184 done 185 186 test_expect_success 'diff-tree --merge-base with one commit' ' 187 test_must_fail git diff-tree --merge-base main 2>err && 188 + test_grep "fatal: --merge-base only works with two commits" err 189 ' 190 191 test_expect_success 'diff --merge-base with range' ' 192 test_must_fail git diff --merge-base br2..br3 2>err && 193 + test_grep "fatal: --merge-base does not work with ranges" err 194 ' 195 196 test_done
+1 -1
t/t4115-apply-symlink.sh
··· 136 137 ln -s foo file.t.rej && 138 test_must_fail git apply patch --reject 2>err && 139 - test_i18ngrep "Rejected hunk" err && 140 test_path_is_missing foo && 141 test_path_is_file file.t.rej 142 '
··· 136 137 ln -s foo file.t.rej && 138 test_must_fail git apply patch --reject 2>err && 139 + test_grep "Rejected hunk" err && 140 test_path_is_missing foo && 141 test_path_is_file file.t.rej 142 '
+2 -2
t/t4120-apply-popt.sh
··· 31 test_expect_success 'apply with too large -p' ' 32 cp file1.saved file1 && 33 test_must_fail git apply --stat -p3 patch.file 2>err && 34 - test_i18ngrep "removing 3 leading" err 35 ' 36 37 test_expect_success 'apply (-p2) traditional diff with funny filenames' ' ··· 53 test_expect_success 'apply with too large -p and fancy filename' ' 54 cp file1.saved file1 && 55 test_must_fail git apply --stat -p3 patch.escaped 2>err && 56 - test_i18ngrep "removing 3 leading" err 57 ' 58 59 test_expect_success 'apply (-p2) diff, mode change only' '
··· 31 test_expect_success 'apply with too large -p' ' 32 cp file1.saved file1 && 33 test_must_fail git apply --stat -p3 patch.file 2>err && 34 + test_grep "removing 3 leading" err 35 ' 36 37 test_expect_success 'apply (-p2) traditional diff with funny filenames' ' ··· 53 test_expect_success 'apply with too large -p and fancy filename' ' 54 cp file1.saved file1 && 55 test_must_fail git apply --stat -p3 patch.escaped 2>err && 56 + test_grep "removing 3 leading" err 57 ' 58 59 test_expect_success 'apply (-p2) diff, mode change only' '
+2 -2
t/t4129-apply-samemode.sh
··· 66 test_expect_success FILEMODE 'empty mode is rejected' ' 67 git reset --hard && 68 test_must_fail git apply patch-empty-mode.txt 2>err && 69 - test_i18ngrep "invalid mode" err 70 ' 71 72 test_expect_success FILEMODE 'bogus mode is rejected' ' 73 git reset --hard && 74 test_must_fail git apply patch-bogus-mode.txt 2>err && 75 - test_i18ngrep "invalid mode" err 76 ' 77 78 test_expect_success POSIXPERM 'do not use core.sharedRepository for working tree files' '
··· 66 test_expect_success FILEMODE 'empty mode is rejected' ' 67 git reset --hard && 68 test_must_fail git apply patch-empty-mode.txt 2>err && 69 + test_grep "invalid mode" err 70 ' 71 72 test_expect_success FILEMODE 'bogus mode is rejected' ' 73 git reset --hard && 74 test_must_fail git apply patch-bogus-mode.txt 2>err && 75 + test_grep "invalid mode" err 76 ' 77 78 test_expect_success POSIXPERM 'do not use core.sharedRepository for working tree files' '
+4 -4
t/t4133-apply-filenames.sh
··· 32 33 test_expect_success 'apply diff with inconsistent filenames in headers' ' 34 test_must_fail git apply bad1.patch 2>err && 35 - test_i18ngrep "inconsistent new filename" err && 36 test_must_fail git apply bad2.patch 2>err && 37 - test_i18ngrep "inconsistent old filename" err 38 ' 39 40 test_expect_success 'apply diff with new filename missing from headers' ' ··· 46 +1 47 EOF 48 test_must_fail git apply missing_new_filename.diff 2>err && 49 - test_i18ngrep "lacks filename information" err 50 ' 51 52 test_expect_success 'apply diff with old filename missing from headers' ' ··· 58 -1 59 EOF 60 test_must_fail git apply missing_old_filename.diff 2>err && 61 - test_i18ngrep "lacks filename information" err 62 ' 63 64 test_done
··· 32 33 test_expect_success 'apply diff with inconsistent filenames in headers' ' 34 test_must_fail git apply bad1.patch 2>err && 35 + test_grep "inconsistent new filename" err && 36 test_must_fail git apply bad2.patch 2>err && 37 + test_grep "inconsistent old filename" err 38 ' 39 40 test_expect_success 'apply diff with new filename missing from headers' ' ··· 46 +1 47 EOF 48 test_must_fail git apply missing_new_filename.diff 2>err && 49 + test_grep "lacks filename information" err 50 ' 51 52 test_expect_success 'apply diff with old filename missing from headers' ' ··· 58 -1 59 EOF 60 test_must_fail git apply missing_old_filename.diff 2>err && 61 + test_grep "lacks filename information" err 62 ' 63 64 test_done
+2 -2
t/t4150-am.sh
··· 779 test_must_fail git am --resolved >err && 780 test_path_is_dir .git/rebase-apply && 781 test_cmp_rev second HEAD && 782 - test_i18ngrep "still have unmerged paths" err 783 ' 784 785 test_expect_success 'am takes patches from a Pine mailbox' ' ··· 913 test_tick && 914 sed -e "s/second/second \\\n foo/" patch1 >patchnl && 915 git am <patchnl >output.out 2>&1 && 916 - test_i18ngrep "^Applying: second \\\n foo$" output.out 917 ' 918 919 test_expect_success 'am -q is quiet' '
··· 779 test_must_fail git am --resolved >err && 780 test_path_is_dir .git/rebase-apply && 781 test_cmp_rev second HEAD && 782 + test_grep "still have unmerged paths" err 783 ' 784 785 test_expect_success 'am takes patches from a Pine mailbox' ' ··· 913 test_tick && 914 sed -e "s/second/second \\\n foo/" patch1 >patchnl && 915 git am <patchnl >output.out 2>&1 && 916 + test_grep "^Applying: second \\\n foo$" output.out 917 ' 918 919 test_expect_success 'am -q is quiet' '
+1 -1
t/t4151-am-abort.sh
··· 46 47 test_expect_success "am$with3 --skip continue after failed am$with3" ' 48 test_must_fail git am$with3 --skip >output && 49 - test_i18ngrep "^Applying: 6$" output && 50 test_cmp file-2-expect file-2 && 51 test ! -f .git/MERGE_RR 52 '
··· 46 47 test_expect_success "am$with3 --skip continue after failed am$with3" ' 48 test_must_fail git am$with3 --skip >output && 49 + test_grep "^Applying: 6$" output && 50 test_cmp file-2-expect file-2 && 51 test ! -f .git/MERGE_RR 52 '
+1 -1
t/t4153-am-resume-override-opts.sh
··· 53 # Applying side1 will be quiet. 54 test_must_fail git am --quiet side[123].eml >out && 55 test_path_is_dir .git/rebase-apply && 56 - test_i18ngrep ! "^Applying: " out && 57 echo side1 >file && 58 git add file && 59
··· 53 # Applying side1 will be quiet. 54 test_must_fail git am --quiet side[123].eml >out && 55 test_path_is_dir .git/rebase-apply && 56 + test_grep ! "^Applying: " out && 57 echo side1 >file && 58 git add file && 59
+2 -2
t/t4200-rerere.sh
··· 433 git update-index --index-info <failedmerge && 434 cp file3.conflict file3 && 435 test_must_fail git rerere --no-no-rerere-autoupdate 2>err && 436 - test_i18ngrep [Uu]sage err && 437 test_must_fail git update-index --refresh 438 ' 439 440 test_expect_success 'rerere -h' ' 441 test_must_fail git rerere -h >help && 442 - test_i18ngrep [Uu]sage help 443 ' 444 445 concat_insert () {
··· 433 git update-index --index-info <failedmerge && 434 cp file3.conflict file3 && 435 test_must_fail git rerere --no-no-rerere-autoupdate 2>err && 436 + test_grep [Uu]sage err && 437 test_must_fail git update-index --refresh 438 ' 439 440 test_expect_success 'rerere -h' ' 441 test_must_fail git rerere -h >help && 442 + test_grep [Uu]sage help 443 ' 444 445 concat_insert () {
+1 -1
t/t4201-shortlog.sh
··· 139 140 test_expect_success 'shortlog from non-git directory refuses extra arguments' ' 141 test_must_fail env GIT_DIR=non-existing git shortlog foo 2>out && 142 - test_i18ngrep "too many arguments" out 143 ' 144 145 test_expect_success 'shortlog should add newline when input line matches wraplen' '
··· 139 140 test_expect_success 'shortlog from non-git directory refuses extra arguments' ' 141 test_must_fail env GIT_DIR=non-existing git shortlog foo 2>out && 142 + test_grep "too many arguments" out 143 ' 144 145 test_expect_success 'shortlog should add newline when input line matches wraplen' '
+9 -9
t/t4202-log.sh
··· 1884 1885 test_expect_success '--reverse and --graph conflict' ' 1886 test_must_fail git log --reverse --graph 2>stderr && 1887 - test_i18ngrep "cannot be used together" stderr 1888 ' 1889 1890 test_expect_success '--reverse --graph --no-graph works' ' ··· 1895 1896 test_expect_success '--show-linear-break and --graph conflict' ' 1897 test_must_fail git log --show-linear-break --graph 2>stderr && 1898 - test_i18ngrep "cannot be used together" stderr 1899 ' 1900 1901 test_expect_success '--show-linear-break --graph --no-graph works' ' ··· 1906 1907 test_expect_success '--no-walk and --graph conflict' ' 1908 test_must_fail git log --no-walk --graph 2>stderr && 1909 - test_i18ngrep "cannot be used together" stderr 1910 ' 1911 1912 test_expect_success '--no-walk --graph --no-graph works' ' ··· 1917 1918 test_expect_success '--walk-reflogs and --graph conflict' ' 1919 test_must_fail git log --walk-reflogs --graph 2>stderr && 1920 - (test_i18ngrep "cannot combine" stderr || 1921 - test_i18ngrep "cannot be used together" stderr) 1922 ' 1923 1924 test_expect_success '--walk-reflogs --graph --no-graph works' ' ··· 2252 git init empty && 2253 test_when_finished "rm -rf empty" && 2254 test_must_fail git -C empty log 2>stderr && 2255 - test_i18ngrep does.not.have.any.commits stderr 2256 ' 2257 2258 test_expect_success REFFILES 'log diagnoses bogus HEAD hash' ' ··· 2260 test_when_finished "rm -rf empty" && 2261 echo 1234abcd >empty/.git/refs/heads/main && 2262 test_must_fail git -C empty log 2>stderr && 2263 - test_i18ngrep broken stderr 2264 ' 2265 2266 test_expect_success REFFILES 'log diagnoses bogus HEAD symref' ' 2267 git init empty && 2268 echo "ref: refs/heads/invalid.lock" > empty/.git/HEAD && 2269 test_must_fail git -C empty log 2>stderr && 2270 - test_i18ngrep broken stderr && 2271 test_must_fail git -C empty log --default totally-bogus 2>stderr && 2272 - test_i18ngrep broken stderr 2273 ' 2274 2275 test_expect_success 'log does not default to HEAD when rev input is given' '
··· 1884 1885 test_expect_success '--reverse and --graph conflict' ' 1886 test_must_fail git log --reverse --graph 2>stderr && 1887 + test_grep "cannot be used together" stderr 1888 ' 1889 1890 test_expect_success '--reverse --graph --no-graph works' ' ··· 1895 1896 test_expect_success '--show-linear-break and --graph conflict' ' 1897 test_must_fail git log --show-linear-break --graph 2>stderr && 1898 + test_grep "cannot be used together" stderr 1899 ' 1900 1901 test_expect_success '--show-linear-break --graph --no-graph works' ' ··· 1906 1907 test_expect_success '--no-walk and --graph conflict' ' 1908 test_must_fail git log --no-walk --graph 2>stderr && 1909 + test_grep "cannot be used together" stderr 1910 ' 1911 1912 test_expect_success '--no-walk --graph --no-graph works' ' ··· 1917 1918 test_expect_success '--walk-reflogs and --graph conflict' ' 1919 test_must_fail git log --walk-reflogs --graph 2>stderr && 1920 + (test_grep "cannot combine" stderr || 1921 + test_grep "cannot be used together" stderr) 1922 ' 1923 1924 test_expect_success '--walk-reflogs --graph --no-graph works' ' ··· 2252 git init empty && 2253 test_when_finished "rm -rf empty" && 2254 test_must_fail git -C empty log 2>stderr && 2255 + test_grep does.not.have.any.commits stderr 2256 ' 2257 2258 test_expect_success REFFILES 'log diagnoses bogus HEAD hash' ' ··· 2260 test_when_finished "rm -rf empty" && 2261 echo 1234abcd >empty/.git/refs/heads/main && 2262 test_must_fail git -C empty log 2>stderr && 2263 + test_grep broken stderr 2264 ' 2265 2266 test_expect_success REFFILES 'log diagnoses bogus HEAD symref' ' 2267 git init empty && 2268 echo "ref: refs/heads/invalid.lock" > empty/.git/HEAD && 2269 test_must_fail git -C empty log 2>stderr && 2270 + test_grep broken stderr && 2271 test_must_fail git -C empty log --default totally-bogus 2>stderr && 2272 + test_grep broken stderr 2273 ' 2274 2275 test_expect_success 'log does not default to HEAD when rev input is given' '
+1 -1
t/t4203-mailmap.sh
··· 360 cp default.map .mailmap && 361 362 git -c mailmap.blob=HEAD: shortlog HEAD >actual 2>err && 363 - test_i18ngrep "mailmap is not a blob" err && 364 test_cmp expect actual 365 ' 366
··· 360 cp default.map .mailmap && 361 362 git -c mailmap.blob=HEAD: shortlog HEAD >actual 2>err && 363 + test_grep "mailmap is not a blob" err && 364 test_cmp expect actual 365 ' 366
+3 -3
t/t4208-log-magic-pathspec.sh
··· 21 test_expect_success '"git log :/a" should be ambiguous (applied both rev and worktree)' ' 22 : >a && 23 test_must_fail git log :/a 2>error && 24 - test_i18ngrep ambiguous error 25 ' 26 27 test_expect_success '"git log :/a -- " should not be ambiguous' ' ··· 65 66 test_expect_success '"git log :" should be ambiguous' ' 67 test_must_fail git log : 2>error && 68 - test_i18ngrep ambiguous error 69 ' 70 71 test_expect_success 'git log -- :' ' ··· 104 105 test_expect_success '"git log :(unknown-magic) complains of bogus magic' ' 106 test_must_fail git log ":(unknown-magic)" 2>error && 107 - test_i18ngrep pathspec.magic error 108 ' 109 110 test_expect_success 'command line pathspec parsing for "git log"' '
··· 21 test_expect_success '"git log :/a" should be ambiguous (applied both rev and worktree)' ' 22 : >a && 23 test_must_fail git log :/a 2>error && 24 + test_grep ambiguous error 25 ' 26 27 test_expect_success '"git log :/a -- " should not be ambiguous' ' ··· 65 66 test_expect_success '"git log :" should be ambiguous' ' 67 test_must_fail git log : 2>error && 68 + test_grep ambiguous error 69 ' 70 71 test_expect_success 'git log -- :' ' ··· 104 105 test_expect_success '"git log :(unknown-magic) complains of bogus magic' ' 106 test_must_fail git log ":(unknown-magic)" 2>error && 107 + test_grep pathspec.magic error 108 ' 109 110 test_expect_success 'command line pathspec parsing for "git log"' '
+2 -2
t/t4209-log-pickaxe.sh
··· 57 58 test_expect_success 'usage' ' 59 test_expect_code 129 git log -S 2>err && 60 - test_i18ngrep "switch.*requires a value" err && 61 62 test_expect_code 129 git log -G 2>err && 63 - test_i18ngrep "switch.*requires a value" err && 64 65 test_expect_code 128 git log -Gregex -Sstring 2>err && 66 grep "cannot be used together" err &&
··· 57 58 test_expect_success 'usage' ' 59 test_expect_code 129 git log -S 2>err && 60 + test_grep "switch.*requires a value" err && 61 62 test_expect_code 129 git log -G 2>err && 63 + test_grep "switch.*requires a value" err && 64 65 test_expect_code 128 git log -Gregex -Sstring 2>err && 66 grep "cannot be used together" err &&
+2 -2
t/t4211-line-log.sh
··· 19 20 # -L requires there is no pathspec 21 test_must_fail git log -L1,1:b.c -- b.c 2>error && 22 - test_i18ngrep "cannot be used with pathspec" error && 23 24 # This would fail because --follow wants a single path, but 25 # we may fail due to incompatibility between -L/--follow in ··· 50 test_bad_opts () { 51 test_expect_success "invalid args: $1" " 52 test_must_fail git log $1 2>errors && 53 - test_i18ngrep '$2' errors 54 " 55 } 56
··· 19 20 # -L requires there is no pathspec 21 test_must_fail git log -L1,1:b.c -- b.c 2>error && 22 + test_grep "cannot be used with pathspec" error && 23 24 # This would fail because --follow wants a single path, but 25 # we may fail due to incompatibility between -L/--follow in ··· 50 test_bad_opts () { 51 test_expect_success "invalid args: $1" " 52 test_must_fail git log $1 2>errors && 53 + test_grep '$2' errors 54 " 55 } 56
+1 -1
t/t4212-log-corrupt.sh
··· 17 18 test_expect_success 'fsck notices broken commit' ' 19 test_must_fail git fsck 2>actual && 20 - test_i18ngrep invalid.author actual 21 ' 22 23 test_expect_success 'git log with broken author email' '
··· 17 18 test_expect_success 'fsck notices broken commit' ' 19 test_must_fail git fsck 2>actual && 20 + test_grep invalid.author actual 21 ' 22 23 test_expect_success 'git log with broken author email' '
+1 -1
t/t4256-am-format-flowed.sh
··· 13 14 test_expect_success 'am with format=flowed' ' 15 git am <"$TEST_DIRECTORY/t4256/1/patch" 2>stderr && 16 - test_i18ngrep "warning: Patch sent with format=flowed" stderr && 17 test_cmp "$TEST_DIRECTORY/t4256/1/mailinfo.c" mailinfo.c 18 ' 19
··· 13 14 test_expect_success 'am with format=flowed' ' 15 git am <"$TEST_DIRECTORY/t4256/1/patch" 2>stderr && 16 + test_grep "warning: Patch sent with format=flowed" stderr && 17 test_cmp "$TEST_DIRECTORY/t4256/1/mailinfo.c" mailinfo.c 18 ' 19
+2 -2
t/t5300-pack-object.sh
··· 541 ( 542 cd corrupt && 543 test_must_fail git index-pack -o ../bad.idx ../test-3.pack 2>msg && 544 - test_i18ngrep "SHA1 COLLISION FOUND" msg 545 ) 546 ' 547 ··· 549 ( 550 cd corrupt && 551 test_must_fail git -c core.bigfilethreshold=1 index-pack -o ../bad.idx ../test-3.pack 2>msg && 552 - test_i18ngrep "SHA1 COLLISION FOUND" msg 553 ) 554 ' 555
··· 541 ( 542 cd corrupt && 543 test_must_fail git index-pack -o ../bad.idx ../test-3.pack 2>msg && 544 + test_grep "SHA1 COLLISION FOUND" msg 545 ) 546 ' 547 ··· 549 ( 550 cd corrupt && 551 test_must_fail git -c core.bigfilethreshold=1 index-pack -o ../bad.idx ../test-3.pack 2>msg && 552 + test_grep "SHA1 COLLISION FOUND" msg 553 ) 554 ' 555
+2 -2
t/t5302-pack-index.sh
··· 282 test_expect_success 'index-pack -v --stdin produces progress for both phases' ' 283 pack=$(git pack-objects --all pack </dev/null) && 284 GIT_PROGRESS_DELAY=0 git index-pack -v --stdin <pack-$pack.pack 2>err && 285 - test_i18ngrep "Receiving objects" err && 286 - test_i18ngrep "Resolving deltas" err 287 ' 288 289 test_expect_success 'too-large packs report the breach' '
··· 282 test_expect_success 'index-pack -v --stdin produces progress for both phases' ' 283 pack=$(git pack-objects --all pack </dev/null) && 284 GIT_PROGRESS_DELAY=0 git index-pack -v --stdin <pack-$pack.pack 2>err && 285 + test_grep "Receiving objects" err && 286 + test_grep "Resolving deltas" err 287 ' 288 289 test_expect_success 'too-large packs report the breach' '
+2 -2
t/t5304-prune.sh
··· 318 319 test_expect_success 'prune: handle expire option correctly' ' 320 test_must_fail git prune --expire 2>error && 321 - test_i18ngrep "requires a value" error && 322 323 test_must_fail git prune --expire=nyah 2>error && 324 - test_i18ngrep "malformed expiration" error && 325 326 git prune --no-expire 327 '
··· 318 319 test_expect_success 'prune: handle expire option correctly' ' 320 test_must_fail git prune --expire 2>error && 321 + test_grep "requires a value" error && 322 323 test_must_fail git prune --expire=nyah 2>error && 324 + test_grep "malformed expiration" error && 325 326 git prune --no-expire 327 '
+4 -4
t/t5310-pack-bitmaps.sh
··· 271 mv -f $bitmap.tmp $bitmap && 272 git rev-list --use-bitmap-index --count --all >actual 2>stderr && 273 test_cmp expect actual && 274 - test_i18ngrep corrupt.ewah.bitmap stderr 275 ' 276 277 test_expect_success 'truncated bitmap fails gracefully (cache)' ' ··· 284 mv -f $bitmap.tmp $bitmap && 285 git rev-list --use-bitmap-index --count --all >actual 2>stderr && 286 test_cmp expect actual && 287 - test_i18ngrep corrupted.bitmap.index stderr 288 ' 289 290 # Create a state of history with these properties: ··· 471 test_expect_success 'incremental repack fails when bitmaps are requested' ' 472 test_commit more-1 && 473 test_must_fail git repack -d 2>err && 474 - test_i18ngrep "Incremental repacks are incompatible with bitmap" err 475 ' 476 477 test_expect_success 'incremental repack can disable bitmaps' ' ··· 524 mv -f $bitmap.tmp $bitmap && 525 git rev-list --use-bitmap-index --count --all >actual 2>stderr && 526 test_cmp expect actual && 527 - test_i18ngrep corrupted.bitmap.index stderr 528 ' 529 530 test_done
··· 271 mv -f $bitmap.tmp $bitmap && 272 git rev-list --use-bitmap-index --count --all >actual 2>stderr && 273 test_cmp expect actual && 274 + test_grep corrupt.ewah.bitmap stderr 275 ' 276 277 test_expect_success 'truncated bitmap fails gracefully (cache)' ' ··· 284 mv -f $bitmap.tmp $bitmap && 285 git rev-list --use-bitmap-index --count --all >actual 2>stderr && 286 test_cmp expect actual && 287 + test_grep corrupted.bitmap.index stderr 288 ' 289 290 # Create a state of history with these properties: ··· 471 test_expect_success 'incremental repack fails when bitmaps are requested' ' 472 test_commit more-1 && 473 test_must_fail git repack -d 2>err && 474 + test_grep "Incremental repacks are incompatible with bitmap" err 475 ' 476 477 test_expect_success 'incremental repack can disable bitmaps' ' ··· 524 mv -f $bitmap.tmp $bitmap && 525 git rev-list --use-bitmap-index --count --all >actual 2>stderr && 526 test_cmp expect actual && 527 + test_grep corrupted.bitmap.index stderr 528 ' 529 530 test_done
+9 -9
t/t5318-commit-graph.sh
··· 47 echo doesnotexist >in && 48 test_expect_code 1 git -C full commit-graph write --stdin-packs \ 49 <in 2>stderr && 50 - test_i18ngrep "error adding pack" stderr 51 ' 52 53 test_expect_success 'create commits and repack' ' ··· 67 # invalid, non-hex OID 68 echo HEAD | test_expect_code 1 git -C full commit-graph write \ 69 --stdin-commits 2>stderr && 70 - test_i18ngrep "unexpected non-hex object ID: HEAD" stderr && 71 # non-existent OID 72 echo $ZERO_OID | test_expect_code 1 git -C full commit-graph write \ 73 --stdin-commits 2>stderr && 74 - test_i18ngrep "invalid object" stderr && 75 # valid commit and tree OID 76 git -C full rev-parse HEAD HEAD^{tree} >in && 77 git -C full commit-graph write --stdin-commits <in && ··· 143 git -C full rev-parse commits/5 >in && 144 GIT_PROGRESS_DELAY=0 git -C full commit-graph write --stdin-commits \ 145 --progress <in 2>err && 146 - test_i18ngrep "Collecting commits from input" err 147 ' 148 149 test_expect_success 'commit-graph write --stdin-commits with the --no-progress option' ' ··· 383 cd sha1 && 384 mv ../cg-sha256 .git/objects/info/commit-graph && 385 git log -1 2>err && 386 - test_i18ngrep "commit-graph hash version 2 does not match version 1" err 387 ) && 388 ( 389 cd sha256 && 390 mv ../cg-sha1 .git/objects/info/commit-graph && 391 git log -1 2>err && 392 - test_i18ngrep "commit-graph hash version 1 does not match version 2" err 393 ) 394 ' 395 ··· 473 grepstr=$1 474 test_must_fail git -C full commit-graph verify 2>test_err && 475 grep -v "^+" test_err >err && 476 - test_i18ngrep "$grepstr" err && 477 if test "$2" != "no-copy" 478 then 479 cp full/$objdir/info/commit-graph commit-graph-pre-write-test ··· 714 git commit-tree -p "$broken" -m "good commit" "$empty" >good && 715 test_must_fail git commit-graph write --stdin-commits \ 716 <good 2>test_err && 717 - test_i18ngrep "unable to parse commit" test_err 718 ) 719 ' 720 ··· 735 git commit-tree -p "$broken" -m "good" "$tree" >good && 736 test_must_fail git commit-graph write --stdin-commits \ 737 <good 2>test_err && 738 - test_i18ngrep "unable to parse commit" test_err 739 ) 740 ' 741
··· 47 echo doesnotexist >in && 48 test_expect_code 1 git -C full commit-graph write --stdin-packs \ 49 <in 2>stderr && 50 + test_grep "error adding pack" stderr 51 ' 52 53 test_expect_success 'create commits and repack' ' ··· 67 # invalid, non-hex OID 68 echo HEAD | test_expect_code 1 git -C full commit-graph write \ 69 --stdin-commits 2>stderr && 70 + test_grep "unexpected non-hex object ID: HEAD" stderr && 71 # non-existent OID 72 echo $ZERO_OID | test_expect_code 1 git -C full commit-graph write \ 73 --stdin-commits 2>stderr && 74 + test_grep "invalid object" stderr && 75 # valid commit and tree OID 76 git -C full rev-parse HEAD HEAD^{tree} >in && 77 git -C full commit-graph write --stdin-commits <in && ··· 143 git -C full rev-parse commits/5 >in && 144 GIT_PROGRESS_DELAY=0 git -C full commit-graph write --stdin-commits \ 145 --progress <in 2>err && 146 + test_grep "Collecting commits from input" err 147 ' 148 149 test_expect_success 'commit-graph write --stdin-commits with the --no-progress option' ' ··· 383 cd sha1 && 384 mv ../cg-sha256 .git/objects/info/commit-graph && 385 git log -1 2>err && 386 + test_grep "commit-graph hash version 2 does not match version 1" err 387 ) && 388 ( 389 cd sha256 && 390 mv ../cg-sha1 .git/objects/info/commit-graph && 391 git log -1 2>err && 392 + test_grep "commit-graph hash version 1 does not match version 2" err 393 ) 394 ' 395 ··· 473 grepstr=$1 474 test_must_fail git -C full commit-graph verify 2>test_err && 475 grep -v "^+" test_err >err && 476 + test_grep "$grepstr" err && 477 if test "$2" != "no-copy" 478 then 479 cp full/$objdir/info/commit-graph commit-graph-pre-write-test ··· 714 git commit-tree -p "$broken" -m "good commit" "$empty" >good && 715 test_must_fail git commit-graph write --stdin-commits \ 716 <good 2>test_err && 717 + test_grep "unable to parse commit" test_err 718 ) 719 ' 720 ··· 735 git commit-tree -p "$broken" -m "good" "$tree" >good && 736 test_must_fail git commit-graph write --stdin-commits \ 737 <good 2>test_err && 738 + test_grep "unable to parse commit" test_err 739 ) 740 ' 741
+5 -5
t/t5319-multi-pack-index.sh
··· 279 cd sha1 && 280 mv ../mpi-sha256 .git/objects/pack/multi-pack-index && 281 git log -1 2>err && 282 - test_i18ngrep "multi-pack-index hash version 2 does not match version 1" err 283 ) && 284 ( 285 cd sha256 && 286 mv ../mpi-sha1 .git/objects/pack/multi-pack-index && 287 git log -1 2>err && 288 - test_i18ngrep "multi-pack-index hash version 1 does not match version 2" err 289 ) 290 ' 291 ··· 386 printf "$DATA" | dd of="$FILE" bs=1 seek="$POS" conv=notrunc && 387 test_must_fail $COMMAND 2>test_err && 388 grep -v "^+" test_err >err && 389 - test_i18ngrep "$GREPSTR" err 390 } 391 392 test_expect_success 'verify bad signature' ' ··· 501 corrupt_midx_and_verify $MIDX_BYTE_OFFSET "\377" $objdir \ 502 "incorrect object offset" && 503 git multi-pack-index write 2>err && 504 - test_i18ngrep checksum.mismatch err && 505 git multi-pack-index verify 506 ' 507 ··· 1031 1032 test_expect_success 'usage shown without sub-command' ' 1033 test_expect_code 129 git multi-pack-index 2>err && 1034 - ! test_i18ngrep "unrecognized subcommand" err 1035 ' 1036 1037 test_expect_success 'complains when run outside of a repository' '
··· 279 cd sha1 && 280 mv ../mpi-sha256 .git/objects/pack/multi-pack-index && 281 git log -1 2>err && 282 + test_grep "multi-pack-index hash version 2 does not match version 1" err 283 ) && 284 ( 285 cd sha256 && 286 mv ../mpi-sha1 .git/objects/pack/multi-pack-index && 287 git log -1 2>err && 288 + test_grep "multi-pack-index hash version 1 does not match version 2" err 289 ) 290 ' 291 ··· 386 printf "$DATA" | dd of="$FILE" bs=1 seek="$POS" conv=notrunc && 387 test_must_fail $COMMAND 2>test_err && 388 grep -v "^+" test_err >err && 389 + test_grep "$GREPSTR" err 390 } 391 392 test_expect_success 'verify bad signature' ' ··· 501 corrupt_midx_and_verify $MIDX_BYTE_OFFSET "\377" $objdir \ 502 "incorrect object offset" && 503 git multi-pack-index write 2>err && 504 + test_grep checksum.mismatch err && 505 git multi-pack-index verify 506 ' 507 ··· 1031 1032 test_expect_success 'usage shown without sub-command' ' 1033 test_expect_code 129 git multi-pack-index 2>err && 1034 + ! test_grep "unrecognized subcommand" err 1035 ' 1036 1037 test_expect_success 'complains when run outside of a repository' '
+8 -8
t/t5324-split-commit-graph.sh
··· 281 corrupt_file "$base_file" $(test_oid shallow) "\01" && 282 test_must_fail git commit-graph verify --shallow 2>test_err && 283 grep -v "^+" test_err >err && 284 - test_i18ngrep "incorrect checksum" err 285 ) 286 ' 287 ··· 295 git commit-graph verify --shallow && 296 test_must_fail git commit-graph verify 2>test_err && 297 grep -v "^+" test_err >err && 298 - test_i18ngrep "incorrect checksum" err 299 ) 300 ' 301 ··· 308 corrupt_file "$base_file" $(test_oid base) "\01" && 309 git commit-graph verify --shallow 2>test_err && 310 grep -v "^+" test_err >err && 311 - test_i18ngrep "commit-graph chain does not match" err 312 ) 313 ' 314 ··· 319 corrupt_file "$graphdir/commit-graph-chain" 60 "G" && 320 git commit-graph verify 2>test_err && 321 grep -v "^+" test_err >err && 322 - test_i18ngrep "invalid commit-graph chain" err && 323 corrupt_file "$graphdir/commit-graph-chain" 60 "A" && 324 git commit-graph verify 2>test_err && 325 grep -v "^+" test_err >err && 326 - test_i18ngrep "unable to find all commit-graph files" err 327 ) 328 ' 329 ··· 341 corrupt_file "$tip_file" 100 "\01" && 342 test_must_fail git commit-graph verify --shallow 2>test_err && 343 grep -v "^+" test_err >err && 344 - test_i18ngrep "commit-graph has incorrect fanout value" err 345 ) 346 ' 347 ··· 353 git commit-graph verify --progress 2>err && 354 test_line_count = 1 err && 355 grep "Verifying commits in commit graph: 100% (18/18)" err && 356 - test_i18ngrep ! warning err && 357 test_line_count = 3 $graphdir/commit-graph-chain 358 ' 359 ··· 455 git init dup && 456 git -C dup commit --allow-empty -m one && 457 git -C dup -c core.commitGraph=false commit-graph write --split=no-merge --reachable 2>err && 458 - test_i18ngrep "attempting to write a commit-graph" err && 459 git -C dup commit-graph write --split=no-merge --reachable && 460 git -C dup commit --allow-empty -m two && 461 git -C dup commit-graph write --split=no-merge --reachable &&
··· 281 corrupt_file "$base_file" $(test_oid shallow) "\01" && 282 test_must_fail git commit-graph verify --shallow 2>test_err && 283 grep -v "^+" test_err >err && 284 + test_grep "incorrect checksum" err 285 ) 286 ' 287 ··· 295 git commit-graph verify --shallow && 296 test_must_fail git commit-graph verify 2>test_err && 297 grep -v "^+" test_err >err && 298 + test_grep "incorrect checksum" err 299 ) 300 ' 301 ··· 308 corrupt_file "$base_file" $(test_oid base) "\01" && 309 git commit-graph verify --shallow 2>test_err && 310 grep -v "^+" test_err >err && 311 + test_grep "commit-graph chain does not match" err 312 ) 313 ' 314 ··· 319 corrupt_file "$graphdir/commit-graph-chain" 60 "G" && 320 git commit-graph verify 2>test_err && 321 grep -v "^+" test_err >err && 322 + test_grep "invalid commit-graph chain" err && 323 corrupt_file "$graphdir/commit-graph-chain" 60 "A" && 324 git commit-graph verify 2>test_err && 325 grep -v "^+" test_err >err && 326 + test_grep "unable to find all commit-graph files" err 327 ) 328 ' 329 ··· 341 corrupt_file "$tip_file" 100 "\01" && 342 test_must_fail git commit-graph verify --shallow 2>test_err && 343 grep -v "^+" test_err >err && 344 + test_grep "commit-graph has incorrect fanout value" err 345 ) 346 ' 347 ··· 353 git commit-graph verify --progress 2>err && 354 test_line_count = 1 err && 355 grep "Verifying commits in commit graph: 100% (18/18)" err && 356 + test_grep ! warning err && 357 test_line_count = 3 $graphdir/commit-graph-chain 358 ' 359 ··· 455 git init dup && 456 git -C dup commit --allow-empty -m one && 457 git -C dup -c core.commitGraph=false commit-graph write --split=no-merge --reachable 2>err && 458 + test_grep "attempting to write a commit-graph" err && 459 git -C dup commit-graph write --split=no-merge --reachable && 460 git -C dup commit --allow-empty -m two && 461 git -C dup commit-graph write --split=no-merge --reachable &&
+2 -2
t/t5331-pack-objects-stdin.sh
··· 65 cd stdin-packs && 66 test_must_fail git pack-objects --stdin-packs --stdout \ 67 --filter=blob:none </dev/null 2>err && 68 - test_i18ngrep "cannot use --filter with --stdin-packs" err 69 ) 70 ' 71 ··· 74 cd stdin-packs && 75 test_must_fail git pack-objects --stdin-packs --revs out \ 76 </dev/null 2>err && 77 - test_i18ngrep "cannot use internal rev list with --stdin-packs" err 78 ) 79 ' 80
··· 65 cd stdin-packs && 66 test_must_fail git pack-objects --stdin-packs --stdout \ 67 --filter=blob:none </dev/null 2>err && 68 + test_grep "cannot use --filter with --stdin-packs" err 69 ) 70 ' 71 ··· 74 cd stdin-packs && 75 test_must_fail git pack-objects --stdin-packs --revs out \ 76 </dev/null 2>err && 77 + test_grep "cannot use internal rev list with --stdin-packs" err 78 ) 79 ' 80
+1 -1
t/t5411/test-0026-push-options.sh
··· 18 HEAD:refs/for/main/topic \ 19 >out-$test_count 2>&1 && 20 make_user_friendly_and_stable_output <out-$test_count >actual && 21 - test_i18ngrep "fatal: the receiving end does not support push options" \ 22 actual && 23 24 test_cmp_refs -C "$upstream" <<-EOF
··· 18 HEAD:refs/for/main/topic \ 19 >out-$test_count 2>&1 && 20 make_user_friendly_and_stable_output <out-$test_count >actual && 21 + test_grep "fatal: the receiving end does not support push options" \ 22 actual && 23 24 test_cmp_refs -C "$upstream" <<-EOF
+1 -1
t/t5411/test-0027-push-options--porcelain.sh
··· 19 HEAD:refs/for/main/topic \ 20 >out-$test_count 2>&1 && 21 make_user_friendly_and_stable_output <out-$test_count >actual && 22 - test_i18ngrep "fatal: the receiving end does not support push options" \ 23 actual && 24 25 test_cmp_refs -C "$upstream" <<-EOF
··· 19 HEAD:refs/for/main/topic \ 20 >out-$test_count 2>&1 && 21 make_user_friendly_and_stable_output <out-$test_count >actual && 22 + test_grep "fatal: the receiving end does not support push options" \ 23 actual && 24 25 test_cmp_refs -C "$upstream" <<-EOF
+5 -5
t/t5500-fetch-pack.sh
··· 403 test_commit -C myserver bar && 404 405 git -C myclient fetch --progress origin 2>log && 406 - test_i18ngrep "remote: Total 3 " log 407 ' 408 409 test_expect_success 'in_vain resetted upon ACK' ' ··· 435 # the client reports that first_anotherbranch_commit is common. 436 GIT_TRACE2_EVENT="$(pwd)/trace2" git -C myclient fetch --progress origin main 2>log && 437 grep \"key\":\"total_rounds\",\"value\":\"6\" trace2 && 438 - test_i18ngrep "Total 3 " log 439 ' 440 441 test_expect_success 'fetch in shallow repo unreachable shallow objects' ' ··· 459 git fetch --depth=1 --progress 2>actual && 460 # This should fetch only the empty commit, no tree or 461 # blob objects 462 - test_i18ngrep "remote: Total 1" actual 463 ) 464 ' 465 ··· 694 # unadvertised objects, so restrict this test to v0. 695 test_must_fail env GIT_TEST_PROTOCOL_VERSION=0 git -C client fetch-pack ../server \ 696 $(git -C server rev-parse refs/heads/main^) 2>err && 697 - test_i18ngrep "Server does not allow request for unadvertised object" err 698 ' 699 700 check_prot_path () { ··· 1010 git -C client rev-list --objects --missing=allow-any "$commit" >oids && 1011 grep "$blob" oids && 1012 1013 - test_i18ngrep "filtering not recognized by server" err 1014 ' 1015 1016 fetch_filter_blob_limit_zero () {
··· 403 test_commit -C myserver bar && 404 405 git -C myclient fetch --progress origin 2>log && 406 + test_grep "remote: Total 3 " log 407 ' 408 409 test_expect_success 'in_vain resetted upon ACK' ' ··· 435 # the client reports that first_anotherbranch_commit is common. 436 GIT_TRACE2_EVENT="$(pwd)/trace2" git -C myclient fetch --progress origin main 2>log && 437 grep \"key\":\"total_rounds\",\"value\":\"6\" trace2 && 438 + test_grep "Total 3 " log 439 ' 440 441 test_expect_success 'fetch in shallow repo unreachable shallow objects' ' ··· 459 git fetch --depth=1 --progress 2>actual && 460 # This should fetch only the empty commit, no tree or 461 # blob objects 462 + test_grep "remote: Total 1" actual 463 ) 464 ' 465 ··· 694 # unadvertised objects, so restrict this test to v0. 695 test_must_fail env GIT_TEST_PROTOCOL_VERSION=0 git -C client fetch-pack ../server \ 696 $(git -C server rev-parse refs/heads/main^) 2>err && 697 + test_grep "Server does not allow request for unadvertised object" err 698 ' 699 700 check_prot_path () { ··· 1010 git -C client rev-list --objects --missing=allow-any "$commit" >oids && 1011 grep "$blob" oids && 1012 1013 + test_grep "filtering not recognized by server" err 1014 ' 1015 1016 fetch_filter_blob_limit_zero () {
+13 -13
t/t5504-fetch-receive-strict.sh
··· 144 145 test_expect_success 'fsck with no skipList input' ' 146 test_must_fail git fsck 2>err && 147 - test_i18ngrep "missingEmail" err 148 ' 149 150 test_expect_success 'setup sorted and unsorted skipLists' ' ··· 169 test_expect_success 'fsck with invalid or bogus skipList input' ' 170 git -c fsck.skipList=/dev/null -c fsck.missingEmail=ignore fsck && 171 test_must_fail git -c fsck.skipList=does-not-exist -c fsck.missingEmail=ignore fsck 2>err && 172 - test_i18ngrep "could not open.*: does-not-exist" err && 173 test_must_fail git -c fsck.skipList=.git/config -c fsck.missingEmail=ignore fsck 2>err && 174 - test_i18ngrep "invalid object name: \[core\]" err 175 ' 176 177 test_expect_success 'fsck with other accepted skipList input (comments & empty lines)' ' ··· 180 $(test_oid 001) 181 EOF 182 test_must_fail git -c fsck.skipList=SKIP.with-comment fsck 2>err-with-comment && 183 - test_i18ngrep "missingEmail" err-with-comment && 184 cat >SKIP.with-empty-line <<-EOF && 185 $(test_oid 001) 186 187 $(test_oid 002) 188 EOF 189 test_must_fail git -c fsck.skipList=SKIP.with-empty-line fsck 2>err-with-empty-line && 190 - test_i18ngrep "missingEmail" err-with-empty-line 191 ' 192 193 test_expect_success 'fsck no garbage output from comments & empty lines errors' ' ··· 198 test_expect_success 'fsck with invalid abbreviated skipList input' ' 199 echo $commit | test_copy_bytes 20 >SKIP.abbreviated && 200 test_must_fail git -c fsck.skipList=SKIP.abbreviated fsck 2>err-abbreviated && 201 - test_i18ngrep "^fatal: invalid object name: " err-abbreviated 202 ' 203 204 test_expect_success 'fsck with exhaustive accepted skipList input (various types of comments etc.)' ' ··· 231 test_must_fail git push --porcelain dst bogus && 232 git --git-dir=dst/.git config receive.fsck.skipList does-not-exist && 233 test_must_fail git push --porcelain dst bogus 2>err && 234 - test_i18ngrep "could not open.*: does-not-exist" err && 235 git --git-dir=dst/.git config receive.fsck.skipList config && 236 test_must_fail git push --porcelain dst bogus 2>err && 237 - test_i18ngrep "invalid object name: \[core\]" err && 238 239 git --git-dir=dst/.git config receive.fsck.skipList SKIP && 240 git push --porcelain dst bogus ··· 260 test_must_fail git --git-dir=dst/.git fetch "file://$(pwd)" $refspec && 261 git --git-dir=dst/.git config fetch.fsck.skipList does-not-exist && 262 test_must_fail git --git-dir=dst/.git fetch "file://$(pwd)" $refspec 2>err && 263 - test_i18ngrep "could not open.*: does-not-exist" err && 264 git --git-dir=dst/.git config fetch.fsck.skipList dst/.git/config && 265 test_must_fail git --git-dir=dst/.git fetch "file://$(pwd)" $refspec 2>err && 266 - test_i18ngrep "invalid object name: \[core\]" err && 267 268 git --git-dir=dst/.git config fetch.fsck.skipList dst/.git/SKIP && 269 git --git-dir=dst/.git fetch "file://$(pwd)" $refspec ··· 271 272 test_expect_success 'fsck.<unknownmsg-id> dies' ' 273 test_must_fail git -c fsck.whatEver=ignore fsck 2>err && 274 - test_i18ngrep "Unhandled message id: whatever" err 275 ' 276 277 test_expect_success 'push with receive.fsck.missingEmail=warn' ' ··· 293 receive.fsck.missingEmail warn && 294 git push --porcelain dst bogus >act 2>&1 && 295 grep "missingEmail" act && 296 - test_i18ngrep "skipping unknown msg id.*whatever" act && 297 git --git-dir=dst/.git branch -D bogus && 298 git --git-dir=dst/.git config --add \ 299 receive.fsck.missingEmail ignore && ··· 321 fetch.fsck.missingEmail warn && 322 git --git-dir=dst/.git fetch "file://$(pwd)" $refspec >act 2>&1 && 323 grep "missingEmail" act && 324 - test_i18ngrep "Skipping unknown msg id.*whatever" act && 325 rm -rf dst && 326 git init dst && 327 git --git-dir=dst/.git config fetch.fsckobjects true &&
··· 144 145 test_expect_success 'fsck with no skipList input' ' 146 test_must_fail git fsck 2>err && 147 + test_grep "missingEmail" err 148 ' 149 150 test_expect_success 'setup sorted and unsorted skipLists' ' ··· 169 test_expect_success 'fsck with invalid or bogus skipList input' ' 170 git -c fsck.skipList=/dev/null -c fsck.missingEmail=ignore fsck && 171 test_must_fail git -c fsck.skipList=does-not-exist -c fsck.missingEmail=ignore fsck 2>err && 172 + test_grep "could not open.*: does-not-exist" err && 173 test_must_fail git -c fsck.skipList=.git/config -c fsck.missingEmail=ignore fsck 2>err && 174 + test_grep "invalid object name: \[core\]" err 175 ' 176 177 test_expect_success 'fsck with other accepted skipList input (comments & empty lines)' ' ··· 180 $(test_oid 001) 181 EOF 182 test_must_fail git -c fsck.skipList=SKIP.with-comment fsck 2>err-with-comment && 183 + test_grep "missingEmail" err-with-comment && 184 cat >SKIP.with-empty-line <<-EOF && 185 $(test_oid 001) 186 187 $(test_oid 002) 188 EOF 189 test_must_fail git -c fsck.skipList=SKIP.with-empty-line fsck 2>err-with-empty-line && 190 + test_grep "missingEmail" err-with-empty-line 191 ' 192 193 test_expect_success 'fsck no garbage output from comments & empty lines errors' ' ··· 198 test_expect_success 'fsck with invalid abbreviated skipList input' ' 199 echo $commit | test_copy_bytes 20 >SKIP.abbreviated && 200 test_must_fail git -c fsck.skipList=SKIP.abbreviated fsck 2>err-abbreviated && 201 + test_grep "^fatal: invalid object name: " err-abbreviated 202 ' 203 204 test_expect_success 'fsck with exhaustive accepted skipList input (various types of comments etc.)' ' ··· 231 test_must_fail git push --porcelain dst bogus && 232 git --git-dir=dst/.git config receive.fsck.skipList does-not-exist && 233 test_must_fail git push --porcelain dst bogus 2>err && 234 + test_grep "could not open.*: does-not-exist" err && 235 git --git-dir=dst/.git config receive.fsck.skipList config && 236 test_must_fail git push --porcelain dst bogus 2>err && 237 + test_grep "invalid object name: \[core\]" err && 238 239 git --git-dir=dst/.git config receive.fsck.skipList SKIP && 240 git push --porcelain dst bogus ··· 260 test_must_fail git --git-dir=dst/.git fetch "file://$(pwd)" $refspec && 261 git --git-dir=dst/.git config fetch.fsck.skipList does-not-exist && 262 test_must_fail git --git-dir=dst/.git fetch "file://$(pwd)" $refspec 2>err && 263 + test_grep "could not open.*: does-not-exist" err && 264 git --git-dir=dst/.git config fetch.fsck.skipList dst/.git/config && 265 test_must_fail git --git-dir=dst/.git fetch "file://$(pwd)" $refspec 2>err && 266 + test_grep "invalid object name: \[core\]" err && 267 268 git --git-dir=dst/.git config fetch.fsck.skipList dst/.git/SKIP && 269 git --git-dir=dst/.git fetch "file://$(pwd)" $refspec ··· 271 272 test_expect_success 'fsck.<unknownmsg-id> dies' ' 273 test_must_fail git -c fsck.whatEver=ignore fsck 2>err && 274 + test_grep "Unhandled message id: whatever" err 275 ' 276 277 test_expect_success 'push with receive.fsck.missingEmail=warn' ' ··· 293 receive.fsck.missingEmail warn && 294 git push --porcelain dst bogus >act 2>&1 && 295 grep "missingEmail" act && 296 + test_grep "skipping unknown msg id.*whatever" act && 297 git --git-dir=dst/.git branch -D bogus && 298 git --git-dir=dst/.git config --add \ 299 receive.fsck.missingEmail ignore && ··· 321 fetch.fsck.missingEmail warn && 322 git --git-dir=dst/.git fetch "file://$(pwd)" $refspec >act 2>&1 && 323 grep "missingEmail" act && 324 + test_grep "Skipping unknown msg id.*whatever" act && 325 rm -rf dst && 326 git init dst && 327 git --git-dir=dst/.git config fetch.fsckobjects true &&
+11 -11
t/t5505-remote.sh
··· 1075 cd eight && 1076 git remote prune origin 1077 ) >err 2>&1 && 1078 - test_i18ngrep "has become dangling" err && 1079 1080 : And the dangling symref will not cause other annoying errors && 1081 ( ··· 1087 cd eight && 1088 test_must_fail git branch nomore origin 1089 ) 2>err && 1090 - test_i18ngrep "dangling symref" err 1091 ' 1092 1093 test_expect_success 'show empty remote' ' ··· 1419 test_extra_arg () { 1420 test_expect_success "extra args: $*" " 1421 test_must_fail git remote $* bogus_extra_arg 2>actual && 1422 - test_i18ngrep '^usage:' actual 1423 " 1424 } 1425 ··· 1453 oid=$(git rev-parse some-tag^{$type}) 1454 fi && 1455 test_must_fail git push origin $oid:dst 2>err && 1456 - test_i18ngrep "error: The destination you" err && 1457 - test_i18ngrep "hint: Did you mean" err && 1458 test_must_fail git -c advice.pushUnqualifiedRefName=false \ 1459 push origin $oid:dst 2>err && 1460 - test_i18ngrep "error: The destination you" err && 1461 - test_i18ngrep ! "hint: Did you mean" err || 1462 exit 1 1463 done 1464 ) ··· 1479 git fetch --no-tags two && 1480 1481 test_must_fail git push origin refs/remotes/two/another:dst 2>err && 1482 - test_i18ngrep "error: The destination you" err && 1483 1484 test_must_fail git push origin refs/remotes/tags-from-two/my-tag:dst-tag 2>err && 1485 - test_i18ngrep "error: The destination you" err && 1486 1487 test_must_fail git push origin refs/remotes/trees-from-two/my-head-tree:dst-tree 2>err && 1488 - test_i18ngrep "error: The destination you" err && 1489 1490 test_must_fail git push origin refs/remotes/blobs-from-two/my-file-blob:dst-blob 2>err && 1491 - test_i18ngrep "error: The destination you" err 1492 ) 1493 ' 1494
··· 1075 cd eight && 1076 git remote prune origin 1077 ) >err 2>&1 && 1078 + test_grep "has become dangling" err && 1079 1080 : And the dangling symref will not cause other annoying errors && 1081 ( ··· 1087 cd eight && 1088 test_must_fail git branch nomore origin 1089 ) 2>err && 1090 + test_grep "dangling symref" err 1091 ' 1092 1093 test_expect_success 'show empty remote' ' ··· 1419 test_extra_arg () { 1420 test_expect_success "extra args: $*" " 1421 test_must_fail git remote $* bogus_extra_arg 2>actual && 1422 + test_grep '^usage:' actual 1423 " 1424 } 1425 ··· 1453 oid=$(git rev-parse some-tag^{$type}) 1454 fi && 1455 test_must_fail git push origin $oid:dst 2>err && 1456 + test_grep "error: The destination you" err && 1457 + test_grep "hint: Did you mean" err && 1458 test_must_fail git -c advice.pushUnqualifiedRefName=false \ 1459 push origin $oid:dst 2>err && 1460 + test_grep "error: The destination you" err && 1461 + test_grep ! "hint: Did you mean" err || 1462 exit 1 1463 done 1464 ) ··· 1479 git fetch --no-tags two && 1480 1481 test_must_fail git push origin refs/remotes/two/another:dst 2>err && 1482 + test_grep "error: The destination you" err && 1483 1484 test_must_fail git push origin refs/remotes/tags-from-two/my-tag:dst-tag 2>err && 1485 + test_grep "error: The destination you" err && 1486 1487 test_must_fail git push origin refs/remotes/trees-from-two/my-head-tree:dst-tree 2>err && 1488 + test_grep "error: The destination you" err && 1489 1490 test_must_fail git push origin refs/remotes/blobs-from-two/my-file-blob:dst-blob 2>err && 1491 + test_grep "error: The destination you" err 1492 ) 1493 ' 1494
+4 -4
t/t5510-fetch.sh
··· 415 ( 416 cd descriptive && 417 git fetch o 2>actual && 418 - test_i18ngrep "new branch.* -> refs/crazyheads/descriptive-branch$" actual && 419 - test_i18ngrep "new tag.* -> descriptive-tag$" actual && 420 - test_i18ngrep "new ref.* -> crazy$" actual 421 ) && 422 git checkout main 423 ' ··· 1113 git config gc.autoPackLimit 1 && 1114 git config gc.autoDetach false && 1115 GIT_ASK_YESNO="$D/askyesno" git fetch --verbose >fetch.out 2>&1 && 1116 - test_i18ngrep "Auto packing the repository" fetch.out && 1117 ! grep "Should I try again" fetch.out 1118 ) 1119 '
··· 415 ( 416 cd descriptive && 417 git fetch o 2>actual && 418 + test_grep "new branch.* -> refs/crazyheads/descriptive-branch$" actual && 419 + test_grep "new tag.* -> descriptive-tag$" actual && 420 + test_grep "new ref.* -> crazy$" actual 421 ) && 422 git checkout main 423 ' ··· 1113 git config gc.autoPackLimit 1 && 1114 git config gc.autoDetach false && 1115 GIT_ASK_YESNO="$D/askyesno" git fetch --verbose >fetch.out 2>&1 && 1116 + test_grep "Auto packing the repository" fetch.out && 1117 ! grep "Should I try again" fetch.out 1118 ) 1119 '
+1 -1
t/t5512-ls-remote.sh
··· 320 test_expect_success 'ls-remote --sort fails gracefully outside repository' ' 321 # Use a sort key that requires access to the referenced objects. 322 nongit test_must_fail git ls-remote --sort=authordate "$TRASH_DIRECTORY" 2>err && 323 - test_i18ngrep "^fatal: not a git repository, but the field '\''authordate'\'' requires access to object data" err 324 ' 325 326 test_expect_success 'ls-remote patterns work with all protocol versions' '
··· 320 test_expect_success 'ls-remote --sort fails gracefully outside repository' ' 321 # Use a sort key that requires access to the referenced objects. 322 nongit test_must_fail git ls-remote --sort=authordate "$TRASH_DIRECTORY" 2>err && 323 + test_grep "^fatal: not a git repository, but the field '\''authordate'\'' requires access to object data" err 324 ' 325 326 test_expect_success 'ls-remote patterns work with all protocol versions' '
+2 -2
t/t5514-fetch-multiple.sh
··· 200 test_must_fail env GIT_TRACE="$PWD/trace" \ 201 git fetch --jobs=2 --multiple one two 2>err && 202 grep "preparing to run up to 2 tasks" trace && 203 - test_i18ngrep "could not fetch .one.*128" err && 204 - test_i18ngrep "could not fetch .two.*128" err 205 ' 206 207 test_expect_success 'git fetch --multiple --jobs=0 picks a default' '
··· 200 test_must_fail env GIT_TRACE="$PWD/trace" \ 201 git fetch --jobs=2 --multiple one two 2>err && 202 grep "preparing to run up to 2 tasks" trace && 203 + test_grep "could not fetch .one.*128" err && 204 + test_grep "could not fetch .two.*128" err 205 ' 206 207 test_expect_success 'git fetch --multiple --jobs=0 picks a default' '
+4 -4
t/t5516-fetch-push.sh
··· 227 GIT_TEST_PROTOCOL_VERSION=0 GIT_TRACE2_EVENT="$(pwd)/event" \ 228 git -c push.negotiate=1 push testrepo refs/heads/main:refs/remotes/origin/main 2>err && 229 grep_wrote 5 event && # 2 commits, 2 trees, 1 blob 230 - test_i18ngrep "push negotiation failed" err 231 ' 232 233 test_expect_success 'push with negotiation does not attempt to fetch submodules' ' ··· 1267 # fetching the hidden object should fail by default 1268 test_must_fail env GIT_TEST_PROTOCOL_VERSION=0 \ 1269 git fetch -v ../testrepo $the_commit:refs/heads/copy 2>err && 1270 - test_i18ngrep "Server does not allow request for unadvertised object" err && 1271 test_must_fail git rev-parse --verify refs/heads/copy && 1272 1273 # the server side can allow it to succeed ··· 1369 git fetch ../testrepo/.git $SHA1_3 2>err && 1370 # ideally we would insist this be on a "remote error:" 1371 # line, but it is racy; see the commit message 1372 - test_i18ngrep "not our ref.*$SHA1_3\$" err 1373 ) 1374 ' 1375 done ··· 1407 oid=$(git -C testrepo rev-parse mytag^{commit}) && 1408 test_must_fail env GIT_TEST_PROTOCOL_VERSION=0 \ 1409 git fetch testrepo $oid 2>err && 1410 - test_i18ngrep "Server does not allow request for unadvertised object" err 1411 ' 1412 1413 test_expect_success 'pushing a specific ref applies remote.$name.push as refmap' '
··· 227 GIT_TEST_PROTOCOL_VERSION=0 GIT_TRACE2_EVENT="$(pwd)/event" \ 228 git -c push.negotiate=1 push testrepo refs/heads/main:refs/remotes/origin/main 2>err && 229 grep_wrote 5 event && # 2 commits, 2 trees, 1 blob 230 + test_grep "push negotiation failed" err 231 ' 232 233 test_expect_success 'push with negotiation does not attempt to fetch submodules' ' ··· 1267 # fetching the hidden object should fail by default 1268 test_must_fail env GIT_TEST_PROTOCOL_VERSION=0 \ 1269 git fetch -v ../testrepo $the_commit:refs/heads/copy 2>err && 1270 + test_grep "Server does not allow request for unadvertised object" err && 1271 test_must_fail git rev-parse --verify refs/heads/copy && 1272 1273 # the server side can allow it to succeed ··· 1369 git fetch ../testrepo/.git $SHA1_3 2>err && 1370 # ideally we would insist this be on a "remote error:" 1371 # line, but it is racy; see the commit message 1372 + test_grep "not our ref.*$SHA1_3\$" err 1373 ) 1374 ' 1375 done ··· 1407 oid=$(git -C testrepo rev-parse mytag^{commit}) && 1408 test_must_fail env GIT_TEST_PROTOCOL_VERSION=0 \ 1409 git fetch testrepo $oid 2>err && 1410 + test_grep "Server does not allow request for unadvertised object" err 1411 ' 1412 1413 test_expect_success 'pushing a specific ref applies remote.$name.push as refmap' '
+17 -17
t/t5520-pull.sh
··· 31 echo dirty >new_file && 32 git add new_file && 33 test_must_fail git pull "$@" . copy 2>err && 34 - test_i18ngrep -E "uncommitted changes.|overwritten by merge:" err 35 } 36 37 test_expect_success setup ' ··· 151 echo file >expect && 152 test_cmp expect file && 153 test_must_fail git pull . "refs/nonexisting1/*:refs/nonexisting2/*" 2>err && 154 - test_i18ngrep "no candidates for merging" err && 155 test_cmp expect file 156 ' 157 ··· 164 test_cmp expect file && 165 test_config branch.test.remote origin && 166 test_must_fail git pull test_remote 2>err && 167 - test_i18ngrep "specify a branch on the command line" err && 168 test_cmp expect file 169 ' 170 ··· 176 echo file >expect && 177 test_cmp expect file && 178 test_must_fail git pull 2>err && 179 - test_i18ngrep "not currently on a branch" err && 180 test_cmp expect file 181 ' 182 ··· 189 echo file >expect && 190 test_cmp expect file && 191 test_must_fail git pull 2>err && 192 - test_i18ngrep "no tracking information" err && 193 test_cmp expect file 194 ' 195 ··· 202 echo file >expect && 203 test_cmp expect file && 204 test_must_fail git pull --all 2>err && 205 - test_i18ngrep "There is no tracking information" err && 206 test_cmp expect file 207 ' 208 ··· 214 echo file >expect && 215 test_cmp expect file && 216 test_must_fail git pull 2>err && 217 - test_i18ngrep "no such ref was fetched" err && 218 test_cmp expect file 219 ' 220 ··· 248 test_file_not_empty unmerged && 249 cp file expected && 250 test_must_fail git pull . second 2>err && 251 - test_i18ngrep "Pulling is not possible because you have unmerged files." err && 252 test_cmp expected file && 253 git add file && 254 git ls-files -u >unmerged && 255 test_must_be_empty unmerged && 256 test_must_fail git pull . second 2>err && 257 - test_i18ngrep "You have not concluded your merge" err && 258 test_cmp expected file 259 ' 260 ··· 264 echo file >expect && 265 test_cmp expect file && 266 git pull . second:third 2>err && 267 - test_i18ngrep "fetch updated the current branch head" err && 268 echo modified >expect && 269 test_cmp expect file && 270 test_cmp_rev third second ··· 277 test_cmp expect file && 278 echo conflict >file && 279 test_must_fail git pull . second:third 2>err && 280 - test_i18ngrep "Cannot fast-forward your working tree" err && 281 echo conflict >expect && 282 test_cmp expect file && 283 test_cmp_rev third second ··· 375 test_tick && 376 git commit -m "Create conflict" seq.txt && 377 test_must_fail git pull --rebase . seq 2>err >out && 378 - test_i18ngrep "Resolve all conflicts manually" err 379 ' 380 381 test_expect_success 'failed --rebase shows advice' ' ··· 389 git checkout -f -b fails-to-rebase HEAD^ && 390 test_commit v2-without-cr file "2" file2-lf && 391 test_must_fail git pull --rebase . diverging 2>err >out && 392 - test_i18ngrep "Resolve all conflicts manually" err 393 ' 394 395 test_expect_success '--rebase fails with multiple branches' ' 396 git reset --hard before-rebase && 397 test_must_fail git pull --rebase . copy main 2>err && 398 test_cmp_rev HEAD before-rebase && 399 - test_i18ngrep "Cannot rebase onto multiple branches" err && 400 echo modified >expect && 401 git show HEAD:file >actual && 402 test_cmp expect actual ··· 520 echo new >expect && 521 git show HEAD:file2 >actual && 522 test_cmp expect actual && 523 - test_i18ngrep "ignoring --verify-signatures for rebase" err 524 ' 525 526 test_expect_success 'pull --rebase does not warn on --no-verify-signatures' ' ··· 530 echo new >expect && 531 git show HEAD:file2 >actual && 532 test_cmp expect actual && 533 - test_i18ngrep ! "verify-signatures" err 534 ' 535 536 # add a feature branch, keep-merge, that is merged into main, so the ··· 740 test_cmp expect actual && 741 git show :staged-file >actual && 742 test_cmp expect actual && 743 - test_i18ngrep "unborn branch with changes added to the index" err 744 ) 745 ' 746
··· 31 echo dirty >new_file && 32 git add new_file && 33 test_must_fail git pull "$@" . copy 2>err && 34 + test_grep -E "uncommitted changes.|overwritten by merge:" err 35 } 36 37 test_expect_success setup ' ··· 151 echo file >expect && 152 test_cmp expect file && 153 test_must_fail git pull . "refs/nonexisting1/*:refs/nonexisting2/*" 2>err && 154 + test_grep "no candidates for merging" err && 155 test_cmp expect file 156 ' 157 ··· 164 test_cmp expect file && 165 test_config branch.test.remote origin && 166 test_must_fail git pull test_remote 2>err && 167 + test_grep "specify a branch on the command line" err && 168 test_cmp expect file 169 ' 170 ··· 176 echo file >expect && 177 test_cmp expect file && 178 test_must_fail git pull 2>err && 179 + test_grep "not currently on a branch" err && 180 test_cmp expect file 181 ' 182 ··· 189 echo file >expect && 190 test_cmp expect file && 191 test_must_fail git pull 2>err && 192 + test_grep "no tracking information" err && 193 test_cmp expect file 194 ' 195 ··· 202 echo file >expect && 203 test_cmp expect file && 204 test_must_fail git pull --all 2>err && 205 + test_grep "There is no tracking information" err && 206 test_cmp expect file 207 ' 208 ··· 214 echo file >expect && 215 test_cmp expect file && 216 test_must_fail git pull 2>err && 217 + test_grep "no such ref was fetched" err && 218 test_cmp expect file 219 ' 220 ··· 248 test_file_not_empty unmerged && 249 cp file expected && 250 test_must_fail git pull . second 2>err && 251 + test_grep "Pulling is not possible because you have unmerged files." err && 252 test_cmp expected file && 253 git add file && 254 git ls-files -u >unmerged && 255 test_must_be_empty unmerged && 256 test_must_fail git pull . second 2>err && 257 + test_grep "You have not concluded your merge" err && 258 test_cmp expected file 259 ' 260 ··· 264 echo file >expect && 265 test_cmp expect file && 266 git pull . second:third 2>err && 267 + test_grep "fetch updated the current branch head" err && 268 echo modified >expect && 269 test_cmp expect file && 270 test_cmp_rev third second ··· 277 test_cmp expect file && 278 echo conflict >file && 279 test_must_fail git pull . second:third 2>err && 280 + test_grep "Cannot fast-forward your working tree" err && 281 echo conflict >expect && 282 test_cmp expect file && 283 test_cmp_rev third second ··· 375 test_tick && 376 git commit -m "Create conflict" seq.txt && 377 test_must_fail git pull --rebase . seq 2>err >out && 378 + test_grep "Resolve all conflicts manually" err 379 ' 380 381 test_expect_success 'failed --rebase shows advice' ' ··· 389 git checkout -f -b fails-to-rebase HEAD^ && 390 test_commit v2-without-cr file "2" file2-lf && 391 test_must_fail git pull --rebase . diverging 2>err >out && 392 + test_grep "Resolve all conflicts manually" err 393 ' 394 395 test_expect_success '--rebase fails with multiple branches' ' 396 git reset --hard before-rebase && 397 test_must_fail git pull --rebase . copy main 2>err && 398 test_cmp_rev HEAD before-rebase && 399 + test_grep "Cannot rebase onto multiple branches" err && 400 echo modified >expect && 401 git show HEAD:file >actual && 402 test_cmp expect actual ··· 520 echo new >expect && 521 git show HEAD:file2 >actual && 522 test_cmp expect actual && 523 + test_grep "ignoring --verify-signatures for rebase" err 524 ' 525 526 test_expect_success 'pull --rebase does not warn on --no-verify-signatures' ' ··· 530 echo new >expect && 531 git show HEAD:file2 >actual && 532 test_cmp expect actual && 533 + test_grep ! "verify-signatures" err 534 ' 535 536 # add a feature branch, keep-merge, that is merged into main, so the ··· 740 test_cmp expect actual && 741 git show :staged-file >actual && 742 test_cmp expect actual && 743 + test_grep "unborn branch with changes added to the index" err 744 ) 745 ' 746
+1 -1
t/t5521-pull-options.sh
··· 93 (cd clonedwfh && git init && 94 test_expect_code 129 git pull --no-write-fetch-head "../parent" >out 2>err && 95 test_must_be_empty out && 96 - test_i18ngrep "no-write-fetch-head" err) 97 ' 98 99 test_expect_success 'git pull --force' '
··· 93 (cd clonedwfh && git init && 94 test_expect_code 129 git pull --no-write-fetch-head "../parent" >out 2>err && 95 test_must_be_empty out && 96 + test_grep "no-write-fetch-head" err) 97 ' 98 99 test_expect_success 'git pull --force' '
+6 -6
t/t5523-push-upstream.sh
··· 87 ensure_fresh_upstream && 88 89 test_terminal git push -u upstream main >out 2>err && 90 - test_i18ngrep "Writing objects" err 91 ' 92 93 test_expect_success 'progress messages do not go to non-tty' ' ··· 95 96 # skip progress messages, since stderr is non-tty 97 git push -u upstream main >out 2>err && 98 - test_i18ngrep ! "Writing objects" err 99 ' 100 101 test_expect_success 'progress messages go to non-tty (forced)' ' ··· 103 104 # force progress messages to stderr, even though it is non-tty 105 git push -u --progress upstream main >out 2>err && 106 - test_i18ngrep "Writing objects" err 107 ' 108 109 test_expect_success TTY 'push -q suppresses progress' ' 110 ensure_fresh_upstream && 111 112 test_terminal git push -u -q upstream main >out 2>err && 113 - test_i18ngrep ! "Writing objects" err 114 ' 115 116 test_expect_success TTY 'push --no-progress suppresses progress' ' 117 ensure_fresh_upstream && 118 119 test_terminal git push -u --no-progress upstream main >out 2>err && 120 - test_i18ngrep ! "Unpacking objects" err && 121 - test_i18ngrep ! "Writing objects" err 122 ' 123 124 test_expect_success TTY 'quiet push' '
··· 87 ensure_fresh_upstream && 88 89 test_terminal git push -u upstream main >out 2>err && 90 + test_grep "Writing objects" err 91 ' 92 93 test_expect_success 'progress messages do not go to non-tty' ' ··· 95 96 # skip progress messages, since stderr is non-tty 97 git push -u upstream main >out 2>err && 98 + test_grep ! "Writing objects" err 99 ' 100 101 test_expect_success 'progress messages go to non-tty (forced)' ' ··· 103 104 # force progress messages to stderr, even though it is non-tty 105 git push -u --progress upstream main >out 2>err && 106 + test_grep "Writing objects" err 107 ' 108 109 test_expect_success TTY 'push -q suppresses progress' ' 110 ensure_fresh_upstream && 111 112 test_terminal git push -u -q upstream main >out 2>err && 113 + test_grep ! "Writing objects" err 114 ' 115 116 test_expect_success TTY 'push --no-progress suppresses progress' ' 117 ensure_fresh_upstream && 118 119 test_terminal git push -u --no-progress upstream main >out 2>err && 120 + test_grep ! "Unpacking objects" err && 121 + test_grep ! "Writing objects" err 122 ' 123 124 test_expect_success TTY 'quiet push' '
+1 -1
t/t5528-push-default.sh
··· 179 test_expect_success '"matching" fails if none match' ' 180 git init --bare empty && 181 test_must_fail git push empty : 2>actual && 182 - test_i18ngrep "Perhaps you should specify a branch" actual 183 ' 184 185 test_expect_success 'push ambiguously named branch with upstream, matching and simple' '
··· 179 test_expect_success '"matching" fails if none match' ' 180 git init --bare empty && 181 test_must_fail git push empty : 2>actual && 182 + test_grep "Perhaps you should specify a branch" actual 183 ' 184 185 test_expect_success 'push ambiguously named branch with upstream, matching and simple' '
+2 -2
t/t5530-upload-pack-error.sh
··· 35 printf "%04xwant %s\n00000009done\n0000" \ 36 $(($hexsz + 10)) $head >input && 37 test_must_fail git upload-pack . <input >/dev/null 2>output.err && 38 - test_i18ngrep "unable to read" output.err && 39 - test_i18ngrep "pack-objects died" output.err 40 ' 41 42 test_expect_success 'corrupt repo differently' '
··· 35 printf "%04xwant %s\n00000009done\n0000" \ 36 $(($hexsz + 10)) $head >input && 37 test_must_fail git upload-pack . <input >/dev/null 2>output.err && 38 + test_grep "unable to read" output.err && 39 + test_grep "pack-objects died" output.err 40 ' 41 42 test_expect_success 'corrupt repo differently' '
+1 -1
t/t5531-deep-submodule-push.sh
··· 311 git -C work commit -m "bad commit" && 312 test_when_finished "git -C work reset --hard HEAD^" && 313 test_must_fail git -C work push --recurse-submodules=on-demand ../pub.git main 2>err && 314 - test_i18ngrep "is a tag, not a commit" err 315 ' 316 317 test_expect_success 'push fails if recurse submodules option passed as yes' '
··· 311 git -C work commit -m "bad commit" && 312 test_when_finished "git -C work reset --hard HEAD^" && 313 test_must_fail git -C work push --recurse-submodules=on-demand ../pub.git main 2>err && 314 + test_grep "is a tag, not a commit" err 315 ' 316 317 test_expect_success 'push fails if recurse submodules option passed as yes' '
+3 -3
t/t5534-push-signed.sh
··· 68 test_expect_success 'push --signed fails with a receiver without push certificate support' ' 69 prepare_dst && 70 test_must_fail git push --signed dst noop ff +noff 2>err && 71 - test_i18ngrep "the receiving end does not support" err 72 ' 73 74 test_expect_success 'push --signed=1 is accepted' ' 75 prepare_dst && 76 test_must_fail git push --signed=1 dst noop ff +noff 2>err && 77 - test_i18ngrep "the receiving end does not support" err 78 ' 79 80 test_expect_success GPG 'no certificate for a signed push with no update' ' ··· 378 --signed --atomic --porcelain \ 379 dst noop ff noff >out 2>err && 380 381 - test_i18ngrep ! "gpg failed to sign" err && 382 cat >expect <<-EOF && 383 To dst 384 = refs/heads/noop:refs/heads/noop [up to date]
··· 68 test_expect_success 'push --signed fails with a receiver without push certificate support' ' 69 prepare_dst && 70 test_must_fail git push --signed dst noop ff +noff 2>err && 71 + test_grep "the receiving end does not support" err 72 ' 73 74 test_expect_success 'push --signed=1 is accepted' ' 75 prepare_dst && 76 test_must_fail git push --signed=1 dst noop ff +noff 2>err && 77 + test_grep "the receiving end does not support" err 78 ' 79 80 test_expect_success GPG 'no certificate for a signed push with no update' ' ··· 378 --signed --atomic --porcelain \ 379 dst noop ff noff >out 2>err && 380 381 + test_grep ! "gpg failed to sign" err && 382 cat >expect <<-EOF && 383 To dst 384 = refs/heads/noop:refs/heads/noop [up to date]
+4 -4
t/t5536-fetch-conflicts.sh
··· 40 "+refs/heads/branch2:refs/remotes/origin/branch1" && ( 41 cd ccc && 42 test_must_fail git fetch origin 2>error && 43 - test_i18ngrep "fatal: Cannot fetch both refs/heads/branch1 and refs/heads/branch2 to refs/remotes/origin/branch1" error 44 ) 45 ' 46 ··· 67 test_must_fail git fetch origin \ 68 refs/heads/*:refs/remotes/origin/* \ 69 refs/heads/branch2:refs/remotes/origin/branch1 2>error && 70 - test_i18ngrep "fatal: Cannot fetch both refs/heads/branch1 and refs/heads/branch2 to refs/remotes/origin/branch1" error 71 ) 72 ' 73 ··· 78 git fetch origin \ 79 refs/heads/branch1:refs/remotes/origin/branch2 \ 80 refs/heads/branch2:refs/remotes/origin/branch1 2>error && 81 - test_i18ngrep "warning: refs/remotes/origin/branch1 usually tracks refs/heads/branch1, not refs/heads/branch2" error && 82 - test_i18ngrep "warning: refs/remotes/origin/branch2 usually tracks refs/heads/branch2, not refs/heads/branch1" error 83 ) 84 ' 85
··· 40 "+refs/heads/branch2:refs/remotes/origin/branch1" && ( 41 cd ccc && 42 test_must_fail git fetch origin 2>error && 43 + test_grep "fatal: Cannot fetch both refs/heads/branch1 and refs/heads/branch2 to refs/remotes/origin/branch1" error 44 ) 45 ' 46 ··· 67 test_must_fail git fetch origin \ 68 refs/heads/*:refs/remotes/origin/* \ 69 refs/heads/branch2:refs/remotes/origin/branch1 2>error && 70 + test_grep "fatal: Cannot fetch both refs/heads/branch1 and refs/heads/branch2 to refs/remotes/origin/branch1" error 71 ) 72 ' 73 ··· 78 git fetch origin \ 79 refs/heads/branch1:refs/remotes/origin/branch2 \ 80 refs/heads/branch2:refs/remotes/origin/branch1 2>error && 81 + test_grep "warning: refs/remotes/origin/branch1 usually tracks refs/heads/branch1, not refs/heads/branch2" error && 82 + test_grep "warning: refs/remotes/origin/branch2 usually tracks refs/heads/branch2, not refs/heads/branch1" error 83 ) 84 ' 85
+10 -10
t/t5541-http-push-smart.sh
··· 153 ' 154 155 test_expect_success 'push fails for non-fast-forward refs unmatched by remote helper: our output' ' 156 - test_i18ngrep "Updates were rejected because" \ 157 output 158 ' 159 ··· 297 cd "$ROOT_PATH"/test_repo_clone && 298 test_commit noisy && 299 test_terminal git push >output 2>&1 && 300 - test_i18ngrep "^Writing objects" output 301 ' 302 303 test_expect_success TTY 'push --quiet silences status and progress' ' ··· 311 cd "$ROOT_PATH"/test_repo_clone && 312 test_commit no-progress && 313 test_terminal git push --no-progress >output 2>&1 && 314 - test_i18ngrep "^To http" output && 315 - test_i18ngrep ! "^Writing objects" output 316 ' 317 318 test_expect_success 'push --progress shows progress to non-tty' ' 319 cd "$ROOT_PATH"/test_repo_clone && 320 test_commit progress && 321 git push --progress >output 2>&1 && 322 - test_i18ngrep "^To http" output && 323 - test_i18ngrep "^Writing objects" output 324 ' 325 326 test_expect_success 'http push gives sane defaults to reflog' ' ··· 489 -c color.push=always \ 490 push origin origin/main^:main 2>act && 491 test_decode_color <act >decoded && 492 - test_i18ngrep "<RED>.*rejected.*<RESET>" decoded && 493 - test_i18ngrep "<RED>error: failed to push some refs" decoded && 494 - test_i18ngrep "<YELLOW>hint: " decoded && 495 - test_i18ngrep ! "^hint: " decoded 496 ' 497 498 test_expect_success 'report error server does not provide ref status' '
··· 153 ' 154 155 test_expect_success 'push fails for non-fast-forward refs unmatched by remote helper: our output' ' 156 + test_grep "Updates were rejected because" \ 157 output 158 ' 159 ··· 297 cd "$ROOT_PATH"/test_repo_clone && 298 test_commit noisy && 299 test_terminal git push >output 2>&1 && 300 + test_grep "^Writing objects" output 301 ' 302 303 test_expect_success TTY 'push --quiet silences status and progress' ' ··· 311 cd "$ROOT_PATH"/test_repo_clone && 312 test_commit no-progress && 313 test_terminal git push --no-progress >output 2>&1 && 314 + test_grep "^To http" output && 315 + test_grep ! "^Writing objects" output 316 ' 317 318 test_expect_success 'push --progress shows progress to non-tty' ' 319 cd "$ROOT_PATH"/test_repo_clone && 320 test_commit progress && 321 git push --progress >output 2>&1 && 322 + test_grep "^To http" output && 323 + test_grep "^Writing objects" output 324 ' 325 326 test_expect_success 'http push gives sane defaults to reflog' ' ··· 489 -c color.push=always \ 490 push origin origin/main^:main 2>act && 491 test_decode_color <act >decoded && 492 + test_grep "<RED>.*rejected.*<RESET>" decoded && 493 + test_grep "<RED>error: failed to push some refs" decoded && 494 + test_grep "<YELLOW>hint: " decoded && 495 + test_grep ! "^hint: " decoded 496 ' 497 498 test_expect_success 'report error server does not provide ref status' '
+1 -1
t/t5545-push-options.sh
··· 252 mk_http_pair false && 253 test_commit -C test_http_clone one && 254 test_must_fail git -C test_http_clone push --push-option=asdf origin main 2>actual && 255 - test_i18ngrep "the receiving end does not support push options" actual && 256 git -C test_http_clone push origin main 257 ' 258
··· 252 mk_http_pair false && 253 test_commit -C test_http_clone one && 254 test_must_fail git -C test_http_clone push --push-option=asdf origin main 2>actual && 255 + test_grep "the receiving end does not support push options" actual && 256 git -C test_http_clone push origin main 257 ' 258
+4 -4
t/t5550-http-fetch-dumb.sh
··· 376 377 test_expect_success 'remote-http complains cleanly about malformed urls' ' 378 test_must_fail git remote-http http::/example.com/repo.git 2>stderr && 379 - test_i18ngrep "url has no scheme" stderr 380 ' 381 382 # NEEDSWORK: Writing commands to git-remote-curl can race against the latter ··· 385 test_expect_success 'remote-http complains cleanly about empty scheme' ' 386 test_must_fail ok=sigpipe git ls-remote \ 387 http::${HTTPD_URL#http}/dumb/repo.git 2>stderr && 388 - test_i18ngrep "url has no scheme" stderr 389 ' 390 391 test_expect_success 'redirects can be forbidden/allowed' ' ··· 397 398 test_expect_success 'redirects are reported to stderr' ' 399 # just look for a snippet of the redirected-to URL 400 - test_i18ngrep /dumb/ stderr 401 ' 402 403 test_expect_success 'non-initial redirects can be forbidden' ' ··· 466 467 test_expect_success 'print HTTP error when any intermediate redirect throws error' ' 468 test_must_fail git clone "$HTTPD_URL/redir-to/502" 2> stderr && 469 - test_i18ngrep "unable to access.*/redir-to/502" stderr 470 ' 471 472 test_expect_success 'fetching via http alternates works' '
··· 376 377 test_expect_success 'remote-http complains cleanly about malformed urls' ' 378 test_must_fail git remote-http http::/example.com/repo.git 2>stderr && 379 + test_grep "url has no scheme" stderr 380 ' 381 382 # NEEDSWORK: Writing commands to git-remote-curl can race against the latter ··· 385 test_expect_success 'remote-http complains cleanly about empty scheme' ' 386 test_must_fail ok=sigpipe git ls-remote \ 387 http::${HTTPD_URL#http}/dumb/repo.git 2>stderr && 388 + test_grep "url has no scheme" stderr 389 ' 390 391 test_expect_success 'redirects can be forbidden/allowed' ' ··· 397 398 test_expect_success 'redirects are reported to stderr' ' 399 # just look for a snippet of the redirected-to URL 400 + test_grep /dumb/ stderr 401 ' 402 403 test_expect_success 'non-initial redirects can be forbidden' ' ··· 466 467 test_expect_success 'print HTTP error when any intermediate redirect throws error' ' 468 test_must_fail git clone "$HTTPD_URL/redir-to/502" 2> stderr && 469 + test_grep "unable to access.*/redir-to/502" stderr 470 ' 471 472 test_expect_success 'fetching via http alternates works' '
+2 -2
t/t5551-http-fetch-smart.sh
··· 275 276 test_expect_success 'invalid Content-Type rejected' ' 277 test_must_fail git clone $HTTPD_URL/broken_smart/repo.git 2>actual && 278 - test_i18ngrep "not valid:" actual 279 ' 280 281 test_expect_success 'create namespaced refs' ' ··· 558 559 test_expect_success 'server-side error detected' ' 560 test_must_fail git clone $HTTPD_URL/error_smart/repo.git 2>actual && 561 - test_i18ngrep "server-side error" actual 562 ' 563 564 test_expect_success 'http auth remembers successful credentials' '
··· 275 276 test_expect_success 'invalid Content-Type rejected' ' 277 test_must_fail git clone $HTTPD_URL/broken_smart/repo.git 2>actual && 278 + test_grep "not valid:" actual 279 ' 280 281 test_expect_success 'create namespaced refs' ' ··· 558 559 test_expect_success 'server-side error detected' ' 560 test_must_fail git clone $HTTPD_URL/error_smart/repo.git 2>actual && 561 + test_grep "server-side error" actual 562 ' 563 564 test_expect_success 'http auth remembers successful credentials' '
+5 -5
t/t5570-git-daemon.sh
··· 10 start_git_daemon 11 12 check_verbose_connect () { 13 - test_i18ngrep -F "Looking up 127.0.0.1 ..." stderr && 14 - test_i18ngrep -F "Connecting to 127.0.0.1 (port " stderr && 15 - test_i18ngrep -F "done." stderr 16 } 17 18 test_expect_success 'setup repository' ' ··· 108 109 test_expect_success 'client refuses to ask for repo with newline' ' 110 test_must_fail git clone "$GIT_DAEMON_URL/repo$LF.git" dst 2>stderr && 111 - test_i18ngrep newline.is.forbidden stderr 112 ' 113 114 test_remote_error() ··· 148 fi 149 150 test_must_fail git "$cmd" "$GIT_DAEMON_URL/$repo" "$@" 2>output && 151 - test_i18ngrep "fatal: remote error: $msg: /$repo" output && 152 ret=$? 153 chmod +x "$GIT_DAEMON_DOCUMENT_ROOT_PATH/repo.git" 154 (exit $ret)
··· 10 start_git_daemon 11 12 check_verbose_connect () { 13 + test_grep -F "Looking up 127.0.0.1 ..." stderr && 14 + test_grep -F "Connecting to 127.0.0.1 (port " stderr && 15 + test_grep -F "done." stderr 16 } 17 18 test_expect_success 'setup repository' ' ··· 108 109 test_expect_success 'client refuses to ask for repo with newline' ' 110 test_must_fail git clone "$GIT_DAEMON_URL/repo$LF.git" dst 2>stderr && 111 + test_grep newline.is.forbidden stderr 112 ' 113 114 test_remote_error() ··· 148 fi 149 150 test_must_fail git "$cmd" "$GIT_DAEMON_URL/$repo" "$@" 2>output && 151 + test_grep "fatal: remote error: $msg: /$repo" output && 152 ret=$? 153 chmod +x "$GIT_DAEMON_DOCUMENT_ROOT_PATH/repo.git" 154 (exit $ret)
+1 -1
t/t5572-pull-submodule.sh
··· 177 # submodule itself, but the merge strategy in submodules 178 # does not support rebase: 179 test_must_fail git -C super pull --rebase --recurse-submodules 2>err && 180 - test_i18ngrep "locally recorded submodule modifications" err 181 ' 182 183 test_expect_success 'pull --rebase --recurse-submodules (no submodule changes, no fork-point)' '
··· 177 # submodule itself, but the merge strategy in submodules 178 # does not support rebase: 179 test_must_fail git -C super pull --rebase --recurse-submodules 2>err && 180 + test_grep "locally recorded submodule modifications" err 181 ' 182 183 test_expect_success 'pull --rebase --recurse-submodules (no submodule changes, no fork-point)' '
+13 -13
t/t5573-pull-verify-signatures.sh
··· 47 test_expect_success GPG 'pull unsigned commit with --verify-signatures' ' 48 test_when_finished "git reset --hard && git checkout initial" && 49 test_must_fail git pull --ff-only --verify-signatures unsigned 2>pullerror && 50 - test_i18ngrep "does not have a GPG signature" pullerror 51 ' 52 53 test_expect_success GPG 'pull commit with bad signature with --verify-signatures' ' 54 test_when_finished "git reset --hard && git checkout initial" && 55 test_must_fail git pull --ff-only --verify-signatures bad 2>pullerror && 56 - test_i18ngrep "has a bad GPG signature" pullerror 57 ' 58 59 test_expect_success GPG 'pull commit with untrusted signature with --verify-signatures' ' 60 test_when_finished "git reset --hard && git checkout initial" && 61 test_must_fail git pull --ff-only --verify-signatures untrusted 2>pullerror && 62 - test_i18ngrep "has an untrusted GPG signature" pullerror 63 ' 64 65 test_expect_success GPG 'pull commit with untrusted signature with --verify-signatures and minTrustLevel=ultimate' ' 66 test_when_finished "git reset --hard && git checkout initial" && 67 test_config gpg.minTrustLevel ultimate && 68 test_must_fail git pull --ff-only --verify-signatures untrusted 2>pullerror && 69 - test_i18ngrep "has an untrusted GPG signature" pullerror 70 ' 71 72 test_expect_success GPG 'pull commit with untrusted signature with --verify-signatures and minTrustLevel=marginal' ' 73 test_when_finished "git reset --hard && git checkout initial" && 74 test_config gpg.minTrustLevel marginal && 75 test_must_fail git pull --ff-only --verify-signatures untrusted 2>pullerror && 76 - test_i18ngrep "has an untrusted GPG signature" pullerror 77 ' 78 79 test_expect_success GPG 'pull commit with untrusted signature with --verify-signatures and minTrustLevel=undefined' ' 80 test_when_finished "git reset --hard && git checkout initial" && 81 test_config gpg.minTrustLevel undefined && 82 git pull --ff-only --verify-signatures untrusted >pulloutput && 83 - test_i18ngrep "has a good GPG signature" pulloutput 84 ' 85 86 test_expect_success GPG 'pull signed commit with --verify-signatures' ' 87 test_when_finished "git reset --hard && git checkout initial" && 88 git pull --verify-signatures signed >pulloutput && 89 - test_i18ngrep "has a good GPG signature" pulloutput 90 ' 91 92 test_expect_success GPG 'pull commit with bad signature without verification' ' ··· 106 git init empty-repo && 107 test_must_fail \ 108 git -C empty-repo pull --verify-signatures .. 2>pullerror && 109 - test_i18ngrep "does not have a GPG signature" pullerror 110 ' 111 112 test_expect_success GPG 'pull commit into unborn branch with bad signature and --verify-signatures' ' ··· 114 git init empty-repo && 115 test_must_fail \ 116 git -C empty-repo pull --ff-only --verify-signatures ../bad 2>pullerror && 117 - test_i18ngrep "has a bad GPG signature" pullerror 118 ' 119 120 test_expect_success GPG 'pull commit into unborn branch with untrusted signature and --verify-signatures' ' ··· 122 git init empty-repo && 123 test_must_fail \ 124 git -C empty-repo pull --ff-only --verify-signatures ../untrusted 2>pullerror && 125 - test_i18ngrep "has an untrusted GPG signature" pullerror 126 ' 127 128 test_expect_success GPG 'pull commit into unborn branch with untrusted signature and --verify-signatures and minTrustLevel=ultimate' ' ··· 131 test_config_global gpg.minTrustLevel ultimate && 132 test_must_fail \ 133 git -C empty-repo pull --ff-only --verify-signatures ../untrusted 2>pullerror && 134 - test_i18ngrep "has an untrusted GPG signature" pullerror 135 ' 136 137 test_expect_success GPG 'pull commit into unborn branch with untrusted signature and --verify-signatures and minTrustLevel=marginal' ' ··· 140 test_config_global gpg.minTrustLevel marginal && 141 test_must_fail \ 142 git -C empty-repo pull --ff-only --verify-signatures ../untrusted 2>pullerror && 143 - test_i18ngrep "has an untrusted GPG signature" pullerror 144 ' 145 146 test_expect_success GPG 'pull commit into unborn branch with untrusted signature and --verify-signatures and minTrustLevel=undefined' ' ··· 148 git init empty-repo && 149 test_config_global gpg.minTrustLevel undefined && 150 git -C empty-repo pull --ff-only --verify-signatures ../untrusted >pulloutput && 151 - test_i18ngrep "has a good GPG signature" pulloutput 152 ' 153 154 test_done
··· 47 test_expect_success GPG 'pull unsigned commit with --verify-signatures' ' 48 test_when_finished "git reset --hard && git checkout initial" && 49 test_must_fail git pull --ff-only --verify-signatures unsigned 2>pullerror && 50 + test_grep "does not have a GPG signature" pullerror 51 ' 52 53 test_expect_success GPG 'pull commit with bad signature with --verify-signatures' ' 54 test_when_finished "git reset --hard && git checkout initial" && 55 test_must_fail git pull --ff-only --verify-signatures bad 2>pullerror && 56 + test_grep "has a bad GPG signature" pullerror 57 ' 58 59 test_expect_success GPG 'pull commit with untrusted signature with --verify-signatures' ' 60 test_when_finished "git reset --hard && git checkout initial" && 61 test_must_fail git pull --ff-only --verify-signatures untrusted 2>pullerror && 62 + test_grep "has an untrusted GPG signature" pullerror 63 ' 64 65 test_expect_success GPG 'pull commit with untrusted signature with --verify-signatures and minTrustLevel=ultimate' ' 66 test_when_finished "git reset --hard && git checkout initial" && 67 test_config gpg.minTrustLevel ultimate && 68 test_must_fail git pull --ff-only --verify-signatures untrusted 2>pullerror && 69 + test_grep "has an untrusted GPG signature" pullerror 70 ' 71 72 test_expect_success GPG 'pull commit with untrusted signature with --verify-signatures and minTrustLevel=marginal' ' 73 test_when_finished "git reset --hard && git checkout initial" && 74 test_config gpg.minTrustLevel marginal && 75 test_must_fail git pull --ff-only --verify-signatures untrusted 2>pullerror && 76 + test_grep "has an untrusted GPG signature" pullerror 77 ' 78 79 test_expect_success GPG 'pull commit with untrusted signature with --verify-signatures and minTrustLevel=undefined' ' 80 test_when_finished "git reset --hard && git checkout initial" && 81 test_config gpg.minTrustLevel undefined && 82 git pull --ff-only --verify-signatures untrusted >pulloutput && 83 + test_grep "has a good GPG signature" pulloutput 84 ' 85 86 test_expect_success GPG 'pull signed commit with --verify-signatures' ' 87 test_when_finished "git reset --hard && git checkout initial" && 88 git pull --verify-signatures signed >pulloutput && 89 + test_grep "has a good GPG signature" pulloutput 90 ' 91 92 test_expect_success GPG 'pull commit with bad signature without verification' ' ··· 106 git init empty-repo && 107 test_must_fail \ 108 git -C empty-repo pull --verify-signatures .. 2>pullerror && 109 + test_grep "does not have a GPG signature" pullerror 110 ' 111 112 test_expect_success GPG 'pull commit into unborn branch with bad signature and --verify-signatures' ' ··· 114 git init empty-repo && 115 test_must_fail \ 116 git -C empty-repo pull --ff-only --verify-signatures ../bad 2>pullerror && 117 + test_grep "has a bad GPG signature" pullerror 118 ' 119 120 test_expect_success GPG 'pull commit into unborn branch with untrusted signature and --verify-signatures' ' ··· 122 git init empty-repo && 123 test_must_fail \ 124 git -C empty-repo pull --ff-only --verify-signatures ../untrusted 2>pullerror && 125 + test_grep "has an untrusted GPG signature" pullerror 126 ' 127 128 test_expect_success GPG 'pull commit into unborn branch with untrusted signature and --verify-signatures and minTrustLevel=ultimate' ' ··· 131 test_config_global gpg.minTrustLevel ultimate && 132 test_must_fail \ 133 git -C empty-repo pull --ff-only --verify-signatures ../untrusted 2>pullerror && 134 + test_grep "has an untrusted GPG signature" pullerror 135 ' 136 137 test_expect_success GPG 'pull commit into unborn branch with untrusted signature and --verify-signatures and minTrustLevel=marginal' ' ··· 140 test_config_global gpg.minTrustLevel marginal && 141 test_must_fail \ 142 git -C empty-repo pull --ff-only --verify-signatures ../untrusted 2>pullerror && 143 + test_grep "has an untrusted GPG signature" pullerror 144 ' 145 146 test_expect_success GPG 'pull commit into unborn branch with untrusted signature and --verify-signatures and minTrustLevel=undefined' ' ··· 148 git init empty-repo && 149 test_config_global gpg.minTrustLevel undefined && 150 git -C empty-repo pull --ff-only --verify-signatures ../untrusted >pulloutput && 151 + test_grep "has a good GPG signature" pulloutput 152 ' 153 154 test_done
+2 -2
t/t5574-fetch-output.sh
··· 281 ( 282 cd forced-update-clone && 283 git fetch --show-forced-updates origin 2>output && 284 - test_i18ngrep "(forced update)" output 285 ) && 286 ( 287 cd no-forced-update-clone && 288 git fetch --no-show-forced-updates origin 2>output && 289 - test_i18ngrep ! "(forced update)" output 290 ) 291 ' 292
··· 281 ( 282 cd forced-update-clone && 283 git fetch --show-forced-updates origin 2>output && 284 + test_grep "(forced update)" output 285 ) && 286 ( 287 cd no-forced-update-clone && 288 git fetch --no-show-forced-updates origin 2>output && 289 + test_grep ! "(forced update)" output 290 ) 291 ' 292
+1 -1
t/t5580-unc-paths.sh
··· 75 test_expect_success MINGW 'remote nick cannot contain backslashes' ' 76 BACKSLASHED="$(winpwd | tr / \\\\)" && 77 git ls-remote "$BACKSLASHED" 2>err && 78 - test_i18ngrep ! "unable to access" err 79 ' 80 81 test_expect_success 'unc alternates' '
··· 75 test_expect_success MINGW 'remote nick cannot contain backslashes' ' 76 BACKSLASHED="$(winpwd | tr / \\\\)" && 77 git ls-remote "$BACKSLASHED" 2>err && 78 + test_grep ! "unable to access" err 79 ' 80 81 test_expect_success 'unc alternates' '
+3 -3
t/t5601-clone.sh
··· 630 test_expect_success CASE_INSENSITIVE_FS 'colliding file detection' ' 631 grep X icasefs/warning && 632 grep x icasefs/warning && 633 - test_i18ngrep "the following paths have collided" icasefs/warning 634 ' 635 636 test_expect_success 'clone with GIT_DEFAULT_HASH' ' ··· 696 697 git clone --filter=blob:limit=0 "file://$(pwd)/server" client 2> err && 698 699 - test_i18ngrep "filtering not recognized by server" err 700 ' 701 702 test_expect_success 'batch missing blob request during checkout' ' ··· 767 test_when_finished "rm -rf repo" && 768 git clone --bare --no-local --depth=1 src "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" && 769 test_must_fail git -c protocol.version=2 clone --reject-shallow $HTTPD_URL/smart/repo.git repo 2>err && 770 - test_i18ngrep -e "source repository is shallow, reject to clone." err && 771 772 git clone --no-reject-shallow $HTTPD_URL/smart/repo.git repo 773 '
··· 630 test_expect_success CASE_INSENSITIVE_FS 'colliding file detection' ' 631 grep X icasefs/warning && 632 grep x icasefs/warning && 633 + test_grep "the following paths have collided" icasefs/warning 634 ' 635 636 test_expect_success 'clone with GIT_DEFAULT_HASH' ' ··· 696 697 git clone --filter=blob:limit=0 "file://$(pwd)/server" client 2> err && 698 699 + test_grep "filtering not recognized by server" err 700 ' 701 702 test_expect_success 'batch missing blob request during checkout' ' ··· 767 test_when_finished "rm -rf repo" && 768 git clone --bare --no-local --depth=1 src "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" && 769 test_must_fail git -c protocol.version=2 clone --reject-shallow $HTTPD_URL/smart/repo.git repo 2>err && 770 + test_grep -e "source repository is shallow, reject to clone." err && 771 772 git clone --no-reject-shallow $HTTPD_URL/smart/repo.git repo 773 '
+1 -1
t/t5604-clone-reference.sh
··· 317 for option in --local --no-hardlinks --dissociate 318 do 319 test_must_fail git clone $option T T$option 2>err || return 1 && 320 - test_i18ngrep "symlink.*exists" err || return 1 321 done && 322 323 # But `--shared` clones should still work, even when specifying
··· 317 for option in --local --no-hardlinks --dissociate 318 do 319 test_must_fail git clone $option T T$option 2>err || return 1 && 320 + test_grep "symlink.*exists" err || return 1 321 done && 322 323 # But `--shared` clones should still work, even when specifying
+5 -5
t/t5606-clone-options.sh
··· 39 test_expect_success 'rejects invalid -o/--origin' ' 40 41 test_must_fail git clone -o "bad...name" parent clone-bad-name 2>err && 42 - test_i18ngrep "'\''bad...name'\'' is not a valid remote name" err 43 44 ' 45 ··· 56 57 test_must_fail git clone --bare --separate-git-dir dot-git-destiation parent clone-bare-sgd 2>err && 58 test_debug "cat err" && 59 - test_i18ngrep -e "options .--bare. and .--separate-git-dir. cannot be used together" err 60 61 ' 62 ··· 71 test_expect_success 'reject cloning shallow repository' ' 72 test_when_finished "rm -rf repo" && 73 test_must_fail git clone --reject-shallow shallow-repo out 2>err && 74 - test_i18ngrep -e "source repository is shallow, reject to clone." err && 75 76 git clone --no-reject-shallow shallow-repo repo 77 ' ··· 79 test_expect_success 'reject cloning non-local shallow repository' ' 80 test_when_finished "rm -rf repo" && 81 test_must_fail git clone --reject-shallow --no-local shallow-repo out 2>err && 82 - test_i18ngrep -e "source repository is shallow, reject to clone." err && 83 84 git clone --no-reject-shallow --no-local shallow-repo repo 85 ' ··· 149 150 git clone "file://$(pwd)/parent" clone-redirected >out 2>err && 151 ! grep % err && 152 - test_i18ngrep ! "Checking connectivity" err 153 154 ' 155
··· 39 test_expect_success 'rejects invalid -o/--origin' ' 40 41 test_must_fail git clone -o "bad...name" parent clone-bad-name 2>err && 42 + test_grep "'\''bad...name'\'' is not a valid remote name" err 43 44 ' 45 ··· 56 57 test_must_fail git clone --bare --separate-git-dir dot-git-destiation parent clone-bare-sgd 2>err && 58 test_debug "cat err" && 59 + test_grep -e "options .--bare. and .--separate-git-dir. cannot be used together" err 60 61 ' 62 ··· 71 test_expect_success 'reject cloning shallow repository' ' 72 test_when_finished "rm -rf repo" && 73 test_must_fail git clone --reject-shallow shallow-repo out 2>err && 74 + test_grep -e "source repository is shallow, reject to clone." err && 75 76 git clone --no-reject-shallow shallow-repo repo 77 ' ··· 79 test_expect_success 'reject cloning non-local shallow repository' ' 80 test_when_finished "rm -rf repo" && 81 test_must_fail git clone --reject-shallow --no-local shallow-repo out 2>err && 82 + test_grep -e "source repository is shallow, reject to clone." err && 83 84 git clone --no-reject-shallow --no-local shallow-repo repo 85 ' ··· 149 150 git clone "file://$(pwd)/parent" clone-redirected >out 2>err && 151 ! grep % err && 152 + test_grep ! "Checking connectivity" err 153 154 ' 155
+2 -2
t/t5607-clone-bundle.sh
··· 24 test_expect_success '"verify" needs a worktree' ' 25 git bundle create tip.bundle -1 main && 26 nongit test_must_fail git bundle verify ../tip.bundle 2>err && 27 - test_i18ngrep "need a repository" err 28 ' 29 30 test_expect_success 'annotated tags can be excluded by rev-list options' ' ··· 166 @unknown=silly 167 EOF 168 test_must_fail git bundle verify new 2>output && 169 - test_i18ngrep "unknown capability .unknown=silly." output 170 ' 171 172 test_done
··· 24 test_expect_success '"verify" needs a worktree' ' 25 git bundle create tip.bundle -1 main && 26 nongit test_must_fail git bundle verify ../tip.bundle 2>err && 27 + test_grep "need a repository" err 28 ' 29 30 test_expect_success 'annotated tags can be excluded by rev-list options' ' ··· 166 @unknown=silly 167 EOF 168 test_must_fail git bundle verify new 2>output && 169 + test_grep "unknown capability .unknown=silly." output 170 ' 171 172 test_done
+2 -2
t/t5611-clone-config.sh
··· 103 test_expect_success 'clone.rejectshallow=true should reject cloning shallow repo' ' 104 test_when_finished "rm -rf out" && 105 test_must_fail git -c clone.rejectshallow=true clone --no-local shallow-repo out 2>err && 106 - test_i18ngrep -e "source repository is shallow, reject to clone." err && 107 108 git -c clone.rejectshallow=false clone --no-local shallow-repo out 109 ' ··· 111 test_expect_success 'option --[no-]reject-shallow override clone.rejectshallow config' ' 112 test_when_finished "rm -rf out" && 113 test_must_fail git -c clone.rejectshallow=false clone --reject-shallow --no-local shallow-repo out 2>err && 114 - test_i18ngrep -e "source repository is shallow, reject to clone." err && 115 116 git -c clone.rejectshallow=true clone --no-reject-shallow --no-local shallow-repo out 117 '
··· 103 test_expect_success 'clone.rejectshallow=true should reject cloning shallow repo' ' 104 test_when_finished "rm -rf out" && 105 test_must_fail git -c clone.rejectshallow=true clone --no-local shallow-repo out 2>err && 106 + test_grep -e "source repository is shallow, reject to clone." err && 107 108 git -c clone.rejectshallow=false clone --no-local shallow-repo out 109 ' ··· 111 test_expect_success 'option --[no-]reject-shallow override clone.rejectshallow config' ' 112 test_when_finished "rm -rf out" && 113 test_must_fail git -c clone.rejectshallow=false clone --reject-shallow --no-local shallow-repo out 2>err && 114 + test_grep -e "source repository is shallow, reject to clone." err && 115 116 git -c clone.rejectshallow=true clone --no-reject-shallow --no-local shallow-repo out 117 '
+11 -11
t/t5616-partial-clone.sh
··· 353 test_must_fail git \ 354 -c uploadpackfilter.tree.maxdepth \ 355 upload-pack . >/dev/null 2>err && 356 - test_i18ngrep "unable to parse.*tree.maxdepth" err 357 ' 358 359 test_expect_success 'upload-pack fails banned object filters' ' 360 test_config -C srv.bare uploadpackfilter.blob:none.allow false && 361 test_must_fail ok=sigpipe git clone --no-checkout --filter=blob:none \ 362 "file://$(pwd)/srv.bare" pc3 2>err && 363 - test_i18ngrep "filter '\''blob:none'\'' not supported" err 364 ' 365 366 test_expect_success 'upload-pack fails banned combine object filters' ' ··· 370 test_config -C srv.bare uploadpackfilter.blob:none.allow false && 371 test_must_fail ok=sigpipe git clone --no-checkout --filter=tree:1 \ 372 --filter=blob:none "file://$(pwd)/srv.bare" pc3 2>err && 373 - test_i18ngrep "filter '\''blob:none'\'' not supported" err 374 ' 375 376 test_expect_success 'upload-pack fails banned object filters with fallback' ' 377 test_config -C srv.bare uploadpackfilter.allow false && 378 test_must_fail ok=sigpipe git clone --no-checkout --filter=blob:none \ 379 "file://$(pwd)/srv.bare" pc3 2>err && 380 - test_i18ngrep "filter '\''blob:none'\'' not supported" err 381 ' 382 383 test_expect_success 'upload-pack limits tree depth filters' ' ··· 386 test_config -C srv.bare uploadpackfilter.tree.maxDepth 0 && 387 test_must_fail ok=sigpipe git clone --no-checkout --filter=tree:1 \ 388 "file://$(pwd)/srv.bare" pc3 2>err && 389 - test_i18ngrep "tree filter allows max depth 0, but got 1" err && 390 391 git clone --no-checkout --filter=tree:0 "file://$(pwd)/srv.bare" pc4 && 392 ··· 394 git clone --no-checkout --filter=tree:5 "file://$(pwd)/srv.bare" pc5 && 395 test_must_fail ok=sigpipe git clone --no-checkout --filter=tree:6 \ 396 "file://$(pwd)/srv.bare" pc6 2>err && 397 - test_i18ngrep "tree filter allows max depth 5, but got 6" err 398 ' 399 400 test_expect_success 'partial clone fetches blobs pointed to by refs even if normally filtered out' ' ··· 459 test_must_fail git clone --no-local --bare \ 460 --filter=sparse:oid=main:no-such-name \ 461 sparse-src dst.git 2>err && 462 - test_i18ngrep "unable to access sparse blob in .main:no-such-name" err && 463 test_must_fail git clone --no-local --bare \ 464 --filter=sparse:oid=main \ 465 sparse-src dst.git 2>err && 466 - test_i18ngrep "unable to parse sparse filter data in" err 467 ' 468 469 setup_triangle () { ··· 493 TREE_HASH=$(git -C server rev-parse HEAD~1^{tree}) && 494 git -C promisor-remote fetch --keep "file://$(pwd)/server" "$TREE_HASH" && 495 git -C promisor-remote count-objects -v >object-count && 496 - test_i18ngrep "count: 0" object-count && 497 - test_i18ngrep "in-pack: 2" object-count && 498 499 # Set it as the promisor remote of client. Thus, whenever 500 # the client lazy fetches, the lazy fetch will succeed only if it is ··· 748 test_must_fail git -c protocol.version=2 clone \ 749 --filter=blob:none $HTTPD_URL/one_time_perl/server repo 2>err && 750 751 - test_i18ngrep "did not send all necessary objects" err && 752 753 # Ensure that the one-time-perl script was used. 754 ! test -e "$HTTPD_ROOT_PATH/one-time-perl"
··· 353 test_must_fail git \ 354 -c uploadpackfilter.tree.maxdepth \ 355 upload-pack . >/dev/null 2>err && 356 + test_grep "unable to parse.*tree.maxdepth" err 357 ' 358 359 test_expect_success 'upload-pack fails banned object filters' ' 360 test_config -C srv.bare uploadpackfilter.blob:none.allow false && 361 test_must_fail ok=sigpipe git clone --no-checkout --filter=blob:none \ 362 "file://$(pwd)/srv.bare" pc3 2>err && 363 + test_grep "filter '\''blob:none'\'' not supported" err 364 ' 365 366 test_expect_success 'upload-pack fails banned combine object filters' ' ··· 370 test_config -C srv.bare uploadpackfilter.blob:none.allow false && 371 test_must_fail ok=sigpipe git clone --no-checkout --filter=tree:1 \ 372 --filter=blob:none "file://$(pwd)/srv.bare" pc3 2>err && 373 + test_grep "filter '\''blob:none'\'' not supported" err 374 ' 375 376 test_expect_success 'upload-pack fails banned object filters with fallback' ' 377 test_config -C srv.bare uploadpackfilter.allow false && 378 test_must_fail ok=sigpipe git clone --no-checkout --filter=blob:none \ 379 "file://$(pwd)/srv.bare" pc3 2>err && 380 + test_grep "filter '\''blob:none'\'' not supported" err 381 ' 382 383 test_expect_success 'upload-pack limits tree depth filters' ' ··· 386 test_config -C srv.bare uploadpackfilter.tree.maxDepth 0 && 387 test_must_fail ok=sigpipe git clone --no-checkout --filter=tree:1 \ 388 "file://$(pwd)/srv.bare" pc3 2>err && 389 + test_grep "tree filter allows max depth 0, but got 1" err && 390 391 git clone --no-checkout --filter=tree:0 "file://$(pwd)/srv.bare" pc4 && 392 ··· 394 git clone --no-checkout --filter=tree:5 "file://$(pwd)/srv.bare" pc5 && 395 test_must_fail ok=sigpipe git clone --no-checkout --filter=tree:6 \ 396 "file://$(pwd)/srv.bare" pc6 2>err && 397 + test_grep "tree filter allows max depth 5, but got 6" err 398 ' 399 400 test_expect_success 'partial clone fetches blobs pointed to by refs even if normally filtered out' ' ··· 459 test_must_fail git clone --no-local --bare \ 460 --filter=sparse:oid=main:no-such-name \ 461 sparse-src dst.git 2>err && 462 + test_grep "unable to access sparse blob in .main:no-such-name" err && 463 test_must_fail git clone --no-local --bare \ 464 --filter=sparse:oid=main \ 465 sparse-src dst.git 2>err && 466 + test_grep "unable to parse sparse filter data in" err 467 ' 468 469 setup_triangle () { ··· 493 TREE_HASH=$(git -C server rev-parse HEAD~1^{tree}) && 494 git -C promisor-remote fetch --keep "file://$(pwd)/server" "$TREE_HASH" && 495 git -C promisor-remote count-objects -v >object-count && 496 + test_grep "count: 0" object-count && 497 + test_grep "in-pack: 2" object-count && 498 499 # Set it as the promisor remote of client. Thus, whenever 500 # the client lazy fetches, the lazy fetch will succeed only if it is ··· 748 test_must_fail git -c protocol.version=2 clone \ 749 --filter=blob:none $HTTPD_URL/one_time_perl/server repo 2>err && 750 751 + test_grep "did not send all necessary objects" err && 752 753 # Ensure that the one-time-perl script was used. 754 ! test -e "$HTTPD_ROOT_PATH/one-time-perl"
+4 -4
t/t5701-git-serve.sh
··· 52 0000 53 EOF 54 test_must_fail test-tool serve-v2 --stateless-rpc 2>err <in && 55 - test_i18ngrep "unknown capability" err 56 ' 57 58 test_expect_success 'request with no command' ' ··· 62 0000 63 EOF 64 test_must_fail test-tool serve-v2 --stateless-rpc 2>err <in && 65 - test_i18ngrep "no command requested" err 66 ' 67 68 test_expect_success 'request invalid command' ' ··· 73 0000 74 EOF 75 test_must_fail test-tool serve-v2 --stateless-rpc 2>err <in && 76 - test_i18ngrep "invalid command" err 77 ' 78 79 test_expect_success 'request capability as command' ' ··· 115 0000 116 EOF 117 test_must_fail test-tool serve-v2 --stateless-rpc 2>err <in && 118 - test_i18ngrep "mismatched object format" err 119 ' 120 121 # Test the basics of ls-refs
··· 52 0000 53 EOF 54 test_must_fail test-tool serve-v2 --stateless-rpc 2>err <in && 55 + test_grep "unknown capability" err 56 ' 57 58 test_expect_success 'request with no command' ' ··· 62 0000 63 EOF 64 test_must_fail test-tool serve-v2 --stateless-rpc 2>err <in && 65 + test_grep "no command requested" err 66 ' 67 68 test_expect_success 'request invalid command' ' ··· 73 0000 74 EOF 75 test_must_fail test-tool serve-v2 --stateless-rpc 2>err <in && 76 + test_grep "invalid command" err 77 ' 78 79 test_expect_success 'request capability as command' ' ··· 115 0000 116 EOF 117 test_must_fail test-tool serve-v2 --stateless-rpc 2>err <in && 118 + test_grep "mismatched object format" err 119 ' 120 121 # Test the basics of ls-refs
+17 -17
t/t5702-protocol-v2.sh
··· 189 test_must_fail env GIT_TEST_PROTOCOL_VERSION=0 git -c protocol.version=0 \ 190 ls-remote -o hello -o world "file://$(pwd)/file_parent" main 2>err && 191 192 - test_i18ngrep "see protocol.version in" err && 193 - test_i18ngrep "server options require protocol version 2 or later" err 194 ' 195 196 test_expect_success 'clone with file:// using protocol v2' ' ··· 377 test_must_fail env GIT_TEST_PROTOCOL_VERSION=0 git -C temp_child -c protocol.version=0 \ 378 fetch -o hello -o world "file://$(pwd)/file_parent" main 2>err && 379 380 - test_i18ngrep "see protocol.version in" err && 381 - test_i18ngrep "server options require protocol version 2 or later" err 382 ' 383 384 test_expect_success 'server-options are sent when cloning' ' ··· 399 clone --server-option=hello --server-option=world \ 400 "file://$(pwd)/file_parent" myclone 2>err && 401 402 - test_i18ngrep "see protocol.version in" err && 403 - test_i18ngrep "server options require protocol version 2 or later" err 404 ' 405 406 test_expect_success 'upload-pack respects config using protocol v2' ' ··· 495 git -C server config uploadpack.allowfilter 0 && 496 git -c protocol.version=2 \ 497 clone --filter=blob:none "file://$(pwd)/server" client 2>err && 498 - test_i18ngrep "filtering not recognized by server, ignoring" err 499 ' 500 501 test_expect_success 'even with handcrafted request, filter does not work if not advertised' ' ··· 736 --negotiate-only \ 737 --negotiation-tip=$(git -C client rev-parse HEAD) \ 738 origin 2>err && 739 - test_i18ngrep "negotiate-only requires protocol v2" err 740 ' 741 742 test_expect_success 'push with custom path does not request v2' ' ··· 809 # Server responded using protocol v2 810 grep "git< version 2" log && 811 # Client reported appropriate failure 812 - test_i18ngrep "bytes of length header were received" err 813 ' 814 815 test_expect_success 'clone repository with http:// using protocol v2 with incomplete pktline body' ' ··· 826 # Server responded using protocol v2 827 grep "git< version 2" log && 828 # Client reported appropriate failure 829 - test_i18ngrep "bytes of body are still expected" err 830 ' 831 832 test_expect_success 'clone with http:// using protocol v2 and invalid parameters' ' ··· 973 974 test_must_fail git -C http_child -c protocol.version=2 \ 975 fetch "$HTTPD_URL/one_time_perl/http_parent" 2> err && 976 - test_i18ngrep "expected packfile to be sent after .ready." err 977 ' 978 979 test_expect_success 'when server does not send "ready", expect FLUSH' ' ··· 1001 fetch "$HTTPD_URL/one_time_perl/http_parent" 2> err && 1002 grep "fetch< .*acknowledgments" log && 1003 ! grep "fetch< .*ready" log && 1004 - test_i18ngrep "expected no other sections to be sent after no .ready." err 1005 ' 1006 1007 configure_exclusion () { ··· 1111 git -c protocol.version=2 \ 1112 -c fetch.uriprotocols=http,https \ 1113 clone "$HTTPD_URL/smart/http_parent" http_child 2>err && 1114 - test_i18ngrep "pack downloaded from.*does not match expected hash" err 1115 ' 1116 1117 test_expect_success 'packfile-uri with transfer.fsckobjects' ' ··· 1165 test_must_fail git -c protocol.version=2 -c transfer.fsckobjects=1 \ 1166 -c fetch.uriprotocols=http,https \ 1167 clone "$HTTPD_URL/smart/http_parent" http_child 2>error && 1168 - test_i18ngrep "invalid author/committer line - missing email" error 1169 ' 1170 1171 test_expect_success 'packfile-uri with transfer.fsckobjects succeeds when .gitmodules is separate from tree' ' ··· 1213 test_must_fail git -c protocol.version=2 -c transfer.fsckobjects=1 \ 1214 -c fetch.uriprotocols=http,https \ 1215 clone "$HTTPD_URL/smart/http_parent" http_child 2>err && 1216 - test_i18ngrep "disallowed submodule name" err 1217 ' 1218 1219 test_expect_success 'packfile-uri path redacted in trace' ' ··· 1296 --negotiate-only \ 1297 --negotiation-tip=$(git -C client rev-parse HEAD) \ 1298 origin 2>err && 1299 - test_i18ngrep "server does not support wait-for-done" err 1300 ' 1301 1302 test_expect_success 'http:// --negotiate-only with protocol v0' ' ··· 1310 --negotiate-only \ 1311 --negotiation-tip=$(git -C client rev-parse HEAD) \ 1312 origin 2>err && 1313 - test_i18ngrep "negotiate-only requires protocol v2" err 1314 ' 1315 1316 # DO NOT add non-httpd-specific tests here, because the last part of this
··· 189 test_must_fail env GIT_TEST_PROTOCOL_VERSION=0 git -c protocol.version=0 \ 190 ls-remote -o hello -o world "file://$(pwd)/file_parent" main 2>err && 191 192 + test_grep "see protocol.version in" err && 193 + test_grep "server options require protocol version 2 or later" err 194 ' 195 196 test_expect_success 'clone with file:// using protocol v2' ' ··· 377 test_must_fail env GIT_TEST_PROTOCOL_VERSION=0 git -C temp_child -c protocol.version=0 \ 378 fetch -o hello -o world "file://$(pwd)/file_parent" main 2>err && 379 380 + test_grep "see protocol.version in" err && 381 + test_grep "server options require protocol version 2 or later" err 382 ' 383 384 test_expect_success 'server-options are sent when cloning' ' ··· 399 clone --server-option=hello --server-option=world \ 400 "file://$(pwd)/file_parent" myclone 2>err && 401 402 + test_grep "see protocol.version in" err && 403 + test_grep "server options require protocol version 2 or later" err 404 ' 405 406 test_expect_success 'upload-pack respects config using protocol v2' ' ··· 495 git -C server config uploadpack.allowfilter 0 && 496 git -c protocol.version=2 \ 497 clone --filter=blob:none "file://$(pwd)/server" client 2>err && 498 + test_grep "filtering not recognized by server, ignoring" err 499 ' 500 501 test_expect_success 'even with handcrafted request, filter does not work if not advertised' ' ··· 736 --negotiate-only \ 737 --negotiation-tip=$(git -C client rev-parse HEAD) \ 738 origin 2>err && 739 + test_grep "negotiate-only requires protocol v2" err 740 ' 741 742 test_expect_success 'push with custom path does not request v2' ' ··· 809 # Server responded using protocol v2 810 grep "git< version 2" log && 811 # Client reported appropriate failure 812 + test_grep "bytes of length header were received" err 813 ' 814 815 test_expect_success 'clone repository with http:// using protocol v2 with incomplete pktline body' ' ··· 826 # Server responded using protocol v2 827 grep "git< version 2" log && 828 # Client reported appropriate failure 829 + test_grep "bytes of body are still expected" err 830 ' 831 832 test_expect_success 'clone with http:// using protocol v2 and invalid parameters' ' ··· 973 974 test_must_fail git -C http_child -c protocol.version=2 \ 975 fetch "$HTTPD_URL/one_time_perl/http_parent" 2> err && 976 + test_grep "expected packfile to be sent after .ready." err 977 ' 978 979 test_expect_success 'when server does not send "ready", expect FLUSH' ' ··· 1001 fetch "$HTTPD_URL/one_time_perl/http_parent" 2> err && 1002 grep "fetch< .*acknowledgments" log && 1003 ! grep "fetch< .*ready" log && 1004 + test_grep "expected no other sections to be sent after no .ready." err 1005 ' 1006 1007 configure_exclusion () { ··· 1111 git -c protocol.version=2 \ 1112 -c fetch.uriprotocols=http,https \ 1113 clone "$HTTPD_URL/smart/http_parent" http_child 2>err && 1114 + test_grep "pack downloaded from.*does not match expected hash" err 1115 ' 1116 1117 test_expect_success 'packfile-uri with transfer.fsckobjects' ' ··· 1165 test_must_fail git -c protocol.version=2 -c transfer.fsckobjects=1 \ 1166 -c fetch.uriprotocols=http,https \ 1167 clone "$HTTPD_URL/smart/http_parent" http_child 2>error && 1168 + test_grep "invalid author/committer line - missing email" error 1169 ' 1170 1171 test_expect_success 'packfile-uri with transfer.fsckobjects succeeds when .gitmodules is separate from tree' ' ··· 1213 test_must_fail git -c protocol.version=2 -c transfer.fsckobjects=1 \ 1214 -c fetch.uriprotocols=http,https \ 1215 clone "$HTTPD_URL/smart/http_parent" http_child 2>err && 1216 + test_grep "disallowed submodule name" err 1217 ' 1218 1219 test_expect_success 'packfile-uri path redacted in trace' ' ··· 1296 --negotiate-only \ 1297 --negotiation-tip=$(git -C client rev-parse HEAD) \ 1298 origin 2>err && 1299 + test_grep "server does not support wait-for-done" err 1300 ' 1301 1302 test_expect_success 'http:// --negotiate-only with protocol v0' ' ··· 1310 --negotiate-only \ 1311 --negotiation-tip=$(git -C client rev-parse HEAD) \ 1312 origin 2>err && 1313 + test_grep "negotiate-only requires protocol v2" err 1314 ' 1315 1316 # DO NOT add non-httpd-specific tests here, because the last part of this
+2 -2
t/t5703-upload-pack-ref-in-want.sh
··· 484 cp -r "$LOCAL_PRISTINE" local && 485 inconsistency main $(test_oid numeric) && 486 test_must_fail git -C local fetch 2>err && 487 - test_i18ngrep "fatal: remote error: upload-pack: not our ref" err 488 ' 489 490 test_expect_success 'server is initially ahead - ref in want' ' ··· 530 echo "s/main/rain/" >"$HTTPD_ROOT_PATH/one-time-perl" && 531 test_must_fail git -C local fetch 2>err && 532 533 - test_i18ngrep "fatal: remote error: unknown ref refs/heads/rain" err 534 ' 535 536 # DO NOT add non-httpd-specific tests here, because the last part of this
··· 484 cp -r "$LOCAL_PRISTINE" local && 485 inconsistency main $(test_oid numeric) && 486 test_must_fail git -C local fetch 2>err && 487 + test_grep "fatal: remote error: upload-pack: not our ref" err 488 ' 489 490 test_expect_success 'server is initially ahead - ref in want' ' ··· 530 echo "s/main/rain/" >"$HTTPD_ROOT_PATH/one-time-perl" && 531 test_must_fail git -C local fetch 2>err && 532 533 + test_grep "fatal: remote error: unknown ref refs/heads/rain" err 534 ' 535 536 # DO NOT add non-httpd-specific tests here, because the last part of this
+2 -2
t/t5704-protocol-violations.sh
··· 18 } >input && 19 test_must_fail env GIT_PROTOCOL=version=2 \ 20 git upload-pack . <input 2>err && 21 - test_i18ngrep "expected flush after ls-refs arguments" err 22 ' 23 24 test_expect_success 'extra delim packet in v2 fetch args' ' ··· 31 } >input && 32 test_must_fail env GIT_PROTOCOL=version=2 \ 33 git upload-pack . <input 2>err && 34 - test_i18ngrep "expected flush after fetch arguments" err 35 ' 36 37 test_expect_success 'bogus symref in v0 capabilities' '
··· 18 } >input && 19 test_must_fail env GIT_PROTOCOL=version=2 \ 20 git upload-pack . <input 2>err && 21 + test_grep "expected flush after ls-refs arguments" err 22 ' 23 24 test_expect_success 'extra delim packet in v2 fetch args' ' ··· 31 } >input && 32 test_must_fail env GIT_PROTOCOL=version=2 \ 33 git upload-pack . <input 2>err && 34 + test_grep "expected flush after fetch arguments" err 35 ' 36 37 test_expect_success 'bogus symref in v0 capabilities' '
+4 -4
t/t5801-remote-helpers.sh
··· 137 test_expect_success 'cloning without refspec' ' 138 GIT_REMOTE_TESTGIT_NOREFSPEC=1 \ 139 git clone "testgit::${PWD}/server" local2 2>error && 140 - test_i18ngrep "this remote helper should implement refspec capability" error && 141 compare_refs local2 HEAD server HEAD 142 ' 143 ··· 145 (cd local2 && 146 git reset --hard && 147 GIT_REMOTE_TESTGIT_NOREFSPEC=1 git pull 2>../error) && 148 - test_i18ngrep "this remote helper should implement refspec capability" error && 149 compare_refs local2 HEAD server HEAD 150 ' 151 ··· 157 GIT_REMOTE_TESTGIT_NOREFSPEC=1 && 158 export GIT_REMOTE_TESTGIT_NOREFSPEC && 159 test_must_fail git push 2>../error) && 160 - test_i18ngrep "remote-helper doesn.t support push; refspec needed" error 161 ' 162 163 test_expect_success 'pulling without marks' ' ··· 256 test_expect_success 'proper failure checks for fetching' ' 257 (cd local && 258 test_must_fail env GIT_REMOTE_TESTGIT_FAILURE=1 git fetch 2>error && 259 - test_i18ngrep -q "error while running fast-import" error 260 ) 261 ' 262
··· 137 test_expect_success 'cloning without refspec' ' 138 GIT_REMOTE_TESTGIT_NOREFSPEC=1 \ 139 git clone "testgit::${PWD}/server" local2 2>error && 140 + test_grep "this remote helper should implement refspec capability" error && 141 compare_refs local2 HEAD server HEAD 142 ' 143 ··· 145 (cd local2 && 146 git reset --hard && 147 GIT_REMOTE_TESTGIT_NOREFSPEC=1 git pull 2>../error) && 148 + test_grep "this remote helper should implement refspec capability" error && 149 compare_refs local2 HEAD server HEAD 150 ' 151 ··· 157 GIT_REMOTE_TESTGIT_NOREFSPEC=1 && 158 export GIT_REMOTE_TESTGIT_NOREFSPEC && 159 test_must_fail git push 2>../error) && 160 + test_grep "remote-helper doesn.t support push; refspec needed" error 161 ' 162 163 test_expect_success 'pulling without marks' ' ··· 256 test_expect_success 'proper failure checks for fetching' ' 257 (cd local && 258 test_must_fail env GIT_REMOTE_TESTGIT_FAILURE=1 git fetch 2>error && 259 + test_grep -q "error while running fast-import" error 260 ) 261 ' 262
+1 -1
t/t5812-proto-disable-http.sh
··· 20 test_must_fail env GIT_ALLOW_PROTOCOL=http:https \ 21 GIT_SMART_HTTP=0 \ 22 git clone "$HTTPD_URL/ftp-redir/repo.git" 2>stderr && 23 - test_i18ngrep -E "(ftp.*disabled|your curl version is too old)" stderr 24 ' 25 26 test_expect_success 'curl limits redirects' '
··· 20 test_must_fail env GIT_ALLOW_PROTOCOL=http:https \ 21 GIT_SMART_HTTP=0 \ 22 git clone "$HTTPD_URL/ftp-redir/repo.git" 2>stderr && 23 + test_grep -E "(ftp.*disabled|your curl version is too old)" stderr 24 ' 25 26 test_expect_success 'curl limits redirects' '
+2 -2
t/t6001-rev-list-graft.sh
··· 118 119 test_expect_success 'show advice that grafts are deprecated' ' 120 git show HEAD 2>err && 121 - test_i18ngrep "git replace" err && 122 test_config advice.graftFileDeprecated false && 123 git show HEAD 2>err && 124 - test_i18ngrep ! "git replace" err 125 ' 126 127 test_done
··· 118 119 test_expect_success 'show advice that grafts are deprecated' ' 120 git show HEAD 2>err && 121 + test_grep "git replace" err && 122 test_config advice.graftFileDeprecated false && 123 git show HEAD 2>err && 124 + test_grep ! "git replace" err 125 ' 126 127 test_done
+2 -2
t/t6021-rev-list-exclude-hidden.sh
··· 151 do 152 test_expect_success "$section: fails with --$pseudoopt" ' 153 test_must_fail git rev-list --exclude-hidden=$section --$pseudoopt 2>err && 154 - test_i18ngrep "error: --exclude-hidden cannot be used together with --$pseudoopt" err 155 ' 156 157 test_expect_success "$section: fails with --$pseudoopt=pattern" ' 158 test_must_fail git rev-list --exclude-hidden=$section --$pseudoopt=pattern 2>err && 159 - test_i18ngrep "error: --exclude-hidden cannot be used together with --$pseudoopt" err 160 ' 161 done 162 done
··· 151 do 152 test_expect_success "$section: fails with --$pseudoopt" ' 153 test_must_fail git rev-list --exclude-hidden=$section --$pseudoopt 2>err && 154 + test_grep "error: --exclude-hidden cannot be used together with --$pseudoopt" err 155 ' 156 157 test_expect_success "$section: fails with --$pseudoopt=pattern" ' 158 test_must_fail git rev-list --exclude-hidden=$section --$pseudoopt=pattern 2>err && 159 + test_grep "error: --exclude-hidden cannot be used together with --$pseudoopt" err 160 ' 161 done 162 done
+12 -12
t/t6030-bisect-porcelain.sh
··· 220 cp .git/BISECT_START saved && 221 test_must_fail git bisect start $HASH4 foo -- && 222 git branch > branch.output && 223 - test_i18ngrep "* (no branch, bisect started on other)" branch.output > /dev/null && 224 test_cmp saved .git/BISECT_START 225 ' 226 test_expect_success 'bisect start: no ".git/BISECT_START" if mistaken rev' ' ··· 588 test_expect_success 'bisect errors out if bad and good are mistaken' ' 589 git bisect reset && 590 test_must_fail git bisect start $HASH2 $HASH4 2> rev_list_error && 591 - test_i18ngrep "mistook good and bad" rev_list_error && 592 git bisect reset 593 ' 594 ··· 630 631 test_expect_success 'good merge base when good and bad are siblings' ' 632 git bisect start "$HASH7" "$SIDE_HASH7" > my_bisect_log.txt && 633 - test_i18ngrep "merge base must be tested" my_bisect_log.txt && 634 grep $HASH4 my_bisect_log.txt && 635 git bisect good > my_bisect_log.txt && 636 ! grep "merge base must be tested" my_bisect_log.txt && ··· 639 ' 640 test_expect_success 'skipped merge base when good and bad are siblings' ' 641 git bisect start "$SIDE_HASH7" "$HASH7" > my_bisect_log.txt && 642 - test_i18ngrep "merge base must be tested" my_bisect_log.txt && 643 grep $HASH4 my_bisect_log.txt && 644 git bisect skip > my_bisect_log.txt 2>&1 && 645 grep "warning" my_bisect_log.txt && ··· 649 650 test_expect_success 'bad merge base when good and bad are siblings' ' 651 git bisect start "$HASH7" HEAD > my_bisect_log.txt && 652 - test_i18ngrep "merge base must be tested" my_bisect_log.txt && 653 grep $HASH4 my_bisect_log.txt && 654 test_must_fail git bisect bad > my_bisect_log.txt 2>&1 && 655 - test_i18ngrep "merge base $HASH4 is bad" my_bisect_log.txt && 656 - test_i18ngrep "fixed between $HASH4 and \[$SIDE_HASH7\]" my_bisect_log.txt && 657 git bisect reset 658 ' 659 ··· 704 705 test_expect_success 'good merge bases when good and bad are siblings' ' 706 git bisect start "$B_HASH" "$A_HASH" > my_bisect_log.txt && 707 - test_i18ngrep "merge base must be tested" my_bisect_log.txt && 708 git bisect good > my_bisect_log2.txt && 709 - test_i18ngrep "merge base must be tested" my_bisect_log2.txt && 710 { 711 { 712 grep "$SIDE_HASH5" my_bisect_log.txt && ··· 721 722 test_expect_success 'optimized merge base checks' ' 723 git bisect start "$HASH7" "$SIDE_HASH7" > my_bisect_log.txt && 724 - test_i18ngrep "merge base must be tested" my_bisect_log.txt && 725 grep "$HASH4" my_bisect_log.txt && 726 git bisect good > my_bisect_log2.txt && 727 test -f ".git/BISECT_ANCESTORS_OK" && 728 test "$HASH6" = $(git rev-parse --verify HEAD) && 729 git bisect bad && 730 git bisect good "$A_HASH" > my_bisect_log4.txt && 731 - test_i18ngrep "merge base must be tested" my_bisect_log4.txt && 732 test_path_is_missing ".git/BISECT_ANCESTORS_OK" 733 ' 734 ··· 806 807 test_expect_success 'erroring out when using bad path arguments' ' 808 test_must_fail git bisect start $PARA_HASH7 $HASH1 -- foobar 2> error.txt && 809 - test_i18ngrep "bad path arguments" error.txt 810 ' 811 812 test_expect_success 'test bisection on bare repo - --no-checkout specified' '
··· 220 cp .git/BISECT_START saved && 221 test_must_fail git bisect start $HASH4 foo -- && 222 git branch > branch.output && 223 + test_grep "* (no branch, bisect started on other)" branch.output > /dev/null && 224 test_cmp saved .git/BISECT_START 225 ' 226 test_expect_success 'bisect start: no ".git/BISECT_START" if mistaken rev' ' ··· 588 test_expect_success 'bisect errors out if bad and good are mistaken' ' 589 git bisect reset && 590 test_must_fail git bisect start $HASH2 $HASH4 2> rev_list_error && 591 + test_grep "mistook good and bad" rev_list_error && 592 git bisect reset 593 ' 594 ··· 630 631 test_expect_success 'good merge base when good and bad are siblings' ' 632 git bisect start "$HASH7" "$SIDE_HASH7" > my_bisect_log.txt && 633 + test_grep "merge base must be tested" my_bisect_log.txt && 634 grep $HASH4 my_bisect_log.txt && 635 git bisect good > my_bisect_log.txt && 636 ! grep "merge base must be tested" my_bisect_log.txt && ··· 639 ' 640 test_expect_success 'skipped merge base when good and bad are siblings' ' 641 git bisect start "$SIDE_HASH7" "$HASH7" > my_bisect_log.txt && 642 + test_grep "merge base must be tested" my_bisect_log.txt && 643 grep $HASH4 my_bisect_log.txt && 644 git bisect skip > my_bisect_log.txt 2>&1 && 645 grep "warning" my_bisect_log.txt && ··· 649 650 test_expect_success 'bad merge base when good and bad are siblings' ' 651 git bisect start "$HASH7" HEAD > my_bisect_log.txt && 652 + test_grep "merge base must be tested" my_bisect_log.txt && 653 grep $HASH4 my_bisect_log.txt && 654 test_must_fail git bisect bad > my_bisect_log.txt 2>&1 && 655 + test_grep "merge base $HASH4 is bad" my_bisect_log.txt && 656 + test_grep "fixed between $HASH4 and \[$SIDE_HASH7\]" my_bisect_log.txt && 657 git bisect reset 658 ' 659 ··· 704 705 test_expect_success 'good merge bases when good and bad are siblings' ' 706 git bisect start "$B_HASH" "$A_HASH" > my_bisect_log.txt && 707 + test_grep "merge base must be tested" my_bisect_log.txt && 708 git bisect good > my_bisect_log2.txt && 709 + test_grep "merge base must be tested" my_bisect_log2.txt && 710 { 711 { 712 grep "$SIDE_HASH5" my_bisect_log.txt && ··· 721 722 test_expect_success 'optimized merge base checks' ' 723 git bisect start "$HASH7" "$SIDE_HASH7" > my_bisect_log.txt && 724 + test_grep "merge base must be tested" my_bisect_log.txt && 725 grep "$HASH4" my_bisect_log.txt && 726 git bisect good > my_bisect_log2.txt && 727 test -f ".git/BISECT_ANCESTORS_OK" && 728 test "$HASH6" = $(git rev-parse --verify HEAD) && 729 git bisect bad && 730 git bisect good "$A_HASH" > my_bisect_log4.txt && 731 + test_grep "merge base must be tested" my_bisect_log4.txt && 732 test_path_is_missing ".git/BISECT_ANCESTORS_OK" 733 ' 734 ··· 806 807 test_expect_success 'erroring out when using bad path arguments' ' 808 test_must_fail git bisect start $PARA_HASH7 $HASH1 -- foobar 2> error.txt && 809 + test_grep "bad path arguments" error.txt 810 ' 811 812 test_expect_success 'test bisection on bare repo - --no-checkout specified' '
+9 -9
t/t6040-tracking-info.sh
··· 83 ( 84 cd test && git checkout b1 85 ) >actual && 86 - test_i18ngrep "have 1 and 1 different" actual 87 ' 88 89 test_expect_success 'checkout with local tracked branch' ' 90 git checkout main && 91 git checkout follower >actual && 92 - test_i18ngrep "is ahead of" actual 93 ' 94 95 test_expect_success 'checkout (upstream is gone)' ' ··· 97 cd test && 98 git checkout b5 99 ) >actual && 100 - test_i18ngrep "is based on .*, but the upstream is gone." actual 101 ' 102 103 test_expect_success 'checkout (up-to-date with upstream)' ' 104 ( 105 cd test && git checkout b6 106 ) >actual && 107 - test_i18ngrep "Your branch is up to date with .origin/main" actual 108 ' 109 110 test_expect_success 'status (diverged from upstream)' ' ··· 114 # reports nothing to commit 115 test_must_fail git commit --dry-run 116 ) >actual && 117 - test_i18ngrep "have 1 and 1 different" actual 118 ' 119 120 test_expect_success 'status (upstream is gone)' ' ··· 124 # reports nothing to commit 125 test_must_fail git commit --dry-run 126 ) >actual && 127 - test_i18ngrep "is based on .*, but the upstream is gone." actual 128 ' 129 130 test_expect_success 'status (up-to-date with upstream)' ' ··· 134 # reports nothing to commit 135 test_must_fail git commit --dry-run 136 ) >actual && 137 - test_i18ngrep "Your branch is up to date with .origin/main" actual 138 ' 139 140 cat >expect <<\EOF ··· 253 git checkout main && 254 git tag light && 255 test_must_fail git branch --track lighttrack light >actual && 256 - test_i18ngrep ! "set up to track" actual && 257 test_must_fail git checkout lighttrack 258 ' 259 ··· 261 git checkout main && 262 git tag -m heavy heavy && 263 test_must_fail git branch --track heavytrack heavy >actual && 264 - test_i18ngrep ! "set up to track" actual && 265 test_must_fail git checkout heavytrack 266 ' 267
··· 83 ( 84 cd test && git checkout b1 85 ) >actual && 86 + test_grep "have 1 and 1 different" actual 87 ' 88 89 test_expect_success 'checkout with local tracked branch' ' 90 git checkout main && 91 git checkout follower >actual && 92 + test_grep "is ahead of" actual 93 ' 94 95 test_expect_success 'checkout (upstream is gone)' ' ··· 97 cd test && 98 git checkout b5 99 ) >actual && 100 + test_grep "is based on .*, but the upstream is gone." actual 101 ' 102 103 test_expect_success 'checkout (up-to-date with upstream)' ' 104 ( 105 cd test && git checkout b6 106 ) >actual && 107 + test_grep "Your branch is up to date with .origin/main" actual 108 ' 109 110 test_expect_success 'status (diverged from upstream)' ' ··· 114 # reports nothing to commit 115 test_must_fail git commit --dry-run 116 ) >actual && 117 + test_grep "have 1 and 1 different" actual 118 ' 119 120 test_expect_success 'status (upstream is gone)' ' ··· 124 # reports nothing to commit 125 test_must_fail git commit --dry-run 126 ) >actual && 127 + test_grep "is based on .*, but the upstream is gone." actual 128 ' 129 130 test_expect_success 'status (up-to-date with upstream)' ' ··· 134 # reports nothing to commit 135 test_must_fail git commit --dry-run 136 ) >actual && 137 + test_grep "Your branch is up to date with .origin/main" actual 138 ' 139 140 cat >expect <<\EOF ··· 253 git checkout main && 254 git tag light && 255 test_must_fail git branch --track lighttrack light >actual && 256 + test_grep ! "set up to track" actual && 257 test_must_fail git checkout lighttrack 258 ' 259 ··· 261 git checkout main && 262 git tag -m heavy heavy && 263 test_must_fail git branch --track heavytrack heavy >actual && 264 + test_grep ! "set up to track" actual && 265 test_must_fail git checkout heavytrack 266 ' 267
+7 -7
t/t6050-replace.sh
··· 44 _parent_number=$(( $_parent_number + 1 )) 45 done && 46 test_must_fail git rev-parse --verify $_commit^$_parent_number 2>err && 47 - test_i18ngrep "Needed a single revision" err 48 } 49 50 commit_has_parents () ··· 137 138 test_expect_success '"git fsck" works' ' 139 git fsck main >fsck_main.out && 140 - test_i18ngrep "dangling commit $R" fsck_main.out && 141 - test_i18ngrep "dangling tag $(git show-ref -s refs/tags/mytag)" fsck_main.out && 142 test -z "$(git fsck)" 143 ' 144 ··· 490 $(git rev-parse HEAD^^ HEAD^ HEAD^^ HEAD^2) \ 491 >.git/info/grafts && 492 git status 2>stderr && 493 - test_i18ngrep "hint:.*grafts is deprecated" stderr && 494 git replace --convert-graft-file 2>stderr && 495 - test_i18ngrep ! "hint:.*grafts is deprecated" stderr && 496 test_path_is_missing .git/info/grafts && 497 498 : verify that the history is now "grafted" && ··· 503 test_when_finished "rm -f .git/info/grafts" && 504 echo $EMPTY_BLOB $EMPTY_TREE >.git/info/grafts && 505 test_must_fail git replace --convert-graft-file 2>err && 506 - test_i18ngrep "$EMPTY_BLOB $EMPTY_TREE" err && 507 - test_i18ngrep "$EMPTY_BLOB $EMPTY_TREE" .git/info/grafts 508 ' 509 510 test_done
··· 44 _parent_number=$(( $_parent_number + 1 )) 45 done && 46 test_must_fail git rev-parse --verify $_commit^$_parent_number 2>err && 47 + test_grep "Needed a single revision" err 48 } 49 50 commit_has_parents () ··· 137 138 test_expect_success '"git fsck" works' ' 139 git fsck main >fsck_main.out && 140 + test_grep "dangling commit $R" fsck_main.out && 141 + test_grep "dangling tag $(git show-ref -s refs/tags/mytag)" fsck_main.out && 142 test -z "$(git fsck)" 143 ' 144 ··· 490 $(git rev-parse HEAD^^ HEAD^ HEAD^^ HEAD^2) \ 491 >.git/info/grafts && 492 git status 2>stderr && 493 + test_grep "hint:.*grafts is deprecated" stderr && 494 git replace --convert-graft-file 2>stderr && 495 + test_grep ! "hint:.*grafts is deprecated" stderr && 496 test_path_is_missing .git/info/grafts && 497 498 : verify that the history is now "grafted" && ··· 503 test_when_finished "rm -f .git/info/grafts" && 504 echo $EMPTY_BLOB $EMPTY_TREE >.git/info/grafts && 505 test_must_fail git replace --convert-graft-file 2>err && 506 + test_grep "$EMPTY_BLOB $EMPTY_TREE" err && 507 + test_grep "$EMPTY_BLOB $EMPTY_TREE" .git/info/grafts 508 ' 509 510 test_done
+8 -8
t/t6102-rev-list-unexpected-objects.sh
··· 28 29 test_expect_success 'traverse unexpected non-blob entry (seen)' ' 30 test_must_fail git rev-list --objects $tree $broken_tree >output 2>&1 && 31 - test_i18ngrep "is not a blob" output 32 ' 33 34 test_expect_success 'setup unexpected non-tree entry' ' ··· 42 43 test_expect_success 'traverse unexpected non-tree entry (seen)' ' 44 test_must_fail git rev-list --objects $blob $broken_tree >output 2>&1 && 45 - test_i18ngrep "is not a tree" output 46 ' 47 48 test_expect_success 'setup unexpected non-commit parent' ' ··· 54 55 test_expect_success 'traverse unexpected non-commit parent (lone)' ' 56 test_must_fail git rev-list --objects $broken_commit >output 2>&1 && 57 - test_i18ngrep "not a commit" output 58 ' 59 60 test_expect_success 'traverse unexpected non-commit parent (seen)' ' 61 test_must_fail git rev-list --objects $blob $broken_commit \ 62 >output 2>&1 && 63 - test_i18ngrep "not a commit" output 64 ' 65 66 test_expect_success 'setup unexpected non-tree root' ' ··· 76 test_expect_success 'traverse unexpected non-tree root (seen)' ' 77 test_must_fail git rev-list --objects $blob $broken_commit \ 78 >output 2>&1 && 79 - test_i18ngrep "not a tree" output 80 ' 81 82 test_expect_success 'setup unexpected non-commit tag' ' ··· 93 94 test_expect_success 'traverse unexpected non-commit tag (seen)' ' 95 test_must_fail git rev-list --objects $blob $tag >output 2>&1 && 96 - test_i18ngrep "not a commit" output 97 ' 98 99 test_expect_success 'setup unexpected non-tree tag' ' ··· 110 111 test_expect_success 'traverse unexpected non-tree tag (seen)' ' 112 test_must_fail git rev-list --objects $blob $tag >output 2>&1 && 113 - test_i18ngrep "not a tree" output 114 ' 115 116 test_expect_success 'setup unexpected non-blob tag' ' ··· 127 128 test_expect_success 'traverse unexpected non-blob tag (seen)' ' 129 test_must_fail git rev-list --objects $commit $tag >output 2>&1 && 130 - test_i18ngrep "not a blob" output 131 ' 132 133 test_done
··· 28 29 test_expect_success 'traverse unexpected non-blob entry (seen)' ' 30 test_must_fail git rev-list --objects $tree $broken_tree >output 2>&1 && 31 + test_grep "is not a blob" output 32 ' 33 34 test_expect_success 'setup unexpected non-tree entry' ' ··· 42 43 test_expect_success 'traverse unexpected non-tree entry (seen)' ' 44 test_must_fail git rev-list --objects $blob $broken_tree >output 2>&1 && 45 + test_grep "is not a tree" output 46 ' 47 48 test_expect_success 'setup unexpected non-commit parent' ' ··· 54 55 test_expect_success 'traverse unexpected non-commit parent (lone)' ' 56 test_must_fail git rev-list --objects $broken_commit >output 2>&1 && 57 + test_grep "not a commit" output 58 ' 59 60 test_expect_success 'traverse unexpected non-commit parent (seen)' ' 61 test_must_fail git rev-list --objects $blob $broken_commit \ 62 >output 2>&1 && 63 + test_grep "not a commit" output 64 ' 65 66 test_expect_success 'setup unexpected non-tree root' ' ··· 76 test_expect_success 'traverse unexpected non-tree root (seen)' ' 77 test_must_fail git rev-list --objects $blob $broken_commit \ 78 >output 2>&1 && 79 + test_grep "not a tree" output 80 ' 81 82 test_expect_success 'setup unexpected non-commit tag' ' ··· 93 94 test_expect_success 'traverse unexpected non-commit tag (seen)' ' 95 test_must_fail git rev-list --objects $blob $tag >output 2>&1 && 96 + test_grep "not a commit" output 97 ' 98 99 test_expect_success 'setup unexpected non-tree tag' ' ··· 110 111 test_expect_success 'traverse unexpected non-tree tag (seen)' ' 112 test_must_fail git rev-list --objects $blob $tag >output 2>&1 && 113 + test_grep "not a tree" output 114 ' 115 116 test_expect_success 'setup unexpected non-blob tag' ' ··· 127 128 test_expect_success 'traverse unexpected non-blob tag (seen)' ' 129 test_must_fail git rev-list --objects $commit $tag >output 2>&1 && 130 + test_grep "not a blob" output 131 ' 132 133 test_done
+1 -1
t/t6112-rev-list-filters-objects.sh
··· 457 test_must_fail git -C r3 rev-list --objects --filter="$spec" HEAD \ 458 >actual 2>actual_stderr && 459 test_must_be_empty actual && 460 - test_i18ngrep "$err" actual_stderr 461 } 462 463 test_expect_success 'combine:... while URL-encoding things that should not be' '
··· 457 test_must_fail git -C r3 rev-list --objects --filter="$spec" HEAD \ 458 >actual 2>actual_stderr && 459 test_must_be_empty actual && 460 + test_grep "$err" actual_stderr 461 } 462 463 test_expect_success 'combine:... while URL-encoding things that should not be' '
+1 -1
t/t6120-describe.sh
··· 392 test_expect_success 'describe tag object' ' 393 git tag test-blob-1 -a -m msg unique-file:file && 394 test_must_fail git describe test-blob-1 2>actual && 395 - test_i18ngrep "fatal: test-blob-1 is neither a commit nor blob" actual 396 ' 397 398 test_expect_success ULIMIT_STACK_SIZE 'name-rev works in a deep repo' '
··· 392 test_expect_success 'describe tag object' ' 393 git tag test-blob-1 -a -m msg unique-file:file && 394 test_must_fail git describe test-blob-1 2>actual && 395 + test_grep "fatal: test-blob-1 is neither a commit nor blob" actual 396 ' 397 398 test_expect_success ULIMIT_STACK_SIZE 'name-rev works in a deep repo' '
+1 -1
t/t6134-pathspec-in-submodule.sh
··· 27 28 test_expect_success 'error message for path inside submodule from within submodule' ' 29 test_must_fail git -C sub add . 2>actual && 30 - test_i18ngrep "in unpopulated submodule" actual 31 ' 32 33 test_done
··· 27 28 test_expect_success 'error message for path inside submodule from within submodule' ' 29 test_must_fail git -C sub add . 2>actual && 30 + test_grep "in unpopulated submodule" actual 31 ' 32 33 test_done
+4 -4
t/t6135-pathspec-with-attrs.sh
··· 236 237 test_expect_success 'fail on multiple attr specifiers in one pathspec item' ' 238 test_must_fail git ls-files . ":(attr:labelB,attr:labelC)" 2>actual && 239 - test_i18ngrep "Only one" actual 240 ' 241 242 test_expect_success 'fail if attr magic is used places not implemented' ' ··· 246 # though, but git-add is convenient as it has its own internal pathspec 247 # parsing. 248 test_must_fail git add ":(attr:labelB)" 2>actual && 249 - test_i18ngrep "magic not supported" actual 250 ' 251 252 test_expect_success 'abort on giving invalid label on the command line' ' ··· 269 270 test_expect_success 'backslash cannot be the last character' ' 271 test_must_fail git ls-files ":(attr:label=foo\\ labelA=bar)" 2>actual && 272 - test_i18ngrep "not allowed as last character in attr value" actual 273 ' 274 275 test_expect_success 'backslash cannot be used as a value' ' 276 test_must_fail git ls-files ":(attr:label=f\\\oo)" 2>actual && 277 - test_i18ngrep "for value matching" actual 278 ' 279 280 test_expect_success 'reading from .gitattributes in a subdirectory (1)' '
··· 236 237 test_expect_success 'fail on multiple attr specifiers in one pathspec item' ' 238 test_must_fail git ls-files . ":(attr:labelB,attr:labelC)" 2>actual && 239 + test_grep "Only one" actual 240 ' 241 242 test_expect_success 'fail if attr magic is used places not implemented' ' ··· 246 # though, but git-add is convenient as it has its own internal pathspec 247 # parsing. 248 test_must_fail git add ":(attr:labelB)" 2>actual && 249 + test_grep "magic not supported" actual 250 ' 251 252 test_expect_success 'abort on giving invalid label on the command line' ' ··· 269 270 test_expect_success 'backslash cannot be the last character' ' 271 test_must_fail git ls-files ":(attr:label=foo\\ labelA=bar)" 2>actual && 272 + test_grep "not allowed as last character in attr value" actual 273 ' 274 275 test_expect_success 'backslash cannot be used as a value' ' 276 test_must_fail git ls-files ":(attr:label=f\\\oo)" 2>actual && 277 + test_grep "for value matching" actual 278 ' 279 280 test_expect_success 'reading from .gitattributes in a subdirectory (1)' '
+4 -4
t/t6136-pathspec-in-bare.sh
··· 15 cd bare && 16 test_must_fail git log -- .. >out 2>err && 17 test_must_be_empty out && 18 - test_i18ngrep "outside repository" err && 19 20 test_must_fail git ls-files -- .. >out 2>err && 21 test_must_be_empty out && 22 - test_i18ngrep "outside repository" err 23 ) 24 ' 25 ··· 28 cd .git && 29 test_must_fail git log -- .. >out 2>err && 30 test_must_be_empty out && 31 - test_i18ngrep "outside repository" err && 32 33 test_must_fail git ls-files -- .. >out 2>err && 34 test_must_be_empty out && 35 - test_i18ngrep "outside repository" err 36 ) 37 ' 38
··· 15 cd bare && 16 test_must_fail git log -- .. >out 2>err && 17 test_must_be_empty out && 18 + test_grep "outside repository" err && 19 20 test_must_fail git ls-files -- .. >out 2>err && 21 test_must_be_empty out && 22 + test_grep "outside repository" err 23 ) 24 ' 25 ··· 28 cd .git && 29 test_must_fail git log -- .. >out 2>err && 30 test_must_be_empty out && 31 + test_grep "outside repository" err && 32 33 test_must_fail git ls-files -- .. >out 2>err && 34 test_must_be_empty out && 35 + test_grep "outside repository" err 36 ) 37 ' 38
+8 -8
t/t6402-merge-rename.sh
··· 311 git checkout -q renamed-file-has-no-conflicts^0 && 312 test_must_fail git merge --strategy=recursive dir-in-way >output && 313 314 - test_i18ngrep "CONFLICT (modify/delete): dir/file-in-the-way" output && 315 - test_i18ngrep "Auto-merging dir" output && 316 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 317 then 318 - test_i18ngrep "moving it to dir~HEAD instead" output 319 else 320 - test_i18ngrep "Adding as dir~HEAD instead" output 321 fi && 322 323 test_stdout_line_count = 3 git ls-files -u && ··· 338 test_must_fail git merge --strategy=recursive renamed-file-has-no-conflicts >output 2>errors && 339 340 ! grep "error: refusing to lose untracked file at" errors && 341 - test_i18ngrep "CONFLICT (modify/delete): dir/file-in-the-way" output && 342 - test_i18ngrep "Auto-merging dir" output && 343 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 344 then 345 - test_i18ngrep "moving it to dir~renamed-file-has-no-conflicts instead" output 346 else 347 - test_i18ngrep "Adding as dir~renamed-file-has-no-conflicts instead" output 348 fi && 349 350 test_stdout_line_count = 3 git ls-files -u &&
··· 311 git checkout -q renamed-file-has-no-conflicts^0 && 312 test_must_fail git merge --strategy=recursive dir-in-way >output && 313 314 + test_grep "CONFLICT (modify/delete): dir/file-in-the-way" output && 315 + test_grep "Auto-merging dir" output && 316 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 317 then 318 + test_grep "moving it to dir~HEAD instead" output 319 else 320 + test_grep "Adding as dir~HEAD instead" output 321 fi && 322 323 test_stdout_line_count = 3 git ls-files -u && ··· 338 test_must_fail git merge --strategy=recursive renamed-file-has-no-conflicts >output 2>errors && 339 340 ! grep "error: refusing to lose untracked file at" errors && 341 + test_grep "CONFLICT (modify/delete): dir/file-in-the-way" output && 342 + test_grep "Auto-merging dir" output && 343 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 344 then 345 + test_grep "moving it to dir~renamed-file-has-no-conflicts instead" output 346 else 347 + test_grep "Adding as dir~renamed-file-has-no-conflicts instead" output 348 fi && 349 350 test_stdout_line_count = 3 git ls-files -u &&
+8 -8
t/t6422-merge-rename-corner-cases.sh
··· 476 git checkout A^0 && 477 478 test_must_fail git merge -s recursive B^0 >out && 479 - test_i18ngrep "CONFLICT (.*/add)" out && 480 481 git ls-files -s >out && 482 test_line_count = 2 out && ··· 522 git checkout B^0 && 523 524 test_must_fail git merge -s recursive A^0 >out && 525 - test_i18ngrep "CONFLICT (.*/add)" out && 526 527 git ls-files -s >out && 528 test_line_count = 2 out && ··· 602 git checkout B^0 && 603 604 test_must_fail git merge -s recursive C^0 >out && 605 - test_i18ngrep "CONFLICT (\(.*\)/\1)" out && 606 607 git ls-files -s >out && 608 test_line_count = 2 out && ··· 914 # be flexible in the type of console output message(s) reported 915 # for this particular case; we will be more stringent about the 916 # contents of the index and working directory. 917 - test_i18ngrep "CONFLICT (.*/add)" out && 918 - test_i18ngrep "CONFLICT (rename.*/delete)" out && 919 test_must_be_empty err && 920 921 git ls-files -s >file_count && ··· 988 # be flexible in the type of console output message(s) reported 989 # for this particular case; we will be more stringent about the 990 # contents of the index and working directory. 991 - test_i18ngrep "CONFLICT (\(.*\)/\1)" out && 992 - test_i18ngrep "CONFLICT (rename.*delete)" out && 993 test_must_be_empty err && 994 995 git ls-files -s >file_count && ··· 1068 1069 test_must_fail git merge -s recursive B^0 >out 2>err && 1070 1071 - test_i18ngrep "CONFLICT (rename/rename)" out && 1072 test_must_be_empty err && 1073 1074 git ls-files -s >file_count &&
··· 476 git checkout A^0 && 477 478 test_must_fail git merge -s recursive B^0 >out && 479 + test_grep "CONFLICT (.*/add)" out && 480 481 git ls-files -s >out && 482 test_line_count = 2 out && ··· 522 git checkout B^0 && 523 524 test_must_fail git merge -s recursive A^0 >out && 525 + test_grep "CONFLICT (.*/add)" out && 526 527 git ls-files -s >out && 528 test_line_count = 2 out && ··· 602 git checkout B^0 && 603 604 test_must_fail git merge -s recursive C^0 >out && 605 + test_grep "CONFLICT (\(.*\)/\1)" out && 606 607 git ls-files -s >out && 608 test_line_count = 2 out && ··· 914 # be flexible in the type of console output message(s) reported 915 # for this particular case; we will be more stringent about the 916 # contents of the index and working directory. 917 + test_grep "CONFLICT (.*/add)" out && 918 + test_grep "CONFLICT (rename.*/delete)" out && 919 test_must_be_empty err && 920 921 git ls-files -s >file_count && ··· 988 # be flexible in the type of console output message(s) reported 989 # for this particular case; we will be more stringent about the 990 # contents of the index and working directory. 991 + test_grep "CONFLICT (\(.*\)/\1)" out && 992 + test_grep "CONFLICT (rename.*delete)" out && 993 test_must_be_empty err && 994 995 git ls-files -s >file_count && ··· 1068 1069 test_must_fail git merge -s recursive B^0 >out 2>err && 1070 1071 + test_grep "CONFLICT (rename/rename)" out && 1072 test_must_be_empty err && 1073 1074 git ls-files -s >file_count &&
+70 -70
t/t6423-merge-rename-directories.sh
··· 276 git checkout A^0 && 277 278 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 279 - test_i18ngrep "CONFLICT (\(.*\)/\1)" out && 280 281 git ls-files -s >out && 282 test_line_count = 8 out && ··· 515 git checkout A^0 && 516 517 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 518 - test_i18ngrep "CONFLICT.*directory rename split" out && 519 520 git ls-files -s >out && 521 test_line_count = 3 out && ··· 591 git rev-parse >expect \ 592 O:z/b O:z/c B:x/d && 593 test_cmp expect actual && 594 - test_i18ngrep ! "CONFLICT.*directory rename split" out 595 ) 596 ' 597 ··· 726 git checkout A^0 && 727 728 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 729 - test_i18ngrep CONFLICT.*rename/rename.*z/d.*x/d.*w/d out && 730 - test_i18ngrep ! CONFLICT.*rename/rename.*y/d out && 731 732 git ls-files -s >out && 733 test_line_count = 5 out && ··· 938 git checkout A^0 && 939 940 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 941 - test_i18ngrep "CONFLICT.*implicit dir rename" out && 942 943 git ls-files -s >out && 944 test_line_count = 6 out && ··· 1013 git checkout A^0 && 1014 1015 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 1016 - test_i18ngrep "CONFLICT (add/add).* y/d" out && 1017 1018 git ls-files -s >out && 1019 test_line_count = 5 out && ··· 1094 git checkout A^0 && 1095 1096 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 1097 - test_i18ngrep "CONFLICT (rename/rename).*x/d.*w/d.*z/d" out && 1098 - test_i18ngrep "CONFLICT (add/add).* y/d" out && 1099 1100 git ls-files -s >out && 1101 test_line_count = 9 out && ··· 1179 git checkout A^0 && 1180 1181 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 1182 - test_i18ngrep "CONFLICT (file/directory).*y/d" out && 1183 1184 git ls-files -s >out && 1185 test_line_count = 6 out && ··· 1278 git checkout A^0 && 1279 1280 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 1281 - test_i18ngrep "CONFLICT (rename/delete).*z/c.*y/c" out && 1282 1283 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 1284 then ··· 1740 git checkout A^0 && 1741 1742 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 1743 - test_i18ngrep "CONFLICT (rename/rename).*z/b.*y/b.*w/b" out && 1744 - test_i18ngrep "CONFLICT (rename/rename).*z/c.*y/c.*x/c" out && 1745 1746 git ls-files -s >out && 1747 test_line_count = 7 out && ··· 1813 git checkout A^0 && 1814 1815 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 1816 - test_i18ngrep "CONFLICT (\(.*\)/\1)" out && 1817 1818 git ls-files -s >out && 1819 test_line_count = 4 out && ··· 1900 git checkout A^0 && 1901 1902 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 1903 - test_i18ngrep "CONFLICT (rename/rename).*x/d.*w/d.*y/d" out && 1904 1905 git ls-files -s >out && 1906 test_line_count = 5 out && ··· 1965 git checkout A^0 && 1966 1967 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 1968 - test_i18ngrep "CONFLICT (rename/delete).*x/d.*y/d" out && 1969 1970 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 1971 then ··· 2071 git checkout A^0 && 2072 2073 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 2074 - test_i18ngrep "CONFLICT (rename/delete).*x/d.*y/d" out && 2075 2076 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 2077 then ··· 2330 git checkout A^0 && 2331 2332 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 2333 - test_i18ngrep "CONFLICT (modify/delete).* z/d" out && 2334 2335 git ls-files -s >out && 2336 test_line_count = 5 out && ··· 2491 git checkout A^0 && 2492 2493 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out 2>err && 2494 - test_i18ngrep CONFLICT.*rename/rename.*z/c.*y/c.*w/c out && 2495 - test_i18ngrep CONFLICT.*rename/rename.*z/b.*y/b.*w/b out && 2496 2497 git ls-files -s >out && 2498 test_line_count = 7 out && ··· 2741 git checkout A^0 && 2742 2743 git -c merge.directoryRenames=true merge -s recursive B^0 >out && 2744 - test_i18ngrep "WARNING: Avoiding applying x -> z rename to x/f" out && 2745 2746 git ls-files -s >out && 2747 test_line_count = 6 out && ··· 2830 git checkout A^0 && 2831 2832 git -c merge.directoryRenames=true merge -s recursive B^0 >out && 2833 - test_i18ngrep "WARNING: Avoiding applying z -> y rename to z/t" out && 2834 - test_i18ngrep "WARNING: Avoiding applying y -> x rename to y/a" out && 2835 - test_i18ngrep "WARNING: Avoiding applying x -> w rename to x/b" out && 2836 - test_i18ngrep "WARNING: Avoiding applying w -> v rename to w/c" out && 2837 2838 git ls-files -s >out && 2839 test_line_count = 7 out && ··· 3215 3216 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out 2>err && 3217 test_path_is_missing .git/MERGE_HEAD && 3218 - test_i18ngrep "The following untracked working tree files would be overwritten by merge" err && 3219 3220 git ls-files -s >out && 3221 test_line_count = 1 out && ··· 3287 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 3288 then 3289 test_path_is_missing .git/MERGE_HEAD && 3290 - test_i18ngrep "error: The following untracked working tree files would be overwritten by merge" err && 3291 3292 git ls-files -s >out && 3293 test_line_count = 1 out && ··· 3296 git ls-files -o >out && 3297 test_line_count = 5 out 3298 else 3299 - test_i18ngrep "CONFLICT (rename/delete).*Version B\^0 of y/d left in tree at y/d~B\^0" out && 3300 - test_i18ngrep "Error: Refusing to lose untracked file at y/e; writing to y/e~B\^0 instead" out && 3301 3302 git ls-files -s >out && 3303 test_line_count = 3 out && ··· 3377 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 3378 then 3379 test_path_is_missing .git/MERGE_HEAD && 3380 - test_i18ngrep "error: The following untracked working tree files would be overwritten by merge" err && 3381 3382 git ls-files -s >out && 3383 test_line_count = 4 out && ··· 3386 git ls-files -o >out && 3387 test_line_count = 3 out 3388 else 3389 - test_i18ngrep "CONFLICT (rename/rename)" out && 3390 - test_i18ngrep "Refusing to lose untracked file at y/c; adding as y/c~B\^0 instead" out && 3391 3392 git ls-files -s >out && 3393 test_line_count = 6 out && ··· 3428 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 3429 then 3430 test_path_is_missing .git/MERGE_HEAD && 3431 - test_i18ngrep "error: The following untracked working tree files would be overwritten by merge" err && 3432 3433 git ls-files -s >out && 3434 test_line_count = 4 out && ··· 3437 git ls-files -o >out && 3438 test_line_count = 3 out 3439 else 3440 - test_i18ngrep "CONFLICT (rename/rename)" out && 3441 - test_i18ngrep "Refusing to lose untracked file at y/c; adding as y/c~HEAD instead" out && 3442 3443 git ls-files -s >out && 3444 test_line_count = 6 out && ··· 3517 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 3518 then 3519 test_path_is_missing .git/MERGE_HEAD && 3520 - test_i18ngrep "error: The following untracked working tree files would be overwritten by merge" err && 3521 3522 git ls-files -s >out && 3523 test_line_count = 6 out && ··· 3526 git ls-files -o >out && 3527 test_line_count = 3 out 3528 else 3529 - test_i18ngrep "CONFLICT (rename/rename)" out && 3530 - test_i18ngrep "Refusing to lose untracked file at y/wham" out && 3531 3532 git ls-files -s >out && 3533 test_line_count = 6 out && ··· 3606 echo random >z/c && 3607 3608 git -c merge.directoryRenames=true merge -s recursive B^0 >out 2>err && 3609 - test_i18ngrep ! "following untracked working tree files would be overwritten by merge" err && 3610 3611 git ls-files -s >out && 3612 test_line_count = 3 out && ··· 3690 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 3691 then 3692 test_path_is_missing .git/MERGE_HEAD && 3693 - test_i18ngrep "error: Your local changes to the following files would be overwritten by merge" err 3694 else 3695 - test_i18ngrep "Refusing to lose dirty file at z/c" out && 3696 3697 git ls-files -s >out && 3698 test_line_count = 2 out && ··· 3770 then 3771 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out 2>err && 3772 test_path_is_missing .git/MERGE_HEAD && 3773 - test_i18ngrep "error: Your local changes to the following files would be overwritten by merge" err 3774 else 3775 git -c merge.directoryRenames=true merge -s recursive B^0 >out 2>err && 3776 - test_i18ngrep "Refusing to lose dirty file at z/c" out && 3777 3778 git ls-files -s >out && 3779 test_line_count = 3 out && ··· 3853 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 3854 then 3855 test_path_is_missing .git/MERGE_HEAD && 3856 - test_i18ngrep "error: Your local changes to the following files would be overwritten by merge" err 3857 else 3858 - test_i18ngrep "following files would be overwritten by merge" err 3859 fi && 3860 3861 grep -q stuff y/c && ··· 3927 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 3928 then 3929 test_path_is_missing .git/MERGE_HEAD && 3930 - test_i18ngrep "error: Your local changes to the following files would be overwritten by merge" err 3931 else 3932 - test_i18ngrep "Refusing to lose dirty file at z/c" out && 3933 3934 git ls-files -s >out && 3935 test_line_count = 4 out && ··· 4013 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 4014 then 4015 test_path_is_missing .git/MERGE_HEAD && 4016 - test_i18ngrep "error: Your local changes to the following files would be overwritten by merge" err 4017 else 4018 - test_i18ngrep "CONFLICT (rename/rename)" out && 4019 - test_i18ngrep "Refusing to lose dirty file at y/c" out && 4020 4021 git ls-files -s >out && 4022 test_line_count = 7 out && ··· 4102 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 4103 then 4104 test_path_is_missing .git/MERGE_HEAD && 4105 - test_i18ngrep "error: Your local changes to the following files would be overwritten by merge" err 4106 else 4107 - test_i18ngrep "CONFLICT (rename/rename)" out && 4108 - test_i18ngrep "Refusing to lose dirty file at y/wham" out && 4109 4110 git ls-files -s >out && 4111 test_line_count = 4 out && ··· 5417 5418 test_must_fail git merge -s recursive B^0 >out 2>err && 5419 5420 - test_i18ngrep CONFLICT..file.location.*z/e/f.added.in.B^0.*y/e/f out && 5421 - test_i18ngrep CONFLICT..file.location.*z/d.added.in.B^0.*y/d out && 5422 5423 git ls-files >paths && 5424 ! grep z/ paths && ··· 5441 5442 git -c merge.directoryRenames=true merge -s recursive B^0 >out 2>err && 5443 5444 - test_i18ngrep Path.updated:.*z/e/f.added.in.B^0.*y/e/f out && 5445 - test_i18ngrep Path.updated:.*z/d.added.in.B^0.*y/d out && 5446 5447 git ls-files >paths && 5448 ! grep z/ paths && ··· 5507 5508 test_must_fail git merge -s recursive B^0 >out 2>err && 5509 5510 - test_i18ngrep CONFLICT.*content.*Merge.conflict.in.y/d out && 5511 - test_i18ngrep CONFLICT..file.location.*x/d.renamed.to.z/d.*moved.to.y/d out && 5512 5513 git ls-files >paths && 5514 ! grep z/ paths && ··· 5529 5530 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out 2>err && 5531 5532 - test_i18ngrep CONFLICT.*content.*Merge.conflict.in.y/d out && 5533 - test_i18ngrep Path.updated:.*x/d.renamed.to.z/d.in.B^0.*moving.it.to.y/d out && 5534 5535 git ls-files >paths && 5536 ! grep z/ paths && ··· 5593 5594 test_must_fail git merge -s recursive B^0 >out 2>err && 5595 5596 - test_i18ngrep CONFLICT..file.location.*x/d.renamed.to.z/d.*moved.to.y/d out && 5597 5598 git ls-files >paths && 5599 ! grep z/ paths && ··· 5614 5615 git -c merge.directoryRenames=true merge -s recursive B^0 >out 2>err && 5616 5617 - test_i18ngrep Path.updated:.*x/d.renamed.to.z/d.in.B^0.*moving.it.to.y/d out && 5618 5619 git ls-files >paths && 5620 ! grep z/ paths && ··· 5682 5683 test_must_fail git merge -s recursive B^0 >out 2>err && 5684 5685 - test_i18ngrep CONFLICT..file.location.*a/y.renamed.to.b/y.*moved.to.d/y out && 5686 - test_i18ngrep CONFLICT..file.location.*a/y.renamed.to.c/y.*moved.to.d/y out && 5687 5688 git ls-files >paths && 5689 ! grep b/ paths && ··· 5706 5707 git -c merge.directoryRenames=true merge -s recursive B^0 >out 2>err && 5708 5709 - test_i18ngrep Path.updated.*a/y.renamed.to.b/y.*moving.it.to.d/y out && 5710 - test_i18ngrep Path.updated.*a/y.renamed.to.c/y.*moving.it.to.d/y out && 5711 5712 git ls-files >paths && 5713 ! grep b/ paths && ··· 5821 5822 git -c merge.directoryRenames=conflict merge -s recursive C^0 >out 2>err && 5823 5824 - test_i18ngrep ! CONFLICT out && 5825 - test_i18ngrep ! BUG: err && 5826 - test_i18ngrep ! core.dumped err && 5827 test_must_be_empty err && 5828 5829 git ls-files >paths &&
··· 276 git checkout A^0 && 277 278 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 279 + test_grep "CONFLICT (\(.*\)/\1)" out && 280 281 git ls-files -s >out && 282 test_line_count = 8 out && ··· 515 git checkout A^0 && 516 517 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 518 + test_grep "CONFLICT.*directory rename split" out && 519 520 git ls-files -s >out && 521 test_line_count = 3 out && ··· 591 git rev-parse >expect \ 592 O:z/b O:z/c B:x/d && 593 test_cmp expect actual && 594 + test_grep ! "CONFLICT.*directory rename split" out 595 ) 596 ' 597 ··· 726 git checkout A^0 && 727 728 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 729 + test_grep CONFLICT.*rename/rename.*z/d.*x/d.*w/d out && 730 + test_grep ! CONFLICT.*rename/rename.*y/d out && 731 732 git ls-files -s >out && 733 test_line_count = 5 out && ··· 938 git checkout A^0 && 939 940 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 941 + test_grep "CONFLICT.*implicit dir rename" out && 942 943 git ls-files -s >out && 944 test_line_count = 6 out && ··· 1013 git checkout A^0 && 1014 1015 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 1016 + test_grep "CONFLICT (add/add).* y/d" out && 1017 1018 git ls-files -s >out && 1019 test_line_count = 5 out && ··· 1094 git checkout A^0 && 1095 1096 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 1097 + test_grep "CONFLICT (rename/rename).*x/d.*w/d.*z/d" out && 1098 + test_grep "CONFLICT (add/add).* y/d" out && 1099 1100 git ls-files -s >out && 1101 test_line_count = 9 out && ··· 1179 git checkout A^0 && 1180 1181 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 1182 + test_grep "CONFLICT (file/directory).*y/d" out && 1183 1184 git ls-files -s >out && 1185 test_line_count = 6 out && ··· 1278 git checkout A^0 && 1279 1280 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 1281 + test_grep "CONFLICT (rename/delete).*z/c.*y/c" out && 1282 1283 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 1284 then ··· 1740 git checkout A^0 && 1741 1742 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 1743 + test_grep "CONFLICT (rename/rename).*z/b.*y/b.*w/b" out && 1744 + test_grep "CONFLICT (rename/rename).*z/c.*y/c.*x/c" out && 1745 1746 git ls-files -s >out && 1747 test_line_count = 7 out && ··· 1813 git checkout A^0 && 1814 1815 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 1816 + test_grep "CONFLICT (\(.*\)/\1)" out && 1817 1818 git ls-files -s >out && 1819 test_line_count = 4 out && ··· 1900 git checkout A^0 && 1901 1902 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 1903 + test_grep "CONFLICT (rename/rename).*x/d.*w/d.*y/d" out && 1904 1905 git ls-files -s >out && 1906 test_line_count = 5 out && ··· 1965 git checkout A^0 && 1966 1967 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 1968 + test_grep "CONFLICT (rename/delete).*x/d.*y/d" out && 1969 1970 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 1971 then ··· 2071 git checkout A^0 && 2072 2073 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 2074 + test_grep "CONFLICT (rename/delete).*x/d.*y/d" out && 2075 2076 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 2077 then ··· 2330 git checkout A^0 && 2331 2332 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out && 2333 + test_grep "CONFLICT (modify/delete).* z/d" out && 2334 2335 git ls-files -s >out && 2336 test_line_count = 5 out && ··· 2491 git checkout A^0 && 2492 2493 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out 2>err && 2494 + test_grep CONFLICT.*rename/rename.*z/c.*y/c.*w/c out && 2495 + test_grep CONFLICT.*rename/rename.*z/b.*y/b.*w/b out && 2496 2497 git ls-files -s >out && 2498 test_line_count = 7 out && ··· 2741 git checkout A^0 && 2742 2743 git -c merge.directoryRenames=true merge -s recursive B^0 >out && 2744 + test_grep "WARNING: Avoiding applying x -> z rename to x/f" out && 2745 2746 git ls-files -s >out && 2747 test_line_count = 6 out && ··· 2830 git checkout A^0 && 2831 2832 git -c merge.directoryRenames=true merge -s recursive B^0 >out && 2833 + test_grep "WARNING: Avoiding applying z -> y rename to z/t" out && 2834 + test_grep "WARNING: Avoiding applying y -> x rename to y/a" out && 2835 + test_grep "WARNING: Avoiding applying x -> w rename to x/b" out && 2836 + test_grep "WARNING: Avoiding applying w -> v rename to w/c" out && 2837 2838 git ls-files -s >out && 2839 test_line_count = 7 out && ··· 3215 3216 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out 2>err && 3217 test_path_is_missing .git/MERGE_HEAD && 3218 + test_grep "The following untracked working tree files would be overwritten by merge" err && 3219 3220 git ls-files -s >out && 3221 test_line_count = 1 out && ··· 3287 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 3288 then 3289 test_path_is_missing .git/MERGE_HEAD && 3290 + test_grep "error: The following untracked working tree files would be overwritten by merge" err && 3291 3292 git ls-files -s >out && 3293 test_line_count = 1 out && ··· 3296 git ls-files -o >out && 3297 test_line_count = 5 out 3298 else 3299 + test_grep "CONFLICT (rename/delete).*Version B\^0 of y/d left in tree at y/d~B\^0" out && 3300 + test_grep "Error: Refusing to lose untracked file at y/e; writing to y/e~B\^0 instead" out && 3301 3302 git ls-files -s >out && 3303 test_line_count = 3 out && ··· 3377 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 3378 then 3379 test_path_is_missing .git/MERGE_HEAD && 3380 + test_grep "error: The following untracked working tree files would be overwritten by merge" err && 3381 3382 git ls-files -s >out && 3383 test_line_count = 4 out && ··· 3386 git ls-files -o >out && 3387 test_line_count = 3 out 3388 else 3389 + test_grep "CONFLICT (rename/rename)" out && 3390 + test_grep "Refusing to lose untracked file at y/c; adding as y/c~B\^0 instead" out && 3391 3392 git ls-files -s >out && 3393 test_line_count = 6 out && ··· 3428 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 3429 then 3430 test_path_is_missing .git/MERGE_HEAD && 3431 + test_grep "error: The following untracked working tree files would be overwritten by merge" err && 3432 3433 git ls-files -s >out && 3434 test_line_count = 4 out && ··· 3437 git ls-files -o >out && 3438 test_line_count = 3 out 3439 else 3440 + test_grep "CONFLICT (rename/rename)" out && 3441 + test_grep "Refusing to lose untracked file at y/c; adding as y/c~HEAD instead" out && 3442 3443 git ls-files -s >out && 3444 test_line_count = 6 out && ··· 3517 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 3518 then 3519 test_path_is_missing .git/MERGE_HEAD && 3520 + test_grep "error: The following untracked working tree files would be overwritten by merge" err && 3521 3522 git ls-files -s >out && 3523 test_line_count = 6 out && ··· 3526 git ls-files -o >out && 3527 test_line_count = 3 out 3528 else 3529 + test_grep "CONFLICT (rename/rename)" out && 3530 + test_grep "Refusing to lose untracked file at y/wham" out && 3531 3532 git ls-files -s >out && 3533 test_line_count = 6 out && ··· 3606 echo random >z/c && 3607 3608 git -c merge.directoryRenames=true merge -s recursive B^0 >out 2>err && 3609 + test_grep ! "following untracked working tree files would be overwritten by merge" err && 3610 3611 git ls-files -s >out && 3612 test_line_count = 3 out && ··· 3690 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 3691 then 3692 test_path_is_missing .git/MERGE_HEAD && 3693 + test_grep "error: Your local changes to the following files would be overwritten by merge" err 3694 else 3695 + test_grep "Refusing to lose dirty file at z/c" out && 3696 3697 git ls-files -s >out && 3698 test_line_count = 2 out && ··· 3770 then 3771 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out 2>err && 3772 test_path_is_missing .git/MERGE_HEAD && 3773 + test_grep "error: Your local changes to the following files would be overwritten by merge" err 3774 else 3775 git -c merge.directoryRenames=true merge -s recursive B^0 >out 2>err && 3776 + test_grep "Refusing to lose dirty file at z/c" out && 3777 3778 git ls-files -s >out && 3779 test_line_count = 3 out && ··· 3853 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 3854 then 3855 test_path_is_missing .git/MERGE_HEAD && 3856 + test_grep "error: Your local changes to the following files would be overwritten by merge" err 3857 else 3858 + test_grep "following files would be overwritten by merge" err 3859 fi && 3860 3861 grep -q stuff y/c && ··· 3927 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 3928 then 3929 test_path_is_missing .git/MERGE_HEAD && 3930 + test_grep "error: Your local changes to the following files would be overwritten by merge" err 3931 else 3932 + test_grep "Refusing to lose dirty file at z/c" out && 3933 3934 git ls-files -s >out && 3935 test_line_count = 4 out && ··· 4013 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 4014 then 4015 test_path_is_missing .git/MERGE_HEAD && 4016 + test_grep "error: Your local changes to the following files would be overwritten by merge" err 4017 else 4018 + test_grep "CONFLICT (rename/rename)" out && 4019 + test_grep "Refusing to lose dirty file at y/c" out && 4020 4021 git ls-files -s >out && 4022 test_line_count = 7 out && ··· 4102 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 4103 then 4104 test_path_is_missing .git/MERGE_HEAD && 4105 + test_grep "error: Your local changes to the following files would be overwritten by merge" err 4106 else 4107 + test_grep "CONFLICT (rename/rename)" out && 4108 + test_grep "Refusing to lose dirty file at y/wham" out && 4109 4110 git ls-files -s >out && 4111 test_line_count = 4 out && ··· 5417 5418 test_must_fail git merge -s recursive B^0 >out 2>err && 5419 5420 + test_grep CONFLICT..file.location.*z/e/f.added.in.B^0.*y/e/f out && 5421 + test_grep CONFLICT..file.location.*z/d.added.in.B^0.*y/d out && 5422 5423 git ls-files >paths && 5424 ! grep z/ paths && ··· 5441 5442 git -c merge.directoryRenames=true merge -s recursive B^0 >out 2>err && 5443 5444 + test_grep Path.updated:.*z/e/f.added.in.B^0.*y/e/f out && 5445 + test_grep Path.updated:.*z/d.added.in.B^0.*y/d out && 5446 5447 git ls-files >paths && 5448 ! grep z/ paths && ··· 5507 5508 test_must_fail git merge -s recursive B^0 >out 2>err && 5509 5510 + test_grep CONFLICT.*content.*Merge.conflict.in.y/d out && 5511 + test_grep CONFLICT..file.location.*x/d.renamed.to.z/d.*moved.to.y/d out && 5512 5513 git ls-files >paths && 5514 ! grep z/ paths && ··· 5529 5530 test_must_fail git -c merge.directoryRenames=true merge -s recursive B^0 >out 2>err && 5531 5532 + test_grep CONFLICT.*content.*Merge.conflict.in.y/d out && 5533 + test_grep Path.updated:.*x/d.renamed.to.z/d.in.B^0.*moving.it.to.y/d out && 5534 5535 git ls-files >paths && 5536 ! grep z/ paths && ··· 5593 5594 test_must_fail git merge -s recursive B^0 >out 2>err && 5595 5596 + test_grep CONFLICT..file.location.*x/d.renamed.to.z/d.*moved.to.y/d out && 5597 5598 git ls-files >paths && 5599 ! grep z/ paths && ··· 5614 5615 git -c merge.directoryRenames=true merge -s recursive B^0 >out 2>err && 5616 5617 + test_grep Path.updated:.*x/d.renamed.to.z/d.in.B^0.*moving.it.to.y/d out && 5618 5619 git ls-files >paths && 5620 ! grep z/ paths && ··· 5682 5683 test_must_fail git merge -s recursive B^0 >out 2>err && 5684 5685 + test_grep CONFLICT..file.location.*a/y.renamed.to.b/y.*moved.to.d/y out && 5686 + test_grep CONFLICT..file.location.*a/y.renamed.to.c/y.*moved.to.d/y out && 5687 5688 git ls-files >paths && 5689 ! grep b/ paths && ··· 5706 5707 git -c merge.directoryRenames=true merge -s recursive B^0 >out 2>err && 5708 5709 + test_grep Path.updated.*a/y.renamed.to.b/y.*moving.it.to.d/y out && 5710 + test_grep Path.updated.*a/y.renamed.to.c/y.*moving.it.to.d/y out && 5711 5712 git ls-files >paths && 5713 ! grep b/ paths && ··· 5821 5822 git -c merge.directoryRenames=conflict merge -s recursive C^0 >out 2>err && 5823 5824 + test_grep ! CONFLICT out && 5825 + test_grep ! BUG: err && 5826 + test_grep ! core.dumped err && 5827 test_must_be_empty err && 5828 5829 git ls-files >paths &&
+3 -3
t/t6424-merge-unrelated-index-changes.sh
··· 178 test_when_finished "git clean -fd" && # Do not leave untracked around 179 # Merge B & F, with B as "head" 180 git merge-recursive A -- B F > out && 181 - test_i18ngrep "Already up to date" out 182 ' 183 184 test_expect_success 'recursive, when file has staged changes not matching HEAD nor what a merge would give' ' ··· 194 test_must_fail git merge -s recursive E^0 2>err && 195 git rev-parse --verify :subdir/a >actual && 196 test_cmp expect actual && 197 - test_i18ngrep "changes to the following files would be overwritten" err 198 ' 199 200 test_expect_success 'recursive, when file has staged changes matching what a merge would give' ' ··· 210 test_must_fail git merge -s recursive E^0 2>err && 211 git rev-parse --verify :subdir/a >actual && 212 test_cmp expect actual && 213 - test_i18ngrep "changes to the following files would be overwritten" err 214 ' 215 216 test_expect_success 'octopus, unrelated file touched' '
··· 178 test_when_finished "git clean -fd" && # Do not leave untracked around 179 # Merge B & F, with B as "head" 180 git merge-recursive A -- B F > out && 181 + test_grep "Already up to date" out 182 ' 183 184 test_expect_success 'recursive, when file has staged changes not matching HEAD nor what a merge would give' ' ··· 194 test_must_fail git merge -s recursive E^0 2>err && 195 git rev-parse --verify :subdir/a >actual && 196 test_cmp expect actual && 197 + test_grep "changes to the following files would be overwritten" err 198 ' 199 200 test_expect_success 'recursive, when file has staged changes matching what a merge would give' ' ··· 210 test_must_fail git merge -s recursive E^0 2>err && 211 git rev-parse --verify :subdir/a >actual && 212 test_cmp expect actual && 213 + test_grep "changes to the following files would be overwritten" err 214 ' 215 216 test_expect_success 'octopus, unrelated file touched' '
+2 -2
t/t6425-merge-rename-delete.sh
··· 21 git commit -m "delete" && 22 23 test_must_fail git merge --strategy=recursive rename >output && 24 - test_i18ngrep "CONFLICT (rename/delete): A.* renamed .*to B.* in rename" output && 25 - test_i18ngrep "CONFLICT (rename/delete): A.*deleted in HEAD." output 26 ' 27 28 test_done
··· 21 git commit -m "delete" && 22 23 test_must_fail git merge --strategy=recursive rename >output && 24 + test_grep "CONFLICT (rename/delete): A.* renamed .*to B.* in rename" output && 25 + test_grep "CONFLICT (rename/delete): A.*deleted in HEAD." output 26 ' 27 28 test_done
+1 -1
t/t6426-merge-skip-unneeded-updates.sh
··· 375 export GIT_MERGE_VERBOSITY && 376 test_must_fail git merge -s recursive B^0 >out 2>err && 377 378 - test_i18ngrep "CONFLICT (.*/add):" out && 379 test_must_be_empty err && 380 381 git ls-files -s >index_files &&
··· 375 export GIT_MERGE_VERBOSITY && 376 test_must_fail git merge -s recursive B^0 >out 2>err && 377 378 + test_grep "CONFLICT (.*/add):" out && 379 test_must_be_empty err && 380 381 git ls-files -s >index_files &&
+4 -4
t/t6430-merge-recursive.sh
··· 308 309 test_must_fail git merge "$c5" && 310 test_must_fail git merge "$c5" 2> out && 311 - test_i18ngrep "not possible because you have unmerged files" out && 312 git add -u && 313 test_must_fail git merge "$c5" 2> out && 314 - test_i18ngrep "You have not concluded your merge" out && 315 rm -f .git/MERGE_HEAD && 316 test_must_fail git merge "$c5" 2> out && 317 - test_i18ngrep "Your local changes to the following files would be overwritten by merge:" out 318 ' 319 320 test_expect_success 'merge-recursive remove conflict' ' ··· 713 test_must_fail git -c merge.verbosity=5 merge-recursive $(cat trees) -- $c1 $c3 >out && 714 715 # ...but make sure it fails in the expected way 716 - test_i18ngrep CONFLICT.*rename/rename out && 717 718 # merge-recursive prints in reverse order, but we do not care 719 sort <trees >expect &&
··· 308 309 test_must_fail git merge "$c5" && 310 test_must_fail git merge "$c5" 2> out && 311 + test_grep "not possible because you have unmerged files" out && 312 git add -u && 313 test_must_fail git merge "$c5" 2> out && 314 + test_grep "You have not concluded your merge" out && 315 rm -f .git/MERGE_HEAD && 316 test_must_fail git merge "$c5" 2> out && 317 + test_grep "Your local changes to the following files would be overwritten by merge:" out 318 ' 319 320 test_expect_success 'merge-recursive remove conflict' ' ··· 713 test_must_fail git -c merge.verbosity=5 merge-recursive $(cat trees) -- $c1 $c3 >out && 714 715 # ...but make sure it fails in the expected way 716 + test_grep CONFLICT.*rename/rename out && 717 718 # merge-recursive prints in reverse order, but we do not care 719 sort <trees >expect &&
+2 -2
t/t6433-merge-toplevel.sh
··· 151 echo change >>one.t && 152 git diff >expect && 153 test_must_fail git merge --autostash five 2>err && 154 - test_i18ngrep ! "stash" err && 155 git diff >actual && 156 test_cmp expect actual 157 ' ··· 169 echo change >>one.t && 170 git diff one.t >expect && 171 git merge --allow-unrelated-histories --autostash five 2>err && 172 - test_i18ngrep "Applied autostash." err && 173 git diff one.t >actual && 174 test_cmp expect actual 175 '
··· 151 echo change >>one.t && 152 git diff >expect && 153 test_must_fail git merge --autostash five 2>err && 154 + test_grep ! "stash" err && 155 git diff >actual && 156 test_cmp expect actual 157 ' ··· 169 echo change >>one.t && 170 git diff one.t >expect && 171 git merge --allow-unrelated-histories --autostash five 2>err && 172 + test_grep "Applied autostash." err && 173 git diff one.t >actual && 174 test_cmp expect actual 175 '
+2 -2
t/t6436-merge-overwrite.sh
··· 104 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 105 then 106 test_must_fail git merge c1a >out 2>err && 107 - test_i18ngrep "would be overwritten by merge" err && 108 test_cmp important other.c && 109 test_path_is_missing .git/MERGE_HEAD 110 else 111 test_must_fail git merge c1a >out && 112 - test_i18ngrep "Refusing to lose dirty file at other.c" out && 113 test_path_is_file other.c~HEAD && 114 test $(git hash-object other.c~HEAD) = $(git rev-parse c1a:c1.c) && 115 test_cmp important other.c
··· 104 if test "$GIT_TEST_MERGE_ALGORITHM" = ort 105 then 106 test_must_fail git merge c1a >out 2>err && 107 + test_grep "would be overwritten by merge" err && 108 test_cmp important other.c && 109 test_path_is_missing .git/MERGE_HEAD 110 else 111 test_must_fail git merge c1a >out && 112 + test_grep "Refusing to lose dirty file at other.c" out && 113 test_path_is_file other.c~HEAD && 114 test $(git hash-object other.c~HEAD) = $(git rev-parse c1a:c1.c) && 115 test_cmp important other.c
+1 -1
t/t6437-submodule-merge.sh
··· 479 # We do not want files within the submodule to prevent the 480 # merge from starting; we should not be writing to such paths 481 # anyway. 482 - test_i18ngrep ! "refusing to lose untracked file at" err 483 ) 484 ' 485
··· 479 # We do not want files within the submodule to prevent the 480 # merge from starting; we should not be writing to such paths 481 # anyway. 482 + test_grep ! "refusing to lose untracked file at" err 483 ) 484 ' 485
+7 -7
t/t6500-gc.sh
··· 41 42 test_expect_success 'gc --gobbledegook' ' 43 test_expect_code 129 git gc --nonsense 2>err && 44 - test_i18ngrep "[Uu]sage: git gc" err 45 ' 46 47 test_expect_success 'gc -h with invalid configuration' ' ··· 52 echo "[gc] pruneexpire = CORRUPT" >>.git/config && 53 test_expect_code 129 git gc -h >usage 2>&1 54 ) && 55 - test_i18ngrep "[Uu]sage" broken/usage 56 ' 57 58 test_expect_success 'gc is not aborted due to a stale symref' ' ··· 155 test_commit "$(test_oid obj4)" && 156 157 git gc --auto 2>err && 158 - test_i18ngrep ! "^warning:" err && 159 ls .git/objects/pack/pack-*.pack | sort >post_packs && 160 comm -1 -3 existing_packs post_packs >new && 161 comm -2 -3 existing_packs post_packs >del && ··· 166 test_expect_success 'gc --no-quiet' ' 167 GIT_PROGRESS_DELAY=0 git -c gc.writeCommitGraph=true gc --no-quiet >stdout 2>stderr && 168 test_must_be_empty stdout && 169 - test_i18ngrep "Computing commit graph generation numbers" stderr 170 ' 171 172 test_expect_success TTY 'with TTY: gc --no-quiet' ' 173 test_terminal env GIT_PROGRESS_DELAY=0 \ 174 git -c gc.writeCommitGraph=true gc --no-quiet >stdout 2>stderr && 175 test_must_be_empty stdout && 176 - test_i18ngrep "Enumerating objects" stderr && 177 - test_i18ngrep "Computing commit graph generation numbers" stderr 178 ' 179 180 test_expect_success 'gc --quiet' ' ··· 321 test_config gc.autodetach true && 322 echo fleem >.git/gc.log && 323 git gc --auto 2>err && 324 - test_i18ngrep "^warning:" err && 325 test_config gc.logexpiry 5.days && 326 test-tool chmtime =-345600 .git/gc.log && 327 git gc --auto &&
··· 41 42 test_expect_success 'gc --gobbledegook' ' 43 test_expect_code 129 git gc --nonsense 2>err && 44 + test_grep "[Uu]sage: git gc" err 45 ' 46 47 test_expect_success 'gc -h with invalid configuration' ' ··· 52 echo "[gc] pruneexpire = CORRUPT" >>.git/config && 53 test_expect_code 129 git gc -h >usage 2>&1 54 ) && 55 + test_grep "[Uu]sage" broken/usage 56 ' 57 58 test_expect_success 'gc is not aborted due to a stale symref' ' ··· 155 test_commit "$(test_oid obj4)" && 156 157 git gc --auto 2>err && 158 + test_grep ! "^warning:" err && 159 ls .git/objects/pack/pack-*.pack | sort >post_packs && 160 comm -1 -3 existing_packs post_packs >new && 161 comm -2 -3 existing_packs post_packs >del && ··· 166 test_expect_success 'gc --no-quiet' ' 167 GIT_PROGRESS_DELAY=0 git -c gc.writeCommitGraph=true gc --no-quiet >stdout 2>stderr && 168 test_must_be_empty stdout && 169 + test_grep "Computing commit graph generation numbers" stderr 170 ' 171 172 test_expect_success TTY 'with TTY: gc --no-quiet' ' 173 test_terminal env GIT_PROGRESS_DELAY=0 \ 174 git -c gc.writeCommitGraph=true gc --no-quiet >stdout 2>stderr && 175 test_must_be_empty stdout && 176 + test_grep "Enumerating objects" stderr && 177 + test_grep "Computing commit graph generation numbers" stderr 178 ' 179 180 test_expect_success 'gc --quiet' ' ··· 321 test_config gc.autodetach true && 322 echo fleem >.git/gc.log && 323 git gc --auto 2>err && 324 + test_grep "^warning:" err && 325 test_config gc.logexpiry 5.days && 326 test-tool chmtime =-345600 .git/gc.log && 327 git gc --auto &&
+2 -2
t/t7001-mv.sh
··· 296 EOF 297 298 test_must_fail git mv conflict newname 2>actual && 299 - test_i18ngrep "conflicted" actual 300 ' 301 302 test_expect_success 'git mv should overwrite symlink to a file' ' ··· 482 git mv sub sub2 && 483 git commit -m "moved sub to sub2" && 484 git checkout -q HEAD^ 2>actual && 485 - test_i18ngrep "^warning: unable to rmdir '\''sub2'\'':" actual && 486 git status -s sub2 >actual && 487 echo "?? sub2/" >expected && 488 test_cmp expected actual &&
··· 296 EOF 297 298 test_must_fail git mv conflict newname 2>actual && 299 + test_grep "conflicted" actual 300 ' 301 302 test_expect_success 'git mv should overwrite symlink to a file' ' ··· 482 git mv sub sub2 && 483 git commit -m "moved sub to sub2" && 484 git checkout -q HEAD^ 2>actual && 485 + test_grep "^warning: unable to rmdir '\''sub2'\'':" actual && 486 git status -s sub2 >actual && 487 echo "?? sub2/" >expected && 488 test_cmp expected actual &&
+3 -3
t/t7105-reset-patch.sh
··· 30 test_write_lines n y | git reset -p >output && 31 verify_state dir/foo work head && 32 verify_saved_state bar && 33 - test_i18ngrep "Unstage" output 34 ' 35 36 test_expect_success PERL 'git reset -p HEAD^' ' 37 test_write_lines n y | git reset -p HEAD^ >output && 38 verify_state dir/foo work parent && 39 verify_saved_state bar && 40 - test_i18ngrep "Apply" output 41 ' 42 43 test_expect_success PERL 'git reset -p HEAD^^{tree}' ' 44 test_write_lines n y | git reset -p HEAD^^{tree} >output && 45 verify_state dir/foo work parent && 46 verify_saved_state bar && 47 - test_i18ngrep "Apply" output 48 ' 49 50 test_expect_success PERL 'git reset -p HEAD^:dir/foo (blob fails)' '
··· 30 test_write_lines n y | git reset -p >output && 31 verify_state dir/foo work head && 32 verify_saved_state bar && 33 + test_grep "Unstage" output 34 ' 35 36 test_expect_success PERL 'git reset -p HEAD^' ' 37 test_write_lines n y | git reset -p HEAD^ >output && 38 verify_state dir/foo work parent && 39 verify_saved_state bar && 40 + test_grep "Apply" output 41 ' 42 43 test_expect_success PERL 'git reset -p HEAD^^{tree}' ' 44 test_write_lines n y | git reset -p HEAD^^{tree} >output && 45 verify_state dir/foo work parent && 46 verify_saved_state bar && 47 + test_grep "Apply" output 48 ' 49 50 test_expect_success PERL 'git reset -p HEAD^:dir/foo (blob fails)' '
+1 -1
t/t7106-reset-unborn-branch.sh
··· 42 43 git ls-files >actual && 44 test_must_be_empty actual && 45 - test_i18ngrep "Unstage" output 46 ' 47 48 test_expect_success 'reset --soft is a no-op' '
··· 42 43 git ls-files >actual && 44 test_must_be_empty actual && 45 + test_grep "Unstage" output 46 ' 47 48 test_expect_success 'reset --soft is a no-op' '
+5 -5
t/t7107-reset-pathspec-file.sh
··· 161 git rm fileA.t && 162 163 test_must_fail git reset --pathspec-from-file=list --patch 2>err && 164 - test_i18ngrep -e "options .--pathspec-from-file. and .--patch. cannot be used together" err && 165 166 test_must_fail git reset --pathspec-from-file=list -- fileA.t 2>err && 167 - test_i18ngrep -e ".--pathspec-from-file. and pathspec arguments cannot be used together" err && 168 169 test_must_fail git reset --pathspec-file-nul 2>err && 170 - test_i18ngrep -e "the option .--pathspec-file-nul. requires .--pathspec-from-file." err && 171 172 test_must_fail git reset --soft --pathspec-from-file=list 2>err && 173 - test_i18ngrep -e "fatal: Cannot do soft reset with paths" err && 174 175 test_must_fail git reset --hard --pathspec-from-file=list 2>err && 176 - test_i18ngrep -e "fatal: Cannot do hard reset with paths" err 177 ' 178 179 test_done
··· 161 git rm fileA.t && 162 163 test_must_fail git reset --pathspec-from-file=list --patch 2>err && 164 + test_grep -e "options .--pathspec-from-file. and .--patch. cannot be used together" err && 165 166 test_must_fail git reset --pathspec-from-file=list -- fileA.t 2>err && 167 + test_grep -e ".--pathspec-from-file. and pathspec arguments cannot be used together" err && 168 169 test_must_fail git reset --pathspec-file-nul 2>err && 170 + test_grep -e "the option .--pathspec-file-nul. requires .--pathspec-from-file." err && 171 172 test_must_fail git reset --soft --pathspec-from-file=list 2>err && 173 + test_grep -e "fatal: Cannot do soft reset with paths" err && 174 175 test_must_fail git reset --hard --pathspec-from-file=list 2>err && 176 + test_grep -e "fatal: Cannot do hard reset with paths" err 177 ' 178 179 test_done
+3 -3
t/t7110-reset-merge.sh
··· 238 git reset --hard third && 239 test_must_fail git merge branch1 && 240 test_must_fail git reset --keep HEAD^ 2>err.log && 241 - test_i18ngrep "middle of a merge" err.log 242 ' 243 244 # The next test will test the following: ··· 264 git reset --hard third && 265 test_must_fail git merge branch1 && 266 test_must_fail git reset --keep HEAD 2>err.log && 267 - test_i18ngrep "middle of a merge" err.log 268 ' 269 270 test_expect_success '--merge is ok with added/deleted merge' ' ··· 290 git diff --exit-code file3 && 291 git diff --exit-code branch3 file3 && 292 test_must_fail git reset --keep HEAD 2>err.log && 293 - test_i18ngrep "middle of a merge" err.log 294 ' 295 296 test_done
··· 238 git reset --hard third && 239 test_must_fail git merge branch1 && 240 test_must_fail git reset --keep HEAD^ 2>err.log && 241 + test_grep "middle of a merge" err.log 242 ' 243 244 # The next test will test the following: ··· 264 git reset --hard third && 265 test_must_fail git merge branch1 && 266 test_must_fail git reset --keep HEAD 2>err.log && 267 + test_grep "middle of a merge" err.log 268 ' 269 270 test_expect_success '--merge is ok with added/deleted merge' ' ··· 290 git diff --exit-code file3 && 291 git diff --exit-code branch3 file3 && 292 test_must_fail git reset --keep HEAD 2>err.log && 293 + test_grep "middle of a merge" err.log 294 ' 295 296 test_done
+2 -2
t/t7201-co.sh
··· 217 git rm two && 218 219 test_must_fail git checkout simple 2>errs && 220 - test_i18ngrep overwritten errs && 221 222 test_must_fail git read-tree --quiet -m -u HEAD simple 2>errs && 223 test_must_be_empty errs ··· 229 git checkout -f renamer && 230 git clean -f && 231 git checkout renamer^ 2>messages && 232 - test_i18ngrep "HEAD is now at $rev" messages && 233 test_line_count = 1 messages && 234 H=$(git rev-parse --verify HEAD) && 235 M=$(git show-ref -s --verify refs/heads/main) &&
··· 217 git rm two && 218 219 test_must_fail git checkout simple 2>errs && 220 + test_grep overwritten errs && 221 222 test_must_fail git read-tree --quiet -m -u HEAD simple 2>errs && 223 test_must_be_empty errs ··· 229 git checkout -f renamer && 230 git clean -f && 231 git checkout renamer^ 2>messages && 232 + test_grep "HEAD is now at $rev" messages && 233 test_line_count = 1 messages && 234 H=$(git rev-parse --verify HEAD) && 235 M=$(git show-ref -s --verify refs/heads/main) &&
+1 -1
t/t7300-clean.sh
··· 735 test_must_fail git clean -xdf 2>.git/err && 736 # grepping for a strerror string is unportable but it is OK here with 737 # MINGW prereq 738 - test_i18ngrep "too long" .git/err 739 ' 740 741 test_expect_success 'clean untracked paths by pathspec' '
··· 735 test_must_fail git clean -xdf 2>.git/err && 736 # grepping for a strerror string is unportable but it is OK here with 737 # MINGW prereq 738 + test_grep "too long" .git/err 739 ' 740 741 test_expect_success 'clean untracked paths by pathspec' '
+32 -32
t/t7400-submodule-basic.sh
··· 60 git update-index --add --cacheinfo 160000,$(git rev-parse HEAD),sub && 61 # missing the .gitmodules file here 62 test_must_fail git submodule init 2>actual && 63 - test_i18ngrep "No url found for submodule path" actual 64 ' 65 66 test_expect_success 'submodule update aborts on missing .gitmodules file' ' ··· 68 git update-index --add --cacheinfo 160000,$(git rev-parse HEAD),sub && 69 # missing the .gitmodules file here 70 git submodule update sub 2>actual && 71 - test_i18ngrep "Submodule path .sub. not initialized" actual 72 ' 73 74 test_expect_success 'submodule update aborts on missing gitmodules url' ' ··· 100 ) && 101 test_must_fail git submodule status inner 2>output.err && 102 rm -fr inner && 103 - test_i18ngrep "^error: .*did not match any file(s) known to git" output.err 104 ' 105 106 test_expect_success 'setup - repository in init subdirectory' ' ··· 196 git -C addtest submodule add "file://$submodurl/parent" submod-redirected \ 197 2>err && 198 ! grep % err && 199 - test_i18ngrep ! "Checking connectivity" err 200 ' 201 202 test_expect_success 'redirected submodule add --progress does show progress' ' ··· 263 cd addtest && 264 : >.git/index.lock && 265 ! git submodule add "$submodurl" sub-while-locked 2>output.err && 266 - test_i18ngrep "^fatal: .*index\.lock" output.err && 267 test_path_is_missing sub-while-locked 268 ) 269 ' ··· 405 cd addtest/sub && 406 test_must_fail git submodule add ../../ submod3 2>../../output.err 407 ) && 408 - test_i18ngrep toplevel output.err 409 ' 410 411 test_expect_success 'setup - add an example entry to .gitmodules' ' ··· 486 487 test_failure_with_unknown_submodule () { 488 test_must_fail git submodule $1 no-such-submodule 2>output.err && 489 - test_i18ngrep "^error: .*no-such-submodule" output.err 490 } 491 492 test_expect_success 'init should fail with unknown submodule' ' ··· 644 test_must_fail git config submodule.example.url && 645 646 git submodule update init 2> update.out && 647 - test_i18ngrep "not initialized" update.out && 648 test_must_fail git rev-parse --resolve-git-dir init/.git && 649 650 git submodule update --init init && ··· 661 ( 662 cd sub && 663 git submodule update ../init 2>update.out && 664 - test_i18ngrep "not initialized" update.out && 665 test_must_fail git rev-parse --resolve-git-dir ../init/.git && 666 667 git submodule update --init ../init ··· 1121 cd sub && 1122 git submodule deinit ../init >../output 1123 ) && 1124 - test_i18ngrep "\\.\\./init" output && 1125 test -z "$(git config --get-regexp "submodule\.example\.")" && 1126 test -n "$(git config --get-regexp "submodule\.example2\.")" && 1127 test -f example2/.git && ··· 1136 git submodule deinit . >actual && 1137 test -z "$(git config --get-regexp "submodule\.example\.")" && 1138 test -z "$(git config --get-regexp "submodule\.example2\.")" && 1139 - test_i18ngrep "Cleared directory .init" actual && 1140 - test_i18ngrep "Cleared directory .example2" actual && 1141 rmdir init example2 1142 ' 1143 ··· 1149 git submodule deinit --all >actual && 1150 test -z "$(git config --get-regexp "submodule\.example\.")" && 1151 test -z "$(git config --get-regexp "submodule\.example2\.")" && 1152 - test_i18ngrep "Cleared directory .init" actual && 1153 - test_i18ngrep "Cleared directory .example2" actual && 1154 rmdir init example2 1155 ' 1156 ··· 1160 git submodule deinit init example2 >actual && 1161 test -z "$(git config --get-regexp "submodule\.example\.")" && 1162 test -z "$(git config --get-regexp "submodule\.example2\.")" && 1163 - test_i18ngrep ! "Cleared directory .init" actual && 1164 - test_i18ngrep "Cleared directory .example2" actual && 1165 rmdir init 1166 ' 1167 ··· 1173 test -f example2/.git && 1174 git submodule deinit -f init >actual && 1175 test -z "$(git config --get-regexp "submodule\.example\.")" && 1176 - test_i18ngrep "Cleared directory .init" actual && 1177 rmdir init 1178 ' 1179 ··· 1185 test -f example2/.git && 1186 git submodule deinit -f init >actual && 1187 test -z "$(git config --get-regexp "submodule\.example\.")" && 1188 - test_i18ngrep "Cleared directory .init" actual && 1189 rmdir init 1190 ' 1191 ··· 1200 test -f example2/.git && 1201 git submodule deinit -f init >actual && 1202 test -z "$(git config --get-regexp "submodule\.example\.")" && 1203 - test_i18ngrep "Cleared directory .init" actual && 1204 rmdir init 1205 ' 1206 1207 test_expect_success 'submodule deinit is silent when used on an uninitialized submodule' ' 1208 git submodule update --init && 1209 git submodule deinit init >actual && 1210 - test_i18ngrep "Submodule .example. (.*) unregistered for path .init" actual && 1211 - test_i18ngrep "Cleared directory .init" actual && 1212 git submodule deinit init >actual && 1213 - test_i18ngrep ! "Submodule .example. (.*) unregistered for path .init" actual && 1214 - test_i18ngrep "Cleared directory .init" actual && 1215 git submodule deinit . >actual && 1216 - test_i18ngrep ! "Submodule .example. (.*) unregistered for path .init" actual && 1217 - test_i18ngrep "Submodule .example2. (.*) unregistered for path .example2" actual && 1218 - test_i18ngrep "Cleared directory .init" actual && 1219 git submodule deinit . >actual && 1220 - test_i18ngrep ! "Submodule .example. (.*) unregistered for path .init" actual && 1221 - test_i18ngrep ! "Submodule .example2. (.*) unregistered for path .example2" actual && 1222 - test_i18ngrep "Cleared directory .init" actual && 1223 git submodule deinit --all >actual && 1224 - test_i18ngrep ! "Submodule .example. (.*) unregistered for path .init" actual && 1225 - test_i18ngrep ! "Submodule .example2. (.*) unregistered for path .example2" actual && 1226 - test_i18ngrep "Cleared directory .init" actual && 1227 rmdir init example2 1228 ' 1229
··· 60 git update-index --add --cacheinfo 160000,$(git rev-parse HEAD),sub && 61 # missing the .gitmodules file here 62 test_must_fail git submodule init 2>actual && 63 + test_grep "No url found for submodule path" actual 64 ' 65 66 test_expect_success 'submodule update aborts on missing .gitmodules file' ' ··· 68 git update-index --add --cacheinfo 160000,$(git rev-parse HEAD),sub && 69 # missing the .gitmodules file here 70 git submodule update sub 2>actual && 71 + test_grep "Submodule path .sub. not initialized" actual 72 ' 73 74 test_expect_success 'submodule update aborts on missing gitmodules url' ' ··· 100 ) && 101 test_must_fail git submodule status inner 2>output.err && 102 rm -fr inner && 103 + test_grep "^error: .*did not match any file(s) known to git" output.err 104 ' 105 106 test_expect_success 'setup - repository in init subdirectory' ' ··· 196 git -C addtest submodule add "file://$submodurl/parent" submod-redirected \ 197 2>err && 198 ! grep % err && 199 + test_grep ! "Checking connectivity" err 200 ' 201 202 test_expect_success 'redirected submodule add --progress does show progress' ' ··· 263 cd addtest && 264 : >.git/index.lock && 265 ! git submodule add "$submodurl" sub-while-locked 2>output.err && 266 + test_grep "^fatal: .*index\.lock" output.err && 267 test_path_is_missing sub-while-locked 268 ) 269 ' ··· 405 cd addtest/sub && 406 test_must_fail git submodule add ../../ submod3 2>../../output.err 407 ) && 408 + test_grep toplevel output.err 409 ' 410 411 test_expect_success 'setup - add an example entry to .gitmodules' ' ··· 486 487 test_failure_with_unknown_submodule () { 488 test_must_fail git submodule $1 no-such-submodule 2>output.err && 489 + test_grep "^error: .*no-such-submodule" output.err 490 } 491 492 test_expect_success 'init should fail with unknown submodule' ' ··· 644 test_must_fail git config submodule.example.url && 645 646 git submodule update init 2> update.out && 647 + test_grep "not initialized" update.out && 648 test_must_fail git rev-parse --resolve-git-dir init/.git && 649 650 git submodule update --init init && ··· 661 ( 662 cd sub && 663 git submodule update ../init 2>update.out && 664 + test_grep "not initialized" update.out && 665 test_must_fail git rev-parse --resolve-git-dir ../init/.git && 666 667 git submodule update --init ../init ··· 1121 cd sub && 1122 git submodule deinit ../init >../output 1123 ) && 1124 + test_grep "\\.\\./init" output && 1125 test -z "$(git config --get-regexp "submodule\.example\.")" && 1126 test -n "$(git config --get-regexp "submodule\.example2\.")" && 1127 test -f example2/.git && ··· 1136 git submodule deinit . >actual && 1137 test -z "$(git config --get-regexp "submodule\.example\.")" && 1138 test -z "$(git config --get-regexp "submodule\.example2\.")" && 1139 + test_grep "Cleared directory .init" actual && 1140 + test_grep "Cleared directory .example2" actual && 1141 rmdir init example2 1142 ' 1143 ··· 1149 git submodule deinit --all >actual && 1150 test -z "$(git config --get-regexp "submodule\.example\.")" && 1151 test -z "$(git config --get-regexp "submodule\.example2\.")" && 1152 + test_grep "Cleared directory .init" actual && 1153 + test_grep "Cleared directory .example2" actual && 1154 rmdir init example2 1155 ' 1156 ··· 1160 git submodule deinit init example2 >actual && 1161 test -z "$(git config --get-regexp "submodule\.example\.")" && 1162 test -z "$(git config --get-regexp "submodule\.example2\.")" && 1163 + test_grep ! "Cleared directory .init" actual && 1164 + test_grep "Cleared directory .example2" actual && 1165 rmdir init 1166 ' 1167 ··· 1173 test -f example2/.git && 1174 git submodule deinit -f init >actual && 1175 test -z "$(git config --get-regexp "submodule\.example\.")" && 1176 + test_grep "Cleared directory .init" actual && 1177 rmdir init 1178 ' 1179 ··· 1185 test -f example2/.git && 1186 git submodule deinit -f init >actual && 1187 test -z "$(git config --get-regexp "submodule\.example\.")" && 1188 + test_grep "Cleared directory .init" actual && 1189 rmdir init 1190 ' 1191 ··· 1200 test -f example2/.git && 1201 git submodule deinit -f init >actual && 1202 test -z "$(git config --get-regexp "submodule\.example\.")" && 1203 + test_grep "Cleared directory .init" actual && 1204 rmdir init 1205 ' 1206 1207 test_expect_success 'submodule deinit is silent when used on an uninitialized submodule' ' 1208 git submodule update --init && 1209 git submodule deinit init >actual && 1210 + test_grep "Submodule .example. (.*) unregistered for path .init" actual && 1211 + test_grep "Cleared directory .init" actual && 1212 git submodule deinit init >actual && 1213 + test_grep ! "Submodule .example. (.*) unregistered for path .init" actual && 1214 + test_grep "Cleared directory .init" actual && 1215 git submodule deinit . >actual && 1216 + test_grep ! "Submodule .example. (.*) unregistered for path .init" actual && 1217 + test_grep "Submodule .example2. (.*) unregistered for path .example2" actual && 1218 + test_grep "Cleared directory .init" actual && 1219 git submodule deinit . >actual && 1220 + test_grep ! "Submodule .example. (.*) unregistered for path .init" actual && 1221 + test_grep ! "Submodule .example2. (.*) unregistered for path .example2" actual && 1222 + test_grep "Cleared directory .init" actual && 1223 git submodule deinit --all >actual && 1224 + test_grep ! "Submodule .example. (.*) unregistered for path .init" actual && 1225 + test_grep ! "Submodule .example2. (.*) unregistered for path .example2" actual && 1226 + test_grep "Cleared directory .init" actual && 1227 rmdir init example2 1228 ' 1229
+2 -2
t/t7403-submodule-sync.sh
··· 163 cd sub && 164 git submodule sync >../../output 165 ) && 166 - test_i18ngrep "\\.\\./submodule" output && 167 test -d "$( 168 cd super-clone/submodule && 169 git config remote.origin.url ··· 194 cd sub && 195 git submodule sync --recursive >../../output 196 ) && 197 - test_i18ngrep "\\.\\./submodule/sub-submodule" output && 198 test -d "$( 199 cd super-clone/submodule && 200 git config remote.origin.url
··· 163 cd sub && 164 git submodule sync >../../output 165 ) && 166 + test_grep "\\.\\./submodule" output && 167 test -d "$( 168 cd super-clone/submodule && 169 git config remote.origin.url ··· 194 cd sub && 195 git submodule sync --recursive >../../output 196 ) && 197 + test_grep "\\.\\./submodule/sub-submodule" output && 198 test -d "$( 199 cd super-clone/submodule && 200 git config remote.origin.url
+3 -3
t/t7406-submodule-update.sh
··· 945 git clone super_update_r super_update_r2 && 946 (cd super_update_r2 && 947 git submodule update --init --recursive >actual && 948 - test_i18ngrep "Submodule path .submodule/subsubmodule.: checked out" actual && 949 (cd submodule/subsubmodule && 950 git log > ../../expected 951 ) && ··· 1025 # unadvertised objects, so restrict this test to v0. 1026 test_must_fail env GIT_TEST_PROTOCOL_VERSION=0 \ 1027 git submodule update --init --depth=1 2>actual && 1028 - test_i18ngrep "Direct fetching of that commit failed." actual && 1029 git -C ../submodule config uploadpack.allowReachableSHA1InWant true && 1030 git submodule update --init --depth=1 >actual && 1031 git -C submodule log --oneline >out && ··· 1039 git checkout HEAD^ 1040 ) && 1041 git submodule update --recursive deeper/submodule >actual && 1042 - test_i18ngrep "Submodule path .deeper/submodule/subsubmodule.: checked out" actual 1043 ) 1044 ' 1045
··· 945 git clone super_update_r super_update_r2 && 946 (cd super_update_r2 && 947 git submodule update --init --recursive >actual && 948 + test_grep "Submodule path .submodule/subsubmodule.: checked out" actual && 949 (cd submodule/subsubmodule && 950 git log > ../../expected 951 ) && ··· 1025 # unadvertised objects, so restrict this test to v0. 1026 test_must_fail env GIT_TEST_PROTOCOL_VERSION=0 \ 1027 git submodule update --init --depth=1 2>actual && 1028 + test_grep "Direct fetching of that commit failed." actual && 1029 git -C ../submodule config uploadpack.allowReachableSHA1InWant true && 1030 git submodule update --init --depth=1 >actual && 1031 git -C submodule log --oneline >out && ··· 1039 git checkout HEAD^ 1040 ) && 1041 git submodule update --recursive deeper/submodule >actual && 1042 + test_grep "Submodule path .deeper/submodule/subsubmodule.: checked out" actual 1043 ) 1044 ' 1045
+2 -2
t/t7411-submodule-config.sh
··· 45 ( 46 cd repo && 47 test_must_fail test-tool submodule-config "" s 2>actual && 48 - test_i18ngrep "bad config" actual 49 ) 50 ' 51 ··· 101 >actual \ 102 2>actual_stderr && 103 test_cmp expect_error actual && 104 - test_i18ngrep "submodule-blob $sha1:.gitmodules" actual_stderr >/dev/null 105 ) 106 ' 107
··· 45 ( 46 cd repo && 47 test_must_fail test-tool submodule-config "" s 2>actual && 48 + test_grep "bad config" actual 49 ) 50 ' 51 ··· 101 >actual \ 102 2>actual_stderr && 103 test_cmp expect_error actual && 104 + test_grep "submodule-blob $sha1:.gitmodules" actual_stderr >/dev/null 105 ) 106 ' 107
+4 -4
t/t7414-submodule-mistakes.sh
··· 13 test_expect_success 'git-add on embedded repository warns' ' 14 test_when_finished "git rm --cached -f embed" && 15 git add embed 2>stderr && 16 - test_i18ngrep warning stderr 17 ' 18 19 test_expect_success '--no-warn-embedded-repo suppresses warning' ' 20 test_when_finished "git rm --cached -f embed" && 21 git add --no-warn-embedded-repo embed 2>stderr && 22 - test_i18ngrep ! warning stderr 23 ' 24 25 test_expect_success 'no warning when updating entry' ' ··· 27 git add embed && 28 git -C embed commit --allow-empty -m two && 29 git add embed 2>stderr && 30 - test_i18ngrep ! warning stderr 31 ' 32 33 test_expect_success 'submodule add does not warn' ' 34 test_when_finished "git rm -rf submodule .gitmodules" && 35 git -c protocol.file.allow=always \ 36 submodule add ./embed submodule 2>stderr && 37 - test_i18ngrep ! warning stderr 38 ' 39 40 test_done
··· 13 test_expect_success 'git-add on embedded repository warns' ' 14 test_when_finished "git rm --cached -f embed" && 15 git add embed 2>stderr && 16 + test_grep warning stderr 17 ' 18 19 test_expect_success '--no-warn-embedded-repo suppresses warning' ' 20 test_when_finished "git rm --cached -f embed" && 21 git add --no-warn-embedded-repo embed 2>stderr && 22 + test_grep ! warning stderr 23 ' 24 25 test_expect_success 'no warning when updating entry' ' ··· 27 git add embed && 28 git -C embed commit --allow-empty -m two && 29 git add embed 2>stderr && 30 + test_grep ! warning stderr 31 ' 32 33 test_expect_success 'submodule add does not warn' ' 34 test_when_finished "git rm -rf submodule .gitmodules" && 35 git -c protocol.file.allow=always \ 36 submodule add ./embed submodule 2>stderr && 37 + test_grep ! warning stderr 38 ' 39 40 test_done
+2 -2
t/t7416-submodule-dash-url.sh
··· 41 test_expect_success 'clone rejects unprotected dash' ' 42 test_when_finished "rm -rf dst" && 43 test_must_fail git clone --recurse-submodules . dst 2>err && 44 - test_i18ngrep ignoring err 45 ' 46 47 test_expect_success 'fsck rejects unprotected dash' ' ··· 63 mv .new .gitmodules && 64 git commit -am "Add testmodule" && 65 test_must_fail git clone --verbose --recurse-submodules . dolly 2>err && 66 - test_i18ngrep ! "unknown option" err 67 ' 68 69 test_expect_success 'fsck rejects missing URL scheme' '
··· 41 test_expect_success 'clone rejects unprotected dash' ' 42 test_when_finished "rm -rf dst" && 43 test_must_fail git clone --recurse-submodules . dst 2>err && 44 + test_grep ignoring err 45 ' 46 47 test_expect_success 'fsck rejects unprotected dash' ' ··· 63 mv .new .gitmodules && 64 git commit -am "Add testmodule" && 65 test_must_fail git clone --verbose --recurse-submodules . dolly 2>err && 66 + test_grep ! "unknown option" err 67 ' 68 69 test_expect_success 'fsck rejects missing URL scheme' '
+2 -2
t/t7417-submodule-path-url.sh
··· 21 test_expect_success 'clone rejects unprotected dash' ' 22 test_when_finished "rm -rf dst" && 23 git clone --recurse-submodules . dst 2>err && 24 - test_i18ngrep ignoring err 25 ' 26 27 test_expect_success 'fsck rejects unprotected dash' ' ··· 46 git -C super update-ref refs/heads/main $commit && 47 48 test_must_fail git clone --recurse-submodules super dst 2>err && 49 - test_i18ngrep "sub " err 50 ' 51 52 test_done
··· 21 test_expect_success 'clone rejects unprotected dash' ' 22 test_when_finished "rm -rf dst" && 23 git clone --recurse-submodules . dst 2>err && 24 + test_grep ignoring err 25 ' 26 27 test_expect_success 'fsck rejects unprotected dash' ' ··· 46 git -C super update-ref refs/heads/main $commit && 47 48 test_must_fail git clone --recurse-submodules super dst 2>err && 49 + test_grep "sub " err 50 ' 51 52 test_done
+6 -6
t/t7450-bad-git-dotfiles.sh
··· 238 git ls-tree HEAD | sed s/subdir/.gitmodules/ | git mktree && 239 240 test_must_fail git fsck 2>output && 241 - test_i18ngrep gitmodulesBlob output 242 ) 243 ' 244 ··· 252 git commit -m "broken gitmodules" && 253 254 git fsck 2>output && 255 - test_i18ngrep gitmodulesParse output && 256 - test_i18ngrep ! "bad config" output 257 ) 258 ' 259 ··· 275 hash="$(echo x | git hash-object -w --stdin)" && 276 test_must_fail git update-index --add \ 277 --cacheinfo 160000,$rev,d\\a 2>err && 278 - test_i18ngrep "Invalid path" err && 279 git -c core.protectNTFS=false update-index --add \ 280 --cacheinfo 100644,$modules,.gitmodules \ 281 --cacheinfo 160000,$rev,c \ ··· 289 then 290 test_must_fail git -c core.protectNTFS=false \ 291 clone --recurse-submodules squatting squatting-clone 2>err && 292 - test_i18ngrep -e "directory not empty" -e "not an empty directory" err && 293 ! grep gitdir squatting-clone/d/a/git~2 294 fi 295 ' ··· 314 git commit -m nested 315 ) && 316 test_must_fail git clone --recurse-submodules nested clone 2>err && 317 - test_i18ngrep "is inside git dir" err 318 ' 319 320 test_done
··· 238 git ls-tree HEAD | sed s/subdir/.gitmodules/ | git mktree && 239 240 test_must_fail git fsck 2>output && 241 + test_grep gitmodulesBlob output 242 ) 243 ' 244 ··· 252 git commit -m "broken gitmodules" && 253 254 git fsck 2>output && 255 + test_grep gitmodulesParse output && 256 + test_grep ! "bad config" output 257 ) 258 ' 259 ··· 275 hash="$(echo x | git hash-object -w --stdin)" && 276 test_must_fail git update-index --add \ 277 --cacheinfo 160000,$rev,d\\a 2>err && 278 + test_grep "Invalid path" err && 279 git -c core.protectNTFS=false update-index --add \ 280 --cacheinfo 100644,$modules,.gitmodules \ 281 --cacheinfo 160000,$rev,c \ ··· 289 then 290 test_must_fail git -c core.protectNTFS=false \ 291 clone --recurse-submodules squatting squatting-clone 2>err && 292 + test_grep -e "directory not empty" -e "not an empty directory" err && 293 ! grep gitdir squatting-clone/d/a/git~2 294 fi 295 ' ··· 314 git commit -m nested 315 ) && 316 test_must_fail git clone --recurse-submodules nested clone 2>err && 317 + test_grep "is inside git dir" err 318 ' 319 320 test_done
+1 -1
t/t7500-commit-template-squash-signoff.sh
··· 555 git commit -m initial && 556 echo "changes" >>file && 557 test_must_fail git commit -m update >actual && 558 - test_i18ngrep "no changes added to commit (use \"git add\" and/or \"git commit -a\")" actual 559 ' 560 561 test_done
··· 555 git commit -m initial && 556 echo "changes" >>file && 557 test_must_fail git commit -m update >actual && 558 + test_grep "no changes added to commit (use \"git add\" and/or \"git commit -a\")" actual 559 ' 560 561 test_done
+3 -3
t/t7501-commit-basic-functionality.sh
··· 21 echo bongo bongo >file && 22 git add file && 23 git status >actual && 24 - test_i18ngrep "No commits yet" actual 25 ' 26 27 test_expect_success 'fail initial amend' ' ··· 141 test_expect_success 'template "emptyness" check' ' 142 git checkout HEAD file && echo >>file && git add file && 143 test_must_fail git commit -t file 2>err && 144 - test_i18ngrep "did not edit" err 145 ' 146 147 test_expect_success 'setup: commit message from file' ' ··· 671 git add ./- && 672 test_tick && 673 git commit -m "add dash" >output </dev/null && 674 - test_i18ngrep " changed, 5 insertions" output 675 ' 676 677 test_expect_success '--only works on to-be-born branch' '
··· 21 echo bongo bongo >file && 22 git add file && 23 git status >actual && 24 + test_grep "No commits yet" actual 25 ' 26 27 test_expect_success 'fail initial amend' ' ··· 141 test_expect_success 'template "emptyness" check' ' 142 git checkout HEAD file && echo >>file && git add file && 143 test_must_fail git commit -t file 2>err && 144 + test_grep "did not edit" err 145 ' 146 147 test_expect_success 'setup: commit message from file' ' ··· 671 git add ./- && 672 test_tick && 673 git commit -m "add dash" >output </dev/null && 674 + test_grep " changed, 5 insertions" output 675 ' 676 677 test_expect_success '--only works on to-be-born branch' '
+16 -16
t/t7502-commit-porcelain.sh
··· 706 test_expect_success 'message shows author when it is not equal to committer' ' 707 echo >>negative && 708 git commit -e -m "sample" -a && 709 - test_i18ngrep \ 710 "^# Author: *A U Thor <author@example.com>\$" \ 711 .git/COMMIT_EDITMSG 712 ' 713 714 test_expect_success 'message shows date when it is explicitly set' ' 715 git commit --allow-empty -e -m foo --date="2010-01-02T03:04:05" && 716 - test_i18ngrep \ 717 "^# Date: *Sat Jan 2 03:04:05 2010 +0000" \ 718 .git/COMMIT_EDITMSG 719 ' ··· 728 ) && 729 # the ident is calculated from the system, so we cannot 730 # check the actual value, only that it is there 731 - test_i18ngrep "^# Committer: " .git/COMMIT_EDITMSG 732 ' 733 734 write_script .git/FAKE_EDITOR <<EOF ··· 860 GIT_EDITOR=.git/FAKE_EDITOR git commit -a $* $use_template && 861 case "$use_template" in 862 '') 863 - test_i18ngrep ! "^## Custom template" .git/COMMIT_EDITMSG ;; 864 *) 865 - test_i18ngrep "^## Custom template" .git/COMMIT_EDITMSG ;; 866 esac 867 } 868 ··· 870 871 test_expect_success 'commit' ' 872 try_commit "" && 873 - test_i18ngrep "^# Changes to be committed:" .git/COMMIT_EDITMSG 874 ' 875 876 test_expect_success 'commit --status' ' 877 try_commit --status && 878 - test_i18ngrep "^# Changes to be committed:" .git/COMMIT_EDITMSG 879 ' 880 881 test_expect_success 'commit --no-status' ' 882 try_commit --no-status && 883 - test_i18ngrep ! "^# Changes to be committed:" .git/COMMIT_EDITMSG 884 ' 885 886 test_expect_success 'commit with commit.status = yes' ' 887 test_config commit.status yes && 888 try_commit "" && 889 - test_i18ngrep "^# Changes to be committed:" .git/COMMIT_EDITMSG 890 ' 891 892 test_expect_success 'commit with commit.status = no' ' 893 test_config commit.status no && 894 try_commit "" && 895 - test_i18ngrep ! "^# Changes to be committed:" .git/COMMIT_EDITMSG 896 ' 897 898 test_expect_success 'commit --status with commit.status = yes' ' 899 test_config commit.status yes && 900 try_commit --status && 901 - test_i18ngrep "^# Changes to be committed:" .git/COMMIT_EDITMSG 902 ' 903 904 test_expect_success 'commit --no-status with commit.status = yes' ' 905 test_config commit.status yes && 906 try_commit --no-status && 907 - test_i18ngrep ! "^# Changes to be committed:" .git/COMMIT_EDITMSG 908 ' 909 910 test_expect_success 'commit --status with commit.status = no' ' 911 test_config commit.status no && 912 try_commit --status && 913 - test_i18ngrep "^# Changes to be committed:" .git/COMMIT_EDITMSG 914 ' 915 916 test_expect_success 'commit --no-status with commit.status = no' ' 917 test_config commit.status no && 918 try_commit --no-status && 919 - test_i18ngrep ! "^# Changes to be committed:" .git/COMMIT_EDITMSG 920 ' 921 922 } ··· 930 test_expect_success 'commit --status with custom comment character' ' 931 test_config core.commentchar ";" && 932 try_commit --status && 933 - test_i18ngrep "^; Changes to be committed:" .git/COMMIT_EDITMSG 934 ' 935 936 test_expect_success 'switch core.commentchar' ' 937 test_commit "#foo" foo && 938 GIT_EDITOR=.git/FAKE_EDITOR git -c core.commentChar=auto commit --amend && 939 - test_i18ngrep "^; Changes to be committed:" .git/COMMIT_EDITMSG 940 ' 941 942 test_expect_success 'switch core.commentchar but out of options' '
··· 706 test_expect_success 'message shows author when it is not equal to committer' ' 707 echo >>negative && 708 git commit -e -m "sample" -a && 709 + test_grep \ 710 "^# Author: *A U Thor <author@example.com>\$" \ 711 .git/COMMIT_EDITMSG 712 ' 713 714 test_expect_success 'message shows date when it is explicitly set' ' 715 git commit --allow-empty -e -m foo --date="2010-01-02T03:04:05" && 716 + test_grep \ 717 "^# Date: *Sat Jan 2 03:04:05 2010 +0000" \ 718 .git/COMMIT_EDITMSG 719 ' ··· 728 ) && 729 # the ident is calculated from the system, so we cannot 730 # check the actual value, only that it is there 731 + test_grep "^# Committer: " .git/COMMIT_EDITMSG 732 ' 733 734 write_script .git/FAKE_EDITOR <<EOF ··· 860 GIT_EDITOR=.git/FAKE_EDITOR git commit -a $* $use_template && 861 case "$use_template" in 862 '') 863 + test_grep ! "^## Custom template" .git/COMMIT_EDITMSG ;; 864 *) 865 + test_grep "^## Custom template" .git/COMMIT_EDITMSG ;; 866 esac 867 } 868 ··· 870 871 test_expect_success 'commit' ' 872 try_commit "" && 873 + test_grep "^# Changes to be committed:" .git/COMMIT_EDITMSG 874 ' 875 876 test_expect_success 'commit --status' ' 877 try_commit --status && 878 + test_grep "^# Changes to be committed:" .git/COMMIT_EDITMSG 879 ' 880 881 test_expect_success 'commit --no-status' ' 882 try_commit --no-status && 883 + test_grep ! "^# Changes to be committed:" .git/COMMIT_EDITMSG 884 ' 885 886 test_expect_success 'commit with commit.status = yes' ' 887 test_config commit.status yes && 888 try_commit "" && 889 + test_grep "^# Changes to be committed:" .git/COMMIT_EDITMSG 890 ' 891 892 test_expect_success 'commit with commit.status = no' ' 893 test_config commit.status no && 894 try_commit "" && 895 + test_grep ! "^# Changes to be committed:" .git/COMMIT_EDITMSG 896 ' 897 898 test_expect_success 'commit --status with commit.status = yes' ' 899 test_config commit.status yes && 900 try_commit --status && 901 + test_grep "^# Changes to be committed:" .git/COMMIT_EDITMSG 902 ' 903 904 test_expect_success 'commit --no-status with commit.status = yes' ' 905 test_config commit.status yes && 906 try_commit --no-status && 907 + test_grep ! "^# Changes to be committed:" .git/COMMIT_EDITMSG 908 ' 909 910 test_expect_success 'commit --status with commit.status = no' ' 911 test_config commit.status no && 912 try_commit --status && 913 + test_grep "^# Changes to be committed:" .git/COMMIT_EDITMSG 914 ' 915 916 test_expect_success 'commit --no-status with commit.status = no' ' 917 test_config commit.status no && 918 try_commit --no-status && 919 + test_grep ! "^# Changes to be committed:" .git/COMMIT_EDITMSG 920 ' 921 922 } ··· 930 test_expect_success 'commit --status with custom comment character' ' 931 test_config core.commentchar ";" && 932 try_commit --status && 933 + test_grep "^; Changes to be committed:" .git/COMMIT_EDITMSG 934 ' 935 936 test_expect_success 'switch core.commentchar' ' 937 test_commit "#foo" foo && 938 GIT_EDITOR=.git/FAKE_EDITOR git -c core.commentChar=auto commit --amend && 939 + test_grep "^; Changes to be committed:" .git/COMMIT_EDITMSG 940 ' 941 942 test_expect_success 'switch core.commentchar but out of options' '
+14 -14
t/t7506-status-submodule.sh
··· 37 38 test_expect_success 'status clean' ' 39 git status >output && 40 - test_i18ngrep "nothing to commit" output 41 ' 42 43 test_expect_success 'commit --dry-run -a clean' ' 44 test_must_fail git commit --dry-run -a >output && 45 - test_i18ngrep "nothing to commit" output 46 ' 47 48 test_expect_success 'status with modified file in submodule' ' 49 (cd sub && git reset --hard) && 50 echo "changed" >sub/foo && 51 git status >output && 52 - test_i18ngrep "modified: sub (modified content)" output 53 ' 54 55 test_expect_success 'status with modified file in submodule (porcelain)' ' ··· 73 test_expect_success 'status with added file in submodule' ' 74 (cd sub && git reset --hard && echo >foo && git add foo) && 75 git status >output && 76 - test_i18ngrep "modified: sub (modified content)" output 77 ' 78 79 test_expect_success 'status with added file in submodule (porcelain)' ' ··· 96 (cd sub && git reset --hard) && 97 echo "content" >sub/new-file && 98 git status >output && 99 - test_i18ngrep "modified: sub (untracked content)" output 100 ' 101 102 test_expect_success 'status -uno with untracked file in submodule' ' 103 git status -uno >output && 104 - test_i18ngrep "^nothing to commit" output 105 ' 106 107 test_expect_success 'status with untracked file in submodule (porcelain)' ' ··· 122 (cd sub && git reset --hard && echo >foo && git add foo) && 123 echo "content" >sub/new-file && 124 git status >output && 125 - test_i18ngrep "modified: sub (modified content, untracked content)" output 126 ' 127 128 test_expect_success 'status with added and untracked file in submodule (porcelain)' ' ··· 140 (cd sub && echo "next change" >foo && git commit -m "next change" foo) && 141 echo "changed" >sub/foo && 142 git status >output && 143 - test_i18ngrep "modified: sub (new commits, modified content)" output 144 ' 145 146 test_expect_success 'status with modified file in modified submodule (porcelain)' ' ··· 155 test_expect_success 'status with added file in modified submodule' ' 156 (cd sub && git reset --hard && echo >foo && git add foo) && 157 git status >output && 158 - test_i18ngrep "modified: sub (new commits, modified content)" output 159 ' 160 161 test_expect_success 'status with added file in modified submodule (porcelain)' ' ··· 170 (cd sub && git reset --hard) && 171 echo "content" >sub/new-file && 172 git status >output && 173 - test_i18ngrep "modified: sub (new commits, untracked content)" output 174 ' 175 176 test_expect_success 'status with untracked file in modified submodule (porcelain)' ' ··· 184 (cd sub && git reset --hard && echo >foo && git add foo) && 185 echo "content" >sub/new-file && 186 git status >output && 187 - test_i18ngrep "modified: sub (new commits, modified content, untracked content)" output 188 ' 189 190 test_expect_success 'status with added and untracked file in modified submodule (porcelain)' ' ··· 209 test_expect_success 'status with added file in modified submodule with .git file' ' 210 (cd sub && git reset --hard && echo >foo && git add foo) && 211 git status >output && 212 - test_i18ngrep "modified: sub (new commits, modified content)" output 213 ' 214 215 test_expect_success 'status with a lot of untracked files in the submodule' ' ··· 234 235 test_expect_success 'status clean (empty submodule dir)' ' 236 git status >output && 237 - test_i18ngrep "nothing to commit" output 238 ' 239 240 test_expect_success 'status -a clean (empty submodule dir)' ' 241 test_must_fail git commit --dry-run -a >output && 242 - test_i18ngrep "nothing to commit" output 243 ' 244 245 cat >status_expect <<\EOF
··· 37 38 test_expect_success 'status clean' ' 39 git status >output && 40 + test_grep "nothing to commit" output 41 ' 42 43 test_expect_success 'commit --dry-run -a clean' ' 44 test_must_fail git commit --dry-run -a >output && 45 + test_grep "nothing to commit" output 46 ' 47 48 test_expect_success 'status with modified file in submodule' ' 49 (cd sub && git reset --hard) && 50 echo "changed" >sub/foo && 51 git status >output && 52 + test_grep "modified: sub (modified content)" output 53 ' 54 55 test_expect_success 'status with modified file in submodule (porcelain)' ' ··· 73 test_expect_success 'status with added file in submodule' ' 74 (cd sub && git reset --hard && echo >foo && git add foo) && 75 git status >output && 76 + test_grep "modified: sub (modified content)" output 77 ' 78 79 test_expect_success 'status with added file in submodule (porcelain)' ' ··· 96 (cd sub && git reset --hard) && 97 echo "content" >sub/new-file && 98 git status >output && 99 + test_grep "modified: sub (untracked content)" output 100 ' 101 102 test_expect_success 'status -uno with untracked file in submodule' ' 103 git status -uno >output && 104 + test_grep "^nothing to commit" output 105 ' 106 107 test_expect_success 'status with untracked file in submodule (porcelain)' ' ··· 122 (cd sub && git reset --hard && echo >foo && git add foo) && 123 echo "content" >sub/new-file && 124 git status >output && 125 + test_grep "modified: sub (modified content, untracked content)" output 126 ' 127 128 test_expect_success 'status with added and untracked file in submodule (porcelain)' ' ··· 140 (cd sub && echo "next change" >foo && git commit -m "next change" foo) && 141 echo "changed" >sub/foo && 142 git status >output && 143 + test_grep "modified: sub (new commits, modified content)" output 144 ' 145 146 test_expect_success 'status with modified file in modified submodule (porcelain)' ' ··· 155 test_expect_success 'status with added file in modified submodule' ' 156 (cd sub && git reset --hard && echo >foo && git add foo) && 157 git status >output && 158 + test_grep "modified: sub (new commits, modified content)" output 159 ' 160 161 test_expect_success 'status with added file in modified submodule (porcelain)' ' ··· 170 (cd sub && git reset --hard) && 171 echo "content" >sub/new-file && 172 git status >output && 173 + test_grep "modified: sub (new commits, untracked content)" output 174 ' 175 176 test_expect_success 'status with untracked file in modified submodule (porcelain)' ' ··· 184 (cd sub && git reset --hard && echo >foo && git add foo) && 185 echo "content" >sub/new-file && 186 git status >output && 187 + test_grep "modified: sub (new commits, modified content, untracked content)" output 188 ' 189 190 test_expect_success 'status with added and untracked file in modified submodule (porcelain)' ' ··· 209 test_expect_success 'status with added file in modified submodule with .git file' ' 210 (cd sub && git reset --hard && echo >foo && git add foo) && 211 git status >output && 212 + test_grep "modified: sub (new commits, modified content)" output 213 ' 214 215 test_expect_success 'status with a lot of untracked files in the submodule' ' ··· 234 235 test_expect_success 'status clean (empty submodule dir)' ' 236 git status >output && 237 + test_grep "nothing to commit" output 238 ' 239 240 test_expect_success 'status -a clean (empty submodule dir)' ' 241 test_must_fail git commit --dry-run -a >output && 242 + test_grep "nothing to commit" output 243 ' 244 245 cat >status_expect <<\EOF
+2 -2
t/t7507-commit-verbose.sh
··· 89 export GIT_EDITOR && 90 test_must_fail git commit -a -v 2>err 91 ) && 92 - test_i18ngrep "Aborting commit due to empty commit message." err 93 ' 94 95 test_expect_success 'verbose diff is stripped out with set core.commentChar' ' ··· 98 export GIT_EDITOR && 99 test_must_fail git -c core.commentchar=";" commit -a -v 2>err 100 ) && 101 - test_i18ngrep "Aborting commit due to empty commit message." err 102 ' 103 104 test_expect_success 'status does not verbose without --verbose' '
··· 89 export GIT_EDITOR && 90 test_must_fail git commit -a -v 2>err 91 ) && 92 + test_grep "Aborting commit due to empty commit message." err 93 ' 94 95 test_expect_success 'verbose diff is stripped out with set core.commentChar' ' ··· 98 export GIT_EDITOR && 99 test_must_fail git -c core.commentchar=";" commit -a -v 2>err 100 ) && 101 + test_grep "Aborting commit due to empty commit message." err 102 ' 103 104 test_expect_success 'status does not verbose without --verbose' '
+12 -12
t/t7508-status.sh
··· 19 echo "[status] showuntrackedfiles = CORRUPT" >>.git/config && 20 test_expect_code 129 git status -h >usage 2>&1 21 ) && 22 - test_i18ngrep "[Uu]sage" broken/usage 23 ' 24 25 test_expect_success 'commit -h in broken repository' ' ··· 31 echo "[status] showuntrackedfiles = CORRUPT" >>.git/config && 32 test_expect_code 129 git commit -h >usage 2>&1 33 ) && 34 - test_i18ngrep "[Uu]sage" broken/usage 35 ' 36 37 test_expect_success 'create upstream branch' ' ··· 72 ' 73 74 test_expect_success 'status (1)' ' 75 - test_i18ngrep "use \"git rm --cached <file>\.\.\.\" to unstage" output 76 ' 77 78 strip_comments () { ··· 1542 git config --add -f .gitmodules submodule.subname.path sm && 1543 git config --add submodule.subname.ignore all && 1544 git status -s --ignore-submodules=dirty >output && 1545 - test_i18ngrep "^M. sm" output && 1546 GIT_EDITOR="echo hello >>\"\$1\"" && 1547 export GIT_EDITOR && 1548 git commit -uno && 1549 git status -s --ignore-submodules=dirty >output && 1550 - test_i18ngrep ! "^M. sm" output 1551 ' 1552 1553 test_expect_success 'git commit --dry-run will show a staged but ignored submodule' ' ··· 1572 git commit -uno --dry-run >output && 1573 test_cmp expect output && 1574 git status -s --ignore-submodules=dirty >output && 1575 - test_i18ngrep "^M. sm" output 1576 ' 1577 1578 test_expect_success 'git commit -m will commit a staged but ignored submodule' ' 1579 git commit -uno -m message && 1580 git status -s --ignore-submodules=dirty >output && 1581 - test_i18ngrep ! "^M. sm" output && 1582 git config --remove-section submodule.subname && 1583 git config -f .gitmodules --remove-section submodule.subname 1584 ' ··· 1591 git stash && 1592 git status >expected_default && 1593 git status --show-stash >expected_with_stash && 1594 - test_i18ngrep "^Your stash currently has 1 entry$" expected_with_stash 1595 ' 1596 1597 test_expect_success 'no stash info with "--show-stash --no-show-stash"' ' ··· 1618 test_expect_success '"No commits yet" should be noted in status output' ' 1619 git checkout --orphan empty-branch-1 && 1620 git status >output && 1621 - test_i18ngrep "No commits yet" output 1622 ' 1623 1624 test_expect_success '"No commits yet" should not be noted in status output' ' 1625 git checkout --orphan empty-branch-2 && 1626 test_commit test-commit-1 && 1627 git status >output && 1628 - test_i18ngrep ! "No commits yet" output 1629 ' 1630 1631 test_expect_success '"Initial commit" should be noted in commit template' ' ··· 1633 touch to_be_committed_1 && 1634 git add to_be_committed_1 && 1635 git commit --dry-run >output && 1636 - test_i18ngrep "Initial commit" output 1637 ' 1638 1639 test_expect_success '"Initial commit" should not be noted in commit template' ' ··· 1642 touch to_be_committed_2 && 1643 git add to_be_committed_2 && 1644 git commit --dry-run >output && 1645 - test_i18ngrep ! "Initial commit" output 1646 ' 1647 1648 test_expect_success '--no-optional-locks prevents index update' '
··· 19 echo "[status] showuntrackedfiles = CORRUPT" >>.git/config && 20 test_expect_code 129 git status -h >usage 2>&1 21 ) && 22 + test_grep "[Uu]sage" broken/usage 23 ' 24 25 test_expect_success 'commit -h in broken repository' ' ··· 31 echo "[status] showuntrackedfiles = CORRUPT" >>.git/config && 32 test_expect_code 129 git commit -h >usage 2>&1 33 ) && 34 + test_grep "[Uu]sage" broken/usage 35 ' 36 37 test_expect_success 'create upstream branch' ' ··· 72 ' 73 74 test_expect_success 'status (1)' ' 75 + test_grep "use \"git rm --cached <file>\.\.\.\" to unstage" output 76 ' 77 78 strip_comments () { ··· 1542 git config --add -f .gitmodules submodule.subname.path sm && 1543 git config --add submodule.subname.ignore all && 1544 git status -s --ignore-submodules=dirty >output && 1545 + test_grep "^M. sm" output && 1546 GIT_EDITOR="echo hello >>\"\$1\"" && 1547 export GIT_EDITOR && 1548 git commit -uno && 1549 git status -s --ignore-submodules=dirty >output && 1550 + test_grep ! "^M. sm" output 1551 ' 1552 1553 test_expect_success 'git commit --dry-run will show a staged but ignored submodule' ' ··· 1572 git commit -uno --dry-run >output && 1573 test_cmp expect output && 1574 git status -s --ignore-submodules=dirty >output && 1575 + test_grep "^M. sm" output 1576 ' 1577 1578 test_expect_success 'git commit -m will commit a staged but ignored submodule' ' 1579 git commit -uno -m message && 1580 git status -s --ignore-submodules=dirty >output && 1581 + test_grep ! "^M. sm" output && 1582 git config --remove-section submodule.subname && 1583 git config -f .gitmodules --remove-section submodule.subname 1584 ' ··· 1591 git stash && 1592 git status >expected_default && 1593 git status --show-stash >expected_with_stash && 1594 + test_grep "^Your stash currently has 1 entry$" expected_with_stash 1595 ' 1596 1597 test_expect_success 'no stash info with "--show-stash --no-show-stash"' ' ··· 1618 test_expect_success '"No commits yet" should be noted in status output' ' 1619 git checkout --orphan empty-branch-1 && 1620 git status >output && 1621 + test_grep "No commits yet" output 1622 ' 1623 1624 test_expect_success '"No commits yet" should not be noted in status output' ' 1625 git checkout --orphan empty-branch-2 && 1626 test_commit test-commit-1 && 1627 git status >output && 1628 + test_grep ! "No commits yet" output 1629 ' 1630 1631 test_expect_success '"Initial commit" should be noted in commit template' ' ··· 1633 touch to_be_committed_1 && 1634 git add to_be_committed_1 && 1635 git commit --dry-run >output && 1636 + test_grep "Initial commit" output 1637 ' 1638 1639 test_expect_success '"Initial commit" should not be noted in commit template' ' ··· 1642 touch to_be_committed_2 && 1643 git add to_be_committed_2 && 1644 git commit --dry-run >output && 1645 + test_grep ! "Initial commit" output 1646 ' 1647 1648 test_expect_success '--no-optional-locks prevents index update' '
+2 -2
t/t7509-commit-authorship.sh
··· 99 echo "Empty author test" >>foo && 100 test_tick && 101 test_must_fail git commit -a -m "empty author" --amend 2>err && 102 - test_i18ngrep "empty ident" err 103 ' 104 105 test_expect_success '--amend option with missing author' ' ··· 112 echo "Missing author test" >>foo && 113 test_tick && 114 test_must_fail git commit -a -m "malformed author" --amend 2>err && 115 - test_i18ngrep "empty ident" err 116 ' 117 118 test_expect_success '--reset-author makes the commit ours even with --amend option' '
··· 99 echo "Empty author test" >>foo && 100 test_tick && 101 test_must_fail git commit -a -m "empty author" --amend 2>err && 102 + test_grep "empty ident" err 103 ' 104 105 test_expect_success '--amend option with missing author' ' ··· 112 echo "Missing author test" >>foo && 113 test_tick && 114 test_must_fail git commit -a -m "malformed author" --amend 2>err && 115 + test_grep "empty ident" err 116 ' 117 118 test_expect_success '--reset-author makes the commit ours even with --amend option' '
+5 -5
t/t7518-ident-corner-cases.sh
··· 15 sane_unset GIT_AUTHOR_EMAIL && 16 GIT_AUTHOR_NAME= && 17 test_must_fail git commit --allow-empty -m foo 2>err && 18 - test_i18ngrep ! "(null)" err 19 ) 20 ' 21 ··· 40 sane_unset GIT_AUTHOR_NAME && 41 test_must_fail \ 42 git -c user.name= commit --allow-empty -m foo 2>err && 43 - test_i18ngrep "empty ident name" err && 44 - test_i18ngrep "Author identity unknown" err 45 ) 46 ' 47 ··· 50 sane_unset GIT_COMMITTER_NAME && 51 test_must_fail \ 52 git -c user.name= commit --allow-empty -m foo 2>err && 53 - test_i18ngrep "empty ident name" err && 54 - test_i18ngrep "Committer identity unknown" err 55 ) 56 ' 57
··· 15 sane_unset GIT_AUTHOR_EMAIL && 16 GIT_AUTHOR_NAME= && 17 test_must_fail git commit --allow-empty -m foo 2>err && 18 + test_grep ! "(null)" err 19 ) 20 ' 21 ··· 40 sane_unset GIT_AUTHOR_NAME && 41 test_must_fail \ 42 git -c user.name= commit --allow-empty -m foo 2>err && 43 + test_grep "empty ident name" err && 44 + test_grep "Author identity unknown" err 45 ) 46 ' 47 ··· 50 sane_unset GIT_COMMITTER_NAME && 51 test_must_fail \ 52 git -c user.name= commit --allow-empty -m foo 2>err && 53 + test_grep "empty ident name" err && 54 + test_grep "Committer identity unknown" err 55 ) 56 ' 57
+3 -3
t/t7519-status-fsmonitor.sh
··· 322 rm -f marker && 323 git status >actual && 324 test_path_is_file marker && 325 - test_i18ngrep ! "Changes not staged for commit:" actual && 326 if test $uc_val = true 327 then 328 - test_i18ngrep ! "Untracked files:" actual 329 fi && 330 if test $uc_val = false 331 then 332 - test_i18ngrep "Untracked files:" actual 333 fi && 334 rm -f marker 335 '
··· 322 rm -f marker && 323 git status >actual && 324 test_path_is_file marker && 325 + test_grep ! "Changes not staged for commit:" actual && 326 if test $uc_val = true 327 then 328 + test_grep ! "Untracked files:" actual 329 fi && 330 if test $uc_val = false 331 then 332 + test_grep "Untracked files:" actual 333 fi && 334 rm -f marker 335 '
+4 -4
t/t7520-ignored-hook-warning.sh
··· 13 14 test_expect_success 'no warning if hook is not ignored' ' 15 git commit --allow-empty -m "more" 2>message && 16 - test_i18ngrep ! -e "hook was ignored" message 17 ' 18 19 test_expect_success POSIXPERM 'warning if hook is ignored' ' 20 test_hook --disable pre-commit && 21 git commit --allow-empty -m "even more" 2>message && 22 - test_i18ngrep -e "hook was ignored" message 23 ' 24 25 test_expect_success POSIXPERM 'no warning if advice.ignoredHook set to false' ' 26 test_config advice.ignoredHook false && 27 test_hook --disable pre-commit && 28 git commit --allow-empty -m "even more" 2>message && 29 - test_i18ngrep ! -e "hook was ignored" message 30 ' 31 32 test_expect_success 'no warning if unset advice.ignoredHook and hook removed' ' 33 test_hook --remove pre-commit && 34 test_unconfig advice.ignoredHook && 35 git commit --allow-empty -m "even more" 2>message && 36 - test_i18ngrep ! -e "hook was ignored" message 37 ' 38 39 test_done
··· 13 14 test_expect_success 'no warning if hook is not ignored' ' 15 git commit --allow-empty -m "more" 2>message && 16 + test_grep ! -e "hook was ignored" message 17 ' 18 19 test_expect_success POSIXPERM 'warning if hook is ignored' ' 20 test_hook --disable pre-commit && 21 git commit --allow-empty -m "even more" 2>message && 22 + test_grep -e "hook was ignored" message 23 ' 24 25 test_expect_success POSIXPERM 'no warning if advice.ignoredHook set to false' ' 26 test_config advice.ignoredHook false && 27 test_hook --disable pre-commit && 28 git commit --allow-empty -m "even more" 2>message && 29 + test_grep ! -e "hook was ignored" message 30 ' 31 32 test_expect_success 'no warning if unset advice.ignoredHook and hook removed' ' 33 test_hook --remove pre-commit && 34 test_unconfig advice.ignoredHook && 35 git commit --allow-empty -m "even more" 2>message && 36 + test_grep ! -e "hook was ignored" message 37 ' 38 39 test_done
+27 -27
t/t7525-status-rename.sh
··· 21 22 test_expect_success 'status no-options' ' 23 git status >actual && 24 - test_i18ngrep "renamed:" actual 25 ' 26 27 test_expect_success 'status --no-renames' ' 28 git status --no-renames >actual && 29 - test_i18ngrep "deleted:" actual && 30 - test_i18ngrep "new file:" actual 31 ' 32 33 test_expect_success 'status.renames inherits from diff.renames false' ' 34 git -c diff.renames=false status >actual && 35 - test_i18ngrep "deleted:" actual && 36 - test_i18ngrep "new file:" actual 37 ' 38 39 test_expect_success 'status.renames inherits from diff.renames true' ' 40 git -c diff.renames=true status >actual && 41 - test_i18ngrep "renamed:" actual 42 ' 43 44 test_expect_success 'status.renames overrides diff.renames false' ' 45 git -c diff.renames=true -c status.renames=false status >actual && 46 - test_i18ngrep "deleted:" actual && 47 - test_i18ngrep "new file:" actual 48 ' 49 50 test_expect_success 'status.renames overrides from diff.renames true' ' 51 git -c diff.renames=false -c status.renames=true status >actual && 52 - test_i18ngrep "renamed:" actual 53 ' 54 55 test_expect_success 'status status.renames=false' ' 56 git -c status.renames=false status >actual && 57 - test_i18ngrep "deleted:" actual && 58 - test_i18ngrep "new file:" actual 59 ' 60 61 test_expect_success 'status status.renames=true' ' 62 git -c status.renames=true status >actual && 63 - test_i18ngrep "renamed:" actual 64 ' 65 66 test_expect_success 'commit honors status.renames=false' ' 67 git -c status.renames=false commit --dry-run >actual && 68 - test_i18ngrep "deleted:" actual && 69 - test_i18ngrep "new file:" actual 70 ' 71 72 test_expect_success 'commit honors status.renames=true' ' 73 git -c status.renames=true commit --dry-run >actual && 74 - test_i18ngrep "renamed:" actual 75 ' 76 77 test_expect_success 'status config overridden' ' 78 git -c status.renames=true status --no-renames >actual && 79 - test_i18ngrep "deleted:" actual && 80 - test_i18ngrep "new file:" actual 81 ' 82 83 test_expect_success 'status score=100%' ' 84 git status -M=100% >actual && 85 - test_i18ngrep "deleted:" actual && 86 - test_i18ngrep "new file:" actual && 87 88 git status --find-renames=100% >actual && 89 - test_i18ngrep "deleted:" actual && 90 - test_i18ngrep "new file:" actual 91 ' 92 93 test_expect_success 'status score=01%' ' 94 git status -M=01% >actual && 95 - test_i18ngrep "renamed:" actual && 96 97 git status --find-renames=01% >actual && 98 - test_i18ngrep "renamed:" actual 99 ' 100 101 test_expect_success 'copies not overridden by find-renames' ' ··· 103 git add copy && 104 105 git -c status.renames=copies status -M=01% >actual && 106 - test_i18ngrep "copied:" actual && 107 - test_i18ngrep "renamed:" actual && 108 109 git -c status.renames=copies status --find-renames=01% >actual && 110 - test_i18ngrep "copied:" actual && 111 - test_i18ngrep "renamed:" actual 112 ' 113 114 test_done
··· 21 22 test_expect_success 'status no-options' ' 23 git status >actual && 24 + test_grep "renamed:" actual 25 ' 26 27 test_expect_success 'status --no-renames' ' 28 git status --no-renames >actual && 29 + test_grep "deleted:" actual && 30 + test_grep "new file:" actual 31 ' 32 33 test_expect_success 'status.renames inherits from diff.renames false' ' 34 git -c diff.renames=false status >actual && 35 + test_grep "deleted:" actual && 36 + test_grep "new file:" actual 37 ' 38 39 test_expect_success 'status.renames inherits from diff.renames true' ' 40 git -c diff.renames=true status >actual && 41 + test_grep "renamed:" actual 42 ' 43 44 test_expect_success 'status.renames overrides diff.renames false' ' 45 git -c diff.renames=true -c status.renames=false status >actual && 46 + test_grep "deleted:" actual && 47 + test_grep "new file:" actual 48 ' 49 50 test_expect_success 'status.renames overrides from diff.renames true' ' 51 git -c diff.renames=false -c status.renames=true status >actual && 52 + test_grep "renamed:" actual 53 ' 54 55 test_expect_success 'status status.renames=false' ' 56 git -c status.renames=false status >actual && 57 + test_grep "deleted:" actual && 58 + test_grep "new file:" actual 59 ' 60 61 test_expect_success 'status status.renames=true' ' 62 git -c status.renames=true status >actual && 63 + test_grep "renamed:" actual 64 ' 65 66 test_expect_success 'commit honors status.renames=false' ' 67 git -c status.renames=false commit --dry-run >actual && 68 + test_grep "deleted:" actual && 69 + test_grep "new file:" actual 70 ' 71 72 test_expect_success 'commit honors status.renames=true' ' 73 git -c status.renames=true commit --dry-run >actual && 74 + test_grep "renamed:" actual 75 ' 76 77 test_expect_success 'status config overridden' ' 78 git -c status.renames=true status --no-renames >actual && 79 + test_grep "deleted:" actual && 80 + test_grep "new file:" actual 81 ' 82 83 test_expect_success 'status score=100%' ' 84 git status -M=100% >actual && 85 + test_grep "deleted:" actual && 86 + test_grep "new file:" actual && 87 88 git status --find-renames=100% >actual && 89 + test_grep "deleted:" actual && 90 + test_grep "new file:" actual 91 ' 92 93 test_expect_success 'status score=01%' ' 94 git status -M=01% >actual && 95 + test_grep "renamed:" actual && 96 97 git status --find-renames=01% >actual && 98 + test_grep "renamed:" actual 99 ' 100 101 test_expect_success 'copies not overridden by find-renames' ' ··· 103 git add copy && 104 105 git -c status.renames=copies status -M=01% >actual && 106 + test_grep "copied:" actual && 107 + test_grep "renamed:" actual && 108 109 git -c status.renames=copies status --find-renames=01% >actual && 110 + test_grep "copied:" actual && 111 + test_grep "renamed:" actual 112 ' 113 114 test_done
+7 -7
t/t7526-commit-pathspec-file.sh
··· 141 >empty_list && 142 143 test_must_fail git commit --pathspec-from-file=list --interactive -m "Commit" 2>err && 144 - test_i18ngrep -e "options .--pathspec-from-file. and .--interactive/--patch. cannot be used together" err && 145 146 test_must_fail git commit --pathspec-from-file=list --patch -m "Commit" 2>err && 147 - test_i18ngrep -e "options .--pathspec-from-file. and .--interactive/--patch. cannot be used together" err && 148 149 test_must_fail git commit --pathspec-from-file=list --all -m "Commit" 2>err && 150 - test_i18ngrep -e "options .--pathspec-from-file. and .-a. cannot be used together" err && 151 152 test_must_fail git commit --pathspec-from-file=list -m "Commit" -- fileA.t 2>err && 153 - test_i18ngrep -e ".--pathspec-from-file. and pathspec arguments cannot be used together" err && 154 155 test_must_fail git commit --pathspec-file-nul -m "Commit" 2>err && 156 - test_i18ngrep -e "the option .--pathspec-file-nul. requires .--pathspec-from-file." err && 157 158 test_must_fail git commit --pathspec-from-file=empty_list --include -m "Commit" 2>err && 159 - test_i18ngrep -e "No paths with --include/--only does not make sense." err && 160 161 test_must_fail git commit --pathspec-from-file=empty_list --only -m "Commit" 2>err && 162 - test_i18ngrep -e "No paths with --include/--only does not make sense." err 163 ' 164 165 test_done
··· 141 >empty_list && 142 143 test_must_fail git commit --pathspec-from-file=list --interactive -m "Commit" 2>err && 144 + test_grep -e "options .--pathspec-from-file. and .--interactive/--patch. cannot be used together" err && 145 146 test_must_fail git commit --pathspec-from-file=list --patch -m "Commit" 2>err && 147 + test_grep -e "options .--pathspec-from-file. and .--interactive/--patch. cannot be used together" err && 148 149 test_must_fail git commit --pathspec-from-file=list --all -m "Commit" 2>err && 150 + test_grep -e "options .--pathspec-from-file. and .-a. cannot be used together" err && 151 152 test_must_fail git commit --pathspec-from-file=list -m "Commit" -- fileA.t 2>err && 153 + test_grep -e ".--pathspec-from-file. and pathspec arguments cannot be used together" err && 154 155 test_must_fail git commit --pathspec-file-nul -m "Commit" 2>err && 156 + test_grep -e "the option .--pathspec-file-nul. requires .--pathspec-from-file." err && 157 158 test_must_fail git commit --pathspec-from-file=empty_list --include -m "Commit" 2>err && 159 + test_grep -e "No paths with --include/--only does not make sense." err && 160 161 test_must_fail git commit --pathspec-from-file=empty_list --only -m "Commit" 2>err && 162 + test_grep -e "No paths with --include/--only does not make sense." err 163 ' 164 165 test_done
+15 -15
t/t7600-merge.sh
··· 175 >.git/index && 176 test_expect_code 129 git merge -h 2>usage 177 ) && 178 - test_i18ngrep "[Uu]sage: git merge" broken/usage 179 ' 180 181 test_expect_success 'reject non-strategy with a git-merge-foo name' ' ··· 681 test_expect_success 'in-index merge' ' 682 git reset --hard c0 && 683 git merge --no-ff -s resolve c1 >out && 684 - test_i18ngrep "Wonderful." out && 685 verify_parents $c0 $c1 686 ' 687 ··· 697 git reset --hard c1 && 698 git merge-file file file.orig file.9 && 699 git merge --autostash c2 2>err && 700 - test_i18ngrep "Applied autostash." err && 701 git show HEAD:file >merge-result && 702 test_cmp result.1-5 merge-result && 703 test_cmp result.1-5-9 file ··· 708 git reset --hard c1 && 709 git merge-file file file.orig file.9 && 710 git merge c2 2>err && 711 - test_i18ngrep "Applied autostash." err && 712 git show HEAD:file >merge-result && 713 test_cmp result.1-5 merge-result && 714 test_cmp result.1-5-9 file ··· 718 git reset --hard c0 && 719 git merge-file file file.orig file.5 && 720 git merge --autostash c1 2>err && 721 - test_i18ngrep "Applied autostash." err && 722 test_cmp result.1-5 file 723 ' 724 ··· 728 cp file.5 other && 729 test_when_finished "rm other" && 730 test_must_fail git merge --autostash c1 2>err && 731 - test_i18ngrep "Applied autostash." err && 732 test_cmp file.5 file 733 ' 734 ··· 736 git reset --hard c1 && 737 git merge-file file file.orig file.3 && 738 git merge --autostash c2 c3 2>err && 739 - test_i18ngrep "Applied autostash." err && 740 git show HEAD:file >merge-result && 741 test_cmp result.1-5-9 merge-result && 742 test_cmp result.1-3-5-9 file ··· 746 git reset --hard c1 && 747 git merge-file file file.orig file.5 && 748 test_must_fail git merge -s recursive --autostash c2 c3 2>err && 749 - test_i18ngrep "Applied autostash." err && 750 test_cmp result.1-5 file 751 ' 752 ··· 755 cp file.1 file && 756 test_must_fail git merge --autostash c7 && 757 git merge --abort 2>err && 758 - test_i18ngrep "Applied autostash." err && 759 test_cmp file.1 file 760 ' 761 ··· 767 git stash show -p MERGE_AUTOSTASH >actual && 768 test_cmp expect actual && 769 git commit 2>err && 770 - test_i18ngrep "Applied autostash." err && 771 git show HEAD:file >merge-result && 772 test_cmp result.1-5 merge-result && 773 test_cmp result.1-5-9 file ··· 781 git stash show -p MERGE_AUTOSTASH >actual && 782 test_cmp expect actual && 783 git merge --continue 2>err && 784 - test_i18ngrep "Applied autostash." err && 785 git show HEAD:file >merge-result && 786 test_cmp result.1-5 merge-result && 787 test_cmp result.1-5-9 file ··· 795 git stash show -p MERGE_AUTOSTASH >actual && 796 test_cmp expect actual && 797 git merge --abort 2>err && 798 - test_i18ngrep "Applied autostash." err && 799 git diff >actual && 800 test_cmp expect actual 801 ' ··· 808 git stash show -p MERGE_AUTOSTASH >actual && 809 test_cmp expect actual && 810 git reset --hard 2>err && 811 - test_i18ngrep "Autostash exists; creating a new stash entry." err && 812 git diff --exit-code 813 ' 814 ··· 821 test_cmp expect actual && 822 git diff HEAD >expect && 823 git merge --quit 2>err && 824 - test_i18ngrep "Autostash exists; creating a new stash entry." err && 825 git diff HEAD >actual && 826 test_cmp expect actual 827 ' ··· 832 git diff >expect && 833 test_when_finished "test_might_fail git stash drop" && 834 git merge --autostash c3 2>err && 835 - test_i18ngrep "Applying autostash resulted in conflicts." err && 836 git show HEAD:file >merge-result && 837 test_cmp result.1-9 merge-result && 838 git stash show -p >actual &&
··· 175 >.git/index && 176 test_expect_code 129 git merge -h 2>usage 177 ) && 178 + test_grep "[Uu]sage: git merge" broken/usage 179 ' 180 181 test_expect_success 'reject non-strategy with a git-merge-foo name' ' ··· 681 test_expect_success 'in-index merge' ' 682 git reset --hard c0 && 683 git merge --no-ff -s resolve c1 >out && 684 + test_grep "Wonderful." out && 685 verify_parents $c0 $c1 686 ' 687 ··· 697 git reset --hard c1 && 698 git merge-file file file.orig file.9 && 699 git merge --autostash c2 2>err && 700 + test_grep "Applied autostash." err && 701 git show HEAD:file >merge-result && 702 test_cmp result.1-5 merge-result && 703 test_cmp result.1-5-9 file ··· 708 git reset --hard c1 && 709 git merge-file file file.orig file.9 && 710 git merge c2 2>err && 711 + test_grep "Applied autostash." err && 712 git show HEAD:file >merge-result && 713 test_cmp result.1-5 merge-result && 714 test_cmp result.1-5-9 file ··· 718 git reset --hard c0 && 719 git merge-file file file.orig file.5 && 720 git merge --autostash c1 2>err && 721 + test_grep "Applied autostash." err && 722 test_cmp result.1-5 file 723 ' 724 ··· 728 cp file.5 other && 729 test_when_finished "rm other" && 730 test_must_fail git merge --autostash c1 2>err && 731 + test_grep "Applied autostash." err && 732 test_cmp file.5 file 733 ' 734 ··· 736 git reset --hard c1 && 737 git merge-file file file.orig file.3 && 738 git merge --autostash c2 c3 2>err && 739 + test_grep "Applied autostash." err && 740 git show HEAD:file >merge-result && 741 test_cmp result.1-5-9 merge-result && 742 test_cmp result.1-3-5-9 file ··· 746 git reset --hard c1 && 747 git merge-file file file.orig file.5 && 748 test_must_fail git merge -s recursive --autostash c2 c3 2>err && 749 + test_grep "Applied autostash." err && 750 test_cmp result.1-5 file 751 ' 752 ··· 755 cp file.1 file && 756 test_must_fail git merge --autostash c7 && 757 git merge --abort 2>err && 758 + test_grep "Applied autostash." err && 759 test_cmp file.1 file 760 ' 761 ··· 767 git stash show -p MERGE_AUTOSTASH >actual && 768 test_cmp expect actual && 769 git commit 2>err && 770 + test_grep "Applied autostash." err && 771 git show HEAD:file >merge-result && 772 test_cmp result.1-5 merge-result && 773 test_cmp result.1-5-9 file ··· 781 git stash show -p MERGE_AUTOSTASH >actual && 782 test_cmp expect actual && 783 git merge --continue 2>err && 784 + test_grep "Applied autostash." err && 785 git show HEAD:file >merge-result && 786 test_cmp result.1-5 merge-result && 787 test_cmp result.1-5-9 file ··· 795 git stash show -p MERGE_AUTOSTASH >actual && 796 test_cmp expect actual && 797 git merge --abort 2>err && 798 + test_grep "Applied autostash." err && 799 git diff >actual && 800 test_cmp expect actual 801 ' ··· 808 git stash show -p MERGE_AUTOSTASH >actual && 809 test_cmp expect actual && 810 git reset --hard 2>err && 811 + test_grep "Autostash exists; creating a new stash entry." err && 812 git diff --exit-code 813 ' 814 ··· 821 test_cmp expect actual && 822 git diff HEAD >expect && 823 git merge --quit 2>err && 824 + test_grep "Autostash exists; creating a new stash entry." err && 825 git diff HEAD >actual && 826 test_cmp expect actual 827 ' ··· 832 git diff >expect && 833 test_when_finished "test_might_fail git stash drop" && 834 git merge --autostash c3 2>err && 835 + test_grep "Applying autostash resulted in conflicts." err && 836 git show HEAD:file >merge-result && 837 test_cmp result.1-9 merge-result && 838 git stash show -p >actual &&
+25 -25
t/t7601-merge-pull-config.sh
··· 30 test_expect_success 'pull.rebase not set, ff possible' ' 31 git reset --hard c0 && 32 git pull . c1 2>err && 33 - test_i18ngrep ! "You have divergent branches" err 34 ' 35 36 test_expect_success 'pull.rebase not set and pull.ff=true' ' 37 git reset --hard c0 && 38 test_config pull.ff true && 39 git pull . c1 2>err && 40 - test_i18ngrep ! "You have divergent branches" err 41 ' 42 43 test_expect_success 'pull.rebase not set and pull.ff=false' ' 44 git reset --hard c0 && 45 test_config pull.ff false && 46 git pull . c1 2>err && 47 - test_i18ngrep ! "You have divergent branches" err 48 ' 49 50 test_expect_success 'pull.rebase not set and pull.ff=only' ' 51 git reset --hard c0 && 52 test_config pull.ff only && 53 git pull . c1 2>err && 54 - test_i18ngrep ! "You have divergent branches" err 55 ' 56 57 test_expect_success 'pull.rebase not set and --rebase given' ' 58 git reset --hard c0 && 59 git pull --rebase . c1 2>err && 60 - test_i18ngrep ! "You have divergent branches" err 61 ' 62 63 test_expect_success 'pull.rebase not set and --no-rebase given' ' 64 git reset --hard c0 && 65 git pull --no-rebase . c1 2>err && 66 - test_i18ngrep ! "You have divergent branches" err 67 ' 68 69 test_expect_success 'pull.rebase not set and --ff given' ' 70 git reset --hard c0 && 71 git pull --ff . c1 2>err && 72 - test_i18ngrep ! "You have divergent branches" err 73 ' 74 75 test_expect_success 'pull.rebase not set and --no-ff given' ' 76 git reset --hard c0 && 77 git pull --no-ff . c1 2>err && 78 - test_i18ngrep ! "You have divergent branches" err 79 ' 80 81 test_expect_success 'pull.rebase not set and --ff-only given' ' 82 git reset --hard c0 && 83 git pull --ff-only . c1 2>err && 84 - test_i18ngrep ! "You have divergent branches" err 85 ' 86 87 test_expect_success 'pull.rebase not set (not-fast-forward)' ' 88 git reset --hard c2 && 89 test_must_fail git -c color.advice=always pull . c1 2>err && 90 test_decode_color <err >decoded && 91 - test_i18ngrep "<YELLOW>hint: " decoded && 92 - test_i18ngrep "You have divergent branches" decoded 93 ' 94 95 test_expect_success 'pull.rebase not set and pull.ff=true (not-fast-forward)' ' 96 git reset --hard c2 && 97 test_config pull.ff true && 98 git pull . c1 2>err && 99 - test_i18ngrep ! "You have divergent branches" err 100 ' 101 102 test_expect_success 'pull.rebase not set and pull.ff=false (not-fast-forward)' ' 103 git reset --hard c2 && 104 test_config pull.ff false && 105 git pull . c1 2>err && 106 - test_i18ngrep ! "You have divergent branches" err 107 ' 108 109 test_expect_success 'pull.rebase not set and pull.ff=only (not-fast-forward)' ' 110 git reset --hard c2 && 111 test_config pull.ff only && 112 test_must_fail git pull . c1 2>err && 113 - test_i18ngrep ! "You have divergent branches" err 114 ' 115 116 test_expect_success 'pull.rebase not set and --rebase given (not-fast-forward)' ' 117 git reset --hard c2 && 118 git pull --rebase . c1 2>err && 119 - test_i18ngrep ! "You have divergent branches" err 120 ' 121 122 test_expect_success 'pull.rebase not set and --no-rebase given (not-fast-forward)' ' 123 git reset --hard c2 && 124 git pull --no-rebase . c1 2>err && 125 - test_i18ngrep ! "You have divergent branches" err 126 ' 127 128 test_expect_success 'pull.rebase not set and --ff given (not-fast-forward)' ' 129 git reset --hard c2 && 130 git pull --ff . c1 2>err && 131 - test_i18ngrep ! "You have divergent branches" err 132 ' 133 134 test_expect_success 'pull.rebase not set and --no-ff given (not-fast-forward)' ' 135 git reset --hard c2 && 136 git pull --no-ff . c1 2>err && 137 - test_i18ngrep ! "You have divergent branches" err 138 ' 139 140 test_expect_success 'pull.rebase not set and --ff-only given (not-fast-forward)' ' 141 git reset --hard c2 && 142 test_must_fail git pull --ff-only . c1 2>err && 143 - test_i18ngrep ! "You have divergent branches" err 144 ' 145 146 test_does_rebase () { ··· 202 test_attempts_fast_forward () { 203 git reset --hard c2 && 204 test_must_fail git "$@" . c1 2>err && 205 - test_i18ngrep "Not possible to fast-forward, aborting" err 206 } 207 208 # ··· 328 test_expect_success 'Multiple heads warns about inability to fast forward' ' 329 git reset --hard c1 && 330 test_must_fail git pull . c2 c3 2>err && 331 - test_i18ngrep "You have divergent branches" err 332 ' 333 334 test_expect_success 'Multiple can never be fast forwarded' ' 335 git reset --hard c0 && 336 test_must_fail git -c pull.ff=only pull . c1 c2 c3 2>err && 337 - test_i18ngrep ! "You have divergent branches" err && 338 # In addition to calling out "cannot fast-forward", we very much 339 # want the "multiple branches" piece to be called out to users. 340 - test_i18ngrep "Cannot fast-forward to multiple branches" err 341 ' 342 343 test_expect_success 'Cannot rebase with multiple heads' ' 344 git reset --hard c0 && 345 test_must_fail git -c pull.rebase=true pull . c1 c2 c3 2>err && 346 - test_i18ngrep ! "You have divergent branches" err && 347 - test_i18ngrep "Cannot rebase onto multiple branches." err 348 ' 349 350 test_expect_success 'merge c1 with c2' '
··· 30 test_expect_success 'pull.rebase not set, ff possible' ' 31 git reset --hard c0 && 32 git pull . c1 2>err && 33 + test_grep ! "You have divergent branches" err 34 ' 35 36 test_expect_success 'pull.rebase not set and pull.ff=true' ' 37 git reset --hard c0 && 38 test_config pull.ff true && 39 git pull . c1 2>err && 40 + test_grep ! "You have divergent branches" err 41 ' 42 43 test_expect_success 'pull.rebase not set and pull.ff=false' ' 44 git reset --hard c0 && 45 test_config pull.ff false && 46 git pull . c1 2>err && 47 + test_grep ! "You have divergent branches" err 48 ' 49 50 test_expect_success 'pull.rebase not set and pull.ff=only' ' 51 git reset --hard c0 && 52 test_config pull.ff only && 53 git pull . c1 2>err && 54 + test_grep ! "You have divergent branches" err 55 ' 56 57 test_expect_success 'pull.rebase not set and --rebase given' ' 58 git reset --hard c0 && 59 git pull --rebase . c1 2>err && 60 + test_grep ! "You have divergent branches" err 61 ' 62 63 test_expect_success 'pull.rebase not set and --no-rebase given' ' 64 git reset --hard c0 && 65 git pull --no-rebase . c1 2>err && 66 + test_grep ! "You have divergent branches" err 67 ' 68 69 test_expect_success 'pull.rebase not set and --ff given' ' 70 git reset --hard c0 && 71 git pull --ff . c1 2>err && 72 + test_grep ! "You have divergent branches" err 73 ' 74 75 test_expect_success 'pull.rebase not set and --no-ff given' ' 76 git reset --hard c0 && 77 git pull --no-ff . c1 2>err && 78 + test_grep ! "You have divergent branches" err 79 ' 80 81 test_expect_success 'pull.rebase not set and --ff-only given' ' 82 git reset --hard c0 && 83 git pull --ff-only . c1 2>err && 84 + test_grep ! "You have divergent branches" err 85 ' 86 87 test_expect_success 'pull.rebase not set (not-fast-forward)' ' 88 git reset --hard c2 && 89 test_must_fail git -c color.advice=always pull . c1 2>err && 90 test_decode_color <err >decoded && 91 + test_grep "<YELLOW>hint: " decoded && 92 + test_grep "You have divergent branches" decoded 93 ' 94 95 test_expect_success 'pull.rebase not set and pull.ff=true (not-fast-forward)' ' 96 git reset --hard c2 && 97 test_config pull.ff true && 98 git pull . c1 2>err && 99 + test_grep ! "You have divergent branches" err 100 ' 101 102 test_expect_success 'pull.rebase not set and pull.ff=false (not-fast-forward)' ' 103 git reset --hard c2 && 104 test_config pull.ff false && 105 git pull . c1 2>err && 106 + test_grep ! "You have divergent branches" err 107 ' 108 109 test_expect_success 'pull.rebase not set and pull.ff=only (not-fast-forward)' ' 110 git reset --hard c2 && 111 test_config pull.ff only && 112 test_must_fail git pull . c1 2>err && 113 + test_grep ! "You have divergent branches" err 114 ' 115 116 test_expect_success 'pull.rebase not set and --rebase given (not-fast-forward)' ' 117 git reset --hard c2 && 118 git pull --rebase . c1 2>err && 119 + test_grep ! "You have divergent branches" err 120 ' 121 122 test_expect_success 'pull.rebase not set and --no-rebase given (not-fast-forward)' ' 123 git reset --hard c2 && 124 git pull --no-rebase . c1 2>err && 125 + test_grep ! "You have divergent branches" err 126 ' 127 128 test_expect_success 'pull.rebase not set and --ff given (not-fast-forward)' ' 129 git reset --hard c2 && 130 git pull --ff . c1 2>err && 131 + test_grep ! "You have divergent branches" err 132 ' 133 134 test_expect_success 'pull.rebase not set and --no-ff given (not-fast-forward)' ' 135 git reset --hard c2 && 136 git pull --no-ff . c1 2>err && 137 + test_grep ! "You have divergent branches" err 138 ' 139 140 test_expect_success 'pull.rebase not set and --ff-only given (not-fast-forward)' ' 141 git reset --hard c2 && 142 test_must_fail git pull --ff-only . c1 2>err && 143 + test_grep ! "You have divergent branches" err 144 ' 145 146 test_does_rebase () { ··· 202 test_attempts_fast_forward () { 203 git reset --hard c2 && 204 test_must_fail git "$@" . c1 2>err && 205 + test_grep "Not possible to fast-forward, aborting" err 206 } 207 208 # ··· 328 test_expect_success 'Multiple heads warns about inability to fast forward' ' 329 git reset --hard c1 && 330 test_must_fail git pull . c2 c3 2>err && 331 + test_grep "You have divergent branches" err 332 ' 333 334 test_expect_success 'Multiple can never be fast forwarded' ' 335 git reset --hard c0 && 336 test_must_fail git -c pull.ff=only pull . c1 c2 c3 2>err && 337 + test_grep ! "You have divergent branches" err && 338 # In addition to calling out "cannot fast-forward", we very much 339 # want the "multiple branches" piece to be called out to users. 340 + test_grep "Cannot fast-forward to multiple branches" err 341 ' 342 343 test_expect_success 'Cannot rebase with multiple heads' ' 344 git reset --hard c0 && 345 test_must_fail git -c pull.rebase=true pull . c1 c2 c3 2>err && 346 + test_grep ! "You have divergent branches" err && 347 + test_grep "Cannot rebase onto multiple branches." err 348 ' 349 350 test_expect_success 'merge c1 with c2' '
+2 -2
t/t7611-merge-abort.sh
··· 50 51 test_expect_success 'fails without MERGE_HEAD (unstarted merge)' ' 52 test_must_fail git merge --abort 2>output && 53 - test_i18ngrep MERGE_HEAD output 54 ' 55 56 test_expect_success 'fails without MERGE_HEAD (unstarted merge): .git/MERGE_HEAD sanity' ' ··· 64 # Merge successfully completed 65 post_merge_head="$(git rev-parse HEAD)" && 66 test_must_fail git merge --abort 2>output && 67 - test_i18ngrep MERGE_HEAD output 68 ' 69 70 test_expect_success 'fails without MERGE_HEAD (completed merge): .git/MERGE_HEAD sanity' '
··· 50 51 test_expect_success 'fails without MERGE_HEAD (unstarted merge)' ' 52 test_must_fail git merge --abort 2>output && 53 + test_grep MERGE_HEAD output 54 ' 55 56 test_expect_success 'fails without MERGE_HEAD (unstarted merge): .git/MERGE_HEAD sanity' ' ··· 64 # Merge successfully completed 65 post_merge_head="$(git rev-parse HEAD)" && 66 test_must_fail git merge --abort 2>output && 67 + test_grep MERGE_HEAD output 68 ' 69 70 test_expect_success 'fails without MERGE_HEAD (completed merge): .git/MERGE_HEAD sanity' '
+12 -12
t/t7612-merge-verify-signatures.sh
··· 41 test_expect_success GPG 'merge unsigned commit with verification' ' 42 test_when_finished "git reset --hard && git checkout initial" && 43 test_must_fail git merge --ff-only --verify-signatures side-unsigned 2>mergeerror && 44 - test_i18ngrep "does not have a GPG signature" mergeerror 45 ' 46 47 test_expect_success GPG 'merge unsigned commit with merge.verifySignatures=true' ' 48 test_when_finished "git reset --hard && git checkout initial" && 49 test_config merge.verifySignatures true && 50 test_must_fail git merge --ff-only side-unsigned 2>mergeerror && 51 - test_i18ngrep "does not have a GPG signature" mergeerror 52 ' 53 54 test_expect_success GPG 'merge commit with bad signature with verification' ' 55 test_when_finished "git reset --hard && git checkout initial" && 56 test_must_fail git merge --ff-only --verify-signatures $(cat forged.commit) 2>mergeerror && 57 - test_i18ngrep "has a bad GPG signature" mergeerror 58 ' 59 60 test_expect_success GPG 'merge commit with bad signature with merge.verifySignatures=true' ' 61 test_when_finished "git reset --hard && git checkout initial" && 62 test_config merge.verifySignatures true && 63 test_must_fail git merge --ff-only $(cat forged.commit) 2>mergeerror && 64 - test_i18ngrep "has a bad GPG signature" mergeerror 65 ' 66 67 test_expect_success GPG 'merge commit with untrusted signature with verification' ' 68 test_when_finished "git reset --hard && git checkout initial" && 69 test_must_fail git merge --ff-only --verify-signatures side-untrusted 2>mergeerror && 70 - test_i18ngrep "has an untrusted GPG signature" mergeerror 71 ' 72 73 test_expect_success GPG 'merge commit with untrusted signature with verification and high minTrustLevel' ' 74 test_when_finished "git reset --hard && git checkout initial" && 75 test_config gpg.minTrustLevel marginal && 76 test_must_fail git merge --ff-only --verify-signatures side-untrusted 2>mergeerror && 77 - test_i18ngrep "has an untrusted GPG signature" mergeerror 78 ' 79 80 test_expect_success GPG 'merge commit with untrusted signature with verification and low minTrustLevel' ' 81 test_when_finished "git reset --hard && git checkout initial" && 82 test_config gpg.minTrustLevel undefined && 83 git merge --ff-only --verify-signatures side-untrusted >mergeoutput && 84 - test_i18ngrep "has a good GPG signature" mergeoutput 85 ' 86 87 test_expect_success GPG 'merge commit with untrusted signature with merge.verifySignatures=true' ' 88 test_when_finished "git reset --hard && git checkout initial" && 89 test_config merge.verifySignatures true && 90 test_must_fail git merge --ff-only side-untrusted 2>mergeerror && 91 - test_i18ngrep "has an untrusted GPG signature" mergeerror 92 ' 93 94 test_expect_success GPG 'merge commit with untrusted signature with merge.verifySignatures=true and minTrustLevel' ' ··· 96 test_config merge.verifySignatures true && 97 test_config gpg.minTrustLevel marginal && 98 test_must_fail git merge --ff-only side-untrusted 2>mergeerror && 99 - test_i18ngrep "has an untrusted GPG signature" mergeerror 100 ' 101 102 test_expect_success GPG 'merge signed commit with verification' ' 103 test_when_finished "git reset --hard && git checkout initial" && 104 git merge --verbose --ff-only --verify-signatures side-signed >mergeoutput && 105 - test_i18ngrep "has a good GPG signature" mergeoutput 106 ' 107 108 test_expect_success GPG 'merge signed commit with merge.verifySignatures=true' ' 109 test_when_finished "git reset --hard && git checkout initial" && 110 test_config merge.verifySignatures true && 111 git merge --verbose --ff-only side-signed >mergeoutput && 112 - test_i18ngrep "has a good GPG signature" mergeoutput 113 ' 114 115 test_expect_success GPG 'merge commit with bad signature without verification' ' ··· 133 test_when_finished "git checkout initial" && 134 git checkout --orphan unborn && 135 test_must_fail git merge --verify-signatures side-unsigned 2>mergeerror && 136 - test_i18ngrep "does not have a GPG signature" mergeerror 137 ' 138 139 test_done
··· 41 test_expect_success GPG 'merge unsigned commit with verification' ' 42 test_when_finished "git reset --hard && git checkout initial" && 43 test_must_fail git merge --ff-only --verify-signatures side-unsigned 2>mergeerror && 44 + test_grep "does not have a GPG signature" mergeerror 45 ' 46 47 test_expect_success GPG 'merge unsigned commit with merge.verifySignatures=true' ' 48 test_when_finished "git reset --hard && git checkout initial" && 49 test_config merge.verifySignatures true && 50 test_must_fail git merge --ff-only side-unsigned 2>mergeerror && 51 + test_grep "does not have a GPG signature" mergeerror 52 ' 53 54 test_expect_success GPG 'merge commit with bad signature with verification' ' 55 test_when_finished "git reset --hard && git checkout initial" && 56 test_must_fail git merge --ff-only --verify-signatures $(cat forged.commit) 2>mergeerror && 57 + test_grep "has a bad GPG signature" mergeerror 58 ' 59 60 test_expect_success GPG 'merge commit with bad signature with merge.verifySignatures=true' ' 61 test_when_finished "git reset --hard && git checkout initial" && 62 test_config merge.verifySignatures true && 63 test_must_fail git merge --ff-only $(cat forged.commit) 2>mergeerror && 64 + test_grep "has a bad GPG signature" mergeerror 65 ' 66 67 test_expect_success GPG 'merge commit with untrusted signature with verification' ' 68 test_when_finished "git reset --hard && git checkout initial" && 69 test_must_fail git merge --ff-only --verify-signatures side-untrusted 2>mergeerror && 70 + test_grep "has an untrusted GPG signature" mergeerror 71 ' 72 73 test_expect_success GPG 'merge commit with untrusted signature with verification and high minTrustLevel' ' 74 test_when_finished "git reset --hard && git checkout initial" && 75 test_config gpg.minTrustLevel marginal && 76 test_must_fail git merge --ff-only --verify-signatures side-untrusted 2>mergeerror && 77 + test_grep "has an untrusted GPG signature" mergeerror 78 ' 79 80 test_expect_success GPG 'merge commit with untrusted signature with verification and low minTrustLevel' ' 81 test_when_finished "git reset --hard && git checkout initial" && 82 test_config gpg.minTrustLevel undefined && 83 git merge --ff-only --verify-signatures side-untrusted >mergeoutput && 84 + test_grep "has a good GPG signature" mergeoutput 85 ' 86 87 test_expect_success GPG 'merge commit with untrusted signature with merge.verifySignatures=true' ' 88 test_when_finished "git reset --hard && git checkout initial" && 89 test_config merge.verifySignatures true && 90 test_must_fail git merge --ff-only side-untrusted 2>mergeerror && 91 + test_grep "has an untrusted GPG signature" mergeerror 92 ' 93 94 test_expect_success GPG 'merge commit with untrusted signature with merge.verifySignatures=true and minTrustLevel' ' ··· 96 test_config merge.verifySignatures true && 97 test_config gpg.minTrustLevel marginal && 98 test_must_fail git merge --ff-only side-untrusted 2>mergeerror && 99 + test_grep "has an untrusted GPG signature" mergeerror 100 ' 101 102 test_expect_success GPG 'merge signed commit with verification' ' 103 test_when_finished "git reset --hard && git checkout initial" && 104 git merge --verbose --ff-only --verify-signatures side-signed >mergeoutput && 105 + test_grep "has a good GPG signature" mergeoutput 106 ' 107 108 test_expect_success GPG 'merge signed commit with merge.verifySignatures=true' ' 109 test_when_finished "git reset --hard && git checkout initial" && 110 test_config merge.verifySignatures true && 111 git merge --verbose --ff-only side-signed >mergeoutput && 112 + test_grep "has a good GPG signature" mergeoutput 113 ' 114 115 test_expect_success GPG 'merge commit with bad signature without verification' ' ··· 133 test_when_finished "git checkout initial" && 134 git checkout --orphan unborn && 135 test_must_fail git merge --verify-signatures side-unsigned 2>mergeerror && 136 + test_grep "does not have a GPG signature" mergeerror 137 ' 138 139 test_done
+2 -2
t/t7703-repack-geometric.sh
··· 23 cd geometric && 24 25 git repack --write-midx --geometric 2 >out && 26 - test_i18ngrep "Nothing new to pack" out 27 ) 28 ' 29 ··· 38 39 git repack --geometric 2 >out && 40 41 - test_i18ngrep "Nothing new to pack" out 42 ) 43 ' 44
··· 23 cd geometric && 24 25 git repack --write-midx --geometric 2 >out && 26 + test_grep "Nothing new to pack" out 27 ) 28 ' 29 ··· 38 39 git repack --geometric 2 >out && 40 41 + test_grep "Nothing new to pack" out 42 ) 43 ' 44
+2 -2
t/t7800-difftool.sh
··· 28 29 test_expect_success 'basic usage requires no repo' ' 30 test_expect_code 129 git difftool -h >output && 31 - test_i18ngrep ^usage: output && 32 # create a ceiling directory to prevent Git from finding a repo 33 mkdir -p not/repo && 34 test_when_finished rm -r not && 35 test_expect_code 129 \ 36 env GIT_CEILING_DIRECTORIES="$(pwd)/not" \ 37 git -C not/repo difftool -h >output && 38 - test_i18ngrep ^usage: output 39 ' 40 41 # Create a file on main and change it on branch
··· 28 29 test_expect_success 'basic usage requires no repo' ' 30 test_expect_code 129 git difftool -h >output && 31 + test_grep ^usage: output && 32 # create a ceiling directory to prevent Git from finding a repo 33 mkdir -p not/repo && 34 test_when_finished rm -r not && 35 test_expect_code 129 \ 36 env GIT_CEILING_DIRECTORIES="$(pwd)/not" \ 37 git -C not/repo difftool -h >output && 38 + test_grep ^usage: output 39 ' 40 41 # Create a file on main and change it on branch
+2 -2
t/t7810-grep.sh
··· 1386 1387 test_expect_success 'grep --no-index complains of revs' ' 1388 test_must_fail git grep --no-index o main -- 2>err && 1389 - test_i18ngrep "cannot be used with revs" err 1390 ' 1391 1392 test_expect_success 'grep --no-index prefers paths to revs' ' ··· 1399 1400 test_expect_success 'grep --no-index does not "diagnose" revs' ' 1401 test_must_fail git grep --no-index o :1:hello.c 2>err && 1402 - test_i18ngrep ! -i "did you mean" err 1403 ' 1404 1405 cat >expected <<EOF
··· 1386 1387 test_expect_success 'grep --no-index complains of revs' ' 1388 test_must_fail git grep --no-index o main -- 2>err && 1389 + test_grep "cannot be used with revs" err 1390 ' 1391 1392 test_expect_success 'grep --no-index prefers paths to revs' ' ··· 1399 1400 test_expect_success 'grep --no-index does not "diagnose" revs' ' 1401 test_must_fail git grep --no-index o :1:hello.c 2>err && 1402 + test_grep ! -i "did you mean" err 1403 ' 1404 1405 cat >expected <<EOF
+1 -1
t/t7811-grep-open.sh
··· 63 64 test_expect_success 'git grep -O --cached' ' 65 test_must_fail git grep --cached -O GREP_PATTERN >out 2>msg && 66 - test_i18ngrep open-files-in-pager msg 67 ' 68 69 test_expect_success 'git grep -O --no-index' '
··· 63 64 test_expect_success 'git grep -O --cached' ' 65 test_must_fail git grep --cached -O GREP_PATTERN >out 2>msg && 66 + test_grep open-files-in-pager msg 67 ' 68 69 test_expect_success 'git grep -O --no-index' '
+1 -1
t/t7814-grep-recurse-submodules.sh
··· 348 { 349 test_expect_success "--recurse-submodules and $1 are incompatible" " 350 test_must_fail git grep -e. --recurse-submodules $1 2>actual && 351 - test_i18ngrep 'not supported with --recurse-submodules' actual 352 " 353 } 354
··· 348 { 349 test_expect_success "--recurse-submodules and $1 are incompatible" " 350 test_must_fail git grep -e. --recurse-submodules $1 2>actual && 351 + test_grep 'not supported with --recurse-submodules' actual 352 " 353 } 354
+2 -2
t/t7816-grep-binary-pattern.sh
··· 26 >stderr && 27 printf '$pattern' | q_to_nul >f && 28 test_must_fail env LC_ALL=\"$lc_all\" git grep $extra_flags -f f $flags a 2>stderr && 29 - test_i18ngrep ! 'This is only supported with -P under PCRE v2' stderr 30 " 31 elif test "$matches" = P 32 then ··· 34 >stderr && 35 printf '$pattern' | q_to_nul >f && 36 test_must_fail env LC_ALL=\"$lc_all\" git grep -f f $flags a 2>stderr && 37 - test_i18ngrep 'This is only supported with -P under PCRE v2' stderr 38 " 39 else 40 test_expect_success "PANIC: Test framework error. Unknown matches value $matches" 'false'
··· 26 >stderr && 27 printf '$pattern' | q_to_nul >f && 28 test_must_fail env LC_ALL=\"$lc_all\" git grep $extra_flags -f f $flags a 2>stderr && 29 + test_grep ! 'This is only supported with -P under PCRE v2' stderr 30 " 31 elif test "$matches" = P 32 then ··· 34 >stderr && 35 printf '$pattern' | q_to_nul >f && 36 test_must_fail env LC_ALL=\"$lc_all\" git grep -f f $flags a 2>stderr && 37 + test_grep 'This is only supported with -P under PCRE v2' stderr 38 " 39 else 40 test_expect_success "PANIC: Test framework error. Unknown matches value $matches" 'false'
+12 -12
t/t7900-maintenance.sh
··· 33 34 test_expect_success 'help text' ' 35 test_expect_code 129 git maintenance -h >actual && 36 - test_i18ngrep "usage: git maintenance <subcommand>" actual && 37 test_expect_code 129 git maintenance barf 2>err && 38 - test_i18ngrep "unknown subcommand: \`barf'\''" err && 39 - test_i18ngrep "usage: git maintenance" err && 40 test_expect_code 129 git maintenance 2>err && 41 - test_i18ngrep "error: need a subcommand" err && 42 - test_i18ngrep "usage: git maintenance" err 43 ' 44 45 test_expect_success 'run [--auto|--quiet]' ' ··· 131 132 test_expect_success 'run --task=bogus' ' 133 test_must_fail git maintenance run --task=bogus 2>err && 134 - test_i18ngrep "is not a valid task" err 135 ' 136 137 test_expect_success 'run --task duplicate' ' 138 test_must_fail git maintenance run --task=gc --task=gc 2>err && 139 - test_i18ngrep "cannot be selected multiple times" err 140 ' 141 142 test_expect_success 'run --task=prefetch with no remotes' ' ··· 377 378 test_expect_success '--auto and --schedule incompatible' ' 379 test_must_fail git maintenance run --auto --schedule=daily 2>err && 380 - test_i18ngrep "at most one" err 381 ' 382 383 test_expect_success 'invalid --schedule value' ' 384 test_must_fail git maintenance run --schedule=annually 2>err && 385 - test_i18ngrep "unrecognized --schedule" err 386 ' 387 388 test_expect_success '--schedule inheritance weekly -> daily -> hourly' ' ··· 576 577 test_expect_success 'start --scheduler=<scheduler>' ' 578 test_expect_code 129 git maintenance start --scheduler=foo 2>err && 579 - test_i18ngrep "unrecognized --scheduler argument" err && 580 581 test_expect_code 129 git maintenance start --no-scheduler 2>err && 582 - test_i18ngrep "unknown option" err && 583 584 test_expect_code 128 \ 585 env GIT_TEST_MAINT_SCHEDULER="launchctl:true,schtasks:true" \ 586 git maintenance start --scheduler=crontab 2>err && 587 - test_i18ngrep "fatal: crontab scheduler is not available" err 588 ' 589 590 test_expect_success 'start from empty cron table' '
··· 33 34 test_expect_success 'help text' ' 35 test_expect_code 129 git maintenance -h >actual && 36 + test_grep "usage: git maintenance <subcommand>" actual && 37 test_expect_code 129 git maintenance barf 2>err && 38 + test_grep "unknown subcommand: \`barf'\''" err && 39 + test_grep "usage: git maintenance" err && 40 test_expect_code 129 git maintenance 2>err && 41 + test_grep "error: need a subcommand" err && 42 + test_grep "usage: git maintenance" err 43 ' 44 45 test_expect_success 'run [--auto|--quiet]' ' ··· 131 132 test_expect_success 'run --task=bogus' ' 133 test_must_fail git maintenance run --task=bogus 2>err && 134 + test_grep "is not a valid task" err 135 ' 136 137 test_expect_success 'run --task duplicate' ' 138 test_must_fail git maintenance run --task=gc --task=gc 2>err && 139 + test_grep "cannot be selected multiple times" err 140 ' 141 142 test_expect_success 'run --task=prefetch with no remotes' ' ··· 377 378 test_expect_success '--auto and --schedule incompatible' ' 379 test_must_fail git maintenance run --auto --schedule=daily 2>err && 380 + test_grep "at most one" err 381 ' 382 383 test_expect_success 'invalid --schedule value' ' 384 test_must_fail git maintenance run --schedule=annually 2>err && 385 + test_grep "unrecognized --schedule" err 386 ' 387 388 test_expect_success '--schedule inheritance weekly -> daily -> hourly' ' ··· 576 577 test_expect_success 'start --scheduler=<scheduler>' ' 578 test_expect_code 129 git maintenance start --scheduler=foo 2>err && 579 + test_grep "unrecognized --scheduler argument" err && 580 581 test_expect_code 129 git maintenance start --no-scheduler 2>err && 582 + test_grep "unknown option" err && 583 584 test_expect_code 128 \ 585 env GIT_TEST_MAINT_SCHEDULER="launchctl:true,schtasks:true" \ 586 git maintenance start --scheduler=crontab 2>err && 587 + test_grep "fatal: crontab scheduler is not available" err 588 ' 589 590 test_expect_success 'start from empty cron table' '
+1 -1
t/t8003-blame-corner-cases.sh
··· 207 208 test_expect_success 'blame -L with invalid start' ' 209 test_must_fail git blame -L5 tres 2>errors && 210 - test_i18ngrep "has only 2 lines" errors 211 ' 212 213 test_expect_success 'blame -L with invalid end' '
··· 207 208 test_expect_success 'blame -L with invalid start' ' 209 test_must_fail git blame -L5 tres 2>errors && 210 + test_grep "has only 2 lines" errors 211 ' 212 213 test_expect_success 'blame -L with invalid end' '
+3 -3
t/t8013-blame-ignore-revs.sh
··· 129 ' 130 test_expect_success bad_files_and_revs ' 131 test_must_fail git blame file --ignore-rev NOREV 2>err && 132 - test_i18ngrep "cannot find revision NOREV to ignore" err && 133 134 test_must_fail git blame file --ignore-revs-file NOFILE 2>err && 135 - test_i18ngrep "could not open.*: NOFILE" err && 136 137 echo NOREV >ignore_norev && 138 test_must_fail git blame file --ignore-revs-file ignore_norev 2>err && 139 - test_i18ngrep "invalid object name: NOREV" err 140 ' 141 142 # For ignored revs that have added 'unblamable' lines, mark those lines with a
··· 129 ' 130 test_expect_success bad_files_and_revs ' 131 test_must_fail git blame file --ignore-rev NOREV 2>err && 132 + test_grep "cannot find revision NOREV to ignore" err && 133 134 test_must_fail git blame file --ignore-revs-file NOFILE 2>err && 135 + test_grep "could not open.*: NOFILE" err && 136 137 echo NOREV >ignore_norev && 138 test_must_fail git blame file --ignore-revs-file ignore_norev 2>err && 139 + test_grep "invalid object name: NOREV" err 140 ' 141 142 # For ignored revs that have added 'unblamable' lines, mark those lines with a
+4 -4
t/t9001-send-email.sh
··· 371 --smtp-server="$(pwd)/fake.sendmail" \ 372 --to=to@example.com \ 373 $patches </dev/null 2>errors && 374 - test_i18ngrep "tell me who you are" errors 375 ) 376 ' 377 ··· 2062 -c sendemail.aliasesfile=default-aliases \ 2063 -c sendemail.cloud.aliasesfile=cloud-aliases \ 2064 send-email -1 2>stderr && 2065 - test_i18ngrep "cloud-aliases" stderr 2066 ' 2067 2068 test_sendmail_aliases () { ··· 2427 --to=nobody@example.com \ 2428 --smtp-server="$(pwd)/../fake.sendmail" \ 2429 ../another.patch 2>err && 2430 - test_i18ngrep "rejected by sendemail-validate hook" err 2431 ) 2432 ' 2433 ··· 2483 --to=nobody@example.com \ 2484 --smtp-server="$(pwd)/fake.sendmail" \ 2485 HEAD^ 2>err && 2486 - test_i18ngrep "found configuration options for '"'"sendmail"'"'" err 2487 ' 2488 2489 test_expect_success $PREREQ 'test that sendmail config rejection is specific' '
··· 371 --smtp-server="$(pwd)/fake.sendmail" \ 372 --to=to@example.com \ 373 $patches </dev/null 2>errors && 374 + test_grep "tell me who you are" errors 375 ) 376 ' 377 ··· 2062 -c sendemail.aliasesfile=default-aliases \ 2063 -c sendemail.cloud.aliasesfile=cloud-aliases \ 2064 send-email -1 2>stderr && 2065 + test_grep "cloud-aliases" stderr 2066 ' 2067 2068 test_sendmail_aliases () { ··· 2427 --to=nobody@example.com \ 2428 --smtp-server="$(pwd)/../fake.sendmail" \ 2429 ../another.patch 2>err && 2430 + test_grep "rejected by sendemail-validate hook" err 2431 ) 2432 ' 2433 ··· 2483 --to=nobody@example.com \ 2484 --smtp-server="$(pwd)/fake.sendmail" \ 2485 HEAD^ 2>err && 2486 + test_grep "found configuration options for '"'"sendmail"'"'" err 2487 ' 2488 2489 test_expect_success $PREREQ 'test that sendmail config rejection is specific' '
+13 -13
t/t9300-fast-import.sh
··· 2879 COMMIT 2880 M 100644 :403x hello.c 2881 EOF 2882 - test_i18ngrep "space after mark" err 2883 ' 2884 2885 # inline is misspelled; fast-import thinks it is some unknown dataref ··· 2895 inline 2896 BLOB 2897 EOF 2898 - test_i18ngrep "nvalid dataref" err 2899 ' 2900 2901 test_expect_success 'S: filemodify with garbage after sha1 must fail' ' ··· 2908 COMMIT 2909 M 100644 ${sha1}x hello.c 2910 EOF 2911 - test_i18ngrep "space after SHA1" err 2912 ' 2913 2914 # ··· 2923 COMMIT 2924 N :202x :302 2925 EOF 2926 - test_i18ngrep "space after mark" err 2927 ' 2928 2929 test_expect_success 'S: notemodify with garbage after inline dataref must fail' ' ··· 2938 note blob 2939 BLOB 2940 EOF 2941 - test_i18ngrep "nvalid dataref" err 2942 ' 2943 2944 test_expect_success 'S: notemodify with garbage after sha1 dataref must fail' ' ··· 2951 COMMIT 2952 N ${sha1}x :302 2953 EOF 2954 - test_i18ngrep "space after SHA1" err 2955 ' 2956 2957 # ··· 2966 COMMIT 2967 N :202 :302x 2968 EOF 2969 - test_i18ngrep "after mark" err 2970 ' 2971 2972 # ··· 2999 EOF 3000 3001 # now evaluate the error 3002 - test_i18ngrep "after mark" err 3003 ' 3004 3005 ··· 3018 merge :303x 3019 M 100644 :403 hello.c 3020 EOF 3021 - test_i18ngrep "after mark" err 3022 ' 3023 3024 # ··· 3033 tag S 3034 TAG 3035 EOF 3036 - test_i18ngrep "after mark" err 3037 ' 3038 3039 # ··· 3043 test_must_fail git fast-import --import-marks=marks <<-EOF 2>err && 3044 cat-blob :403x 3045 EOF 3046 - test_i18ngrep "after mark" err 3047 ' 3048 3049 # ··· 3053 test_must_fail git fast-import --import-marks=marks <<-EOF 2>err && 3054 ls :302x hello.c 3055 EOF 3056 - test_i18ngrep "space after mark" err 3057 ' 3058 3059 test_expect_success 'S: ls with garbage after sha1 must fail' ' ··· 3061 test_must_fail git fast-import --import-marks=marks <<-EOF 2>err && 3062 ls ${sha1}x hello.c 3063 EOF 3064 - test_i18ngrep "space after tree-ish" err 3065 ' 3066 3067 ###
··· 2879 COMMIT 2880 M 100644 :403x hello.c 2881 EOF 2882 + test_grep "space after mark" err 2883 ' 2884 2885 # inline is misspelled; fast-import thinks it is some unknown dataref ··· 2895 inline 2896 BLOB 2897 EOF 2898 + test_grep "nvalid dataref" err 2899 ' 2900 2901 test_expect_success 'S: filemodify with garbage after sha1 must fail' ' ··· 2908 COMMIT 2909 M 100644 ${sha1}x hello.c 2910 EOF 2911 + test_grep "space after SHA1" err 2912 ' 2913 2914 # ··· 2923 COMMIT 2924 N :202x :302 2925 EOF 2926 + test_grep "space after mark" err 2927 ' 2928 2929 test_expect_success 'S: notemodify with garbage after inline dataref must fail' ' ··· 2938 note blob 2939 BLOB 2940 EOF 2941 + test_grep "nvalid dataref" err 2942 ' 2943 2944 test_expect_success 'S: notemodify with garbage after sha1 dataref must fail' ' ··· 2951 COMMIT 2952 N ${sha1}x :302 2953 EOF 2954 + test_grep "space after SHA1" err 2955 ' 2956 2957 # ··· 2966 COMMIT 2967 N :202 :302x 2968 EOF 2969 + test_grep "after mark" err 2970 ' 2971 2972 # ··· 2999 EOF 3000 3001 # now evaluate the error 3002 + test_grep "after mark" err 3003 ' 3004 3005 ··· 3018 merge :303x 3019 M 100644 :403 hello.c 3020 EOF 3021 + test_grep "after mark" err 3022 ' 3023 3024 # ··· 3033 tag S 3034 TAG 3035 EOF 3036 + test_grep "after mark" err 3037 ' 3038 3039 # ··· 3043 test_must_fail git fast-import --import-marks=marks <<-EOF 2>err && 3044 cat-blob :403x 3045 EOF 3046 + test_grep "after mark" err 3047 ' 3048 3049 # ··· 3053 test_must_fail git fast-import --import-marks=marks <<-EOF 2>err && 3054 ls :302x hello.c 3055 EOF 3056 + test_grep "space after mark" err 3057 ' 3058 3059 test_expect_success 'S: ls with garbage after sha1 must fail' ' ··· 3061 test_must_fail git fast-import --import-marks=marks <<-EOF 2>err && 3062 ls ${sha1}x hello.c 3063 EOF 3064 + test_grep "space after tree-ish" err 3065 ' 3066 3067 ###
+9 -9
t/t9800-git-p4-basic.sh
··· 54 ( 55 cd "$git" && 56 test_must_fail git p4 sync 2>errs && 57 - test_i18ngrep "Perhaps you never did" errs 58 ) 59 ' 60 ··· 86 test_commit head && 87 git p4 sync --branch=depot //depot@all && 88 git p4 sync --branch=refs/remotes/p4/depot >out && 89 - test_i18ngrep "No changes to import!" out 90 ) 91 ' 92 ··· 101 test_commit head && 102 git p4 sync --branch=branch1 //depot@all && 103 git p4 sync --branch=p4/branch1 >out && 104 - test_i18ngrep "No changes to import!" out 105 ) 106 ' 107 ··· 116 test_commit head && 117 git p4 sync --branch=p4/some/path //depot@all && 118 git p4 sync --branch=some/path >out && 119 - test_i18ngrep "No changes to import!" out 120 ) 121 ' 122 ··· 131 test_commit head && 132 git p4 sync --branch=refs/remotes/someremote/depot //depot@all && 133 git p4 sync --branch=refs/remotes/someremote/depot >out && 134 - test_i18ngrep "No changes to import!" out 135 ) 136 ' 137 ··· 143 test_commit head && 144 git p4 sync --branch=depot //depot@all && 145 test_must_fail git p4 sync --branch=depot2 2>errs && 146 - test_i18ngrep "Perhaps you never did" errs 147 ) 148 ' 149 ··· 155 test_commit head && 156 git p4 sync --branch=depot //depot@all && 157 test_must_fail git p4 sync --branch=refs/heads/master 2>errs && 158 - test_i18ngrep "Perhaps you never did" errs 159 ) 160 ' 161 ··· 290 export PATH && 291 test_expect_code 1 git p4 clone --dest="$git" //depot >errs 2>&1 292 ) && 293 - test_i18ngrep ! Traceback errs 294 ' 295 296 # Hide a file from p4d, make sure we catch its complaint. This won't fail in ··· 301 mv "$db"/depot/file1,v "$db"/depot/file1,v,hidden && 302 test_when_finished cleanup_git && 303 test_expect_code 1 git p4 clone --dest="$git" //depot@1 >out 2>err && 304 - test_i18ngrep "Error from p4 print" err 305 ' 306 307 test_expect_success 'clone --bare should make a bare repository' '
··· 54 ( 55 cd "$git" && 56 test_must_fail git p4 sync 2>errs && 57 + test_grep "Perhaps you never did" errs 58 ) 59 ' 60 ··· 86 test_commit head && 87 git p4 sync --branch=depot //depot@all && 88 git p4 sync --branch=refs/remotes/p4/depot >out && 89 + test_grep "No changes to import!" out 90 ) 91 ' 92 ··· 101 test_commit head && 102 git p4 sync --branch=branch1 //depot@all && 103 git p4 sync --branch=p4/branch1 >out && 104 + test_grep "No changes to import!" out 105 ) 106 ' 107 ··· 116 test_commit head && 117 git p4 sync --branch=p4/some/path //depot@all && 118 git p4 sync --branch=some/path >out && 119 + test_grep "No changes to import!" out 120 ) 121 ' 122 ··· 131 test_commit head && 132 git p4 sync --branch=refs/remotes/someremote/depot //depot@all && 133 git p4 sync --branch=refs/remotes/someremote/depot >out && 134 + test_grep "No changes to import!" out 135 ) 136 ' 137 ··· 143 test_commit head && 144 git p4 sync --branch=depot //depot@all && 145 test_must_fail git p4 sync --branch=depot2 2>errs && 146 + test_grep "Perhaps you never did" errs 147 ) 148 ' 149 ··· 155 test_commit head && 156 git p4 sync --branch=depot //depot@all && 157 test_must_fail git p4 sync --branch=refs/heads/master 2>errs && 158 + test_grep "Perhaps you never did" errs 159 ) 160 ' 161 ··· 290 export PATH && 291 test_expect_code 1 git p4 clone --dest="$git" //depot >errs 2>&1 292 ) && 293 + test_grep ! Traceback errs 294 ' 295 296 # Hide a file from p4d, make sure we catch its complaint. This won't fail in ··· 301 mv "$db"/depot/file1,v "$db"/depot/file1,v,hidden && 302 test_when_finished cleanup_git && 303 test_expect_code 1 git p4 clone --dest="$git" //depot@1 >out 2>err && 304 + test_grep "Error from p4 print" err 305 ' 306 307 test_expect_success 'clone --bare should make a bare repository' '
+1 -1
t/t9801-git-p4-branch.sh
··· 135 ( 136 cd "$git" && 137 git p4 sync --branch=depot/branch2 >out && 138 - test_i18ngrep "No changes to import!" out 139 ) 140 ' 141
··· 135 ( 136 cd "$git" && 137 git p4 sync --branch=depot/branch2 >out && 138 + test_grep "No changes to import!" out 139 ) 140 ' 141
+6 -6
t/t9807-git-p4-submit.sh
··· 75 test_commit "dry-run1" && 76 test_commit "dry-run2" && 77 git p4 submit --dry-run >out && 78 - test_i18ngrep "Would apply" out 79 ) && 80 ( 81 cd "$cli" && ··· 99 git commit -m "dry-run2" dry-run2 && 100 git tag -m "dry-run-tag1" dry-run-tag1 HEAD^ && 101 git p4 submit --dry-run --export-labels >out && 102 - test_i18ngrep "Would create p4 label" out 103 ) && 104 ( 105 cd "$cli" && ··· 443 # build a job 444 make_job $(cat jobname) && 445 test_must_fail git p4 submit 2>err && 446 - test_i18ngrep "Unknown field name" err 447 ) && 448 ( 449 cd "$cli" && ··· 461 git add prep-only-add && 462 git commit -m "prep only add" && 463 git p4 submit --prepare-p4-only >out && 464 - test_i18ngrep "prepared for submission" out && 465 - test_i18ngrep "must be deleted" out && 466 - test_i18ngrep ! "everything below this line is just the diff" out 467 ) && 468 ( 469 cd "$cli" &&
··· 75 test_commit "dry-run1" && 76 test_commit "dry-run2" && 77 git p4 submit --dry-run >out && 78 + test_grep "Would apply" out 79 ) && 80 ( 81 cd "$cli" && ··· 99 git commit -m "dry-run2" dry-run2 && 100 git tag -m "dry-run-tag1" dry-run-tag1 HEAD^ && 101 git p4 submit --dry-run --export-labels >out && 102 + test_grep "Would create p4 label" out 103 ) && 104 ( 105 cd "$cli" && ··· 443 # build a job 444 make_job $(cat jobname) && 445 test_must_fail git p4 submit 2>err && 446 + test_grep "Unknown field name" err 447 ) && 448 ( 449 cd "$cli" && ··· 461 git add prep-only-add && 462 git commit -m "prep only add" && 463 git p4 submit --prepare-p4-only >out && 464 + test_grep "prepared for submission" out && 465 + test_grep "must be deleted" out && 466 + test_grep ! "everything below this line is just the diff" out 467 ) && 468 ( 469 cd "$cli" &&
+6 -6
t/t9815-git-p4-submit-fail.sh
··· 35 git add file1 && 36 git commit -m "line3 in file1 will conflict" && 37 test_expect_code 1 git p4 submit >out && 38 - test_i18ngrep "No commits applied" out 39 ) 40 ' 41 ··· 58 git add file1 && 59 git commit -m "line4 in file1 will conflict" && 60 test_expect_code 1 git p4 submit >out && 61 - test_i18ngrep "Applied only the commits" out 62 ) 63 ' 64 ··· 81 # but this commit is okay 82 test_commit "okay_commit_after_skip" && 83 echo s | test_expect_code 1 git p4 submit >out && 84 - test_i18ngrep "Applied only the commits" out 85 ) 86 ' 87 ··· 104 # but this commit is okay 105 test_commit "okay_commit_after_quit" && 106 echo q | test_expect_code 1 git p4 submit >out && 107 - test_i18ngrep "No commits applied" out 108 ) 109 ' 110 ··· 144 # but this commit is okay 145 test_commit "okay_commit_after_auto_skip" && 146 test_expect_code 1 git p4 submit --conflict=skip >out && 147 - test_i18ngrep "Applied only the commits" out 148 ) 149 ' 150 ··· 167 # but this commit is okay 168 test_commit "okay_commit_after_auto_quit" && 169 test_expect_code 1 git p4 submit --conflict=quit >out && 170 - test_i18ngrep "No commits applied" out 171 ) 172 ' 173
··· 35 git add file1 && 36 git commit -m "line3 in file1 will conflict" && 37 test_expect_code 1 git p4 submit >out && 38 + test_grep "No commits applied" out 39 ) 40 ' 41 ··· 58 git add file1 && 59 git commit -m "line4 in file1 will conflict" && 60 test_expect_code 1 git p4 submit >out && 61 + test_grep "Applied only the commits" out 62 ) 63 ' 64 ··· 81 # but this commit is okay 82 test_commit "okay_commit_after_skip" && 83 echo s | test_expect_code 1 git p4 submit >out && 84 + test_grep "Applied only the commits" out 85 ) 86 ' 87 ··· 104 # but this commit is okay 105 test_commit "okay_commit_after_quit" && 106 echo q | test_expect_code 1 git p4 submit >out && 107 + test_grep "No commits applied" out 108 ) 109 ' 110 ··· 144 # but this commit is okay 145 test_commit "okay_commit_after_auto_skip" && 146 test_expect_code 1 git p4 submit --conflict=skip >out && 147 + test_grep "Applied only the commits" out 148 ) 149 ' 150 ··· 167 # but this commit is okay 168 test_commit "okay_commit_after_auto_quit" && 169 test_expect_code 1 git p4 submit --conflict=quit >out && 170 + test_grep "No commits applied" out 171 ) 172 ' 173