annotate tests/test-parseindex2.py @ 47249:130c9f7ed914

revlog: add a "data compression mode" entry in the index tuple That will make it possible to keep track of compression information in the revlog index, opening the way to more efficient revision restoration (in native code, but the python usage is already defeating performance work). We start with adding a new entry to the index tuple, using a value matching the current behavior. We will introduce storage and other value in later changesets. Differential Revision: https://phab.mercurial-scm.org/D10646
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 03 May 2021 18:19:16 +0200
parents 47ffc754989a
children 2b69555e4875
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
45829
e7a4c018b563 tests: use python from environment in test-parseindex2.py
Martin von Zweigbergk <martinvonz@google.com>
parents: 43946
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
38989
01966d45b45e tests: start moving test-parseindex2.py to a unittest
Augie Fackler <augie@google.com>
parents: 38852
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 (
46113
59fa3890d40a node: import symbols explicitly
Joerg Sonnenberger <joerg@bec.de>
parents: 45829
diff changeset
15 bin,
59fa3890d40a node: import symbols explicitly
Joerg Sonnenberger <joerg@bec.de>
parents: 45829
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,
47012
d55b71393907 node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents: 46704
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 (
32372
df448de7cf3b parsers: switch to policy importer
Yuya Nishihara <yuya@tcha.org>
parents: 29205
diff changeset
21 policy,
38095
3de58f50afa2 tests: fix test-parseindex2 on Python 3
Augie Fackler <augie@google.com>
parents: 37894
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 )
47249
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
24 from mercurial.revlogutils import (
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
25 constants,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
26 )
7110
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
27
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
28 parsers = policy.importmod('parsers')
32372
df448de7cf3b parsers: switch to policy importer
Yuya Nishihara <yuya@tcha.org>
parents: 29205
diff changeset
29
7110
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
30 # original python implementation
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
31 def gettype(q):
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
32 return int(q & 0xFFFF)
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
33
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
34
7110
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
35 def offset_type(offset, type):
37894
2f00c6e8f6a1 tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents: 37893
diff changeset
36 return int(int(offset) << 16 | type)
7110
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: 39067
diff changeset
38
7110
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
39 indexformatng = ">Qiiiiii20s12x"
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
40
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
41
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
42 def py_parseindex(data, inline):
7110
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
43 s = 64
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
44 cache = None
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
45 index = []
47012
d55b71393907 node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents: 46704
diff changeset
46 nodemap = {sha1nodeconstants.nullid: nullrev}
7110
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
47 n = off = 0
13253
61c9bc3da402 revlog: remove lazy index
Matt Mackall <mpm@selenic.com>
parents: 8117
diff changeset
48
7110
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
49 l = len(data) - s
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
50 append = index.append
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
51 if inline:
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
52 cache = (0, data)
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
53 while off <= l:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
54 e = struct.unpack(indexformatng, data[off : off + s])
47249
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
55 e = e + (0, 0, constants.COMP_MODE_INLINE)
7110
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
56 nodemap[e[7]] = n
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
57 append(e)
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
58 n += 1
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
59 if e[1] < 0:
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
60 break
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
61 off += e[1] + s
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
62 else:
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
63 while off <= l:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
64 e = struct.unpack(indexformatng, data[off : off + s])
47249
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
65 e = e + (0, 0, constants.COMP_MODE_INLINE)
7110
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
66 nodemap[e[7]] = n
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
67 append(e)
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
68 n += 1
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
69 off += s
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
70
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
71 e = list(index[0])
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
72 type = gettype(e[0])
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
73 e[0] = offset_type(0, type)
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
74 index[0] = tuple(e)
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
75
13254
5ef5eb1f3515 revlog: only build the nodemap on demand
Matt Mackall <mpm@selenic.com>
parents: 13253
diff changeset
76 return index, cache
7110
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
77
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
78
37893
b4e42a9bd12e tests: prefer string concatenation with () instead of \ in parseindex2 tests
Augie Fackler <augie@google.com>
parents: 32372
diff changeset
79 data_inlined = (
37894
2f00c6e8f6a1 tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents: 37893
diff changeset
80 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: 37893
diff changeset
81 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: 37893
diff changeset
82 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: 37893
diff changeset
83 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: 37893
diff changeset
84 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: 37893
diff changeset
85 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: 37893
diff changeset
86 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: 37893
diff changeset
87 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: 37893
diff changeset
88 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: 37893
diff changeset
89 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: 37893
diff changeset
90 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: 37893
diff changeset
91 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: 37893
diff changeset
92 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: 37893
diff changeset
93 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: 37893
diff changeset
94 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: 37893
diff changeset
95 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: 37893
diff changeset
96 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: 37893
diff changeset
97 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: 37893
diff changeset
98 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: 37893
diff changeset
99 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: 37893
diff changeset
100 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: 37893
diff changeset
101 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: 37893
diff changeset
102 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: 39067
diff changeset
103 )
7110
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
104
37893
b4e42a9bd12e tests: prefer string concatenation with () instead of \ in parseindex2 tests
Augie Fackler <augie@google.com>
parents: 32372
diff changeset
105 data_non_inlined = (
37894
2f00c6e8f6a1 tests: port test-parseindex2.py to Python 3
Augie Fackler <augie@google.com>
parents: 37893
diff changeset
106 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: 37893
diff changeset
107 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: 37893
diff changeset
108 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: 37893
diff changeset
109 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: 37893
diff changeset
110 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: 37893
diff changeset
111 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: 37893
diff changeset
112 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: 37893
diff changeset
113 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: 37893
diff changeset
114 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: 37893
diff changeset
115 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: 37893
diff changeset
116 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: 37893
diff changeset
117 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: 37893
diff changeset
118 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: 37893
diff changeset
119 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: 37893
diff changeset
120 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: 37893
diff changeset
121 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
122 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
123
7110
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
124
46704
913485776542 revlog: introduce v2 format
Raphaël Gomès <rgomes@octobus.net>
parents: 46113
diff changeset
125 def parse_index2(data, inline, revlogv2=False):
913485776542 revlog: introduce v2 format
Raphaël Gomès <rgomes@octobus.net>
parents: 46113
diff changeset
126 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
127 return list(index), chunkcache
7110
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
128
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
129
20742
3681de20b0a7 parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents: 20166
diff changeset
130 def importparsers(hexversion):
3681de20b0a7 parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents: 20166
diff changeset
131 """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
132 # 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
133 # 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
134 # sys.hexversion to simulate using different versions.
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
135 code = (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
136 "import sys; sys.hexversion=%s; "
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
137 "import mercurial.cext.parsers" % hexversion
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
138 )
45829
e7a4c018b563 tests: use python from environment in test-parseindex2.py
Martin von Zweigbergk <martinvonz@google.com>
parents: 43946
diff changeset
139 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
140 # 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
141 # 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
142 # 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
143 # 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
144 # (from http://docs.python.org/2/library/functions.html?#reload).
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
145 p = subprocess.Popen(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
146 cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
147 )
20742
3681de20b0a7 parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents: 20166
diff changeset
148 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
149
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
150
39045
88b04bd2cbb4 tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents: 38993
diff changeset
151 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
152 try:
3681de20b0a7 parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents: 20166
diff changeset
153 hexstring = hex(hexversion)
3681de20b0a7 parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents: 20166
diff changeset
154 except TypeError:
3681de20b0a7 parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents: 20166
diff changeset
155 hexstring = None
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
156 return (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
157 "FAILED: version test #%s with Python %s and patched "
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
158 "sys.hexversion %r (%r):\n Expected %s but got:\n-->'%s'\n"
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
159 % (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
160 testnumber,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
161 sys.version_info,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
162 hexversion,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
163 hexstring,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
164 expected,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
165 stdout,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
166 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
167 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
168
20742
3681de20b0a7 parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents: 20166
diff changeset
169
3681de20b0a7 parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com>
parents: 20166
diff changeset
170 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
171 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
172
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
173
38989
01966d45b45e tests: start moving test-parseindex2.py to a unittest
Augie Fackler <augie@google.com>
parents: 38852
diff changeset
174 class parseindex2tests(unittest.TestCase):
39045
88b04bd2cbb4 tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents: 38993
diff changeset
175 def assertversionokay(self, testnumber, hexversion):
88b04bd2cbb4 tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents: 38993
diff changeset
176 stdout, stderr = importparsers(hexversion)
88b04bd2cbb4 tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents: 38993
diff changeset
177 self.assertFalse(
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
178 stdout, hexfailmsg(testnumber, hexversion, stdout, 'no stdout')
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
179 )
39045
88b04bd2cbb4 tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents: 38993
diff changeset
180
88b04bd2cbb4 tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents: 38993
diff changeset
181 def assertversionfail(self, testnumber, hexversion):
88b04bd2cbb4 tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents: 38993
diff changeset
182 stdout, stderr = importparsers(hexversion)
88b04bd2cbb4 tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents: 38993
diff changeset
183 # 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: 38993
diff changeset
184 errtext = b"ImportError: %s" % pycompat.sysbytes(
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
185 parsers.versionerrortext
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
186 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
187 self.assertIn(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
188 errtext,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
189 stdout,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
190 hexfailmsg(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
191 testnumber,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
192 hexversion,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
193 stdout,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
194 expected="stdout to contain %r" % errtext,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
195 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
196 )
39045
88b04bd2cbb4 tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents: 38993
diff changeset
197
38990
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
198 def testversiondetection(self):
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
199 """Check the version-detection logic when importing parsers."""
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
200 # 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: 38989
diff changeset
201 try:
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
202 parsers.versionerrortext
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
203 except AttributeError:
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
204 return
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
205 info = sys.version_info
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
206 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: 38989
diff changeset
207 # Test same major-minor versions.
39045
88b04bd2cbb4 tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents: 38993
diff changeset
208 self.assertversionokay(1, makehex(major, minor, micro))
88b04bd2cbb4 tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents: 38993
diff changeset
209 self.assertversionokay(2, makehex(major, minor, micro + 1))
38990
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
210 # Test different major-minor versions.
39045
88b04bd2cbb4 tests: port remaining bits of test-parseindex2 to unittest asserts
Augie Fackler <augie@google.com>
parents: 38993
diff changeset
211 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: 38993
diff changeset
212 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: 38993
diff changeset
213 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
214
38990
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
215 def testbadargs(self):
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
216 # Check that parse_index2() raises TypeError on bad arguments.
38991
22216c4607bb tests: move chunks of test-parseindex2.py to use unittest properly
Augie Fackler <augie@google.com>
parents: 38990
diff changeset
217 with self.assertRaises(TypeError):
38990
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
218 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
219
38990
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
220 def testparseindexfile(self):
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
221 # 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: 38989
diff changeset
222 # original Python implementation of parseindex, both with and
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
223 # without inlined data.
20166
7eda5bb9ec8f parsers: clarify documentation of test-parseindex2.py
Chris Jerdonek <chris.jerdonek@gmail.com>
parents: 20159
diff changeset
224
38993
ee0720e82257 tests: rename variables in revlog index parse test for clarity
Augie Fackler <augie@google.com>
parents: 38992
diff changeset
225 want = py_parseindex(data_inlined, True)
ee0720e82257 tests: rename variables in revlog index parse test for clarity
Augie Fackler <augie@google.com>
parents: 38992
diff changeset
226 got = parse_index2(data_inlined, True)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
227 self.assertEqual(want, got) # inline data
7110
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
228
38993
ee0720e82257 tests: rename variables in revlog index parse test for clarity
Augie Fackler <augie@google.com>
parents: 38992
diff changeset
229 want = py_parseindex(data_non_inlined, False)
ee0720e82257 tests: rename variables in revlog index parse test for clarity
Augie Fackler <augie@google.com>
parents: 38992
diff changeset
230 got = parse_index2(data_non_inlined, False)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
231 self.assertEqual(want, got) # no inline data
7110
75fdc39b6172 Add parseindex2.py test case
Bernhard Leiner <bleiner@gmail.com>
parents:
diff changeset
232
38990
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
233 ix = parsers.parse_index2(data_inlined, True)[0]
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
234 for i, r in enumerate(ix):
47012
d55b71393907 node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents: 46704
diff changeset
235 if r[7] == sha1nodeconstants.nullid:
38990
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
236 i = -1
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
237 try:
38991
22216c4607bb tests: move chunks of test-parseindex2.py to use unittest properly
Augie Fackler <augie@google.com>
parents: 38990
diff changeset
238 self.assertEqual(
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
239 ix[r[7]],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
240 i,
46113
59fa3890d40a node: import symbols explicitly
Joerg Sonnenberger <joerg@bec.de>
parents: 45829
diff changeset
241 'Reverse lookup inconsistent for %r' % hex(r[7]),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
242 )
38990
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
243 except TypeError:
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
244 # pure version doesn't support this
087a755310c3 tests: fix up indent width in test-parseindex2.py
Augie Fackler <augie@google.com>
parents: 38989
diff changeset
245 break
16414
e8d37b78acfb parsers: use base-16 trie for faster node->rev mapping
Bryan O'Sullivan <bryano@fb.com>
parents: 16363
diff changeset
246
39067
daedb70fd467 tests: add test coverage for revlogindex[-1] which was previously missing
Augie Fackler <augie@google.com>
parents: 39048
diff changeset
247 def testminusone(self):
47249
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
248 want = (
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
249 0,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
250 0,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
251 0,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
252 -1,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
253 -1,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
254 -1,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
255 -1,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
256 sha1nodeconstants.nullid,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
257 0,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
258 0,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
259 constants.COMP_MODE_INLINE,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
260 )
39067
daedb70fd467 tests: add test coverage for revlogindex[-1] which was previously missing
Augie Fackler <augie@google.com>
parents: 39048
diff changeset
261 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: 39048
diff changeset
262 got = index[-1]
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
263 self.assertEqual(want, got) # inline data
39067
daedb70fd467 tests: add test coverage for revlogindex[-1] which was previously missing
Augie Fackler <augie@google.com>
parents: 39048
diff changeset
264
daedb70fd467 tests: add test coverage for revlogindex[-1] which was previously missing
Augie Fackler <augie@google.com>
parents: 39048
diff changeset
265 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: 39048
diff changeset
266 got = index[-1]
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
267 self.assertEqual(want, got) # no inline data
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
268
43847
49fa0b31ee1d cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents: 43506
diff changeset
269 def testdelitemwithoutnodetree(self):
49fa0b31ee1d cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents: 43506
diff changeset
270 index, _junk = parsers.parse_index2(data_non_inlined, False)
49fa0b31ee1d cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents: 43506
diff changeset
271
49fa0b31ee1d cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents: 43506
diff changeset
272 def hexrev(rev):
49fa0b31ee1d cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents: 43506
diff changeset
273 if rev == nullrev:
49fa0b31ee1d cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents: 43506
diff changeset
274 return b'\xff\xff\xff\xff'
49fa0b31ee1d cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents: 43506
diff changeset
275 else:
46113
59fa3890d40a node: import symbols explicitly
Joerg Sonnenberger <joerg@bec.de>
parents: 45829
diff changeset
276 return bin('%08x' % rev)
43847
49fa0b31ee1d cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents: 43506
diff changeset
277
49fa0b31ee1d cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents: 43506
diff changeset
278 def appendrev(p1, p2=nullrev):
49fa0b31ee1d cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents: 43506
diff changeset
279 # 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: 43506
diff changeset
280 # 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: 43506
diff changeset
281 node = hexrev(p1) + hexrev(p2) + b'.' * 12
47249
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
282 e = (
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
283 0,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
284 0,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
285 12,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
286 1,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
287 34,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
288 p1,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
289 p2,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
290 node,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
291 0,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
292 0,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
293 constants.COMP_MODE_INLINE,
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
294 )
130c9f7ed914 revlog: add a "data compression mode" entry in the index tuple
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47143
diff changeset
295 index.append(e)
43847
49fa0b31ee1d cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents: 43506
diff changeset
296
49fa0b31ee1d cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents: 43506
diff changeset
297 appendrev(4)
49fa0b31ee1d cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents: 43506
diff changeset
298 appendrev(5)
49fa0b31ee1d cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents: 43506
diff changeset
299 appendrev(6)
49fa0b31ee1d cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents: 43506
diff changeset
300 self.assertEqual(len(index), 7)
49fa0b31ee1d cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents: 43506
diff changeset
301
43946
ac627ed8a911 tests-pure: fixing test-parseindex2
Georges Racinet <georges.racinet@octobus.net>
parents: 43847
diff changeset
302 del index[1:-1]
43847
49fa0b31ee1d cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents: 43506
diff changeset
303
49fa0b31ee1d cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents: 43506
diff changeset
304 # assertions that failed before correction
49fa0b31ee1d cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents: 43506
diff changeset
305 self.assertEqual(len(index), 1) # was 4
43946
ac627ed8a911 tests-pure: fixing test-parseindex2
Georges Racinet <georges.racinet@octobus.net>
parents: 43847
diff changeset
306 headrevs = getattr(index, 'headrevs', None)
ac627ed8a911 tests-pure: fixing test-parseindex2
Georges Racinet <georges.racinet@octobus.net>
parents: 43847
diff changeset
307 if headrevs is not None: # not implemented in pure
ac627ed8a911 tests-pure: fixing test-parseindex2
Georges Racinet <georges.racinet@octobus.net>
parents: 43847
diff changeset
308 self.assertEqual(index.headrevs(), [0]) # gave ValueError
43847
49fa0b31ee1d cext-revlog: fixed __delitem__ for uninitialized nodetree
Georges Racinet <georges.racinet@octobus.net>
parents: 43506
diff changeset
309
39067
daedb70fd467 tests: add test coverage for revlogindex[-1] which was previously missing
Augie Fackler <augie@google.com>
parents: 39048
diff changeset
310
38989
01966d45b45e tests: start moving test-parseindex2.py to a unittest
Augie Fackler <augie@google.com>
parents: 38852
diff changeset
311 if __name__ == '__main__':
01966d45b45e tests: start moving test-parseindex2.py to a unittest
Augie Fackler <augie@google.com>
parents: 38852
diff changeset
312 import silenttestrunner
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39067
diff changeset
313
38989
01966d45b45e tests: start moving test-parseindex2.py to a unittest
Augie Fackler <augie@google.com>
parents: 38852
diff changeset
314 silenttestrunner.main(__name__)