go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/lucicfg/testdata/misc/rule.star (about)

     1  load("@stdlib//internal/graph.star", "graph")
     2  load("@stdlib//internal/lucicfg.star", "lucicfg")
     3  
     4  key = graph.key("kind", "id")
     5  
     6  def _some_rule(ctx, arg, *, kwarg):
     7      assert.eq(arg, "arg")
     8      assert.eq(kwarg, "kwarg")
     9      assert.eq(ctx.defaults.zzz.get(), "zzz value")
    10      return graph.keyset(key)
    11  
    12  some_rule = lucicfg.rule(
    13      impl = _some_rule,
    14      defaults = {"zzz": lucicfg.var()},
    15  )
    16  
    17  some_rule.defaults.zzz.set("zzz value")
    18  
    19  assert.eq(str(some_rule), "<rule some_rule>")
    20  assert.eq(some_rule("arg", kwarg = "kwarg").get("kind"), key)
    21  
    22  broken_rule = lucicfg.rule(impl = lambda ctx: 123)
    23  assert.fails(lambda: broken_rule(), "must return graph.keyset, got int")
    24  
    25  assert.fails(
    26      lambda: lucicfg.rule(impl = lambda: None, defaults = {123: None}),
    27      "must be strings",
    28  )
    29  
    30  assert.fails(
    31      lambda: lucicfg.rule(impl = lambda: None, defaults = {"zzz": 123}),
    32      "must be lucicfg.var",
    33  )