Skip to content

Commit 614a675

Browse files
authored
Add collectChecks functions (input-output-hk#498)
Fixes input-output-hk#482.
1 parent 5cc81a8 commit 614a675

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

docs/reference/library.md

+7-1
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ Assorted functions for operating on [Haskell.nix][] data. This is
281281
distinct from `pkgs.haskell.lib` in the current Nixpkgs Haskell
282282
Infrastructure.
283283

284-
### collectComponents and collectComponents'
284+
### collectComponents, collectComponents'
285285

286286
Extracts a selection of components from a Haskell [package set](#package-set).
287287

@@ -316,6 +316,12 @@ tests = collectComponents "tests" (package: package.identifier.name == "mypackag
316316
Will result in moving derivations from `hsPkgs.mypackage.components.tests.unit-tests`
317317
to `tests.mypackage.unit-tests`.
318318

319+
### collectChecks, collectChecks'
320+
321+
These are just like `collectComponents` and `collectComponents'`, except that they collect
322+
the `checks` attributes of packages (which aren't components, and so can't be collected
323+
by the other functions.
324+
319325
#### check
320326

321327
This function turns a derivation that builds a test into one to run it.

lib/default.nix

+11
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,17 @@ with haskellLib;
161161
# myTests = collectComponents' "tests" myHaskellPackages;
162162
collectComponents' = group: collectComponents group (_: true);
163163

164+
# Extracts a selection of 'checks' from a Haskell package set.
165+
#
166+
# This can be used to collect all the test runs in your project, so that can be run in CI.
167+
collectChecks = packageSel: haskellPackages:
168+
let packageFilter = name: package: (package.isHaskell or false) && packageSel package;
169+
in recurseIntoAttrs (lib.mapAttrs (_: p: p.checks) (lib.filterAttrs packageFilter haskellPackages));
170+
171+
# Equivalent to collectChecks with (_: true) as selection function.
172+
# Useful for pre-filtered package-set.
173+
collectChecks' = collectChecks (_: true);
174+
164175
# Replacement for lib.cleanSourceWith that has a subDir argument.
165176
inherit (import ./clean-source-with.nix { inherit lib; }) cleanSourceWith canCleanSource;
166177

0 commit comments

Comments
 (0)