hpc-coveralls alternatives and similar packages
Based on the "Control" category.
Alternatively, view hpc-coveralls alternatives based on common mentions on social networks and blogs.
rio-orphans9.9 2.1 hpc-coveralls VS rio-orphansA standard library for Haskell
machines9.8 2.6 hpc-coveralls VS machinesNetworks of composable stream transducers
fused-effects9.8 6.3 hpc-coveralls VS fused-effectsA fast, flexible, fused effect system for Haskell
funflow9.8 0.0 hpc-coveralls VS funflowFunctional workflows
pipes9.8 0.0 hpc-coveralls VS pipesCompositional pipelines
transient9.8 0.0 hpc-coveralls VS transientA full stack, reactive architecture for general purpose programming. Algebraic and monadically composable primitives for concurrency, parallelism, event handling, transactions, multithreading, Web, and distributed computing with complete de-inversion of control (No callbacks, no blocking, pure state)
mtl9.8 4.7 hpc-coveralls VS mtlThe Monad Transformer Library
apecs9.7 0.0 hpc-coveralls VS apecsa fast, extensible, type driven Haskell ECS framework for games
capability9.7 2.6 hpc-coveralls VS capabilityExtensional capabilities and deriving combinators
recursion-schemesGeneralized bananas, lenses and barbed wire
freer-simple9.6 0.0 hpc-coveralls VS freer-simpleA friendly effect system for Haskell
distributed-closureSerializable closures for distributed programming.
free9.6 3.7 hpc-coveralls VS freefree monads
foldl9.6 0.0 hpc-coveralls VS foldlComposable, streaming, and efficient left folds
record9.6 0.0 hpc-coveralls VS recordAnonymous records
classy-prelude9.5 0.0 hpc-coveralls VS classy-preludeType classes for mapping, folding, and traversing monomorphic containers
auto9.5 0.0 hpc-coveralls VS autoHaskell DSL and platform providing denotational, compositional api for discrete-step, locally stateful, interactive programs, games & automations. http://hackage.haskell.org/package/auto
extensible-effectsExtensible Effects: An Alternative to Monad Transformers
safe-exceptions9.5 0.0 hpc-coveralls VS safe-exceptionsSafe, consistent, and easy exception handling
classy-prelude-yesodType classes for mapping, folding, and traversing monomorphic containers
unliftio9.5 0.0 hpc-coveralls VS unliftioThe MonadUnliftIO typeclass for unlifting monads to IO
selective9.5 0.0 hpc-coveralls VS selectiveSelective Applicative Functors: Declare Your Effects Statically, Select Which to Execute Dynamically
these9.5 0.0 hpc-coveralls VS theseAn either-or-both data type, with corresponding hybrid error/writer monad transformer.
ComonadSheet9.4 0.0 hpc-coveralls VS ComonadSheetA library for expressing "spreadsheet-like" computations with absolute and relative references, using fixed-points of n-dimensional comonads.
hask9.4 0.0 hpc-coveralls VS haskCategory theory for Haskell with a lens flavor (you need GHC 7.8.3, not 7.8.2 to build this!)
abstract-par9.4 0.0 hpc-coveralls VS abstract-parType classes generalizing the functionality of the 'monad-par' library.
retry9.4 0.0 hpc-coveralls VS retryRetry combinators for monadic actions that may fail
transient-universeA Cloud monad based on transient for the creation of Web and reactive distributed applications that are fully composable, where Web browsers are first class nodes in the cloud
frpnow9.3 0.0 hpc-coveralls VS frpnowPrincipled practical FRP
parallel9.3 0.0 hpc-coveralls VS parallela library for parallel programming
cloud-haskell9.2 0.0 hpc-coveralls VS cloud-haskellThis is an umbrella development repository for Cloud Haskell
either9.2 0.0 hpc-coveralls VS eitherthe EitherT monad transformer
distributed-forkA distributed data processing framework in Haskell.
deepseq9.1 2.1 hpc-coveralls VS deepseqDeep evaluation of data structures
ifcxt9.1 0.0 hpc-coveralls VS ifcxtconstraint level if statements
tardis9.1 0.0 hpc-coveralls VS tardisBidirectional state monad transformer
monad-validate9.1 0.0 hpc-coveralls VS monad-validate(NOTE: REPOSITORY MOVED TO NEW OWNER: https://github.com/lexi-lambda/monad-validate) A Haskell monad transformer library for data validation
contravariant9.1 0.0 hpc-coveralls VS contravariantHaskell 98 contravariant functors
distributed-process-platformDEPRECATED (Cloud Haskell Platform) in favor of distributed-process-extras, distributed-process-async, distributed-process-client-server, distributed-process-registry, distributed-process-supervisor, distributed-process-task and distributed-process-execution
monad-control9.1 0.0 hpc-coveralls VS monad-controlLift control operations, like exception catching, through monad transformers
ixmonad9.0 0.0 hpc-coveralls VS ixmonadProvides 'graded monads' and 'parameterised monads' to Haskell, enabling fine-grained reasoning about effects.
errors9.0 0.0 hpc-coveralls VS errorsType-safe error handling
effect-monad9.0 0.0 hpc-coveralls VS effect-monadProvides 'graded monads' and 'parameterised monads' to Haskell, enabling fine-grained reasoning about effects.
operational9.0 0.0 hpc-coveralls VS operationalImplement monads by specifying instructions and their desired operational semantics.
freer-effects9.0 0.0 hpc-coveralls VS freer-effectsAn implementation of "Freer Monads, More Extensible Effects".
exceptions8.9 0.0 hpc-coveralls VS exceptionsmtl friendly exceptions
monad-time8.9 0.0 hpc-coveralls VS monad-timeType class for monads which carry the notion of the current time.
motor8.9 0.0 hpc-coveralls VS motorType-safe effectful state machines in Haskell
mmorph8.9 0.0 hpc-coveralls VS mmorphMonad morphisms
lens-tutorial8.9 0.0 hpc-coveralls VS lens-tutorialThe missing tutorial module for the lens library
Static code analysis for 29 languages.
Do you think we are missing an alternative of hpc-coveralls or a related project?
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!
Below is the simplest example of configuration for your project
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
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
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
- 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)
--cabal-name option can be used to specify a custom executable name instead of the default
cabal when calling
Below is an example which can be useful for projects with a Travis configuration based on multi-ghc-travis:
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
test2, use the command as follows:
hpc-coveralls test1 test2
--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]
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.
--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.
0: the line is never hit,
1: the line is partially covered,
2: the line is fully covered.
AllowPartialLines conversion mode follows the same convention as the one used by cloverage coveralls output for Clojure projects code coverage.
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).
This option allows to specify your repo token when sending the report to coveralls.io.
This boolean option prints the raw json coverage report to be sent to coveralls.io.
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.
This boolean option enables curl verbose mode and prints the raw json response received after posting the coverage report to coveralls.io.
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.
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:
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.
hpc-coveralls is still under development and any contributions are welcome!
Please share your comments and suggestions on hpc-coveralls Gitter channel!
- HPC publication: http://ittc.ku.edu/~andygill/papers/Hpc07.pdf
*Note that all licence references and agreements mentioned in the hpc-coveralls README section above are relevant to that project's source code only.