;
; Basic error checking.
;

this is something else

; RUN: %ProtectFileCheckOutput \
; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK-ERR1 2>&1 \
; RUN: | FileCheck %s --check-prefix=ERRCOUNT1
CHECK-ERR1-COUNT-xx: this
ERRCOUNT1: [[@LINE-1]]:18: error: invalid count in -COUNT specification on prefix 'CHECK-ERR1'

; RUN: %ProtectFileCheckOutput \
; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK-ERR2 2>&1 \
; RUN: | FileCheck %s --check-prefix=ERRCOUNT2
CHECK-ERR2-COUNT-0x1: something
ERRCOUNT2: [[@LINE-1]]:19: error: invalid count in -COUNT specification on prefix 'CHECK-ERR2'

; RUN: %ProtectFileCheckOutput \
; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK-ERR3 2>&1 \
; RUN: | FileCheck %s --check-prefix=ERRCOUNT3
CHECK-ERR3-COUNT-100x: else
ERRCOUNT3: [[@LINE-1]]:21: error: invalid count in -COUNT specification on prefix 'CHECK-ERR3'

; RUN: %ProtectFileCheckOutput \
; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK-ERR4 2>&1 \
; RUN: | FileCheck %s --check-prefix=ERRCOUNT4
CHECK-ERR4-COUNT-0: else
ERRCOUNT4: [[@LINE-1]]:19: error: invalid count in -COUNT specification on prefix 'CHECK-ERR4'

;
; Main functionality
;

this is duplicate
this is duplicate
this is not duplicate
this is duplicate
this is duplicate
this is duplicate

; RUN: FileCheck %s --input-file %s --check-prefix=CHECK-CNT1
CHECK-CNT1-COUNT-1: this is duplicate
CHECK-CNT1: 	    this is duplicate
CHECK-CNT1-NEXT:    this is not duplicate

; RUN: FileCheck %s --input-file %s --check-prefix=CHECK-CNT2
CHECK-CNT2-COUNT-2: this is duplicate
CHECK-CNT2:         this is not duplicate

; RUN: FileCheck %s --input-file %s --check-prefix=CHECK-CNT3
CHECK-CNT3-COUNT-2: this is duplicate
CHECK-CNT3:         this is not duplicate
CHECK-CNT3-COUNT-3: this is duplicate
CHECK-CNT3-NOT:     {{^}}this is duplicate

; RUN: FileCheck %s --input-file %s --check-prefix=CHECK-CNT4
CHECK-CNT4-COUNT-5: this is duplicate
CHECK-CNT4-EMPTY:

Many-label:

-many-
-many-
-many-
-many-
-many-
-many-
-many-
-many-
-many-
-many-
-many-
-many-
-many-
-many-
-many-
-many-

; RUN: FileCheck %s --input-file %s --check-prefix=CHECK-CNTMANY
CHECK-CNTMANY-COUNT-2: this is duplicate
CHECK-CNTMANY-LABEL: Many-label:
CHECK-CNTMANY-EMPTY:
CHECK-CNTMANY-COUNT-16: {{^}}-many-
CHECK-CNTMANY-EMPTY:

;
; Tests on mismatches:
;

; RUN: %ProtectFileCheckOutput \
; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK-MIS1 2>&1 \
; RUN: | FileCheck %s --check-prefix=MISCOUNT1
CHECK-MIS1-COUNT-3: this is duplicate
CHECK-MIS1: {{^}}this is not duplicate
MISCOUNT1: [[@LINE-1]]:13: error: CHECK-MIS1: expected string not found in input

; RUN: %ProtectFileCheckOutput \
; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK-MIS2 2>&1 \
; RUN: | FileCheck %s --check-prefix=MISCOUNT2
CHECK-MIS2-COUNT-10: {{^this is duplicate}}
CHECK-MIS2: {{^}}this is not duplicate
MISCOUNT2: [[@LINE-2]]:22: error: CHECK-MIS2-COUNT: expected string not found in input

; RUN: %ProtectFileCheckOutput \
; RUN: not FileCheck %s --input-file %s --check-prefix=CHECK-MIS3 2>&1 \
; RUN: | FileCheck %s --check-prefix=MISCOUNT3
CHECK-MIS3-COUNT-5: this is duplicate
CHECK-MIS3-EMPTY:
CHECK-MIS3-LABEL: Many-label:
CHECK-MIS3-EMPTY:
CHECK-MIS3-COUNT-160: {{^}}-many-
CHECK-MIS3-EMPTY:
MISCOUNT3: [[@LINE-2]]:23: error: CHECK-MIS3-COUNT: expected string not found in input (17 out of 160)
