# tasty-coverage
A [tasty](https://hackage.haskell.org/package/tasty) ingredient which allows to generate per-test coverage data.
If the GHC compiler is passed the `-fhpc` flag, then the generated code is instrumented in order to also emit information about the executed parts of the sourcecode at runtime.
This coverage information is written to a file with the suffix `.tix`.
For testsuites it is sometimes more useful to have the coverage information for each test individually.
This information can be collected using the methods from the `Trace.Hpc.Reflect` module from the [hpc](https://hackage.haskell.org/package/hpc) library.
The `tasty-coverage` package provides a simple ingredient for the [tasty](https://hackage.haskell.org/package/tasty) testsuite driver which allows to run the testsuite with the `--report-coverage` option.
When this option is passed, one `.tix` file is generated for each individual test.
Passing tests have the file suffix `PASSED.tix`, whereas failing tests have the suffix `FAILED.tix`.
```console
> cabal run tasty-coverage-test -- --help
Mmm... tasty test suite
Usage: tasty-coverage-test [-p|--pattern PATTERN] [-t|--timeout DURATION]
[--report-coverage]
Available options:
-h,--help Show this help text
-p,--pattern PATTERN Select only tests which satisfy a pattern or awk
expression
-t,--timeout DURATION Timeout for individual tests (suffixes: ms,s,m,h;
default: s)
--report-coverage Generate per-test coverage data
> cabal run tasty-coverage-test -- --report-coverage
Wrote coverage file: tix/UnitTests.testOne.PASSED.tix
Wrote coverage file: tix/UnitTests.testTwo.PASSED.tix
Wrote coverage file: tix/UnitTests.testThree.FAILED.tix
```