Mercurial > hg
annotate tests/test-revlog-raw.py @ 47565:00ae1fb6c459
cmdutil: fix newandmodified file accounting for --interactive commits
`originalchunks` is a misleading name, because it only contains header objects, which are flattened to selected hunks by the filter function. As such, `chunks not in originalchunks` is always True and misleading, because hunk objects never compare equal to header objects. This change fixes the internal naming and removes the useless parameter from the method.
This change also fixes issue6533, by considering the filtered headers, rather than the hunks, when determining new and modified files. If a file is renamed + edited, and the edited hunks are deselected (but the file is not), the filtered chunks will contain a header for the file (because it's .special()) but but no hunks.
Differential Revision: https://phab.mercurial-scm.org/D10936
author | Daniel Ploch <dploch@google.com> |
---|---|
date | Fri, 02 Jul 2021 11:44:13 -0700 |
parents | 906a7bcaac86 |
children | c514936d92b4 |
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 |
41087
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
5 import collections |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
6 import hashlib |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
7 import sys |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
8 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
9 from mercurial import ( |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
10 encoding, |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
11 revlog, |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
12 transaction, |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
13 vfs, |
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 |
41034
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
16 from mercurial.revlogutils import ( |
47072
4c041c71ec01
revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
17 constants, |
41034
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
18 deltas, |
42732
6d61be152c55
flagutil: move addflagprocessor to the new module (API)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41365
diff
changeset
|
19 flagutil, |
41034
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
20 ) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
21 |
47214
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
22 |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
23 class _NoTransaction(object): |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
24 """transaction like object to update the nodemap outside a transaction""" |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
25 |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
26 def __init__(self): |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
27 self._postclose = {} |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
28 |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
29 def addpostclose(self, callback_id, callback_func): |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
30 self._postclose[callback_id] = callback_func |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
31 |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
32 def registertmp(self, *args, **kwargs): |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
33 pass |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
34 |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
35 def addbackup(self, *args, **kwargs): |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
36 pass |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
37 |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
38 def add(self, *args, **kwargs): |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
39 pass |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
40 |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
41 def addabort(self, *args, **kwargs): |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
42 pass |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
43 |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
44 def _report(self, *args): |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
45 pass |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
46 |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
47 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
48 # TESTTMP is optional. This makes it convenient to run without run-tests.py |
37896
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
49 tvfs = vfs.vfs(encoding.environ.get(b'TESTTMP', b'/tmp')) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
50 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
51 # Enable generaldelta otherwise revlog won't use delta as expected by the test |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
52 tvfs.options = { |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
53 b'generaldelta': True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
54 b'revlogv1': True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
55 b'sparse-revlog': True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
56 } |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
57 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
58 # 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
|
59 # "storedeltachains". |
39232
0a5b20c107a6
repository: remove storedeltachains from ifilestorage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37896
diff
changeset
|
60 revlog.revlog._isgooddeltainfo = lambda self, d, textlen: self._storedeltachains |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
61 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
62 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
63 def abort(msg): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
64 print('abort: %s' % msg) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
65 # 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
|
66 sys.exit() |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
67 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
68 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
69 # Register a revlog processor for flag EXTSTORED. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
70 # |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
71 # 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
|
72 # 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
|
73 # deltas. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
74 _extheader = b'E\n' |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
75 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
76 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
77 def readprocessor(self, rawtext): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
78 # True: the returned text could be used to verify hash |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
79 text = rawtext[len(_extheader) :].replace(b'i', b'1') |
46709
3d740058b467
sidedata: move to new sidedata storage in revlogv2
Raphaël Gomès <rgomes@octobus.net>
parents:
46113
diff
changeset
|
80 return text, True |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
81 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
82 |
46709
3d740058b467
sidedata: move to new sidedata storage in revlogv2
Raphaël Gomès <rgomes@octobus.net>
parents:
46113
diff
changeset
|
83 def writeprocessor(self, text): |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
84 # 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
|
85 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
|
86 return rawtext, False |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
87 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
88 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
89 def rawprocessor(self, rawtext): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
90 # 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
|
91 # can be used to verify hash. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
92 return False |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
93 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
94 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
95 flagutil.addflagprocessor( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
96 revlog.REVIDX_EXTSTORED, (readprocessor, writeprocessor, rawprocessor) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
97 ) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
98 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
99 # Utilities about reading and appending revlog |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
100 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
101 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
102 def newtransaction(): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
103 # A transaction is required to write revlogs |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
104 report = lambda msg: None |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
105 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
|
106 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
107 |
47150
8d3c2f9d4af7
revlog: use a "radix" to address revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47149
diff
changeset
|
108 def newrevlog(name=b'_testrevlog', recreate=False): |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
109 if recreate: |
47150
8d3c2f9d4af7
revlog: use a "radix" to address revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47149
diff
changeset
|
110 tvfs.tryunlink(name + b'.i') |
8d3c2f9d4af7
revlog: use a "radix" to address revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47149
diff
changeset
|
111 target = (constants.KIND_OTHER, b'test') |
8d3c2f9d4af7
revlog: use a "radix" to address revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47149
diff
changeset
|
112 rlog = revlog.revlog(tvfs, target=target, radix=name) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
113 return rlog |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
114 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
115 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
116 def appendrev(rlog, text, tr, isext=False, isdelta=True): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
117 """Append a revision. If isext is True, set the EXTSTORED flag so flag |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
118 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
|
119 True, force the revision to be a delta, otherwise it's full text. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
120 """ |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
121 nextrev = len(rlog) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
122 p1 = rlog.node(nextrev - 1) |
47012
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46711
diff
changeset
|
123 p2 = rlog.nullid |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
124 if isext: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
125 flags = revlog.REVIDX_EXTSTORED |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
126 else: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
127 flags = revlog.REVIDX_DEFAULT_FLAGS |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
128 # Change storedeltachains temporarily, to override revlog's delta decision |
39232
0a5b20c107a6
repository: remove storedeltachains from ifilestorage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37896
diff
changeset
|
129 rlog._storedeltachains = isdelta |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
130 try: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
131 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
|
132 return nextrev |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
133 except Exception as ex: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
134 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
|
135 finally: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
136 # Restore storedeltachains. It is always True, see revlog.__init__ |
39232
0a5b20c107a6
repository: remove storedeltachains from ifilestorage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37896
diff
changeset
|
137 rlog._storedeltachains = True |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
138 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
139 |
47150
8d3c2f9d4af7
revlog: use a "radix" to address revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47149
diff
changeset
|
140 def addgroupcopy(rlog, tr, destname=b'_destrevlog', optimaldelta=True): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
141 """Copy revlog to destname using revlog.addgroup. Return the copied revlog. |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
142 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
143 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
|
144 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
|
145 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
146 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
|
147 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
|
148 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
|
149 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
150 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
|
151 code path, which is not covered by "appendrev" alone. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
152 """ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
153 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
154 class dummychangegroup(object): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
155 @staticmethod |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
156 def deltachunk(pnode): |
47012
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46711
diff
changeset
|
157 pnode = pnode or rlog.nullid |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
158 parentrev = rlog.rev(pnode) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
159 r = parentrev + 1 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
160 if r >= len(rlog): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
161 return {} |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
162 if optimaldelta: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
163 deltaparent = parentrev |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
164 else: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
165 # suboptimal deltaparent |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
166 deltaparent = min(0, parentrev) |
36744
33275ab5e837
revlog: do not use delta for lfs revisions
Jun Wu <quark@fb.com>
parents:
35638
diff
changeset
|
167 if not rlog.candelta(deltaparent, r): |
33275ab5e837
revlog: do not use delta for lfs revisions
Jun Wu <quark@fb.com>
parents:
35638
diff
changeset
|
168 deltaparent = -1 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
169 return { |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
170 b'node': rlog.node(r), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
171 b'p1': pnode, |
47012
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46711
diff
changeset
|
172 b'p2': rlog.nullid, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
173 b'cs': rlog.node(rlog.linkrev(r)), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
174 b'flags': rlog.flags(r), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
175 b'deltabase': rlog.node(deltaparent), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
176 b'delta': rlog.revdiff(deltaparent, r), |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46709
diff
changeset
|
177 b'sidedata': rlog.sidedata(r), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
178 } |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
179 |
34291
1db9abf407c5
revlog: add revmap back to revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34148
diff
changeset
|
180 def deltaiter(self): |
34148
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
33625
diff
changeset
|
181 chain = None |
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
33625
diff
changeset
|
182 for chunkdata in iter(lambda: self.deltachunk(chain), {}): |
37896
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
183 node = chunkdata[b'node'] |
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
184 p1 = chunkdata[b'p1'] |
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
185 p2 = chunkdata[b'p2'] |
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
186 cs = chunkdata[b'cs'] |
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
187 deltabase = chunkdata[b'deltabase'] |
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
188 delta = chunkdata[b'delta'] |
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
189 flags = chunkdata[b'flags'] |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46709
diff
changeset
|
190 sidedata = chunkdata[b'sidedata'] |
34148
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
33625
diff
changeset
|
191 |
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
33625
diff
changeset
|
192 chain = node |
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
33625
diff
changeset
|
193 |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46709
diff
changeset
|
194 yield (node, p1, p2, cs, deltabase, delta, flags, sidedata) |
34148
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
33625
diff
changeset
|
195 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
196 def linkmap(lnode): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
197 return rlog.rev(lnode) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
198 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
199 dlog = newrevlog(destname, recreate=True) |
34291
1db9abf407c5
revlog: add revmap back to revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34148
diff
changeset
|
200 dummydeltas = dummychangegroup().deltaiter() |
1db9abf407c5
revlog: add revmap back to revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34148
diff
changeset
|
201 dlog.addgroup(dummydeltas, linkmap, tr) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
202 return dlog |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
203 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
204 |
47150
8d3c2f9d4af7
revlog: use a "radix" to address revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47149
diff
changeset
|
205 def lowlevelcopy(rlog, tr, destname=b'_destrevlog'): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
206 """Like addgroupcopy, but use the low level revlog._addrevision directly. |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
207 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
208 It exercises some code paths that are hard to reach easily otherwise. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
209 """ |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
210 dlog = newrevlog(destname, recreate=True) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
211 for r in rlog: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
212 p1 = rlog.node(r - 1) |
47012
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46711
diff
changeset
|
213 p2 = rlog.nullid |
36744
33275ab5e837
revlog: do not use delta for lfs revisions
Jun Wu <quark@fb.com>
parents:
35638
diff
changeset
|
214 if r == 0 or (rlog.flags(r) & revlog.REVIDX_EXTSTORED): |
42777
740450677221
rawdata: update callers in test-revlog-raw
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42732
diff
changeset
|
215 text = rlog.rawdata(r) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
216 cachedelta = None |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
217 else: |
36744
33275ab5e837
revlog: do not use delta for lfs revisions
Jun Wu <quark@fb.com>
parents:
35638
diff
changeset
|
218 # deltaparent cannot have EXTSTORED flag. |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
219 deltaparent = max( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
220 [-1] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
221 + [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
222 p |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
223 for p in range(r) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
224 if rlog.flags(p) & revlog.REVIDX_EXTSTORED == 0 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
225 ] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
226 ) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
227 text = None |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
228 cachedelta = (deltaparent, rlog.revdiff(deltaparent, r)) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
229 flags = rlog.flags(r) |
47214
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
230 with dlog._writing(_NoTransaction()): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
231 dlog._addrevision( |
47214
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
232 rlog.node(r), |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
233 text, |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
234 tr, |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
235 r, |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
236 p1, |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
237 p2, |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
238 flags, |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
239 cachedelta, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
240 ) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
241 return dlog |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
242 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
243 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
244 # Utilities to generate revisions for testing |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
245 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
246 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
247 def genbits(n): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
248 """Given a number n, generate (2 ** (n * 2) + 1) numbers in range(2 ** n). |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
249 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
|
250 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
251 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
|
252 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
|
253 there is an x followed immediately by y in the generated sequence. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
254 """ |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
255 m = 2 ** n |
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 # 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
|
258 gray = lambda x: x ^ (x >> 1) |
44452
9d2b2df2c2ba
cleanup: run pyupgrade on our source tree to clean up varying things
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
259 reversegray = {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
|
260 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
261 # 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
|
262 # 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
|
263 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
264 # 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
|
265 a = [0] * m |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
266 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
267 # Iterate from 0. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
268 x = 0 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
269 yield x |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
270 for i in range(m * m): |
31763
8a0c47982ade
test-revlog-raw: fix "genbits" implementation
Jun Wu <quark@fb.com>
parents:
31748
diff
changeset
|
271 x = reversegray[x] |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
272 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
|
273 assert a[x] < m |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
274 a[x] += 1 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
275 x = y |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
276 yield x |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
277 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
278 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
279 def gentext(rev): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
280 '''Given a revision number, generate dummy text''' |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
281 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
|
282 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
283 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
284 def writecases(rlog, tr): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
285 """Write some revisions interested to the test. |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
286 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
287 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
|
288 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
289 - 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
|
290 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
|
291 - 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
|
292 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
|
293 interacted with revlog deltas. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
294 - Is its text empty? (isempty) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
295 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
|
296 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
|
297 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
|
298 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
299 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
|
300 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
|
301 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
302 len(set( |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
303 (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
|
304 for r in range(len(rlog) - 1) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
305 )) is 64. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
306 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
307 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
|
308 mentioned above. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
309 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
310 Return expected [(text, rawtext)]. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
311 """ |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
312 result = [] |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
313 for i, x in enumerate(genbits(3)): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
314 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
|
315 if isempty: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
316 text = b'' |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
317 else: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
318 text = gentext(i) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
319 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
|
320 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
321 # Verify text, rawtext, and rawsize |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
322 if isext: |
46709
3d740058b467
sidedata: move to new sidedata storage in revlogv2
Raphaël Gomès <rgomes@octobus.net>
parents:
46113
diff
changeset
|
323 rawtext = writeprocessor(None, text)[0] |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
324 else: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
325 rawtext = text |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
326 if rlog.rawsize(rev) != len(rawtext): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
327 abort('rev %d: wrong rawsize' % rev) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
328 if rlog.revision(rev, raw=False) != text: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
329 abort('rev %d: wrong text' % rev) |
42777
740450677221
rawdata: update callers in test-revlog-raw
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42732
diff
changeset
|
330 if rlog.rawdata(rev) != rawtext: |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
331 abort('rev %d: wrong rawtext' % rev) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
332 result.append((text, rawtext)) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
333 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
334 # Verify flags like isdelta, isext work as expected |
36744
33275ab5e837
revlog: do not use delta for lfs revisions
Jun Wu <quark@fb.com>
parents:
35638
diff
changeset
|
335 # isdelta can be overridden to False if this or p1 has isext set |
33275ab5e837
revlog: do not use delta for lfs revisions
Jun Wu <quark@fb.com>
parents:
35638
diff
changeset
|
336 if bool(rlog.deltaparent(rev) > -1) and not isdelta: |
33275ab5e837
revlog: do not use delta for lfs revisions
Jun Wu <quark@fb.com>
parents:
35638
diff
changeset
|
337 abort('rev %d: isdelta is unexpected' % rev) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
338 if bool(rlog.flags(rev)) != isext: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
339 abort('rev %d: isext is ineffective' % rev) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
340 return result |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
341 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
342 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
343 # Main test and checking |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
344 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
345 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
346 def checkrevlog(rlog, expected): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
347 '''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
|
348 # 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
|
349 # depending on revlog caching (see revlog._cache). |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
350 for r0 in range(len(rlog) - 1): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
351 r1 = r0 + 1 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
352 for revorder in [[r0, r1], [r1, r0]]: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
353 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
|
354 nlog = newrevlog() |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
355 for rev in revorder: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
356 for raw in raworder: |
42777
740450677221
rawdata: update callers in test-revlog-raw
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42732
diff
changeset
|
357 if raw: |
740450677221
rawdata: update callers in test-revlog-raw
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42732
diff
changeset
|
358 t = nlog.rawdata(rev) |
740450677221
rawdata: update callers in test-revlog-raw
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42732
diff
changeset
|
359 else: |
740450677221
rawdata: update callers in test-revlog-raw
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42732
diff
changeset
|
360 t = nlog.revision(rev) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
361 if t != expected[rev][int(raw)]: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
362 abort( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
363 'rev %d: corrupted %stext' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
364 % (rev, raw and 'raw' or '') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
365 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
366 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
367 |
41034
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
368 slicingdata = [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
369 ([0, 1, 2, 3, 55, 56, 58, 59, 60], [[0, 1], [2], [58], [59, 60]], 10), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
370 ([0, 1, 2, 3, 55, 56, 58, 59, 60], [[0, 1], [2], [58], [59, 60]], 10), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
371 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
372 [-1, 0, 1, 2, 3, 55, 56, 58, 59, 60], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
373 [[-1, 0, 1], [2], [58], [59, 60]], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
374 10, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
375 ), |
41034
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
376 ] |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
377 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
378 |
41034
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
379 def slicingtest(rlog): |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
380 oldmin = rlog._srmingapsize |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
381 try: |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
382 # the test revlog is small, we remove the floor under which we |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
383 # slicing is diregarded. |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
384 rlog._srmingapsize = 0 |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
385 for item in slicingdata: |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
386 chain, expected, target = item |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
387 result = deltas.slicechunk(rlog, chain, targetsize=target) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
388 result = list(result) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
389 if result != expected: |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
390 print('slicing differ:') |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
391 print(' chain: %s' % chain) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
392 print(' target: %s' % target) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
393 print(' expected: %s' % expected) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
394 print(' result: %s' % result) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
395 finally: |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
396 rlog._srmingapsize = oldmin |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
397 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
398 |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
399 def md5sum(s): |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
400 return hashlib.md5(s).digest() |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
401 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
402 |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
403 def _maketext(*coord): |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
404 """create piece of text according to range of integers |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
405 |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
406 The test returned use a md5sum of the integer to make it less |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
407 compressible""" |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
408 pieces = [] |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
409 for start, size in coord: |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
410 num = range(start, start + size) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
411 p = [md5sum(b'%d' % r) for r in num] |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
412 pieces.append(b'\n'.join(p)) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
413 return b'\n'.join(pieces) + b'\n' |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
414 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
415 |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
416 data = [ |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
417 _maketext((0, 120), (456, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
418 _maketext((0, 120), (345, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
419 _maketext((0, 120), (734, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
420 _maketext((0, 120), (734, 60), (923, 45)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
421 _maketext((0, 120), (734, 60), (234, 45)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
422 _maketext((0, 120), (734, 60), (564, 45)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
423 _maketext((0, 120), (734, 60), (361, 45)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
424 _maketext((0, 120), (734, 60), (489, 45)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
425 _maketext((0, 120), (123, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
426 _maketext((0, 120), (145, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
427 _maketext((0, 120), (104, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
428 _maketext((0, 120), (430, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
429 _maketext((0, 120), (430, 60), (923, 45)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
430 _maketext((0, 120), (430, 60), (234, 45)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
431 _maketext((0, 120), (430, 60), (564, 45)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
432 _maketext((0, 120), (430, 60), (361, 45)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
433 _maketext((0, 120), (430, 60), (489, 45)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
434 _maketext((0, 120), (249, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
435 _maketext((0, 120), (832, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
436 _maketext((0, 120), (891, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
437 _maketext((0, 120), (543, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
438 _maketext((0, 120), (120, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
439 _maketext((0, 120), (60, 60), (768, 30)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
440 _maketext((0, 120), (60, 60), (260, 30)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
441 _maketext((0, 120), (60, 60), (450, 30)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
442 _maketext((0, 120), (60, 60), (361, 30)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
443 _maketext((0, 120), (60, 60), (886, 30)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
444 _maketext((0, 120), (60, 60), (116, 30)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
445 _maketext((0, 120), (60, 60), (567, 30), (629, 40)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
446 _maketext((0, 120), (60, 60), (569, 30), (745, 40)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
447 _maketext((0, 120), (60, 60), (777, 30), (700, 40)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
448 _maketext((0, 120), (60, 60), (618, 30), (398, 40), (158, 10)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
449 ] |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
450 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
451 |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
452 def makesnapshot(tr): |
47150
8d3c2f9d4af7
revlog: use a "radix" to address revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47149
diff
changeset
|
453 rl = newrevlog(name=b'_snaprevlog3', recreate=True) |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
454 for i in data: |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
455 appendrev(rl, i, tr) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
456 return rl |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
457 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
458 |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
459 snapshots = [-1, 0, 6, 8, 11, 17, 19, 21, 25, 30] |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
460 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
461 |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
462 def issnapshottest(rlog): |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
463 result = [] |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
464 if rlog.issnapshot(-1): |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
465 result.append(-1) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
466 for rev in rlog: |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
467 if rlog.issnapshot(rev): |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
468 result.append(rev) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
469 if snapshots != result: |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
470 print('snapshot differ:') |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
471 print(' expected: %s' % snapshots) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
472 print(' got: %s' % result) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
473 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
474 |
41087
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
475 snapshotmapall = {0: [6, 8, 11, 17, 19, 25], 8: [21], -1: [0, 30]} |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
476 snapshotmap15 = {0: [17, 19, 25], 8: [21], -1: [30]} |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
477 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
478 |
41087
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
479 def findsnapshottest(rlog): |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
480 resultall = collections.defaultdict(list) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
481 deltas._findsnapshots(rlog, resultall, 0) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
482 resultall = dict(resultall.items()) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
483 if resultall != snapshotmapall: |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
484 print('snapshot map differ:') |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
485 print(' expected: %s' % snapshotmapall) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
486 print(' got: %s' % resultall) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
487 result15 = collections.defaultdict(list) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
488 deltas._findsnapshots(rlog, result15, 15) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
489 result15 = dict(result15.items()) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
490 if result15 != snapshotmap15: |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
491 print('snapshot map differ:') |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
492 print(' expected: %s' % snapshotmap15) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
493 print(' got: %s' % result15) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
494 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
495 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
496 def maintest(): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
497 with newtransaction() as tr: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
498 rl = newrevlog(recreate=True) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
499 expected = writecases(rl, tr) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
500 checkrevlog(rl, expected) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
501 print('local test passed') |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
502 # Copy via revlog.addgroup |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
503 rl1 = addgroupcopy(rl, tr) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
504 checkrevlog(rl1, expected) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
505 rl2 = addgroupcopy(rl, tr, optimaldelta=False) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
506 checkrevlog(rl2, expected) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
507 print('addgroupcopy test passed') |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
508 # Copy via revlog.clone |
47150
8d3c2f9d4af7
revlog: use a "radix" to address revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47149
diff
changeset
|
509 rl3 = newrevlog(name=b'_destrevlog3', recreate=True) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
510 rl.clone(tr, rl3) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
511 checkrevlog(rl3, expected) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
512 print('clone test passed') |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
513 # Copy via low-level revlog._addrevision |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
514 rl4 = lowlevelcopy(rl, tr) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
515 checkrevlog(rl4, expected) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
516 print('lowlevelcopy test passed') |
41034
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
517 slicingtest(rl) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
518 print('slicing test passed') |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
519 rl5 = makesnapshot(tr) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
520 issnapshottest(rl5) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
521 print('issnapshot test passed') |
41087
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
522 findsnapshottest(rl5) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
523 print('findsnapshot test passed') |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
524 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
525 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
526 try: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
527 maintest() |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
528 except Exception as ex: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
529 abort('crashed: %s' % ex) |