nix-community.nixvim/tests/fetch-tests.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

54 lines
1.4 KiB
Nix
Raw Normal View History

2023-03-22 07:42:02 +01:00
{
lib,
pkgs,
helpers,
2023-03-22 07:42:02 +01:00
}:
let
# Import a test file into the form { name = ""; file = ""; cases = {}; }
handleTestFile =
file: namespace:
2023-03-22 07:42:02 +01:00
let
fnOrAttrs = import file;
in
{
inherit file;
name = lib.strings.concatStringsSep "-" namespace;
cases =
if builtins.isFunction fnOrAttrs then
# Call the function
fnOrAttrs { inherit pkgs lib helpers; }
else
fnOrAttrs;
};
2023-03-22 07:42:02 +01:00
# Recurse into all directories, extracting files as we find them.
# This returns a list of { name; file; cases; } attrsets.
fetchTests =
2023-03-22 07:42:02 +01:00
path: namespace:
let
# Handle an entry from readDir
# - If it is a regular nix file, import its content
# - If it is a directory, continue recursively
handleEntry =
name: type:
let
file = /${path}/${name};
in
if type == "regular" then
lib.optional (lib.hasSuffix ".nix" name) (
handleTestFile file (
namespace ++ lib.optional (name != "default.nix") (lib.removeSuffix ".nix" name)
)
)
else
fetchTests file (namespace ++ [ name ]);
2023-03-22 07:42:02 +01:00
in
lib.pipe path [
builtins.readDir
(lib.filterAttrs (n: v: v != "symlink"))
(lib.mapAttrsToList handleEntry)
builtins.concatLists
];
2023-03-22 07:42:02 +01:00
in
2024-09-07 17:36:50 +01:00
root: fetchTests root [ ]