def test_one_level(self):
        base_versions = [a1]
        api = DepsApiFake({a1: [b1],
                           b1: []})
        graph, overwrites = block_version_graph_build(api.get_dep_table, base_versions, {})

        expected = BlockVersionGraph()
        expected.add_nodes([a1, b1])
        expected.add_edge(a1, b1)
        self.assertEqual(graph, expected)
    def test_diamond_2_version(self):
        base_versions = [a1, b1]
        api = DepsApiFake({a1: [c1],
                           b1: [c2],
                           c1: [], c2: []})
        graph, overwrites = block_version_graph_build(api.get_dep_table, base_versions, {})

        expected = BlockVersionGraph()
        expected.add_nodes([a1, b1, c1, c2])
        expected.add_edge(a1, c1)
        expected.add_edge(b1, c2)
        self.assertEqual(graph, expected)
        self.assertEqual({}, overwrites)
    def test_same_tables(self):
        base_versions = [c1, d1]
        api = DepsApiFake({c1: [a2],
                           d1: [b2]})
        graph, overwrites = block_version_graph_build(api.get_dep_table, base_versions,
                                                      BlockVersionTable([an, bn, c1, d1]))
        expected = BlockVersionGraph()
        expected.add_nodes([c1, d1])
        expected.add_edge(c1, an)
        expected.add_edge(d1, bn)

        self.assertEqual(graph, expected)
        self.assertEqual({c1: {an}, d1: {bn}}, overwrites)
    def test_effective_overwrite_none(self):
        base_versions = [a1, b1]
        api = DepsApiFake({a1: [c1],
                           b1: [c2],
                           cn: []})
        graph, overwrites = block_version_graph_build(api.get_dep_table, base_versions,
                                                              BlockVersionTable([cn]))

        expected = BlockVersionGraph()
        expected.add_nodes([a1, b1, cn])
        expected.add_edge(a1, cn)
        expected.add_edge(b1, cn)
        self.assertEqual(graph, expected)
        self.assertEqual({a1: {cn}, b1: {cn}}, overwrites)
Beispiel #5
0
 def block_closure(self):  # Lazy computation of closures
     if self._block_closure is None:
         self._block_closure, _ = block_version_graph_build(self._ref_translator.get_dep_table,
                                                     [self.block_version],
                                                     BlockVersionTable())
     return self._block_closure