All Projects → killy971 → hpc-coveralls

killy971 / hpc-coveralls

Licence: BSD-3-Clause license
coveralls.io support for haskell code coverage with hpc

Programming Languages

haskell
3896 projects

Projects that are alternatives of or similar to hpc-coveralls

Coverband
Ruby production code coverage collection and reporting (line of code usage)
Stars: ✭ 1,937 (+3128.33%)
Mutual labels:  coverage-report, coverage-data
python-test-reporter
DEPRECATED Uploads Python test coverage data to Code Climate
Stars: ✭ 18 (-70%)
Mutual labels:  coverage-report
Karma Coverage Istanbul Reporter
A karma reporter that uses the latest istanbul 1.x APIs to report coverage
Stars: ✭ 154 (+156.67%)
Mutual labels:  coverage-report
django-aws-eb-deploy
This is a GitHub action for automated deployment of Django projects to aws elastic beanstalk.
Stars: ✭ 24 (-60%)
Mutual labels:  coverage-report
octocov
octocov is a toolkit for collecting code metrics (code coverage, code to test ratio and test execution time).
Stars: ✭ 191 (+218.33%)
Mutual labels:  coverage-report
react-testing-mocha-chai-enzyme
A solid test setup for React components with Mocha, Chai, Sinon, Enzyme in a Webpack/Babel application.
Stars: ✭ 48 (-20%)
Mutual labels:  coverage-report
Typescript Coverage Report
Node command tool to generate TypeScript coverage report
Stars: ✭ 138 (+130%)
Mutual labels:  coverage-report
goverreport
Command line tool for coverage reporting and validation
Stars: ✭ 44 (-26.67%)
Mutual labels:  coverage-report
enterprise
Code coverage done right.® On-premise enterprise version.
Stars: ✭ 63 (+5%)
Mutual labels:  coverage-report
jacoco-badge-generator
Coverage badges, and pull request coverage checks, from JaCoCo reports in GitHub Actions
Stars: ✭ 53 (-11.67%)
Mutual labels:  coverage-report
cov
An emacs extension for displaying coverage data on your code
Stars: ✭ 65 (+8.33%)
Mutual labels:  coverage-data
javascript-test-reporter
DEPRECATED Code Climate test reporter client for JavaScript projects
Stars: ✭ 68 (+13.33%)
Mutual labels:  coverage-report
lcov-cop
A Github Action which helps enforce code coverage
Stars: ✭ 13 (-78.33%)
Mutual labels:  coverage-data
Codecov Python
Python report uploader for Codecov
Stars: ✭ 162 (+170%)
Mutual labels:  coverage-report
unitest
🌎 Seamless node and browser unit testing with code coverage
Stars: ✭ 28 (-53.33%)
Mutual labels:  coverage-report
cacao
Callable Cancer Loci - assessment of sequencing coverage for actionable and pathogenic loci in cancer
Stars: ✭ 21 (-65%)
Mutual labels:  coverage-report
continuous-integration-with-python
How to test your python code. How to automatically run your tests for your Python code. How to get reports of the tests coverage
Stars: ✭ 25 (-58.33%)
Mutual labels:  coverage-report
coverex
Coverage Reports for Elixir
Stars: ✭ 98 (+63.33%)
Mutual labels:  coverage-report
behat-code-coverage
Generate Code Coverage reports for Behat tests
Stars: ✭ 48 (-20%)
Mutual labels:  coverage-report
javadoc-coverage
A Doclet to generate JavaDoc coverage reports ☕️🧪📗
Stars: ✭ 23 (-61.67%)
Mutual labels:  coverage-report

hpc-coveralls

Build Status Gitter chat BSD3 License Version on Hackage Stories in Progress

hpc-coveralls converts and sends Haskell projects hpc code coverage to coverall.io.

At the moment, only Travis CI has been tested, but hpc-coveralls should be compatible with other CI services (Check HpcCoverallsMain source for the list).

hpc-coveralls is still under development and any contributions are welcome!

Usage

Travis CI

Below is the simplest example of configuration for your project .travis.yml:

language: haskell
ghc: 7.8
script:
  - cabal configure --enable-tests --enable-library-coverage && cabal build && cabal test
after_script:
  - cabal install hpc-coveralls
  - hpc-coveralls [options] [test-suite-names]

When building with Cabal 1.22 or a newer version, use the --enable-coverage flag instead of --enable-library-coverage.

If the build fails during the test phase with an error message starting by "hpc:", just replace the cabal test command by run-cabal-test, as in the following example:

before_install:
  - cabal install hpc-coveralls
script:
  - cabal configure --enable-tests --enable-library-coverage && cabal build
  - run-cabal-test [options] [cabal-test-options]
