lib/modules: Remove _module.checks.*.triggerPath as it's not necessary

Previously this option was thought to be necessary to avoid infinite
recursion, but it actually isn't, since the check evaluation isn't fed
back into the module fixed-point.
This commit is contained in:
Silvan Mosberger
2020-11-30 23:51:42 +01:00
parent c9cc8969b4
commit 8dea4df903
7 changed files with 22 additions and 165 deletions
-15
View File
@@ -278,13 +278,6 @@ checkConfigOutput baz config.value.nested.bar.baz ./types-anything/mk-mods.nix
## Module assertions
# Check that assertions are triggered by default for just evaluating config
checkConfigError 'Failed checks:\n- \[test\] Assertion failed' config ./assertions/simple.nix
# Check that assertions are only triggered if they have a triggerPath that's evaluated
checkConfigError 'Failed checks:\n- \[test\] Assertion failed' config.foo ./assertions/trigger-lazy.nix
checkConfigOutput true config.bar ./assertions/trigger-lazy.nix
# The assertions enable condition should only be evaluated if the trigger is evaluated
checkConfigError 'enable evaluated' config.foo ./assertions/enable-lazy.nix
checkConfigOutput true config.bar ./assertions/enable-lazy.nix
# Assertion is not triggered when enable is false
checkConfigOutput '{ }' config ./assertions/enable-false.nix
@@ -292,10 +285,6 @@ checkConfigOutput '{ }' config ./assertions/enable-false.nix
# Warnings should be displayed on standard error
checkConfigCodeOutErr 0 '{ }' 'warning: \[test\] Warning message' config ./assertions/warning.nix
# A triggerPath can be set to a submodule path
checkConfigOutput '{ baz = <CODE>; }' config.foo.bar ./assertions/trigger-submodule.nix
checkConfigError 'Failed checks:\n- \[test\] Assertion failed' config.foo.bar.baz ./assertions/trigger-submodule.nix
# Check that multiple assertions and warnings can be triggered at once
checkConfigError 'Failed checks:\n- \[test1\] Assertion 1 failed\n- \[test2\] Assertion 2 failed' config ./assertions/multi.nix
checkConfigError 'trace: warning: \[test3\] Warning 3 failed\ntrace: warning: \[test4\] Warning 4 failed' config ./assertions/multi.nix
@@ -305,10 +294,6 @@ checkConfigError 'Failed checks:\n- \[foo/test\] Assertion failed' config.foo ./
checkConfigError 'Failed checks:\n- \[foo.bar/test\] Assertion failed' config.foo.bar ./assertions/submodule-attrsOf.nix
checkConfigError 'Failed checks:\n- \[foo.bar.baz/test\] Assertion failed' config.foo.bar.baz ./assertions/submodule-attrsOf-attrsOf.nix
# Assertions aren't triggered when the trigger path is only evaluated from within the same module evaluation
# This behavior is necessary to allow assertions to depend on config values. This could potentially be changed in the future if all of NixOS' assertions are rewritten to not depend on any config values
checkConfigOutput true config.bar ./assertions/non-cascading.nix
# Assertions with an attribute starting with _ shouldn't have their name displayed
checkConfigError 'Failed checks:\n- Assertion failed' config ./assertions/underscore-attributes.nix
@@ -1,17 +0,0 @@
{ lib, ... }: {
options.foo = lib.mkOption {
default = true;
};
options.bar = lib.mkOption {
default = true;
};
config._module.checks.test = {
enable = throw "enable evaluated";
message = "Assertion failed";
triggerPath = [ "foo" ];
};
}
@@ -1,17 +0,0 @@
{ lib, config, ... }: {
options.foo = lib.mkOption {
default = true;
};
options.bar = lib.mkOption {
default = config.foo;
};
config._module.checks.foo = {
enable = true;
message = "Foo assertion";
triggerPath = [ "foo" ];
};
}
@@ -1,15 +0,0 @@
{ lib, ... }: {
options.foo = lib.mkOption {
default = true;
};
options.bar = lib.mkOption {
default = true;
};
config._module.checks.test = {
enable = true;
message = "Assertion failed";
triggerPath = [ "foo" ];
};
}
@@ -1,18 +0,0 @@
{ lib, ... }: {
options.foo = lib.mkOption {
default = { bar = {}; };
type = lib.types.attrsOf (lib.types.submodule {
options.baz = lib.mkOption {
default = true;
};
});
};
config._module.checks.test = {
enable = true;
message = "Assertion failed";
triggerPath = [ "foo" "bar" "baz" ];
};
}