HPC artifacts are written and read from pkg-db
This commit re-designs the mechanism by which we make the .mix files of libraries available to produce the Haskell Program Coverage report after running testsuites. The idea, for the Cabal library, is: * Cabal builds libraries with -fhpc, and store the hpc artifacts in build </> `extraCompilationArtifacts` * At Cabal install time, `extraCompilationArtifacts` is copied into the package database * At Cabal configure time, we both - receive as --coverage-for flags unit-ids of library components from the same package (ultimately, when #9493 is resolved, we will receive unit ids of libraries in other packages in the same project too), - and, when configuring a whole package instead of just a testsuite component, we determine the unit-ids of libraries in the package these unit-ids are written into `configCoverageFor` in `ConfigFlags` * At Cabal test time, for each library to cover (stored in `configCoverageFor`), we look in the package database for the hpc dirs, which we eventually pass along to the `hpc markup` call as `--hpcdir` flags As for cabal-install: * After a plan has been elaborated, we select the packages which can be covered and pass them to Cabal's ./Setup configure as --coverage-for=<unit-id> flags. - Notably, valid libraries are non-indefinite and non-instantiations, since HPC does not support backpack. - Furthermore, we only include libraries in the same package as the component being configured, despite possibly there being more library components in other packages of the same project. When #9493 is resolved, we could lift this restriction and pass all libraries local to the package as --coverage-for. See `determineCoverageFor` and `shouldCoverPkg` in Distribution.Client.ProjectPlanning. Detail: We no longer pass the path to the testsuite's mix dirs to `hpc markup` because we only ever include modules in libraries, which means they were previously unused. Fixes #6440 (internal libs coverage), #6397 (backpack breaks coverage), doesn't yet fix #8609 (multi-package coverage report) which is tracked in #9493, and fixes in a new way the previously fixed #4798, #5213.
Showing
- Cabal-tests/tests/UnitTests/Distribution/Utils/Structured.hs 2 additions, 2 deletionsCabal-tests/tests/UnitTests/Distribution/Utils/Structured.hs
- Cabal/src/Distribution/Simple/Configure.hs 40 additions, 2 deletionsCabal/src/Distribution/Simple/Configure.hs
- Cabal/src/Distribution/Simple/Errors.hs 6 additions, 0 deletionsCabal/src/Distribution/Simple/Errors.hs
- Cabal/src/Distribution/Simple/GHC/BuildGeneric.hs 2 additions, 4 deletionsCabal/src/Distribution/Simple/GHC/BuildGeneric.hs
- Cabal/src/Distribution/Simple/GHC/BuildOrRepl.hs 2 additions, 4 deletionsCabal/src/Distribution/Simple/GHC/BuildOrRepl.hs
- Cabal/src/Distribution/Simple/GHCJS.hs 3 additions, 5 deletionsCabal/src/Distribution/Simple/GHCJS.hs
- Cabal/src/Distribution/Simple/Hpc.hs 16 additions, 8 deletionsCabal/src/Distribution/Simple/Hpc.hs
- Cabal/src/Distribution/Simple/Setup/Config.hs 23 additions, 0 deletionsCabal/src/Distribution/Simple/Setup/Config.hs
- Cabal/src/Distribution/Simple/Setup/Test.hs 0 additions, 44 deletionsCabal/src/Distribution/Simple/Setup/Test.hs
- Cabal/src/Distribution/Simple/Test.hs 43 additions, 7 deletionsCabal/src/Distribution/Simple/Test.hs
- Cabal/src/Distribution/Simple/Test/ExeV10.hs 3 additions, 2 deletionsCabal/src/Distribution/Simple/Test/ExeV10.hs
- Cabal/src/Distribution/Simple/Test/LibV09.hs 3 additions, 2 deletionsCabal/src/Distribution/Simple/Test/LibV09.hs
- cabal-install/src/Distribution/Client/Config.hs 1 addition, 2 deletionscabal-install/src/Distribution/Client/Config.hs
- cabal-install/src/Distribution/Client/ProjectBuilding.hs 2 additions, 3 deletionscabal-install/src/Distribution/Client/ProjectBuilding.hs
- cabal-install/src/Distribution/Client/ProjectConfig/Legacy.hs 3 additions, 4 deletions...l-install/src/Distribution/Client/ProjectConfig/Legacy.hs
- cabal-install/src/Distribution/Client/ProjectOrchestration.hs 1 addition, 0 deletions...l-install/src/Distribution/Client/ProjectOrchestration.hs
- cabal-install/src/Distribution/Client/ProjectPlanning.hs 44 additions, 45 deletionscabal-install/src/Distribution/Client/ProjectPlanning.hs
- cabal-install/src/Distribution/Client/Setup.hs 7 additions, 8 deletionscabal-install/src/Distribution/Client/Setup.hs
- cabal-testsuite/PackageTests/Backpack/Includes2/Includes2.cabal 1 addition, 1 deletion...testsuite/PackageTests/Backpack/Includes2/Includes2.cabal
- cabal-testsuite/PackageTests/Backpack/Includes2/cabal.project 1 addition, 0 deletions...l-testsuite/PackageTests/Backpack/Includes2/cabal.project
Loading
Please register or sign in to comment