Example #1
0
class GraphWithLoopTest(DownIterateTest, InvalidRevisionMapTest):
    def test_revision_map_solitary_loop(self):
        map_ = RevisionMap(lambda: [
            Revision("a", "a"),
        ])
        self._assert_raises_revision_map_loop(map_, "a")

    def test_revision_dupe_head(self):
        r1 = Revision("user_foo", None)
        r2 = Revision("user", "user_foo", dependencies="user_foo")

        self.map = RevisionMap(lambda: [r1, r2])

        self._assert_iteration("heads", None, ["user", "user_foo"])

        eq_(self.map._topological_sort([r1, r2], [r2]), ["user", "user_foo"])

    def test_revision_map_no_loop_w_overlapping_substrings(self):
        r1 = Revision("user_foo", None)
        r2 = Revision("user", "user_foo")

        self.map = RevisionMap(lambda: [r1, r2])

        self._assert_iteration("heads", None, ["user", "user_foo"])

    def test_revision_map_no_loop_w_overlapping_substrings_dependencies(self):
        r1 = Revision("user_foo", None)
        r2 = Revision("user", None, dependencies="user_foo")

        self.map = RevisionMap(lambda: [r1, r2])

        self._assert_iteration("heads", None, ["user", "user_foo"])

    def test_revision_map_base_loop(self):
        map_ = RevisionMap(lambda: [
            Revision("a", "a"),
            Revision("b", "a"),
            Revision("c", "b"),
        ])
        self._assert_raises_revision_map_loop(map_, "a")

    def test_revision_map_head_loop(self):
        map_ = RevisionMap(lambda: [
            Revision("a", ()),
            Revision("b", "a"),
            Revision("c", ("b", "c")),
        ])
        self._assert_raises_revision_map_loop(map_, "c")

    def test_revision_map_branch_point_loop(self):
        map_ = RevisionMap(lambda: [
            Revision("a", ()),
            Revision("b", ("a", "b")),
            Revision("c1", "b"),
            Revision("c2", "b"),
        ])
        self._assert_raises_revision_map_loop(map_, "b")

    def test_revision_map_merge_point_loop(self):
        map_ = RevisionMap(lambda: [
            Revision("a", ()),
            Revision("b1", "a"),
            Revision("b2", "a"),
            Revision("c", ("b1", "b2", "c")),
        ])
        self._assert_raises_revision_map_loop(map_, "c")

    def test_revision_map_solitary_dependency_loop(self):
        map_ = RevisionMap(lambda: [
            Revision("a", (), dependencies="a"),
        ])
        self._assert_raises_revision_map_dep_loop(map_, "a")

    def test_revision_map_base_dependency_loop(self):
        map_ = RevisionMap(lambda: [
            Revision("a", (), dependencies="a"),
            Revision("b", "a"),
            Revision("c", "b"),
        ])
        self._assert_raises_revision_map_dep_loop(map_, "a")

    def test_revision_map_head_dep_loop(self):
        map_ = RevisionMap(lambda: [
            Revision("a", ()),
            Revision("b", "a"),
            Revision("c", "b", dependencies="c"),
        ])
        self._assert_raises_revision_map_dep_loop(map_, "c")

    def test_revision_map_branch_point_dep_loop(self):
        map_ = RevisionMap(lambda: [
            Revision("a", ()),
            Revision("b", "a", dependencies="b"),
            Revision("c1", "b"),
            Revision("c2", "b"),
        ])
        self._assert_raises_revision_map_dep_loop(map_, "b")

    def test_revision_map_merge_point_dep_loop(self):
        map_ = RevisionMap(lambda: [
            Revision("a", ()),
            Revision("b1", "a"),
            Revision("b2", "a"),
            Revision("c", ("b1", "b2"), dependencies="c"),
        ])
        self._assert_raises_revision_map_dep_loop(map_, "c")