2025-05-03 22:23:05 +02:00
|
|
|
{
|
|
|
|
|
pkgs,
|
|
|
|
|
lib ? pkgs.lib,
|
|
|
|
|
...
|
2025-06-12 21:23:28 +02:00
|
|
|
}: let
|
|
|
|
|
inherit (lib) evalModules toList;
|
|
|
|
|
in rec {
|
2025-06-13 15:44:16 +02:00
|
|
|
helpers = import ./testHelpers.nix {inherit lib;};
|
|
|
|
|
|
2025-06-12 21:23:28 +02:00
|
|
|
mkBinary = {
|
|
|
|
|
nixtests,
|
|
|
|
|
extraParams,
|
2025-05-03 22:23:05 +02:00
|
|
|
}: let
|
2025-06-12 21:23:28 +02:00
|
|
|
program = pkgs.callPackage ../package.nix {};
|
2025-06-02 01:13:54 +02:00
|
|
|
in
|
2025-06-12 21:23:28 +02:00
|
|
|
(pkgs.writeShellScriptBin "nixtests:run" ''
|
|
|
|
|
${program}/bin/nixtest --tests=${nixtests} ${extraParams} "$@"
|
|
|
|
|
'')
|
|
|
|
|
// {
|
|
|
|
|
tests = nixtests;
|
2025-06-02 01:13:54 +02:00
|
|
|
};
|
2025-06-12 21:23:28 +02:00
|
|
|
|
2025-05-03 22:05:29 +02:00
|
|
|
exportSuites = suites: let
|
|
|
|
|
suitesList =
|
|
|
|
|
if builtins.isList suites
|
|
|
|
|
then suites
|
|
|
|
|
else [suites];
|
2025-06-12 21:23:28 +02:00
|
|
|
suitesMapped = builtins.toJSON suitesList;
|
2025-05-03 22:05:29 +02:00
|
|
|
in
|
|
|
|
|
pkgs.runCommand "tests.json" {} ''
|
2025-06-12 21:23:28 +02:00
|
|
|
echo '${suitesMapped}' > $out
|
2025-05-03 22:05:29 +02:00
|
|
|
'';
|
2025-06-12 21:23:28 +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);
|
2025-07-30 21:53:31 +02:00
|
|
|
imports = map (file:
|
|
|
|
|
if builtins.isString dir
|
|
|
|
|
then (builtins.unsafeDiscardStringContext dir) + "/${file}"
|
|
|
|
|
else /${dir}/${file})
|
|
|
|
|
matchingFiles;
|
2025-06-12 21:23:28 +02:00
|
|
|
in {
|
|
|
|
|
inherit imports;
|
|
|
|
|
# automatically set the base so test filepaths are easier to read
|
|
|
|
|
config.base = builtins.toString dir + "/";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
mkNixtestConfig = {
|
|
|
|
|
modules,
|
2025-06-13 15:44:16 +02:00
|
|
|
args ? {},
|
2025-06-12 21:23:28 +02:00
|
|
|
...
|
|
|
|
|
}:
|
|
|
|
|
(evalModules {
|
|
|
|
|
modules =
|
|
|
|
|
(toList modules)
|
|
|
|
|
++ [
|
|
|
|
|
module
|
|
|
|
|
{
|
|
|
|
|
_module.args = args;
|
|
|
|
|
}
|
|
|
|
|
];
|
|
|
|
|
}).config;
|
|
|
|
|
|
|
|
|
|
mkNixtest = args: (mkNixtestConfig args).app;
|
2025-05-03 22:05:29 +02:00
|
|
|
}
|