tests: simplify construction of large blocks of text

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> Reviewed-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Eric Sunshine committed Dec 9, 2021 at 00:11 UTC 020b813f400b55528edca00aff4d8e95080376f6
7 files changed +205 -202
t/t0021-conversion.sh
+22 -22
@@ -118,17 +118,17 @@ test_expect_success check '
118 # If an expanded ident ever gets into the repository, we want to make sure that
119 # it is collapsed before being expanded again on checkout
120 test_expect_success expanded_in_repo '
121 - {
122 - echo "File with expanded keywords"
123 - echo "\$Id\$"
124 - echo "\$Id:\$"
125 - echo "\$Id: 0000000000000000000000000000000000000000 \$"
126 - echo "\$Id: NoSpaceAtEnd\$"
127 - echo "\$Id:NoSpaceAtFront \$"
128 - echo "\$Id:NoSpaceAtEitherEnd\$"
129 - echo "\$Id: NoTerminatingSymbol"
130 - echo "\$Id: Foreign Commit With Spaces \$"
131 - } >expanded-keywords.0 &&
121 + cat >expanded-keywords.0 <<-\EOF &&
122 + File with expanded keywords
123 + $Id$
124 + $Id:$
125 + $Id: 0000000000000000000000000000000000000000 $
126 + $Id: NoSpaceAtEnd$
127 + $Id:NoSpaceAtFront $
128 + $Id:NoSpaceAtEitherEnd$
129 + $Id: NoTerminatingSymbol
130 + $Id: Foreign Commit With Spaces $
131 + EOF
132
133 {
134 cat expanded-keywords.0 &&
@@ -139,17 +139,17 @@ test_expect_success expanded_in_repo '
139 git commit -m "File with keywords expanded" &&
140 id=$(git rev-parse --verify :expanded-keywords) &&
141
142 - {
143 - echo "File with expanded keywords"
144 - echo "\$Id: $id \$"
145 - echo "\$Id: $id \$"
146 - echo "\$Id: $id \$"
147 - echo "\$Id: $id \$"
148 - echo "\$Id: $id \$"
149 - echo "\$Id: $id \$"
150 - echo "\$Id: NoTerminatingSymbol"
151 - echo "\$Id: Foreign Commit With Spaces \$"
152 - } >expected-output.0 &&
142 + cat >expected-output.0 <<-EOF &&
143 + File with expanded keywords
144 + \$Id: $id \$
145 + \$Id: $id \$
146 + \$Id: $id \$
147 + \$Id: $id \$
148 + \$Id: $id \$
149 + \$Id: $id \$
150 + \$Id: NoTerminatingSymbol
151 + \$Id: Foreign Commit With Spaces \$
152 + EOF
153 {
154 cat expected-output.0 &&
155 printf "\$Id: NoTerminatingSymbolAtEOF"
t/t4106-apply-stdin.sh
+4 -1
@@ -18,7 +18,10 @@ test_expect_success 'git apply --numstat - < patch' '
18 '
19
20 test_expect_success 'git apply --numstat - < patch patch' '
21 - for i in 1 2; do echo "1 1 text"; done >expect &&
21 + cat >expect <<-\EOF &&
22 + 1 1 text
23 + 1 1 text
24 + EOF
25 git apply --numstat - < patch patch >actual &&
26 test_cmp expect actual
27 '
t/t5510-fetch.sh
+5 -5
@@ -40,11 +40,11 @@ test_expect_success "clone and setup child repos" '
40 git config branch.main.remote two &&
41 git config branch.main.merge refs/heads/one &&
42 mkdir -p .git/remotes &&
43 - {
44 - echo "URL: ../two/.git/"
45 - echo "Pull: refs/heads/main:refs/heads/two"
46 - echo "Pull: refs/heads/one:refs/heads/one"
47 - } >.git/remotes/two
43 + cat >.git/remotes/two <<-\EOF
44 + URL: ../two/.git/
45 + Pull: refs/heads/main:refs/heads/two
46 + Pull: refs/heads/one:refs/heads/one
47 + EOF
48 ) &&
49 git clone . bundle &&
50 git clone . seven
t/t5515-fetch-merge-logic.sh
+11 -11
@@ -105,19 +105,19 @@ test_expect_success setup '
105 remotes="$remotes config-glob" &&
106
107 mkdir -p .git/remotes &&
108 - {
109 - echo "URL: ../.git/"
110 - echo "Pull: refs/heads/main:remotes/rem/main"
111 - echo "Pull: refs/heads/one:remotes/rem/one"
112 - echo "Pull: two:remotes/rem/two"
113 - echo "Pull: refs/heads/three:remotes/rem/three"
114 - } >.git/remotes/remote-explicit &&
108 + cat >.git/remotes/remote-explicit <<-\EOF &&
109 + URL: ../.git/
110 + Pull: refs/heads/main:remotes/rem/main
111 + Pull: refs/heads/one:remotes/rem/one
112 + Pull: two:remotes/rem/two
113 + Pull: refs/heads/three:remotes/rem/three
114 + EOF
115 remotes="$remotes remote-explicit" &&
116
117 - {
118 - echo "URL: ../.git/"
119 - echo "Pull: refs/heads/*:refs/remotes/rem/*"
120 - } >.git/remotes/remote-glob &&
117 + cat >.git/remotes/remote-glob <<-\EOF &&
118 + URL: ../.git/
119 + Pull: refs/heads/*:refs/remotes/rem/*
120 + EOF
121 remotes="$remotes remote-glob" &&
122
123 mkdir -p .git/branches &&
t/t6406-merge-attr.sh
+4 -4
@@ -62,10 +62,10 @@ test_expect_success setup '
62
63 test_expect_success merge '
64
65 - {
66 - echo "binary -merge"
67 - echo "union merge=union"
68 - } >.gitattributes &&
65 + cat >.gitattributes <<-\EOF &&
66 + binary -merge
67 + union merge=union
68 + EOF
69
70 if git merge main
71 then
t/t6411-merge-filemode.sh
+4 -4
@@ -51,10 +51,10 @@ test_expect_success 'set up mode change in both branches' '
51 : >file2 &&
52 git add file2 &&
53 git commit -m b2 &&
54 - {
55 - echo "100755 $H 2 file2"
56 - echo "100644 $H 3 file2"
57 - } >expect
54 + cat >expect <<-EOF
55 + 100755 $H 2 file2
56 + 100644 $H 3 file2
57 + EOF
58 '
59
60 do_both_modes () {
t/t7810-grep.sh
+155 -155
@@ -31,28 +31,28 @@ int main(int argc, const char **argv)
31 EOF
32
33 test_expect_success setup '
34 - {
35 - echo foo mmap bar
36 - echo foo_mmap bar
37 - echo foo_mmap bar mmap
38 - echo foo mmap bar_mmap
39 - echo foo_mmap bar mmap baz
40 - } >file &&
41 - {
42 - echo Hello world
43 - echo HeLLo world
44 - echo Hello_world
45 - echo HeLLo_world
46 - } >hello_world &&
47 - {
48 - echo "a+b*c"
49 - echo "a+bc"
50 - echo "abc"
51 - } >ab &&
52 - {
53 - echo d &&
54 - echo 0
55 - } >d0 &&
34 + cat >file <<-\EOF &&
35 + foo mmap bar
36 + foo_mmap bar
37 + foo_mmap bar mmap
38 + foo mmap bar_mmap
39 + foo_mmap bar mmap baz
40 + EOF
41 + cat >hello_world <<-\EOF &&
42 + Hello world
43 + HeLLo world
44 + Hello_world
45 + HeLLo_world
46 + EOF
47 + cat >ab <<-\EOF &&
48 + a+b*c
49 + a+bc
50 + abc
51 + EOF
52 + cat >d0 <<-\EOF &&
53 + d
54 + 0
55 + EOF
56 echo vvv >v &&
57 echo ww w >w &&
58 echo x x xx x >x &&
@@ -63,13 +63,13 @@ test_expect_success setup '
63 echo vvv >t/v &&
64 mkdir t/a &&
65 echo vvv >t/a/v &&
66 - {
67 - echo "line without leading space1"
68 - echo " line with leading space1"
69 - echo " line with leading space2"
70 - echo " line with leading space3"
71 - echo "line without leading space2"
72 - } >space &&
66 + qz_to_tab_space >space <<-\EOF &&
67 + line without leading space1
68 + Zline with leading space1
69 + Zline with leading space2
70 + Zline with leading space3
71 + line without leading space2
72 + EOF
73 cat >hello.ps1 <<-\EOF &&
74 # No-op.
75 function dummy() {}
@@ -106,129 +106,129 @@ do
106 esac
107
108 test_expect_success "grep -w $L" '
109 - {
110 - echo ${HC}file:1:foo mmap bar
111 - echo ${HC}file:3:foo_mmap bar mmap
112 - echo ${HC}file:4:foo mmap bar_mmap
113 - echo ${HC}file:5:foo_mmap bar mmap baz
114 - } >expected &&
109 + cat >expected <<-EOF &&
110 + ${HC}file:1:foo mmap bar
111 + ${HC}file:3:foo_mmap bar mmap
112 + ${HC}file:4:foo mmap bar_mmap
113 + ${HC}file:5:foo_mmap bar mmap baz
114 + EOF
115 git -c grep.linenumber=false grep -n -w -e mmap $H >actual &&
116 test_cmp expected actual
117 '
118
119 test_expect_success "grep -w $L (with --column)" '
120 - {
121 - echo ${HC}file:5:foo mmap bar
122 - echo ${HC}file:14:foo_mmap bar mmap
123 - echo ${HC}file:5:foo mmap bar_mmap
124 - echo ${HC}file:14:foo_mmap bar mmap baz
125 - } >expected &&
120 + cat >expected <<-EOF &&
121 + ${HC}file:5:foo mmap bar
122 + ${HC}file:14:foo_mmap bar mmap
123 + ${HC}file:5:foo mmap bar_mmap
124 + ${HC}file:14:foo_mmap bar mmap baz
125 + EOF
126 git grep --column -w -e mmap $H >actual &&
127 test_cmp expected actual
128 '
129
130 test_expect_success "grep -w $L (with --column, extended OR)" '
131 - {
132 - echo ${HC}file:14:foo_mmap bar mmap
133 - echo ${HC}file:19:foo_mmap bar mmap baz
134 - } >expected &&
131 + cat >expected <<-EOF &&
132 + ${HC}file:14:foo_mmap bar mmap
133 + ${HC}file:19:foo_mmap bar mmap baz
134 + EOF
135 git grep --column -w -e mmap$ --or -e baz $H >actual &&
136 test_cmp expected actual
137 '
138
139 test_expect_success "grep -w $L (with --column, --invert-match)" '
140 - {
141 - echo ${HC}file:1:foo mmap bar
142 - echo ${HC}file:1:foo_mmap bar
143 - echo ${HC}file:1:foo_mmap bar mmap
144 - echo ${HC}file:1:foo mmap bar_mmap
145 - } >expected &&
140 + cat >expected <<-EOF &&
141 + ${HC}file:1:foo mmap bar
142 + ${HC}file:1:foo_mmap bar
143 + ${HC}file:1:foo_mmap bar mmap
144 + ${HC}file:1:foo mmap bar_mmap
145 + EOF
146 git grep --column --invert-match -w -e baz $H -- file >actual &&
147 test_cmp expected actual
148 '
149
150 test_expect_success "grep $L (with --column, --invert-match, extended OR)" '
151 - {
152 - echo ${HC}hello_world:6:HeLLo_world
153 - } >expected &&
151 + cat >expected <<-EOF &&
152 + ${HC}hello_world:6:HeLLo_world
153 + EOF
154 git grep --column --invert-match -e ll --or --not -e _ $H -- hello_world \
155 >actual &&
156 test_cmp expected actual
157 '
158
159 test_expect_success "grep $L (with --column, --invert-match, extended AND)" '
160 - {
161 - echo ${HC}hello_world:3:Hello world
162 - echo ${HC}hello_world:3:Hello_world
163 - echo ${HC}hello_world:6:HeLLo_world
164 - } >expected &&
160 + cat >expected <<-EOF &&
161 + ${HC}hello_world:3:Hello world
162 + ${HC}hello_world:3:Hello_world
163 + ${HC}hello_world:6:HeLLo_world
164 + EOF
165 git grep --column --invert-match --not -e _ --and --not -e ll $H -- hello_world \
166 >actual &&
167 test_cmp expected actual
168 '
169
170 test_expect_success "grep $L (with --column, double-negation)" '
171 - {
172 - echo ${HC}file:1:foo_mmap bar mmap baz
173 - } >expected &&
171 + cat >expected <<-EOF &&
172 + ${HC}file:1:foo_mmap bar mmap baz
173 + EOF
174 git grep --column --not \( --not -e foo --or --not -e baz \) $H -- file \
175 >actual &&
176 test_cmp expected actual
177 '
178
179 test_expect_success "grep -w $L (with --column, -C)" '
180 - {
181 - echo ${HC}file:5:foo mmap bar
182 - echo ${HC}file-foo_mmap bar
183 - echo ${HC}file:14:foo_mmap bar mmap
184 - echo ${HC}file:5:foo mmap bar_mmap
185 - echo ${HC}file:14:foo_mmap bar mmap baz
186 - } >expected &&
180 + cat >expected <<-EOF &&
181 + ${HC}file:5:foo mmap bar
182 + ${HC}file-foo_mmap bar
183 + ${HC}file:14:foo_mmap bar mmap
184 + ${HC}file:5:foo mmap bar_mmap
185 + ${HC}file:14:foo_mmap bar mmap baz
186 + EOF
187 git grep --column -w -C1 -e mmap $H >actual &&
188 test_cmp expected actual
189 '
190
191 test_expect_success "grep -w $L (with --line-number, --column)" '
192 - {
193 - echo ${HC}file:1:5:foo mmap bar
194 - echo ${HC}file:3:14:foo_mmap bar mmap
195 - echo ${HC}file:4:5:foo mmap bar_mmap
196 - echo ${HC}file:5:14:foo_mmap bar mmap baz
197 - } >expected &&
192 + cat >expected <<-EOF &&
193 + ${HC}file:1:5:foo mmap bar
194 + ${HC}file:3:14:foo_mmap bar mmap
195 + ${HC}file:4:5:foo mmap bar_mmap
196 + ${HC}file:5:14:foo_mmap bar mmap baz
197 + EOF
198 git grep -n --column -w -e mmap $H >actual &&
199 test_cmp expected actual
200 '
201
202 test_expect_success "grep -w $L (with non-extended patterns, --column)" '
203 - {
204 - echo ${HC}file:5:foo mmap bar
205 - echo ${HC}file:10:foo_mmap bar
206 - echo ${HC}file:10:foo_mmap bar mmap
207 - echo ${HC}file:5:foo mmap bar_mmap
208 - echo ${HC}file:10:foo_mmap bar mmap baz
209 - } >expected &&
203 + cat >expected <<-EOF &&
204 + ${HC}file:5:foo mmap bar
205 + ${HC}file:10:foo_mmap bar
206 + ${HC}file:10:foo_mmap bar mmap
207 + ${HC}file:5:foo mmap bar_mmap
208 + ${HC}file:10:foo_mmap bar mmap baz
209 + EOF
210 git grep --column -w -e bar -e mmap $H >actual &&
211 test_cmp expected actual
212 '
213
214 test_expect_success "grep -w $L" '
215 - {
216 - echo ${HC}file:1:foo mmap bar
217 - echo ${HC}file:3:foo_mmap bar mmap
218 - echo ${HC}file:4:foo mmap bar_mmap
219 - echo ${HC}file:5:foo_mmap bar mmap baz
220 - } >expected &&
215 + cat >expected <<-EOF &&
216 + ${HC}file:1:foo mmap bar
217 + ${HC}file:3:foo_mmap bar mmap
218 + ${HC}file:4:foo mmap bar_mmap
219 + ${HC}file:5:foo_mmap bar mmap baz
220 + EOF
221 git -c grep.linenumber=true grep -w -e mmap $H >actual &&
222 test_cmp expected actual
223 '
224
225 test_expect_success "grep -w $L" '
226 - {
227 - echo ${HC}file:foo mmap bar
228 - echo ${HC}file:foo_mmap bar mmap
229 - echo ${HC}file:foo mmap bar_mmap
230 - echo ${HC}file:foo_mmap bar mmap baz
231 - } >expected &&
226 + cat >expected <<-EOF &&
227 + ${HC}file:foo mmap bar
228 + ${HC}file:foo_mmap bar mmap
229 + ${HC}file:foo mmap bar_mmap
230 + ${HC}file:foo_mmap bar mmap baz
231 + EOF
232 git -c grep.linenumber=true grep --no-line-number -w -e mmap $H >actual &&
233 test_cmp expected actual
234 '
@@ -239,17 +239,17 @@ do
239 '
240
241 test_expect_success "grep -w $L (x)" '
242 - {
243 - echo ${HC}x:1:x x xx x
244 - } >expected &&
242 + cat >expected <<-EOF &&
243 + ${HC}x:1:x x xx x
244 + EOF
245 git grep -n -w -e "x xx* x" $H >actual &&
246 test_cmp expected actual
247 '
248
249 test_expect_success "grep -w $L (y-1)" '
250 - {
251 - echo ${HC}y:1:y yy
252 - } >expected &&
250 + cat >expected <<-EOF &&
251 + ${HC}y:1:y yy
252 + EOF
253 git grep -n -w -e "^y" $H >actual &&
254 test_cmp expected actual
255 '
@@ -277,16 +277,16 @@ do
277 '
278
279 test_expect_success "grep $L (with --column, --only-matching)" '
280 - {
281 - echo ${HC}file:1:5:mmap
282 - echo ${HC}file:2:5:mmap
283 - echo ${HC}file:3:5:mmap
284 - echo ${HC}file:3:13:mmap
285 - echo ${HC}file:4:5:mmap
286 - echo ${HC}file:4:13:mmap
287 - echo ${HC}file:5:5:mmap
288 - echo ${HC}file:5:13:mmap
289 - } >expected &&
280 + cat >expected <<-EOF &&
281 + ${HC}file:1:5:mmap
282 + ${HC}file:2:5:mmap
283 + ${HC}file:3:5:mmap
284 + ${HC}file:3:13:mmap
285 + ${HC}file:4:5:mmap
286 + ${HC}file:4:13:mmap
287 + ${HC}file:5:5:mmap
288 + ${HC}file:5:13:mmap
289 + EOF
290 git grep --column -n -o -e mmap $H >actual &&
291 test_cmp expected actual
292 '
@@ -320,11 +320,11 @@ do
320 '
321
322 test_expect_success "grep --max-depth -1 $L" '
323 - {
324 - echo ${HC}t/a/v:1:vvv
325 - echo ${HC}t/v:1:vvv
326 - echo ${HC}v:1:vvv
327 - } >expected &&
323 + cat >expected <<-EOF &&
324 + ${HC}t/a/v:1:vvv
325 + ${HC}t/v:1:vvv
326 + ${HC}v:1:vvv
327 + EOF
328 git grep --max-depth -1 -n -e vvv $H >actual &&
329 test_cmp expected actual &&
330 git grep --recursive -n -e vvv $H >actual &&
@@ -332,9 +332,9 @@ do
332 '
333
334 test_expect_success "grep --max-depth 0 $L" '
335 - {
336 - echo ${HC}v:1:vvv
337 - } >expected &&
335 + cat >expected <<-EOF &&
336 + ${HC}v:1:vvv
337 + EOF
338 git grep --max-depth 0 -n -e vvv $H >actual &&
339 test_cmp expected actual &&
340 git grep --no-recursive -n -e vvv $H >actual &&
@@ -342,11 +342,11 @@ do
342 '
343
344 test_expect_success "grep --max-depth 0 -- '*' $L" '
345 - {
346 - echo ${HC}t/a/v:1:vvv
347 - echo ${HC}t/v:1:vvv
348 - echo ${HC}v:1:vvv
349 - } >expected &&
345 + cat >expected <<-EOF &&
346 + ${HC}t/a/v:1:vvv
347 + ${HC}t/v:1:vvv
348 + ${HC}v:1:vvv
349 + EOF
350 git grep --max-depth 0 -n -e vvv $H -- "*" >actual &&
351 test_cmp expected actual &&
352 git grep --no-recursive -n -e vvv $H -- "*" >actual &&
@@ -354,18 +354,18 @@ do
354 '
355
356 test_expect_success "grep --max-depth 1 $L" '
357 - {
358 - echo ${HC}t/v:1:vvv
359 - echo ${HC}v:1:vvv
360 - } >expected &&
357 + cat >expected <<-EOF &&
358 + ${HC}t/v:1:vvv
359 + ${HC}v:1:vvv
360 + EOF
361 git grep --max-depth 1 -n -e vvv $H >actual &&
362 test_cmp expected actual
363 '
364
365 test_expect_success "grep --max-depth 0 -- t $L" '
366 - {
367 - echo ${HC}t/v:1:vvv
368 - } >expected &&
366 + cat >expected <<-EOF &&
367 + ${HC}t/v:1:vvv
368 + EOF
369 git grep --max-depth 0 -n -e vvv $H -- t >actual &&
370 test_cmp expected actual &&
371 git grep --no-recursive -n -e vvv $H -- t >actual &&
@@ -373,10 +373,10 @@ do
373 '
374
375 test_expect_success "grep --max-depth 0 -- . t $L" '
376 - {
377 - echo ${HC}t/v:1:vvv
378 - echo ${HC}v:1:vvv
379 - } >expected &&
376 + cat >expected <<-EOF &&
377 + ${HC}t/v:1:vvv
378 + ${HC}v:1:vvv
379 + EOF
380 git grep --max-depth 0 -n -e vvv $H -- . t >actual &&
381 test_cmp expected actual &&
382 git grep --no-recursive -n -e vvv $H -- . t >actual &&
@@ -384,10 +384,10 @@ do
384 '
385
386 test_expect_success "grep --max-depth 0 -- t . $L" '
387 - {
388 - echo ${HC}t/v:1:vvv
389 - echo ${HC}v:1:vvv
390 - } >expected &&
387 + cat >expected <<-EOF &&
388 + ${HC}t/v:1:vvv
389 + ${HC}v:1:vvv
390 + EOF
391 git grep --max-depth 0 -n -e vvv $H -- t . >actual &&
392 test_cmp expected actual &&
393 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' '
1314 '
1315
1316 test_expect_success PCRE 'grep -P -v pattern' '
1317 - {
1318 - echo "ab:a+b*c"
1319 - echo "ab:a+bc"
1320 - } >expected &&
1317 + cat >expected <<-\EOF &&
1318 + ab:a+b*c
1319 + ab:a+bc
1320 + EOF
1321 git grep -P -v "abc" ab >actual &&
1322 test_cmp expected actual
1323 '
@@ -1331,10 +1331,10 @@ test_expect_success PCRE 'grep -P -i pattern' '
1331 '
1332
1333 test_expect_success PCRE 'grep -P -w pattern' '
1334 - {
1335 - echo "hello_world:Hello world"
1336 - echo "hello_world:HeLLo world"
1337 - } >expected &&
1334 + cat >expected <<-\EOF &&
1335 + hello_world:Hello world
1336 + hello_world:HeLLo world
1337 + EOF
1338 git grep -P -w "He((?i)ll)o" hello_world >actual &&
1339 test_cmp expected actual
1340 '
@@ -1469,10 +1469,10 @@ test_expect_success 'grep -F pattern with grep.patternType=basic' '
1469 '
1470
1471 test_expect_success 'grep -G pattern with grep.patternType=fixed' '
1472 - {
1473 - echo "ab:a+b*c"
1474 - echo "ab:a+bc"
1475 - } >expected &&
1472 + cat >expected <<-\EOF &&
1473 + ab:a+b*c
1474 + ab:a+bc
1475 + EOF
1476 git \
1477 -c grep.patterntype=fixed \
1478 grep -G "a+b" ab >actual &&
@@ -1480,11 +1480,11 @@ test_expect_success 'grep -G pattern with grep.patternType=fixed' '
1480 '
1481
1482 test_expect_success 'grep -E pattern with grep.patternType=fixed' '
1483 - {
1484 - echo "ab:a+b*c"
1485 - echo "ab:a+bc"
1486 - echo "ab:abc"
1487 - } >expected &&
1483 + cat >expected <<-\EOF &&
1484 + ab:a+b*c
1485 + ab:a+bc
1486 + ab:abc
1487 + EOF
1488 git \
1489 -c grep.patterntype=fixed \
1490 grep -E "a+" ab >actual &&