summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rwxr-xr-xlib/tests/modules.sh6
-rw-r--r--lib/tests/modules/type-deprecation.nix39
2 files changed, 45 insertions, 0 deletions
diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh
index 2e57c2f8e2a..4259c538bb4 100755
--- a/lib/tests/modules.sh
+++ b/lib/tests/modules.sh
@@ -272,6 +272,12 @@ checkConfigError 'A definition for option .fun.\[function body\]. is not of type
 checkConfigOutput "b a" config.result ./functionTo/list-order.nix
 checkConfigOutput "a c" config.result ./functionTo/merging-attrs.nix
 
+## Type deprecation
+checkConfigError 'The type `types.simple'\'' of option `simple'\'' defined in .* is deprecated. simple shall not be used' config.simple ./type-deprecation.nix
+checkConfigError 'The type `types.infinite'\'' of option `infinite'\'' defined in .* is deprecated. infinite shall not be used' config.infinite ./type-deprecation.nix
+checkConfigError 'The type `types.left'\'' of option `nested'\'' defined in .* is deprecated. left shall not be used' config.nested ./type-deprecation.nix
+checkConfigError 'The type `types.right'\'' of option `nested'\'' defined in .* is deprecated. right shall not be used' config.nested ./type-deprecation.nix
+
 cat <<EOF
 ====== module tests ======
 $pass Pass
diff --git a/lib/tests/modules/type-deprecation.nix b/lib/tests/modules/type-deprecation.nix
new file mode 100644
index 00000000000..2d7a1fc9aca
--- /dev/null
+++ b/lib/tests/modules/type-deprecation.nix
@@ -0,0 +1,39 @@
+{ lib, ... }: {
+
+  options.simple = lib.mkOption {
+    type = lib.mkOptionType {
+      name = "simple";
+      deprecationMessage = "simple shall not be used";
+    };
+    default = throw "";
+  };
+
+  options.infinite = lib.mkOption {
+    type =
+      let
+        t = lib.mkOptionType {
+          name = "infinite";
+          deprecationMessage = "infinite shall not be used";
+        };
+        r = lib.types.either t (lib.types.attrsOf r);
+      in r;
+    default = throw "";
+  };
+
+  options.nested = lib.mkOption {
+    type =
+      let
+        left = lib.mkOptionType {
+          name = "left";
+          deprecationMessage = "left shall not be used";
+        };
+        right = lib.mkOptionType {
+          name = "right";
+          deprecationMessage = "right shall not be used";
+        };
+      in lib.types.either left right;
+
+    default = throw "";
+  };
+
+}