comparison tests/test-fastannotate-revmap.py @ 43076:2372284d9457

formatting: blacken the codebase This is using my patch to black (https://github.com/psf/black/pull/826) so we don't un-wrap collection literals. Done with: hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**"' | xargs black -S # skip-blame mass-reformatting only # no-check-commit reformats foo_bar functions Differential Revision: https://phab.mercurial-scm.org/D6971
author Augie Fackler <augie@google.com>
date Sun, 06 Oct 2019 09:45:02 -0400
parents 0fea133780bf
children 9d2b2df2c2ba
comparison
equal deleted inserted replaced
43075:57875cf423c9 43076:2372284d9457
11 from hgext.fastannotate import error, revmap 11 from hgext.fastannotate import error, revmap
12 12
13 if pycompat.ispy3: 13 if pycompat.ispy3:
14 xrange = range 14 xrange = range
15 15
16
16 def genhsh(i): 17 def genhsh(i):
17 return pycompat.bytechr(i) + b'\0' * 19 18 return pycompat.bytechr(i) + b'\0' * 19
19
18 20
19 def gettemppath(): 21 def gettemppath():
20 fd, path = tempfile.mkstemp() 22 fd, path = tempfile.mkstemp()
21 os.close(fd) 23 os.close(fd)
22 os.unlink(path) 24 os.unlink(path)
23 return path 25 return path
24 26
27
25 def ensure(condition): 28 def ensure(condition):
26 if not condition: 29 if not condition:
27 raise RuntimeError('Unexpected') 30 raise RuntimeError('Unexpected')
31
28 32
29 def testbasicreadwrite(): 33 def testbasicreadwrite():
30 path = gettemppath() 34 path = gettemppath()
31 35
32 rm = revmap.revmap(path) 36 rm = revmap.revmap(path)
34 for i in xrange(5): 38 for i in xrange(5):
35 ensure(rm.rev2hsh(i) is None) 39 ensure(rm.rev2hsh(i) is None)
36 ensure(rm.hsh2rev(b'\0' * 20) is None) 40 ensure(rm.hsh2rev(b'\0' * 20) is None)
37 41
38 paths = [ 42 paths = [
39 b'', b'a', None, b'b', b'b', b'c', b'c', None, b'a', b'b', b'a', b'a'] 43 b'',
44 b'a',
45 None,
46 b'b',
47 b'b',
48 b'c',
49 b'c',
50 None,
51 b'a',
52 b'b',
53 b'a',
54 b'a',
55 ]
40 for i in xrange(1, 5): 56 for i in xrange(1, 5):
41 ensure(rm.append(genhsh(i), sidebranch=(i & 1), path=paths[i]) == i) 57 ensure(rm.append(genhsh(i), sidebranch=(i & 1), path=paths[i]) == i)
42 58
43 ensure(rm.maxrev == 4) 59 ensure(rm.maxrev == 4)
44 for i in xrange(1, 5): 60 for i in xrange(1, 5):
54 ensure(rm.rev2hsh(i) == genhsh(i)) 70 ensure(rm.rev2hsh(i) == genhsh(i))
55 ensure(bool(rm.rev2flag(i) & revmap.sidebranchflag) == bool(i & 1)) 71 ensure(bool(rm.rev2flag(i) & revmap.sidebranchflag) == bool(i & 1))
56 72
57 # append without calling save() explicitly 73 # append without calling save() explicitly
58 for i in xrange(5, 12): 74 for i in xrange(5, 12):
59 ensure(rm.append(genhsh(i), sidebranch=(i & 1), path=paths[i], 75 ensure(
60 flush=True) == i) 76 rm.append(genhsh(i), sidebranch=(i & 1), path=paths[i], flush=True)
77 == i
78 )
61 79
62 # re-load and verify 80 # re-load and verify
63 rm = revmap.revmap(path) 81 rm = revmap.revmap(path)
64 ensure(rm.maxrev == 11) 82 ensure(rm.maxrev == 11)
65 for i in xrange(1, 12): 83 for i in xrange(1, 12):
83 rm.append(b'\0') 101 rm.append(b'\0')
84 ensure(False) 102 ensure(False)
85 except Exception: 103 except Exception:
86 pass 104 pass
87 105
106
88 def testcorruptformat(): 107 def testcorruptformat():
89 path = gettemppath() 108 path = gettemppath()
90 109
91 # incorrect header 110 # incorrect header
92 with open(path, 'wb') as f: 111 with open(path, 'wb') as f:
125 except error.CorruptedFileError: 144 except error.CorruptedFileError:
126 pass 145 pass
127 146
128 os.unlink(path) 147 os.unlink(path)
129 148
149
130 def testcopyfrom(): 150 def testcopyfrom():
131 path = gettemppath() 151 path = gettemppath()
132 rm = revmap.revmap(path) 152 rm = revmap.revmap(path)
133 for i in xrange(1, 10): 153 for i in xrange(1, 10):
134 ensure(rm.append(genhsh(i), 154 ensure(
135 sidebranch=(i & 1), path=(b'%d' % (i // 3))) == i) 155 rm.append(genhsh(i), sidebranch=(i & 1), path=(b'%d' % (i // 3)))
156 == i
157 )
136 rm.flush() 158 rm.flush()
137 159
138 # copy rm to rm2 160 # copy rm to rm2
139 rm2 = revmap.revmap() 161 rm2 = revmap.revmap()
140 rm2.copyfrom(rm) 162 rm2.copyfrom(rm)
146 ensure(len(set(util.readfile(p) for p in [path, path2])) == 1) 168 ensure(len(set(util.readfile(p) for p in [path, path2])) == 1)
147 169
148 os.unlink(path) 170 os.unlink(path)
149 os.unlink(path2) 171 os.unlink(path2)
150 172
173
151 class fakefctx(object): 174 class fakefctx(object):
152 def __init__(self, node, path=None): 175 def __init__(self, node, path=None):
153 self._node = node 176 self._node = node
154 self._path = path 177 self._path = path
155 178
156 def node(self): 179 def node(self):
157 return self._node 180 return self._node
158 181
159 def path(self): 182 def path(self):
160 return self._path 183 return self._path
184
161 185
162 def testcontains(): 186 def testcontains():
163 path = gettemppath() 187 path = gettemppath()
164 188
165 rm = revmap.revmap(path) 189 rm = revmap.revmap(path)
178 for i in xrange(1, 5): 202 for i in xrange(1, 5):
179 ensure(rm.append(genhsh(i), path=(b'%d' % (i // 2))) == i) 203 ensure(rm.append(genhsh(i), path=(b'%d' % (i // 2))) == i)
180 for i in xrange(1, 5): 204 for i in xrange(1, 5):
181 ensure(fakefctx(genhsh(i), path=(b'%d' % (i // 2))) in rm) 205 ensure(fakefctx(genhsh(i), path=(b'%d' % (i // 2))) in rm)
182 ensure(fakefctx(genhsh(i), path=b'a') not in rm) 206 ensure(fakefctx(genhsh(i), path=b'a') not in rm)
207
183 208
184 def testlastnode(): 209 def testlastnode():
185 path = gettemppath() 210 path = gettemppath()
186 ensure(revmap.getlastnode(path) is None) 211 ensure(revmap.getlastnode(path) is None)
187 rm = revmap.revmap(path) 212 rm = revmap.revmap(path)
191 rm.append(hsh, path=(b'%d' % (i // 2)), flush=True) 216 rm.append(hsh, path=(b'%d' % (i // 2)), flush=True)
192 ensure(revmap.getlastnode(path) == hsh) 217 ensure(revmap.getlastnode(path) == hsh)
193 rm2 = revmap.revmap(path) 218 rm2 = revmap.revmap(path)
194 ensure(rm2.rev2hsh(rm2.maxrev) == hsh) 219 ensure(rm2.rev2hsh(rm2.maxrev) == hsh)
195 220
221
196 testbasicreadwrite() 222 testbasicreadwrite()
197 testcorruptformat() 223 testcorruptformat()
198 testcopyfrom() 224 testcopyfrom()
199 testcontains() 225 testcontains()
200 testlastnode() 226 testlastnode()