summaryrefslogtreecommitdiffstats
path: root/lib/tests/modules/test-mergeAttrDefinitionsWithPrio.nix
blob: 0086ce9fda103f703c6d85dc14151eacf54b9cc8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{ 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;
}