about summary refs log tree commit diff
path: root/lib/tests/modules/test-mergeAttrDefinitionsWithPrio.nix
blob: 3233f415136879fa812cb050c05742b1708693de (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{ lib, options, ... }:

let
  defs = lib.modules.mergeAttrDefinitionsWithPrio options._module.args;
  assertLazy = pos: throw "${pos.file}:${toString pos.line}:${toString pos.column}: The test must not evaluate this the assertLazy thunk, but it did. Unexpected strictness leads to unexpected errors and performance problems.";
in

{
  options.result = lib.mkOption { };
  config._module.args = {
    default = lib.mkDefault (assertLazy __curPos);
    regular = null;
    force = lib.mkForce (assertLazy __curPos);
    unused = assertLazy __curPos;
  };
  config.result =
    assert defs.default.highestPrio == (lib.mkDefault (assertLazy __curPos)).priority;
    assert defs.regular.highestPrio == lib.modules.defaultOverridePriority;
    assert defs.force.highestPrio == (lib.mkForce (assertLazy __curPos)).priority;
    true;
}