diff --git a/flake-modules/tests.nix b/flake-modules/tests.nix index 912e9869..5c0a39ca 100644 --- a/flake-modules/tests.nix +++ b/flake-modules/tests.nix @@ -1,57 +1,27 @@ -{ self, helpers, ... }: +{ + self, + lib, + helpers, + ... +}: { perSystem = { pkgs, pkgsUnfree, system, - makeNixvimWithModule, - self', ... }: - let - inherit (self'.legacyPackages) nixvimConfiguration; - in { - checks = { - extra-args-tests = import ../tests/extra-args.nix { - inherit pkgs; - inherit makeNixvimWithModule; - }; - - extend = import ../tests/extend.nix { inherit pkgs makeNixvimWithModule; }; - - extra-files = import ../tests/extra-files.nix { inherit pkgs makeNixvimWithModule; }; - - enable-except-in-tests = import ../tests/enable-except-in-tests.nix { - inherit pkgs makeNixvimWithModule; - inherit (self.lib.${system}.check) mkTestDerivationFromNixvimModule; - }; - - failing-tests = pkgs.callPackage ../tests/failing-tests.nix { - inherit (self.lib.${system}.check) mkTestDerivationFromNixvimModule; - }; - - no-flake = import ../tests/no-flake.nix { - inherit system; - inherit (self.lib.${system}.check) mkTestDerivationFromNvim; - nixvim = "${self}"; - }; - - lib-tests = import ../tests/lib-tests.nix { - inherit pkgs helpers; - inherit (pkgs) lib; - }; - - maintainers = import ../tests/maintainers.nix { inherit pkgs; }; - - plugins-by-name = pkgs.callPackage ../tests/plugins-by-name.nix { inherit nixvimConfiguration; }; - - generated = pkgs.callPackage ../tests/generated.nix { }; - - package-options = pkgs.callPackage ../tests/package-options.nix { inherit nixvimConfiguration; }; - - lsp-all-servers = pkgs.callPackage ../tests/lsp-servers.nix { inherit nixvimConfiguration; }; - } // import ../tests { inherit pkgs pkgsUnfree helpers; }; + checks = import ../tests { + inherit + helpers + lib + pkgs + pkgsUnfree + self + system + ; + }; }; } diff --git a/tests/default.nix b/tests/default.nix index 4d7a18c9..97d8b4f2 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -1,65 +1,53 @@ { - lib ? pkgs.lib, - helpers, pkgs, pkgsUnfree, + helpers, + lib, + system, + self, # The flake instance }: let - fetchTests = import ./fetch-tests.nix { inherit lib pkgs helpers; }; - test-derivation = import ../lib/tests.nix { inherit pkgs lib; }; - inherit (test-derivation) mkTestDerivationFromNixvimModule; - - moduleToTest = - file: name: module: - mkTestDerivationFromNixvimModule { - inherit name; - module = { - _file = file; - imports = [ module ]; - }; - pkgs = pkgsUnfree; - }; - - # List of files containing configurations - testFiles = fetchTests ./test-sources; - - exampleFiles = { - name = "examples"; - file = ../example.nix; - cases = - 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" - ]; - }; - }; + inherit (self.legacyPackages.${system}) + makeNixvimWithModule + nixvimConfiguration + ; 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 -] +{ + extra-args-tests = import ./extra-args.nix { + inherit pkgs; + inherit makeNixvimWithModule; + }; + extend = import ./extend.nix { inherit pkgs makeNixvimWithModule; }; + extra-files = import ./extra-files.nix { inherit pkgs makeNixvimWithModule; }; + enable-except-in-tests = import ./enable-except-in-tests.nix { + inherit pkgs makeNixvimWithModule; + inherit (self.lib.${system}.check) mkTestDerivationFromNixvimModule; + }; + failing-tests = pkgs.callPackage ./failing-tests.nix { + inherit (self.lib.${system}.check) mkTestDerivationFromNixvimModule; + }; + no-flake = import ./no-flake.nix { + inherit system; + inherit (self.lib.${system}.check) mkTestDerivationFromNvim; + nixvim = "${self}"; + }; + lib-tests = import ./lib-tests.nix { + inherit pkgs helpers; + inherit (pkgs) lib; + }; + maintainers = import ./maintainers.nix { inherit pkgs; }; + plugins-by-name = pkgs.callPackage ./plugins-by-name.nix { inherit nixvimConfiguration; }; + generated = pkgs.callPackage ./generated.nix { }; + package-options = pkgs.callPackage ./package-options.nix { inherit nixvimConfiguration; }; + lsp-all-servers = pkgs.callPackage ./lsp-servers.nix { inherit nixvimConfiguration; }; +} +# Tests generated from ./test-sources +# Grouped as a number of link-farms in the form { test-1, test-2, ... test-N } +// import ./main.nix { + inherit + lib + pkgs + pkgsUnfree + helpers + ; +} diff --git a/tests/main.nix b/tests/main.nix new file mode 100644 index 00000000..bf435e31 --- /dev/null +++ b/tests/main.nix @@ -0,0 +1,66 @@ +# Collects the various test modules in tests/test-sources/ and groups them into a number of test derivations +{ + lib ? pkgs.lib, + helpers, + pkgs, + pkgsUnfree, +}: +let + fetchTests = import ./fetch-tests.nix { inherit lib pkgs helpers; }; + test-derivation = import ../lib/tests.nix { inherit pkgs lib; }; + inherit (test-derivation) mkTestDerivationFromNixvimModule; + + moduleToTest = + file: name: module: + mkTestDerivationFromNixvimModule { + inherit name; + module = { + _file = file; + imports = [ module ]; + }; + pkgs = pkgsUnfree; + }; + + # List of files containing configurations + testFiles = fetchTests ./test-sources; + + exampleFiles = { + name = "examples"; + file = ../example.nix; + cases = + 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 +]