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'))
