From 7314d885a1547d3db6b0447fbeb3bcb1ff7f13de Mon Sep 17 00:00:00 2001 From: "(cdep)illabout" <cdep.illabout@gmail.com> Date: Sun, 6 Jan 2019 18:10:03 +0900 Subject: [PATCH] Add test that shows that the aliases are able to override options. --- lib/tests/modules.sh | 3 ++ .../alias-with-priority-can-override.nix | 52 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 lib/tests/modules/alias-with-priority-can-override.nix diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh index 45f391785228..a72777cbf2a6 100755 --- a/lib/tests/modules.sh +++ b/lib/tests/modules.sh @@ -151,6 +151,9 @@ checkConfigOutput "1 2 3 4 5 6 7 8 9 10" config.result ./loaOf-with-many-list-me # Check mkAliasOptionModuleWithPriority. checkConfigOutput "true" config.enable ./alias-with-priority.nix +checkConfigOutput "true" config.enableAlias ./alias-with-priority.nix +checkConfigOutput "false" config.enable ./alias-with-priority-can-override.nix +checkConfigOutput "false" config.enableAlias ./alias-with-priority-can-override.nix cat <<EOF ====== module tests ====== diff --git a/lib/tests/modules/alias-with-priority-can-override.nix b/lib/tests/modules/alias-with-priority-can-override.nix new file mode 100644 index 000000000000..a6b26895f3a8 --- /dev/null +++ b/lib/tests/modules/alias-with-priority-can-override.nix @@ -0,0 +1,52 @@ +# This is a test to show that mkAliasOptionModule sets the priority correctly +# for aliased options. + +{ config, lib, ... }: + +with lib; + +{ + options = { + # A simple boolean option that can be enabled or disabled. + enable = lib.mkOption { + type = types.nullOr types.bool; + default = null; + example = true; + description = '' + Some descriptive text + ''; + }; + + # mkAliasOptionModule sets warnings, so this has to be defined. + warnings = mkOption { + internal = true; + default = []; + type = types.listOf types.str; + example = [ "The `foo' service is deprecated and will go away soon!" ]; + description = '' + This option allows modules to show warnings to users during + the evaluation of the system configuration. + ''; + }; + }; + + imports = [ + # Create an alias for the "enable" option. + (mkAliasOptionModuleWithPriority [ "enableAlias" ] [ "enable" ]) + + # Disable the aliased option, but with a default (low) priority so it + # should be able to be overridden by the next import. + ( { config, lib, ... }: + { + enableAlias = lib.mkForce false; + } + ) + + # Enable the normal (non-aliased) option. + ( { config, lib, ... }: + { + enable = true; + } + ) + ]; +}