after_script:
  - hpc-coveralls [options] [test-suite-names]

This will prevent the build to fail because of hpc related reasons, which are usually not fatal and should not affect the coverage data. Details are available in the next section.

You may also experience some issues related to your project dependencies, which can be solved by using the --avoid-reinstalls/--force-reinstalls flags.
Another way to solve problems related dependencies is to install hpc-coveralls in a sandbox, as in the example below:

after_script:
  - cabal sandbox init && cabal install hpc-coveralls
  - .cabal-sandbox/bin/hpc-coveralls [options] [test-suite-names]

For a real world example usage, please refer to this-project .travis.yml file (result on coveralls).
Other real world examples can be found on this wiki page which contains a list of GitHub repositories using hpc-coveralls.

The run-cabal-test command

Under certain conditions related to the project structure and the version of hpc, cabal test may output an error message and exit with the error code 1, which would result in a build failure.

To prevent this from happening, hpc-coveralls provides the run-cabal-test command which runs cabal test and returns with 0 if the following regular expression never matches any line of the output:

/^Test suite .*: FAIL$/

Below are some of the conditions under which you will likely need to use run-cabal-test:

  • when using GHC 7.6 (hpc 0.6 known issue)
  • when using GHC 7.8 with multiple test suites covering the same module(s) (issue #18) (fixed in GHC 7.10)

Options

The --cabal-name option can be used to specify a custom executable name instead of the default cabal when calling cabal test.
Below is an example which can be useful for projects with a Travis configuration based on multi-ghc-travis:

run-cabal-test --cabal-name=cabal-1.20

The hpc-coveralls command

This command parses the hpc generated output, converts its to Coveralls json format and finally sends it to coveralls.io over http.
Multiple test suites can be specified, in which case the coverage report will be made of the merged coverage data generated by the specified test suites.
For example, if your test suite are named test1 and test2, use the command as follows:

hpc-coveralls test1 test2

Options

--exclude-dir

The --exclude-dir option allows to exclude source files located under a given directory from the coverage report.
You can exclude source files located under the test/ directory by using this option as in the following example:

hpc-coveralls --exclude-dir=test [test-suite-names]

You can specify multiple excluded folders by using the following example syntax:

hpc-coveralls --exclude-dir=test1 --exclude-dir=test2 [test-suite-names]

--coverage-mode

As Coveralls doesn't support partial-line coverage yet, hpc-coveralls currently converts hpc coverage data into line based coverage data, which is the only format supported at the moment. The --coverage-mode option allows to configure how the coverage data is converted into Coveralls format, based on your needs.
Below are the two modes currently available, with an explanation of what the hit count values mean.

--coverage-mode=AllowPartialLines (default):

  • 0 : the line is never hit,
  • 1 : the line is partially covered,
  • 2 : the line is fully covered.

Note that AllowPartialLines conversion mode follows the same convention as the one used by cloverage coveralls output for Clojure projects code coverage.

--coverage-mode=StrictlyFullLines:

  • 0 : the line is never hit or only partially covered,
  • 1 : the line is fully covered.

Please also note that there is an open issue on coveralls issue tracker in order to improve this (add support for partial line coverage).

--repo-token

This option allows to specify your repo token when sending the report to coveralls.io.

--display-report

This boolean option prints the raw json coverage report to be sent to coveralls.io.

--dont-send

This boolean option prevents hpc-coveralls from sending the coverage report to coveralls.io. This option can be used together with --display-report for testing purpose.
For example, you can try various combinations of the other options and confirm the difference in the resulting report outputs.

--curl-verbose

This boolean option enables curl verbose mode and prints the raw json response received after posting the coverage report to coveralls.io.

--cabal-file

Use this option to specify the cabal file of the coverage report target package. This might be required in some cases, especially when building with cabal >= 1.22 and ghc >= 7.10, although hpc-coveralls assumes the package cabal file to be the unique file of extension ".cabal" in the current directory if it exists. For further details check this issue.

--service-name

This option allows you to override the service_name value from the report sent to coveralls.io. You will have to specify it for example when using Travis-pro as in the example below as there is currently no way to programmatically determine:

--service-name=travis-pro

Limitations

Because of the way hpc works, coverage data is only generated for modules that are referenced directly or indirectly by the test suites. As a result, the total package coverage computed by coveralls may be higher than what it really is. An option will be added soon in order to allow specifying source folders to include in the total coverage computation.

Contributing

hpc-coveralls is still under development and any contributions are welcome!

Future Plans and Ideas

Please share your comments and suggestions on hpc-coveralls Gitter channel!

License

BSD3 (tl;dr)

Notes

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].