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