hpc-coveralls
hpc-coveralls copied to clipboard
Support cabal.projects
- Allow user to specify "package directories" corresponding to the source directories of packages in a cabal.project.
- Add functionality required to allow the user to specify the hpc data search directories explicitly, rather than searching for it in the usual places. This is primarily motivated by the Nix package manager, where hpc output is usally written to some folder outside of the current directory (e.g. to /nix/store/HASH-my-lib-0.1.0.0/share/hpc) as well as cabal.projects, where the hpc output directory might be "dist-newstyle/build/$platform/$compiler/$package/hpc". Multiple hpc directories can be specified, for e.g., one for each package in a cabal.project.
- The filepath listed in a mix file doesn't include the sub-directory of the package in a cabal.project. So for cabal.projects, the filepath used as the index in the TestSuiteCoverageData is now prefixed with the sub-directory of the package. The behaviour when not using the "--package-dir" argument, or when using "--package-dir ./" is unchanged.
- Gave a Monoid instance to TestSuiteCoverageData so we can easily use folds to sum the data up.
- Separated the coveralls.io specific logic and the coverage data logic. The coverage data could be re-used for other coveralls-style tools.
- Source files are now excluded before searching for them, so that if the file does not exist, it does not throw an error (primarily motivated by out-of-source builds such as Nix, where modules such as Path_library.hs can't be found in the build directory).
- Changed the structure of getCoverageData a little, and added some commentary, so each of the steps required to read all the coverage data are a bit clearer.
cc @guillaume-nargeot
This repository seems dead years now... I cannot even make it work with the new Cabal 3.0.0 and GHC >= 8.8.
@JasonSome Yep, I've figured as much.
As for working with newer versions of Cabal, this might help: https://github.com/sevanspowell/hpc-coveralls/commit/3193755c9dfb30dbde4b26e2ec87766f3dcb5b36