From 742e3fc0020573deecc04029764b288fdbaed4cc Mon Sep 17 00:00:00 2001 From: Silvan Mosberger Date: Thu, 19 Mar 2020 03:46:50 +0100 Subject: lib/tests: Check for nested option-dependent definitions --- lib/tests/modules.sh | 3 +++ lib/tests/modules/declare-enable-nested.nix | 14 ++++++++++++++ lib/tests/modules/declare-int-positive-value-nested.nix | 9 +++++++++ lib/tests/modules/define-option-dependently-nested.nix | 16 ++++++++++++++++ 4 files changed, 42 insertions(+) create mode 100644 lib/tests/modules/declare-enable-nested.nix create mode 100644 lib/tests/modules/declare-int-positive-value-nested.nix create mode 100644 lib/tests/modules/define-option-dependently-nested.nix diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh index e80a3eccecd..e81cf016ee9 100755 --- a/lib/tests/modules.sh +++ b/lib/tests/modules.sh @@ -189,6 +189,9 @@ checkConfigOutput "true" config.enable ./import-from-store.nix checkConfigOutput true config.enable ./define-option-dependently.nix ./declare-enable.nix ./declare-int-positive-value.nix checkConfigOutput 360 config.value ./define-option-dependently.nix ./declare-enable.nix ./declare-int-positive-value.nix checkConfigOutput 7 config.value ./define-option-dependently.nix ./declare-int-positive-value.nix +checkConfigOutput true config.set.enable ./define-option-dependently-nested.nix ./declare-enable-nested.nix ./declare-int-positive-value-nested.nix +checkConfigOutput 360 config.set.value ./define-option-dependently-nested.nix ./declare-enable-nested.nix ./declare-int-positive-value-nested.nix +checkConfigOutput 7 config.set.value ./define-option-dependently-nested.nix ./declare-int-positive-value-nested.nix # Check attrsOf and lazyAttrsOf. Only lazyAttrsOf should be lazy, and only # attrsOf should work with conditional definitions diff --git a/lib/tests/modules/declare-enable-nested.nix b/lib/tests/modules/declare-enable-nested.nix new file mode 100644 index 00000000000..c8da8273cba --- /dev/null +++ b/lib/tests/modules/declare-enable-nested.nix @@ -0,0 +1,14 @@ +{ lib, ... }: + +{ + options.set = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = '' + Some descriptive text + ''; + }; + }; +} diff --git a/lib/tests/modules/declare-int-positive-value-nested.nix b/lib/tests/modules/declare-int-positive-value-nested.nix new file mode 100644 index 00000000000..72d2fb89fc3 --- /dev/null +++ b/lib/tests/modules/declare-int-positive-value-nested.nix @@ -0,0 +1,9 @@ +{ lib, ... }: + +{ + options.set = { + value = lib.mkOption { + type = lib.types.ints.positive; + }; + }; +} diff --git a/lib/tests/modules/define-option-dependently-nested.nix b/lib/tests/modules/define-option-dependently-nested.nix new file mode 100644 index 00000000000..69ee4255534 --- /dev/null +++ b/lib/tests/modules/define-option-dependently-nested.nix @@ -0,0 +1,16 @@ +{ lib, options, ... }: + +# Some modules may be distributed separately and need to adapt to other modules +# that are distributed and versioned separately. +{ + + # Always defined, but the value depends on the presence of an option. + config.set = { + value = if options ? set.enable then 360 else 7; + } + # Only define if possible. + // lib.optionalAttrs (options ? set.enable) { + enable = true; + }; + +} -- cgit 1.4.1