Index: llvm/docs/TestingGuide.rst =================================================================== --- llvm/docs/TestingGuide.rst +++ llvm/docs/TestingGuide.rst @@ -549,6 +549,13 @@ ``i686-pc-mingw32``. This allows a test to run with a specific ABI without constraining it to a specific triple. +**FileCheck-specific substitutions:** + +``%ProtectFileCheckOutput`` + This should precede a ``FileCheck`` call if and only if the call's textual + output affects test results. It's usually easy to tell: just look for + redirection or piping of the ``FileCheck`` call's stdout or stderr. + To add more substituations, look at ``test/lit.cfg`` or ``lit.local.cfg``. Index: llvm/test/FileCheck/check-count.txt =================================================================== --- llvm/test/FileCheck/check-count.txt +++ llvm/test/FileCheck/check-count.txt @@ -4,19 +4,27 @@ this is something else -; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK-ERR1 2>&1 | FileCheck %s --check-prefix=ERRCOUNT1 +; RUN: %ProtectFileCheckOutput \ +; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK-ERR1 2>&1 \ +; RUN: | FileCheck %s --check-prefix=ERRCOUNT1 CHECK-ERR1-COUNT-xx: this ERRCOUNT1: [[@LINE-1]]:18: error: invalid count in -COUNT specification on prefix 'CHECK-ERR1' -; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK-ERR2 2>&1 | FileCheck %s --check-prefix=ERRCOUNT2 +; RUN: %ProtectFileCheckOutput \ +; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK-ERR2 2>&1 \ +; RUN: | FileCheck %s --check-prefix=ERRCOUNT2 CHECK-ERR2-COUNT-0x1: something ERRCOUNT2: [[@LINE-1]]:19: error: invalid count in -COUNT specification on prefix 'CHECK-ERR2' -; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK-ERR3 2>&1 | FileCheck %s --check-prefix=ERRCOUNT3 +; RUN: %ProtectFileCheckOutput \ +; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK-ERR3 2>&1 \ +; RUN: | FileCheck %s --check-prefix=ERRCOUNT3 CHECK-ERR3-COUNT-100x: else ERRCOUNT3: [[@LINE-1]]:21: error: invalid count in -COUNT specification on prefix 'CHECK-ERR3' -; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK-ERR4 2>&1 | FileCheck %s --check-prefix=ERRCOUNT4 +; RUN: %ProtectFileCheckOutput \ +; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK-ERR4 2>&1 \ +; RUN: | FileCheck %s --check-prefix=ERRCOUNT4 CHECK-ERR4-COUNT-0: else ERRCOUNT4: [[@LINE-1]]:19: error: invalid count in -COUNT specification on prefix 'CHECK-ERR4' @@ -80,17 +88,23 @@ ; Tests on mismatches: ; -; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK-MIS1 2>&1 | FileCheck %s --check-prefix=MISCOUNT1 +; RUN: %ProtectFileCheckOutput \ +; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK-MIS1 2>&1 \ +; RUN: | FileCheck %s --check-prefix=MISCOUNT1 CHECK-MIS1-COUNT-3: this is duplicate CHECK-MIS1: {{^}}this is not duplicate MISCOUNT1: [[@LINE-1]]:13: error: CHECK-MIS1: expected string not found in input -; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK-MIS2 2>&1 | FileCheck %s --check-prefix=MISCOUNT2 +; RUN: %ProtectFileCheckOutput \ +; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK-MIS2 2>&1 \ +; RUN: | FileCheck %s --check-prefix=MISCOUNT2 CHECK-MIS2-COUNT-10: {{^this is duplicate}} CHECK-MIS2: {{^}}this is not duplicate MISCOUNT2: [[@LINE-2]]:22: error: CHECK-MIS2-COUNT: expected string not found in input -; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK-MIS3 2>&1 | FileCheck %s --check-prefix=MISCOUNT3 +; RUN: %ProtectFileCheckOutput \ +; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK-MIS3 2>&1 \ +; RUN: | FileCheck %s --check-prefix=MISCOUNT3 CHECK-MIS3-COUNT-5: this is duplicate CHECK-MIS3-EMPTY: CHECK-MIS3-LABEL: Many-label: Index: llvm/test/FileCheck/check-empty-tag.txt =================================================================== --- llvm/test/FileCheck/check-empty-tag.txt +++ llvm/test/FileCheck/check-empty-tag.txt @@ -8,32 +8,44 @@ CHECK1-NEXT: bar ; next line must be blank -; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK2A 2>&1 | FileCheck %s --check-prefix=CHECK2B +; RUN: %ProtectFileCheckOutput \ +; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK2A 2>&1 \ +; RUN: | FileCheck %s --check-prefix=CHECK2B badger CHECK2A: badger CHECK2A-EMPTY: CHECK2B: CHECK2A-EMPTY: is not on the line after the previous match ; CHECK-EMPTY must have empty pattern -; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK3A 2>&1 | FileCheck %s --check-prefix=CHECK3B +; RUN: %ProtectFileCheckOutput \ +; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK3A 2>&1 \ +; RUN: | FileCheck %s --check-prefix=CHECK3B CHECK3A: foo CHECK3A-EMPTY: this is not empty CHECK3B: found non-empty check string for empty check with prefix 'CHECK3A:' ; CHECK-EMPTY cannot be the first check -; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK4A 2>&1 | FileCheck %s --check-prefix=CHECK4B +; RUN: %ProtectFileCheckOutput \ +; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK4A 2>&1 \ +; RUN: | FileCheck %s --check-prefix=CHECK4B CHECK4A-EMPTY: CHECK4B: found 'CHECK4A-EMPTY' without previous 'CHECK4A: line ; CHECK-EMPTY-NOT and CHECK-NOT-EMPTY rejected -; RUN: not FileCheck %s --input-file %s --check-prefixes=CHECK5A 2>&1 | FileCheck %s --check-prefix=CHECK5C -; RUN: not FileCheck %s --input-file %s --check-prefixes=CHECK5B 2>&1 | FileCheck %s --check-prefix=CHECK5C +; RUN: %ProtectFileCheckOutput \ +; RUN: not FileCheck %s --input-file %s --check-prefixes=CHECK5A 2>&1 \ +; RUN: | FileCheck %s --check-prefix=CHECK5C +; RUN: %ProtectFileCheckOutput \ +; RUN: not FileCheck %s --input-file %s --check-prefixes=CHECK5B 2>&1 \ +; RUN: | FileCheck %s --check-prefix=CHECK5C CHECK5A-EMPTY-NOT: CHECK5B-NOT-EMPTY: CHECK5C: unsupported -NOT combo on prefix 'CHECK5{{A|B}}' ; whitespace does not count as empty -; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK6A --match-full-lines 2>&1 | FileCheck %s --check-prefix=CHECK6B +; RUN: %ProtectFileCheckOutput \ +; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK6A --match-full-lines \ +; RUN: 2>&1 | FileCheck %s --check-prefix=CHECK6B CHECK6A: the next line has spaces CHECK6A-EMPTY: CHECK6B: expected string not found in input Index: llvm/test/FileCheck/check-empty.txt =================================================================== --- llvm/test/FileCheck/check-empty.txt +++ llvm/test/FileCheck/check-empty.txt @@ -1,7 +1,18 @@ -// RUN: not FileCheck -check-prefix=FOO %s &1 | FileCheck -check-prefix=EMPTY-ERR %s -// RUN: not FileCheck -check-prefix=NOFOO %s &1 | FileCheck -check-prefix=EMPTY-ERR %s -// RUN: not FileCheck -check-prefix=FOO -allow-empty %s &1 | FileCheck -check-prefix=NO-EMPTY-ERR -check-prefix=NOT-FOUND %s -// RUN: FileCheck -check-prefix=NOFOO -allow-empty %s &1 | FileCheck -allow-empty -check-prefix=NO-EMPTY-ERR %s +// RUN: %ProtectFileCheckOutput \ +// RUN: not FileCheck -check-prefix=FOO %s &1 \ +// RUN: | FileCheck -check-prefix=EMPTY-ERR %s +// +// RUN: %ProtectFileCheckOutput \ +// RUN: not FileCheck -check-prefix=NOFOO %s &1 \ +// RUN: | FileCheck -check-prefix=EMPTY-ERR %s +// +// RUN: %ProtectFileCheckOutput \ +// RUN: not FileCheck -check-prefix=FOO -allow-empty %s &1 \ +// RUN: | FileCheck -check-prefix=NO-EMPTY-ERR -check-prefix=NOT-FOUND %s +// +// RUN: %ProtectFileCheckOutput \ +// RUN: FileCheck -check-prefix=NOFOO -allow-empty %s &1 \ +// RUN: | FileCheck -allow-empty -check-prefix=NO-EMPTY-ERR %s ; FOO: foo ; NOFOO-NOT: foo Index: llvm/test/FileCheck/check-ignore-case.txt =================================================================== --- llvm/test/FileCheck/check-ignore-case.txt +++ llvm/test/FileCheck/check-ignore-case.txt @@ -15,7 +15,10 @@ ## Check that option --implicit-not works case insensitively. # RUN: sed '/^#/d' %s | FileCheck --implicit-check-not=sTrInG %s -# RUN: sed '/^#/d' %s | not FileCheck --ignore-case --implicit-check-not=sTrInG %s 2>&1 | FileCheck --check-prefix=ERROR %s +# RUN: sed '/^#/d' %s \ +# RUN: | %ProtectFileCheckOutput \ +# RUN: not FileCheck --ignore-case --implicit-check-not=sTrInG %s 2>&1 \ +# RUN: | FileCheck --check-prefix=ERROR %s this is the STRING to be matched Index: llvm/test/FileCheck/check-label-dag.txt =================================================================== --- llvm/test/FileCheck/check-label-dag.txt +++ llvm/test/FileCheck/check-label-dag.txt @@ -1,4 +1,5 @@ -; RUN: not FileCheck -input-file %s %s 2>&1 | FileCheck --check-prefix=ERROR %s +; RUN: %ProtectFileCheckOutput not FileCheck -input-file %s %s 2>&1 \ +; RUN: | FileCheck --check-prefix=ERROR %s bar zed Index: llvm/test/FileCheck/check-label.txt =================================================================== --- llvm/test/FileCheck/check-label.txt +++ llvm/test/FileCheck/check-label.txt @@ -1,5 +1,8 @@ ; RUN: FileCheck -input-file %s %s -check-prefix=CHECKOK -; RUN: not FileCheck -input-file %s %s -check-prefix=CHECKFAIL 2>&1 | FileCheck %s -check-prefix=CHECKERROR +; +; RUN: %ProtectFileCheckOutput \ +; RUN: not FileCheck -input-file %s %s -check-prefix=CHECKFAIL 2>&1 \ +; RUN: | FileCheck %s -check-prefix=CHECKERROR label0: a Index: llvm/test/FileCheck/check-multiple-prefixes-nomatch-2.txt =================================================================== --- llvm/test/FileCheck/check-multiple-prefixes-nomatch-2.txt +++ llvm/test/FileCheck/check-multiple-prefixes-nomatch-2.txt @@ -1,6 +1,14 @@ -; RUN: not FileCheck -input-file %s %s -check-prefix=FOO -check-prefix=BAR 2>&1 | FileCheck %s -; RUN: not FileCheck -input-file %s %s -check-prefixes=FOO,BAR 2>&1 | FileCheck %s -; RUN: not FileCheck -input-file %s %s -check-prefixes=BAR,FOO 2>&1 | FileCheck %s +; RUN: %ProtectFileCheckOutput \ +; RUN: not FileCheck -input-file %s %s -check-prefix=FOO -check-prefix=BAR \ +; RUN: 2>&1 | FileCheck %s +; +; RUN: %ProtectFileCheckOutput \ +; RUN: not FileCheck -input-file %s %s -check-prefixes=FOO,BAR 2>&1 \ +; RUN: | FileCheck %s +; +; RUN: %ProtectFileCheckOutput \ +; RUN: not FileCheck -input-file %s %s -check-prefixes=BAR,FOO 2>&1 \ +; RUN: | FileCheck %s fog bar Index: llvm/test/FileCheck/check-multiple-prefixes-nomatch.txt =================================================================== --- llvm/test/FileCheck/check-multiple-prefixes-nomatch.txt +++ llvm/test/FileCheck/check-multiple-prefixes-nomatch.txt @@ -1,6 +1,14 @@ -; RUN: not FileCheck -input-file %s %s -check-prefix=FOO -check-prefix=BAR 2>&1 | FileCheck %s -; RUN: not FileCheck -input-file %s %s -check-prefixes=FOO,BAR 2>&1 | FileCheck %s -; RUN: not FileCheck -input-file %s %s -check-prefixes=BAR,FOO 2>&1 | FileCheck %s +; RUN: %ProtectFileCheckOutput \ +; RUN: not FileCheck -input-file %s %s -check-prefix=FOO -check-prefix=BAR \ +; RUN: 2>&1 | FileCheck %s +; +; RUN: %ProtectFileCheckOutput \ +; RUN: not FileCheck -input-file %s %s -check-prefixes=FOO,BAR 2>&1 \ +; RUN: | FileCheck %s +; +; RUN: %ProtectFileCheckOutput \ +; RUN: not FileCheck -input-file %s %s -check-prefixes=BAR,FOO 2>&1 \ +; RUN: | FileCheck %s BAR bar Index: llvm/test/FileCheck/check-not-diaginfo.txt =================================================================== --- llvm/test/FileCheck/check-not-diaginfo.txt +++ llvm/test/FileCheck/check-not-diaginfo.txt @@ -1,4 +1,4 @@ -; RUN: not FileCheck --input-file %s %s 2>&1 \ +; RUN: %ProtectFileCheckOutput not FileCheck --input-file %s %s 2>&1 \ ; RUN: | FileCheck --strict-whitespace --check-prefix DIAG %s CHECK-NOT: test Index: llvm/test/FileCheck/check-prefixes.txt =================================================================== --- llvm/test/FileCheck/check-prefixes.txt +++ llvm/test/FileCheck/check-prefixes.txt @@ -1,5 +1,8 @@ // RUN: FileCheck -check-prefix=ANOTHER-PREFIX -input-file %s %s -// RUN: not FileCheck -check-prefix=PREFIX -input-file %s %s 2>&1 | FileCheck -check-prefix=CHECK-NONEXISTENT-PREFIX %s +// +// RUN: %ProtectFileCheckOutput \ +// RUN: not FileCheck -check-prefix=PREFIX -input-file %s %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-NONEXISTENT-PREFIX %s foobar ; ANOTHER-PREFIX: foobar Index: llvm/test/FileCheck/dump-input-annotations.txt =================================================================== --- llvm/test/FileCheck/dump-input-annotations.txt +++ llvm/test/FileCheck/dump-input-annotations.txt @@ -15,6 +15,7 @@ ; RUN: echo 'CHECK: hello' > %t.chk ; RUN: echo 'CHECK: universe' >> %t.chk +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -v 2>&1 \ ; RUN: | FileCheck -strict-whitespace -match-full-lines -check-prefix=ALIGN \ ; RUN: -implicit-check-not='remark:' %s @@ -51,12 +52,15 @@ ; RUN: echo 'CHECK: hello' > %t.chk ; RUN: echo 'CHECK: world' >> %t.chk +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefix=CHK \ ; RUN: -implicit-check-not='remark:' +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -v 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=CHK,CHK-V \ ; RUN: -implicit-check-not='remark:' +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -vv 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=CHK,CHK-V \ ; RUN: -implicit-check-not='remark:' @@ -88,12 +92,15 @@ ; RUN: echo 'CHECK-COUNT-3: pete' > %t.chk +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=CNT,CNT-Q \ ; RUN: -implicit-check-not='remark:' +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -v 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=CNT,CNT-V \ ; RUN: -implicit-check-not='remark:' +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -vv 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=CNT,CNT-V \ ; RUN: -implicit-check-not='remark:' @@ -125,12 +132,15 @@ ; RUN: echo 'CHECK-NEXT: again' >> %t.chk ; RUN: echo 'CHECK-NEXT: world' >> %t.chk +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefix=NXT \ ; RUN: -implicit-check-not='remark:' +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -v 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=NXT,NXT-V \ ; RUN: -implicit-check-not='remark:' +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -vv 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=NXT,NXT-V,NXT-VV \ ; RUN: -implicit-check-not='remark:' @@ -153,6 +163,7 @@ ; RUN: echo 'yonder' >> %t.in ; RUN: echo 'world' >> %t.in +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefix=NXT2 @@ -178,12 +189,15 @@ ; RUN: echo 'CHECK-SAME: world' >> %t.chk ; RUN: echo 'CHECK-SAME: again' >> %t.chk +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefix=SAM \ ; RUN: -implicit-check-not='remark:' +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -v 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=SAM,SAM-V \ ; RUN: -implicit-check-not='remark:' +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -vv 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=SAM,SAM-V,SAM-VV \ ; RUN: -implicit-check-not='remark:' @@ -203,6 +217,7 @@ ; RUN: echo 'again' >> %t.in +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -v 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=SAM2 \ ; RUN: -implicit-check-not='remark:' @@ -241,12 +256,15 @@ ; RUN: echo 'CHECK-EMPTY:' >> %t.chk ; RUN: echo 'CHECK-LABEL: label' >> %t.chk +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefix=EMP \ ; RUN: -implicit-check-not='remark:' +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -v 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=EMP,EMP-V \ ; RUN: -implicit-check-not='remark:' +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -vv 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=EMP,EMP-V,EMP-VV \ ; RUN: -implicit-check-not='remark:' @@ -275,12 +293,15 @@ ; RUN: echo 'CHECK: hello' > %t.chk ; RUN: echo 'CHECK-EMPTY:' >> %t.chk +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefix=EMP2 \ ; RUN: -implicit-check-not='remark:' +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -v 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=EMP2,EMP2-V \ ; RUN: -implicit-check-not='remark:' +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -vv 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=EMP2,EMP2-V,EMP2-VV \ ; RUN: -implicit-check-not='remark:' @@ -310,12 +331,15 @@ ; RUN: echo 'CHECK-NOT: goodbye' > %t.chk ; RUN: echo 'CHECK-NOT: world' >> %t.chk +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefix=NOT \ ; RUN: -implicit-check-not='remark:' +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -v 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=NOT,NOT-V \ ; RUN: -implicit-check-not='remark:' +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -vv 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=NOT,NOT-V,NOT-VV \ ; RUN: -implicit-check-not='remark:' @@ -340,12 +364,15 @@ ; RUN: echo 'CHECK: ain' >> %t.chk +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefix=NOT2 \ ; RUN: -implicit-check-not='remark:' +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -v 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=NOT2,NOT2-V \ ; RUN: -implicit-check-not='remark:' +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -vv 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=NOT2,NOT2-V,NOT2-VV \ ; RUN: -implicit-check-not='remark:' @@ -387,12 +414,15 @@ ; DAG-VQ = -v and not -vv ; DAG-VV = -vv +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=DAG,DAG-Q \ ; RUN: -implicit-check-not='remark:' +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -v 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=DAG,DAG-V,DAG-VQ \ ; RUN: -implicit-check-not='remark:' +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -vv 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=DAG,DAG-V,DAG-VV \ ; RUN: -implicit-check-not='remark:' @@ -434,12 +464,15 @@ ; RUN: echo 'CHECK: foo' >> %t.chk ; RUN: echo 'CHECK-LABEL: lab2' >> %t.chk +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=LAB \ ; RUN: -implicit-check-not='remark:' +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -v 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=LAB,LAB-V \ ; RUN: -implicit-check-not='remark:' +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -dump-input=always -input-file %t.in %t.chk -vv 2>&1 \ ; RUN: | FileCheck -match-full-lines %s -check-prefixes=LAB,LAB-V,LAB-VV \ ; RUN: -implicit-check-not='remark:' Index: llvm/test/FileCheck/dump-input-enable.txt =================================================================== --- llvm/test/FileCheck/dump-input-enable.txt +++ llvm/test/FileCheck/dump-input-enable.txt @@ -18,12 +18,13 @@ ; Check -dump-input=. ;-------------------------------------------------- +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=foobar 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefix=BADVAL ; No positional arg. -; RUN: not FileCheck -dump-input=foobar 2>&1 \ +; RUN: %ProtectFileCheckOutput not FileCheck -dump-input=foobar 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefix=BADVAL BADVAL: {{F|f}}ile{{C|c}}heck{{.*}}: for the --dump-input option: Cannot find option named 'foobar'! @@ -33,11 +34,13 @@ ;-------------------------------------------------- ; Appended to normal command line. +; RUN: %ProtectFileCheckOutput \ ; RUN: FileCheck -input-file %t.err -color %t.check -dump-input=help \ ; RUN: | FileCheck %s -check-prefix=HELP ; No positional arg. -; RUN: FileCheck -dump-input=help | FileCheck %s -check-prefix=HELP +; RUN: %ProtectFileCheckOutput FileCheck -dump-input=help \ +; RUN: | FileCheck %s -check-prefix=HELP HELP-NOT: {{.}} HELP: The following description was requested by -dump-input=help @@ -50,19 +53,23 @@ ; Include the case without -v, which isn't covered elsewhere. ;-------------------------------------------------- +; RUN: %ProtectFileCheckOutput \ ; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=never 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -allow-empty \ ; RUN: -check-prefixes=NOTRACE,NODUMP +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=never 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefixes=NOTRACE,ERR,NODUMP +; RUN: %ProtectFileCheckOutput \ ; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=never -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefixes=TRACE,NODUMP +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=never -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefixes=TRACE,ERR,NODUMP @@ -71,10 +78,12 @@ ; Check no -dump-input, which defaults to never. ;-------------------------------------------------- +; RUN: %ProtectFileCheckOutput \ ; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefixes=TRACE,NODUMP +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefixes=TRACE,ERR,NODUMP @@ -85,20 +94,24 @@ ; Include the case without -v, which isn't covered elsewhere. ;-------------------------------------------------- +; RUN: %ProtectFileCheckOutput \ ; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=fail 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -allow-empty \ ; RUN: -check-prefixes=NOTRACE,NODUMP +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=fail 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefixes=NOTRACE,ERR,DUMP-ERR +; RUN: %ProtectFileCheckOutput \ ; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=fail -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -allow-empty \ ; RUN: -check-prefixes=NOTRACE,NODUMP +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=fail -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines \ @@ -108,23 +121,25 @@ ; Check -dump-input-on-failure. ;-------------------------------------------------- +; RUN: %ProtectFileCheckOutput \ ; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input-on-failure -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -allow-empty \ ; RUN: -check-prefixes=NOTRACE,NODUMP +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input-on-failure -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines \ ; RUN: -check-prefixes=NOTRACE,ERR,DUMP-ERR,DUMP-ERR-V -; RUN: env FILECHECK_DUMP_INPUT_ON_FAILURE=1 \ +; RUN: %ProtectFileCheckOutput FILECHECK_DUMP_INPUT_ON_FAILURE=1 \ ; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -allow-empty \ -; RUN: -check-prefixes=NOTRACE,NODUMP +; RUN: -check-prefixes=NOTRACE,NODUMP -; RUN: env FILECHECK_DUMP_INPUT_ON_FAILURE=1 \ +; RUN: %ProtectFileCheckOutput FILECHECK_DUMP_INPUT_ON_FAILURE=1 \ ; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines \ @@ -134,10 +149,12 @@ ; Check -dump-input=always. ;-------------------------------------------------- +; RUN: %ProtectFileCheckOutput \ ; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=always -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefixes=NOTRACE,DUMP-OK +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=always -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines \ Index: llvm/test/FileCheck/envvar-opts.txt =================================================================== --- llvm/test/FileCheck/envvar-opts.txt +++ llvm/test/FileCheck/envvar-opts.txt @@ -3,11 +3,15 @@ ; CHECK: foo ; CHECK: bar -; RUN: env FILECHECK_OPTS= \ +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck %s -input-file %t.in 2>&1 \ ; RUN: | FileCheck -check-prefix QUIET %s -; RUN: env FILECHECK_OPTS=-v \ +; RUN: %ProtectFileCheckOutput FILECHECK_OPTS= \ +; RUN: not FileCheck %s -input-file %t.in 2>&1 \ +; RUN: | FileCheck -check-prefix QUIET %s + +; RUN: %ProtectFileCheckOutput FILECHECK_OPTS=-v \ ; RUN: not FileCheck %s -input-file %t.in 2>&1 \ ; RUN: | FileCheck -check-prefix VERB %s Index: llvm/test/FileCheck/implicit-check-not.txt =================================================================== --- llvm/test/FileCheck/implicit-check-not.txt +++ llvm/test/FileCheck/implicit-check-not.txt @@ -1,11 +1,11 @@ ; RUN: sed 's#^;.*##' %s | FileCheck -check-prefix=CHECK-PASS -implicit-check-not=warning: %s -; RUN: sed 's#^;.*##' %s | not FileCheck -check-prefix=CHECK-FAIL1 -implicit-check-not=warning: %s 2>&1 | FileCheck %s -check-prefix CHECK-ERROR1 -; RUN: sed 's#^;.*##' %s | not FileCheck -check-prefix=CHECK-FAIL2 -implicit-check-not=warning: %s 2>&1 | FileCheck %s -check-prefix CHECK-ERROR2 -; RUN: sed 's#^;.*##' %s | not FileCheck -check-prefix=CHECK-FAIL3 -implicit-check-not=warning: %s 2>&1 | FileCheck %s -check-prefix CHECK-ERROR3 -; RUN: sed 's#^;.*##' %s | not FileCheck -check-prefix=CHECK-FAIL1 -implicit-check-not='{{aaa|bbb|ccc}}' %s 2>&1 | FileCheck %s -check-prefix CHECK-ERROR4 -; RUN: sed 's#^;.*##' %s | not FileCheck -check-prefix=CHECK-FAIL1 -implicit-check-not=aaa -implicit-check-not=bbb -implicit-check-not=ccc %s 2>&1 | FileCheck %s -check-prefix CHECK-ERROR5 -; RUN: sed 's#^;.*##' %s | not FileCheck -check-prefix=CHECK-FAIL2 -implicit-check-not=aaa -implicit-check-not=bbb -implicit-check-not=ccc %s 2>&1 | FileCheck %s -check-prefix CHECK-ERROR6 -; RUN: sed 's#^;.*##' %s | not FileCheck -check-prefix=CHECK-FAIL3 -implicit-check-not=aaa -implicit-check-not=bbb -implicit-check-not=ccc %s 2>&1 | FileCheck %s -check-prefix CHECK-ERROR7 +; RUN: sed 's#^;.*##' %s | %ProtectFileCheckOutput not FileCheck -check-prefix=CHECK-FAIL1 -implicit-check-not=warning: %s 2>&1 | FileCheck %s -check-prefix CHECK-ERROR1 +; RUN: sed 's#^;.*##' %s | %ProtectFileCheckOutput not FileCheck -check-prefix=CHECK-FAIL2 -implicit-check-not=warning: %s 2>&1 | FileCheck %s -check-prefix CHECK-ERROR2 +; RUN: sed 's#^;.*##' %s | %ProtectFileCheckOutput not FileCheck -check-prefix=CHECK-FAIL3 -implicit-check-not=warning: %s 2>&1 | FileCheck %s -check-prefix CHECK-ERROR3 +; RUN: sed 's#^;.*##' %s | %ProtectFileCheckOutput not FileCheck -check-prefix=CHECK-FAIL1 -implicit-check-not='{{aaa|bbb|ccc}}' %s 2>&1 | FileCheck %s -check-prefix CHECK-ERROR4 +; RUN: sed 's#^;.*##' %s | %ProtectFileCheckOutput not FileCheck -check-prefix=CHECK-FAIL1 -implicit-check-not=aaa -implicit-check-not=bbb -implicit-check-not=ccc %s 2>&1 | FileCheck %s -check-prefix CHECK-ERROR5 +; RUN: sed 's#^;.*##' %s | %ProtectFileCheckOutput not FileCheck -check-prefix=CHECK-FAIL2 -implicit-check-not=aaa -implicit-check-not=bbb -implicit-check-not=ccc %s 2>&1 | FileCheck %s -check-prefix CHECK-ERROR6 +; RUN: sed 's#^;.*##' %s | %ProtectFileCheckOutput not FileCheck -check-prefix=CHECK-FAIL3 -implicit-check-not=aaa -implicit-check-not=bbb -implicit-check-not=ccc %s 2>&1 | FileCheck %s -check-prefix CHECK-ERROR7 warning: aaa ; CHECK-PASS: warning: aaa Index: llvm/test/FileCheck/line-count.txt =================================================================== --- llvm/test/FileCheck/line-count.txt +++ llvm/test/FileCheck/line-count.txt @@ -1,15 +1,15 @@ ; RUN: FileCheck -input-file %s %s -; RUN: not FileCheck -check-prefix BAD1 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR1 %s -; RUN: not FileCheck -check-prefix BAD2 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR2 %s -; RUN: not FileCheck -check-prefix BAD3 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR3 %s -; RUN: not FileCheck -check-prefix BAD4 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR4 %s -; RUN: not FileCheck -check-prefix BAD5 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR5 %s -; RUN: not FileCheck -check-prefix BAD6 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR6 %s -; RUN: not FileCheck -check-prefix BAD7 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR7 %s -; RUN: not FileCheck -check-prefix BAD8 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR8 %s -; RUN: not FileCheck -check-prefix BAD9 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR9 %s -; RUN: not FileCheck -check-prefix BAD10 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR10 %s -; RUN: not FileCheck -check-prefix BAD11 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR11 %s +; RUN: %ProtectFileCheckOutput not FileCheck -check-prefix BAD1 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR1 %s +; RUN: %ProtectFileCheckOutput not FileCheck -check-prefix BAD2 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR2 %s +; RUN: %ProtectFileCheckOutput not FileCheck -check-prefix BAD3 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR3 %s +; RUN: %ProtectFileCheckOutput not FileCheck -check-prefix BAD4 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR4 %s +; RUN: %ProtectFileCheckOutput not FileCheck -check-prefix BAD5 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR5 %s +; RUN: %ProtectFileCheckOutput not FileCheck -check-prefix BAD6 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR6 %s +; RUN: %ProtectFileCheckOutput not FileCheck -check-prefix BAD7 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR7 %s +; RUN: %ProtectFileCheckOutput not FileCheck -check-prefix BAD8 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR8 %s +; RUN: %ProtectFileCheckOutput not FileCheck -check-prefix BAD9 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR9 %s +; RUN: %ProtectFileCheckOutput not FileCheck -check-prefix BAD10 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR10 %s +; RUN: %ProtectFileCheckOutput not FileCheck -check-prefix BAD11 -input-file %s %s 2>&1 | FileCheck -check-prefix ERR11 %s 13 14 aaa 15 bbb @@ -55,18 +55,19 @@ 55 BAD11: [[@LINE-1x]] 56 ERR11: line-count.txt:[[#@LINE-1]]:20: error: unexpected characters at end of expression 'x' 57 +; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -check-prefix BAD12 -input-file %s %s 2>&1 \ ; RUN: | FileCheck -check-prefix ERR12 %s -60 -61 BAD12: [[#@LINE-1]] NOT HERE -62 ERR12: note: with "@LINE-1" equal to "60" -63 -64 CHECK: [[#@LINE]] CHECK -65 CHECK: [[# @LINE]] CHECK -66 CHECK: [[# @LINE ]] CHECK -67 -68 CHECK: [[#@LINE-1]] -69 CHECK: [[# @LINE-1]] CHECK -70 CHECK: [[# @LINE -1]] CHECK -71 CHECK: [[# @LINE - 1]] CHECK -72 CHECK: [[# @LINE - 1 ]] CHECK +61 +62 BAD12: [[#@LINE-1]] NOT HERE +63 ERR12: note: with "@LINE-1" equal to "61" +64 +65 CHECK: [[#@LINE]] CHECK +66 CHECK: [[# @LINE]] CHECK +67 CHECK: [[# @LINE ]] CHECK +68 +69 CHECK: [[#@LINE-1]] +70 CHECK: [[# @LINE-1]] CHECK +71 CHECK: [[# @LINE -1]] CHECK +72 CHECK: [[# @LINE - 1]] CHECK +73 CHECK: [[# @LINE - 1 ]] CHECK Index: llvm/test/FileCheck/lit.local.cfg =================================================================== --- llvm/test/FileCheck/lit.local.cfg +++ llvm/test/FileCheck/lit.local.cfg @@ -1,13 +1,51 @@ -# Unset environment variables that the FileCheck tests -# expect not to be set. -file_check_expected_unset_vars = [ - 'FILECHECK_DUMP_INPUT_ON_FAILURE', - 'FILECHECK_OPTS', -] - -for env_var in file_check_expected_unset_vars: - if env_var in config.environment: - lit_config.note('Removing {} from environment for FileCheck tests'.format( - env_var) - ) - config.environment.pop(env_var) +# %ProtectFileCheckOutput should precede a FileCheck call if and only if the +# call's textual output affects test results. It's usually easy to tell: just +# look for redirection or piping of the FileCheck call's stdout or stderr. +# +# Examples: +# +# ; Test another program, using FileCheck to verify its textual output. +# ; Only FileCheck's exit status affects test results, so a bare FileCheck +# ; call is sufficient and more convenient for debugging. +# ; +# ; RUN: %t | FileCheck %s +# ; CHECK: {{[0-9]+\.0}} +# +# ; Test FileCheck itself, but only examine its exit status, so a bare +# ; FileCheck call is still sufficient and more convenient for debugging. +# ; +# ; RUN: FileCheck -input-file %s %s +# ; CHECK: {{[0-9]+\.0}} +# ; 5.0 +# +# ; Check that the FileCheck trace is off by default. The first FileCheck +# ; call's textual output affects test results, so it requires +# ; %ProtectFileCheckOutput to be safe. +# ; +# ; RUN: %ProtectFileCheckOutput FileCheck -input-file %s %s 2>&1 \ +# ; RUN: | FileCheck -allow-empty -check-prefix QUIET %s +# ; +# ; CHECK: {{[0-9]+\.0}} +# ; 5.0 +# ; QUIET-NOT: expected string found in input +# +# ; Check that the FileCheck trace is on when FILECHECK_OPTS=-v. +# ; FILECHECK_OPTS must be set after %ProtectFileCheckOutput, which clears +# ; FILECHECK_OPTS beforehand. +# ; +# ; RUN: %ProtectFileCheckOutput FILECHECK_OPTS=-v \ +# ; RUN: FileCheck -input-file %s %s 2>&1 \ +# ; RUN: | FileCheck -check-prefix TRACE %s +# ; +# ; CHECK: {{[0-9]+\.0}} +# ; 5.0 +# ; TRACE: expected string found in input +# +# %ProtectFileCheckOutput's purpose is to ensure correct test results when +# developers set FileCheck environment variables (e.g., +# FILECHECK_OPTS=-dump-input=fail) to tweak the output of FileCheck while +# debugging tests. If a developer sets values that affect FileCheck's exit +# status (e.g., FILECHECK_OPTS=-strict-whitespace), he shouldn't be surprised +# that test results throughout all test suites are affected. +config.substitutions.append(('%ProtectFileCheckOutput', + 'env -u FILECHECK_OPTS -u FILECHECK_DUMP_INPUT_ON_FAILURE')) Index: llvm/test/FileCheck/match-full-lines.txt =================================================================== --- llvm/test/FileCheck/match-full-lines.txt +++ llvm/test/FileCheck/match-full-lines.txt @@ -1,7 +1,10 @@ +// RUN: %ProtectFileCheckOutput \ // RUN: not FileCheck -match-full-lines -input-file %s %s 2>&1 \ // RUN: | FileCheck --check-prefix=ERROR --implicit-check-not=error: %s -// RUN: not FileCheck -match-full-lines -strict-whitespace -input-file %s %s 2>&1 \ -// RUN: | FileCheck --check-prefix=ERROR-STRICT --check-prefix=ERROR --implicit-check-not=error: %s +// RUN: %ProtectFileCheckOutput \ +// RUN: not FileCheck -match-full-lines -strict-whitespace -input-file %s %s \ +// RUN: 2>&1 | FileCheck --check-prefix=ERROR-STRICT --check-prefix=ERROR \ +// RUN: --implicit-check-not=error: %s Label 1 a line Index: llvm/test/FileCheck/multiple-missing-prefixes.txt =================================================================== --- llvm/test/FileCheck/multiple-missing-prefixes.txt +++ llvm/test/FileCheck/multiple-missing-prefixes.txt @@ -1,6 +1,6 @@ // RUN: FileCheck -check-prefix=ANOTHER-PREFIX -input-file %s %s -// RUN: not FileCheck -check-prefix=PREFIX1 -check-prefix=PREFIX2 -input-file %s %s 2>&1 | FileCheck -strict-whitespace -check-prefix=CHECK-NONEXISTENT-PREFIX -check-prefix=ALSO-NONEXISTENT %s -// RUN: not FileCheck -check-prefixes=PREFIX1,PREFIX2 -input-file %s %s 2>&1 | FileCheck -strict-whitespace -check-prefixes=CHECK-NONEXISTENT-PREFIX,ALSO-NONEXISTENT %s +// RUN: %ProtectFileCheckOutput not FileCheck -check-prefix=PREFIX1 -check-prefix=PREFIX2 -input-file %s %s 2>&1 | FileCheck -strict-whitespace -check-prefix=CHECK-NONEXISTENT-PREFIX -check-prefix=ALSO-NONEXISTENT %s +// RUN: %ProtectFileCheckOutput not FileCheck -check-prefixes=PREFIX1,PREFIX2 -input-file %s %s 2>&1 | FileCheck -strict-whitespace -check-prefixes=CHECK-NONEXISTENT-PREFIX,ALSO-NONEXISTENT %s foobar ; ANOTHER-PREFIX: foobar Index: llvm/test/FileCheck/no-check-file.txt =================================================================== --- llvm/test/FileCheck/no-check-file.txt +++ llvm/test/FileCheck/no-check-file.txt @@ -1,3 +1,3 @@ -; RUN: not FileCheck 2>&1 | FileCheck %s +; RUN: %ProtectFileCheckOutput not FileCheck 2>&1 | FileCheck %s CHECK: not specified Index: llvm/test/FileCheck/no-multi-suffixes.txt =================================================================== --- llvm/test/FileCheck/no-multi-suffixes.txt +++ llvm/test/FileCheck/no-multi-suffixes.txt @@ -1,9 +1,9 @@ -; RUN: not FileCheck -check-prefix=DAGNOT -input-file %s %s 2>&1 | FileCheck -check-prefix=ERROR -check-prefix=DAGNOT-ERROR %s -; RUN: not FileCheck -check-prefix=NOTDAG -input-file %s %s 2>&1 | FileCheck -check-prefix=ERROR -check-prefix=NOTDAG-ERROR %s -; RUN: not FileCheck -check-prefix=NEXTNOT -input-file %s %s 2>&1 | FileCheck -check-prefix=ERROR -check-prefix=NEXTNOT-ERROR %s -; RUN: not FileCheck -check-prefix=NOTNEXT -input-file %s %s 2>&1 | FileCheck -check-prefix=ERROR -check-prefix=NOTNEXT-ERROR %s -; RUN: not FileCheck -check-prefix=SAMENOT -input-file %s %s 2>&1 | FileCheck -check-prefix=ERROR -check-prefix=SAMENOT-ERROR %s -; RUN: not FileCheck -check-prefix=NOTSAME -input-file %s %s 2>&1 | FileCheck -check-prefix=ERROR -check-prefix=NOTSAME-ERROR %s +; RUN: %ProtectFileCheckOutput not FileCheck -check-prefix=DAGNOT -input-file %s %s 2>&1 | FileCheck -check-prefix=ERROR -check-prefix=DAGNOT-ERROR %s +; RUN: %ProtectFileCheckOutput not FileCheck -check-prefix=NOTDAG -input-file %s %s 2>&1 | FileCheck -check-prefix=ERROR -check-prefix=NOTDAG-ERROR %s +; RUN: %ProtectFileCheckOutput not FileCheck -check-prefix=NEXTNOT -input-file %s %s 2>&1 | FileCheck -check-prefix=ERROR -check-prefix=NEXTNOT-ERROR %s +; RUN: %ProtectFileCheckOutput not FileCheck -check-prefix=NOTNEXT -input-file %s %s 2>&1 | FileCheck -check-prefix=ERROR -check-prefix=NOTNEXT-ERROR %s +; RUN: %ProtectFileCheckOutput not FileCheck -check-prefix=SAMENOT -input-file %s %s 2>&1 | FileCheck -check-prefix=ERROR -check-prefix=SAMENOT-ERROR %s +; RUN: %ProtectFileCheckOutput not FileCheck -check-prefix=NOTSAME -input-file %s %s 2>&1 | FileCheck -check-prefix=ERROR -check-prefix=NOTSAME-ERROR %s foo ; DAGNOT: foo Index: llvm/test/FileCheck/numeric-defines-diagnostics.txt =================================================================== --- llvm/test/FileCheck/numeric-defines-diagnostics.txt +++ llvm/test/FileCheck/numeric-defines-diagnostics.txt @@ -1,6 +1,7 @@ ; Test incorrect syntax for -D# option is correctly diagnosed. ; Invalid variable name: starts with a digit. +RUN: %ProtectFileCheckOutput \ RUN: not FileCheck -D#10VALUE=10 --input-file %s %s 2>&1 \ RUN: | FileCheck %s --strict-whitespace --match-full-lines --check-prefix NUMERRCLIFMT @@ -9,6 +10,7 @@ NUMERRCLIFMT-NEXT: ^ ; Invalid definition of pseudo variable. +RUN: %ProtectFileCheckOutput \ RUN: not FileCheck -D#@VALUE=10 --input-file %s %s 2>&1 \ RUN: | FileCheck %s --strict-whitespace --match-full-lines --check-prefix NUMERRCLIPSEUDO @@ -17,6 +19,7 @@ NUMERRCLIPSEUDO-NEXT: ^ ; Invalid definition of an expression. +RUN: %ProtectFileCheckOutput \ RUN: not FileCheck -D#VALUE+2=10 --input-file %s %s 2>&1 \ RUN: | FileCheck %s --strict-whitespace --match-full-lines --check-prefix NUMERRCLITRAIL Index: llvm/test/FileCheck/numeric-defines.txt =================================================================== --- llvm/test/FileCheck/numeric-defines.txt +++ llvm/test/FileCheck/numeric-defines.txt @@ -2,12 +2,20 @@ ; value and CHECK directives using them match as expected given the value set. RUN: FileCheck -D#NUMVAL1=8 -D#NUMVAL2='NUMVAL1 + 4' -check-prefixes CHECKNUM1,CHECKNUM2 -input-file %s %s + +RUN: %ProtectFileCheckOutput \ RUN: not FileCheck -D#NUMVAL1=7 -D#NUMVAL2=12 -check-prefix CHECKNUM1 -input-file %s %s 2>&1 \ RUN: | FileCheck %s --strict-whitespace -check-prefix NUMERRMSG1 + +RUN: %ProtectFileCheckOutput \ RUN: not FileCheck -D#NUMVAL1=8 -D#NUMVAL2=8 -check-prefix CHECKNUM2 -input-file %s %s 2>&1 \ RUN: | FileCheck %s --strict-whitespace -check-prefix NUMERRMSG2 + +RUN: %ProtectFileCheckOutput \ RUN: not FileCheck -D#NUMVAL1=8 -D#NUMVAL2=8 -check-prefix NUMNOT -input-file %s %s 2>&1 \ RUN: | FileCheck %s --strict-whitespace -check-prefixes NOT-NUMERRMSG1 + +RUN: %ProtectFileCheckOutput \ RUN: not FileCheck -D#NUMVAL1=7 -D#NUMVAL2=12 -check-prefix NUMNOT -input-file %s %s 2>&1 \ RUN: | FileCheck %s --strict-whitespace -check-prefixes NOT-NUMERRMSG2 RUN: FileCheck -D#NUMVAL1=7 -D#NUMVAL2=8 -check-prefixes NUMNOT -input-file %s %s Index: llvm/test/FileCheck/numeric-expression.txt =================================================================== --- llvm/test/FileCheck/numeric-expression.txt +++ llvm/test/FileCheck/numeric-expression.txt @@ -97,6 +97,7 @@ ; CHECK-NEXT: foo [[#]] bar ; Numeric expression using undefined variables. +RUN: %ProtectFileCheckOutput \ RUN: not FileCheck --check-prefix UNDEF-USE --input-file %s %s 2>&1 \ RUN: | FileCheck --strict-whitespace --check-prefix UNDEF-USE-MSG %s @@ -115,7 +116,9 @@ UNDEF-USE-MSG-NEXT: {{^}}^{{$}} ; Numeric expression with unsupported operator. -RUN: not FileCheck -D#NUMVAR=10 --check-prefix INVAL-OP --input-file %s %s 2>&1 \ +RUN: %ProtectFileCheckOutput \ +RUN: not FileCheck -D#NUMVAR=10 --check-prefix INVAL-OP \ +RUN: --input-file %s %s 2>&1 \ RUN: | FileCheck --strict-whitespace --check-prefix INVAL-OP-MSG %s INVALID OPERATOR @@ -128,17 +131,29 @@ ; Name conflict between Numeric variable definition and string variable ; definition whether from the command-line or input text. -RUN: not FileCheck --check-prefixes CONFLICT,CONFLICT1,CONFLICT2 --input-file %s %s 2>&1 \ +RUN: %ProtectFileCheckOutput \ +RUN: not FileCheck --check-prefixes CONFLICT,CONFLICT1,CONFLICT2 \ +RUN: --input-file %s %s 2>&1 \ RUN: | FileCheck --strict-whitespace --check-prefix INPUT-STR-CONFLICT %s -RUN: not FileCheck -D#NUMVAR=42 --check-prefixes CONFLICT,CONFLICT2 --input-file %s %s 2>&1 \ +RUN: %ProtectFileCheckOutput \ +RUN: not FileCheck -D#NUMVAR=42 --check-prefixes CONFLICT,CONFLICT2 \ +RUN: --input-file %s %s 2>&1 \ RUN: | FileCheck --strict-whitespace --check-prefix INPUT-STR-CONFLICT %s -RUN: not FileCheck -D#NUMVAR=42 -DNUMVAR=foobar --check-prefix CONFLICT --input-file %s %s 2>&1 \ +RUN: %ProtectFileCheckOutput \ +RUN: not FileCheck -D#NUMVAR=42 -DNUMVAR=foobar --check-prefix CONFLICT \ +RUN: --input-file %s %s 2>&1 \ RUN: | FileCheck --strict-whitespace --check-prefix CLI-STR-CONFLICT %s -RUN: not FileCheck --check-prefixes CONFLICT,CONFLICT3,CONFLICT4 --input-file %s %s 2>&1 \ +RUN: %ProtectFileCheckOutput \ +RUN: not FileCheck --check-prefixes CONFLICT,CONFLICT3,CONFLICT4 \ +RUN: --input-file %s %s 2>&1 \ RUN: | FileCheck --strict-whitespace --check-prefix INPUT-NUM-CONFLICT %s -RUN: not FileCheck -DSTRVAR=foobar --check-prefixes CONFLICT,CONFLICT4 --input-file %s %s 2>&1 \ +RUN: %ProtectFileCheckOutput \ +RUN: not FileCheck -DSTRVAR=foobar --check-prefixes CONFLICT,CONFLICT4 \ +RUN: --input-file %s %s 2>&1 \ RUN: | FileCheck --strict-whitespace --check-prefix INPUT-NUM-CONFLICT %s -RUN: not FileCheck -DSTRVAR=foobar -D#STRVAR=42 --check-prefix CONFLICT --input-file %s %s 2>&1 \ +RUN: %ProtectFileCheckOutput \ +RUN: not FileCheck -DSTRVAR=foobar -D#STRVAR=42 --check-prefix CONFLICT \ +RUN: --input-file %s %s 2>&1 \ RUN: | FileCheck --strict-whitespace --check-prefix CLI-NUM-CONFLICT %s STRVAR NUMVAR CONFLICT @@ -164,6 +179,7 @@ CLI-NUM-CONFLICT-NEXT: {{^}} ^{{$}} ; Numeric variable definition with too big value. +RUN: %ProtectFileCheckOutput \ RUN: not FileCheck --check-prefix BIGVAL --input-file %s %s 2>&1 \ RUN: | FileCheck --strict-whitespace --check-prefix BIGVAL-MSG %s @@ -177,6 +193,7 @@ ; Verify that when a variable is set to an expression the expression is still ; checked. +RUN: %ProtectFileCheckOutput \ RUN: not FileCheck --check-prefix DEF-EXPR-FAIL --input-file %s %s 2>&1 \ RUN: | FileCheck --strict-whitespace --check-prefix DEF-EXPR-FAIL-MSG %s @@ -192,8 +209,10 @@ ; Verify that using a numeric variable defined on the same line (whether from ; input or from an expression) is rejected. +RUN: %ProtectFileCheckOutput \ RUN: not FileCheck --check-prefix SAME-LINE-USE1 --input-file %s %s 2>&1 \ RUN: | FileCheck --strict-whitespace --check-prefix SAME-LINE-USE-MSG1 %s +RUN: %ProtectFileCheckOutput \ RUN: not FileCheck --check-prefix SAME-LINE-USE2 --input-file %s %s 2>&1 \ RUN: | FileCheck --strict-whitespace --check-prefix SAME-LINE-USE-MSG2 %s Index: llvm/test/FileCheck/opt-color.txt =================================================================== --- llvm/test/FileCheck/opt-color.txt +++ llvm/test/FileCheck/opt-color.txt @@ -4,8 +4,8 @@ ; Run without and with -color. In the former case, FileCheck should suppress ; color in its diagnostics because stderr is a file. -; RUN: not FileCheck %s < %t.in 2> %t.no-color -; RUN: not FileCheck -color %s < %t.in 2> %t.color +; RUN: %ProtectFileCheckOutput not FileCheck %s < %t.in 2> %t.no-color +; RUN: %ProtectFileCheckOutput not FileCheck -color %s < %t.in 2> %t.color ; Check whether color was produced. ; RUN: FileCheck -check-prefix NO-COLOR %s < %t.no-color Index: llvm/test/FileCheck/string-defines-diagnostics.txt =================================================================== --- llvm/test/FileCheck/string-defines-diagnostics.txt +++ llvm/test/FileCheck/string-defines-diagnostics.txt @@ -1,30 +1,31 @@ ; Test incorrect syntax for -D option is correctly diagnosed. ; Missing equal sign. -RUN: not FileCheck -DVALUE10 --input-file %s %s 2>&1 \ +RUN: %ProtectFileCheckOutput not FileCheck -DVALUE10 --input-file %s %s 2>&1 \ RUN: | FileCheck %s --check-prefix ERRCLIEQ1 ERRCLIEQ1: Missing equal sign in command-line definition '-DVALUE10' ; Missing definition expression (variable name, equal sign and value). -RUN: not FileCheck -D --input-file %s %s 2>&1 \ +RUN: %ProtectFileCheckOutput not FileCheck -D --input-file %s %s 2>&1 \ RUN: | FileCheck %s --check-prefix ERRCLIEQ2 ERRCLIEQ2: {{F|f}}ile{{C|c}}heck{{[^:]*}}: for the -D option: requires a value! ; Missing variable name. -RUN: not FileCheck -D=10 --input-file %s %s 2>&1 \ +RUN: %ProtectFileCheckOutput not FileCheck -D=10 --input-file %s %s 2>&1 \ RUN: | FileCheck %s --check-prefix ERRCLIVAR1 ERRCLIVAR1: Missing variable name in command-line definition '-D=10' ; Missing variable name. -RUN: not FileCheck -D= --input-file %s %s 2>&1 \ +RUN: %ProtectFileCheckOutput not FileCheck -D= --input-file %s %s 2>&1 \ RUN: | FileCheck %s --check-prefix ERRCLIVAR2 ERRCLIVAR2: Missing variable name in command-line definition '-D=' ; Invalid variable name: starts with a digit. +RUN: %ProtectFileCheckOutput \ RUN: not FileCheck -D10VALUE=10 --input-file %s %s 2>&1 \ RUN: | FileCheck %s --strict-whitespace --match-full-lines --check-prefix ERRCLIFMT @@ -33,6 +34,7 @@ ERRCLIFMT-NEXT: ^ ; Invalid definition of pseudo variable. +RUN: %ProtectFileCheckOutput \ RUN: not FileCheck -D@VALUE=10 --input-file %s %s 2>&1 \ RUN: | FileCheck %s --strict-whitespace --match-full-lines --check-prefix ERRCLIPSEUDO @@ -41,6 +43,7 @@ ERRCLIPSEUDO-NEXT: ^ ; Invalid definition of an expression. +RUN: %ProtectFileCheckOutput \ RUN: not FileCheck -D'VALUE + 2=10' --input-file %s %s 2>&1 \ RUN: | FileCheck %s --strict-whitespace --check-prefix ERRCLITRAIL Index: llvm/test/FileCheck/string-defines.txt =================================================================== --- llvm/test/FileCheck/string-defines.txt +++ llvm/test/FileCheck/string-defines.txt @@ -3,8 +3,9 @@ ; String variable correctly defined to a non-empty string. RUN: FileCheck -DVALUE=10 --input-file %s %s -RUN: not FileCheck -DVALUE=20 --input-file %s %s 2>&1 \ +RUN: %ProtectFileCheckOutput not FileCheck -DVALUE=20 --input-file %s %s 2>&1 \ RUN: | FileCheck %s --check-prefix ERRMSG +RUN: %ProtectFileCheckOutput \ RUN: not FileCheck -DVALUE=10 --check-prefix NOT --input-file %s %s 2>&1 \ RUN: | FileCheck %s --check-prefix NOT-ERRMSG RUN: FileCheck -DVALUE=20 --check-prefix NOT --input-file %s %s Index: llvm/test/FileCheck/validate-check-prefix.txt =================================================================== --- llvm/test/FileCheck/validate-check-prefix.txt +++ llvm/test/FileCheck/validate-check-prefix.txt @@ -1,8 +1,8 @@ -// RUN: not FileCheck -check-prefix=A! -input-file %s %s 2>&1 | FileCheck -check-prefix=BAD_PREFIX %s +// RUN: %ProtectFileCheckOutput not FileCheck -check-prefix=A! -input-file %s %s 2>&1 | FileCheck -check-prefix=BAD_PREFIX %s // RUN: FileCheck -check-prefix=A1a-B_c -input-file %s %s -// RUN: not FileCheck -check-prefix=REPEAT -check-prefix=REPEAT -input-file %s %s 2>&1 | FileCheck -check-prefix=BAD_PREFIX %s -// RUN: not FileCheck -check-prefix=VALID -check-prefix=A! -input-file %s %s 2>&1 | FileCheck -check-prefix=BAD_PREFIX %s -// RUN: not FileCheck -check-prefix= -input-file %s %s 2>&1 | FileCheck -check-prefix=BAD_PREFIX %s +// RUN: %ProtectFileCheckOutput not FileCheck -check-prefix=REPEAT -check-prefix=REPEAT -input-file %s %s 2>&1 | FileCheck -check-prefix=BAD_PREFIX %s +// RUN: %ProtectFileCheckOutput not FileCheck -check-prefix=VALID -check-prefix=A! -input-file %s %s 2>&1 | FileCheck -check-prefix=BAD_PREFIX %s +// RUN: %ProtectFileCheckOutput not FileCheck -check-prefix= -input-file %s %s 2>&1 | FileCheck -check-prefix=BAD_PREFIX %s foobar ; A1a-B_c: foobar Index: llvm/test/FileCheck/var-scope.txt =================================================================== --- llvm/test/FileCheck/var-scope.txt +++ llvm/test/FileCheck/var-scope.txt @@ -6,11 +6,11 @@ RUN: FileCheck --check-prefixes CHECK,LOCAL3,GLOBAL --input-file %s %s RUN: FileCheck --check-prefixes CHECK,GLOBAL --enable-var-scope --input-file %s %s -RUN: not FileCheck --check-prefixes CHECK,LOCAL1 --enable-var-scope --input-file %s %s 2>&1 \ +RUN: %ProtectFileCheckOutput not FileCheck --check-prefixes CHECK,LOCAL1 --enable-var-scope --input-file %s %s 2>&1 \ RUN: | FileCheck --check-prefixes ERRUNDEF,ERRUNDEFLOCAL %s -RUN: not FileCheck --check-prefixes CHECK,LOCAL2 --enable-var-scope --input-file %s %s 2>&1 \ +RUN: %ProtectFileCheckOutput not FileCheck --check-prefixes CHECK,LOCAL2 --enable-var-scope --input-file %s %s 2>&1 \ RUN: | FileCheck --check-prefixes ERRUNDEF,ERRUNDEFLOCNUM %s -RUN: not FileCheck --check-prefixes CHECK,LOCAL3 --enable-var-scope --input-file %s %s 2>&1 \ +RUN: %ProtectFileCheckOutput not FileCheck --check-prefixes CHECK,LOCAL3 --enable-var-scope --input-file %s %s 2>&1 \ RUN: | FileCheck --check-prefixes ERRUNDEF,ERRUNDEFLOCAL,ERRUNDEFLOCNUM %s local1 Index: llvm/test/FileCheck/verbose.txt =================================================================== --- llvm/test/FileCheck/verbose.txt +++ llvm/test/FileCheck/verbose.txt @@ -1,6 +1,9 @@ -; RUN: FileCheck -input-file %s %s 2>&1 | FileCheck -check-prefix QUIET --allow-empty %s -; RUN: FileCheck -v -input-file %s %s 2>&1 | FileCheck --strict-whitespace -check-prefix V %s -; RUN: FileCheck -vv -input-file %s %s 2>&1 | FileCheck --strict-whitespace -check-prefixes V,VV %s +; RUN: %ProtectFileCheckOutput FileCheck -input-file %s %s 2>&1 \ +; RUN: | FileCheck -check-prefix QUIET --allow-empty %s +; RUN: %ProtectFileCheckOutput FileCheck -v -input-file %s %s 2>&1 \ +; RUN: | FileCheck --strict-whitespace -check-prefix V %s +; RUN: %ProtectFileCheckOutput FileCheck -vv -input-file %s %s 2>&1 \ +; RUN: | FileCheck --strict-whitespace -check-prefixes V,VV %s foo bar