equal
deleted
inserted
replaced
18 sha1nodeconstants, |
18 sha1nodeconstants, |
19 ) |
19 ) |
20 from mercurial import ( |
20 from mercurial import ( |
21 policy, |
21 policy, |
22 pycompat, |
22 pycompat, |
|
23 ) |
|
24 from mercurial.revlogutils import ( |
|
25 constants, |
23 ) |
26 ) |
24 |
27 |
25 parsers = policy.importmod('parsers') |
28 parsers = policy.importmod('parsers') |
26 |
29 |
27 # original python implementation |
30 # original python implementation |
47 append = index.append |
50 append = index.append |
48 if inline: |
51 if inline: |
49 cache = (0, data) |
52 cache = (0, data) |
50 while off <= l: |
53 while off <= l: |
51 e = struct.unpack(indexformatng, data[off : off + s]) |
54 e = struct.unpack(indexformatng, data[off : off + s]) |
52 e = e + (0, 0) |
55 e = e + (0, 0, constants.COMP_MODE_INLINE) |
53 nodemap[e[7]] = n |
56 nodemap[e[7]] = n |
54 append(e) |
57 append(e) |
55 n += 1 |
58 n += 1 |
56 if e[1] < 0: |
59 if e[1] < 0: |
57 break |
60 break |
58 off += e[1] + s |
61 off += e[1] + s |
59 else: |
62 else: |
60 while off <= l: |
63 while off <= l: |
61 e = struct.unpack(indexformatng, data[off : off + s]) |
64 e = struct.unpack(indexformatng, data[off : off + s]) |
62 e = e + (0, 0) |
65 e = e + (0, 0, constants.COMP_MODE_INLINE) |
63 nodemap[e[7]] = n |
66 nodemap[e[7]] = n |
64 append(e) |
67 append(e) |
65 n += 1 |
68 n += 1 |
66 off += s |
69 off += s |
67 |
70 |
240 except TypeError: |
243 except TypeError: |
241 # pure version doesn't support this |
244 # pure version doesn't support this |
242 break |
245 break |
243 |
246 |
244 def testminusone(self): |
247 def testminusone(self): |
245 want = (0, 0, 0, -1, -1, -1, -1, sha1nodeconstants.nullid, 0, 0) |
248 want = ( |
|
249 0, |
|
250 0, |
|
251 0, |
|
252 -1, |
|
253 -1, |
|
254 -1, |
|
255 -1, |
|
256 sha1nodeconstants.nullid, |
|
257 0, |
|
258 0, |
|
259 constants.COMP_MODE_INLINE, |
|
260 ) |
246 index, junk = parsers.parse_index2(data_inlined, True) |
261 index, junk = parsers.parse_index2(data_inlined, True) |
247 got = index[-1] |
262 got = index[-1] |
248 self.assertEqual(want, got) # inline data |
263 self.assertEqual(want, got) # inline data |
249 |
264 |
250 index, junk = parsers.parse_index2(data_non_inlined, False) |
265 index, junk = parsers.parse_index2(data_non_inlined, False) |
262 |
277 |
263 def appendrev(p1, p2=nullrev): |
278 def appendrev(p1, p2=nullrev): |
264 # node won't matter for this test, let's just make sure |
279 # node won't matter for this test, let's just make sure |
265 # they don't collide. Other data don't matter either. |
280 # they don't collide. Other data don't matter either. |
266 node = hexrev(p1) + hexrev(p2) + b'.' * 12 |
281 node = hexrev(p1) + hexrev(p2) + b'.' * 12 |
267 index.append((0, 0, 12, 1, 34, p1, p2, node, 0, 0)) |
282 e = ( |
|
283 0, |
|
284 0, |
|
285 12, |
|
286 1, |
|
287 34, |
|
288 p1, |
|
289 p2, |
|
290 node, |
|
291 0, |
|
292 0, |
|
293 constants.COMP_MODE_INLINE, |
|
294 ) |
|
295 index.append(e) |
268 |
296 |
269 appendrev(4) |
297 appendrev(4) |
270 appendrev(5) |
298 appendrev(5) |
271 appendrev(6) |
299 appendrev(6) |
272 self.assertEqual(len(index), 7) |
300 self.assertEqual(len(index), 7) |