Mercurial > hg
annotate tests/flagprocessorext.py @ 44011:c627f1b2f3c3
rust-index: handle `MixedIndex` in `pyindex_to_graph`
On the long run we will want to implement the Graph trait directly in Rust, but
for now we take the path with the least amount of change to focus on the coming
persistent NodeMap code.
We test this new code through with the lazy ancestors code.
Differential Revision: https://phab.mercurial-scm.org/D7657
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 12 Dec 2019 18:11:44 +0100 |
parents | 2372284d9457 |
children | 74271829ddc0 |
rev | line source |
---|---|
30745 | 1 # coding=UTF-8 |
2 | |
3 from __future__ import absolute_import | |
4 | |
5 import base64 | |
6 import zlib | |
7 | |
8 from mercurial import ( | |
9 changegroup, | |
31832
77f746e5383a
test-flagprocessor: use changegroup3 in bundle2
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
10 exchange, |
30745 | 11 extensions, |
12 revlog, | |
13 util, | |
14 ) | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
15 from mercurial.revlogutils import flagutil |
30745 | 16 |
17 # Test only: These flags are defined here only in the context of testing the | |
18 # behavior of the flag processor. The canonical way to add flags is to get in | |
19 # touch with the community and make them known in revlog. | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
20 REVIDX_NOOP = 1 << 3 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
21 REVIDX_BASE64 = 1 << 2 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
22 REVIDX_GZIP = 1 << 1 |
30745 | 23 REVIDX_FAIL = 1 |
24 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
25 |
30745 | 26 def validatehash(self, text): |
27 return True | |
28 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
29 |
30745 | 30 def bypass(self, text): |
31 return False | |
32 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
33 |
42988
f4caf910669e
flagprocessors: writetransform function take side data as parameter (API)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42985
diff
changeset
|
34 def noopdonothing(self, text, sidedata): |
30745 | 35 return (text, True) |
36 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
37 |
42985
bd5858c28bbe
flagprocessors: have the read transform function return side data (API)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42732
diff
changeset
|
38 def noopdonothingread(self, text): |
bd5858c28bbe
flagprocessors: have the read transform function return side data (API)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42732
diff
changeset
|
39 return (text, True, {}) |
bd5858c28bbe
flagprocessors: have the read transform function return side data (API)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42732
diff
changeset
|
40 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
41 |
42988
f4caf910669e
flagprocessors: writetransform function take side data as parameter (API)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42985
diff
changeset
|
42 def b64encode(self, text, sidedata): |
30745 | 43 return (base64.b64encode(text), False) |
44 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
45 |
30745 | 46 def b64decode(self, text): |
42985
bd5858c28bbe
flagprocessors: have the read transform function return side data (API)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42732
diff
changeset
|
47 return (base64.b64decode(text), True, {}) |
30745 | 48 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
49 |
42988
f4caf910669e
flagprocessors: writetransform function take side data as parameter (API)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42985
diff
changeset
|
50 def gzipcompress(self, text, sidedata): |
30745 | 51 return (zlib.compress(text), False) |
52 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
53 |
30745 | 54 def gzipdecompress(self, text): |
42985
bd5858c28bbe
flagprocessors: have the read transform function return side data (API)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42732
diff
changeset
|
55 return (zlib.decompress(text), True, {}) |
30745 | 56 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
57 |
30745 | 58 def supportedoutgoingversions(orig, repo): |
59 versions = orig(repo) | |
36114
83246d6920f2
py3: use b'' for changegroup version literals
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35570
diff
changeset
|
60 versions.discard(b'01') |
83246d6920f2
py3: use b'' for changegroup version literals
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35570
diff
changeset
|
61 versions.discard(b'02') |
83246d6920f2
py3: use b'' for changegroup version literals
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35570
diff
changeset
|
62 versions.add(b'03') |
30745 | 63 return versions |
64 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
65 |
30745 | 66 def allsupportedversions(orig, ui): |
67 versions = orig(ui) | |
36114
83246d6920f2
py3: use b'' for changegroup version literals
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35570
diff
changeset
|
68 versions.add(b'03') |
30745 | 69 return versions |
70 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
71 |
37436
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
72 def makewrappedfile(obj): |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
73 class wrappedfile(obj.__class__): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
74 def addrevision( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
75 self, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
76 text, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
77 transaction, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
78 link, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
79 p1, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
80 p2, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
81 cachedelta=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
82 node=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
83 flags=flagutil.REVIDX_DEFAULT_FLAGS, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
84 ): |
37436
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
85 if b'[NOOP]' in text: |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
86 flags |= REVIDX_NOOP |
30745 | 87 |
37436
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
88 if b'[BASE64]' in text: |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
89 flags |= REVIDX_BASE64 |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
90 |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
91 if b'[GZIP]' in text: |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
92 flags |= REVIDX_GZIP |
30745 | 93 |
37436
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
94 # This addrevision wrapper is meant to add a flag we will not have |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
95 # transforms registered for, ensuring we handle this error case. |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
96 if b'[FAIL]' in text: |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
97 flags |= REVIDX_FAIL |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
98 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
99 return super(wrappedfile, self).addrevision( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
100 text, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
101 transaction, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
102 link, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
103 p1, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
104 p2, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
105 cachedelta=cachedelta, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
106 node=node, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
107 flags=flags, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
108 ) |
30745 | 109 |
37436
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
110 obj.__class__ = wrappedfile |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
111 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
112 |
37436
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
113 def reposetup(ui, repo): |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
114 class wrappingflagprocessorrepo(repo.__class__): |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
115 def file(self, f): |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
116 orig = super(wrappingflagprocessorrepo, self).file(f) |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
117 makewrappedfile(orig) |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
118 return orig |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
119 |
9d4f09bfe3ec
simplestore: correctly implement flag processors
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37165
diff
changeset
|
120 repo.__class__ = wrappingflagprocessorrepo |
30745 | 121 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
122 |
30745 | 123 def extsetup(ui): |
124 # Enable changegroup3 for flags to be sent over the wire | |
125 wrapfunction = extensions.wrapfunction | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
126 wrapfunction( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
127 changegroup, 'supportedoutgoingversions', supportedoutgoingversions |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
128 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
129 wrapfunction(changegroup, 'allsupportedversions', allsupportedversions) |
30745 | 130 |
131 # Teach revlog about our test flags | |
132 flags = [REVIDX_NOOP, REVIDX_BASE64, REVIDX_GZIP, REVIDX_FAIL] | |
42730
92ac6b1697a7
flagutil: move REVIDX_KNOWN_FLAGS source of truth in flagutil (API)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41413
diff
changeset
|
133 flagutil.REVIDX_KNOWN_FLAGS |= util.bitsfrom(flags) |
30745 | 134 revlog.REVIDX_FLAGS_ORDER.extend(flags) |
135 | |
31832
77f746e5383a
test-flagprocessor: use changegroup3 in bundle2
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
136 # Teach exchange to use changegroup 3 |
37165
6c7a6b04b274
bundlespec: move computing the bundle contentops in parsebundlespec
Boris Feld <boris.feld@octobus.net>
parents:
36114
diff
changeset
|
137 for k in exchange._bundlespeccontentopts.keys(): |
41413
fad627d2047c
tests: add b'' prefixes to flagprocessorext.py
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37436
diff
changeset
|
138 exchange._bundlespeccontentopts[k][b"cg.version"] = b"03" |
31832
77f746e5383a
test-flagprocessor: use changegroup3 in bundle2
Jun Wu <quark@fb.com>
parents:
30745
diff
changeset
|
139 |
30745 | 140 # Register flag processors for each extension |
42732
6d61be152c55
flagutil: move addflagprocessor to the new module (API)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42730
diff
changeset
|
141 flagutil.addflagprocessor( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
142 REVIDX_NOOP, (noopdonothingread, noopdonothing, validatehash,) |
30745 | 143 ) |
42732
6d61be152c55
flagutil: move addflagprocessor to the new module (API)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42730
diff
changeset
|
144 flagutil.addflagprocessor( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
145 REVIDX_BASE64, (b64decode, b64encode, bypass,), |
30745 | 146 ) |
42732
6d61be152c55
flagutil: move addflagprocessor to the new module (API)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42730
diff
changeset
|
147 flagutil.addflagprocessor( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
148 REVIDX_GZIP, (gzipdecompress, gzipcompress, bypass) |
30745 | 149 ) |