From 446d80d28deb9929aca2a70699b3f32c2f1297d5 Mon Sep 17 00:00:00 2001 From: Silvan Mosberger Date: Sun, 22 Mar 2020 20:55:54 +0100 Subject: [PATCH] lib/tests: Add tests for freeform modules --- lib/tests/modules.sh | 21 +++++++++++++++++++ .../define-value-string-properties.nix | 12 +++++++++++ lib/tests/modules/freeform-attrsOf.nix | 3 +++ lib/tests/modules/freeform-lazyAttrsOf.nix | 3 +++ lib/tests/modules/freeform-nested.nix | 7 +++++++ lib/tests/modules/freeform-str-dep-unstr.nix | 8 +++++++ lib/tests/modules/freeform-unstr-dep-str.nix | 8 +++++++ 7 files changed, 62 insertions(+) create mode 100644 lib/tests/modules/define-value-string-properties.nix create mode 100644 lib/tests/modules/freeform-attrsOf.nix create mode 100644 lib/tests/modules/freeform-lazyAttrsOf.nix create mode 100644 lib/tests/modules/freeform-nested.nix create mode 100644 lib/tests/modules/freeform-str-dep-unstr.nix create mode 100644 lib/tests/modules/freeform-unstr-dep-str.nix diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh index 6258244457a..848b10e17f6 100755 --- a/lib/tests/modules.sh +++ b/lib/tests/modules.sh @@ -210,6 +210,27 @@ checkConfigOutput "empty" config.value.foo ./declare-lazyAttrsOf.nix ./attrsOf-c checkConfigError 'The option value .* in .* is not of type .*' \ config.value ./declare-int-unsigned-value.nix ./define-value-list.nix ./define-value-int-positive.nix +## Freeform modules +# Assigning without a declared option should work +checkConfigOutput 24 config.value ./freeform-attrsOf.nix ./define-value-string.nix +# but only if the type matches +checkConfigError 'The option value .* in .* is not of type .*' config.value ./freeform-attrsOf.nix ./define-value-list.nix +# and properties should be applied +checkConfigOutput yes config.value ./freeform-attrsOf.nix ./define-value-string-properties.nix +# Options should still be declarable, and be able to have a type that doesn't match the freeform type +checkConfigOutput false config.enable ./freeform-attrsOf.nix ./define-value-string.nix ./declare-enable.nix +checkConfigOutput 24 config.value ./freeform-attrsOf.nix ./define-value-string.nix ./declare-enable.nix +# and this should work too with nested values +checkConfigOutput false config.nest.foo ./freeform-attrsOf.nix ./freeform-nested.nix +checkConfigOutput bar config.nest.bar ./freeform-attrsOf.nix ./freeform-nested.nix +# Check whether a declared option can depend on an freeform-typed one +checkConfigOutput null config.foo ./freeform-attrsOf.nix ./freeform-str-dep-unstr.nix +checkConfigOutput 24 config.foo ./freeform-attrsOf.nix ./freeform-str-dep-unstr.nix ./define-value-string.nix +# Check whether an freeform-typed value can depend on a declared option, this can only work with lazyAttrsOf +checkConfigError 'infinite recursion encountered' config.foo ./freeform-attrsOf.nix ./freeform-unstr-dep-str.nix +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 + cat <