diff options
author | Robert Hensing <robert@roberthensing.nl> | 2020-03-17 20:21:10 +0100 |
---|---|---|
committer | Robert Hensing <robert@roberthensing.nl> | 2020-03-17 20:21:10 +0100 |
commit | 31206e44e128926cb04a6e1c023f07c41541ee7f (patch) | |
tree | 34af6b62a7baa6c8abfd19cfd25c442c384b782f | |
parent | b6a5079800f520c3e30bd285c84d67643c973f42 (diff) |
lib/modules: Test the ability for config to depend on options for compatibility
-rwxr-xr-x | lib/tests/modules.sh | 5 | ||||
-rw-r--r-- | lib/tests/modules/define-option-dependently.nix | 16 |
2 files changed, 21 insertions, 0 deletions
diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh index 8cd632a439cd..d87f9db0a900 100755 --- a/lib/tests/modules.sh +++ b/lib/tests/modules.sh @@ -185,6 +185,11 @@ checkConfigError 'The option .* defined in .* does not exist' config.enable ./di # Check that imports can depend on derivations checkConfigOutput "true" config.enable ./import-from-store.nix +# Check that configs can be conditional on option existence +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 + # Check attrsOf and lazyAttrsOf. Only lazyAttrsOf should be lazy, and only # attrsOf should work with conditional definitions # In addition, lazyAttrsOf should honor an options emptyValue diff --git a/lib/tests/modules/define-option-dependently.nix b/lib/tests/modules/define-option-dependently.nix new file mode 100644 index 000000000000..6abce29366ae --- /dev/null +++ b/lib/tests/modules/define-option-dependently.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 = { + value = if options ? enable then 360 else 7; + } + # Only define if possible. + // lib.optionalAttrs (options ? enable) { + enable = true; + }; + +} |