summary refs log tree commit diff
path: root/lib/tests
diff options
context:
space:
mode:
authorSilvan Mosberger <infinisil@icloud.com>2018-04-04 16:51:46 +0200
committerProfpatsch <mail@profpatsch.de>2018-05-06 23:58:36 +0200
commitb16a69289aae7a8aeb7d0410649764d9d2328e2f (patch)
treeaea743319550a2ade7680df4725a8f97244cc7fd /lib/tests
parentef8996f15ea2dd5aace0f61f9ab03f3dfa3d4975 (diff)
downloadnixpkgs-b16a69289aae7a8aeb7d0410649764d9d2328e2f.tar
nixpkgs-b16a69289aae7a8aeb7d0410649764d9d2328e2f.tar.gz
nixpkgs-b16a69289aae7a8aeb7d0410649764d9d2328e2f.tar.bz2
nixpkgs-b16a69289aae7a8aeb7d0410649764d9d2328e2f.tar.lz
nixpkgs-b16a69289aae7a8aeb7d0410649764d9d2328e2f.tar.xz
nixpkgs-b16a69289aae7a8aeb7d0410649764d9d2328e2f.tar.zst
nixpkgs-b16a69289aae7a8aeb7d0410649764d9d2328e2f.zip
lib/types: Add coercedTo unsound tests
Diffstat (limited to 'lib/tests')
-rwxr-xr-xlib/tests/modules.sh5
-rw-r--r--lib/tests/modules/declare-coerced-value-unsound.nix10
-rw-r--r--lib/tests/modules/define-value-string-arbitrary.nix3
-rw-r--r--lib/tests/modules/define-value-string-bigint.nix3
4 files changed, 21 insertions, 0 deletions
diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh
index 96a91c0fffb..45fd2d624e1 100755
--- a/lib/tests/modules.sh
+++ b/lib/tests/modules.sh
@@ -138,6 +138,11 @@ checkConfigOutput "\"42\"" config.value ./declare-coerced-value.nix
 checkConfigOutput "\"24\"" config.value ./declare-coerced-value.nix ./define-value-string.nix
 checkConfigError 'The option value .* in .* is not.*string or signed integer.*' config.value ./declare-coerced-value.nix ./define-value-list.nix
 
+# Check coerced value with unsound coercion
+checkConfigOutput "12" config.value ./declare-coerced-value-unsound.nix
+checkConfigError 'The option value .* in .* is not.*8 bit signed integer.* or string.*' config.value ./declare-coerced-value-unsound.nix ./define-value-string-bigint.nix
+checkConfigError 'unrecognised JSON value' config.value ./declare-coerced-value-unsound.nix ./define-value-string-arbitrary.nix
+
 cat <<EOF
 ====== module tests ======
 $pass Pass
diff --git a/lib/tests/modules/declare-coerced-value-unsound.nix b/lib/tests/modules/declare-coerced-value-unsound.nix
new file mode 100644
index 00000000000..7a017f24e77
--- /dev/null
+++ b/lib/tests/modules/declare-coerced-value-unsound.nix
@@ -0,0 +1,10 @@
+{ lib, ... }:
+
+{
+  options = {
+    value = lib.mkOption {
+      default = "12";
+      type = lib.types.coercedTo lib.types.str lib.toInt lib.types.ints.s8;
+    };
+  };
+}
diff --git a/lib/tests/modules/define-value-string-arbitrary.nix b/lib/tests/modules/define-value-string-arbitrary.nix
new file mode 100644
index 00000000000..8e3abaf536a
--- /dev/null
+++ b/lib/tests/modules/define-value-string-arbitrary.nix
@@ -0,0 +1,3 @@
+{
+  value = "foobar";
+}
diff --git a/lib/tests/modules/define-value-string-bigint.nix b/lib/tests/modules/define-value-string-bigint.nix
new file mode 100644
index 00000000000..f27e31985c9
--- /dev/null
+++ b/lib/tests/modules/define-value-string-bigint.nix
@@ -0,0 +1,3 @@
+{
+  value = "1000";
+}