; RUN: echo ciao > %t.good
; RUN: echo world >> %t.good

; RUN: echo hello > %t.err
; RUN: echo world >> %t.err

; RUN: echo 'CHECK: ciao' > %t.check
; RUN: echo 'CHECK-NEXT: world' >> %t.check

;--------------------------------------------------
; unknown value
;--------------------------------------------------

; 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: not FileCheck -dump-input=foobar 2>&1 \
; RUN: | FileCheck %s -match-full-lines -check-prefix=BADVAL

BADVAL: FileCheck{{.*}}: for the -dump-input option: Cannot find option named 'foobar'!

;--------------------------------------------------
; help
;--------------------------------------------------

; Appended to normal command line.
; RUN: FileCheck -input-file %t.err -color %t.check -dump-input=help \
; RUN: | FileCheck %s -check-prefix=HELP

; No positional arg.
; RUN: FileCheck -dump-input=help | FileCheck %s -check-prefix=HELP

HELP-NOT: {{.}}
HELP: The following description was requested by -dump-input=help
HELP: try{{.*}}-color
HELP-NOT: {{.}}

;--------------------------------------------------
; never
;--------------------------------------------------

; 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 -check-prefix=CHECK-NODUMP -allow-empty

; 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-prefix=CHECK-NODUMP

;--------------------------------------------------
; default: never
;--------------------------------------------------

; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \
; RUN:           -match-full-lines 2>&1 \
; RUN: | FileCheck %s -match-full-lines -check-prefix=CHECK-NODUMP -allow-empty

; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \
; RUN:               -match-full-lines 2>&1 \
; RUN: | FileCheck %s -match-full-lines -check-prefix=CHECK-NODUMP

;--------------------------------------------------
; fail
;--------------------------------------------------

; 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 -check-prefix=CHECK-NODUMP -allow-empty

; 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-prefix=CHECK-ERR

;--------------------------------------------------
; -dump-input-on-failure
;--------------------------------------------------

; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \
; RUN:           -match-full-lines -dump-input-on-failure 2>&1 \
; RUN: | FileCheck %s -match-full-lines -check-prefix=CHECK-NODUMP -allow-empty

; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \
; RUN:               -match-full-lines -dump-input-on-failure 2>&1 \
; RUN: | FileCheck %s -match-full-lines -check-prefix=CHECK-ERR

; RUN: env FILECHECK_DUMP_INPUT_ON_FAILURE=1 \
; RUN: FileCheck -input-file %t.good %t.check -check-prefix=CHECK \
; RUN:           -match-full-lines 2>&1 \
; RUN: | FileCheck %s -match-full-lines -check-prefix=CHECK-NODUMP -allow-empty

; RUN: env FILECHECK_DUMP_INPUT_ON_FAILURE=1 \
; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \
; RUN:               -match-full-lines 2>&1 \
; RUN: | FileCheck %s -match-full-lines -check-prefix=CHECK-ERR

;--------------------------------------------------
; always
;--------------------------------------------------

; 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-prefix=CHECK-GOOD

; RUN: not FileCheck -input-file %t.err %t.check -check-prefix=CHECK \
; RUN:               -match-full-lines -dump-input=always 2>&1 \
; RUN: | FileCheck %s -match-full-lines -check-prefix=CHECK-ERR

; END.

; CHECK-GOOD: Full input was:
; CHECK-GOOD-NEXT: <<<<<<
; CHECK-GOOD-NEXT:          1: ciao
; CHECK-GOOD-NEXT: check:1     ^~~~
; CHECK-GOOD-NEXT:          2: world
; CHECK-GOOD-NEXT: next:2      ^~~~~
; CHECK-GOOD-NEXT: >>>>>>

; CHECK-ERR: Full input was:
; CHECK-ERR-NEXT: <<<<<<
; CHECK-ERR-NEXT:          1: hello
; CHECK-ERR-NEXT: check:1     X~~~~
; CHECK-ERR-NEXT:          2: world
; CHECK-ERR-NEXT: check:1     ~~~~~ error: no match found
; CHECK-ERR-NEXT: >>>>>>

; CHECK-NODUMP-NOT: <<<<<<
