| ; Check that, when color is enabled, input dumps are colored as desired. Other |
| ; tests check when colors are enabled generally. |
| ; |
| ; There are many redundant ANSI escape sequences in FileCheck's color output. |
| ; In particular, all sequences immediately preceding a <reset> with no text in |
| ; between are redundant. These sequences should have no impact on what the |
| ; FileCheck user sees. |
| |
| ; REQUIRES: ansi-escapes |
| |
| ; RUN: split-file %s %t |
| |
| ; DEFINE: %{opts} = |
| ; DEFINE: %{run} = \ |
| ; DEFINE: %ProtectFileCheckOutput \ |
| ; DEFINE: not FileCheck -color -dump-input=always -dump-input-filter=error \ |
| ; DEFINE: -dump-input-context=2 %{opts} %t/check.txt < %t/input.txt \ |
| ; DEFINE: 2>&1 | \ |
| ; DEFINE: %{reveal-ansi-escapes} | \ |
| ; DEFINE: FileCheck %s -match-full-lines -check-prefixes |
| |
| ; REDEFINE: %{opts} = |
| ; RUN: %{run} CHECK-Q |
| ; REDEFINE: %{opts} = -v |
| ; RUN: %{run} CHECK-V |
| ; REDEFINE: %{opts} = -vv |
| ; RUN: %{run} CHECK-VV |
| |
| ; Without -v or -vv: |
| ; - Line numbers and ellipses are bright black. |
| ; - Input text is reset to the default. |
| ; - Errors are red. |
| ; - Fuzzy matches are magenta. |
| ; |
| ; CHECK-Q: Input was: |
| ; CHECK-Q-NEXT: <<<<<< |
| ; CHECK-Q-NEXT: <bold><reset><bold-bright-black> 1: <reset><bold><reset>hello <reset> |
| ; CHECK-Q-NEXT: <bold-red>dag:2'0 { search range start (exclusive) |
| ; CHECK-Q-NEXT: <reset><bold-red>dag:2'1 error: no match found in search range |
| ; CHECK-Q-NEXT: <reset><bold-bright-black> 2: <reset><bold><reset>jello <reset> |
| ; CHECK-Q-NEXT: <bold-magenta>dag:2'2 ? possible intended match |
| ; CHECK-Q-NEXT: <reset><bold-bright-black> 3: <reset><bold><reset>end <reset> |
| ; CHECK-Q-NEXT: <bold-red>dag:2'3 } search range end (exclusive) |
| ; CHECK-Q-NEXT: <reset><bold-bright-black> 4: <reset><bold><reset>foo <reset> |
| ; CHECK-Q-NEXT: <bold-bright-black> 5: <reset><bold><reset>foo <reset> |
| ; CHECK-Q-NEXT: <bold-bright-black> .<reset> |
| ; CHECK-Q-NEXT: <bold-bright-black> .<reset> |
| ; CHECK-Q-NEXT: <bold-bright-black> .<reset> |
| ; CHECK-Q-NEXT: >>>>>> |
| |
| ; With -v, all of the above is true but: |
| ; - Successes are green. |
| ; - Unmatched input text now has a cyan background. |
| ; |
| ; CHECK-V: Input was: |
| ; CHECK-V-NEXT: <<<<<< |
| ; CHECK-V-NEXT: <bold><reset><bold-bright-black> 1: <reset><bold><bg-bold-cyan><reset>hello<bg-bold-cyan> <reset> |
| ; CHECK-V-NEXT: <bold-green>dag:1 ^~~~~ |
| ; CHECK-V-NEXT: <reset><bold-red>dag:2'0 { search range start (exclusive) |
| ; CHECK-V-NEXT: <reset><bold-red>dag:2'1 error: no match found in search range |
| ; CHECK-V-NEXT: <reset><bold-bright-black> 2: <reset><bold><bg-bold-cyan>jello <reset> |
| ; CHECK-V-NEXT: <bold-magenta>dag:2'2 ? possible intended match |
| ; CHECK-V-NEXT: <reset><bold-bright-black> 3: <reset><bold><bg-bold-cyan><reset>end<bg-bold-cyan> <reset> |
| ; CHECK-V-NEXT: <bold-green>label:3 ^~~ |
| ; CHECK-V-NEXT: <reset><bold-red>dag:2'3 } search range end (exclusive) |
| ; CHECK-V-NEXT: <reset><bold-bright-black> 4: <reset><bold><bg-bold-cyan>foo <reset> |
| ; CHECK-V-NEXT: <bold-bright-black> 5: <reset><bold><bg-bold-cyan>foo <reset> |
| ; CHECK-V-NEXT: <bold-bright-black> .<reset> |
| ; CHECK-V-NEXT: <bold-bright-black> .<reset> |
| ; CHECK-V-NEXT: <bold-bright-black> .<reset> |
| ; CHECK-V-NEXT: >>>>>> |
| |
| ; With -vv, all of the above is true but: |
| ; - Discarded matches are cyan. |
| ; |
| ; CHECK-VV: Input was: |
| ; CHECK-VV-NEXT: <<<<<< |
| ; CHECK-VV-NEXT: <bold><reset><bold-bright-black> 1: <reset><bold><bg-bold-cyan><reset>hello<bg-bold-cyan> <reset> |
| ; CHECK-VV-NEXT: <bold-green>dag:1 ^~~~~ |
| ; CHECK-VV-NEXT: <reset><bold-cyan>dag:2'0 !~~~~ discard: overlaps earlier match |
| ; CHECK-VV-NEXT: <reset><bold-red>dag:2'1 { search range start (exclusive) |
| ; CHECK-VV-NEXT: <reset><bold-red>dag:2'2 error: no match found in search range |
| ; CHECK-VV-NEXT: <reset><bold-bright-black> 2: <reset><bold><bg-bold-cyan>jello <reset> |
| ; CHECK-VV-NEXT: <bold-magenta>dag:2'3 ? possible intended match |
| ; CHECK-VV-NEXT: <reset><bold-bright-black> 3: <reset><bold><bg-bold-cyan><reset>end<bg-bold-cyan> <reset> |
| ; CHECK-VV-NEXT: <bold-green>label:3 ^~~ |
| ; CHECK-VV-NEXT: <reset><bold-red>dag:2'4 } search range end (exclusive) |
| ; CHECK-VV-NEXT: <reset><bold-bright-black> 4: <reset><bold><bg-bold-cyan>foo <reset> |
| ; CHECK-VV-NEXT: <bold-bright-black> 5: <reset><bold><bg-bold-cyan>foo <reset> |
| ; CHECK-VV-NEXT: <bold-bright-black> .<reset> |
| ; CHECK-VV-NEXT: <bold-bright-black> .<reset> |
| ; CHECK-VV-NEXT: <bold-bright-black> .<reset> |
| ; CHECK-VV-NEXT: >>>>>> |
| |
| ;--- check.txt |
| CHECK-DAG: hello |
| CHECK-DAG: hello |
| CHECK-LABEL: end |
| |
| ;--- input.txt |
| hello |
| jello |
| end |
| foo |
| foo |
| foo |
| foo |
| foo |
| foo |
| foo |
| foo |
| foo |