Пример #1
0
 def test_filter_for_lineage_labeled_head_across_merge(self):
     fn = lambda: [
         Revision('a', ()),
         Revision('b', ('a', )),
         Revision('c1', ('b', ), branch_labels='c1branch'),
         Revision('c2', ('b', )),
         Revision('d', ('c1', 'c2')),
     ]
     map_ = RevisionMap(fn)
     c1 = map_.get_revision('c1')
     c2 = map_.get_revision('c2')
     d = map_.get_revision('d')
     eq_(map_.filter_for_lineage([c1, c2, d], "c1branch@head"), [c1, c2, d])
Пример #2
0
 def test_get_revision_base_single(self):
     map_ = RevisionMap(lambda: [
         Revision('a', ()),
         Revision('b', ('a', )),
         Revision('c', ('b', )),
     ])
     eq_(map_.get_revision('base'), None)
Пример #3
0
 def test_get_revision_head_single(self):
     map_ = RevisionMap(lambda: [
         Revision('a', ()),
         Revision('b', ('a', )),
         Revision('c', ('b', )),
     ])
     eq_(map_.get_revision('head'), map_._revision_map['c'])
Пример #4
0
    def test_filter_for_lineage_labeled_head_across_merge(self):
        fn = lambda: [
            Revision('a', ()),
            Revision('b', ('a', )),
            Revision('c1', ('b', ), branch_labels='c1branch'),
            Revision('c2', ('b', )),
            Revision('d', ('c1', 'c2')),

        ]
        map_ = RevisionMap(fn)
        c1 = map_.get_revision('c1')
        c2 = map_.get_revision('c2')
        d = map_.get_revision('d')
        eq_(
            map_.filter_for_lineage([c1, c2, d], "c1branch@head"),
            [c1, c2, d]
        )
Пример #5
0
 def test_get_revision_base_single(self):
     map_ = RevisionMap(
         lambda: [
             Revision('a', ()),
             Revision('b', ('a',)),
             Revision('c', ('b',)),
         ]
     )
     eq_(map_.get_revision('base'), None)
Пример #6
0
 def test_get_revision_head_single(self):
     map_ = RevisionMap(
         lambda: [
             Revision('a', ()),
             Revision('b', ('a',)),
             Revision('c', ('b',)),
         ]
     )
     eq_(map_.get_revision('head'), map_._revision_map['c'])
