nix-community.nixvim/tests/default.nix
traxys 6d7e429537
tests: Introduce a way to disable options when running in tests (#1095)
In our basic template we used to provide a check based on
`mkTestDerivationFromNvim`. The issue with this check (that is handled
correctly internally) is that some plugins _can't_ be used in the test
environment, for example image.nvim like in #1085.

This commit introduces a new function to generate such checks,
`mkTestDerivationFromNixvimModule`, that wraps a nixvim configuration
instead of a built nvim instance.

Then a configuration can rely on the newly added
`helpers.enableExceptInTests` attribute to disable parts of the
configuration depending if it is evaluated in tests or in a real final
configuration.

Resolves #1085
2024-02-15 14:27:45 +01:00

42 lines
1 KiB
Nix

{
makeNixvim,
makeNixvimWithModule,
lib,
helpers,
pkgs,
}: let
fetchTests = import ./fetch-tests.nix;
test-derivation = import ./test-derivation.nix {inherit pkgs makeNixvim makeNixvimWithModule;};
inherit (test-derivation) mkTestDerivation;
# List of files containing configurations
testFiles = fetchTests {
inherit lib pkgs helpers;
root = ./test-sources;
};
exampleFiles = {
example = let
config = import ../example.nix {inherit pkgs;};
in
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"
];
};
# We attempt to build & execute all configurations
derivationList =
pkgs.lib.mapAttrsToList
(
name: path: {
inherit name;
path = mkTestDerivation name path;
}
)
(testFiles // exampleFiles);
in
pkgs.linkFarm "nixvim-tests" derivationList