| ; Check handling of diagnostics for problematic matches (e.g., variable capture |
| ; overflow) in the case of excluded patterns (e.g., CHECK-NOT). |
| ; |
| ; At one time, FileCheck's exit status for the following example was zero even |
| ; though the excluded pattern does match (it's just capturing that fails). |
| ; Moreover, it printed the error diagnostic only if -vv was specified and input |
| ; dumps were disabled. Test every combination as the logic is hard to get |
| ; right. |
| ; |
| ; TODO: Capturing from an excluded pattern probably shouldn't be permitted |
| ; because it seems useless: it's captured only if the pattern matches, but then |
| ; FileCheck fails. The helpfulness of reporting overflow from that capture is |
| ; perhaps questionable then, but it doesn't seem harmful either. Anyway, the |
| ; goal of this test is simply to exercise the error propagation mechanism for a |
| ; matched excluded pattern. In the future, if we have a more interesting error |
| ; to exercise in that case, we should instead use it in this test, and then we |
| ; might want to think more about where that error should be presented in the |
| ; list of diagnostics. |
| |
| RUN: echo > %t.chk 'CHECK-NOT: [[#122+1]] [[STR:abc]] [[#NUM:]]' |
| RUN: echo > %t.in '123 abc 1000000000000000000000000000000000000000000000000000' |
| |
| ERR-NOT:{{.}} |
| ERR-VV:{{.*}}: remark: implicit EOF: expected string found in input |
| ERR-VV-NEXT:CHECK-NOT: {{.*}} |
| ERR-VV-NEXT:{{ *}}^ |
| ERR-VV-NEXT:{{.*}}: note: found here |
| ERR-VV-EMPTY: |
| ERR-VV-NEXT:^ |
| ERR-NOT:{{.}} |
| ERR:{{.*}}: error: CHECK-NOT: excluded string found in input |
| ERR-NEXT:CHECK-NOT: {{.*}} |
| ERR-NEXT:{{ *}}^ |
| ERR-NEXT:<stdin>:1:1: note: found here |
| ERR-NEXT:123 abc 10{{0*}} |
| ERR-NEXT:^~~~~~~~~{{~*}} |
| ERR-NEXT:<stdin>:1:1: note: with "122+1" equal to "123" |
| ERR-NEXT:123 abc 10{{0*}} |
| ERR-NEXT:^ |
| ERR-NEXT:<stdin>:1:5: note: captured var "STR" |
| ERR-NEXT:123 abc 10{{0*}} |
| ERR-NEXT: ^~~ |
| ERR-NEXT:<stdin>:1:9: error: unable to represent numeric value |
| ERR-NEXT:123 abc 10{{0*}} |
| ERR-NEXT: ^ |
| ERR-NOT:{{error|note|remark}}: |
| |
| DUMP:<<<<<< |
| DUMP-NEXT: 1: 123 abc 10{{0*}} |
| DUMP-NEXT:not:1'0 !~~~~~~~~~{{~*}} error: no match expected |
| DUMP-NEXT:not:1'1 with "122+1" equal to "123" |
| DUMP-NEXT:not:1'2 !~~ captured var "STR" |
| DUMP-NEXT:not:1'3 !~{{~*}} error: unable to represent numeric value |
| DUMP-VV-NEXT: 2: |
| DUMP-VV-NEXT:eof:1 ^ |
| DUMP-NEXT:>>>>>> |
| |
| ;-------------------------------------------------- |
| ; Check -dump-input=never cases. |
| ;-------------------------------------------------- |
| |
| RUN: %ProtectFileCheckOutput \ |
| RUN: not FileCheck -dump-input=never %t.chk < %t.in 2>&1 \ |
| RUN: | FileCheck %s -match-full-lines -check-prefixes=ERR |
| |
| RUN: %ProtectFileCheckOutput \ |
| RUN: not FileCheck -dump-input=never -v %t.chk < %t.in 2>&1 \ |
| RUN: | FileCheck %s -match-full-lines -check-prefixes=ERR |
| |
| RUN: %ProtectFileCheckOutput \ |
| RUN: not FileCheck -dump-input=never -vv %t.chk < %t.in 2>&1 \ |
| RUN: | FileCheck %s -match-full-lines -check-prefixes=ERR,ERR-VV |
| |
| ;-------------------------------------------------- |
| ; Check -dump-input=fail cases. |
| ;-------------------------------------------------- |
| |
| RUN: %ProtectFileCheckOutput \ |
| RUN: not FileCheck -dump-input=fail %t.chk < %t.in 2>&1 \ |
| RUN: | FileCheck %s -match-full-lines -check-prefixes=ERR,DUMP |
| |
| RUN: %ProtectFileCheckOutput \ |
| RUN: not FileCheck -dump-input=fail -v %t.chk < %t.in 2>&1 \ |
| RUN: | FileCheck %s -match-full-lines -check-prefixes=ERR,DUMP |
| |
| RUN: %ProtectFileCheckOutput \ |
| RUN: not FileCheck -dump-input=fail -vv %t.chk < %t.in 2>&1 \ |
| RUN: | FileCheck %s -match-full-lines -check-prefixes=ERR,DUMP,DUMP-VV |