Skip to content

Commit

Permalink
tests: use callPackage pattern for flake checks
Browse files Browse the repository at this point in the history
  • Loading branch information
MattSturgeon committed Aug 28, 2024
1 parent c46b1fe commit 890686c
Show file tree
Hide file tree
Showing 10 changed files with 60 additions and 61 deletions.
49 changes: 20 additions & 29 deletions flake-modules/tests.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{ self, ... }:
{ self, lib, ... }:
{
perSystem =
{
Expand All @@ -9,38 +9,29 @@
...
}:
let
inherit (self'.legacyPackages.lib) helpers makeNixvimWithModule;
inherit (self'.legacyPackages.lib.check) mkTestDerivationFromNvim mkTestDerivationFromNixvimModule;
callTest = lib.callPackageWith (
pkgs
// {
nixvimLib = self'.legacyPackages.lib;
inherit (self'.legacyPackages.lib) helpers makeNixvimWithModule;
inherit (self'.legacyPackages.lib.check) mkTestDerivationFromNvim mkTestDerivationFromNixvimModule;
}
);
in
{
checks = {
extra-args-tests = import ../tests/extra-args.nix { inherit pkgs 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 mkTestDerivationFromNixvimModule;
};

failing-tests = pkgs.callPackage ../tests/failing-tests.nix {
inherit mkTestDerivationFromNixvimModule;
};

no-flake = import ../tests/no-flake.nix {
inherit system mkTestDerivationFromNvim;
extra-args-tests = callTest ../tests/extra-args.nix { };
extend = callTest ../tests/extend.nix { };
extra-files = callTest ../tests/extra-files.nix { };
enable-except-in-tests = callTest ../tests/enable-except-in-tests.nix { };
failing-tests = callTest ../tests/failing-tests.nix { };
no-flake = callTest ../tests/no-flake.nix {
inherit system;
nixvim = "${self}";
};

lib-tests = import ../tests/lib-tests.nix {
inherit pkgs helpers;
inherit (pkgs) lib;
};

maintainers = import ../tests/maintainers.nix { inherit pkgs; };

generated = pkgs.callPackage ../tests/generated.nix { };
} // import ../tests { inherit pkgs pkgsUnfree helpers; };
lib-tests = callTest ../tests/lib-tests.nix { };
maintainers = callTest ../tests/maintainers.nix { };
generated = callTest ../tests/generated.nix { };
} // callTest ../tests { inherit pkgsUnfree; };
};
}
17 changes: 7 additions & 10 deletions tests/default.nix
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{
lib ? pkgs.lib,
helpers,
lib ? pkgs.lib,
linkFarm,
pkgs,
pkgsUnfree,
mkTestDerivationFromNixvimModule,
}:
let
fetchTests = import ./fetch-tests.nix;
test-derivation = import ../lib/tests.nix { inherit pkgs lib; };
inherit (test-derivation) mkTestDerivationFromNixvimModule;
fetchTests = import ./fetch-tests.nix { inherit lib pkgs helpers; };

moduleToTest =
name: module:
Expand All @@ -17,10 +17,7 @@ let
};

# List of files containing configurations
testFiles = fetchTests {
inherit lib pkgs helpers;
root = ./test-sources;
};
testFiles = fetchTests ./test-sources;

exampleFiles = {
name = "examples";
Expand All @@ -44,13 +41,13 @@ in
lib.pipe (testFiles ++ [ exampleFiles ]) [
(builtins.map (file: {
inherit (file) name;
path = pkgs.linkFarm file.name (builtins.mapAttrs moduleToTest file.cases);
path = linkFarm file.name (builtins.mapAttrs moduleToTest file.cases);
}))
(helpers.groupListBySize 10)
(lib.imap1 (
i: group: rec {
name = "test-${toString i}";
value = pkgs.linkFarm name group;
value = linkFarm name group;
}
))
builtins.listToAttrs
Expand Down
6 changes: 4 additions & 2 deletions tests/enable-except-in-tests.nix
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{
pkgs,
linkFarm,
runCommandNoCCLocal,
mkTestDerivationFromNixvimModule,
makeNixvimWithModule,
}:
Expand All @@ -19,7 +21,7 @@ let
let
nvim = makeNixvimWithModule { inherit pkgs module; };
in
pkgs.runCommand "enable-except-in-tests-not-in-test"
runCommandNoCCLocal "enable-except-in-tests-not-in-test"
{ printConfig = "${nvim}/bin/nixvim-print-init"; }
''
if ! "$printConfig" | grep 'require("image").setup'; then
Expand All @@ -31,7 +33,7 @@ let
touch $out
'';
in
pkgs.linkFarm "enable-except-in-tests" [
linkFarm "enable-except-in-tests" [
{
name = "in-test";
path = inTest;
Expand Down
7 changes: 5 additions & 2 deletions tests/extend.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{ makeNixvimWithModule, pkgs }:
{
makeNixvimWithModule,
runCommandNoCCLocal,
}:
let
firstStage = makeNixvimWithModule {
module = {
Expand All @@ -10,7 +13,7 @@ let

generated = secondStage.extend { extraConfigLua = "-- third stage"; };
in
pkgs.runCommand "extend-test" { printConfig = "${generated}/bin/nixvim-print-init"; } ''
runCommandNoCCLocal "extend-test" { printConfig = "${generated}/bin/nixvim-print-init"; } ''
config=$($printConfig)
for stage in "first" "second" "third"; do
if ! "$printConfig" | grep -q -- "-- $stage stage"; then
Expand Down
7 changes: 5 additions & 2 deletions tests/extra-args.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{ makeNixvimWithModule, pkgs }:
{
makeNixvimWithModule,
runCommandNoCCLocal,
}:
let
defaultModule =
{ regularArg, ... }:
Expand Down Expand Up @@ -28,7 +31,7 @@ let
};
};
in
pkgs.runCommand "special-arg-test" { printConfig = "${generated}/bin/nixvim-print-init"; } ''
runCommandNoCCLocal "special-arg-test" { printConfig = "${generated}/bin/nixvim-print-init"; } ''
config=$($printConfig)
if ! "$printConfig" | grep -- '-- regularArg=regularValue'; then
echo "Missing regularArg in config"
Expand Down
7 changes: 5 additions & 2 deletions tests/extra-files.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{ makeNixvimWithModule, pkgs }:
{
makeNixvimWithModule,
runCommandNoCCLocal,
}:
let
extraFiles = {
"one".text = "one";
Expand All @@ -12,7 +15,7 @@ let
};
};
in
pkgs.runCommand "extra-files-test"
runCommandNoCCLocal "extra-files-test"
{
root = build.config.filesPlugin;
files = builtins.attrNames extraFiles;
Expand Down
3 changes: 1 addition & 2 deletions tests/fetch-tests.nix
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
{
root,
lib,
pkgs,
helpers,
Expand Down Expand Up @@ -49,4 +48,4 @@ let
builtins.concatLists
];
in
fetchTests root [ ]
root: fetchTests root [ ]
4 changes: 2 additions & 2 deletions tests/generated.nix
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
lib,
runCommand,
pkgs,
runCommandNoCCLocal,
}:
let
# Format a list of errors with an error message and trailing newline
Expand Down Expand Up @@ -68,7 +68,7 @@ let
}
);
in
runCommand "generated-sources-test" { inherit errors; } ''
runCommandNoCCLocal "generated-sources-test" { inherit errors; } ''
if [ -n "$errors" ]; then
echo -n "$errors"
exit 1
Expand Down
15 changes: 8 additions & 7 deletions tests/lib-tests.nix
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
# For shorter test iterations run the following in the root of the repo:
# `echo ':b checks.${builtins.currentSystem}.lib-tests' | nix repl .`
{
lib,
pkgs,
helpers,
lib,
runCommandNoCCLocal,
writeText,
}:
let
luaNames = {
Expand Down Expand Up @@ -45,9 +46,9 @@ let
];
};

drv = pkgs.writeText "example-derivation" "hello, world!";
drv = writeText "example-derivation" "hello, world!";

results = pkgs.lib.runTests {
results = lib.runTests {
testToLuaObject = {
expr = helpers.toLuaObject {
foo = "bar";
Expand Down Expand Up @@ -377,11 +378,11 @@ let
};
in
if results == [ ] then
pkgs.runCommand "lib-tests-success" { } "touch $out"
runCommandNoCCLocal "lib-tests-success" { } "touch $out"
else
pkgs.runCommand "lib-tests-failure"
runCommandNoCCLocal "lib-tests-failure"
{
results = pkgs.lib.concatStringsSep "\n" (
results = lib.concatStringsSep "\n" (
builtins.map (result: ''
${result.name}:
expected: ${lib.generators.toPretty { } result.expected}
Expand Down
6 changes: 3 additions & 3 deletions tests/maintainers.nix
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
pkgs ? import <nixpkgs> { },
lib ? pkgs.lib,
lib,
runCommandNoCCLocal,
}:
let
inherit (lib) attrNames filter length;
Expand All @@ -9,7 +9,7 @@ let
duplicates = filter (name: nixpkgsList ? ${name}) (attrNames nixvimList);
count = length duplicates;
in
pkgs.runCommand "maintainers-test" { inherit count duplicates; } ''
runCommandNoCCLocal "maintainers-test" { inherit count duplicates; } ''
if [ $count -gt 0 ]; then
echo "$count nixvim maintainers are also nixpkgs maintainers:"
for name in $duplicates; do
Expand Down

0 comments on commit 890686c

Please sign in to comment.