summaryrefslogtreecommitdiffstats
path: root/llvm/test/FileCheck
diff options
context:
space:
mode:
authorJames Henderson <jh7370@my.bristol.ac.uk>2018-06-26 15:15:45 +0000
committerJames Henderson <jh7370@my.bristol.ac.uk>2018-06-26 15:15:45 +0000
commit5507f6688def557aca3dbbf7cf53cdf6a13ad8f8 (patch)
treecab9ecb080d36f4f73dda00e4da645fa30eb73dd /llvm/test/FileCheck
parent2f93fd1f50116cf4c17a491ef94869c784b47a96 (diff)
downloadbcm5719-llvm-5507f6688def557aca3dbbf7cf53cdf6a13ad8f8.tar.gz
bcm5719-llvm-5507f6688def557aca3dbbf7cf53cdf6a13ad8f8.zip
[FileCheck] Add CHECK-EMPTY directive for checking for blank lines
Prior to this change, there was no clean way of getting FileCheck to check that a line is completely empty. The expected way of using "CHECK: {{^$}}" does not work because the '^' matches the end of the previous match (this behaviour may be desirable in certain instances). For the same reason, "CHECK-NEXT: {{^$}}" will fail when the previous match was at the end of the line, as the pattern will match there. Using the recommended [[:space:]] to match an explicit new line could also match a space, and thus is not always desired. Literal '\n' matches also do not work. A workaround was suggested in the review, but it is a little clunky. This change adds a new directive that behaves the same as CHECK-NEXT, except that it only matches against empty lines (nothing, not even whitespace, is allowed). As with CHECK-NEXT, it will fail if more than one newline occurs before the next blank line. Example usage: ; test.txt foo bar ; CHECK: foo ; CHECK-EMPTY: ; CHECK-NEXT: bar Differential Revision: https://reviews.llvm.org/D28896 Reviewed by: probinson llvm-svn: 335613
Diffstat (limited to 'llvm/test/FileCheck')
-rw-r--r--llvm/test/FileCheck/check-empty-tag.txt45
1 files changed, 45 insertions, 0 deletions
diff --git a/llvm/test/FileCheck/check-empty-tag.txt b/llvm/test/FileCheck/check-empty-tag.txt
new file mode 100644
index 00000000000..70d3afcd9d1
--- /dev/null
+++ b/llvm/test/FileCheck/check-empty-tag.txt
@@ -0,0 +1,45 @@
+; basic functionality
+; RUN: FileCheck %s --input-file %s --check-prefix=CHECK1
+foo
+
+bar
+CHECK1: foo
+CHECK1-EMPTY:
+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
+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
+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
+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
+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
+CHECK6A: the next line has spaces
+CHECK6A-EMPTY:
+CHECK6B: expected string not found in input
+
+; ***don't add any further blank lines after this point***
+; CHECK-EMPTY, like CHECK-NEXT, will report an error if the first matching
+; line is not the line immediately following the previous check.
+the next line has spaces
+ \ No newline at end of file
OpenPOWER on IntegriCloud