summary refs log tree commit diff stats
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.