tests/test-revlog-raw.py
branchstable
changeset 36744 33275ab5e837
parent 35638 edc9330acac1
child 37896 03a09579c854
equal deleted inserted replaced
36743:d031609b3cb7 36744:33275ab5e837
   112             if optimaldelta:
   112             if optimaldelta:
   113                 deltaparent = parentrev
   113                 deltaparent = parentrev
   114             else:
   114             else:
   115                 # suboptimal deltaparent
   115                 # suboptimal deltaparent
   116                 deltaparent = min(0, parentrev)
   116                 deltaparent = min(0, parentrev)
       
   117             if not rlog.candelta(deltaparent, r):
       
   118                 deltaparent = -1
   117             return {'node': rlog.node(r), 'p1': pnode, 'p2': node.nullid,
   119             return {'node': rlog.node(r), 'p1': pnode, 'p2': node.nullid,
   118                     'cs': rlog.node(rlog.linkrev(r)), 'flags': rlog.flags(r),
   120                     'cs': rlog.node(rlog.linkrev(r)), 'flags': rlog.flags(r),
   119                     'deltabase': rlog.node(deltaparent),
   121                     'deltabase': rlog.node(deltaparent),
   120                     'delta': rlog.revdiff(deltaparent, r)}
   122                     'delta': rlog.revdiff(deltaparent, r)}
   121 
   123 
   149     '''
   151     '''
   150     dlog = newrevlog(destname, recreate=True)
   152     dlog = newrevlog(destname, recreate=True)
   151     for r in rlog:
   153     for r in rlog:
   152         p1 = rlog.node(r - 1)
   154         p1 = rlog.node(r - 1)
   153         p2 = node.nullid
   155         p2 = node.nullid
   154         if r == 0:
   156         if r == 0 or (rlog.flags(r) & revlog.REVIDX_EXTSTORED):
   155             text = rlog.revision(r, raw=True)
   157             text = rlog.revision(r, raw=True)
   156             cachedelta = None
   158             cachedelta = None
   157         else:
   159         else:
   158             # deltaparent is more interesting if it has the EXTSTORED flag.
   160             # deltaparent cannot have EXTSTORED flag.
   159             deltaparent = max([0] + [p for p in range(r - 2) if rlog.flags(p)])
   161             deltaparent = max([-1] +
       
   162                               [p for p in range(r)
       
   163                                if rlog.flags(p) & revlog.REVIDX_EXTSTORED == 0])
   160             text = None
   164             text = None
   161             cachedelta = (deltaparent, rlog.revdiff(deltaparent, r))
   165             cachedelta = (deltaparent, rlog.revdiff(deltaparent, r))
   162         flags = rlog.flags(r)
   166         flags = rlog.flags(r)
   163         ifh = dfh = None
   167         ifh = dfh = None
   164         try:
   168         try:
   260         if rlog.revision(rev, raw=True) != rawtext:
   264         if rlog.revision(rev, raw=True) != rawtext:
   261             abort('rev %d: wrong rawtext' % rev)
   265             abort('rev %d: wrong rawtext' % rev)
   262         result.append((text, rawtext))
   266         result.append((text, rawtext))
   263 
   267 
   264         # Verify flags like isdelta, isext work as expected
   268         # Verify flags like isdelta, isext work as expected
   265         if bool(rlog.deltaparent(rev) > -1) != isdelta:
   269         # isdelta can be overridden to False if this or p1 has isext set
   266             abort('rev %d: isdelta is ineffective' % rev)
   270         if bool(rlog.deltaparent(rev) > -1) and not isdelta:
       
   271             abort('rev %d: isdelta is unexpected' % rev)
   267         if bool(rlog.flags(rev)) != isext:
   272         if bool(rlog.flags(rev)) != isext:
   268             abort('rev %d: isext is ineffective' % rev)
   273             abort('rev %d: isext is ineffective' % rev)
   269     return result
   274     return result
   270 
   275 
   271 # Main test and checking
   276 # Main test and checking