diff options
-rw-r--r-- | test/FileCheck/check-empty.txt | 11 | ||||
-rw-r--r-- | utils/FileCheck/FileCheck.cpp | 7 |
2 files changed, 17 insertions, 1 deletions
diff --git a/test/FileCheck/check-empty.txt b/test/FileCheck/check-empty.txt new file mode 100644 index 00000000000..9caea65ee61 --- /dev/null +++ b/test/FileCheck/check-empty.txt @@ -0,0 +1,11 @@ +// RUN: not FileCheck -check-prefix=FOO %s </dev/null 2>&1 | FileCheck -check-prefix=EMPTY-ERR %s +// RUN: not FileCheck -check-prefix=NOFOO %s </dev/null 2>&1 | FileCheck -check-prefix=EMPTY-ERR %s +// RUN: not FileCheck -check-prefix=FOO -allow-empty %s </dev/null 2>&1 | FileCheck -check-prefix=NO-EMPTY-ERR -check-prefix=NOT-FOUND %s +// RUN: FileCheck -check-prefix=NOFOO -allow-empty %s </dev/null 2>&1 | FileCheck -allow-empty -check-prefix=NO-EMPTY-ERR %s + +; FOO: foo +; NOFOO-NOT: foo + +; EMPTY-ERR: FileCheck error: '-' is empty. +; NO-EMPTY-ERR-NOT: FileCheck error: '-' is empty. +; NOT-FOUND: error: expected string not found in input diff --git a/utils/FileCheck/FileCheck.cpp b/utils/FileCheck/FileCheck.cpp index 8c62ae7f5d1..e8365fc248a 100644 --- a/utils/FileCheck/FileCheck.cpp +++ b/utils/FileCheck/FileCheck.cpp @@ -57,6 +57,11 @@ static cl::list<std::string> ImplicitCheckNot( "this pattern occur which are not matched by a positive pattern"), cl::value_desc("pattern")); +static cl::opt<bool> AllowEmptyInput( + "allow-empty", cl::init(false), + cl::desc("Allow the input file to be empty. This is useful when making\n" + "checks that some error message does not occur, for example.")); + typedef cl::list<std::string>::const_iterator prefix_iterator; //===----------------------------------------------------------------------===// @@ -1260,7 +1265,7 @@ int main(int argc, char **argv) { } std::unique_ptr<MemoryBuffer> &File = FileOrErr.get(); - if (File->getBufferSize() == 0) { + if (File->getBufferSize() == 0 && !AllowEmptyInput) { errs() << "FileCheck error: '" << InputFilename << "' is empty.\n"; return 2; } |