xref: /llvm-project/llvm/utils/lit/tests/shtest-shell.py (revision 4bac8fd8904904bc7d502f39851eef50b5afff73)
1# Check the internal shell handling component of the ShTest format.
2
3# RUN: not %{lit} -v %{inputs}/shtest-shell > %t.out
4# FIXME: Temporarily dump test output so we can debug failing tests on
5# buildbots.
6# RUN: cat %t.out
7# RUN: FileCheck --input-file %t.out %s
8#
9# Test again in non-UTF shell to catch potential errors with python 2 seen
10# on stdout-encoding.txt
11# RUN: env PYTHONIOENCODING=ascii not %{lit} -a %{inputs}/shtest-shell > %t.ascii.out
12# FIXME: Temporarily dump test output so we can debug failing tests on
13# buildbots.
14# RUN: cat %t.ascii.out
15# RUN: FileCheck --input-file %t.ascii.out %s
16#
17# END.
18
19# CHECK: -- Testing:
20
21# CHECK: FAIL: shtest-shell :: colon-error.txt
22# CHECK: *** TEST 'shtest-shell :: colon-error.txt' FAILED ***
23# CHECK: :
24# CHECK: # .---command stderr{{-*}}
25# CHECK: # | Unsupported: ':' cannot be part of a pipeline
26# CHECK: # error: command failed with exit status: 127
27# CHECK: ***
28
29# CHECK: PASS: shtest-shell :: continuations.txt
30
31# CHECK: PASS: shtest-shell :: dev-null.txt
32
33#      CHECK: FAIL: shtest-shell :: diff-b.txt
34#      CHECK: *** TEST 'shtest-shell :: diff-b.txt' FAILED ***
35#      CHECK: diff -b {{[^"]*}}.0 {{[^"]*}}.1
36#      CHECK: # .---command stdout{{-*}}
37#      CHECK: # | {{.*}}1,2
38# CHECK-NEXT: # |   f o o
39# CHECK-NEXT: # | ! b a r
40# CHECK-NEXT: # | ---
41# CHECK-NEXT: # |   f o o
42# CHECK-NEXT: # | ! bar
43# CHECK-NEXT: # `---{{-*}}
44# CHECK-NEXT: # error: command failed with exit status: 1
45#      CHECK: ***
46
47
48# CHECK: FAIL: shtest-shell :: diff-encodings.txt
49# CHECK: *** TEST 'shtest-shell :: diff-encodings.txt' FAILED ***
50
51#      CHECK: diff -u diff-in.bin diff-in.bin
52# CHECK-NEXT: # executed command: diff -u diff-in.bin diff-in.bin
53#  CHECK-NOT: error
54
55#      CHECK: diff -u diff-in.utf16 diff-in.bin && false || true
56# CHECK-NEXT: # executed command: diff -u diff-in.utf16 diff-in.bin
57# CHECK-NEXT: # .---command stdout{{-*}}
58# CHECK-NEXT: # | ---
59# CHECK-NEXT: # | +++
60# CHECK-NEXT: # | @@
61# CHECK-NEXT: # | {{.f.o.o.$}}
62# CHECK-NEXT: # | {{-.b.a.r.$}}
63# CHECK-NEXT: # | {{\+.b.a.r.}}
64# CHECK-NEXT: # | {{.b.a.z.$}}
65# CHECK-NEXT: # `---{{-*}}
66# CHECK-NEXT: # error: command failed with exit status: 1
67# CHECK-NEXT: # executed command: true
68
69#      CHECK: diff -u diff-in.utf8 diff-in.bin && false || true
70# CHECK-NEXT: # executed command: diff -u diff-in.utf8 diff-in.bin
71# CHECK-NEXT: # .---command stdout{{-*}}
72# CHECK-NEXT: # | ---
73# CHECK-NEXT: # | +++
74# CHECK-NEXT: # | @@
75# CHECK-NEXT: # | -foo
76# CHECK-NEXT: # | -bar
77# CHECK-NEXT: # | -baz
78# CHECK-NEXT: # | {{\+.f.o.o.$}}
79# CHECK-NEXT: # | {{\+.b.a.r.}}
80# CHECK-NEXT: # | {{\+.b.a.z.$}}
81# CHECK-NEXT: # `---{{-*}}
82# CHECK-NEXT: # error: command failed with exit status: 1
83# CHECK-NEXT: # executed command: true
84
85#      CHECK: diff -u diff-in.bin diff-in.utf8 && false || true
86# CHECK-NEXT: # executed command: diff -u diff-in.bin diff-in.utf8
87# CHECK-NEXT: # .---command stdout{{-*}}
88# CHECK-NEXT: # | ---
89# CHECK-NEXT: # | +++
90# CHECK-NEXT: # | @@
91# CHECK-NEXT: # | {{-.f.o.o.$}}
92# CHECK-NEXT: # | {{-.b.a.r.}}
93# CHECK-NEXT: # | {{-.b.a.z.$}}
94# CHECK-NEXT: # | +foo
95# CHECK-NEXT: # | +bar
96# CHECK-NEXT: # | +baz
97# CHECK-NEXT: # `---{{-*}}
98# CHECK-NEXT: # error: command failed with exit status: 1
99# CHECK-NEXT: # executed command: true
100
101#     CHECK: cat diff-in.bin | diff -u - diff-in.bin
102# CHECK-NOT: error
103
104#     CHECK: cat diff-in.bin | diff -u diff-in.bin -
105# CHECK-NOT: error
106
107#      CHECK: cat diff-in.bin | diff -u diff-in.utf16 - && false || true
108# CHECK-NEXT: # executed command: cat diff-in.bin
109# CHECK-NEXT: # executed command: diff -u diff-in.utf16 -
110# CHECK-NEXT: # .---command stdout{{-*}}
111# CHECK-NEXT: # | ---
112# CHECK-NEXT: # | +++
113# CHECK-NEXT: # | @@
114# CHECK-NEXT: # | {{.f.o.o.$}}
115# CHECK-NEXT: # | {{-.b.a.r.$}}
116# CHECK-NEXT: # | {{\+.b.a.r.}}
117# CHECK-NEXT: # | {{.b.a.z.$}}
118# CHECK-NEXT: # `---{{-*}}
119# CHECK-NEXT: # error: command failed with exit status: 1
120# CHECK-NEXT: # executed command: true
121
122#      CHECK: cat diff-in.bin | diff -u diff-in.utf8 - && false || true
123# CHECK-NEXT: # executed command: cat diff-in.bin
124# CHECK-NEXT: # executed command: diff -u diff-in.utf8 -
125# CHECK-NEXT: # .---command stdout{{-*}}
126# CHECK-NEXT: # | ---
127# CHECK-NEXT: # | +++
128# CHECK-NEXT: # | @@
129# CHECK-NEXT: # | -foo
130# CHECK-NEXT: # | -bar
131# CHECK-NEXT: # | -baz
132# CHECK-NEXT: # | {{\+.f.o.o.$}}
133# CHECK-NEXT: # | {{\+.b.a.r.}}
134# CHECK-NEXT: # | {{\+.b.a.z.$}}
135# CHECK-NEXT: # `---{{-*}}
136# CHECK-NEXT: # error: command failed with exit status: 1
137# CHECK-NEXT: # executed command: true
138
139#      CHECK: cat diff-in.bin | diff -u - diff-in.utf8 && false || true
140# CHECK-NEXT: # executed command: cat diff-in.bin
141# CHECK-NEXT: # executed command: diff -u - diff-in.utf8
142# CHECK-NEXT: # .---command stdout{{-*}}
143# CHECK-NEXT: # | ---
144# CHECK-NEXT: # | +++
145# CHECK-NEXT: # | @@
146# CHECK-NEXT: # | {{-.f.o.o.$}}
147# CHECK-NEXT: # | {{-.b.a.r.}}
148# CHECK-NEXT: # | {{-.b.a.z.$}}
149# CHECK-NEXT: # | +foo
150# CHECK-NEXT: # | +bar
151# CHECK-NEXT: # | +baz
152# CHECK-NEXT: # `---{{-*}}
153# CHECK-NEXT: # error: command failed with exit status: 1
154# CHECK-NEXT: # executed command: true
155
156# CHECK: false
157
158# CHECK: ***
159
160
161# CHECK: FAIL: shtest-shell :: diff-error-1.txt
162# CHECK: *** TEST 'shtest-shell :: diff-error-1.txt' FAILED ***
163# CHECK: diff -B temp1.txt temp2.txt
164# CHECK: # .---command stderr{{-*}}
165# CHECK: # | Unsupported: 'diff': option -B not recognized
166# CHECK: # error: command failed with exit status: 1
167# CHECK: ***
168
169# CHECK: FAIL: shtest-shell :: diff-error-2.txt
170# CHECK: *** TEST 'shtest-shell :: diff-error-2.txt' FAILED ***
171# CHECK: diff temp.txt
172# CHECK: # .---command stderr{{-*}}
173# CHECK: # | Error: missing or extra operand
174# CHECK: # error: command failed with exit status: 1
175# CHECK: ***
176
177# CHECK: FAIL: shtest-shell :: diff-error-3.txt
178# CHECK: *** TEST 'shtest-shell :: diff-error-3.txt' FAILED ***
179# CHECK: diff temp.txt temp1.txt
180# CHECK: # .---command stderr{{-*}}
181# CHECK: # | Error: 'diff' command failed
182# CHECK: error: command failed with exit status: 1
183# CHECK: ***
184
185#      CHECK: FAIL: shtest-shell :: diff-error-4.txt
186#      CHECK: *** TEST 'shtest-shell :: diff-error-4.txt' FAILED ***
187#      CHECK: Exit Code: 1
188#      CHECK: # .---command stdout{{-*}}
189# CHECK-NEXT: # | {{.*}}diff-error-4.txt.tmp
190# CHECK-NEXT: # | {{.*}}diff-error-4.txt.tmp1
191# CHECK-NEXT: # | {{\*+}}
192# CHECK-NEXT: # | *** 1 ****
193# CHECK-NEXT: # | ! hello-first
194# CHECK-NEXT: # | --- 1 ----
195# CHECK-NEXT: # | ! hello-second
196# CHECK-NEXT: # `---{{-*}}
197#      CHECK: ***
198
199# CHECK: FAIL: shtest-shell :: diff-error-5.txt
200# CHECK: *** TEST 'shtest-shell :: diff-error-5.txt' FAILED ***
201# CHECK: diff
202# CHECK: # .---command stderr{{-*}}
203# CHECK: # | Error: missing or extra operand
204# CHECK: # error: command failed with exit status: 1
205# CHECK: ***
206
207# CHECK: FAIL: shtest-shell :: diff-error-6.txt
208# CHECK: *** TEST 'shtest-shell :: diff-error-6.txt' FAILED ***
209# CHECK: diff
210# CHECK: # .---command stderr{{-*}}
211# CHECK: # | Error: missing or extra operand
212# CHECK: # error: command failed with exit status: 1
213# CHECK: ***
214
215
216# CHECK: FAIL: shtest-shell :: diff-pipes.txt
217
218# CHECK: *** TEST 'shtest-shell :: diff-pipes.txt' FAILED ***
219
220# CHECK: diff {{[^ ]*}}.foo {{.*}}.foo | FileCheck {{.*}}
221# CHECK-NOT: note
222# CHECK-NOT: error
223
224#      CHECK: diff -u {{.*}}.foo {{.*}}.bar | FileCheck {{.*}} && false || true
225# CHECK-NEXT: # executed command: diff -u {{.+}}.foo{{.*}} {{.+}}.bar{{.*}}
226# CHECK-NEXT: # note: command had no output on stdout or stderr
227# CHECK-NEXT: # error: command failed with exit status: 1
228# CHECK-NEXT: # executed command: FileCheck
229# CHECK-NEXT: # executed command: true
230
231#     CHECK: cat {{.*}}.foo | diff -u - {{.*}}.foo
232# CHECK-NOT: note
233# CHECK-NOT: error
234
235#     CHECK: cat {{.*}}.foo | diff -u {{.*}}.foo -
236# CHECK-NOT: note
237# CHECK-NOT: error
238
239#      CHECK: cat {{.*}}.bar | diff -u {{.*}}.foo - && false || true
240# CHECK-NEXT: # executed command: cat {{.+}}.bar{{.*}}
241# CHECK-NEXT: # executed command: diff -u {{.+}}.foo{{.*}} -
242# CHECK-NEXT: # .---command stdout{{-*}}
243#      CHECK: # | @@
244# CHECK-NEXT: # | -foo
245# CHECK-NEXT: # | +bar
246# CHECK-NEXT: # `---{{-*}}
247# CHECK-NEXT: # error: command failed with exit status: 1
248# CHECK-NEXT: # executed command: true
249
250#      CHECK: cat {{.*}}.bar | diff -u - {{.*}}.foo && false || true
251# CHECK-NEXT: # executed command: cat {{.+}}.bar{{.*}}
252# CHECK-NEXT: # executed command: diff -u - {{.+}}.foo{{.*}}
253# CHECK-NEXT: # .---command stdout{{-*}}
254#      CHECK: # | @@
255# CHECK-NEXT: # | -bar
256# CHECK-NEXT: # | +foo
257# CHECK-NEXT: # `---{{-*}}
258# CHECK-NEXT: # error: command failed with exit status: 1
259# CHECK-NEXT: # executed command: true
260
261#     CHECK: cat {{.*}}.foo | diff - {{.*}}.foo | FileCheck {{.*}}
262# CHECK-NOT: note
263# CHECK-NOT: error
264
265#      CHECK: cat {{.*}}.bar | diff -u {{.*}}.foo - | FileCheck {{.*}}
266# CHECK-NEXT: # executed command: cat {{.+}}.bar{{.*}}
267# CHECK-NEXT: # executed command: diff -u {{.+}}.foo{{.*}} -
268# CHECK-NEXT: note: command had no output on stdout or stderr
269# CHECK-NEXT: error: command failed with exit status: 1
270# CHECK-NEXT: # executed command: FileCheck
271# CHECK-NEXT: # executed command: true
272
273# CHECK: false
274
275# CHECK: ***
276
277
278# CHECK: FAIL: shtest-shell :: diff-r-error-0.txt
279# CHECK: *** TEST 'shtest-shell :: diff-r-error-0.txt' FAILED ***
280# CHECK: diff -r
281# CHECK: # .---command stdout{{-*}}
282# CHECK: # | Only in {{.*}}dir1: dir1unique
283# CHECK: # | Only in {{.*}}dir2: dir2unique
284# CHECK: # error: command failed with exit status: 1
285
286# CHECK: FAIL: shtest-shell :: diff-r-error-1.txt
287# CHECK: *** TEST 'shtest-shell :: diff-r-error-1.txt' FAILED ***
288# CHECK: diff -r
289# CHECK: # .---command stdout{{-*}}
290# CHECK: # | *** {{.*}}dir1{{.*}}subdir{{.*}}f01
291# CHECK: # | --- {{.*}}dir2{{.*}}subdir{{.*}}f01
292# CHECK: # | ! 12345
293# CHECK: # | ! 00000
294# CHECK: # error: command failed with exit status: 1
295
296# CHECK: FAIL: shtest-shell :: diff-r-error-2.txt
297# CHECK: *** TEST 'shtest-shell :: diff-r-error-2.txt' FAILED ***
298# CHECK: diff -r
299# CHECK: # .---command stdout{{-*}}
300# CHECK: # | Only in {{.*}}dir2: extrafile
301# CHECK: # error: command failed with exit status: 1
302
303# CHECK: FAIL: shtest-shell :: diff-r-error-3.txt
304# CHECK: *** TEST 'shtest-shell :: diff-r-error-3.txt' FAILED ***
305# CHECK: diff -r
306# CHECK: # .---command stdout{{-*}}
307# CHECK: # | Only in {{.*}}dir1: extra_subdir
308# CHECK: # error: command failed with exit status: 1
309
310# CHECK: FAIL: shtest-shell :: diff-r-error-4.txt
311# CHECK: *** TEST 'shtest-shell :: diff-r-error-4.txt' FAILED ***
312# CHECK: diff -r
313# CHECK: # .---command stdout{{-*}}
314# CHECK: # | File {{.*}}dir1{{.*}}extra_subdir is a directory while file {{.*}}dir2{{.*}}extra_subdir is a regular file
315# CHECK: # error: command failed with exit status: 1
316
317# CHECK: FAIL: shtest-shell :: diff-r-error-5.txt
318# CHECK: *** TEST 'shtest-shell :: diff-r-error-5.txt' FAILED ***
319# CHECK: diff -r
320# CHECK: # .---command stdout{{-*}}
321# CHECK: # | Only in {{.*}}dir1: extra_subdir
322# CHECK: # error: command failed with exit status: 1
323
324# CHECK: FAIL: shtest-shell :: diff-r-error-6.txt
325# CHECK: *** TEST 'shtest-shell :: diff-r-error-6.txt' FAILED ***
326# CHECK: diff -r
327# CHECK: # .---command stdout{{-*}}
328# CHECK: # | File {{.*}}dir1{{.*}}extra_file is a regular empty file while file {{.*}}dir2{{.*}}extra_file is a directory
329# CHECK: # error: command failed with exit status: 1
330
331# CHECK: FAIL: shtest-shell :: diff-r-error-7.txt
332# CHECK: *** TEST 'shtest-shell :: diff-r-error-7.txt' FAILED ***
333# CHECK: diff -r - {{.*}}
334# CHECK: # .---command stderr{{-*}}
335# CHECK: # | Error: cannot recursively compare '-'
336# CHECK: # error: command failed with exit status: 1
337
338# CHECK: FAIL: shtest-shell :: diff-r-error-8.txt
339# CHECK: *** TEST 'shtest-shell :: diff-r-error-8.txt' FAILED ***
340# CHECK: diff -r {{.*}} -
341# CHECK: # .---command stderr{{-*}}
342# CHECK: # | Error: cannot recursively compare '-'
343# CHECK: # error: command failed with exit status: 1
344
345# CHECK: PASS: shtest-shell :: diff-r.txt
346
347
348# CHECK: FAIL: shtest-shell :: diff-strip-trailing-cr.txt
349
350# CHECK: *** TEST 'shtest-shell :: diff-strip-trailing-cr.txt' FAILED ***
351
352#      CHECK: diff -u diff-in.dos diff-in.unix && false || true
353# CHECK-NEXT: # executed command: diff -u diff-in.dos diff-in.unix
354# CHECK-NEXT: # .---command stdout{{-*}}
355#      CHECK: # | @@
356# CHECK-NEXT: # | -In this file, the
357# CHECK-NEXT: # | -sequence "\r\n"
358# CHECK-NEXT: # | -terminates lines.
359# CHECK-NEXT: # | +In this file, the
360# CHECK-NEXT: # | +sequence "\n"
361# CHECK-NEXT: # | +terminates lines.
362# CHECK-NEXT: # `---{{-*}}
363# CHECK-NEXT: # error: command failed with exit status: 1
364# CHECK-NEXT: # executed command: true
365
366#      CHECK: diff -u diff-in.unix diff-in.dos && false || true
367# CHECK-NEXT: # executed command: diff -u diff-in.unix diff-in.dos
368# CHECK-NEXT: # .---command stdout{{-*}}
369#      CHECK: # | @@
370# CHECK-NEXT: # | -In this file, the
371# CHECK-NEXT: # | -sequence "\n"
372# CHECK-NEXT: # | -terminates lines.
373# CHECK-NEXT: # | +In this file, the
374# CHECK-NEXT: # | +sequence "\r\n"
375# CHECK-NEXT: # | +terminates lines.
376# CHECK-NEXT: # `---{{-*}}
377# CHECK-NEXT: # error: command failed with exit status: 1
378# CHECK-NEXT: # executed command: true
379
380#      CHECK: diff -u --strip-trailing-cr diff-in.dos diff-in.unix && false || true
381# CHECK-NEXT: executed command: diff -u --strip-trailing-cr diff-in.dos diff-in.unix
382# CHECK-NEXT: # .---command stdout{{-*}}
383#      CHECK: # | @@
384# CHECK-NEXT: # |  In this file, the
385# CHECK-NEXT: # | -sequence "\r\n"
386# CHECK-NEXT: # | +sequence "\n"
387# CHECK-NEXT: # |  terminates lines.
388# CHECK-NEXT: # `---{{-*}}
389# CHECK-NEXT: # error: command failed with exit status: 1
390# CHECK-NEXT: # executed command: true
391
392#      CHECK: diff -u --strip-trailing-cr diff-in.unix diff-in.dos && false || true
393# CHECK-NEXT: # executed command: diff -u --strip-trailing-cr diff-in.unix diff-in.dos
394# CHECK-NEXT: # .---command stdout{{-*}}
395#      CHECK: # | @@
396# CHECK-NEXT: # |  In this file, the
397# CHECK-NEXT: # | -sequence "\n"
398# CHECK-NEXT: # | +sequence "\r\n"
399# CHECK-NEXT: # |  terminates lines.
400# CHECK-NEXT: # `---{{-*}}
401# CHECK-NEXT: # error: command failed with exit status: 1
402# CHECK-NEXT: # executed command: true
403
404# CHECK: false
405
406# CHECK: ***
407
408
409# CHECK: FAIL: shtest-shell :: diff-unified.txt
410
411# CHECK: *** TEST 'shtest-shell :: diff-unified.txt' FAILED ***
412
413#      CHECK: diff -u {{.*}}.foo {{.*}}.bar && false || true
414# CHECK-NEXT: # executed command: diff -u {{.+}}.foo{{.*}} {{.+}}.bar{{.*}}
415# CHECK-NEXT: # .---command stdout{{-*}}
416#      CHECK: # | @@ {{.*}} @@
417# CHECK-NEXT: # | 3
418# CHECK-NEXT: # | 4
419# CHECK-NEXT: # | 5
420# CHECK-NEXT: # | -6 foo
421# CHECK-NEXT: # | +6 bar
422# CHECK-NEXT: # | 7
423# CHECK-NEXT: # | 8
424# CHECK-NEXT: # | 9
425# CHECK-NEXT: # `---{{-*}}
426# CHECK-NEXT: # error: command failed with exit status: 1
427# CHECK-NEXT: # executed command: true
428
429#      CHECK: diff -U 2 {{.*}}.foo {{.*}}.bar && false || true
430# CHECK-NEXT: # executed command: diff -U 2 {{.+}}.foo{{.*}} {{.+}}.bar{{.*}}
431# CHECK-NEXT: # .---command stdout{{-*}}
432#      CHECK: # | @@ {{.*}} @@
433# CHECK-NEXT: # | 4
434# CHECK-NEXT: # | 5
435# CHECK-NEXT: # | -6 foo
436# CHECK-NEXT: # | +6 bar
437# CHECK-NEXT: # | 7
438# CHECK-NEXT: # | 8
439# CHECK-NEXT: # `---{{-*}}
440# CHECK-NEXT: # error: command failed with exit status: 1
441# CHECK-NEXT: # executed command: true
442
443#      CHECK: diff -U4 {{.*}}.foo {{.*}}.bar && false || true
444# CHECK-NEXT: # executed command: diff -U4 {{.+}}.foo{{.*}} {{.+}}.bar{{.*}}
445# CHECK-NEXT: # .---command stdout{{-*}}
446#      CHECK: # | @@ {{.*}} @@
447# CHECK-NEXT: # | 2
448# CHECK-NEXT: # | 3
449# CHECK-NEXT: # | 4
450# CHECK-NEXT: # | 5
451# CHECK-NEXT: # | -6 foo
452# CHECK-NEXT: # | +6 bar
453# CHECK-NEXT: # | 7
454# CHECK-NEXT: # | 8
455# CHECK-NEXT: # | 9
456# CHECK-NEXT: # | 10
457# CHECK-NEXT: # `---{{-*}}
458# CHECK-NEXT: # error: command failed with exit status: 1
459# CHECK-NEXT: # executed command: true
460
461#      CHECK: diff -U0 {{.*}}.foo {{.*}}.bar && false || true
462# CHECK-NEXT: # executed command: diff -U0 {{.+}}.foo{{.*}} {{.+}}.bar{{.*}}
463# CHECK-NEXT: # .---command stdout{{-*}}
464#      CHECK: # | @@ {{.*}} @@
465# CHECK-NEXT: # | -6 foo
466# CHECK-NEXT: # | +6 bar
467# CHECK-NEXT: # `---{{-*}}
468# CHECK-NEXT: # error: command failed with exit status: 1
469# CHECK-NEXT: # executed command: true
470
471# CHECK: diff -U 30.1 {{.*}} {{.*}} && false || true
472# CHECK: # executed command: diff -U 30.1 {{.*}} {{.*}}
473# CHECK: # .---command stderr{{-*}}
474# CHECK: # | Error: invalid '-U' argument: 30.1
475# CHECK: # error: command failed with exit status: 1
476# CHECK: # executed command: true
477
478# CHECK: diff -U-1 {{.*}} {{.*}} && false || true
479# CHECK: # executed command: diff -U-1 {{.*}} {{.*}}
480# CHECK: # .---command stderr{{-*}}
481# CHECK: # | Error: invalid '-U' argument: -1
482# CHECK: # error: command failed with exit status: 1
483# CHECK: # executed command: true
484
485# CHECK: false
486
487# CHECK: ***
488
489
490#      CHECK: FAIL: shtest-shell :: diff-w.txt
491#      CHECK: *** TEST 'shtest-shell :: diff-w.txt' FAILED ***
492#      CHECK: diff -w {{.*}}.0 {{.*}}.1
493#      CHECK: # .---command stdout{{-*}}
494#      CHECK: # | {{\*+}} 1,3
495# CHECK-NEXT: # |   foo
496# CHECK-NEXT: # |   bar
497# CHECK-NEXT: # | ! baz
498# CHECK-NEXT: # | ---
499# CHECK-NEXT: # |   foo
500# CHECK-NEXT: # |   bar
501# CHECK-NEXT: # | ! bat
502# CHECK-NEXT: # `---{{-*}}
503# CHECK-NEXT: # error: command failed with exit status: 1
504#      CHECK: ***
505
506# CHECK: FAIL: shtest-shell :: echo-at-redirect-stderr.txt
507# CHECK: *** TEST 'shtest-shell :: echo-at-redirect-stderr.txt' FAILED ***
508# CHECK: @echo 2> {{.*}}
509# CHECK: # executed command: @echo
510# CHECK: # .---command stderr{{-*}}
511# CHECK: # | stdin and stderr redirects not supported for @echo
512# CHECK: error: command failed with exit status:
513
514# CHECK: FAIL: shtest-shell :: echo-at-redirect-stdin.txt
515# CHECK: *** TEST 'shtest-shell :: echo-at-redirect-stdin.txt' FAILED ***
516# CHECK: @echo < {{.*}}
517# CHECK: # executed command: @echo
518# CHECK: # .---command stderr{{-*}}
519# CHECK: # | stdin and stderr redirects not supported for @echo
520# CHECK: error: command failed with exit status:
521
522# CHECK: FAIL: shtest-shell :: echo-redirect-stderr.txt
523# CHECK: *** TEST 'shtest-shell :: echo-redirect-stderr.txt' FAILED ***
524# CHECK: echo 2> {{.*}}
525# CHECK: # executed command: echo
526# CHECK: # .---command stderr{{-*}}
527# CHECK: # | stdin and stderr redirects not supported for echo
528# CHECK: error: command failed with exit status:
529
530# CHECK: FAIL: shtest-shell :: echo-redirect-stdin.txt
531# CHECK: *** TEST 'shtest-shell :: echo-redirect-stdin.txt' FAILED ***
532# CHECK: echo < {{.*}}
533# CHECK: # executed command: echo
534# CHECK: # .---command stderr{{-*}}
535# CHECK: # | stdin and stderr redirects not supported for echo
536# CHECK: error: command failed with exit status:
537
538# CHECK: FAIL: shtest-shell :: error-0.txt
539# CHECK: *** TEST 'shtest-shell :: error-0.txt' FAILED ***
540# CHECK: not-a-real-command
541# CHECK: # .---command stderr{{-*}}
542# CHECK: # | 'not-a-real-command': command not found
543# CHECK: # error: command failed with exit status: 127
544# CHECK: ***
545
546# FIXME: The output here sucks.
547#
548#       CHECK: UNRESOLVED: shtest-shell :: error-1.txt
549#  CHECK-NEXT: *** TEST 'shtest-shell :: error-1.txt' FAILED ***
550#  CHECK-NEXT: Exit Code: 1
551# CHECK-EMPTY:
552#  CHECK-NEXT: Command Output (stdout):
553#  CHECK-NEXT: --
554#  CHECK-NEXT: # shell parser error on RUN: at line 3: echo "missing quote
555# CHECK-EMPTY:
556#  CHECK-NEXT: --
557# CHECK-EMPTY:
558#  CHECK-NEXT: ***
559
560# CHECK: FAIL: shtest-shell :: error-2.txt
561# CHECK: *** TEST 'shtest-shell :: error-2.txt' FAILED ***
562# CHECK: Unsupported redirect:
563# CHECK: ***
564
565# CHECK: FAIL: shtest-shell :: mkdir-error-0.txt
566# CHECK: *** TEST 'shtest-shell :: mkdir-error-0.txt' FAILED ***
567# CHECK: mkdir -p temp | rm -rf temp
568# CHECK: # .---command stderr{{-*}}
569# CHECK: # | Unsupported: 'mkdir' cannot be part of a pipeline
570# CHECK: # error: command failed with exit status: 127
571# CHECK: ***
572
573# CHECK: FAIL: shtest-shell :: mkdir-error-1.txt
574# CHECK: *** TEST 'shtest-shell :: mkdir-error-1.txt' FAILED ***
575# CHECK: mkdir -p -m 777 temp
576# CHECK: # .---command stderr{{-*}}
577# CHECK: # | Unsupported: 'mkdir': option -m not recognized
578# CHECK: # error: command failed with exit status: 127
579# CHECK: ***
580
581# CHECK: FAIL: shtest-shell :: mkdir-error-2.txt
582# CHECK: *** TEST 'shtest-shell :: mkdir-error-2.txt' FAILED ***
583# CHECK: mkdir -p
584# CHECK: # .---command stderr{{-*}}
585# CHECK: # | Error: 'mkdir' is missing an operand
586# CHECK: # error: command failed with exit status: 127
587# CHECK: ***
588
589# CHECK: PASS: shtest-shell :: redirects.txt
590
591# CHECK: FAIL: shtest-shell :: rm-error-0.txt
592# CHECK: *** TEST 'shtest-shell :: rm-error-0.txt' FAILED ***
593# CHECK: rm -rf temp | echo "hello"
594# CHECK: # .---command stderr{{-*}}
595# CHECK: # | Unsupported: 'rm' cannot be part of a pipeline
596# CHECK: # error: command failed with exit status: 127
597# CHECK: ***
598
599# CHECK: FAIL: shtest-shell :: rm-error-1.txt
600# CHECK: *** TEST 'shtest-shell :: rm-error-1.txt' FAILED ***
601# CHECK: rm -f -v temp
602# CHECK: # .---command stderr{{-*}}
603# CHECK: # | Unsupported: 'rm': option -v not recognized
604# CHECK: # error: command failed with exit status: 127
605# CHECK: ***
606
607# CHECK: FAIL: shtest-shell :: rm-error-2.txt
608# CHECK: *** TEST 'shtest-shell :: rm-error-2.txt' FAILED ***
609# CHECK: rm -r hello
610# CHECK: # .---command stderr{{-*}}
611# CHECK: # | Error: 'rm' command failed
612# CHECK: # error: command failed with exit status: 1
613# CHECK: ***
614
615# CHECK: FAIL: shtest-shell :: rm-error-3.txt
616# CHECK: *** TEST 'shtest-shell :: rm-error-3.txt' FAILED ***
617# CHECK: Exit Code: 1
618# CHECK: ***
619
620# CHECK: PASS: shtest-shell :: rm-unicode-0.txt
621# CHECK: PASS: shtest-shell :: sequencing-0.txt
622# CHECK: XFAIL: shtest-shell :: sequencing-1.txt
623
624#      CHECK: FAIL: shtest-shell :: stdout-encoding.txt
625#      CHECK: *** TEST 'shtest-shell :: stdout-encoding.txt' FAILED ***
626#      CHECK: cat diff-in.bin
627#      CHECK: # .---command stdout{{-*}}
628# CHECK-NEXT: # | {{.f.o.o.$}}
629# CHECK-NEXT: # | {{.b.a.r.}}
630# CHECK-NEXT: # | {{.b.a.z.$}}
631# CHECK-NEXT: # `---{{-*}}
632#  CHECK-NOT: error
633#      CHECK: false
634#      CHECK: ***
635
636# CHECK: PASS: shtest-shell :: valid-shell.txt
637# CHECK: Unresolved Tests (1)
638# CHECK: Failed Tests (36)
639