@@ -118,17 +118,17 @@ test_expect_success check '
# If an expanded ident ever gets into the repository, we want to make sure that
# it is collapsed before being expanded again on checkout
test_expect_success expanded_in_repo '
- {
- echo "File with expanded keywords"
- echo "\$Id\$"
- echo "\$Id:\$"
- echo "\$Id: 0000000000000000000000000000000000000000 \$"
- echo "\$Id: NoSpaceAtEnd\$"
- echo "\$Id:NoSpaceAtFront \$"
- echo "\$Id:NoSpaceAtEitherEnd\$"
- echo "\$Id: NoTerminatingSymbol"
- echo "\$Id: Foreign Commit With Spaces \$"
- } >expanded-keywords.0 &&
+ cat >expanded-keywords.0 <<-\EOF &&
+ File with expanded keywords
+ $Id$
+ $Id:$
+ $Id: 0000000000000000000000000000000000000000 $
+ $Id: NoSpaceAtEnd$
+ $Id:NoSpaceAtFront $
+ $Id:NoSpaceAtEitherEnd$
+ $Id: NoTerminatingSymbol
+ $Id: Foreign Commit With Spaces $
+ EOF
{
cat expanded-keywords.0 &&
@@ -139,17 +139,17 @@ test_expect_success expanded_in_repo '
git commit -m "File with keywords expanded" &&
id=$(git rev-parse --verify :expanded-keywords) &&
- {
- echo "File with expanded keywords"
- echo "\$Id: $id \$"
- echo "\$Id: $id \$"
- echo "\$Id: $id \$"
- echo "\$Id: $id \$"
- echo "\$Id: $id \$"
- echo "\$Id: $id \$"
- echo "\$Id: NoTerminatingSymbol"
- echo "\$Id: Foreign Commit With Spaces \$"
- } >expected-output.0 &&
+ cat >expected-output.0 <<-EOF &&
+ File with expanded keywords
+ \$Id: $id \$
+ \$Id: $id \$
+ \$Id: $id \$
+ \$Id: $id \$
+ \$Id: $id \$
+ \$Id: $id \$
+ \$Id: NoTerminatingSymbol
+ \$Id: Foreign Commit With Spaces \$
+ EOF
{
cat expected-output.0 &&
printf "\$Id: NoTerminatingSymbolAtEOF"
@@ -18,7 +18,10 @@ test_expect_success 'git apply --numstat - < patch' '
'
test_expect_success 'git apply --numstat - < patch patch' '
- for i in 1 2; do echo "1 1 text"; done >expect &&
+ cat >expect <<-\EOF &&
+ 1 1 text
+ 1 1 text
+ EOF
git apply --numstat - < patch patch >actual &&
test_cmp expect actual
'
@@ -40,11 +40,11 @@ test_expect_success "clone and setup child repos" '
git config branch.main.remote two &&
git config branch.main.merge refs/heads/one &&
mkdir -p .git/remotes &&
- {
- echo "URL: ../two/.git/"
- echo "Pull: refs/heads/main:refs/heads/two"
- echo "Pull: refs/heads/one:refs/heads/one"
- } >.git/remotes/two
+ cat >.git/remotes/two <<-\EOF
+ URL: ../two/.git/
+ Pull: refs/heads/main:refs/heads/two
+ Pull: refs/heads/one:refs/heads/one
+ EOF
) &&
git clone . bundle &&
git clone . seven
@@ -105,19 +105,19 @@ test_expect_success setup '
remotes="$remotes config-glob" &&
mkdir -p .git/remotes &&
- {
- echo "URL: ../.git/"
- echo "Pull: refs/heads/main:remotes/rem/main"
- echo "Pull: refs/heads/one:remotes/rem/one"
- echo "Pull: two:remotes/rem/two"
- echo "Pull: refs/heads/three:remotes/rem/three"
- } >.git/remotes/remote-explicit &&
+ cat >.git/remotes/remote-explicit <<-\EOF &&
+ URL: ../.git/
+ Pull: refs/heads/main:remotes/rem/main
+ Pull: refs/heads/one:remotes/rem/one
+ Pull: two:remotes/rem/two
+ Pull: refs/heads/three:remotes/rem/three
+ EOF
remotes="$remotes remote-explicit" &&
- {
- echo "URL: ../.git/"
- echo "Pull: refs/heads/*:refs/remotes/rem/*"
- } >.git/remotes/remote-glob &&
+ cat >.git/remotes/remote-glob <<-\EOF &&
+ URL: ../.git/
+ Pull: refs/heads/*:refs/remotes/rem/*
+ EOF
remotes="$remotes remote-glob" &&
mkdir -p .git/branches &&
@@ -62,10 +62,10 @@ test_expect_success setup '
test_expect_success merge '
- {
- echo "binary -merge"
- echo "union merge=union"
- } >.gitattributes &&
+ cat >.gitattributes <<-\EOF &&
+ binary -merge
+ union merge=union
+ EOF
if git merge main
then
@@ -51,10 +51,10 @@ test_expect_success 'set up mode change in both branches' '
: >file2 &&
git add file2 &&
git commit -m b2 &&
- {
- echo "100755 $H 2 file2"
- echo "100644 $H 3 file2"
- } >expect
+ cat >expect <<-EOF
+ 100755 $H 2 file2
+ 100644 $H 3 file2
+ EOF
'
do_both_modes () {
@@ -31,28 +31,28 @@ int main(int argc, const char **argv)
EOF
test_expect_success setup '
- {
- echo foo mmap bar
- echo foo_mmap bar
- echo foo_mmap bar mmap
- echo foo mmap bar_mmap
- echo foo_mmap bar mmap baz
- } >file &&
- {
- echo Hello world
- echo HeLLo world
- echo Hello_world
- echo HeLLo_world
- } >hello_world &&
- {
- echo "a+b*c"
- echo "a+bc"
- echo "abc"
- } >ab &&
- {
- echo d &&
- echo 0
- } >d0 &&
+ cat >file <<-\EOF &&
+ foo mmap bar
+ foo_mmap bar
+ foo_mmap bar mmap
+ foo mmap bar_mmap
+ foo_mmap bar mmap baz
+ EOF
+ cat >hello_world <<-\EOF &&
+ Hello world
+ HeLLo world
+ Hello_world
+ HeLLo_world
+ EOF
+ cat >ab <<-\EOF &&
+ a+b*c
+ a+bc
+ abc
+ EOF
+ cat >d0 <<-\EOF &&
+ d
+ 0
+ EOF
echo vvv >v &&
echo ww w >w &&
echo x x xx x >x &&
@@ -63,13 +63,13 @@ test_expect_success setup '
echo vvv >t/v &&
mkdir t/a &&
echo vvv >t/a/v &&
- {
- echo "line without leading space1"
- echo " line with leading space1"
- echo " line with leading space2"
- echo " line with leading space3"
- echo "line without leading space2"
- } >space &&
+ qz_to_tab_space >space <<-\EOF &&
+ line without leading space1
+ Zline with leading space1
+ Zline with leading space2
+ Zline with leading space3
+ line without leading space2
+ EOF
cat >hello.ps1 <<-\EOF &&
# No-op.
function dummy() {}
@@ -106,129 +106,129 @@ do
esac
test_expect_success "grep -w $L" '
- {
- echo ${HC}file:1:foo mmap bar
- echo ${HC}file:3:foo_mmap bar mmap
- echo ${HC}file:4:foo mmap bar_mmap
- echo ${HC}file:5:foo_mmap bar mmap baz
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}file:1:foo mmap bar
+ ${HC}file:3:foo_mmap bar mmap
+ ${HC}file:4:foo mmap bar_mmap
+ ${HC}file:5:foo_mmap bar mmap baz
+ EOF
git -c grep.linenumber=false grep -n -w -e mmap $H >actual &&
test_cmp expected actual
'
test_expect_success "grep -w $L (with --column)" '
- {
- echo ${HC}file:5:foo mmap bar
- echo ${HC}file:14:foo_mmap bar mmap
- echo ${HC}file:5:foo mmap bar_mmap
- echo ${HC}file:14:foo_mmap bar mmap baz
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}file:5:foo mmap bar
+ ${HC}file:14:foo_mmap bar mmap
+ ${HC}file:5:foo mmap bar_mmap
+ ${HC}file:14:foo_mmap bar mmap baz
+ EOF
git grep --column -w -e mmap $H >actual &&
test_cmp expected actual
'
test_expect_success "grep -w $L (with --column, extended OR)" '
- {
- echo ${HC}file:14:foo_mmap bar mmap
- echo ${HC}file:19:foo_mmap bar mmap baz
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}file:14:foo_mmap bar mmap
+ ${HC}file:19:foo_mmap bar mmap baz
+ EOF
git grep --column -w -e mmap$ --or -e baz $H >actual &&
test_cmp expected actual
'
test_expect_success "grep -w $L (with --column, --invert-match)" '
- {
- echo ${HC}file:1:foo mmap bar
- echo ${HC}file:1:foo_mmap bar
- echo ${HC}file:1:foo_mmap bar mmap
- echo ${HC}file:1:foo mmap bar_mmap
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}file:1:foo mmap bar
+ ${HC}file:1:foo_mmap bar
+ ${HC}file:1:foo_mmap bar mmap
+ ${HC}file:1:foo mmap bar_mmap
+ EOF
git grep --column --invert-match -w -e baz $H -- file >actual &&
test_cmp expected actual
'
test_expect_success "grep $L (with --column, --invert-match, extended OR)" '
- {
- echo ${HC}hello_world:6:HeLLo_world
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}hello_world:6:HeLLo_world
+ EOF
git grep --column --invert-match -e ll --or --not -e _ $H -- hello_world \
>actual &&
test_cmp expected actual
'
test_expect_success "grep $L (with --column, --invert-match, extended AND)" '
- {
- echo ${HC}hello_world:3:Hello world
- echo ${HC}hello_world:3:Hello_world
- echo ${HC}hello_world:6:HeLLo_world
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}hello_world:3:Hello world
+ ${HC}hello_world:3:Hello_world
+ ${HC}hello_world:6:HeLLo_world
+ EOF
git grep --column --invert-match --not -e _ --and --not -e ll $H -- hello_world \
>actual &&
test_cmp expected actual
'
test_expect_success "grep $L (with --column, double-negation)" '
- {
- echo ${HC}file:1:foo_mmap bar mmap baz
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}file:1:foo_mmap bar mmap baz
+ EOF
git grep --column --not \( --not -e foo --or --not -e baz \) $H -- file \
>actual &&
test_cmp expected actual
'
test_expect_success "grep -w $L (with --column, -C)" '
- {
- echo ${HC}file:5:foo mmap bar
- echo ${HC}file-foo_mmap bar
- echo ${HC}file:14:foo_mmap bar mmap
- echo ${HC}file:5:foo mmap bar_mmap
- echo ${HC}file:14:foo_mmap bar mmap baz
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}file:5:foo mmap bar
+ ${HC}file-foo_mmap bar
+ ${HC}file:14:foo_mmap bar mmap
+ ${HC}file:5:foo mmap bar_mmap
+ ${HC}file:14:foo_mmap bar mmap baz
+ EOF
git grep --column -w -C1 -e mmap $H >actual &&
test_cmp expected actual
'
test_expect_success "grep -w $L (with --line-number, --column)" '
- {
- echo ${HC}file:1:5:foo mmap bar
- echo ${HC}file:3:14:foo_mmap bar mmap
- echo ${HC}file:4:5:foo mmap bar_mmap
- echo ${HC}file:5:14:foo_mmap bar mmap baz
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}file:1:5:foo mmap bar
+ ${HC}file:3:14:foo_mmap bar mmap
+ ${HC}file:4:5:foo mmap bar_mmap
+ ${HC}file:5:14:foo_mmap bar mmap baz
+ EOF
git grep -n --column -w -e mmap $H >actual &&
test_cmp expected actual
'
test_expect_success "grep -w $L (with non-extended patterns, --column)" '
- {
- echo ${HC}file:5:foo mmap bar
- echo ${HC}file:10:foo_mmap bar
- echo ${HC}file:10:foo_mmap bar mmap
- echo ${HC}file:5:foo mmap bar_mmap
- echo ${HC}file:10:foo_mmap bar mmap baz
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}file:5:foo mmap bar
+ ${HC}file:10:foo_mmap bar
+ ${HC}file:10:foo_mmap bar mmap
+ ${HC}file:5:foo mmap bar_mmap
+ ${HC}file:10:foo_mmap bar mmap baz
+ EOF
git grep --column -w -e bar -e mmap $H >actual &&
test_cmp expected actual
'
test_expect_success "grep -w $L" '
- {
- echo ${HC}file:1:foo mmap bar
- echo ${HC}file:3:foo_mmap bar mmap
- echo ${HC}file:4:foo mmap bar_mmap
- echo ${HC}file:5:foo_mmap bar mmap baz
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}file:1:foo mmap bar
+ ${HC}file:3:foo_mmap bar mmap
+ ${HC}file:4:foo mmap bar_mmap
+ ${HC}file:5:foo_mmap bar mmap baz
+ EOF
git -c grep.linenumber=true grep -w -e mmap $H >actual &&
test_cmp expected actual
'
test_expect_success "grep -w $L" '
- {
- echo ${HC}file:foo mmap bar
- echo ${HC}file:foo_mmap bar mmap
- echo ${HC}file:foo mmap bar_mmap
- echo ${HC}file:foo_mmap bar mmap baz
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}file:foo mmap bar
+ ${HC}file:foo_mmap bar mmap
+ ${HC}file:foo mmap bar_mmap
+ ${HC}file:foo_mmap bar mmap baz
+ EOF
git -c grep.linenumber=true grep --no-line-number -w -e mmap $H >actual &&
test_cmp expected actual
'
@@ -239,17 +239,17 @@ do
'
test_expect_success "grep -w $L (x)" '
- {
- echo ${HC}x:1:x x xx x
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}x:1:x x xx x
+ EOF
git grep -n -w -e "x xx* x" $H >actual &&
test_cmp expected actual
'
test_expect_success "grep -w $L (y-1)" '
- {
- echo ${HC}y:1:y yy
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}y:1:y yy
+ EOF
git grep -n -w -e "^y" $H >actual &&
test_cmp expected actual
'
@@ -277,16 +277,16 @@ do
'
test_expect_success "grep $L (with --column, --only-matching)" '
- {
- echo ${HC}file:1:5:mmap
- echo ${HC}file:2:5:mmap
- echo ${HC}file:3:5:mmap
- echo ${HC}file:3:13:mmap
- echo ${HC}file:4:5:mmap
- echo ${HC}file:4:13:mmap
- echo ${HC}file:5:5:mmap
- echo ${HC}file:5:13:mmap
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}file:1:5:mmap
+ ${HC}file:2:5:mmap
+ ${HC}file:3:5:mmap
+ ${HC}file:3:13:mmap
+ ${HC}file:4:5:mmap
+ ${HC}file:4:13:mmap
+ ${HC}file:5:5:mmap
+ ${HC}file:5:13:mmap
+ EOF
git grep --column -n -o -e mmap $H >actual &&
test_cmp expected actual
'
@@ -320,11 +320,11 @@ do
'
test_expect_success "grep --max-depth -1 $L" '
- {
- echo ${HC}t/a/v:1:vvv
- echo ${HC}t/v:1:vvv
- echo ${HC}v:1:vvv
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}t/a/v:1:vvv
+ ${HC}t/v:1:vvv
+ ${HC}v:1:vvv
+ EOF
git grep --max-depth -1 -n -e vvv $H >actual &&
test_cmp expected actual &&
git grep --recursive -n -e vvv $H >actual &&
@@ -332,9 +332,9 @@ do
'
test_expect_success "grep --max-depth 0 $L" '
- {
- echo ${HC}v:1:vvv
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}v:1:vvv
+ EOF
git grep --max-depth 0 -n -e vvv $H >actual &&
test_cmp expected actual &&
git grep --no-recursive -n -e vvv $H >actual &&
@@ -342,11 +342,11 @@ do
'
test_expect_success "grep --max-depth 0 -- '*' $L" '
- {
- echo ${HC}t/a/v:1:vvv
- echo ${HC}t/v:1:vvv
- echo ${HC}v:1:vvv
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}t/a/v:1:vvv
+ ${HC}t/v:1:vvv
+ ${HC}v:1:vvv
+ EOF
git grep --max-depth 0 -n -e vvv $H -- "*" >actual &&
test_cmp expected actual &&
git grep --no-recursive -n -e vvv $H -- "*" >actual &&
@@ -354,18 +354,18 @@ do
'
test_expect_success "grep --max-depth 1 $L" '
- {
- echo ${HC}t/v:1:vvv
- echo ${HC}v:1:vvv
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}t/v:1:vvv
+ ${HC}v:1:vvv
+ EOF
git grep --max-depth 1 -n -e vvv $H >actual &&
test_cmp expected actual
'
test_expect_success "grep --max-depth 0 -- t $L" '
- {
- echo ${HC}t/v:1:vvv
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}t/v:1:vvv
+ EOF
git grep --max-depth 0 -n -e vvv $H -- t >actual &&
test_cmp expected actual &&
git grep --no-recursive -n -e vvv $H -- t >actual &&
@@ -373,10 +373,10 @@ do
'
test_expect_success "grep --max-depth 0 -- . t $L" '
- {
- echo ${HC}t/v:1:vvv
- echo ${HC}v:1:vvv
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}t/v:1:vvv
+ ${HC}v:1:vvv
+ EOF
git grep --max-depth 0 -n -e vvv $H -- . t >actual &&
test_cmp expected actual &&
git grep --no-recursive -n -e vvv $H -- . t >actual &&
@@ -384,10 +384,10 @@ do
'
test_expect_success "grep --max-depth 0 -- t . $L" '
- {
- echo ${HC}t/v:1:vvv
- echo ${HC}v:1:vvv
- } >expected &&
+ cat >expected <<-EOF &&
+ ${HC}t/v:1:vvv
+ ${HC}v:1:vvv
+ EOF
git grep --max-depth 0 -n -e vvv $H -- t . >actual &&
test_cmp expected actual &&
git grep --no-recursive -n -e vvv $H -- t . >actual &&
@@ -1314,10 +1314,10 @@ test_expect_success PCRE 'grep -P pattern with grep.extendedRegexp=true' '
'
test_expect_success PCRE 'grep -P -v pattern' '
- {
- echo "ab:a+b*c"
- echo "ab:a+bc"
- } >expected &&
+ cat >expected <<-\EOF &&
+ ab:a+b*c
+ ab:a+bc
+ EOF
git grep -P -v "abc" ab >actual &&
test_cmp expected actual
'
@@ -1331,10 +1331,10 @@ test_expect_success PCRE 'grep -P -i pattern' '
'
test_expect_success PCRE 'grep -P -w pattern' '
- {
- echo "hello_world:Hello world"
- echo "hello_world:HeLLo world"
- } >expected &&
+ cat >expected <<-\EOF &&
+ hello_world:Hello world
+ hello_world:HeLLo world
+ EOF
git grep -P -w "He((?i)ll)o" hello_world >actual &&
test_cmp expected actual
'
@@ -1469,10 +1469,10 @@ test_expect_success 'grep -F pattern with grep.patternType=basic' '
'
test_expect_success 'grep -G pattern with grep.patternType=fixed' '
- {
- echo "ab:a+b*c"
- echo "ab:a+bc"
- } >expected &&
+ cat >expected <<-\EOF &&
+ ab:a+b*c
+ ab:a+bc
+ EOF
git \
-c grep.patterntype=fixed \
grep -G "a+b" ab >actual &&
@@ -1480,11 +1480,11 @@ test_expect_success 'grep -G pattern with grep.patternType=fixed' '
'
test_expect_success 'grep -E pattern with grep.patternType=fixed' '
- {
- echo "ab:a+b*c"
- echo "ab:a+bc"
- echo "ab:abc"
- } >expected &&
+ cat >expected <<-\EOF &&
+ ab:a+b*c
+ ab:a+bc
+ ab:abc
+ EOF
git \
-c grep.patterntype=fixed \
grep -E "a+" ab >actual &&
Take advantage of here-docs to create large blocks of text rather than using a series of `echo` statements. Not only are here-docs a natural fit for such a task, but there is less opportunity for a broken &&-chain. Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> --- t/t0021-conversion.sh | 44 ++--- t/t4106-apply-stdin.sh | 5 +- t/t5510-fetch.sh | 10 +- t/t5515-fetch-merge-logic.sh | 22 +-- t/t6406-merge-attr.sh | 8 +- t/t6411-merge-filemode.sh | 8 +- t/t7810-grep.sh | 310 +++++++++++++++++------------------ 7 files changed, 205 insertions(+), 202 deletions(-)