Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

flake: defragment lib+wrappers, also cleanup tests #2104

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
tests: use callPackage pattern for flake checks
MattSturgeon committed Sep 7, 2024
commit 01ef05e140731acd9a81b2a70a67259aa140b411
53 changes: 22 additions & 31 deletions flake-modules/tests.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{ self, ... }:
{ self, lib, ... }:
{
perSystem =
{
@@ -10,40 +10,31 @@
}:
let
inherit (self'.legacyPackages.lib) helpers makeNixvimWithModule;
inherit (self'.legacyPackages.lib.check) mkTestDerivationFromNvim mkTestDerivationFromNixvimModule;
evaluatedNixvim = helpers.modules.evalNixvim { check = false; };
callTest = lib.callPackageWith (
pkgs
// {
nixvimLib = self'.legacyPackages.lib;
inherit helpers makeNixvimWithModule;
inherit (self'.legacyPackages.lib.check) mkTestDerivationFromNvim mkTestDerivationFromNixvimModule;
evaluatedNixvim = helpers.modules.evalNixvim { check = false; };
}
);
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 { };

package-options = pkgs.callPackage ../tests/package-options.nix { inherit evaluatedNixvim; };
} // import ../tests { inherit pkgs pkgsUnfree helpers; };
lib-tests = callTest ../tests/lib-tests.nix { };
maintainers = callTest ../tests/maintainers.nix { };
generated = callTest ../tests/generated.nix { };
package-options = callTest ../tests/package-options.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,
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:
@@ -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";
@@ -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
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,
}:
@@ -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
@@ -31,7 +33,7 @@ let
touch $out
'';
in
pkgs.linkFarm "enable-except-in-tests" [
linkFarm "enable-except-in-tests" [
{
name = "in-test";
path = inTest;
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 = {
@@ -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
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, ... }:
@@ -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"
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";
@@ -12,7 +15,7 @@ let
};
};
in
pkgs.runCommand "extra-files-test"
runCommandNoCCLocal "extra-files-test"
{
root = build.config.filesPlugin;
files = builtins.attrNames extraFiles;
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,
@@ -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
@@ -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
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 = {
@@ -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";
@@ -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}
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;
@@ -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