aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-08-02 22:46:50 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-08-02 23:13:38 +0200
commit9a80695caad3ae146b4232c6b295ce0fc75a6c19 (patch)
tree22062630c4b5800a132851f718742b9e43eae85c /tests
parentfeat(hosts/server1): Activate the migrated services (diff)
downloadnixos-server-9a80695caad3ae146b4232c6b295ce0fc75a6c19.zip
test(tests): Init infrastructure
The modules still need to be imported one-by-one in `default.nix` files because we have yet to rewrite this, but the new test infrastructure might as well use the new `fileset` functions from `nixpkgs`.
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.