about summary refs log tree commit diff
path: root/lib/tests
diff options
context:
space:
mode:
authorRobert Hensing <robert@roberthensing.nl>2022-05-18 18:42:18 +0200
committerRobert Hensing <robert@roberthensing.nl>2022-06-14 23:01:26 +0200
commit38b7709a6f02ea33fe67220b7ff14fb21ab08e14 (patch)
tree4f9eba7fcf513b4757ee2cfb4d216a40470c96c5 /lib/tests
parent4746f6d03e4f8dc6e7399f45aaba0ca3aac32761 (diff)
lib/test/modules.sh: Test deferredModule error location file
Diffstat (limited to 'lib/tests')
-rwxr-xr-xlib/tests/modules.sh5
-rw-r--r--lib/tests/modules/deferred-module.nix8
2 files changed, 11 insertions, 2 deletions
diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh
index 9b1348f58c9c2..155d7e5fa3d22 100755
--- a/lib/tests/modules.sh
+++ b/lib/tests/modules.sh
@@ -194,8 +194,11 @@ checkConfigOutput '^"submodule"$' options.submodule.type.description ./declare-s
 ## Paths should be allowed as values and work as expected
 checkConfigOutput '^true$' config.submodule.enable ./declare-submoduleWith-path.nix
 
-## Deferred module
+## deferredModule
+# default module is merged into nodes.foo
 checkConfigOutput '"beta"' config.nodes.foo.settingsDict.c ./deferred-module.nix
+# errors from the default module are reported with accurate location
+checkConfigError 'In `default from the-file-that-contains-the-bad-config.nix'\'': "bogus"' config.nodes.foo.bottom ./deferred-module.nix
 
 # Check the file location information is propagated into submodules
 checkConfigOutput the-file.nix config.submodule.internalFiles.0 ./submoduleFiles.nix
diff --git a/lib/tests/modules/deferred-module.nix b/lib/tests/modules/deferred-module.nix
index faf459a991fa6..dc8072d4e6c30 100644
--- a/lib/tests/modules/deferred-module.nix
+++ b/lib/tests/modules/deferred-module.nix
@@ -1,7 +1,7 @@
 { lib, ... }:
 let
   inherit (lib) types mkOption setDefaultModuleLocation;
-  inherit (types) deferredModule lazyAttrsOf submodule str raw;
+  inherit (types) deferredModule lazyAttrsOf submodule str raw enum;
 in
 {
   imports = [
@@ -28,6 +28,7 @@ in
       _file = "default-1.nix";
       default = { config, ... }: {
         options.settingsDict = lib.mkOption { type = lazyAttrsOf str; default = {}; };
+        options.bottom = lib.mkOption { type = enum []; };
       };
     }
 
@@ -44,6 +45,11 @@ in
     }
 
     {
+      _file = "the-file-that-contains-the-bad-config.nix";
+      default.bottom = "bogus";
+    }
+
+    {
       _file = "nodes-foo-c-is-a.nix";
       nodes.foo = { config, ... }: {
         settingsDict.c = config.settingsDict.a;