Mercurial > public > mercurial-scm > hg-stable
annotate tests/test-parseindex2.py @ 47157:47ffc754989a
revlog: always "append" full size tuple
Same reasoning as the previous patch.
Differential Revision: https://phab.mercurial-scm.org/D10569
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 03 May 2021 12:21:25 +0200 |
parents | 4292bed8da7c |
children | 130c9f7ed914 |
rev | line source |
---|---|
20742
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
1 """This unit test primarily tests parsers.parse_index2(). |
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
2 |
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
3 It also checks certain aspects of the parsers module as a whole. |
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
4 """ |
20166
7eda5bb9ec8f
parsers: clarify documentation of test-parseindex2.py
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20159
diff
changeset
|
5 |
28754
7e5744e8334c
py3: use print_function in test-parseindex2.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28753
diff
changeset
|
6 from __future__ import absolute_import, print_function |
28841
e155b8d5e3b7
tests: move stdlib imports before mercurial modules in test-parseindex2
Yuya Nishihara <yuya@tcha.org>
parents:
28754
diff
changeset
|
7 |
45848
e7a4c018b563
tests: use python from environment in test-parseindex2.py
Martin von Zweigbergk <martinvonz@google.com>
parents:
43952
diff
changeset
|
8 import os |
28841
e155b8d5e3b7
tests: move stdlib imports before mercurial modules in test-parseindex2
Yuya Nishihara <yuya@tcha.org>
parents:
28754
diff
changeset
|
9 import struct |
e155b8d5e3b7
tests: move stdlib imports before mercurial modules in test-parseindex2
Yuya Nishihara <yuya@tcha.org>
parents:
28754
diff
changeset
|
10 import subprocess |
e155b8d5e3b7
tests: move stdlib imports before mercurial modules in test-parseindex2
Yuya Nishihara <yuya@tcha.org>
parents:
28754
diff
changeset
|
11 import sys |
39027
01966d45b45e
tests: start moving test-parseindex2.py to a unittest
Augie Fackler <augie@google.com>
parents:
38891
diff
changeset
|
12 import unittest |
28841
e155b8d5e3b7
tests: move stdlib imports before mercurial modules in test-parseindex2
Yuya Nishihara <yuya@tcha.org>
parents:
28754
diff
changeset
|
13 |
28753
0c2295384eea
py3: use absolute_import in test-parseindex2.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
27637
diff
changeset
|
14 from mercurial.node import ( |
46114
59fa3890d40a
node: import symbols explicitly
Joerg Sonnenberger <joerg@bec.de>
parents:
45848
diff
changeset
|
15 bin, |
59fa3890d40a
node: import symbols explicitly
Joerg Sonnenberger <joerg@bec.de>
parents:
45848
diff
changeset
|
16 hex, |
28753
0c2295384eea
py3: use absolute_import in test-parseindex2.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
27637
diff
changeset
|
17 nullrev, |
47055
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46717
diff
changeset
|
18 sha1nodeconstants, |
28753
0c2295384eea
py3: use absolute_import in test-parseindex2.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
27637
diff
changeset
|
19 ) |
29205
a0939666b836
py3: move up symbol imports to enforce import-checker rules
Yuya Nishihara <yuya@tcha.org>
parents:
28841
diff
changeset
|
20 from mercurial import ( |
32411
df448de7cf3b
parsers: switch to policy importer
Yuya Nishihara <yuya@tcha.org>
parents:
29205
diff
changeset
|
21 policy, |
38128
3de58f50afa2
tests: fix test-parseindex2 on Python 3
Augie Fackler <augie@google.com>
parents:
37938
diff
changeset
|
22 pycompat, |
29205
a0939666b836
py3: move up symbol imports to enforce import-checker rules
Yuya Nishihara <yuya@tcha.org>
parents:
28841
diff
changeset
|
23 ) |
7110
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
24 |
43554
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
25 parsers = policy.importmod('parsers') |
32411
df448de7cf3b
parsers: switch to policy importer
Yuya Nishihara <yuya@tcha.org>
parents:
29205
diff
changeset
|
26 |
7110
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
27 # original python implementation |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
28 def gettype(q): |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
29 return int(q & 0xFFFF) |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
30 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
31 |
7110
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
32 def offset_type(offset, type): |
37938
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
33 return int(int(offset) << 16 | type) |
7110
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
34 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
35 |
7110
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
36 indexformatng = ">Qiiiiii20s12x" |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
37 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
38 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
39 def py_parseindex(data, inline): |
7110
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
40 s = 64 |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
41 cache = None |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
42 index = [] |
47055
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46717
diff
changeset
|
43 nodemap = {sha1nodeconstants.nullid: nullrev} |
7110
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
44 n = off = 0 |
13253 | 45 |
7110
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
46 l = len(data) - s |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
47 append = index.append |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
48 if inline: |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
49 cache = (0, data) |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
50 while off <= l: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
51 e = struct.unpack(indexformatng, data[off : off + s]) |
47156
4292bed8da7c
revlog: make the index always return the same tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47055
diff
changeset
|
52 e = e + (0, 0) |
7110
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
53 nodemap[e[7]] = n |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
54 append(e) |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
55 n += 1 |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
56 if e[1] < 0: |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
57 break |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
58 off += e[1] + s |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
59 else: |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
60 while off <= l: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
61 e = struct.unpack(indexformatng, data[off : off + s]) |
47156
4292bed8da7c
revlog: make the index always return the same tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47055
diff
changeset
|
62 e = e + (0, 0) |
7110
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
63 nodemap[e[7]] = n |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
64 append(e) |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
65 n += 1 |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
66 off += s |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
67 |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
68 e = list(index[0]) |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
69 type = gettype(e[0]) |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
70 e[0] = offset_type(0, type) |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
71 index[0] = tuple(e) |
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
72 |
13254
5ef5eb1f3515
revlog: only build the nodemap on demand
Matt Mackall <mpm@selenic.com>
parents:
13253
diff
changeset
|
73 return index, cache |
7110
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
74 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
75 |
37937
b4e42a9bd12e
tests: prefer string concatenation with () instead of \ in parseindex2 tests
Augie Fackler <augie@google.com>
parents:
32411
diff
changeset
|
76 data_inlined = ( |
37938
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
77 b'\x00\x01\x00\x01\x00\x00\x00\x00\x00\x00\x01\x8c' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
78 b'\x00\x00\x04\x07\x00\x00\x00\x00\x00\x00\x15\x15\xff\xff\xff' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
79 b'\xff\xff\xff\xff\xff\xebG\x97\xb7\x1fB\x04\xcf\x13V\x81\tw\x1b' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
80 b'w\xdduR\xda\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
81 b'x\x9c\x9d\x93?O\xc30\x10\xc5\xf7|\x8a\xdb\x9a\xa8m\x06\xd8*\x95' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
82 b'\x81B\xa1\xa2\xa2R\xcb\x86Pd\x9a\x0b5$vd_\x04\xfd\xf6\x9c\xff@' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
83 b'\x11!\x0b\xd9\xec\xf7\xbbw\xe7gG6\xad6\x04\xdaN\xc0\x92\xa0$)' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
84 b'\xb1\x82\xa2\xd1%\x16\xa4\x8b7\xa9\xca\xd4-\xb2Y\x02\xfc\xc9' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
85 b'\xcaS\xf9\xaeX\xed\xb6\xd77Q\x02\x83\xd4\x19\xf5--Y\xea\xe1W' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
86 b'\xab\xed\x10\xceR\x0f_\xdf\xdf\r\xe1,\xf5\xf0\xcb\xf5 \xceR\x0f' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
87 b'_\xdc\x0e\x0e\xc3R\x0f_\xae\x96\x9b!\x9e\xa5\x1e\xbf\xdb,\x06' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
88 b'\xc7q\x9a/\x88\x82\xc3B\xea\xb5\xb4TJ\x93\xb6\x82\x0e\xe16\xe6' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
89 b'KQ\xdb\xaf\xecG\xa3\xd1 \x01\xd3\x0b_^\xe8\xaa\xa0\xae\xad\xd1' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
90 b'&\xbef\x1bz\x08\xb0|\xc9Xz\x06\xf6Z\x91\x90J\xaa\x17\x90\xaa' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
91 b'\xd2\xa6\x11$5C\xcf\xba#\xa0\x03\x02*2\x92-\xfc\xb1\x94\xdf\xe2' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
92 b'\xae\xb8\'m\x8ey0^\x85\xd3\x82\xb4\xf0`:\x9c\x00\x8a\xfd\x01' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
93 b'\xb0\xc6\x86\x8b\xdd\xae\x80\xf3\xa9\x9fd\x16\n\x00R%\x1a\x06' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
94 b'\xe9\xd8b\x98\x1d\xf4\xf3+\x9bf\x01\xd8p\x1b\xf3.\xed\x9f^g\xc3' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
95 b'^\xd9W81T\xdb\xd5\x04sx|\xf2\xeb\xd6`%?x\xed"\x831\xbf\xf3\xdc' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
96 b'b\xeb%gaY\xe1\xad\x9f\xb9f\'1w\xa9\xa5a\x83s\x82J\xb98\xbc4\x8b' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
97 b'\x83\x00\x9f$z\xb8#\xa5\xb1\xdf\x98\xd9\xec\x1b\x89O\xe3Ts\x9a4' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
98 b'\x17m\x8b\xfc\x8f\xa5\x95\x9a\xfc\xfa\xed,\xe5|\xa1\xfe\x15\xb9' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
99 b'\xbc\xb2\x93\x1f\xf2\x95\xff\xdf,\x1a\xc5\xe7\x17*\x93Oz:>\x0e' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
100 ) |
7110
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
101 |
37937
b4e42a9bd12e
tests: prefer string concatenation with () instead of \ in parseindex2 tests
Augie Fackler <augie@google.com>
parents:
32411
diff
changeset
|
102 data_non_inlined = ( |
37938
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
103 b'\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01D\x19' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
104 b'\x00\x07e\x12\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
105 b'\xff\xff\xff\xff\xd1\xf4\xbb\xb0\xbe\xfc\x13\xbd\x8c\xd3\x9d' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
106 b'\x0f\xcd\xd9;\x8c\x07\x8cJ/\x00\x00\x00\x00\x00\x00\x00\x00\x00' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
107 b'\x00\x00\x00\x00\x00\x00\x01D\x19\x00\x00\x00\x00\x00\xdf\x00' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
108 b'\x00\x01q\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\xff' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
109 b'\xff\xff\xff\xc1\x12\xb9\x04\x96\xa4Z1t\x91\xdfsJ\x90\xf0\x9bh' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
110 b'\x07l&\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
111 b'\x00\x01D\xf8\x00\x00\x00\x00\x01\x1b\x00\x00\x01\xb8\x00\x00' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
112 b'\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\xff\xff\xff\xff\x02\n' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
113 b'\x0e\xc6&\xa1\x92\xae6\x0b\x02i\xfe-\xe5\xbao\x05\xd1\xe7\x00' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
114 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01F' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
115 b'\x13\x00\x00\x00\x00\x01\xec\x00\x00\x03\x06\x00\x00\x00\x01' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
116 b'\x00\x00\x00\x03\x00\x00\x00\x02\xff\xff\xff\xff\x12\xcb\xeby1' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
117 b'\xb6\r\x98B\xcb\x07\xbd`\x8f\x92\xd9\xc4\x84\xbdK\x00\x00\x00' |
2f00c6e8f6a1
tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents:
37937
diff
changeset
|
118 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
119 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
120 |
7110
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
121 |
46717
913485776542
revlog: introduce v2 format
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46114
diff
changeset
|
122 def parse_index2(data, inline, revlogv2=False): |
913485776542
revlog: introduce v2 format
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46114
diff
changeset
|
123 index, chunkcache = parsers.parse_index2(data, inline, revlogv2=revlogv2) |
16363
2cdd7e63211b
parsers: incrementally parse the revlog index in C
Bryan O'Sullivan <bryano@fb.com>
parents:
13254
diff
changeset
|
124 return list(index), chunkcache |
7110
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
125 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
126 |
20742
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
127 def importparsers(hexversion): |
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
128 """Import mercurial.parsers with the given sys.hexversion.""" |
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
129 # The file parsers.c inspects sys.hexversion to determine the version |
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
130 # of the currently-running Python interpreter, so we monkey-patch |
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
131 # sys.hexversion to simulate using different versions. |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
132 code = ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
133 "import sys; sys.hexversion=%s; " |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
134 "import mercurial.cext.parsers" % hexversion |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
135 ) |
45848
e7a4c018b563
tests: use python from environment in test-parseindex2.py
Martin von Zweigbergk <martinvonz@google.com>
parents:
43952
diff
changeset
|
136 cmd = "\"%s\" -c \"%s\"" % (os.environ['PYTHON'], code) |
20742
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
137 # We need to do these tests inside a subprocess because parser.c's |
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
138 # version-checking code happens inside the module init function, and |
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
139 # when using reload() to reimport an extension module, "The init function |
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
140 # of extension modules is not called a second time" |
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
141 # (from http://docs.python.org/2/library/functions.html?#reload). |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
142 p = subprocess.Popen( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
143 cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
144 ) |
20742
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
145 return p.communicate() # returns stdout, stderr |
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
146 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
147 |
39082
88b04bd2cbb4
tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents:
39031
diff
changeset
|
148 def hexfailmsg(testnumber, hexversion, stdout, expected): |
20742
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
149 try: |
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
150 hexstring = hex(hexversion) |
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
151 except TypeError: |
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
152 hexstring = None |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
153 return ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
154 "FAILED: version test #%s with Python %s and patched " |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
155 "sys.hexversion %r (%r):\n Expected %s but got:\n-->'%s'\n" |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
156 % ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
157 testnumber, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
158 sys.version_info, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
159 hexversion, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
160 hexstring, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
161 expected, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
162 stdout, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
163 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
164 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
165 |
20742
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
166 |
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
167 def makehex(major, minor, micro): |
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
168 return int("%x%02x%02x00" % (major, minor, micro), 16) |
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
169 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
170 |
39027
01966d45b45e
tests: start moving test-parseindex2.py to a unittest
Augie Fackler <augie@google.com>
parents:
38891
diff
changeset
|
171 class parseindex2tests(unittest.TestCase): |
39082
88b04bd2cbb4
tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents:
39031
diff
changeset
|
172 def assertversionokay(self, testnumber, hexversion): |
88b04bd2cbb4
tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents:
39031
diff
changeset
|
173 stdout, stderr = importparsers(hexversion) |
88b04bd2cbb4
tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents:
39031
diff
changeset
|
174 self.assertFalse( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
175 stdout, hexfailmsg(testnumber, hexversion, stdout, 'no stdout') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
176 ) |
39082
88b04bd2cbb4
tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents:
39031
diff
changeset
|
177 |
88b04bd2cbb4
tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents:
39031
diff
changeset
|
178 def assertversionfail(self, testnumber, hexversion): |
88b04bd2cbb4
tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents:
39031
diff
changeset
|
179 stdout, stderr = importparsers(hexversion) |
88b04bd2cbb4
tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents:
39031
diff
changeset
|
180 # We include versionerrortext to distinguish from other ImportErrors. |
88b04bd2cbb4
tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents:
39031
diff
changeset
|
181 errtext = b"ImportError: %s" % pycompat.sysbytes( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
182 parsers.versionerrortext |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
183 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
184 self.assertIn( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
185 errtext, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
186 stdout, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
187 hexfailmsg( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
188 testnumber, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
189 hexversion, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
190 stdout, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
191 expected="stdout to contain %r" % errtext, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
192 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
193 ) |
39082
88b04bd2cbb4
tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents:
39031
diff
changeset
|
194 |
39028
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
195 def testversiondetection(self): |
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
196 """Check the version-detection logic when importing parsers.""" |
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
197 # Only test the version-detection logic if it is present. |
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
198 try: |
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
199 parsers.versionerrortext |
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
200 except AttributeError: |
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
201 return |
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
202 info = sys.version_info |
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
203 major, minor, micro = info[0], info[1], info[2] |
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
204 # Test same major-minor versions. |
39082
88b04bd2cbb4
tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents:
39031
diff
changeset
|
205 self.assertversionokay(1, makehex(major, minor, micro)) |
88b04bd2cbb4
tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents:
39031
diff
changeset
|
206 self.assertversionokay(2, makehex(major, minor, micro + 1)) |
39028
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
207 # Test different major-minor versions. |
39082
88b04bd2cbb4
tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents:
39031
diff
changeset
|
208 self.assertversionfail(3, makehex(major + 1, minor, micro)) |
88b04bd2cbb4
tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents:
39031
diff
changeset
|
209 self.assertversionfail(4, makehex(major, minor + 1, micro)) |
88b04bd2cbb4
tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents:
39031
diff
changeset
|
210 self.assertversionfail(5, "'foo'") |
20742
3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20166
diff
changeset
|
211 |
39028
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
212 def testbadargs(self): |
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
213 # Check that parse_index2() raises TypeError on bad arguments. |
39029
22216c4607bb
tests: move chunks of test-parseindex2.py to use unittest properly
Augie Fackler <augie@google.com>
parents:
39028
diff
changeset
|
214 with self.assertRaises(TypeError): |
39028
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
215 parse_index2(0, True) |
20109
e57c532c3835
parse_index2: fix crash on bad argument type (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
16620
diff
changeset
|
216 |
39028
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
217 def testparseindexfile(self): |
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
218 # Check parsers.parse_index2() on an index file against the |
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
219 # original Python implementation of parseindex, both with and |
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
220 # without inlined data. |
20166
7eda5bb9ec8f
parsers: clarify documentation of test-parseindex2.py
Chris Jerdonek <chris.jerdonek@gmail.com>
parents:
20159
diff
changeset
|
221 |
39031
ee0720e82257
tests: rename variables in revlog index parse test for clarity
Augie Fackler <augie@google.com>
parents:
39030
diff
changeset
|
222 want = py_parseindex(data_inlined, True) |
ee0720e82257
tests: rename variables in revlog index parse test for clarity
Augie Fackler <augie@google.com>
parents:
39030
diff
changeset
|
223 got = parse_index2(data_inlined, True) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
224 self.assertEqual(want, got) # inline data |
7110
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
225 |
39031
ee0720e82257
tests: rename variables in revlog index parse test for clarity
Augie Fackler <augie@google.com>
parents:
39030
diff
changeset
|
226 want = py_parseindex(data_non_inlined, False) |
ee0720e82257
tests: rename variables in revlog index parse test for clarity
Augie Fackler <augie@google.com>
parents:
39030
diff
changeset
|
227 got = parse_index2(data_non_inlined, False) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
228 self.assertEqual(want, got) # no inline data |
7110
75fdc39b6172
Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff
changeset
|
229 |
39028
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
230 ix = parsers.parse_index2(data_inlined, True)[0] |
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
231 for i, r in enumerate(ix): |
47055
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46717
diff
changeset
|
232 if r[7] == sha1nodeconstants.nullid: |
39028
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
233 i = -1 |
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
234 try: |
39029
22216c4607bb
tests: move chunks of test-parseindex2.py to use unittest properly
Augie Fackler <augie@google.com>
parents:
39028
diff
changeset
|
235 self.assertEqual( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
236 ix[r[7]], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
237 i, |
46114
59fa3890d40a
node: import symbols explicitly
Joerg Sonnenberger <joerg@bec.de>
parents:
45848
diff
changeset
|
238 'Reverse lookup inconsistent for %r' % hex(r[7]), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
239 ) |
39028
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
240 except TypeError: |
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
241 # pure version doesn't support this |
087a755310c3
tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents:
39027
diff
changeset
|
242 break |
16414
e8d37b78acfb
parsers: use base-16 trie for faster node->rev mapping
Bryan O'Sullivan <bryano@fb.com>
parents:
16363
diff
changeset
|
243 |
39104
daedb70fd467
tests: add test coverage for revlogindex[-1] which was previously missing
Augie Fackler <augie@google.com>
parents:
39085
diff
changeset
|
244 def testminusone(self): |
47156
4292bed8da7c
revlog: make the index always return the same tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47055
diff
changeset
|
245 want = (0, 0, 0, -1, -1, -1, -1, sha1nodeconstants.nullid, 0, 0) |
39104
daedb70fd467
tests: add test coverage for revlogindex[-1] which was previously missing
Augie Fackler <augie@google.com>
parents:
39085
diff
changeset
|
246 index, junk = parsers.parse_index2(data_inlined, True) |
daedb70fd467
tests: add test coverage for revlogindex[-1] which was previously missing
Augie Fackler <augie@google.com>
parents:
39085
diff
changeset
|
247 got = index[-1] |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
248 self.assertEqual(want, got) # inline data |
39104
daedb70fd467
tests: add test coverage for revlogindex[-1] which was previously missing
Augie Fackler <augie@google.com>
parents:
39085
diff
changeset
|
249 |
daedb70fd467
tests: add test coverage for revlogindex[-1] which was previously missing
Augie Fackler <augie@google.com>
parents:
39085
diff
changeset
|
250 index, junk = parsers.parse_index2(data_non_inlined, False) |
daedb70fd467
tests: add test coverage for revlogindex[-1] which was previously missing
Augie Fackler <augie@google.com>
parents:
39085
diff
changeset
|
251 got = index[-1] |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
252 self.assertEqual(want, got) # no inline data |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
253 |
43865
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
254 def testdelitemwithoutnodetree(self): |
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
255 index, _junk = parsers.parse_index2(data_non_inlined, False) |
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
256 |
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
257 def hexrev(rev): |
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
258 if rev == nullrev: |
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
259 return b'\xff\xff\xff\xff' |
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
260 else: |
46114
59fa3890d40a
node: import symbols explicitly
Joerg Sonnenberger <joerg@bec.de>
parents:
45848
diff
changeset
|
261 return bin('%08x' % rev) |
43865
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
262 |
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
263 def appendrev(p1, p2=nullrev): |
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
264 # node won't matter for this test, let's just make sure |
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
265 # they don't collide. Other data don't matter either. |
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
266 node = hexrev(p1) + hexrev(p2) + b'.' * 12 |
47157
47ffc754989a
revlog: always "append" full size tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47156
diff
changeset
|
267 index.append((0, 0, 12, 1, 34, p1, p2, node, 0, 0)) |
43865
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
268 |
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
269 appendrev(4) |
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
270 appendrev(5) |
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
271 appendrev(6) |
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
272 self.assertEqual(len(index), 7) |
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
273 |
43952
ac627ed8a911
tests-pure: fixing test-parseindex2
Georges Racinet <georges.racinet@octobus.net>
parents:
43865
diff
changeset
|
274 del index[1:-1] |
43865
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
275 |
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
276 # assertions that failed before correction |
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
277 self.assertEqual(len(index), 1) # was 4 |
43952
ac627ed8a911
tests-pure: fixing test-parseindex2
Georges Racinet <georges.racinet@octobus.net>
parents:
43865
diff
changeset
|
278 headrevs = getattr(index, 'headrevs', None) |
ac627ed8a911
tests-pure: fixing test-parseindex2
Georges Racinet <georges.racinet@octobus.net>
parents:
43865
diff
changeset
|
279 if headrevs is not None: # not implemented in pure |
ac627ed8a911
tests-pure: fixing test-parseindex2
Georges Racinet <georges.racinet@octobus.net>
parents:
43865
diff
changeset
|
280 self.assertEqual(index.headrevs(), [0]) # gave ValueError |
43865
49fa0b31ee1d
cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents:
43554
diff
changeset
|
281 |
39104
daedb70fd467
tests: add test coverage for revlogindex[-1] which was previously missing
Augie Fackler <augie@google.com>
parents:
39085
diff
changeset
|
282 |
39027
01966d45b45e
tests: start moving test-parseindex2.py to a unittest
Augie Fackler <augie@google.com>
parents:
38891
diff
changeset
|
283 if __name__ == '__main__': |
01966d45b45e
tests: start moving test-parseindex2.py to a unittest
Augie Fackler <augie@google.com>
parents:
38891
diff
changeset
|
284 import silenttestrunner |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
39104
diff
changeset
|
285 |
39027
01966d45b45e
tests: start moving test-parseindex2.py to a unittest
Augie Fackler <augie@google.com>
parents:
38891
diff
changeset
|
286 silenttestrunner.main(__name__) |