summary refs log tree commit diff
path: root/lib/tests
diff options
context:
space:
mode:
authorRobert Hensing <robert@roberthensing.nl>2022-01-24 15:58:17 +0100
committerRobert Hensing <robert@roberthensing.nl>2022-03-03 00:28:35 +0100
commitd030e2109fd491e32cb48df54d100aa608551298 (patch)
tree6da4c8737d4d14e9cb049c5872f6671bbfe4494e /lib/tests
parent33e8df0921c410320185c9a1859656a4ec771f62 (diff)
downloadnixpkgs-d030e2109fd491e32cb48df54d100aa608551298.tar
nixpkgs-d030e2109fd491e32cb48df54d100aa608551298.tar.gz
nixpkgs-d030e2109fd491e32cb48df54d100aa608551298.tar.bz2
nixpkgs-d030e2109fd491e32cb48df54d100aa608551298.tar.lz
nixpkgs-d030e2109fd491e32cb48df54d100aa608551298.tar.xz
nixpkgs-d030e2109fd491e32cb48df54d100aa608551298.tar.zst
nixpkgs-d030e2109fd491e32cb48df54d100aa608551298.zip
lib.modules: Let module declare options directly in bare submodule
... where a bare submodule is an option that has a type like
`submoduleWith x`, as opposed to `attrsOf (submoduleWith x)`.

This makes migration unnecessary when introducing a freeform type
in an existing option tree.

Closes #146882
Diffstat (limited to 'lib/tests')
-rwxr-xr-xlib/tests/modules.sh5
-rw-r--r--lib/tests/modules/declare-bare-submodule-deep-option.nix10
-rw-r--r--lib/tests/modules/declare-bare-submodule-nested-option.nix18
-rw-r--r--lib/tests/modules/declare-bare-submodule.nix12
-rw-r--r--lib/tests/modules/define-bare-submodule-values.nix4
5 files changed, 49 insertions, 0 deletions
diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh
index e4bb7ad2190..3591b8f1e6f 100755
--- a/lib/tests/modules.sh
+++ b/lib/tests/modules.sh
@@ -62,6 +62,11 @@ checkConfigError() {
 checkConfigOutput '^false$' config.enable ./declare-enable.nix
 checkConfigError 'The option .* does not exist. Definition values:\n\s*- In .*: true' config.enable ./define-enable.nix
 
+checkConfigOutput '^1$' config.bare-submodule.nested ./declare-bare-submodule.nix ./declare-bare-submodule-nested-option.nix
+checkConfigOutput '^2$' config.bare-submodule.deep ./declare-bare-submodule.nix ./declare-bare-submodule-deep-option.nix
+checkConfigOutput '^42$' config.bare-submodule.nested ./declare-bare-submodule.nix ./declare-bare-submodule-nested-option.nix ./declare-bare-submodule-deep-option.nix ./define-bare-submodule-values.nix
+checkConfigOutput '^420$' config.bare-submodule.deep ./declare-bare-submodule.nix ./declare-bare-submodule-nested-option.nix ./declare-bare-submodule-deep-option.nix ./define-bare-submodule-values.nix
+
 # Check integer types.
 # unsigned
 checkConfigOutput '^42$' config.value ./declare-int-unsigned-value.nix ./define-value-int-positive.nix
diff --git a/lib/tests/modules/declare-bare-submodule-deep-option.nix b/lib/tests/modules/declare-bare-submodule-deep-option.nix
new file mode 100644
index 00000000000..06ad1f6e0a5
--- /dev/null
+++ b/lib/tests/modules/declare-bare-submodule-deep-option.nix
@@ -0,0 +1,10 @@
+{ lib, ... }:
+let
+  inherit (lib) mkOption types;
+in
+{
+  options.bare-submodule.deep = mkOption {
+    type = types.int;
+    default = 2;
+  };
+}
diff --git a/lib/tests/modules/declare-bare-submodule-nested-option.nix b/lib/tests/modules/declare-bare-submodule-nested-option.nix
new file mode 100644
index 00000000000..009dd4d6cb3
--- /dev/null
+++ b/lib/tests/modules/declare-bare-submodule-nested-option.nix
@@ -0,0 +1,18 @@
+{ lib, ... }:
+let
+  inherit (lib) mkOption types;
+in
+{
+  options.bare-submodule = mkOption {
+    type = types.submoduleWith {
+      modules = [
+        {
+          options.nested = mkOption {
+            type = types.int;
+            default = 1;
+          };
+        }
+      ];
+    };
+  };
+}
diff --git a/lib/tests/modules/declare-bare-submodule.nix b/lib/tests/modules/declare-bare-submodule.nix
new file mode 100644
index 00000000000..298c71e3ca0
--- /dev/null
+++ b/lib/tests/modules/declare-bare-submodule.nix
@@ -0,0 +1,12 @@
+{ lib, ... }:
+let
+  inherit (lib) mkOption types;
+in
+{
+  options.bare-submodule = mkOption {
+    type = types.submoduleWith {
+      modules = [ ];
+    };
+    default = {};
+  };
+}
diff --git a/lib/tests/modules/define-bare-submodule-values.nix b/lib/tests/modules/define-bare-submodule-values.nix
new file mode 100644
index 00000000000..00ede929ee6
--- /dev/null
+++ b/lib/tests/modules/define-bare-submodule-values.nix
@@ -0,0 +1,4 @@
+{
+  bare-submodule.nested = 42;
+  bare-submodule.deep = 420;
+}