Merge lp:~jelmer/brz/chk-inventory-iter into lp:brz
- chk-inventory-iter
- Merge into trunk
Proposed by
Jelmer Vernooij
Status: | Merged |
---|---|
Approved by: | Jelmer Vernooij |
Approved revision: | no longer in the source branch. |
Merge reported by: | The Breezy Bot |
Merged at revision: | not available |
Proposed branch: | lp:~jelmer/brz/chk-inventory-iter |
Merge into: | lp:brz |
Diff against target: |
293 lines (+43/-37) 7 files modified
breezy/bzr/groupcompress.py (+1/-1) breezy/bzr/inventory_delta.py (+10/-8) breezy/bzr/remote.py (+1/-1) breezy/bzr/versionedfile.py (+1/-1) breezy/bzr/vf_repository.py (+1/-1) breezy/git/annotate.py (+1/-1) breezy/tests/test_inventory_delta.py (+28/-24) |
To merge this branch: | bzr merge lp:~jelmer/brz/chk-inventory-iter |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Jelmer Vernooij | Approve | ||
Review via email: mp+378772@code.launchpad.net |
Commit message
parse_text_bytes now takes a list of lines.
Description of the change
parse_text_bytes now takes a list of lines.
To post a comment you must log in.
Revision history for this message
Jelmer Vernooij (jelmer) : | # |
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'breezy/bzr/groupcompress.py' | |||
2 | --- breezy/bzr/groupcompress.py 2020-01-31 19:21:09 +0000 | |||
3 | +++ breezy/bzr/groupcompress.py 2020-02-09 01:38:14 +0000 | |||
4 | @@ -499,7 +499,7 @@ | |||
5 | 499 | if storage_kind == 'chunked': | 499 | if storage_kind == 'chunked': |
6 | 500 | return iter([self._bytes]) | 500 | return iter([self._bytes]) |
7 | 501 | elif storage_kind == 'lines': | 501 | elif storage_kind == 'lines': |
9 | 502 | return osutils.split_lines(self._bytes) | 502 | return iter(osutils.split_lines(self._bytes)) |
10 | 503 | raise errors.UnavailableRepresentation(self.key, storage_kind, | 503 | raise errors.UnavailableRepresentation(self.key, storage_kind, |
11 | 504 | self.storage_kind) | 504 | self.storage_kind) |
12 | 505 | 505 | ||
13 | 506 | 506 | ||
14 | === modified file 'breezy/bzr/inventory_delta.py' | |||
15 | --- breezy/bzr/inventory_delta.py 2019-02-02 15:13:30 +0000 | |||
16 | +++ breezy/bzr/inventory_delta.py 2020-02-09 01:38:14 +0000 | |||
17 | @@ -277,23 +277,25 @@ | |||
18 | 277 | else: | 277 | else: |
19 | 278 | raise InventoryDeltaError("value %(val)r is not a bool", val=value) | 278 | raise InventoryDeltaError("value %(val)r is not a bool", val=value) |
20 | 279 | 279 | ||
22 | 280 | def parse_text_bytes(self, bytes): | 280 | def parse_text_bytes(self, lines): |
23 | 281 | """Parse the text bytes of a serialized inventory delta. | 281 | """Parse the text bytes of a serialized inventory delta. |
24 | 282 | 282 | ||
25 | 283 | If versioned_root and/or tree_references flags were set via | 283 | If versioned_root and/or tree_references flags were set via |
26 | 284 | require_flags, then the parsed flags must match or a BzrError will be | 284 | require_flags, then the parsed flags must match or a BzrError will be |
27 | 285 | raised. | 285 | raised. |
28 | 286 | 286 | ||
31 | 287 | :param bytes: The bytes to parse. This can be obtained by calling | 287 | :param lines: The lines to parse. This can be obtained by calling |
32 | 288 | delta_to_lines and then doing ''.join(delta_lines). | 288 | delta_to_lines. |
33 | 289 | :return: (parent_id, new_id, versioned_root, tree_references, | 289 | :return: (parent_id, new_id, versioned_root, tree_references, |
34 | 290 | inventory_delta) | 290 | inventory_delta) |
35 | 291 | """ | 291 | """ |
41 | 292 | if not bytes.endswith(b'\n'): | 292 | if not lines: |
42 | 293 | last_line = bytes.rsplit(b'\n', 1)[-1] | 293 | raise InventoryDeltaError( |
43 | 294 | raise InventoryDeltaError( | 294 | 'inventory delta is empty') |
44 | 295 | 'last line not empty: %(line)r', line=last_line) | 295 | if not lines[-1].endswith(b'\n'): |
45 | 296 | lines = bytes.split(b'\n')[:-1] # discard the last empty line | 296 | raise InventoryDeltaError( |
46 | 297 | 'last line not empty: %(line)r', line=lines[-1]) | ||
47 | 298 | lines = [line.rstrip(b'\n') for line in lines] # discard the last empty line | ||
48 | 297 | if not lines or lines[0] != b'format: %s' % FORMAT_1: | 299 | if not lines or lines[0] != b'format: %s' % FORMAT_1: |
49 | 298 | raise InventoryDeltaError( | 300 | raise InventoryDeltaError( |
50 | 299 | 'unknown format %(line)r', line=lines[0:1]) | 301 | 'unknown format %(line)r', line=lines[0:1]) |
51 | 300 | 302 | ||
52 | === modified file 'breezy/bzr/remote.py' | |||
53 | --- breezy/bzr/remote.py 2020-01-31 10:39:02 +0000 | |||
54 | +++ breezy/bzr/remote.py 2020-02-09 01:38:14 +0000 | |||
55 | @@ -2048,7 +2048,7 @@ | |||
56 | 2048 | "Unexpected stream %r received" % substream_kind) | 2048 | "Unexpected stream %r received" % substream_kind) |
57 | 2049 | for record in substream: | 2049 | for record in substream: |
58 | 2050 | (parent_id, new_id, versioned_root, tree_references, invdelta) = ( | 2050 | (parent_id, new_id, versioned_root, tree_references, invdelta) = ( |
60 | 2051 | deserializer.parse_text_bytes(record.get_bytes_as("fulltext"))) | 2051 | deserializer.parse_text_bytes(record.get_bytes_as("lines"))) |
61 | 2052 | if parent_id != prev_inv.revision_id: | 2052 | if parent_id != prev_inv.revision_id: |
62 | 2053 | raise AssertionError("invalid base %r != %r" % (parent_id, | 2053 | raise AssertionError("invalid base %r != %r" % (parent_id, |
63 | 2054 | prev_inv.revision_id)) | 2054 | prev_inv.revision_id)) |
64 | 2055 | 2055 | ||
65 | === modified file 'breezy/bzr/versionedfile.py' | |||
66 | --- breezy/bzr/versionedfile.py 2020-01-30 18:07:32 +0000 | |||
67 | +++ breezy/bzr/versionedfile.py 2020-02-09 01:38:14 +0000 | |||
68 | @@ -143,7 +143,7 @@ | |||
69 | 143 | elif storage_kind == 'lines': | 143 | elif storage_kind == 'lines': |
70 | 144 | if self._chunks_are_lines: | 144 | if self._chunks_are_lines: |
71 | 145 | return iter(self._chunks) | 145 | return iter(self._chunks) |
73 | 146 | return osutils.chunks_to_lines(self._chunks) | 146 | return iter(osutils.chunks_to_lines(self._chunks)) |
74 | 147 | raise errors.UnavailableRepresentation(self.key, storage_kind, | 147 | raise errors.UnavailableRepresentation(self.key, storage_kind, |
75 | 148 | self.storage_kind) | 148 | self.storage_kind) |
76 | 149 | 149 | ||
77 | 150 | 150 | ||
78 | === modified file 'breezy/bzr/vf_repository.py' | |||
79 | --- breezy/bzr/vf_repository.py 2020-01-31 10:39:02 +0000 | |||
80 | +++ breezy/bzr/vf_repository.py 2020-02-09 01:38:14 +0000 | |||
81 | @@ -1937,7 +1937,7 @@ | |||
82 | 1937 | target_tree_refs = self.target_repo._format.supports_tree_reference | 1937 | target_tree_refs = self.target_repo._format.supports_tree_reference |
83 | 1938 | for record in substream: | 1938 | for record in substream: |
84 | 1939 | # Insert the delta directly | 1939 | # Insert the delta directly |
86 | 1940 | inventory_delta_bytes = record.get_bytes_as('fulltext') | 1940 | inventory_delta_bytes = record.get_bytes_as('lines') |
87 | 1941 | deserialiser = inventory_delta.InventoryDeltaDeserializer() | 1941 | deserialiser = inventory_delta.InventoryDeltaDeserializer() |
88 | 1942 | try: | 1942 | try: |
89 | 1943 | parse_result = deserialiser.parse_text_bytes( | 1943 | parse_result = deserialiser.parse_text_bytes( |
90 | 1944 | 1944 | ||
91 | === modified file 'breezy/git/annotate.py' | |||
92 | --- breezy/git/annotate.py 2020-01-30 18:07:32 +0000 | |||
93 | +++ breezy/git/annotate.py 2020-02-09 01:38:14 +0000 | |||
94 | @@ -70,7 +70,7 @@ | |||
95 | 70 | 70 | ||
96 | 71 | def iter_bytes_as(self, storage_kind): | 71 | def iter_bytes_as(self, storage_kind): |
97 | 72 | if storage_kind == 'lines': | 72 | if storage_kind == 'lines': |
99 | 73 | return osutils.chunks_to_lines(self.store[self.blob_id].as_raw_chunks()) | 73 | return iter(osutils.chunks_to_lines(self.store[self.blob_id].as_raw_chunks())) |
100 | 74 | elif storage_kind == 'chunked': | 74 | elif storage_kind == 'chunked': |
101 | 75 | return iter(self.store[self.blob_id].as_raw_chunks()) | 75 | return iter(self.store[self.blob_id].as_raw_chunks()) |
102 | 76 | raise UnavailableRepresentation(self.key, storage_kind, | 76 | raise UnavailableRepresentation(self.key, storage_kind, |
103 | 77 | 77 | ||
104 | === modified file 'breezy/tests/test_inventory_delta.py' | |||
105 | --- breezy/tests/test_inventory_delta.py 2018-11-11 04:08:32 +0000 | |||
106 | +++ breezy/tests/test_inventory_delta.py 2020-02-09 01:38:14 +0000 | |||
107 | @@ -19,6 +19,7 @@ | |||
108 | 19 | See doc/developer/inventory.txt for more information. | 19 | See doc/developer/inventory.txt for more information. |
109 | 20 | """ | 20 | """ |
110 | 21 | 21 | ||
111 | 22 | from .. import osutils | ||
112 | 22 | from ..bzr import ( | 23 | from ..bzr import ( |
113 | 23 | inventory, | 24 | inventory, |
114 | 24 | inventory_delta, | 25 | inventory_delta, |
115 | @@ -96,28 +97,28 @@ | |||
116 | 96 | def test_parse_no_bytes(self): | 97 | def test_parse_no_bytes(self): |
117 | 97 | deserializer = inventory_delta.InventoryDeltaDeserializer() | 98 | deserializer = inventory_delta.InventoryDeltaDeserializer() |
118 | 98 | err = self.assertRaises( | 99 | err = self.assertRaises( |
121 | 99 | InventoryDeltaError, deserializer.parse_text_bytes, b'') | 100 | InventoryDeltaError, deserializer.parse_text_bytes, []) |
122 | 100 | self.assertContainsRe(str(err), 'last line not empty') | 101 | self.assertContainsRe(str(err), 'inventory delta is empty') |
123 | 101 | 102 | ||
124 | 102 | def test_parse_bad_format(self): | 103 | def test_parse_bad_format(self): |
125 | 103 | deserializer = inventory_delta.InventoryDeltaDeserializer() | 104 | deserializer = inventory_delta.InventoryDeltaDeserializer() |
126 | 104 | err = self.assertRaises(InventoryDeltaError, | 105 | err = self.assertRaises(InventoryDeltaError, |
128 | 105 | deserializer.parse_text_bytes, b'format: foo\n') | 106 | deserializer.parse_text_bytes, [b'format: foo\n']) |
129 | 106 | self.assertContainsRe(str(err), 'unknown format') | 107 | self.assertContainsRe(str(err), 'unknown format') |
130 | 107 | 108 | ||
131 | 108 | def test_parse_no_parent(self): | 109 | def test_parse_no_parent(self): |
132 | 109 | deserializer = inventory_delta.InventoryDeltaDeserializer() | 110 | deserializer = inventory_delta.InventoryDeltaDeserializer() |
133 | 110 | err = self.assertRaises(InventoryDeltaError, | 111 | err = self.assertRaises(InventoryDeltaError, |
134 | 111 | deserializer.parse_text_bytes, | 112 | deserializer.parse_text_bytes, |
136 | 112 | b'format: bzr inventory delta v1 (bzr 1.14)\n') | 113 | [b'format: bzr inventory delta v1 (bzr 1.14)\n']) |
137 | 113 | self.assertContainsRe(str(err), 'missing parent: marker') | 114 | self.assertContainsRe(str(err), 'missing parent: marker') |
138 | 114 | 115 | ||
139 | 115 | def test_parse_no_version(self): | 116 | def test_parse_no_version(self): |
140 | 116 | deserializer = inventory_delta.InventoryDeltaDeserializer() | 117 | deserializer = inventory_delta.InventoryDeltaDeserializer() |
141 | 117 | err = self.assertRaises(InventoryDeltaError, | 118 | err = self.assertRaises(InventoryDeltaError, |
142 | 118 | deserializer.parse_text_bytes, | 119 | deserializer.parse_text_bytes, |
145 | 119 | b'format: bzr inventory delta v1 (bzr 1.14)\n' | 120 | [b'format: bzr inventory delta v1 (bzr 1.14)\n', |
146 | 120 | b'parent: null:\n') | 121 | b'parent: null:\n']) |
147 | 121 | self.assertContainsRe(str(err), 'missing version: marker') | 122 | self.assertContainsRe(str(err), 'missing version: marker') |
148 | 122 | 123 | ||
149 | 123 | def test_parse_duplicate_key_errors(self): | 124 | def test_parse_duplicate_key_errors(self): |
150 | @@ -132,12 +133,12 @@ | |||
151 | 132 | None\x00/\x00an-id\x00\x00a@e\xc3\xa5ample.com--2004\x00dir\x00\x00 | 133 | None\x00/\x00an-id\x00\x00a@e\xc3\xa5ample.com--2004\x00dir\x00\x00 |
152 | 133 | """ | 134 | """ |
153 | 134 | err = self.assertRaises(InventoryDeltaError, | 135 | err = self.assertRaises(InventoryDeltaError, |
155 | 135 | deserializer.parse_text_bytes, double_root_lines) | 136 | deserializer.parse_text_bytes, osutils.split_lines(double_root_lines)) |
156 | 136 | self.assertContainsRe(str(err), 'duplicate file id') | 137 | self.assertContainsRe(str(err), 'duplicate file id') |
157 | 137 | 138 | ||
158 | 138 | def test_parse_versioned_root_only(self): | 139 | def test_parse_versioned_root_only(self): |
159 | 139 | deserializer = inventory_delta.InventoryDeltaDeserializer() | 140 | deserializer = inventory_delta.InventoryDeltaDeserializer() |
161 | 140 | parse_result = deserializer.parse_text_bytes(root_only_lines) | 141 | parse_result = deserializer.parse_text_bytes(osutils.split_lines(root_only_lines)) |
162 | 141 | expected_entry = inventory.make_entry( | 142 | expected_entry = inventory.make_entry( |
163 | 142 | 'directory', u'', None, b'an-id') | 143 | 'directory', u'', None, b'an-id') |
164 | 143 | expected_entry.revision = b'a@e\xc3\xa5ample.com--2004' | 144 | expected_entry.revision = b'a@e\xc3\xa5ample.com--2004' |
165 | @@ -155,8 +156,9 @@ | |||
166 | 155 | tree_references: true | 156 | tree_references: true |
167 | 156 | None\x00/\x00TREE_ROOT\x00\x00null:\x00dir\x00\x00 | 157 | None\x00/\x00TREE_ROOT\x00\x00null:\x00dir\x00\x00 |
168 | 157 | """ | 158 | """ |
171 | 158 | err = self.assertRaises(InventoryDeltaError, | 159 | err = self.assertRaises( |
172 | 159 | deserializer.parse_text_bytes, root_only_lines) | 160 | InventoryDeltaError, deserializer.parse_text_bytes, |
173 | 161 | osutils.split_lines(root_only_lines)) | ||
174 | 160 | self.assertContainsRe(str(err), 'special revisionid found') | 162 | self.assertContainsRe(str(err), 'special revisionid found') |
175 | 161 | 163 | ||
176 | 162 | def test_parse_versioned_root_versioned_disabled(self): | 164 | def test_parse_versioned_root_versioned_disabled(self): |
177 | @@ -168,8 +170,9 @@ | |||
178 | 168 | tree_references: true | 170 | tree_references: true |
179 | 169 | None\x00/\x00TREE_ROOT\x00\x00a@e\xc3\xa5ample.com--2004\x00dir\x00\x00 | 171 | None\x00/\x00TREE_ROOT\x00\x00a@e\xc3\xa5ample.com--2004\x00dir\x00\x00 |
180 | 170 | """ | 172 | """ |
183 | 171 | err = self.assertRaises(InventoryDeltaError, | 173 | err = self.assertRaises( |
184 | 172 | deserializer.parse_text_bytes, root_only_lines) | 174 | InventoryDeltaError, deserializer.parse_text_bytes, |
185 | 175 | osutils.split_lines(root_only_lines)) | ||
186 | 173 | self.assertContainsRe(str(err), 'Versioned root found') | 176 | self.assertContainsRe(str(err), 'Versioned root found') |
187 | 174 | 177 | ||
188 | 175 | def test_parse_unique_root_id_root_versioned_disabled(self): | 178 | def test_parse_unique_root_id_root_versioned_disabled(self): |
189 | @@ -182,12 +185,13 @@ | |||
190 | 182 | None\x00/\x00an-id\x00\x00parent-id\x00dir\x00\x00 | 185 | None\x00/\x00an-id\x00\x00parent-id\x00dir\x00\x00 |
191 | 183 | """ | 186 | """ |
192 | 184 | err = self.assertRaises(InventoryDeltaError, | 187 | err = self.assertRaises(InventoryDeltaError, |
194 | 185 | deserializer.parse_text_bytes, root_only_lines) | 188 | deserializer.parse_text_bytes, osutils.split_lines(root_only_lines)) |
195 | 186 | self.assertContainsRe(str(err), 'Versioned root found') | 189 | self.assertContainsRe(str(err), 'Versioned root found') |
196 | 187 | 190 | ||
197 | 188 | def test_parse_unversioned_root_versioning_enabled(self): | 191 | def test_parse_unversioned_root_versioning_enabled(self): |
198 | 189 | deserializer = inventory_delta.InventoryDeltaDeserializer() | 192 | deserializer = inventory_delta.InventoryDeltaDeserializer() |
200 | 190 | parse_result = deserializer.parse_text_bytes(root_only_unversioned) | 193 | parse_result = deserializer.parse_text_bytes( |
201 | 194 | osutils.split_lines(root_only_unversioned)) | ||
202 | 191 | expected_entry = inventory.make_entry( | 195 | expected_entry = inventory.make_entry( |
203 | 192 | 'directory', u'', None, b'TREE_ROOT') | 196 | 'directory', u'', None, b'TREE_ROOT') |
204 | 193 | expected_entry.revision = b'entry-version' | 197 | expected_entry.revision = b'entry-version' |
205 | @@ -200,14 +204,14 @@ | |||
206 | 200 | deserializer = inventory_delta.InventoryDeltaDeserializer( | 204 | deserializer = inventory_delta.InventoryDeltaDeserializer( |
207 | 201 | allow_versioned_root=False) | 205 | allow_versioned_root=False) |
208 | 202 | err = self.assertRaises(inventory_delta.IncompatibleInventoryDelta, | 206 | err = self.assertRaises(inventory_delta.IncompatibleInventoryDelta, |
210 | 203 | deserializer.parse_text_bytes, root_only_lines) | 207 | deserializer.parse_text_bytes, osutils.split_lines(root_only_lines)) |
211 | 204 | self.assertEqual("versioned_root not allowed", str(err)) | 208 | self.assertEqual("versioned_root not allowed", str(err)) |
212 | 205 | 209 | ||
213 | 206 | def test_parse_tree_when_disabled(self): | 210 | def test_parse_tree_when_disabled(self): |
214 | 207 | deserializer = inventory_delta.InventoryDeltaDeserializer( | 211 | deserializer = inventory_delta.InventoryDeltaDeserializer( |
215 | 208 | allow_tree_references=False) | 212 | allow_tree_references=False) |
216 | 209 | err = self.assertRaises(inventory_delta.IncompatibleInventoryDelta, | 213 | err = self.assertRaises(inventory_delta.IncompatibleInventoryDelta, |
218 | 210 | deserializer.parse_text_bytes, reference_lines) | 214 | deserializer.parse_text_bytes, osutils.split_lines(reference_lines)) |
219 | 211 | self.assertEqual("Tree reference not allowed", str(err)) | 215 | self.assertEqual("Tree reference not allowed", str(err)) |
220 | 212 | 216 | ||
221 | 213 | def test_parse_tree_when_header_disallows(self): | 217 | def test_parse_tree_when_header_disallows(self): |
222 | @@ -223,7 +227,7 @@ | |||
223 | 223 | None\x00/foo\x00id\x00TREE_ROOT\x00changed\x00tree\x00subtree-version | 227 | None\x00/foo\x00id\x00TREE_ROOT\x00changed\x00tree\x00subtree-version |
224 | 224 | """ | 228 | """ |
225 | 225 | err = self.assertRaises(InventoryDeltaError, | 229 | err = self.assertRaises(InventoryDeltaError, |
227 | 226 | deserializer.parse_text_bytes, lines) | 230 | deserializer.parse_text_bytes, osutils.split_lines(lines)) |
228 | 227 | self.assertContainsRe(str(err), 'Tree reference found') | 231 | self.assertContainsRe(str(err), 'Tree reference found') |
229 | 228 | 232 | ||
230 | 229 | def test_parse_versioned_root_when_header_disallows(self): | 233 | def test_parse_versioned_root_when_header_disallows(self): |
231 | @@ -239,7 +243,7 @@ | |||
232 | 239 | None\x00/\x00TREE_ROOT\x00\x00a@e\xc3\xa5ample.com--2004\x00dir | 243 | None\x00/\x00TREE_ROOT\x00\x00a@e\xc3\xa5ample.com--2004\x00dir |
233 | 240 | """ | 244 | """ |
234 | 241 | err = self.assertRaises(InventoryDeltaError, | 245 | err = self.assertRaises(InventoryDeltaError, |
236 | 242 | deserializer.parse_text_bytes, lines) | 246 | deserializer.parse_text_bytes, osutils.split_lines(lines)) |
237 | 243 | self.assertContainsRe(str(err), 'Versioned root found') | 247 | self.assertContainsRe(str(err), 'Versioned root found') |
238 | 244 | 248 | ||
239 | 245 | def test_parse_last_line_not_empty(self): | 249 | def test_parse_last_line_not_empty(self): |
240 | @@ -248,7 +252,7 @@ | |||
241 | 248 | lines = root_only_lines[:-1] | 252 | lines = root_only_lines[:-1] |
242 | 249 | deserializer = inventory_delta.InventoryDeltaDeserializer() | 253 | deserializer = inventory_delta.InventoryDeltaDeserializer() |
243 | 250 | err = self.assertRaises(InventoryDeltaError, | 254 | err = self.assertRaises(InventoryDeltaError, |
245 | 251 | deserializer.parse_text_bytes, lines) | 255 | deserializer.parse_text_bytes, osutils.split_lines(lines)) |
246 | 252 | self.assertContainsRe(str(err), 'last line not empty') | 256 | self.assertContainsRe(str(err), 'last line not empty') |
247 | 253 | 257 | ||
248 | 254 | def test_parse_invalid_newpath(self): | 258 | def test_parse_invalid_newpath(self): |
249 | @@ -257,7 +261,7 @@ | |||
250 | 257 | lines += b"None\x00bad\x00TREE_ROOT\x00\x00version\x00dir\n" | 261 | lines += b"None\x00bad\x00TREE_ROOT\x00\x00version\x00dir\n" |
251 | 258 | deserializer = inventory_delta.InventoryDeltaDeserializer() | 262 | deserializer = inventory_delta.InventoryDeltaDeserializer() |
252 | 259 | err = self.assertRaises(InventoryDeltaError, | 263 | err = self.assertRaises(InventoryDeltaError, |
254 | 260 | deserializer.parse_text_bytes, lines) | 264 | deserializer.parse_text_bytes, osutils.split_lines(lines)) |
255 | 261 | self.assertContainsRe(str(err), 'newpath invalid') | 265 | self.assertContainsRe(str(err), 'newpath invalid') |
256 | 262 | 266 | ||
257 | 263 | def test_parse_invalid_oldpath(self): | 267 | def test_parse_invalid_oldpath(self): |
258 | @@ -266,7 +270,7 @@ | |||
259 | 266 | lines += b"bad\x00/new\x00file-id\x00\x00version\x00dir\n" | 270 | lines += b"bad\x00/new\x00file-id\x00\x00version\x00dir\n" |
260 | 267 | deserializer = inventory_delta.InventoryDeltaDeserializer() | 271 | deserializer = inventory_delta.InventoryDeltaDeserializer() |
261 | 268 | err = self.assertRaises(InventoryDeltaError, | 272 | err = self.assertRaises(InventoryDeltaError, |
263 | 269 | deserializer.parse_text_bytes, lines) | 273 | deserializer.parse_text_bytes, osutils.split_lines(lines)) |
264 | 270 | self.assertContainsRe(str(err), 'oldpath invalid') | 274 | self.assertContainsRe(str(err), 'oldpath invalid') |
265 | 271 | 275 | ||
266 | 272 | def test_parse_new_file(self): | 276 | def test_parse_new_file(self): |
267 | @@ -277,7 +281,7 @@ | |||
268 | 277 | b"None\x00/new\x00file-id\x00an-id\x00version\x00file\x00123\x00" + | 281 | b"None\x00/new\x00file-id\x00an-id\x00version\x00file\x00123\x00" + |
269 | 278 | b"\x00" + fake_sha + b"\n") | 282 | b"\x00" + fake_sha + b"\n") |
270 | 279 | deserializer = inventory_delta.InventoryDeltaDeserializer() | 283 | deserializer = inventory_delta.InventoryDeltaDeserializer() |
272 | 280 | parse_result = deserializer.parse_text_bytes(lines) | 284 | parse_result = deserializer.parse_text_bytes(osutils.split_lines(lines)) |
273 | 281 | expected_entry = inventory.make_entry( | 285 | expected_entry = inventory.make_entry( |
274 | 282 | 'file', u'new', b'an-id', b'file-id') | 286 | 'file', u'new', b'an-id', b'file-id') |
275 | 283 | expected_entry.revision = b'version' | 287 | expected_entry.revision = b'version' |
276 | @@ -292,7 +296,7 @@ | |||
277 | 292 | lines += ( | 296 | lines += ( |
278 | 293 | b"/old-file\x00None\x00deleted-id\x00\x00null:\x00deleted\x00\x00\n") | 297 | b"/old-file\x00None\x00deleted-id\x00\x00null:\x00deleted\x00\x00\n") |
279 | 294 | deserializer = inventory_delta.InventoryDeltaDeserializer() | 298 | deserializer = inventory_delta.InventoryDeltaDeserializer() |
281 | 295 | parse_result = deserializer.parse_text_bytes(lines) | 299 | parse_result = deserializer.parse_text_bytes(osutils.split_lines(lines)) |
282 | 296 | delta = parse_result[4] | 300 | delta = parse_result[4] |
283 | 297 | self.assertEqual( | 301 | self.assertEqual( |
284 | 298 | (u'old-file', None, b'deleted-id', None), delta[-1]) | 302 | (u'old-file', None, b'deleted-id', None), delta[-1]) |
285 | @@ -339,7 +343,7 @@ | |||
286 | 339 | deserializer = inventory_delta.InventoryDeltaDeserializer() | 343 | deserializer = inventory_delta.InventoryDeltaDeserializer() |
287 | 340 | self.assertEqual( | 344 | self.assertEqual( |
288 | 341 | (NULL_REVISION, b'entry-version', False, False, delta), | 345 | (NULL_REVISION, b'entry-version', False, False, delta), |
290 | 342 | deserializer.parse_text_bytes(b''.join(serialized_lines))) | 346 | deserializer.parse_text_bytes(serialized_lines)) |
291 | 343 | 347 | ||
292 | 344 | def test_unversioned_non_root_errors(self): | 348 | def test_unversioned_non_root_errors(self): |
293 | 345 | old_inv = Inventory(None) | 349 | old_inv = Inventory(None) |