nixtest/lib/default.nix

71 lines
1.5 KiB
Nix
Raw Normal View History

{
pkgs,
lib ? pkgs.lib,
...
}: let
inherit (lib) evalModules toList;
in rec {
helpers = import ./testHelpers.nix {inherit lib;};
mkBinary = {
nixtests,
extraParams,
}: let
program = pkgs.callPackage ../package.nix {};
in
(pkgs.writeShellScriptBin "nixtests:run" ''
${program}/bin/nixtest --tests=${nixtests} ${extraParams} "$@"
'')
// {
tests = nixtests;
};
2025-05-03 22:05:29 +02:00
exportSuites = suites: let
suitesList =
if builtins.isList suites
then suites
else [suites];
suitesMapped = builtins.toJSON suitesList;
2025-05-03 22:05:29 +02:00
in
pkgs.runCommand "tests.json" {} ''
echo '${suitesMapped}' > $out
2025-05-03 22:05:29 +02:00
'';
module = import ./module.nix {inherit lib pkgs;};
autodiscover = {
dir,
pattern ? ".*_test.nix",
}: let
files = builtins.readDir dir;
matchingFiles = builtins.filter (name: builtins.match pattern name != null) (builtins.attrNames files);
imports = map (file:
if builtins.isString dir
then (builtins.unsafeDiscardStringContext dir) + "/${file}"
else /${dir}/${file})
matchingFiles;
in {
inherit imports;
# automatically set the base so test filepaths are easier to read
config.base = builtins.toString dir + "/";
};
mkNixtestConfig = {
modules,
args ? {},
...
}:
(evalModules {
modules =
(toList modules)
++ [
module
{
_module.args = args;
}
];
}).config;
mkNixtest = args: (mkNixtestConfig args).app;
2025-05-03 22:05:29 +02:00
}