diff options
author | Robert Hensing <roberth@users.noreply.github.com> | 2023-09-17 19:43:07 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-17 19:43:07 +0200 |
commit | 00e548790637efcc141e7f3c41bf931be08e5e50 (patch) | |
tree | e411239f5da71ea8632ee6d4110f6b04bdc0b95d /lib/tests/modules | |
parent | 5cbbc68e1ba223349a7e0126e03107c1e28b6030 (diff) | |
parent | a1d38823079bdf7836dd44392e5e1029087d8c85 (diff) |
Merge pull request #249243 from lf-/jade/declarationsWithLocations
nixos/modules: Add declarationPositions
Diffstat (limited to 'lib/tests/modules')
-rw-r--r-- | lib/tests/modules/declaration-positions.nix | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/lib/tests/modules/declaration-positions.nix b/lib/tests/modules/declaration-positions.nix new file mode 100644 index 0000000000000..cefd3b4e516fb --- /dev/null +++ b/lib/tests/modules/declaration-positions.nix @@ -0,0 +1,49 @@ +{ lib, options, ... }: +let discardPositions = lib.mapAttrs (k: v: v); +in +# unsafeGetAttrPos is unspecified best-effort behavior, so we only want to consider this test on an evaluator that satisfies some basic assumptions about this function. +assert builtins.unsafeGetAttrPos "a" { a = true; } != null; +assert builtins.unsafeGetAttrPos "a" (discardPositions { a = true; }) == null; +{ + imports = [ + { + options.imported.line10 = lib.mkOption { + type = lib.types.int; + }; + + # Simulates various patterns of generating modules such as + # programs.firefox.nativeMessagingHosts.ff2mpv. We don't expect to get + # line numbers for these, but we can fall back on knowing the file. + options.generated = discardPositions { + line18 = lib.mkOption { + type = lib.types.int; + }; + }; + + options.submoduleLine34.extraOptLine23 = lib.mkOption { + default = 1; + type = lib.types.int; + }; + } + ]; + + options.nested.nestedLine30 = lib.mkOption { + type = lib.types.int; + }; + + options.submoduleLine34 = lib.mkOption { + default = { }; + type = lib.types.submoduleWith { + modules = [ + ({ options, ... }: { + options.submodDeclLine39 = lib.mkOption { }; + }) + { freeformType = with lib.types; lazyAttrsOf (uniq unspecified); } + ]; + }; + }; + + config = { + submoduleLine34.submodDeclLine39 = (options.submoduleLine34.type.getSubOptions [ ]).submodDeclLine39.declarationPositions; + }; +} |