Changeset - 346b97cf1aaa
[Not reviewed]
default
0 2 0
Manuel Jacob - 7 years ago 2019-02-19 00:02:33
me@manueljacob.de
hg: make `predecessors` property of MercurialChangeset compatible with newer versions of Mercurial.
2 files changed with 5 insertions and 2 deletions:
0 comments (0 inline, 0 general)
kallithea/lib/vcs/backends/hg/changeset.py
Show inline comments
 
@@ -95,25 +95,29 @@ class MercurialChangeset(BaseChangeset):
 
            successors = obsolete.successorssets(self._ctx._repo, self._ctx.node())
 
        if successors:
 
            # flatten the list here handles both divergent (len > 1)
 
            # and the usual case (len = 1)
 
            successors = [hex(n)[:12] for sub in successors for n in sub if n != self._ctx.node()]
 

	
 
        return successors
 

	
 
    @LazyProperty
 
    def predecessors(self):
 
        predecessors = set()
 
        nm = self._ctx._repo.changelog.nodemap
 
        for p in self._ctx._repo.obsstore.precursors.get(self._ctx.node(), ()):
 
        try:
 
            raw_predecessors = self._ctx._repo.obsstore.predecessors
 
        except AttributeError:  # renamed in Mercurial 4.4 (d5acd967f95a)
 
            raw_predecessors = self._ctx._repo.obsstore.precursors
 
        for p in raw_predecessors.get(self._ctx.node(), ()):
 
            pr = nm.get(p[0])
 
            if pr is not None:
 
                predecessors.add(hex(p[0])[:12])
 
        return predecessors
 

	
 
    @LazyProperty
 
    def bookmarks(self):
 
        return map(safe_unicode, self._ctx.bookmarks())
 

	
 
    @LazyProperty
 
    def message(self):
 
        return safe_unicode(self._ctx.description())
kallithea/tests/vcs/test_hg.py
Show inline comments
 
@@ -580,16 +580,15 @@ class TestMercurialChangeset(object):
 
        assert 'lukasz.balcerzak@python-center.pl' == self.repo.get_changeset('3803844fdbd3').author_email
 
        assert '' == self.repo.get_changeset('84478366594b').author_email
 

	
 
    def test_author_username(self):
 
        assert 'Marcin Kuzminski' == self.repo.get_changeset('b986218ba1c9').author_name
 
        assert 'Lukasz Balcerzak' == self.repo.get_changeset('3803844fdbd3').author_name
 
        assert 'marcink' == self.repo.get_changeset('84478366594b').author_name
 

	
 
    def test_successors(self):
 
        init_chset = self.repo.get_changeset(0)
 
        assert init_chset.successors == []
 

	
 
    @pytest.mark.xfail
 
    def test_predecessors(self):
 
        init_chset = self.repo.get_changeset(0)
 
        assert init_chset.predecessors == set([])
0 comments (0 inline, 0 general)