Пример #7
0
class LabeledBranchTest(DownIterateTest):
    def test_dupe_branch_collection(self):
        fn = lambda: [
            Revision('a', ()),
            Revision('b', ('a', )),
            Revision('c', ('b', ), branch_labels=['xy1']),
            Revision('d', ()),
            Revision('e', ('d', ), branch_labels=['xy1']),
            Revision('f', ('e', ))
        ]
        assert_raises_message(
            RevisionError, r"Branch name 'xy1' in revision (?:e|c) already "
            "used by revision (?:e|c)", getattr, RevisionMap(fn),
            "_revision_map")

    def test_filter_for_lineage_labeled_head_across_merge(self):
        fn = lambda: [
            Revision('a', ()),
            Revision('b', ('a', )),
            Revision('c1', ('b', ), branch_labels='c1branch'),
            Revision('c2', ('b', )),
            Revision('d', ('c1', 'c2')),
        ]
        map_ = RevisionMap(fn)
        c1 = map_.get_revision('c1')
        c2 = map_.get_revision('c2')
        d = map_.get_revision('d')
        eq_(map_.filter_for_lineage([c1, c2, d], "c1branch@head"), [c1, c2, d])

    def test_filter_for_lineage_heads(self):
        eq_(self.map.filter_for_lineage([self.map.get_revision("f")], "heads"),
            [self.map.get_revision("f")])

    def setUp(self):
        self.map = RevisionMap(lambda: [
            Revision('a', (), branch_labels='abranch'),
            Revision('b', ('a', )),
            Revision('somelongername', ('b', )),
            Revision('c', ('somelongername', )),
            Revision('d', ()),
            Revision('e', ('d', ), branch_labels=['ebranch']),
            Revision('someothername', ('e', )),
            Revision('f', ('someothername', )),
        ])

    def test_get_base_revisions_labeled(self):
        eq_(self.map._get_base_revisions("somelongername@base"), ['a'])

    def test_get_current_named_rev(self):
        eq_(self.map.get_revision("ebranch@head"), self.map.get_revision("f"))

    def test_get_base_revisions(self):
        eq_(self.map._get_base_revisions("base"), ['a', 'd'])

    def test_iterate_head_to_named_base(self):
        self._assert_iteration("heads", "ebranch@base",
                               ['f', 'someothername', 'e', 'd'])

        self._assert_iteration("heads", "abranch@base",
                               ['c', 'somelongername', 'b', 'a'])

    def test_iterate_named_head_to_base(self):
        self._assert_iteration("ebranch@head", "base",
                               ['f', 'someothername', 'e', 'd'])

        self._assert_iteration("abranch@head", "base",
                               ['c', 'somelongername', 'b', 'a'])

    def test_iterate_named_head_to_heads(self):
        self._assert_iteration("heads", "ebranch@head", ['f'], inclusive=True)

    def test_iterate_named_rev_to_heads(self):
        self._assert_iteration("heads",
                               "ebranch@d", ['f', 'someothername', 'e', 'd'],
                               inclusive=True)

    def test_iterate_head_to_version_specific_base(self):
        self._assert_iteration("heads", "e@base",
                               ['f', 'someothername', 'e', 'd'])

        self._assert_iteration("heads", "c@base",
                               ['c', 'somelongername', 'b', 'a'])

    def test_iterate_to_branch_at_rev(self):
        self._assert_iteration("heads", "ebranch@d",
                               ['f', 'someothername', 'e', 'd'])

    def test_branch_w_down_relative(self):
        self._assert_iteration("heads", "ebranch@-2",
                               ['f', 'someothername', 'e'])

    def test_branch_w_up_relative(self):
        self._assert_iteration("ebranch@+2", "base",
                               ['someothername', 'e', 'd'])

    def test_partial_id_resolve(self):
        eq_(self.map.get_revision("ebranch@some").revision, "someothername")
        eq_(self.map.get_revision("abranch@some").revision, "somelongername")

    def test_branch_at_heads(self):
        eq_(self.map.get_revision("abranch@heads").revision, "c")

    def test_branch_at_syntax(self):
        eq_(self.map.get_revision("abranch@head").revision, 'c')
        eq_(self.map.get_revision("abranch@base"), None)
        eq_(self.map.get_revision("ebranch@head").revision, 'f')
        eq_(self.map.get_revision("abranch@base"), None)
        eq_(self.map.get_revision("ebranch@d").revision, 'd')

    def test_branch_at_self(self):
        eq_(self.map.get_revision("ebranch@ebranch").revision, 'e')

    def test_retrieve_branch_revision(self):
        eq_(self.map.get_revision("abranch").revision, 'a')
        eq_(self.map.get_revision("ebranch").revision, 'e')

    def test_rev_not_in_branch(self):
        assert_raises_message(
            RevisionError, "Revision b is not a member of branch 'ebranch'",
            self.map.get_revision, "ebranch@b")

        assert_raises_message(
            RevisionError, "Revision d is not a member of branch 'abranch'",
            self.map.get_revision, "abranch@d")

    def test_no_revision_exists(self):
        assert_raises_message(RevisionError, "No such revision or branch 'q'",
                              self.map.get_revision, "abranch@q")

    def test_not_actually_a_branch(self):
        eq_(self.map.get_revision("e@d").revision, "d")

    def test_not_actually_a_branch_partial_resolution(self):
        eq_(self.map.get_revision("someoth@d").revision, "d")

    def test_no_such_branch(self):
        assert_raises_message(RevisionError, "No such branch: 'x'",
                              self.map.get_revision, "x@d")
