Mercurial > hg
annotate tests/test-revlog-raw.py @ 33806:dedab036215d
wireproto: use new peer interface
The wirepeer class provides concrete implementations of peer interface
methods for calling wire protocol commands. It makes sense for this
class to inherit from the peer abstract base class. So we change
that.
Since httppeer and sshpeer have already been converted to the new
interface, peerrepository is no longer adding any value. So it has
been removed. httppeer and sshpeer have been updated to reflect the
loss of peerrepository and the inheritance of the abstract base
class in wirepeer.
The code changes in wirepeer are reordering of methods to group
by interface.
Some Python code in tests was updated to reflect changed APIs.
.. api::
peer.peerrepository has been removed. Use repository.peer abstract
base class to represent a peer repository.
Differential Revision: https://phab.mercurial-scm.org/D338
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Thu, 10 Aug 2017 20:58:28 -0700 |
parents | 6788e648efcf |
children | c8b6ed51386b |
rev | line source |
---|---|
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
1 # test revlog interaction about raw data (flagprocessor) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
2 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
3 from __future__ import absolute_import, print_function |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
4 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
5 import sys |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
6 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
7 from mercurial import ( |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
8 encoding, |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
9 node, |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
10 revlog, |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
11 transaction, |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
12 vfs, |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
13 ) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
14 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
15 # TESTTMP is optional. This makes it convenient to run without run-tests.py |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
16 tvfs = vfs.vfs(encoding.environ.get('TESTTMP', b'/tmp')) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
17 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
18 # Enable generaldelta otherwise revlog won't use delta as expected by the test |
31764
15707e58fc3d
test-revlog-raw: remove duplicated option
Jun Wu <quark@fb.com>
parents:
31763
diff
changeset
|
19 tvfs.options = {'generaldelta': True, 'revlogv1': True} |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
20 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
21 # The test wants to control whether to use delta explicitly, based on |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
22 # "storedeltachains". |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
23 revlog.revlog._isgooddelta = lambda self, d, textlen: self.storedeltachains |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
24 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
25 def abort(msg): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
26 print('abort: %s' % msg) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
27 # Return 0 so run-tests.py could compare the output. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
28 sys.exit() |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
29 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
30 # Register a revlog processor for flag EXTSTORED. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
31 # |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
32 # It simply prepends a fixed header, and replaces '1' to 'i'. So it has |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
33 # insertion and replacement, and may be interesting to test revlog's line-based |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
34 # deltas. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
35 _extheader = b'E\n' |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
36 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
37 def readprocessor(self, rawtext): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
38 # True: the returned text could be used to verify hash |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
39 text = rawtext[len(_extheader):].replace(b'i', b'1') |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
40 return text, True |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
41 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
42 def writeprocessor(self, text): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
43 # False: the returned rawtext shouldn't be used to verify hash |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
44 rawtext = _extheader + text.replace(b'1', b'i') |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
45 return rawtext, False |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
46 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
47 def rawprocessor(self, rawtext): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
48 # False: do not verify hash. Only the content returned by "readprocessor" |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
49 # can be used to verify hash. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
50 return False |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
51 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
52 revlog.addflagprocessor(revlog.REVIDX_EXTSTORED, |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
53 (readprocessor, writeprocessor, rawprocessor)) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
54 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
55 # Utilities about reading and appending revlog |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
56 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
57 def newtransaction(): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
58 # A transaction is required to write revlogs |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
59 report = lambda msg: None |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
60 return transaction.transaction(report, tvfs, {'plain': tvfs}, b'journal') |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
61 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
62 def newrevlog(name=b'_testrevlog.i', recreate=False): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
63 if recreate: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
64 tvfs.tryunlink(name) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
65 rlog = revlog.revlog(tvfs, name) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
66 return rlog |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
67 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
68 def appendrev(rlog, text, tr, isext=False, isdelta=True): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
69 '''Append a revision. If isext is True, set the EXTSTORED flag so flag |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
70 processor will be used (and rawtext is different from text). If isdelta is |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
71 True, force the revision to be a delta, otherwise it's full text. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
72 ''' |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
73 nextrev = len(rlog) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
74 p1 = rlog.node(nextrev - 1) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
75 p2 = node.nullid |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
76 if isext: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
77 flags = revlog.REVIDX_EXTSTORED |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
78 else: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
79 flags = revlog.REVIDX_DEFAULT_FLAGS |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
80 # Change storedeltachains temporarily, to override revlog's delta decision |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
81 rlog.storedeltachains = isdelta |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
82 try: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
83 rlog.addrevision(text, tr, nextrev, p1, p2, flags=flags) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
84 return nextrev |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
85 except Exception as ex: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
86 abort('rev %d: failed to append: %s' % (nextrev, ex)) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
87 finally: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
88 # Restore storedeltachains. It is always True, see revlog.__init__ |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
89 rlog.storedeltachains = True |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
90 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
91 def addgroupcopy(rlog, tr, destname=b'_destrevlog.i', optimaldelta=True): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
92 '''Copy revlog to destname using revlog.addgroup. Return the copied revlog. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
93 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
94 This emulates push or pull. They use changegroup. Changegroup requires |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
95 repo to work. We don't have a repo, so a dummy changegroup is used. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
96 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
97 If optimaldelta is True, use optimized delta parent, so the destination |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
98 revlog could probably reuse it. Otherwise it builds sub-optimal delta, and |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
99 the destination revlog needs more work to use it. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
100 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
101 This exercises some revlog.addgroup (and revlog._addrevision(text=None)) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
102 code path, which is not covered by "appendrev" alone. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
103 ''' |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
104 class dummychangegroup(object): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
105 @staticmethod |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
106 def deltachunk(pnode): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
107 pnode = pnode or node.nullid |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
108 parentrev = rlog.rev(pnode) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
109 r = parentrev + 1 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
110 if r >= len(rlog): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
111 return {} |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
112 if optimaldelta: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
113 deltaparent = parentrev |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
114 else: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
115 # suboptimal deltaparent |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
116 deltaparent = min(0, parentrev) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
117 return {'node': rlog.node(r), 'p1': pnode, 'p2': node.nullid, |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
118 'cs': rlog.node(rlog.linkrev(r)), 'flags': rlog.flags(r), |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
119 'deltabase': rlog.node(deltaparent), |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
120 'delta': rlog.revdiff(deltaparent, r)} |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
121 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
122 def linkmap(lnode): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
123 return rlog.rev(lnode) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
124 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
125 dlog = newrevlog(destname, recreate=True) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
126 dlog.addgroup(dummychangegroup(), linkmap, tr) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
127 return dlog |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
128 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
129 def lowlevelcopy(rlog, tr, destname=b'_destrevlog.i'): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
130 '''Like addgroupcopy, but use the low level revlog._addrevision directly. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
131 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
132 It exercises some code paths that are hard to reach easily otherwise. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
133 ''' |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
134 dlog = newrevlog(destname, recreate=True) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
135 for r in rlog: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
136 p1 = rlog.node(r - 1) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
137 p2 = node.nullid |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
138 if r == 0: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
139 text = rlog.revision(r, raw=True) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
140 cachedelta = None |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
141 else: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
142 # deltaparent is more interesting if it has the EXTSTORED flag. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
143 deltaparent = max([0] + [p for p in range(r - 2) if rlog.flags(p)]) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
144 text = None |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
145 cachedelta = (deltaparent, rlog.revdiff(deltaparent, r)) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
146 flags = rlog.flags(r) |
33625
6788e648efcf
test-revlog-raw: close file handles explicitly (issue5644)
Yuya Nishihara <yuya@tcha.org>
parents:
31764
diff
changeset
|
147 ifh = dfh = None |
6788e648efcf
test-revlog-raw: close file handles explicitly (issue5644)
Yuya Nishihara <yuya@tcha.org>
parents:
31764
diff
changeset
|
148 try: |
6788e648efcf
test-revlog-raw: close file handles explicitly (issue5644)
Yuya Nishihara <yuya@tcha.org>
parents:
31764
diff
changeset
|
149 ifh = dlog.opener(dlog.indexfile, 'a+') |
6788e648efcf
test-revlog-raw: close file handles explicitly (issue5644)
Yuya Nishihara <yuya@tcha.org>
parents:
31764
diff
changeset
|
150 if not dlog._inline: |
6788e648efcf
test-revlog-raw: close file handles explicitly (issue5644)
Yuya Nishihara <yuya@tcha.org>
parents:
31764
diff
changeset
|
151 dfh = dlog.opener(dlog.datafile, 'a+') |
6788e648efcf
test-revlog-raw: close file handles explicitly (issue5644)
Yuya Nishihara <yuya@tcha.org>
parents:
31764
diff
changeset
|
152 dlog._addrevision(rlog.node(r), text, tr, r, p1, p2, flags, |
6788e648efcf
test-revlog-raw: close file handles explicitly (issue5644)
Yuya Nishihara <yuya@tcha.org>
parents:
31764
diff
changeset
|
153 cachedelta, ifh, dfh) |
6788e648efcf
test-revlog-raw: close file handles explicitly (issue5644)
Yuya Nishihara <yuya@tcha.org>
parents:
31764
diff
changeset
|
154 finally: |
6788e648efcf
test-revlog-raw: close file handles explicitly (issue5644)
Yuya Nishihara <yuya@tcha.org>
parents:
31764
diff
changeset
|
155 if dfh is not None: |
6788e648efcf
test-revlog-raw: close file handles explicitly (issue5644)
Yuya Nishihara <yuya@tcha.org>
parents:
31764
diff
changeset
|
156 dfh.close() |
6788e648efcf
test-revlog-raw: close file handles explicitly (issue5644)
Yuya Nishihara <yuya@tcha.org>
parents:
31764
diff
changeset
|
157 if ifh is not None: |
6788e648efcf
test-revlog-raw: close file handles explicitly (issue5644)
Yuya Nishihara <yuya@tcha.org>
parents:
31764
diff
changeset
|
158 ifh.close() |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
159 return dlog |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
160 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
161 # Utilities to generate revisions for testing |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
162 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
163 def genbits(n): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
164 '''Given a number n, generate (2 ** (n * 2) + 1) numbers in range(2 ** n). |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
165 i.e. the generated numbers have a width of n bits. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
166 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
167 The combination of two adjacent numbers will cover all possible cases. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
168 That is to say, given any x, y where both x, and y are in range(2 ** n), |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
169 there is an x followed immediately by y in the generated sequence. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
170 ''' |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
171 m = 2 ** n |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
172 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
173 # Gray Code. See https://en.wikipedia.org/wiki/Gray_code |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
174 gray = lambda x: x ^ (x >> 1) |
31763
8a0c47982ade
test-revlog-raw: fix "genbits" implementation
Jun Wu <quark@fb.com>
parents:
31748
diff
changeset
|
175 reversegray = dict((gray(i), i) for i in range(m)) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
176 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
177 # Generate (n * 2) bit gray code, yield lower n bits as X, and look for |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
178 # the next unused gray code where higher n bits equal to X. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
179 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
180 # For gray codes whose higher bits are X, a[X] of them have been used. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
181 a = [0] * m |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
182 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
183 # Iterate from 0. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
184 x = 0 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
185 yield x |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
186 for i in range(m * m): |
31763
8a0c47982ade
test-revlog-raw: fix "genbits" implementation
Jun Wu <quark@fb.com>
parents:
31748
diff
changeset
|
187 x = reversegray[x] |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
188 y = gray(a[x] + x * m) & (m - 1) |
31763
8a0c47982ade
test-revlog-raw: fix "genbits" implementation
Jun Wu <quark@fb.com>
parents:
31748
diff
changeset
|
189 assert a[x] < m |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
190 a[x] += 1 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
191 x = y |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
192 yield x |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
193 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
194 def gentext(rev): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
195 '''Given a revision number, generate dummy text''' |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
196 return b''.join(b'%d\n' % j for j in range(-1, rev % 5)) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
197 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
198 def writecases(rlog, tr): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
199 '''Write some revisions interested to the test. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
200 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
201 The test is interested in 3 properties of a revision: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
202 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
203 - Is it a delta or a full text? (isdelta) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
204 This is to catch some delta application issues. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
205 - Does it have a flag of EXTSTORED? (isext) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
206 This is to catch some flag processor issues. Especially when |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
207 interacted with revlog deltas. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
208 - Is its text empty? (isempty) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
209 This is less important. It is intended to try to catch some careless |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
210 checks like "if text" instead of "if text is None". Note: if flag |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
211 processor is involved, raw text may be not empty. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
212 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
213 Write 65 revisions. So that all combinations of the above flags for |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
214 adjacent revisions are covered. That is to say, |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
215 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
216 len(set( |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
217 (r.delta, r.ext, r.empty, (r+1).delta, (r+1).ext, (r+1).empty) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
218 for r in range(len(rlog) - 1) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
219 )) is 64. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
220 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
221 Where "r.delta", "r.ext", and "r.empty" are booleans matching properties |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
222 mentioned above. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
223 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
224 Return expected [(text, rawtext)]. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
225 ''' |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
226 result = [] |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
227 for i, x in enumerate(genbits(3)): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
228 isdelta, isext, isempty = bool(x & 1), bool(x & 2), bool(x & 4) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
229 if isempty: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
230 text = b'' |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
231 else: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
232 text = gentext(i) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
233 rev = appendrev(rlog, text, tr, isext=isext, isdelta=isdelta) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
234 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
235 # Verify text, rawtext, and rawsize |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
236 if isext: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
237 rawtext = writeprocessor(None, text)[0] |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
238 else: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
239 rawtext = text |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
240 if rlog.rawsize(rev) != len(rawtext): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
241 abort('rev %d: wrong rawsize' % rev) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
242 if rlog.revision(rev, raw=False) != text: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
243 abort('rev %d: wrong text' % rev) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
244 if rlog.revision(rev, raw=True) != rawtext: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
245 abort('rev %d: wrong rawtext' % rev) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
246 result.append((text, rawtext)) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
247 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
248 # Verify flags like isdelta, isext work as expected |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
249 if bool(rlog.deltaparent(rev) > -1) != isdelta: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
250 abort('rev %d: isdelta is ineffective' % rev) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
251 if bool(rlog.flags(rev)) != isext: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
252 abort('rev %d: isext is ineffective' % rev) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
253 return result |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
254 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
255 # Main test and checking |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
256 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
257 def checkrevlog(rlog, expected): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
258 '''Check if revlog has expected contents. expected is [(text, rawtext)]''' |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
259 # Test using different access orders. This could expose some issues |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
260 # depending on revlog caching (see revlog._cache). |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
261 for r0 in range(len(rlog) - 1): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
262 r1 = r0 + 1 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
263 for revorder in [[r0, r1], [r1, r0]]: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
264 for raworder in [[True], [False], [True, False], [False, True]]: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
265 nlog = newrevlog() |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
266 for rev in revorder: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
267 for raw in raworder: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
268 t = nlog.revision(rev, raw=raw) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
269 if t != expected[rev][int(raw)]: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
270 abort('rev %d: corrupted %stext' |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
271 % (rev, raw and 'raw' or '')) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
272 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
273 def maintest(): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
274 expected = rl = None |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
275 with newtransaction() as tr: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
276 rl = newrevlog(recreate=True) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
277 expected = writecases(rl, tr) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
278 checkrevlog(rl, expected) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
279 print('local test passed') |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
280 # Copy via revlog.addgroup |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
281 rl1 = addgroupcopy(rl, tr) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
282 checkrevlog(rl1, expected) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
283 rl2 = addgroupcopy(rl, tr, optimaldelta=False) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
284 checkrevlog(rl2, expected) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
285 print('addgroupcopy test passed') |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
286 # Copy via revlog.clone |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
287 rl3 = newrevlog(name='_destrevlog3.i', recreate=True) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
288 rl.clone(tr, rl3) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
289 checkrevlog(rl3, expected) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
290 print('clone test passed') |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
291 # Copy via low-level revlog._addrevision |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
292 rl4 = lowlevelcopy(rl, tr) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
293 checkrevlog(rl4, expected) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
294 print('lowlevelcopy test passed') |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
295 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
296 try: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
297 maintest() |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
298 except Exception as ex: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
299 abort('crashed: %s' % ex) |