nix-community.nixvim/tests/default.nix

79 lines
1.7 KiB
Nix
Raw Normal View History

2023-03-22 07:42:02 +01:00
{
lib ? pkgs.lib,
helpers,
2023-03-22 07:42:02 +01:00
pkgs,
pkgsUnfree,
2024-05-05 19:39:35 +02:00
}:
let
2024-09-07 17:36:50 +01:00
fetchTests = import ./fetch-tests.nix { inherit lib pkgs helpers; };
test-derivation = import ../lib/tests.nix { inherit pkgs lib; };
inherit (test-derivation) mkTestDerivationFromNixvimModule;
2023-03-22 07:42:02 +01:00
moduleToTest =
file: name: module:
mkTestDerivationFromNixvimModule {
inherit name;
module = {
_file = file;
imports = [ module ];
};
pkgs = pkgsUnfree;
};
2023-03-22 07:42:02 +01:00
# List of files containing configurations
2024-09-07 17:36:50 +01:00
testFiles = fetchTests ./test-sources;
exampleFiles = {
name = "examples";
file = ../example.nix;
cases =
2024-05-05 19:39:35 +02:00
let
config = import ../example.nix { inherit pkgs; };
in
{
main = builtins.removeAttrs config.programs.nixvim [
# This is not available to standalone modules, only HM & NixOS Modules
"enable"
# This is purely an example, it does not reflect a real usage
"extraConfigLua"
"extraConfigVim"
];
};
};
in
# We attempt to build & execute all configurations
(lib.pipe
(
testFiles
++ [
exampleFiles
]
)
[
(builtins.map (
{
name,
file,
cases,
}:
{
inherit name;
path = pkgs.linkFarm name (builtins.mapAttrs (moduleToTest file) cases);
}
))
(helpers.groupListBySize 10)
(lib.imap1 (
i: group: rec {
name = "test-${toString i}";
value = pkgs.linkFarm name group;
}
))
builtins.listToAttrs
]
)
// {
all-lsp-servers = moduleToTest ./lsp-servers.nix "all-lsp-servers" (
import ./lsp-servers.nix { inherit pkgs; }
);
}