1
0
Fork 0
mirror of https://github.com/nix-community/nixvim.git synced 2025-11-08 11:36:07 +01:00
nixvim/tests/default.nix
2025-09-07 21:08:16 +00:00

97 lines
2.9 KiB
Nix

{
pkgs,
helpers,
lib,
linkFarm,
self, # The flake instance
system ? pkgs.stdenv.hostPlatform.system,
}:
let
# Use a single common instance of nixpkgs, with allowUnfree
# Having a single shared instance should speed up tests a little
pkgsForTest = import self.inputs.nixpkgs {
inherit system;
config.allowUnfree = true;
};
autoArgs = pkgsForTest // {
inherit
helpers
self
system
;
nixpkgsLib = lib;
lib = lib.extend self.lib.overlay;
inherit (self.legacyPackages.${system})
makeNixvimWithModule
nixvimConfiguration
;
inherit (self.lib.${system}.check)
mkTestDerivationFromNvim
mkTestDerivationFromNixvimModule
;
# Recursive:
inherit callTest callTests;
inherit pkgsForTest;
};
callTest = lib.callPackageWith autoArgs;
callTests = lib.callPackagesWith autoArgs;
selfPackages = self.packages.${system};
misc = {
extra-args-tests = callTest ./extra-args.nix { };
extend = callTest ./extend.nix { };
extra-files = callTest ./extra-files.nix { };
enable-except-in-tests = callTest ./enable-except-in-tests.nix { };
failing-tests = callTest ./failing-tests.nix { };
no-flake = callTest ./no-flake.nix { };
lib-tests = callTest ./lib-tests.nix { };
maintainers = callTest ./maintainers.nix { };
nixpkgs-module = callTest ./nixpkgs-module.nix { };
plugins-by-name = callTest ./plugins-by-name.nix { };
generated = callTest ./generated.nix { };
lsp-all-servers = callTest ./lsp-servers.nix { };
};
docs = lib.optionalAttrs (selfPackages ? docs) {
# Individual tests can be run using: nix build .#docs.user-configs.tests.<test>
docs-user-configs = linkFarm "user-configs-tests" selfPackages.docs.user-configs.tests;
};
packages = {
# Checks that all package defaults we specify can actually be built
all-package-defaults = callTest ./all-package-defaults.nix { };
};
# These are always built on all systems, even when `allSystems = false`
platforms = callTests ./platforms { };
# Tests generated from ./test-sources
# As a list of { name, path } attrs
main = (callTests ./main.nix { }).tests;
# Combined into a single link-farm derivation
mainDrv.tests = linkFarm "tests" main;
# Grouped as a number of link-farms in the form { tests = { group-1, group-2, ... group-N }; }
mainGrouped.tests = lib.pipe main [
(helpers.groupListBySize 10)
(lib.imap1 (
i: group: rec {
name = "group-${toString i}";
value = linkFarm name group;
}
))
builtins.listToAttrs
];
in
{
# TODO: consider whether all these tests are needed in the `checks` output
flakeCheck = misc // docs // platforms // packages // mainDrv;
# TODO: consider whether all these tests are needed to be built by buildbot
buildbot =
lib.optionalAttrs (system == "x86_64-linux") (misc // docs // mainGrouped) // platforms // packages;
}