Compiler projects using llvm
REQUIRES: shell

RUN: rm -rf %t && mkdir %t && cd %t
RUN: cp %S/Inputs/test.gcno %S/Inputs/test.gcda .

RUN: llvm-cov gcov -i test.cpp 2> %t.err | FileCheck %s --check-prefixes=OUT
RUN: FileCheck %s --check-prefix=I < test.cpp.gcov
RUN: cp test.cpp.gcov saved.cpp.gcov

# -i does not read source files. No ENOENT diagnostic.
RUN: count 0 < %t.err

# -n suppresses the .gcov output.
RUN: llvm-cov gcov -i -n test. | FileCheck %s --check-prefixes=OUT
RUN: not ls test..gcov

# The output filename is formed by appending ".gcov" to the specifiled filename.
RUN: llvm-cov gcov -i test. | FileCheck %s --check-prefix=OUT
RUN: cmp test..gcov saved.cpp.gcov

RUN: llvm-cov gcov -i -b test.cpp | FileCheck %s --check-prefixes=OUT,OUT-B
RUN: FileCheck %s --check-prefixes=I,I-B --match-full-lines --strict-whitespace < test.cpp.gcov

# Many other options are ignored.
RUN: rm -f test.cpp.gcov && llvm-cov gcov -i -a -c -l -p -u -x test.cpp
RUN: cmp test.cpp.gcov saved.cpp.gcov

         OUT:File 'test.cpp'
    OUT-NEXT:Lines executed:81.40% of 43
  OUT-B-NEXT:Branches executed:100.00% of 15
  OUT-B-NEXT:Taken at least once:86.67% of 15
  OUT-B-NEXT:No calls
   OUT-EMPTY:
    OUT-NEXT:File './test.h'
    OUT-NEXT:Lines executed:100.00% of 1
  OUT-B-NEXT:No branches
  OUT-B-NEXT:No calls
   OUT-EMPTY:

       I:file:test.cpp
       I:function:10,4294967296,_ZN1A1BEv
  I-NEXT:function:12,0,_Z7uselessv
  I-NEXT:function:14,0,_Z12more_uselessv
  I-NEXT:function:18,1,_Z3foov
  I-NEXT:function:23,0,_Z3barv
  I-NEXT:function:28,4,_Z6assignii
  I-NEXT:function:32,1,_Z15initialize_gridv
  I-NEXT:function:38,1,main
       I:lcount:10,4294967296
       I:lcount:33,3
I-B-NEXT:branch:33,taken
I-B-NEXT:branch:33,taken
       I:file:./test.h
  I-NEXT:function:2,1,_ZN1AC2Ev
  I-NEXT:lcount:2,1