From 6a7d250007baedeb4de34e8ce490d49160cb63a8 Mon Sep 17 00:00:00 2001 From: Silvan Mosberger Date: Fri, 4 Sep 2020 15:27:26 +0200 Subject: [PATCH] lib/tests: Add tests for types.anything --- lib/tests/modules.sh | 29 ++++++++++++ .../types-anything/attrs-coercible.nix | 12 +++++ .../modules/types-anything/equal-atoms.nix | 26 +++++++++++ .../modules/types-anything/functions.nix | 17 +++++++ lib/tests/modules/types-anything/lists.nix | 16 +++++++ lib/tests/modules/types-anything/mk-mods.nix | 44 +++++++++++++++++++ .../modules/types-anything/nested-attrs.nix | 22 ++++++++++ 7 files changed, 166 insertions(+) create mode 100644 lib/tests/modules/types-anything/attrs-coercible.nix create mode 100644 lib/tests/modules/types-anything/equal-atoms.nix create mode 100644 lib/tests/modules/types-anything/functions.nix create mode 100644 lib/tests/modules/types-anything/lists.nix create mode 100644 lib/tests/modules/types-anything/mk-mods.nix create mode 100644 lib/tests/modules/types-anything/nested-attrs.nix diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh index 943deebe3c0..cfe474d4ded 100755 --- a/lib/tests/modules.sh +++ b/lib/tests/modules.sh @@ -233,6 +233,35 @@ checkConfigError 'infinite recursion encountered' config.foo ./freeform-attrsOf. checkConfigError 'The option .* is used but not defined' config.foo ./freeform-lazyAttrsOf.nix ./freeform-unstr-dep-str.nix checkConfigOutput 24 config.foo ./freeform-lazyAttrsOf.nix ./freeform-unstr-dep-str.nix ./define-value-string.nix +## types.anything +# Check that attribute sets are merged recursively +checkConfigOutput null config.value.foo ./types-anything/nested-attrs.nix +checkConfigOutput null config.value.l1.foo ./types-anything/nested-attrs.nix +checkConfigOutput null config.value.l1.l2.foo ./types-anything/nested-attrs.nix +checkConfigOutput null config.value.l1.l2.l3.foo ./types-anything/nested-attrs.nix +# Attribute sets that are coercible to strings shouldn't be recursed into +checkConfigOutput foo config.value.outPath ./types-anything/attrs-coercible.nix +# Multiple lists aren't concatenated together +checkConfigError 'The option .* has conflicting definitions' config.value ./types-anything/lists.nix +# Check that all equalizable atoms can be used as long as all definitions are equal +checkConfigOutput 0 config.value.int ./types-anything/equal-atoms.nix +checkConfigOutput false config.value.bool ./types-anything/equal-atoms.nix +checkConfigOutput '""' config.value.string ./types-anything/equal-atoms.nix +checkConfigOutput / config.value.path ./types-anything/equal-atoms.nix +checkConfigOutput null config.value.null ./types-anything/equal-atoms.nix +checkConfigOutput 0.1 config.value.float ./types-anything/equal-atoms.nix +# Functions can't be merged together +checkConfigError "The option .* has conflicting definitions" config.value.multiple-lambdas ./types-anything/functions.nix +checkConfigOutput '' config.value.single-lambda ./types-anything/functions.nix +# Check that all mk* modifiers are applied +checkConfigError 'attribute .* not found' config.value.mkiffalse ./types-anything/mk-mods.nix +checkConfigOutput '{ }' config.value.mkiftrue ./types-anything/mk-mods.nix +checkConfigOutput 1 config.value.mkdefault ./types-anything/mk-mods.nix +checkConfigOutput '{ }' config.value.mkmerge ./types-anything/mk-mods.nix +checkConfigOutput true config.value.mkbefore ./types-anything/mk-mods.nix +checkConfigOutput 1 config.value.nested.foo ./types-anything/mk-mods.nix +checkConfigOutput baz config.value.nested.bar.baz ./types-anything/mk-mods.nix + cat <