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

     1  def test_parents_query():
     2      g = new_graph()
     3  
     4      def mk(*args):
     5          k = g.key(*args)
     6          g.add_node(k)
     7          return k
     8  
     9      child = mk("child", "child")
    10  
    11      def q(child, order_by):
    12          keys = []
    13          for n in g.parents(child, order_by):
    14              keys.append(n.key)
    15          return keys
    16  
    17      t1_a1 = mk("t1", "id1", "a", "1")
    18      t1_a2 = mk("t1", "id1", "a", "2")
    19      t1_b1 = mk("t1", "id1", "b", "1")
    20      t2_a1 = mk("t2", "id1", "a", "1")
    21  
    22      g.add_edge(t1_b1, child)
    23      g.add_edge(t2_a1, child)
    24      g.add_edge(t2_a1, child, title = "another rel")
    25      g.add_edge(t1_a2, child)
    26      g.add_edge(t1_a1, child)
    27  
    28      g.finalize()
    29  
    30      # Querying in 'def' order returns nodes in order we defined edges.
    31      assert.eq(q(child, "def"), [t1_b1, t2_a1, t1_a2, t1_a1])
    32  
    33      # Querying by key order returns nodes in lexicographical order.
    34      assert.eq(q(child, "key"), [t1_a1, t1_a2, t1_b1, t2_a1])
    35  
    36      # Asking for parents of non-existing node is OK.
    37      assert.eq(q(g.key("t", "missing"), "key"), [])
    38  
    39      # order_by is validated.
    40      assert.fails(lambda: q(child, "blah"), 'unknown order "blah"')
    41  
    42  test_parents_query()