about summary refs log tree commit diff
path: root/lib/tests/modules.sh
diff options
context:
space:
mode:
authorRobert Hensing <roberth@users.noreply.github.com>2023-08-02 20:12:37 +0200
committerGitHub <noreply@github.com>2023-08-02 20:12:37 +0200
commit53b289836b041a1e05d833e91065e4346f9a2de0 (patch)
treea28fb0efbebe9c602044940fe1783af85eaf093c /lib/tests/modules.sh
parent634dcffbee87c8e78f95504ca808b1ab28f00c1a (diff)
parent72f2c8d6c681590d8c973bb79bdd21060aec9c53 (diff)
downloadnixlib-53b289836b041a1e05d833e91065e4346f9a2de0.tar
nixlib-53b289836b041a1e05d833e91065e4346f9a2de0.tar.gz
nixlib-53b289836b041a1e05d833e91065e4346f9a2de0.tar.bz2
nixlib-53b289836b041a1e05d833e91065e4346f9a2de0.tar.lz
nixlib-53b289836b041a1e05d833e91065e4346f9a2de0.tar.xz
nixlib-53b289836b041a1e05d833e91065e4346f9a2de0.tar.zst
nixlib-53b289836b041a1e05d833e91065e4346f9a2de0.zip
Merge pull request #243139 from hercules-ci/modules-test-default-argument
lib/tests/modules: Test that _module.args works when a default argumeā€¦
Diffstat (limited to 'lib/tests/modules.sh')
-rwxr-xr-xlib/tests/modules.sh22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh
index 4adbd69effbb..b933a24a57a1 100755
--- a/lib/tests/modules.sh
+++ b/lib/tests/modules.sh
@@ -69,6 +69,28 @@ checkConfigOutput '^"one two"$' config.result ./shorthand-meta.nix
 
 checkConfigOutput '^true$' config.result ./test-mergeAttrDefinitionsWithPrio.nix
 
+# Check that a module argument is passed, also when a default is available
+# (but not needed)
+#
+# When the default is needed, we currently fail to do what the users expect, as
+# we pass our own argument anyway, even if it *turns out* not to exist.
+#
+# The reason for this is that we don't know at invocation time what is in the
+# _module.args option. That value is only available *after* all modules have been
+# invoked.
+#
+# Hypothetically, Nix could help support this by giving access to the default
+# values, through a new built-in function.
+# However the default values are allowed to depend on other arguments, so those
+# would have to be passed in somehow, making this not just a getter but
+# something more complicated.
+#
+# At that point we have to wonder whether the extra complexity is worth the cost.
+# Another - subjective - reason not to support it is that default values
+# contradict the notion that an option has a single value, where _module.args
+# is the option.
+checkConfigOutput '^true$' config.result ./module-argument-default.nix
+
 # types.pathInStore
 checkConfigOutput '".*/store/0lz9p8xhf89kb1c1kk6jxrzskaiygnlh-bash-5.2-p15.drv"' config.pathInStore.ok1 ./types.nix
 checkConfigOutput '".*/store/0fb3ykw9r5hpayd05sr0cizwadzq1d8q-bash-5.2-p15"' config.pathInStore.ok2 ./types.nix