| import lit | |
| # Use lit's internal shell to help guarantee test portability. | |
| config.test_format = lit.formats.ShTest() | |
| # %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 -dump-input=never -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")) |