# HG changeset patch # User Boris Feld # Date 2018-12-20 08:59:16 # Node ID 88d813cd9acd56490fdac2c0b8e66c5231c63d88 # Parent 46e0563c67dbe8b693c07ea93420b41c6d1a5947 revlog: fix pure python slicing test when chain contains nullrev The revlog mock used in the test was not behaving the same as its C counterpart. diff --git a/mercurial/revlogutils/deltas.py b/mercurial/revlogutils/deltas.py --- a/mercurial/revlogutils/deltas.py +++ b/mercurial/revlogutils/deltas.py @@ -47,11 +47,15 @@ class _testrevlog(object): self.index = None def start(self, rev): + if rev == nullrev: + return 0 if rev == 0: return 0 return self._data[rev - 1] def end(self, rev): + if rev == nullrev: + return 0 return self._data[rev] def length(self, rev): @@ -61,6 +65,8 @@ class _testrevlog(object): return len(self._data) def issnapshot(self, rev): + if rev == nullrev: + return True return rev in self._snapshot def slicechunk(revlog, revs, targetsize=None): @@ -116,6 +122,12 @@ def slicechunk(revlog, revs, targetsize= [[0], [11], [13], [15]] >>> list(slicechunk(revlog, [0, 11, 13, 15], targetsize=20)) [[0], [11], [13, 15]] + + Slicing involving nullrev + >>> list(slicechunk(revlog, [-1, 0, 11, 13, 15], targetsize=20)) + [[-1, 0], [11], [13, 15]] + >>> list(slicechunk(revlog, [-1, 13, 15], targetsize=5)) + [[-1], [13], [15]] """ if targetsize is not None: targetsize = max(targetsize, revlog._srmingapsize)