Пример #8
0
class LabeledBranchTest(DownIterateTest):
    def test_dupe_branch_collection(self):
        fn = lambda: [
            Revision('a', ()),
            Revision('b', ('a',)),
            Revision('c', ('b',), branch_labels=['xy1']),
            Revision('d', ()),
            Revision('e', ('d',), branch_labels=['xy1']),
            Revision('f', ('e',))
        ]
        assert_raises_message(
            RevisionError,
            r"Branch name 'xy1' in revision (?:e|c) already "
            "used by revision (?:e|c)",
            getattr, RevisionMap(fn), "_revision_map"
        )

    def test_filter_for_lineage_labeled_head_across_merge(self):
        fn = lambda: [
            Revision('a', ()),
            Revision('b', ('a', )),
            Revision('c1', ('b', ), branch_labels='c1branch'),
            Revision('c2', ('b', )),
            Revision('d', ('c1', 'c2')),

        ]
        map_ = RevisionMap(fn)
        c1 = map_.get_revision('c1')
        c2 = map_.get_revision('c2')
        d = map_.get_revision('d')
        eq_(
            map_.filter_for_lineage([c1, c2, d], "c1branch@head"),
            [c1, c2, d]
        )

    def test_filter_for_lineage_heads(self):
        eq_(
            self.map.filter_for_lineage(
                [self.map.get_revision("f")],
                "heads"
            ),
            [self.map.get_revision("f")]
        )

    def setUp(self):
        self.map = RevisionMap(lambda: [
            Revision('a', (), branch_labels='abranch'),
            Revision('b', ('a',)),
            Revision('somelongername', ('b',)),
            Revision('c', ('somelongername',)),
            Revision('d', ()),
            Revision('e', ('d',), branch_labels=['ebranch']),
            Revision('someothername', ('e',)),
            Revision('f', ('someothername',)),
        ])

    def test_get_base_revisions_labeled(self):
        eq_(
            self.map._get_base_revisions("somelongername@base"),
            ['a']
        )

    def test_get_current_named_rev(self):
        eq_(
            self.map.get_revision("ebranch@head"),
            self.map.get_revision("f")
        )

    def test_get_base_revisions(self):
        eq_(
            self.map._get_base_revisions("base"),
            ['a', 'd']
        )

    def test_iterate_head_to_named_base(self):
        self._assert_iteration(
            "heads", "ebranch@base",
            ['f', 'someothername', 'e', 'd']
        )

        self._assert_iteration(
            "heads", "abranch@base",
            ['c', 'somelongername', 'b', 'a']
        )

    def test_iterate_named_head_to_base(self):
        self._assert_iteration(
            "ebranch@head", "base",
            ['f', 'someothername', 'e', 'd']
        )

        self._assert_iteration(
            "abranch@head", "base",
            ['c', 'somelongername', 'b', 'a']
        )

    def test_iterate_named_head_to_heads(self):
        self._assert_iteration(
            "heads", "ebranch@head",
            ['f'],
            inclusive=True
        )

    def test_iterate_named_rev_to_heads(self):
        self._assert_iteration(
            "heads", "ebranch@d",
            ['f', 'someothername', 'e', 'd'],
            inclusive=True
        )

    def test_iterate_head_to_version_specific_base(self):
        self._assert_iteration(
            "heads", "e@base",
            ['f', 'someothername', 'e', 'd']
        )

        self._assert_iteration(
            "heads", "c@base",
            ['c', 'somelongername', 'b', 'a']
        )

    def test_iterate_to_branch_at_rev(self):
        self._assert_iteration(
            "heads", "ebranch@d",
            ['f', 'someothername', 'e', 'd']
        )

    def test_branch_w_down_relative(self):
        self._assert_iteration(
            "heads", "ebranch@-2",
            ['f', 'someothername', 'e']
        )

    def test_branch_w_up_relative(self):
        self._assert_iteration(
            "ebranch@+2", "base",
            ['someothername', 'e', 'd']
        )

    def test_partial_id_resolve(self):
        eq_(self.map.get_revision("ebranch@some").revision, "someothername")
        eq_(self.map.get_revision("abranch@some").revision, "somelongername")

    def test_branch_at_heads(self):
        eq_(
            self.map.get_revision("abranch@heads").revision,
            "c"
        )

    def test_branch_at_syntax(self):
        eq_(self.map.get_revision("abranch@head").revision, 'c')
        eq_(self.map.get_revision("abranch@base"), None)
        eq_(self.map.get_revision("ebranch@head").revision, 'f')
        eq_(self.map.get_revision("abranch@base"), None)
        eq_(self.map.get_revision("ebranch@d").revision, 'd')

    def test_branch_at_self(self):
        eq_(self.map.get_revision("ebranch@ebranch").revision, 'e')

    def test_retrieve_branch_revision(self):
        eq_(self.map.get_revision("abranch").revision, 'a')
        eq_(self.map.get_revision("ebranch").revision, 'e')

    def test_rev_not_in_branch(self):
        assert_raises_message(
            RevisionError,
            "Revision b is not a member of branch 'ebranch'",
            self.map.get_revision, "ebranch@b"
        )

        assert_raises_message(
            RevisionError,
            "Revision d is not a member of branch 'abranch'",
            self.map.get_revision, "abranch@d"
        )

    def test_no_revision_exists(self):
        assert_raises_message(
            RevisionError,
            "No such revision or branch 'q'",
            self.map.get_revision, "abranch@q"
        )

    def test_not_actually_a_branch(self):
        eq_(self.map.get_revision("e@d").revision, "d")

    def test_not_actually_a_branch_partial_resolution(self):
        eq_(self.map.get_revision("someoth@d").revision, "d")

    def test_no_such_branch(self):
        assert_raises_message(
            RevisionError,
            "No such branch: 'x'",
            self.map.get_revision, "x@d"
        )