diff -r d031609b3cb7 -r 33275ab5e837 tests/test-revlog-raw.py --- a/tests/test-revlog-raw.py Tue Feb 06 19:08:25 2018 -0800 +++ b/tests/test-revlog-raw.py Tue Feb 13 11:35:32 2018 -0800 @@ -114,6 +114,8 @@ else: # suboptimal deltaparent deltaparent = min(0, parentrev) + if not rlog.candelta(deltaparent, r): + deltaparent = -1 return {'node': rlog.node(r), 'p1': pnode, 'p2': node.nullid, 'cs': rlog.node(rlog.linkrev(r)), 'flags': rlog.flags(r), 'deltabase': rlog.node(deltaparent), @@ -151,12 +153,14 @@ for r in rlog: p1 = rlog.node(r - 1) p2 = node.nullid - if r == 0: + if r == 0 or (rlog.flags(r) & revlog.REVIDX_EXTSTORED): text = rlog.revision(r, raw=True) cachedelta = None else: - # deltaparent is more interesting if it has the EXTSTORED flag. - deltaparent = max([0] + [p for p in range(r - 2) if rlog.flags(p)]) + # deltaparent cannot have EXTSTORED flag. + deltaparent = max([-1] + + [p for p in range(r) + if rlog.flags(p) & revlog.REVIDX_EXTSTORED == 0]) text = None cachedelta = (deltaparent, rlog.revdiff(deltaparent, r)) flags = rlog.flags(r) @@ -262,8 +266,9 @@ result.append((text, rawtext)) # Verify flags like isdelta, isext work as expected - if bool(rlog.deltaparent(rev) > -1) != isdelta: - abort('rev %d: isdelta is ineffective' % rev) + # isdelta can be overridden to False if this or p1 has isext set + if bool(rlog.deltaparent(rev) > -1) and not isdelta: + abort('rev %d: isdelta is unexpected' % rev) if bool(rlog.flags(rev)) != isext: abort('rev %d: isext is ineffective' % rev) return result