summary refs log tree commit diff
path: root/lib/tests/modules
diff options
context:
space:
mode:
authorSilvan Mosberger <contact@infinisil.com>2021-01-26 22:30:07 +0100
committerSilvan Mosberger <contact@infinisil.com>2021-01-27 00:17:56 +0100
commitc2f3556dc75ee09890c2cfc867cdb10df23accf6 (patch)
tree222adbe573628240363421c26ad2e7f5474260ed /lib/tests/modules
parente9101d4a3bc90dfaaa076d8ec00e5ed68e518f60 (diff)
downloadnixpkgs-c2f3556dc75ee09890c2cfc867cdb10df23accf6.tar
nixpkgs-c2f3556dc75ee09890c2cfc867cdb10df23accf6.tar.gz
nixpkgs-c2f3556dc75ee09890c2cfc867cdb10df23accf6.tar.bz2
nixpkgs-c2f3556dc75ee09890c2cfc867cdb10df23accf6.tar.lz
nixpkgs-c2f3556dc75ee09890c2cfc867cdb10df23accf6.tar.xz
nixpkgs-c2f3556dc75ee09890c2cfc867cdb10df23accf6.tar.zst
nixpkgs-c2f3556dc75ee09890c2cfc867cdb10df23accf6.zip
lib/tests: More functionTo tests
Diffstat (limited to 'lib/tests/modules')
-rw-r--r--lib/tests/modules/functionTo.nix29
-rw-r--r--lib/tests/modules/functionTo/list-order.nix25
-rw-r--r--lib/tests/modules/functionTo/merging-attrs.nix27
-rw-r--r--lib/tests/modules/functionTo/merging-list.nix24
-rw-r--r--lib/tests/modules/functionTo/trivial.nix17
-rw-r--r--lib/tests/modules/functionTo/wrong-type.nix18
6 files changed, 111 insertions, 29 deletions
diff --git a/lib/tests/modules/functionTo.nix b/lib/tests/modules/functionTo.nix
deleted file mode 100644
index 591d9a47f93..00000000000
--- a/lib/tests/modules/functionTo.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib, config, ... }:
-
-with lib;
-
-{
-  options = {
-    selector = mkOption {
-      default = _pkgs : [];
-      type = with types; functionTo (listOf str);
-      description = ''
-        Some descriptive text
-      '';
-    };
-
-    result = mkOption {
-      type = types.str;
-      default = toString (config.selector {
-        a = "a";
-        b = "b";
-        c = "c";
-      });
-    };
-  };
-
-  config = lib.mkMerge [
-    { selector = pkgs: [ pkgs.a ]; }
-    { selector = pkgs: [ pkgs.b ]; }
-  ];
-}
diff --git a/lib/tests/modules/functionTo/list-order.nix b/lib/tests/modules/functionTo/list-order.nix
new file mode 100644
index 00000000000..77a1a43a84f
--- /dev/null
+++ b/lib/tests/modules/functionTo/list-order.nix
@@ -0,0 +1,25 @@
+
+{ lib, config, ... }:
+let
+  inherit (lib) types;
+in {
+  options = {
+    fun = lib.mkOption {
+      type = types.functionTo (types.listOf types.str);
+    };
+
+    result = lib.mkOption {
+      type = types.str;
+      default = toString (config.fun {
+        a = "a";
+        b = "b";
+        c = "c";
+      });
+    };
+  };
+
+  config.fun = lib.mkMerge [
+    (input: lib.mkAfter [ input.a ])
+    (input: [ input.b ])
+  ];
+}
diff --git a/lib/tests/modules/functionTo/merging-attrs.nix b/lib/tests/modules/functionTo/merging-attrs.nix
new file mode 100644
index 00000000000..97c015f928a
--- /dev/null
+++ b/lib/tests/modules/functionTo/merging-attrs.nix
@@ -0,0 +1,27 @@
+{ lib, config, ... }:
+let
+  inherit (lib) types;
+in {
+  options = {
+    fun = lib.mkOption {
+      type = types.functionTo (types.attrsOf types.str);
+    };
+
+    result = lib.mkOption {
+      type = types.str;
+      default = toString (lib.attrValues (config.fun {
+        a = "a";
+        b = "b";
+        c = "c";
+      }));
+    };
+  };
+
+  config.fun = lib.mkMerge [
+    (input: { inherit (input) a; })
+    (input: { inherit (input) b; })
+    (input: {
+      b = lib.mkForce input.c;
+    })
+  ];
+}
diff --git a/lib/tests/modules/functionTo/merging-list.nix b/lib/tests/modules/functionTo/merging-list.nix
new file mode 100644
index 00000000000..15fcd2bdcc4
--- /dev/null
+++ b/lib/tests/modules/functionTo/merging-list.nix
@@ -0,0 +1,24 @@
+{ lib, config, ... }:
+let
+  inherit (lib) types;
+in {
+  options = {
+    fun = lib.mkOption {
+      type = types.functionTo (types.listOf types.str);
+    };
+
+    result = lib.mkOption {
+      type = types.str;
+      default = toString (config.fun {
+        a = "a";
+        b = "b";
+        c = "c";
+      });
+    };
+  };
+
+  config.fun = lib.mkMerge [
+    (input: [ input.a ])
+    (input: [ input.b ])
+  ];
+}
diff --git a/lib/tests/modules/functionTo/trivial.nix b/lib/tests/modules/functionTo/trivial.nix
new file mode 100644
index 00000000000..0962a0cf893
--- /dev/null
+++ b/lib/tests/modules/functionTo/trivial.nix
@@ -0,0 +1,17 @@
+{ lib, config, ... }:
+let
+  inherit (lib) types;
+in {
+  options = {
+    fun = lib.mkOption {
+      type = types.functionTo types.str;
+    };
+
+    result = lib.mkOption {
+      type = types.str;
+      default = config.fun "input";
+    };
+  };
+
+  config.fun = input: "input is ${input}";
+}
diff --git a/lib/tests/modules/functionTo/wrong-type.nix b/lib/tests/modules/functionTo/wrong-type.nix
new file mode 100644
index 00000000000..fd65b75088d
--- /dev/null
+++ b/lib/tests/modules/functionTo/wrong-type.nix
@@ -0,0 +1,18 @@
+
+{ lib, config, ... }:
+let
+  inherit (lib) types;
+in {
+  options = {
+    fun = lib.mkOption {
+      type = types.functionTo types.str;
+    };
+
+    result = lib.mkOption {
+      type = types.str;
+      default = config.fun 0;
+    };
+  };
+
+  config.fun = input: input + 1;
+}