Skip to content

Commit 50d8652

Browse files
committed
tests: Reduce the number of calls to mkTestDerivationFromNixvimModule
1 parent 71126bf commit 50d8652

File tree

2 files changed

+44
-26
lines changed

2 files changed

+44
-26
lines changed

tests/default.nix

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,30 +17,51 @@ let
1717
};
1818

1919
exampleFiles = {
20-
example =
20+
name = "examples";
21+
cases =
2122
let
2223
config = import ../example.nix { inherit pkgs; };
2324
in
24-
builtins.removeAttrs config.programs.nixvim [
25-
# This is not available to standalone modules, only HM & NixOS Modules
26-
"enable"
27-
# This is purely an example, it does not reflect a real usage
28-
"extraConfigLua"
29-
"extraConfigVim"
25+
[
26+
{
27+
name = "main";
28+
case = builtins.removeAttrs config.programs.nixvim [
29+
# This is not available to standalone modules, only HM & NixOS Modules
30+
"enable"
31+
# This is purely an example, it does not reflect a real usage
32+
"extraConfigLua"
33+
"extraConfigVim"
34+
];
35+
}
3036
];
3137
};
3238

3339
# We attempt to build & execute all configurations
34-
derivationList = pkgs.lib.mapAttrsToList (name: def: {
35-
inherit name;
36-
path = mkTestDerivationFromNixvimModule {
37-
inherit name;
38-
# The module can either be the actual definition,
40+
derivationList = builtins.map (
41+
{ name, cases }:
42+
let
43+
# The test case can either be the actual definition,
3944
# or a child attr named `module`.
40-
module = def.module or (lib.removeAttrs def [ "tests" ]);
41-
dontRun = def.tests.dontRun or false;
42-
pkgs = pkgsUnfree;
43-
};
44-
}) (testFiles // exampleFiles);
45+
prepareModule = case: case.module or (lib.removeAttrs case [ "tests" ]);
46+
dontRunModule = case: case.tests.dontRun or false;
47+
in
48+
{
49+
inherit name;
50+
path = mkTestDerivationFromNixvimModule {
51+
inherit name;
52+
tests = builtins.map (
53+
{ name, case }:
54+
{
55+
inherit name;
56+
module = prepareModule case;
57+
dontRun = dontRunModule case;
58+
}
59+
) cases;
60+
# Use the global dontRun only if we don't have a list of modules
61+
dontRun = dontRunModule cases;
62+
pkgs = pkgsUnfree;
63+
};
64+
}
65+
) (testFiles ++ [ exampleFiles ]);
4566
in
4667
pkgs.linkFarm "nixvim-tests" derivationList

tests/fetch-tests.nix

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,10 @@ let
6262
# handled by mkTestDerivation
6363
handleTestFile =
6464
{ namespace, cases }:
65-
lib.attrsets.mapAttrs' (case: config: {
66-
name = lib.strings.concatStringsSep "-" (namespace ++ [ case ]);
67-
value = config;
68-
}) cases;
69-
70-
# Helper function that calls `//` for each attrset of a list
71-
concatMany = lib.lists.foldr lib.mergeAttrs { };
65+
{
66+
name = lib.strings.concatStringsSep "-" namespace;
67+
cases = lib.mapAttrsToList (name: case: { inherit case name; }) cases;
68+
};
7269
in
73-
# An attrset of 'test-name' -> 'test-config'
74-
concatMany (builtins.map handleTestFile testsListEvaluated)
70+
# A list of the form [ { name = "..."; modules = [ /* test cases */ ]; } ]
71+
builtins.map handleTestFile testsListEvaluated

0 commit comments

Comments
 (0)