You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Per-component multi-package builds with coverage enabled
This commits re-enables per-component builds when coverage checking is
enabled. This restriction was previously added in #5004 to fix#4798.
- #4798 was subsequently fixed "again" with the fix for #5213, in #7493 by
fixing the paths of the testsuite `.mix` files to the same location as
that of the main library component.
Therefore the restriction to treat testsuites per-package
(legacy-fallback) is no longer needed.
We went further and fixed coverage for internal sublibraries, packages
with backpack (but without generating coverage information for
indefinite and instantiated units -- it is not clear what it would mean
for HPC to support this), and coverage for multi-package projects.
1. We allow hpc in per-component builds
2. To generate hpc files in the appropriate component directories in the
distribution tree, we remove the hack from #7493 and instead determine
the `.mix` directories that are included in the call to `hpc markup` by
passing the list of components in the project from the cabal-install
invocation of test.
We also drop an unnecessary directory in the hpc file hierarchy.
3. To account for internal (non-backpack) libraries, we include the mix
dirs and modules of all (non-indefinite and non-instantiations)
libraries in the project
Indefinite libraries and instantiations are ignored as it is not
obvious what it means for HPC to support backpack, e.g. covering a
library function that two different instantiations
4. We now only reject coverage if there are no libraries at all in the
project, rather than if there are no libraries in the package.
This allows us to drop the coverage masking logic in
cabal.project.coverage while still having coverage of cabal-install
(i.e. cabal test --enable-coverage cabal-install now works without the
workaround)
Even though we allow multi-package project coverage, we still cover each
package independently -- the tix files resulting from all packages are
not combined for the time being.
Multi-package project coverage is fixed in Cabal, however, the
paths to the source files listed in the `.mix` files will be incorrect
because package sources will no longer be in the root of the project
tree, but rather under the subdir with the package. We add an error for
multi-package projects when coverage is enabled, and track lifting this
error in #9493.
Includes tests for #6440, #6397, #8609, and #4798 (the test for #5213 already exists)
Fixes#6440 (internal libs coverage), #6397 (backpack breaks coverage)
, doesn't yet fix#8609 (multi-package coverage report) and fixes in a new way the
previously fixed#4798, #5213.
0 commit comments