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

     1  trace = stacktrace()
     2  
     3  def test_add_edge_ok():
     4      g = new_graph()
     5      k1 = g.key("t1", "id1")
     6      k2 = g.key("t1", "id2")
     7  
     8      g.add_edge(parent = k1, child = k2)
     9      g.add_node(k1, {})
    10      g.add_node(k2, {})
    11  
    12      # Can be successfully finalized.
    13      assert.true(g.finalize() == [])
    14  
    15  test_add_edge_ok()
    16  
    17  def test_edge_redeclaration():
    18      g = new_graph()
    19      k1 = g.key("t1", "id1")
    20      k2 = g.key("t1", "id2")
    21  
    22      g.add_edge(parent = k1, child = k2, title = "blah")
    23  
    24      # Redeclaring is fine.
    25      g.add_edge(parent = k1, child = k2, title = "blah")
    26  
    27      # Using a different title is fine too.
    28      g.add_edge(parent = k1, child = k2, title = "zzz")
    29  
    30  test_edge_redeclaration()
    31  
    32  def test_cycle_detection():
    33      g = new_graph()
    34      edge = lambda par, ch: g.add_edge(g.key("t", par), g.key("t", ch))
    35  
    36      edge("1", "2")
    37      edge("2", "3")
    38      edge("1", "3")
    39      edge("3", "4")
    40  
    41      assert.fails(lambda: edge("4", "1"), "introduces a cycle")
    42  
    43  test_cycle_detection()
    44  
    45  def test_dangling_edges():
    46      g = new_graph()
    47  
    48      exists = g.key("t", "exists")
    49      g.add_node(exists, {})
    50  
    51      miss = lambda id: g.key("t", str(id))
    52  
    53      g.add_edge(miss(0), miss(1), title = "edge1")
    54      g.add_edge(miss(2), exists, title = "edge2")
    55      g.add_edge(exists, miss(3), title = "edge3")
    56  
    57      errs = g.finalize()
    58      assert.eq(errs, [
    59          'relation "edge1": refers to t("0") and t("1"), neither is defined',
    60          't("exists") in "edge2" refers to undefined t("2")',
    61          't("exists") in "edge3" refers to undefined t("3")',
    62      ])
    63  
    64  test_dangling_edges()