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