Add tests for the new module system improvements.

+25
lib/tests/modules.sh
···
fi
}
+
# Check boolean option.
checkConfigOutput "false" config.enable ./declare-enable.nix
checkConfigError 'The option .* defined in .* does not exist.' config.enable ./define-enable.nix
+
+
# Check mkForce without submodules.
set -- config.enable ./declare-enable.nix ./define-enable.nix
checkConfigOutput "true" "$@"
checkConfigOutput "false" "$@" ./define-force-enable.nix
checkConfigOutput "false" "$@" ./define-enable-force.nix
+
# Check mkForce with option and submodules.
checkConfigError 'attribute .*foo.* .* not found' config.loaOfSub.foo.enable ./declare-loaOfSub-any-enable.nix
checkConfigOutput 'false' config.loaOfSub.foo.enable ./declare-loaOfSub-any-enable.nix ./define-loaOfSub-foo.nix
set -- config.loaOfSub.foo.enable ./declare-loaOfSub-any-enable.nix ./define-loaOfSub-foo-enable.nix
···
checkConfigOutput 'false' "$@" ./define-loaOfSub-foo-force-enable.nix
checkConfigOutput 'false' "$@" ./define-loaOfSub-foo-enable-force.nix
+
# Check overriding effect of mkForce on submodule definitions.
checkConfigError 'attribute .*bar.* .* not found' config.loaOfSub.bar.enable ./declare-loaOfSub-any-enable.nix ./define-loaOfSub-foo.nix
checkConfigOutput 'false' config.loaOfSub.bar.enable ./declare-loaOfSub-any-enable.nix ./define-loaOfSub-foo.nix ./define-loaOfSub-bar.nix
set -- config.loaOfSub.bar.enable ./declare-loaOfSub-any-enable.nix ./define-loaOfSub-foo.nix ./define-loaOfSub-bar-enable.nix
···
checkConfigError 'attribute .*bar.* .* not found' "$@" ./define-loaOfSub-force-foo-enable.nix
checkConfigOutput 'true' "$@" ./define-loaOfSub-foo-force-enable.nix
checkConfigOutput 'true' "$@" ./define-loaOfSub-foo-enable-force.nix
+
+
# Check mkIf with submodules.
+
checkConfigError 'attribute .*foo.* .* not found' config.loaOfSub.foo.enable ./declare-enable.nix ./declare-loaOfSub-any-enable.nix
+
set -- config.loaOfSub.foo.enable ./declare-enable.nix ./declare-loaOfSub-any-enable.nix
+
checkConfigError 'attribute .*foo.* .* not found' "$@" ./define-if-loaOfSub-foo-enable.nix
+
checkConfigError 'attribute .*foo.* .* not found' "$@" ./define-loaOfSub-if-foo-enable.nix
+
checkConfigError 'attribute .*foo.* .* not found' "$@" ./define-loaOfSub-foo-if-enable.nix
+
checkConfigOutput 'false' "$@" ./define-loaOfSub-foo-enable-if.nix
+
checkConfigOutput 'true' "$@" ./define-enable.nix ./define-if-loaOfSub-foo-enable.nix
+
checkConfigOutput 'true' "$@" ./define-enable.nix ./define-loaOfSub-if-foo-enable.nix
+
checkConfigOutput 'true' "$@" ./define-enable.nix ./define-loaOfSub-foo-if-enable.nix
+
checkConfigOutput 'true' "$@" ./define-enable.nix ./define-loaOfSub-foo-enable-if.nix
+
+
# Check _module.args.
+
checkConfigOutput "true" config.enable ./declare-enable.nix ./custom-arg-define-enable.nix
+
+
# Check _module.check.
+
set -- config.enable ./declare-enable.nix ./define-enable.nix ./define-loaOfSub-foo.nix
+
checkConfigError 'The option .* defined in .* does not exist.' "$@"
+
checkConfigOutput "true" "$@" ./define-module-check.nix
cat <<EOF
====== module tests ======
+8
lib/tests/modules/custom-arg-define-enable.nix
···
+
{ lib, custom, ... }:
+
+
{
+
config = {
+
_module.args.custom = true;
+
enable = custom;
+
};
+
}
+5
lib/tests/modules/define-if-loaOfSub-foo-enable.nix
···
+
{ config, lib, ... }:
+
+
lib.mkIf config.enable {
+
loaOfSub.foo.enable = true;
+
}
+5
lib/tests/modules/define-loaOfSub-foo-enable-if.nix
···
+
{ config, lib, ... }:
+
+
{
+
loaOfSub.foo.enable = lib.mkIf config.enable true;
+
}
+7
lib/tests/modules/define-loaOfSub-foo-if-enable.nix
···
+
{ config, lib, ... }:
+
+
{
+
loaOfSub.foo = lib.mkIf config.enable {
+
enable = true;
+
};
+
}
+7
lib/tests/modules/define-loaOfSub-if-foo-enable.nix
···
+
{ config, lib, ... }:
+
+
{
+
loaOfSub = lib.mkIf config.enable {
+
foo.enable = true;
+
};
+
}
+3
lib/tests/modules/define-module-check.nix
···
+
{
+
_module.check = false;
+
}