Skip to content

Commit b926b62

Browse files
committed
tests/modules/performance/combine-plugins: improve assertion messages
This commit eliminates assertions boilerplate and improves assertion message by returning the number of plugins and their names.
1 parent a743c07 commit b926b62

File tree

1 file changed

+31
-49
lines changed

1 file changed

+31
-49
lines changed

tests/test-sources/modules/performance/combine-plugins.nix

Lines changed: 31 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,24 @@
22
let
33
inherit (pkgs) lib;
44

5-
# Count plugins of given type excluding 'build.extraFiles'
6-
pluginCount =
7-
pkg: files: type:
8-
builtins.length (builtins.filter (p: p != files) pkg.packpathDirs.myNeovimPackages.${type});
5+
# Assertion for a number of plugins of given type defined in nvimPackage.packpathDirs
6+
expectNPlugins =
7+
config: type: n:
8+
let
9+
# 'build.extraFiles' must not be combined, so exclude it from counting
10+
plugins = builtins.filter (
11+
p: p != config.build.extraFiles
12+
) config.build.nvimPackage.packpathDirs.myNeovimPackages.${type};
13+
numPlugins = builtins.length plugins;
14+
in
15+
{
16+
assertion = numPlugins == n;
17+
message = "Expected ${toString n} '${type}' plugins defined in 'nvimPackage.packpathDirs', got ${toString numPlugins}: ${
18+
lib.concatMapStringsSep ", " lib.getName plugins
19+
}.";
20+
};
21+
# Assertion that exactly one start plugin is defined in nvimPackage.packpathDirs
22+
expectOneStartPlugin = config: expectNPlugins config "start" 1;
923

1024
# Stub plugins
1125
mkPlugin =
@@ -111,10 +125,7 @@ in
111125
assert(vim.fn.getcompletion("${name}", "help")[1], "no help tags for '${name}'")
112126
'') (map lib.getName extraPlugins);
113127
assertions = [
114-
{
115-
assertion = pluginCount config.build.nvimPackage config.build.extraFiles "start" == 1;
116-
message = "More than one plugin is defined in packpathDirs, expected one plugin pack.";
117-
}
128+
(expectOneStartPlugin config)
118129
];
119130
};
120131

@@ -141,10 +152,7 @@ in
141152
end), "plugin '${name}' isn't found in runtime as a separate entry, expected not to be combined")
142153
'') (map lib.getName extraPlugins);
143154
assertions = [
144-
{
145-
assertion = pluginCount config.build.nvimPackage config.build.extraFiles "start" >= 2;
146-
message = "Only one plugin is defined in packpathDirs, expected at least two.";
147-
}
155+
(expectNPlugins config "start" (builtins.length extraPlugins))
148156
];
149157
};
150158

@@ -175,10 +183,7 @@ in
175183
require("simple-plugin-3")
176184
'';
177185
assertions = [
178-
{
179-
assertion = pluginCount config.build.nvimPackage config.build.extraFiles "start" == 1;
180-
message = "More than one plugin is defined in packpathDirs.";
181-
}
186+
(expectOneStartPlugin config)
182187
];
183188
};
184189

@@ -199,10 +204,7 @@ in
199204
)
200205
'';
201206
assertions = [
202-
{
203-
assertion = pluginCount config.build.nvimPackage config.build.extraFiles "start" == 1;
204-
message = "More than one plugin is defined in packpathDirs.";
205-
}
207+
(expectOneStartPlugin config)
206208
];
207209
};
208210

@@ -226,10 +228,7 @@ in
226228
vim.cmd.py3("import requests")
227229
'';
228230
assertions = [
229-
{
230-
assertion = pluginCount config.build.nvimPackage config.build.extraFiles "start" == 1;
231-
message = "More than one plugin is defined in packpathDirs.";
232-
}
231+
(expectOneStartPlugin config)
233232
];
234233
};
235234

@@ -255,10 +254,7 @@ in
255254
require("nui.popup")
256255
'';
257256
assertions = [
258-
{
259-
assertion = pluginCount config.build.nvimPackage config.build.extraFiles "start" == 1;
260-
message = "More than one plugin is defined in packpathDirs.";
261-
}
257+
(expectOneStartPlugin config)
262258
];
263259
};
264260

@@ -307,14 +303,9 @@ in
307303
assert(num_plugins == 1, "expected 1 copy of simplePlugin1, got " .. num_plugins)
308304
'';
309305
assertions = [
310-
{
311-
assertion = pluginCount config.build.nvimPackage config.build.extraFiles "start" == 1;
312-
message = "More than one start plugin is defined in packpathDirs";
313-
}
314-
{
315-
assertion = pluginCount config.build.nvimPackage config.build.extraFiles "opt" == 2;
316-
message = "Less than two opt plugins are defined in packpathDirs";
317-
}
306+
(expectOneStartPlugin config)
307+
# simplePlugin3 pluginWithDeps1
308+
(expectNPlugins config "opt" 2)
318309
];
319310
};
320311

@@ -344,10 +335,7 @@ in
344335
assert(vim.g.simple_plugin_3 == 1, "simplePlugin3's config isn't evaluated")
345336
'';
346337
assertions = [
347-
{
348-
assertion = pluginCount config.build.nvimPackage config.build.extraFiles "start" == 1;
349-
message = "More than one start plugin is defined in packpathDirs";
350-
}
338+
(expectOneStartPlugin config)
351339
];
352340
};
353341

@@ -388,10 +376,7 @@ in
388376
end
389377
'';
390378
assertions = [
391-
{
392-
assertion = pluginCount config.build.nvimPackage config.build.extraFiles "start" == 1;
393-
message = "More than one start plugin is defined in packpathDirs";
394-
}
379+
(expectOneStartPlugin config)
395380
];
396381
};
397382

@@ -445,11 +430,8 @@ in
445430
end
446431
'';
447432
assertions = [
448-
{
449-
# plugin-pack, simplePlugin1, pluginWithDeps2, simplePlugin3
450-
assertion = pluginCount config.build.nvimPackage config.build.extraFiles "start" == 4;
451-
message = "Wrong number of plugins in packpathDirs";
452-
}
433+
# plugin-pack, simplePlugin1, pluginWithDeps2, simplePlugin3
434+
(expectNPlugins config "start" 4)
453435
];
454436
};
455437

0 commit comments

Comments
 (0)