Skip to content

Commit 7efa483

Browse files
committed
Rename coverageReport/coverageReport'
1 parent 38e1ea1 commit 7efa483

File tree

5 files changed

+29
-47
lines changed

5 files changed

+29
-47
lines changed

docs/tutorials/coverage.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ in {
3636
## Per-package
3737

3838
```bash
39-
nix-build default.nix -A "projectWithCoverage.$pkg.coverageReport'"
39+
nix-build default.nix -A "projectWithCoverage.$pkg.coverageReport"
4040
```
4141

4242
This will generate a coverage report for the package you requested. By
@@ -48,7 +48,7 @@ See the [developer coverage docs](../dev/coverage.md#package-reports) for more i
4848
## Project-wide
4949

5050
```bash
51-
nix-build default.nix -A "projectWithCoverage.projectCoverageReport'"
51+
nix-build default.nix -A "projectWithCoverage.projectCoverageReport"
5252
```
5353

5454
This will generate a coverage report for all the local packages in
@@ -58,8 +58,8 @@ See the [developer coverage docs](../dev/coverage.md#project-wide-reports) for m
5858

5959
## Custom
6060

61-
By default, `projectCoverageReport'` generates a coverage report
62-
including all the packages in your project, and `coverageReport'`
61+
By default, `projectCoverageReport` generates a coverage report
62+
including all the packages in your project, and `coverageReport`
6363
generates a report for the library and all enabled tests in the
6464
requested package. You can modify what is included in each report by
6565
using the `coverageReport` and `projectCoverageReport` functions.
@@ -85,14 +85,14 @@ let
8585
8686
# Choose the library and tests you want included in the coverage
8787
# report for a package.
88-
custom$pkgCoverageReport = haskellLib.coverageReport {
88+
custom$pkgCoverageReport = haskellLib.coverageReport' {
8989
inherit (projectWithCoverage.$pkg.identifier) name version;
9090
inherit (projectWithCoverage.$pkg.components) library tests;
9191
};
9292
9393
# Override the coverage report for a package, and also choose which
9494
# packages you want included in the coverage report.
95-
customProjectCoverageReport = haskellLib.projectCoverageReport {
95+
customProjectCoverageReport = haskellLib.projectCoverageReport' {
9696
packages = haskellLib.selectProjectPackages projectWithCoverage;
9797
coverageReportOverrides = { "${projectWithCoverage.$pkg.identifier.name}" = custom$pkgCoverageReport; };
9898
};

lib/cover-project.nix

Lines changed: 13 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -6,45 +6,27 @@
66
}:
77

88
let
9-
getPackageCoverageReport = packageName: (coverageReportOverrides."${packageName}" or packages."${packageName}".coverageReport');
9+
getPackageCoverageReport = packageName: (coverageReportOverrides."${packageName}" or packages."${packageName}".coverageReport);
1010

1111
# Create table rows for an project coverage index page that look something like:
1212
#
13-
# | Package | TestSuite |
14-
# |------------------+-----------|
15-
# | cardano-shell | test-1 |
16-
# | | test-2 |
17-
# | cardano-launcher | test-1 |
18-
# | | test-2 |
19-
#
20-
# The logic is a little complex to ensure that only the first test
21-
# is listed alongside the package, the second test is accompanied by
22-
# a blank 'Package' entry.
13+
# | Package |
14+
# |------------------|
15+
# | cardano-shell |
16+
# | cardano-launcher |
2317
packageTableRows = package: with lib;
2418
let
2519
testsOnly = filterAttrs (n: d: isDerivation d) package.components.tests;
2620
testNames = mapAttrsToList (testName: _: testName) testsOnly;
27-
firstPosition = 1;
28-
positions = range firstPosition (length testNames);
29-
testNamesWithPosition = zipLists positions testNames;
30-
isFirst = pos: pos == firstPosition;
3121
in
32-
concatStringsSep "\n" (map (tuple:
33-
let
34-
pos = tuple.fst;
35-
testName = tuple.snd;
36-
in ''
22+
concatStringsSep "\n" (map (testName:
23+
''
3724
<tr>
3825
<td>
39-
${if isFirst pos then ''
4026
<a href="${package.identifier.name}-${package.identifier.version}/hpc_index.html">${package.identifier.name}</href>
41-
'' else ""}
42-
</td>
43-
<td>
44-
<a href="${testName}/hpc_index.html">${testName}</a>
4527
</td>
4628
</tr>
47-
'') testNamesWithPosition);
29+
'') testNames);
4830

4931
projectIndexHtml = pkgs.writeText "index.html" ''
5032
<html>
@@ -56,7 +38,6 @@ let
5638
<tbody>
5739
<tr>
5840
<th>Package</th>
59-
<th>TestSuite</th>
6041
</tr>
6142
6243
${with lib; concatStringsSep "\n" (mapAttrsToList (_ : packageTableRows) packages)}
@@ -73,11 +54,8 @@ in pkgs.runCommand "project-coverage-report"
7354
mkdir -p $out/share/hpc/vanilla/mix/
7455
mkdir -p $out/share/hpc/vanilla/html/
7556
76-
# Create tix file with test run information for all packages
77-
tixFile="$out/share/hpc/vanilla/tix/all/all.tix"
78-
hpcSumCmd=("hpc" "sum" "--union" "--output=$tixFile")
57+
# Find all tix files in each package
7958
tixFiles=()
80-
8159
${with lib; concatStringsSep "\n" (mapAttrsToList (n: package: ''
8260
identifier="${package.identifier.name}-${package.identifier.version}"
8361
report=${getPackageCoverageReport n}
@@ -93,10 +71,14 @@ in pkgs.runCommand "project-coverage-report"
9371
'') packages)}
9472
9573
if [ ''${#tixFiles[@]} -ne 0 ]; then
74+
# Create tix file with test run information for all packages
75+
tixFile="$out/share/hpc/vanilla/tix/all/all.tix"
76+
hpcSumCmd=("hpc" "sum" "--union" "--output=$tixFile")
9677
hpcSumCmd+=("''${tixFiles[@]}")
9778
echo "''${hpcSumCmd[@]}"
9879
eval "''${hpcSumCmd[@]}"
9980
81+
# Markup a HTML coverage report for the entire project
10082
cp ${projectIndexHtml} $out/share/hpc/vanilla/html/index.html
10183
fi
10284
''

lib/default.nix

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,12 +240,12 @@ in {
240240
};
241241

242242
# Do coverage of a package
243-
coverageReport = import ./cover.nix {
243+
coverageReport' = import ./cover.nix {
244244
inherit lib haskellLib pkgs;
245245
};
246246

247247
# Do coverage of a project
248-
projectCoverageReport = import ./cover-project.nix {
248+
projectCoverageReport' = import ./cover-project.nix {
249249
inherit lib haskellLib pkgs;
250250
};
251251

overlays/haskell.nix

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ final: prev: {
480480
inherit (callProjectResults) index-state;
481481
};
482482
in project // {
483-
projectCoverageReport' = haskellLib.projectCoverageReport { packages = haskellLib.selectProjectPackages project.hsPkgs; };
483+
projectCoverageReport = haskellLib.projectCoverageReport' { packages = haskellLib.selectProjectPackages project.hsPkgs; };
484484
overrideModules = f: cabalProject' (args // { modules = f args.modules; });
485485
};
486486

@@ -504,7 +504,7 @@ final: prev: {
504504
) package'.components;
505505
inherit project;
506506

507-
coverageReport' = haskellLib.coverageReport {
507+
coverageReport = haskellLib.coverageReport' {
508508
inherit (package.identifier) name version;
509509
inherit (components) library;
510510
tests = final.lib.filterAttrs (_: d: d.config.doCheck) components.tests;
@@ -519,7 +519,7 @@ final: prev: {
519519

520520
cabalProject = args: let p = cabalProject' args;
521521
in p.hsPkgs // {
522-
inherit (p) plan-nix projectCoverageReport' overrideModules;
522+
inherit (p) plan-nix projectCoverageReport overrideModules;
523523
# Provide `nix-shell -A shells.ghc` for users migrating from the reflex-platform.
524524
# But we should encourage use of `nix-shell -A shellFor`
525525
shells.ghc = p.hsPkgs.shellFor {};
@@ -543,13 +543,13 @@ final: prev: {
543543
stack-nix = callProjectResults.projectNix;
544544
};
545545
in project // {
546-
projectCoverageReport' = haskellLib.projectCoverageReport { packages = haskellLib.selectProjectPackages project.hsPkgs; };
546+
projectCoverageReport = haskellLib.projectCoverageReport' { packages = haskellLib.selectProjectPackages project.hsPkgs; };
547547
overrideModules = f: stackProject' (args // { modules = f args.modules; });
548548
};
549549

550550
stackProject = args: let p = stackProject' args;
551551
in p.hsPkgs // {
552-
inherit (p) stack-nix projectCoverageReport' overrideModules;
552+
inherit (p) stack-nix projectCoverageReport overrideModules;
553553
# Provide `nix-shell -A shells.ghc` for users migrating from the reflex-platform.
554554
# But we should encourage use of `nix-shell -A shellFor`
555555
shells.ghc = p.hsPkgs.shellFor {};

test/coverage/default.nix

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,12 @@ in recurseIntoAttrs ({
7676
}
7777
7878
${concatStringsSep "\n" (map (project: ''
79-
pkga_basedir="${project.hsPkgs.pkga.coverageReport'}/share/hpc/"
79+
pkga_basedir="${project.hsPkgs.pkga.coverageReport}/share/hpc/"
8080
findFileExistsNonEmpty "$pkga_basedir/mix/pkga-0.1.0.0/" "PkgA.mix"
8181
dirExistsEmpty "$pkga_basedir/tix/pkga-0.1.0.0"
8282
dirExistsEmpty "$pkga_basedir/html/pkga-0.1.0.0"
8383
84-
pkgb_basedir="${project.hsPkgs.pkgb.coverageReport'}/share/hpc/"
84+
pkgb_basedir="${project.hsPkgs.pkgb.coverageReport}/share/hpc/"
8585
testTix="$pkgb_basedir/tix/tests/tests.tix"
8686
libTix="$pkgb_basedir/tix/pkgb-0.1.0.0/pkgb-0.1.0.0.tix"
8787
fileExistsNonEmpty "$testTix"
@@ -99,7 +99,7 @@ in recurseIntoAttrs ({
9999
exit 1
100100
fi
101101
102-
project_basedir="${project.projectCoverageReport'}/share/hpc/"
102+
project_basedir="${project.projectCoverageReport}/share/hpc/"
103103
fileExistsNonEmpty "$project_basedir/html/index.html"
104104
fileExistsNonEmpty "$project_basedir/tix/all/all.tix"
105105
dirExists "$project_basedir/html/pkga-0.1.0.0"

0 commit comments

Comments
 (0)