;-------------------------------------------------- ; Create the check file, good input, and bad input. ; ; For both good and bad input, make sure the -v trace has at least one remark ; so we can check how trace suppression is affected by -dump-input. ;-------------------------------------------------- ; RUN: echo hello > %t.good ; RUN: echo world >> %t.good ; RUN: echo hello > %t.err ; RUN: echo whirled >> %t.err ; RUN: echo 'CHECK: hello' > %t.check ; RUN: echo 'CHECK-NEXT: world' >> %t.check ;-------------------------------------------------- ; Check -dump-input=. ;-------------------------------------------------- ; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=foobar 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefix=BADVAL ; No positional arg. ; RUN: %ProtectFileCheckOutput not FileCheck -dump-input=foobar 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefix=BADVAL BADVAL: {{F|f}}ile{{C|c}}heck{{.*}}: for the --dump-input option: Cannot find option named 'foobar'! ;-------------------------------------------------- ; Check -dump-input=help. ;-------------------------------------------------- ; Appended to normal command line. ; RUN: %ProtectFileCheckOutput \ ; RUN: FileCheck -input-file %t.err -color %t.check -dump-input=help \ ; RUN: | FileCheck %s -check-prefix=HELP ; No positional arg. ; RUN: %ProtectFileCheckOutput FileCheck -dump-input=help \ ; RUN: | FileCheck %s -check-prefix=HELP ;-------------------------------------------------- ; Check -dump-input=never. ; ; Include the case without -v, which isn't covered elsewhere. ;-------------------------------------------------- ; FileCheck success, no -v => no dump, no trace. ; RUN: %ProtectFileCheckOutput \ ; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=never 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -allow-empty \ ; RUN: -check-prefixes=NOTRACE,NODUMP ; FileCheck fail, no -v => no dump, no trace. ; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=never 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefixes=NOTRACE,ERR,NODUMP ; FileCheck success, -v => no dump, trace. ; RUN: %ProtectFileCheckOutput \ ; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=never -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefixes=TRACE,NODUMP ; FileCheck fail, -v => no dump, trace. ; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=never -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefixes=TRACE,ERR,NODUMP ;-------------------------------------------------- ; Check no -dump-input, which defaults to never. ;-------------------------------------------------- ; FileCheck success, -v => no dump, trace. ; RUN: %ProtectFileCheckOutput \ ; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefixes=TRACE,NODUMP ; FileCheck fail, -v => no dump, trace. ; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefixes=TRACE,ERR,NODUMP ;-------------------------------------------------- ; Check -dump-input=fail. ; ; Include the case without -v, which isn't covered elsewhere. ;-------------------------------------------------- ; FileCheck success, no -v => no dump, no trace. ; RUN: %ProtectFileCheckOutput \ ; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=fail 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -allow-empty \ ; RUN: -check-prefixes=NOTRACE,NODUMP ; FileCheck fail, no -v => dump, no trace. ; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=fail 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefixes=NOTRACE,ERR,DUMP-ERR ; FileCheck success, -v => no dump, no trace. ; RUN: %ProtectFileCheckOutput \ ; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=fail -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -allow-empty \ ; RUN: -check-prefixes=NOTRACE,NODUMP ; FileCheck fail, -v => dump, no trace. ; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=fail -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines \ ; RUN: -check-prefixes=NOTRACE,ERR,DUMP-ERR,DUMP-ERR-V ;-------------------------------------------------- ; Check -dump-input-on-failure. ;-------------------------------------------------- ; Command-line option. ; FileCheck success, -v => no dump, no trace. ; RUN: %ProtectFileCheckOutput \ ; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input-on-failure -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -allow-empty \ ; RUN: -check-prefixes=NOTRACE,NODUMP ; FileCheck fail, -v => dump, no trace. ; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input-on-failure -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines \ ; RUN: -check-prefixes=NOTRACE,ERR,DUMP-ERR,DUMP-ERR-V ; FILECHECK_DUMP_INPUT_ON_FAILURE=1. ; FileCheck success, -v => no dump, no trace. ; RUN: %ProtectFileCheckOutput FILECHECK_DUMP_INPUT_ON_FAILURE=1 \ ; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -allow-empty \ ; RUN: -check-prefixes=NOTRACE,NODUMP ; FileCheck fail, -v => dump, no trace. ; RUN: %ProtectFileCheckOutput FILECHECK_DUMP_INPUT_ON_FAILURE=1 \ ; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines \ ; RUN: -check-prefixes=NOTRACE,ERR,DUMP-ERR,DUMP-ERR-V ;-------------------------------------------------- ; Check -dump-input=always. ;-------------------------------------------------- ; FileCheck success, -v => dump, no trace. ; RUN: %ProtectFileCheckOutput \ ; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=always -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefixes=NOTRACE,DUMP-OK ; FileCheck fail, -v => dump, no trace. ; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=always -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines \ ; RUN: -check-prefixes=NOTRACE,ERR,DUMP-ERR,DUMP-ERR-V ;-------------------------------------------------- ; Check multiple -dump-input options. ; ; This ocurrs most commonly when a test author specifies -dump-input on a ; specific FileCheck call while a test runner specifies -dump-input in ; FILECHECK_OPTS, but check the behavior generally. ; ; "help" has precedence, and then the most verbose value wins. The most ; common combinations involve "fail" and "always", so test those the most. ;-------------------------------------------------- ;- - - - - - - - - - - - - - - - - - - - - - - - - ; Check duplicate. ;- - - - - - - - - - - - - - - - - - - - - - - - - ; fail, fail => fail (FileCheck fail => dump) ; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=fail -dump-input=fail -v \ ; RUN: 2>&1 \ ; RUN: | FileCheck %s -match-full-lines \ ; RUN: -check-prefixes=NOTRACE,ERR,DUMP-ERR,DUMP-ERR-V ;- - - - - - - - - - - - - - - - - - - - - - - - - ; Check precedence. ;- - - - - - - - - - - - - - - - - - - - - - - - - ; help, always => help ; RUN: %ProtectFileCheckOutput \ ; RUN: FileCheck -input-file %t.err -color %t.check \ ; RUN: -dump-input=help -dump-input=always \ ; RUN: | FileCheck %s -check-prefix=HELP ; always, fail => always (FileCheck success => dump) ; RUN: %ProtectFileCheckOutput \ ; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=always -dump-input=fail \ ; RUN: -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefixes=NOTRACE,DUMP-OK ; fail, never => fail (FileCheck fail => dump) ; RUN: %ProtectFileCheckOutput \ ; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=fail -dump-input=never -v \ ; RUN: 2>&1 \ ; RUN: | FileCheck %s -match-full-lines \ ; RUN: -check-prefixes=NOTRACE,ERR,DUMP-ERR,DUMP-ERR-V ;- - - - - - - - - - - - - - - - - - - - - - - - - ; Check that order doesn't matter. ;- - - - - - - - - - - - - - - - - - - - - - - - - ; fail, always => always (FileCheck success => dump) ; RUN: %ProtectFileCheckOutput \ ; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=fail -dump-input=always \ ; RUN: -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefixes=NOTRACE,DUMP-OK ;- - - - - - - - - - - - - - - - - - - - - - - - - ; Check that FILECHECK_OPTS isn't handled differently. ;- - - - - - - - - - - - - - - - - - - - - - - - - ; always, fail => always (FileCheck success => dump) ; RUN: %ProtectFileCheckOutput FILECHECK_OPTS=-dump-input=always \ ; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=fail -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefixes=NOTRACE,DUMP-OK ; fail, always => always (FileCheck success => dump) ; RUN: %ProtectFileCheckOutput FILECHECK_OPTS=-dump-input=fail \ ; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \ ; RUN: -match-full-lines -dump-input=always -v 2>&1 \ ; RUN: | FileCheck %s -match-full-lines -check-prefixes=NOTRACE,DUMP-OK ; END. ;-------------------------------------------------- ; Check the output. ;-------------------------------------------------- ; HELP-NOT: {{.}} ; HELP: The following description was requested by -dump-input=help ; HELP: try{{.*}}-color ; HELP-NOT: {{.}} ; Trace is sometimes suppressed. ; TRACE: {{.*}}remark:{{.*}} ; NOTRACE-NOT: remark: ; Error diagnostics are never suppressed. ; ERR: {{.*}}error:{{.*}} ; NODUMP-NOT: <<<<<< ; DUMP-OK: Full input was: ; DUMP-OK-NEXT: <<<<<< ; DUMP-OK-NEXT: 1: hello ; DUMP-OK-NEXT: check:1 ^~~~~ ; DUMP-OK-NEXT: 2: world ; DUMP-OK-NEXT: next:2 ^~~~~ ; DUMP-OK-NEXT: >>>>>> ; DUMP-ERR: Full input was: ; DUMP-ERR-NEXT: <<<<<< ; DUMP-ERR-NEXT: 1: hello ; DUMP-ERR-V-NEXT: check:1 ^~~~~ ; DUMP-ERR-NEXT: 2: whirled ; DUMP-ERR-NEXT: next:2 X~~~~~~ error: no match found ; DUMP-ERR-NEXT: >>>>>>