xref: /llvm-project/llvm/test/FileCheck/dump-input/filter.txt (revision d3778490622bca45c0768e8ed590cd9fa1797dee)
1; To keep this test maintainable, avoid depending on -dump-input-context's
2; default value, which is checked in dump-input-context.txt instead.
3
4;--------------------------------------------------
5; Create the input file and the check file.
6;--------------------------------------------------
7
8; line 1
9; RUN: echo start >  %t.in
10; RUN: echo foo0  >> %t.in
11; RUN: echo foo1  >> %t.in
12; RUN: echo foo2  >> %t.in
13; RUN: echo foo3  >> %t.in
14; RUN: echo foo4  >> %t.in
15; RUN: echo foo5  >> %t.in
16; RUN: echo foo6  >> %t.in
17; RUN: echo foo7  >> %t.in
18; RUN: echo foo8  >> %t.in
19; RUN: echo foo9  >> %t.in
20; line 12
21; RUN: echo hello >> %t.in
22; RUN: echo foo0  >> %t.in
23; RUN: echo foo1  >> %t.in
24; RUN: echo foo2  >> %t.in
25; RUN: echo foo3  >> %t.in
26; RUN: echo foo4  >> %t.in
27; RUN: echo foo5  >> %t.in
28; RUN: echo foo6  >> %t.in
29; RUN: echo foo7  >> %t.in
30; RUN: echo foo8  >> %t.in
31; RUN: echo foo9  >> %t.in
32; line 23
33; RUN: echo word  >> %t.in
34; RUN: echo foo0  >> %t.in
35; RUN: echo foo1  >> %t.in
36; RUN: echo foo2  >> %t.in
37; RUN: echo foo3  >> %t.in
38; RUN: echo foo4  >> %t.in
39; RUN: echo foo5  >> %t.in
40; RUN: echo foo6  >> %t.in
41; RUN: echo foo7  >> %t.in
42; RUN: echo foo8  >> %t.in
43; RUN: echo foo9  >> %t.in
44; line 34
45; RUN: echo end   >> %t.in
46
47; RUN: echo 'CHECK: start' >  %t.chk
48; RUN: echo 'CHECK: hello' >> %t.chk
49; RUN: echo 'CHECK: world' >> %t.chk
50; RUN: echo 'CHECK: end'   >> %t.chk
51
52;--------------------------------------------------
53; Directives for checking the dump.
54;--------------------------------------------------
55
56;      ALL: <<<<<<
57; ALL-NEXT:            1: start
58; ALL-NEXT: check:1       ^~~~~
59; ALL-NEXT:            2: foo0
60; ALL-NEXT:            3: foo1
61; ALL-NEXT:            4: foo2
62; ALL-NEXT:            5: foo3
63; ALL-NEXT:            6: foo4
64; ALL-NEXT:            7: foo5
65; ALL-NEXT:            8: foo6
66; ALL-NEXT:            9: foo7
67; ALL-NEXT:           10: foo8
68; ALL-NEXT:           11: foo9
69; ALL-NEXT:           12: hello
70; ALL-NEXT: check:2       ^~~~~
71; ALL-NEXT: check:3'0          X error: no match found
72; ALL-NEXT:           13: foo0
73; ALL-NEXT: check:3'0     ~~~~~
74; ALL-NEXT:           14: foo1
75; ALL-NEXT: check:3'0     ~~~~~
76; ALL-NEXT:           15: foo2
77; ALL-NEXT: check:3'0     ~~~~~
78; ALL-NEXT:           16: foo3
79; ALL-NEXT: check:3'0     ~~~~~
80; ALL-NEXT:           17: foo4
81; ALL-NEXT: check:3'0     ~~~~~
82; ALL-NEXT:           18: foo5
83; ALL-NEXT: check:3'0     ~~~~~
84; ALL-NEXT:           19: foo6
85; ALL-NEXT: check:3'0     ~~~~~
86; ALL-NEXT:           20: foo7
87; ALL-NEXT: check:3'0     ~~~~~
88; ALL-NEXT:           21: foo8
89; ALL-NEXT: check:3'0     ~~~~~
90; ALL-NEXT:           22: foo9
91; ALL-NEXT: check:3'0     ~~~~~
92; ALL-NEXT:           23: word
93; ALL-NEXT: check:3'0     ~~~~~
94; ALL-NEXT: check:3'1     ?     possible intended match
95; ALL-NEXT:           24: foo0
96; ALL-NEXT: check:3'0     ~~~~~
97; ALL-NEXT:           25: foo1
98; ALL-NEXT: check:3'0     ~~~~~
99; ALL-NEXT:           26: foo2
100; ALL-NEXT: check:3'0     ~~~~~
101; ALL-NEXT:           27: foo3
102; ALL-NEXT: check:3'0     ~~~~~
103; ALL-NEXT:           28: foo4
104; ALL-NEXT: check:3'0     ~~~~~
105; ALL-NEXT:           29: foo5
106; ALL-NEXT: check:3'0     ~~~~~
107; ALL-NEXT:           30: foo6
108; ALL-NEXT: check:3'0     ~~~~~
109; ALL-NEXT:           31: foo7
110; ALL-NEXT: check:3'0     ~~~~~
111; ALL-NEXT:           32: foo8
112; ALL-NEXT: check:3'0     ~~~~~
113; ALL-NEXT:           33: foo9
114; ALL-NEXT: check:3'0     ~~~~~
115; ALL-NEXT:           34: end
116; ALL-NEXT: check:3'0     ~~~~
117; ALL-NEXT: >>>>>>
118
119;      ANNOTATION-FULL: <<<<<<
120; ANNOTATION-FULL-NEXT:            1: start
121; ANNOTATION-FULL-NEXT: check:1       ^~~~~
122; ANNOTATION-FULL-NEXT:            2: foo0
123; ANNOTATION-FULL-NEXT:            3: foo1
124; ANNOTATION-FULL-NEXT:            .
125; ANNOTATION-FULL-NEXT:            .
126; ANNOTATION-FULL-NEXT:            .
127; ANNOTATION-FULL-NEXT:           10: foo8
128; ANNOTATION-FULL-NEXT:           11: foo9
129; ANNOTATION-FULL-NEXT:           12: hello
130; ANNOTATION-FULL-NEXT: check:2       ^~~~~
131; ANNOTATION-FULL-NEXT: check:3'0          X error: no match found
132; ANNOTATION-FULL-NEXT:           13: foo0
133; ANNOTATION-FULL-NEXT: check:3'0     ~~~~~
134; ANNOTATION-FULL-NEXT:           14: foo1
135; ANNOTATION-FULL-NEXT: check:3'0     ~~~~~
136; ANNOTATION-FULL-NEXT:           15: foo2
137; ANNOTATION-FULL-NEXT: check:3'0     ~~~~~
138; ANNOTATION-FULL-NEXT:           16: foo3
139; ANNOTATION-FULL-NEXT: check:3'0     ~~~~~
140; ANNOTATION-FULL-NEXT:           17: foo4
141; ANNOTATION-FULL-NEXT: check:3'0     ~~~~~
142; ANNOTATION-FULL-NEXT:           18: foo5
143; ANNOTATION-FULL-NEXT: check:3'0     ~~~~~
144; ANNOTATION-FULL-NEXT:           19: foo6
145; ANNOTATION-FULL-NEXT: check:3'0     ~~~~~
146; ANNOTATION-FULL-NEXT:           20: foo7
147; ANNOTATION-FULL-NEXT: check:3'0     ~~~~~
148; ANNOTATION-FULL-NEXT:           21: foo8
149; ANNOTATION-FULL-NEXT: check:3'0     ~~~~~
150; ANNOTATION-FULL-NEXT:           22: foo9
151; ANNOTATION-FULL-NEXT: check:3'0     ~~~~~
152; ANNOTATION-FULL-NEXT:           23: word
153; ANNOTATION-FULL-NEXT: check:3'0     ~~~~~
154; ANNOTATION-FULL-NEXT: check:3'1     ?     possible intended match
155; ANNOTATION-FULL-NEXT:           24: foo0
156; ANNOTATION-FULL-NEXT: check:3'0     ~~~~~
157; ANNOTATION-FULL-NEXT:           25: foo1
158; ANNOTATION-FULL-NEXT: check:3'0     ~~~~~
159; ANNOTATION-FULL-NEXT:           26: foo2
160; ANNOTATION-FULL-NEXT: check:3'0     ~~~~~
161; ANNOTATION-FULL-NEXT:           27: foo3
162; ANNOTATION-FULL-NEXT: check:3'0     ~~~~~
163; ANNOTATION-FULL-NEXT:           28: foo4
164; ANNOTATION-FULL-NEXT: check:3'0     ~~~~~
165; ANNOTATION-FULL-NEXT:           29: foo5
166; ANNOTATION-FULL-NEXT: check:3'0     ~~~~~
167; ANNOTATION-FULL-NEXT:           30: foo6
168; ANNOTATION-FULL-NEXT: check:3'0     ~~~~~
169; ANNOTATION-FULL-NEXT:           31: foo7
170; ANNOTATION-FULL-NEXT: check:3'0     ~~~~~
171; ANNOTATION-FULL-NEXT:           32: foo8
172; ANNOTATION-FULL-NEXT: check:3'0     ~~~~~
173; ANNOTATION-FULL-NEXT:           33: foo9
174; ANNOTATION-FULL-NEXT: check:3'0     ~~~~~
175; ANNOTATION-FULL-NEXT:           34: end
176; ANNOTATION-FULL-NEXT: check:3'0     ~~~~
177; ANNOTATION-FULL-NEXT: >>>>>>
178
179;      ANNOTATION: <<<<<<
180; ANNOTATION-NEXT:            1: start
181; ANNOTATION-NEXT: check:1       ^~~~~
182; ANNOTATION-NEXT:            2: foo0
183; ANNOTATION-NEXT:            3: foo1
184; ANNOTATION-NEXT:            .
185; ANNOTATION-NEXT:            .
186; ANNOTATION-NEXT:            .
187; ANNOTATION-NEXT:           10: foo8
188; ANNOTATION-NEXT:           11: foo9
189; ANNOTATION-NEXT:           12: hello
190; ANNOTATION-NEXT: check:2       ^~~~~
191; ANNOTATION-NEXT: check:3'0          X error: no match found
192; ANNOTATION-NEXT:           13: foo0
193; ANNOTATION-NEXT: check:3'0     ~~~~~
194; ANNOTATION-NEXT:           14: foo1
195; ANNOTATION-NEXT: check:3'0     ~~~~~
196; ANNOTATION-NEXT:            .
197; ANNOTATION-NEXT:            .
198; ANNOTATION-NEXT:            .
199; ANNOTATION-NEXT:           21: foo8
200; ANNOTATION-NEXT: check:3'0     ~~~~~
201; ANNOTATION-NEXT:           22: foo9
202; ANNOTATION-NEXT: check:3'0     ~~~~~
203; ANNOTATION-NEXT:           23: word
204; ANNOTATION-NEXT: check:3'0     ~~~~~
205; ANNOTATION-NEXT: check:3'1     ?     possible intended match
206; ANNOTATION-NEXT:           24: foo0
207; ANNOTATION-NEXT: check:3'0     ~~~~~
208; ANNOTATION-NEXT:           25: foo1
209; ANNOTATION-NEXT: check:3'0     ~~~~~
210; ANNOTATION-NEXT:            .
211; ANNOTATION-NEXT:            .
212; ANNOTATION-NEXT:            .
213; ANNOTATION-NEXT: >>>>>>
214
215;      ERROR: <<<<<<
216; ERROR-NEXT:            .
217; ERROR-NEXT:            .
218; ERROR-NEXT:            .
219; ERROR-NEXT:           10: foo8
220; ERROR-NEXT:           11: foo9
221; ERROR-NEXT:           12: hello
222; ERROR-NEXT: check:2       ^~~~~
223; ERROR-NEXT: check:3'0          X error: no match found
224; ERROR-NEXT:           13: foo0
225; ERROR-NEXT: check:3'0     ~~~~~
226; ERROR-NEXT:           14: foo1
227; ERROR-NEXT: check:3'0     ~~~~~
228; ERROR-NEXT:            .
229; ERROR-NEXT:            .
230; ERROR-NEXT:            .
231; ERROR-NEXT:           21: foo8
232; ERROR-NEXT: check:3'0     ~~~~~
233; ERROR-NEXT:           22: foo9
234; ERROR-NEXT: check:3'0     ~~~~~
235; ERROR-NEXT:           23: word
236; ERROR-NEXT: check:3'0     ~~~~~
237; ERROR-NEXT: check:3'1     ?     possible intended match
238; ERROR-NEXT:           24: foo0
239; ERROR-NEXT: check:3'0     ~~~~~
240; ERROR-NEXT:           25: foo1
241; ERROR-NEXT: check:3'0     ~~~~~
242; ERROR-NEXT:            .
243; ERROR-NEXT:            .
244; ERROR-NEXT:            .
245; ERROR-NEXT: >>>>>>
246
247;--------------------------------------------------
248; Check -dump-input-filter=<bad value>.
249;--------------------------------------------------
250
251; RUN: %ProtectFileCheckOutput \
252; RUN: not FileCheck -dump-input-context=2 -vv %t.chk < %t.in 2>&1 \
253; RUN:               -dump-input-filter=foobar \
254; RUN: | FileCheck %s -match-full-lines -check-prefix=BADVAL
255
256BADVAL: {{F|f}}ile{{C|c}}heck{{.*}}: for the --dump-input-filter option: Cannot find option named 'foobar'!
257
258;--------------------------------------------------
259; Check -dump-input-filter explicit values.
260;--------------------------------------------------
261
262; RUN: %ProtectFileCheckOutput \
263; RUN: not FileCheck -dump-input-context=2 -vv %t.chk < %t.in 2>&1 \
264; RUN:               -dump-input-filter=all \
265; RUN: | FileCheck %s -match-full-lines -check-prefixes=ALL
266
267; RUN: %ProtectFileCheckOutput \
268; RUN: not FileCheck -dump-input-context=2 -vv %t.chk < %t.in 2>&1 \
269; RUN:               -dump-input-filter=annotation-full \
270; RUN: | FileCheck %s -match-full-lines -check-prefixes=ANNOTATION-FULL
271
272; RUN: %ProtectFileCheckOutput \
273; RUN: not FileCheck -dump-input-context=2 -vv %t.chk < %t.in 2>&1 \
274; RUN:               -dump-input-filter=annotation \
275; RUN: | FileCheck %s -match-full-lines -check-prefixes=ANNOTATION
276
277; RUN: %ProtectFileCheckOutput \
278; RUN: not FileCheck -dump-input-context=2 -vv %t.chk < %t.in 2>&1 \
279; RUN:               -dump-input-filter=error \
280; RUN: | FileCheck %s -match-full-lines -check-prefixes=ERROR
281
282;--------------------------------------------------
283; Check -dump-input-filter defaults.
284;--------------------------------------------------
285
286; no -dump-input => -dump-input-filter=error
287; RUN: %ProtectFileCheckOutput \
288; RUN: not FileCheck -dump-input-context=2 -vv %t.chk < %t.in 2>&1 \
289; RUN: | FileCheck %s -match-full-lines -check-prefixes=ERROR
290
291; -dump-input=fail => -dump-input-filter=error
292; RUN: %ProtectFileCheckOutput \
293; RUN: not FileCheck -dump-input-context=2 -vv %t.chk < %t.in 2>&1 \
294; RUN:               -dump-input=fail \
295; RUN: | FileCheck %s -match-full-lines -check-prefixes=ERROR
296
297; -dump-input=always => -dump-input-filter=all
298; RUN: %ProtectFileCheckOutput \
299; RUN: not FileCheck -dump-input-context=2 -vv %t.chk < %t.in 2>&1 \
300; RUN:               -dump-input=always \
301; RUN: | FileCheck %s -match-full-lines -check-prefixes=ALL
302
303;--------------------------------------------------
304; Check multiple -dump-input-filter options.
305;
306; This might occur when a test author specifies -dump-input-filter on a specific
307; FileCheck call while a test runner specifies -dump-input-filter in
308; FILECHECK_OPTS, but check the behavior generally.
309;
310; The value providing the most information wins.
311;--------------------------------------------------
312
313;- - - - - - - - - - - - - - - - - - - - - - - - -
314; Check duplicate.
315;- - - - - - - - - - - - - - - - - - - - - - - - -
316
317; all, all => all
318; RUN: %ProtectFileCheckOutput \
319; RUN: not FileCheck -dump-input-context=2 -vv %t.chk < %t.in 2>&1 \
320; RUN:               -dump-input-filter=all -dump-input-filter=all \
321; RUN: | FileCheck %s -match-full-lines -check-prefixes=ALL
322
323;- - - - - - - - - - - - - - - - - - - - - - - - -
324; Check precedence.
325;- - - - - - - - - - - - - - - - - - - - - - - - -
326
327; all, annotation-full => all
328; RUN: %ProtectFileCheckOutput \
329; RUN: not FileCheck -dump-input-context=2 -vv %t.chk < %t.in 2>&1 \
330; RUN:               -dump-input-filter=all -dump-input-filter=annotation-full \
331; RUN: | FileCheck %s -match-full-lines -check-prefixes=ALL
332
333; annotation-full, annotation => annotation-full
334; RUN: %ProtectFileCheckOutput \
335; RUN: not FileCheck -dump-input-context=2 -vv %t.chk < %t.in 2>&1 \
336; RUN:               -dump-input-filter=annotation-full \
337; RUN:               -dump-input-filter=annotation \
338; RUN: | FileCheck %s -match-full-lines -check-prefixes=ANNOTATION-FULL
339
340; annotation, error => annotation
341; RUN: %ProtectFileCheckOutput \
342; RUN: not FileCheck -dump-input-context=2 -vv %t.chk < %t.in 2>&1 \
343; RUN:               -dump-input-filter=annotation -dump-input-filter=error \
344; RUN: | FileCheck %s -match-full-lines -check-prefixes=ANNOTATION
345
346;- - - - - - - - - - - - - - - - - - - - - - - - -
347; Check that order doesn't matter.
348;- - - - - - - - - - - - - - - - - - - - - - - - -
349
350; error, annotation => annotation
351; RUN: %ProtectFileCheckOutput \
352; RUN: not FileCheck -dump-input-context=2 -vv %t.chk < %t.in 2>&1 \
353; RUN:               -dump-input-filter=error -dump-input-filter=annotation \
354; RUN: | FileCheck %s -match-full-lines -check-prefixes=ANNOTATION
355
356;- - - - - - - - - - - - - - - - - - - - - - - - -
357; Check that FILECHECK_OPTS isn't handled differently.
358;- - - - - - - - - - - - - - - - - - - - - - - - -
359
360; annotation, error => annotation
361; RUN: %ProtectFileCheckOutput FILECHECK_OPTS=-dump-input-filter=annotation \
362; RUN: not FileCheck -dump-input-context=2 -vv %t.chk < %t.in 2>&1 \
363; RUN:               -dump-input-filter=error \
364; RUN: | FileCheck %s -match-full-lines -check-prefixes=ANNOTATION
365
366; error, annotation => annotation
367; RUN: %ProtectFileCheckOutput FILECHECK_OPTS=-dump-input-filter=error \
368; RUN: not FileCheck -dump-input-context=2 -vv %t.chk < %t.in 2>&1 \
369; RUN:               -dump-input-filter=annotation \
370; RUN: | FileCheck %s -match-full-lines -check-prefixes=ANNOTATION
371
372;--------------------------------------------------
373; Check the case where all input lines are filtered out.
374;--------------------------------------------------
375
376; RUN: echo 'CHECK: hello' > %t.good.chk
377
378; RUN: %ProtectFileCheckOutput \
379; RUN: FileCheck -dump-input=always -dump-input-filter=error -vv %t.good.chk \
380; RUN:           < %t.in 2>&1 \
381; RUN: | FileCheck %s -match-full-lines -check-prefixes=EMPTY
382
383;      EMPTY: <<<<<<
384; EMPTY-NEXT:          .
385; EMPTY-NEXT:          .
386; EMPTY-NEXT:          .
387; EMPTY-NEXT: >>>>>>
388
389;--------------------------------------------------
390; Check that other kinds of errors are included by -dump-input-filter=error.
391;
392; "error: no match found" and "possible intended match" are checked above.
393;--------------------------------------------------
394
395;- - - - - - - - - - - - - - - - - - - - - - - - -
396; error: no match expected.
397;- - - - - - - - - - - - - - - - - - - - - - - - -
398
399; RUN: echo 'foo'            > %t.not-err.in
400; RUN: echo 'CHECK-NOT: foo' > %t.not-err.chk
401
402; RUN: %ProtectFileCheckOutput \
403; RUN: not FileCheck -dump-input-context=0 -dump-input-filter=error \
404; RUN:               %t.not-err.chk < %t.not-err.in 2>&1 \
405; RUN: | FileCheck %s -match-full-lines -check-prefixes=NOT-ERR
406
407;      NOT-ERR:        1: foo
408; NOT-ERR-NEXT: not:1     !~~ error: no match expected
409
410;- - - - - - - - - - - - - - - - - - - - - - - - -
411; error: match on wrong line.
412;- - - - - - - - - - - - - - - - - - - - - - - - -
413
414; RUN: echo 'foo'             >  %t.next-err.in
415; RUN: echo 'foo'             >> %t.next-err.in
416; RUN: echo 'bar'             >> %t.next-err.in
417; RUN: echo 'CHECK: foo'      >  %t.next-err.chk
418; RUN: echo 'CHECK-NEXT: bar' >> %t.next-err.chk
419
420; RUN: %ProtectFileCheckOutput \
421; RUN: not FileCheck -dump-input-context=0 -dump-input-filter=error \
422; RUN:               %t.next-err.chk < %t.next-err.in 2>&1 \
423; RUN: | FileCheck %s -match-full-lines -check-prefixes=NEXT-ERR
424
425;      NEXT-ERR:         3: bar
426; NEXT-ERR-NEXT: next:2     !~~ error: match on wrong line
427