aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tests.nix28
-rw-r--r--tests/README.md6
2 files changed, 34 insertions, 0 deletions
diff --git a/tests.nix b/tests.nix
new file mode 100644
index 0000000..d91a9c9
--- /dev/null
+++ b/tests.nix
@@ -0,0 +1,28 @@
+{
+ pkgs,
+ lib,
+ specialArgs,
+}: let
+ # for `nix eval --file` (as it does not support args) use:
+ # ```
+ # specialArgs = {};
+ # pkgs = (builtins.getFlake "nixpkgs").legacyPackages."x86_64-linux";
+ # inherit (pkgs) lib;
+ # ```
+ # instead of the function arguments above.
+ importTests' = test: let
+ basename = builtins.baseNameOf test;
+ testName = builtins.baseNameOf (lib.strings.removeSuffix "/${basename}" "${builtins.toString test}");
+ in {
+ name = "${testName}";
+ value = pkgs.callPackage test specialArgs;
+ };
+
+ importTests = dir:
+ builtins.listToAttrs (builtins.map importTests' (
+ lib.fileset.toList (lib.fileset.fileFilter (file: file.name == "test.nix") dir)
+ ));
+
+ tests = importTests ./tests;
+in
+ tests
diff --git a/tests/README.md b/tests/README.md
new file mode 100644
index 0000000..2613f4a
--- /dev/null
+++ b/tests/README.md
@@ -0,0 +1,6 @@
+# Tests
+
+This directory tree mirrors the modules defined in the
+[modules](`../modules/`) directory. Each module should have at least
+one test in the mirrored directory, effectively replacing the module's
+`default.nix` file.