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/python3-x |
Merge into: | lp:brz |
Diff against target: |
1884 lines (+377/-209) 42 files modified
breezy/bzr/btree_index.py (+1/-2) breezy/bzr/remote.py (+1/-1) breezy/bzr/workingtree_4.py (+1/-1) breezy/bzr/xml_serializer.py (+1/-1) breezy/generate_ids.py (+11/-8) breezy/i18n.py (+3/-2) breezy/log.py (+1/-1) breezy/merge.py (+8/-17) breezy/plugins/weave_fmt/test_bzrdir.py (+1/-1) breezy/status.py (+1/-1) breezy/tests/per_intertree/test_compare.py (+2/-2) breezy/tests/per_repository/test_repository.py (+1/-1) breezy/tests/per_workingtree/test_paths2ids.py (+2/-2) breezy/tests/per_workingtree/test_workingtree.py (+2/-2) breezy/tests/test_bzrdir.py (+4/-4) breezy/tests/test_chk_map.py (+10/-10) breezy/tests/test_commit.py (+9/-9) breezy/tests/test_config.py (+3/-3) breezy/tests/test_conflicts.py (+12/-12) breezy/tests/test_email_message.py (+7/-7) breezy/tests/test_foreign.py (+2/-2) breezy/tests/test_generate_ids.py (+8/-8) breezy/tests/test_http.py (+1/-1) breezy/tests/test_i18n.py (+31/-12) breezy/tests/test_merge.py (+1/-1) breezy/tests/test_options.py (+1/-1) breezy/tests/test_reconfigure.py (+1/-1) breezy/tests/test_remote.py (+5/-5) breezy/tests/test_rename_map.py (+4/-4) breezy/tests/test_repository.py (+8/-6) breezy/tests/test_revert.py (+2/-1) breezy/tests/test_selftest.py (+23/-11) breezy/tests/test_transform.py (+7/-2) breezy/tests/test_upstream_import.py (+3/-7) breezy/tests/test_urlutils.py (+10/-3) breezy/tests/test_version.py (+2/-2) breezy/tests/test_vf_search.py (+50/-50) breezy/transform.py (+5/-1) breezy/transport/http/response.py (+1/-1) breezy/upstream_import.py (+2/-2) breezy/urlutils.py (+1/-1) python3.passing (+128/-0) |
To merge this branch: | bzr merge lp:~jelmer/brz/python3-x |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Martin Packman | Approve | ||
Review via email: mp+352226@code.launchpad.net |
Commit message
Fix another round of tests on Python 3.
Description of the change
Fix another 58 tests on Python 3.
To post a comment you must log in.
Revision history for this message
The Breezy Bot (the-breezy-bot) wrote : | # |
Running landing tests failed
https:/
Revision history for this message
The Breezy Bot (the-breezy-bot) wrote : | # |
Running landing tests failed
https:/
Revision history for this message
The Breezy Bot (the-breezy-bot) wrote : | # |
Merging failed
https:/
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'breezy/bzr/btree_index.py' |
2 | --- breezy/bzr/btree_index.py 2018-06-25 20:47:38 +0000 |
3 | +++ breezy/bzr/btree_index.py 2018-08-07 21:08:25 +0000 |
4 | @@ -708,8 +708,7 @@ |
5 | |
6 | def __lt__(self, other): |
7 | if isinstance(other, type(self)): |
8 | - return ((self._transport, self._name, self._size) < |
9 | - (other._transport, other._name, other._size)) |
10 | + return ((self._name, self._size) < (other._name, other._size)) |
11 | # Always sort existing indexes before ones that are still being built. |
12 | if isinstance(other, BTreeBuilder): |
13 | return True |
14 | |
15 | === modified file 'breezy/bzr/remote.py' |
16 | --- breezy/bzr/remote.py 2018-07-24 19:02:16 +0000 |
17 | +++ breezy/bzr/remote.py 2018-08-07 21:08:25 +0000 |
18 | @@ -2767,7 +2767,7 @@ |
19 | self.refresh_data() |
20 | if response[0] != b'ok': |
21 | raise errors.UnexpectedSmartServerResponse(response) |
22 | - self._write_group_tokens = response[1:] |
23 | + self._write_group_tokens = [token.decode('utf-8') for token in response[1:]] |
24 | |
25 | def has_signature_for_revision_id(self, revision_id): |
26 | path = self.controldir._path_for_remote_call(self._client) |
27 | |
28 | === modified file 'breezy/bzr/workingtree_4.py' |
29 | --- breezy/bzr/workingtree_4.py 2018-07-26 22:37:49 +0000 |
30 | +++ breezy/bzr/workingtree_4.py 2018-08-07 21:08:25 +0000 |
31 | @@ -2088,7 +2088,7 @@ |
32 | # push the user specified dirs from dirblock |
33 | for dir in reversed(dirblock): |
34 | if dir[2] == _directory: |
35 | - pending.append((dir[0].decode('utf-8'), dir[4])) |
36 | + pending.append((dir[0], dir[4])) |
37 | |
38 | |
39 | class InterDirStateTree(InterTree): |
40 | |
41 | === modified file 'breezy/bzr/xml_serializer.py' |
42 | --- breezy/bzr/xml_serializer.py 2018-06-17 20:17:39 +0000 |
43 | +++ breezy/bzr/xml_serializer.py 2018-08-07 21:08:25 +0000 |
44 | @@ -129,7 +129,7 @@ |
45 | # aren't listed in the XML specification |
46 | # (http://www.w3.org/TR/REC-xml/#NT-Char). |
47 | return re.subn(u'[^\x09\x0A\x0D\u0020-\uD7FF\uE000-\uFFFD]+', |
48 | - lambda match: match.group(0).encode('unicode_escape'), |
49 | + lambda match: match.group(0).encode('unicode_escape').decode('ascii'), |
50 | message) |
51 | |
52 | |
53 | |
54 | === modified file 'breezy/generate_ids.py' |
55 | --- breezy/generate_ids.py 2018-06-22 02:22:23 +0000 |
56 | +++ breezy/generate_ids.py 2018-08-07 21:08:25 +0000 |
57 | @@ -32,11 +32,12 @@ |
58 | errors, |
59 | lazy_regex, |
60 | ) |
61 | +from .sixish import text_type |
62 | |
63 | # the regex removes any weird characters; we don't escape them |
64 | # but rather just pull them out |
65 | -_file_id_chars_re = lazy_regex.lazy_compile('[^\\w.]') |
66 | -_rev_id_chars_re = lazy_regex.lazy_compile('[^-\\w.+@]') |
67 | +_file_id_chars_re = lazy_regex.lazy_compile(b'[^\\w.]') |
68 | +_rev_id_chars_re = lazy_regex.lazy_compile(b'[^-\\w.+@]') |
69 | _gen_file_id_suffix = None |
70 | _gen_file_id_serial = 0 |
71 | |
72 | @@ -71,6 +72,8 @@ |
73 | |
74 | The uniqueness is supplied from _next_id_suffix. |
75 | """ |
76 | + if isinstance(name, text_type): |
77 | + name = name.encode('ascii', 'replace') |
78 | # The real randomness is in the _next_id_suffix, the |
79 | # rest of the identifier is just to be nice. |
80 | # So we: |
81 | @@ -82,7 +85,7 @@ |
82 | # filesystems |
83 | # 4) Removing starting '.' characters to prevent the file ids from |
84 | # being considered hidden. |
85 | - ascii_word_only = _file_id_chars_re.sub('', name.lower()).encode('ascii', 'replace') |
86 | + ascii_word_only = _file_id_chars_re.sub(b'', name.lower()) |
87 | short_no_dots = ascii_word_only.lstrip(b'.')[:20] |
88 | return short_no_dots + _next_id_suffix() |
89 | |
90 | @@ -108,15 +111,15 @@ |
91 | |
92 | user_or_email = user_or_email.lower() |
93 | user_or_email = user_or_email.replace(' ', '_') |
94 | - user_or_email = _rev_id_chars_re.sub('', user_or_email) |
95 | + user_or_email = _rev_id_chars_re.sub(b'', user_or_email.encode('utf-8')) |
96 | |
97 | # This gives 36^16 ~= 2^82.7 ~= 83 bits of entropy |
98 | - unique_chunk = osutils.rand_chars(16) |
99 | + unique_chunk = osutils.rand_chars(16).encode('utf-8') |
100 | |
101 | if timestamp is None: |
102 | timestamp = time.time() |
103 | |
104 | - rev_id = u'-'.join((user_or_email, |
105 | - osutils.compact_date(timestamp), |
106 | + rev_id = b'-'.join((user_or_email, |
107 | + osutils.compact_date(timestamp).encode('utf-8'), |
108 | unique_chunk)) |
109 | - return rev_id.encode('utf8') |
110 | + return rev_id |
111 | |
112 | === modified file 'breezy/i18n.py' |
113 | --- breezy/i18n.py 2017-11-12 13:53:51 +0000 |
114 | +++ breezy/i18n.py 2018-08-07 21:08:25 +0000 |
115 | @@ -28,6 +28,8 @@ |
116 | import os |
117 | import sys |
118 | |
119 | +from .sixish import text_type |
120 | + |
121 | |
122 | _translations = None |
123 | |
124 | @@ -208,8 +210,7 @@ |
125 | |
126 | :param domain: Gettext domain name (usually 'brz-PLUGINNAME') |
127 | """ |
128 | - locale_base = os.path.dirname( |
129 | - unicode(__file__, sys.getfilesystemencoding())) |
130 | + locale_base = os.path.dirname(__file__) |
131 | translation = install_translations(domain=domain, |
132 | locale_base=locale_base) |
133 | add_fallback(translation) |
134 | |
135 | === modified file 'breezy/log.py' |
136 | --- breezy/log.py 2018-07-25 21:22:37 +0000 |
137 | +++ breezy/log.py 2018-08-07 21:08:25 +0000 |
138 | @@ -464,7 +464,7 @@ |
139 | for revs in revision_iterator: |
140 | for (rev_id, revno, merge_depth), rev, delta in revs: |
141 | # 0 levels means show everything; merge_depth counts from 0 |
142 | - if levels != 0 and merge_depth >= levels: |
143 | + if levels != 0 and merge_depth is not None and merge_depth >= levels: |
144 | continue |
145 | if omit_merges and len(rev.parent_ids) > 1: |
146 | continue |
147 | |
148 | === modified file 'breezy/merge.py' |
149 | --- breezy/merge.py 2018-07-15 18:45:17 +0000 |
150 | +++ breezy/merge.py 2018-08-07 21:08:25 +0000 |
151 | @@ -58,12 +58,10 @@ |
152 | |
153 | |
154 | def transform_tree(from_tree, to_tree, interesting_files=None): |
155 | - from_tree.lock_tree_write() |
156 | - operation = cleanup.OperationWithCleanups(merge_inner) |
157 | - operation.add_cleanup(from_tree.unlock) |
158 | - operation.run_simple(from_tree.branch, to_tree, from_tree, |
159 | - ignore_zero=True, this_tree=from_tree, |
160 | - interesting_files=interesting_files) |
161 | + with from_tree.lock_tree_write(): |
162 | + merge_inner(from_tree.branch, to_tree, from_tree, |
163 | + ignore_zero=True, this_tree=from_tree, |
164 | + interesting_files=interesting_files) |
165 | |
166 | |
167 | class MergeHooks(hooks.Hooks): |
168 | @@ -788,17 +786,10 @@ |
169 | pass |
170 | |
171 | def make_preview_transform(self): |
172 | - operation = cleanup.OperationWithCleanups(self._make_preview_transform) |
173 | - self.base_tree.lock_read() |
174 | - operation.add_cleanup(self.base_tree.unlock) |
175 | - self.other_tree.lock_read() |
176 | - operation.add_cleanup(self.other_tree.unlock) |
177 | - return operation.run_simple() |
178 | - |
179 | - def _make_preview_transform(self): |
180 | - self.tt = transform.TransformPreview(self.working_tree) |
181 | - self._compute_transform() |
182 | - return self.tt |
183 | + with self.base_tree.lock_read(), self.other_tree.lock_read(): |
184 | + self.tt = transform.TransformPreview(self.working_tree) |
185 | + self._compute_transform() |
186 | + return self.tt |
187 | |
188 | def _compute_transform(self): |
189 | if self._lca_trees is None: |
190 | |
191 | === modified file 'breezy/plugins/weave_fmt/test_bzrdir.py' |
192 | --- breezy/plugins/weave_fmt/test_bzrdir.py 2018-07-24 21:21:21 +0000 |
193 | +++ breezy/plugins/weave_fmt/test_bzrdir.py 2018-08-07 21:08:25 +0000 |
194 | @@ -402,7 +402,7 @@ |
195 | self.addCleanup(repo.unlock) |
196 | text_keys = repo.texts.keys() |
197 | dir_keys = [key for key in text_keys if key[0] == |
198 | - 'dir-20051005095101-da1441ea3fa6917a'] |
199 | + b'dir-20051005095101-da1441ea3fa6917a'] |
200 | self.assertNotEqual([], dir_keys) |
201 | |
202 | def test_upgrade_to_meta_sets_workingtree_last_revision(self): |
203 | |
204 | === modified file 'breezy/status.py' |
205 | --- breezy/status.py 2018-07-22 17:06:14 +0000 |
206 | +++ breezy/status.py 2018-08-07 21:08:25 +0000 |
207 | @@ -316,7 +316,7 @@ |
208 | for num, sub_merge, depth, eom in rev_id_iterator: |
209 | rev = revisions[sub_merge] |
210 | if rev is None: |
211 | - to_file.write(sub_prefix + '(ghost) ' + sub_merge + '\n') |
212 | + to_file.write(sub_prefix + '(ghost) ' + sub_merge.decode('utf-8') + '\n') |
213 | continue |
214 | show_log_message(revisions[sub_merge], sub_prefix) |
215 | |
216 | |
217 | === modified file 'breezy/tests/per_intertree/test_compare.py' |
218 | --- breezy/tests/per_intertree/test_compare.py 2018-07-19 22:55:15 +0000 |
219 | +++ breezy/tests/per_intertree/test_compare.py 2018-08-07 21:08:25 +0000 |
220 | @@ -1427,7 +1427,7 @@ |
221 | expected = [ |
222 | self.unchanged(tree1, tree1.path2id('')), |
223 | self.added(tree2, b'added'), |
224 | - self.content_changed(tree2, 'changed'), |
225 | + self.content_changed(tree2, b'changed'), |
226 | self.kind_changed(tree1, tree2, b'fromdir'), |
227 | self.kind_changed(tree1, tree2, b'fromfile'), |
228 | self.deleted(tree1, b'removed'), |
229 | @@ -1448,7 +1448,7 @@ |
230 | root_id = tree1.path2id('') |
231 | expected = [ |
232 | self.added(tree2, b'added'), |
233 | - self.content_changed(tree2, 'changed'), |
234 | + self.content_changed(tree2, b'changed'), |
235 | self.kind_changed(tree1, tree2, b'fromdir'), |
236 | self.kind_changed(tree1, tree2, b'fromfile'), |
237 | self.deleted(tree1, b'removed'), |
238 | |
239 | === modified file 'breezy/tests/per_repository/test_repository.py' |
240 | --- breezy/tests/per_repository/test_repository.py 2018-07-27 18:57:21 +0000 |
241 | +++ breezy/tests/per_repository/test_repository.py 2018-08-07 21:08:25 +0000 |
242 | @@ -411,7 +411,7 @@ |
243 | # roundtrip xml invalid characters in the xml-based serializers. |
244 | escaped_message, escape_count = re.subn( |
245 | u'[^\x09\x0A\x0D\u0020-\uD7FF\uE000-\uFFFD]+', |
246 | - lambda match: match.group(0).encode('unicode_escape'), |
247 | + lambda match: match.group(0).encode('unicode_escape').decode('ascii'), |
248 | message) |
249 | self.assertEqual(rev.message, escaped_message) |
250 | else: |
251 | |
252 | === modified file 'breezy/tests/per_workingtree/test_paths2ids.py' |
253 | --- breezy/tests/per_workingtree/test_paths2ids.py 2018-07-02 23:41:13 +0000 |
254 | +++ breezy/tests/per_workingtree/test_paths2ids.py 2018-08-07 21:08:25 +0000 |
255 | @@ -166,12 +166,12 @@ |
256 | tree.unversion(['dir/child-goes']) |
257 | tree.rename_one('dir/child-moves', 'child-moves') |
258 | self.build_tree(['tree/newdir/']) |
259 | - tree.add(['newdir'], ['newdir']) |
260 | + tree.add(['newdir'], [b'newdir']) |
261 | tree.rename_one('dir/child-stays', 'child-stays') |
262 | tree.rename_one('dir', 'newdir/dir') |
263 | tree.rename_one('child-stays', 'newdir/dir/child-stays') |
264 | self.build_tree(['tree/newdir/dir/new-child']) |
265 | - tree.add(['newdir/dir/new-child'], ['new-child']) |
266 | + tree.add(['newdir/dir/new-child'], [b'new-child']) |
267 | self.assertExpectedIds( |
268 | [b'newdir', b'dir', b'child-moves', b'child-stays', b'child-goes', |
269 | b'new-child'], tree, ['newdir'], [basis]) |
270 | |
271 | === modified file 'breezy/tests/per_workingtree/test_workingtree.py' |
272 | --- breezy/tests/per_workingtree/test_workingtree.py 2018-07-24 21:44:05 +0000 |
273 | +++ breezy/tests/per_workingtree/test_workingtree.py 2018-08-07 21:08:25 +0000 |
274 | @@ -1207,7 +1207,7 @@ |
275 | self.build_tree(['tree/subdir/', 'tree/subdir/somefile']) |
276 | tree.add(['subdir', 'subdir/somefile']) |
277 | |
278 | - with open('tree/subdir/m\xb5', 'wb') as f: |
279 | + with open(b'tree/subdir/m\xb5', 'wb') as f: |
280 | f.write(b'trivial\n') |
281 | |
282 | tree.lock_read() |
283 | @@ -1220,7 +1220,7 @@ |
284 | tree.iter_changes, tree.basis_tree(), |
285 | want_unversioned=True) |
286 | # We should display the relative path |
287 | - self.assertEqual('subdir/m\xb5', e.filename) |
288 | + self.assertEqual(b'subdir/m\xb5', e.filename) |
289 | self.assertEqual(osutils._fs_enc, e.fs_encoding) |
290 | |
291 | |
292 | |
293 | === modified file 'breezy/tests/test_bzrdir.py' |
294 | --- breezy/tests/test_bzrdir.py 2018-08-03 00:47:53 +0000 |
295 | +++ breezy/tests/test_bzrdir.py 2018-08-07 21:08:25 +0000 |
296 | @@ -1227,14 +1227,14 @@ |
297 | raise TestSkipped('unable to make file hidden without pywin32 library') |
298 | b = bzrdir.BzrDir.create('.') |
299 | self.build_tree(['a']) |
300 | - self.assertEqual(['a'], self.get_ls()) |
301 | + self.assertEqual([b'a'], self.get_ls()) |
302 | |
303 | def test_dot_bzr_hidden_with_url(self): |
304 | if sys.platform == 'win32' and not win32utils.has_win32file: |
305 | raise TestSkipped('unable to make file hidden without pywin32 library') |
306 | b = bzrdir.BzrDir.create(urlutils.local_path_to_url('.')) |
307 | self.build_tree(['a']) |
308 | - self.assertEqual(['a'], self.get_ls()) |
309 | + self.assertEqual([b'a'], self.get_ls()) |
310 | |
311 | |
312 | class _TestBzrDirFormat(bzrdir.BzrDirMetaFormat1): |
313 | @@ -1404,7 +1404,7 @@ |
314 | self.assertEqual("a.~1~", self._bzrdir._available_backup_name("a")) |
315 | |
316 | def test_exiting(self): |
317 | - self._transport.put_bytes("a.~1~", "some content") |
318 | + self._transport.put_bytes("a.~1~", b"some content") |
319 | self.assertEqual("a.~2~", self._bzrdir._available_backup_name("a")) |
320 | |
321 | |
322 | @@ -1474,7 +1474,7 @@ |
323 | self.assertEqual(format.as_string(), |
324 | b"First line\n" |
325 | b"required foo\n") |
326 | - format.features["another"] = "optional" |
327 | + format.features[b"another"] = b"optional" |
328 | self.assertEqual(format.as_string(), |
329 | b"First line\n" |
330 | b"optional another\n" |
331 | |
332 | === modified file 'breezy/tests/test_chk_map.py' |
333 | --- breezy/tests/test_chk_map.py 2018-07-12 00:59:12 +0000 |
334 | +++ breezy/tests/test_chk_map.py 2018-08-07 21:08:25 +0000 |
335 | @@ -407,20 +407,20 @@ |
336 | map_two = CHKMap(store, None) |
337 | map_two._root_node.set_maximum_size(20) |
338 | self.assertMapLayoutEqual(map_one, map_two) |
339 | - map_one.map(b'aaa', b'value') |
340 | + map_one.map((b'aaa', ), b'value') |
341 | self.assertRaises(AssertionError, |
342 | self.assertMapLayoutEqual, map_one, map_two) |
343 | - map_two.map(b'aaa', b'value') |
344 | + map_two.map((b'aaa', ), b'value') |
345 | self.assertMapLayoutEqual(map_one, map_two) |
346 | # Split the tree, so we ensure that internal nodes and leaf nodes are |
347 | # properly checked |
348 | - map_one.map(b'aab', b'value') |
349 | + map_one.map((b'aab', ), b'value') |
350 | self.assertIsInstance(map_one._root_node, InternalNode) |
351 | self.assertRaises(AssertionError, |
352 | self.assertMapLayoutEqual, map_one, map_two) |
353 | - map_two.map(b'aab', b'value') |
354 | + map_two.map((b'aab', ), b'value') |
355 | self.assertMapLayoutEqual(map_one, map_two) |
356 | - map_one.map(b'aac', b'value') |
357 | + map_one.map((b'aac', ), b'value') |
358 | self.assertRaises(AssertionError, |
359 | self.assertMapLayoutEqual, map_one, map_two) |
360 | self.assertCanonicalForm(map_one) |
361 | @@ -434,7 +434,7 @@ |
362 | |
363 | def test_from_dict_ab(self): |
364 | chk_bytes = self.get_chk_bytes() |
365 | - root_key = CHKMap.from_dict(chk_bytes, {b"a": b"b"}) |
366 | + root_key = CHKMap.from_dict(chk_bytes, {(b"a", ): b"b"}) |
367 | # Check the data was saved and inserted correctly. |
368 | expected_root_key = self.assertHasABMap(chk_bytes) |
369 | self.assertEqual(expected_root_key, root_key) |
370 | @@ -445,7 +445,7 @@ |
371 | chk_bytes = self.get_chk_bytes() |
372 | root_key = CHKMap.from_dict(chk_bytes, {}) |
373 | chkmap = CHKMap(chk_bytes, root_key) |
374 | - new_root = chkmap.apply_delta([(None, b"a", b"b")]) |
375 | + new_root = chkmap.apply_delta([(None, (b"a", ), b"b")]) |
376 | # Check the data was saved and inserted correctly. |
377 | expected_root_key = self.assertHasABMap(chk_bytes) |
378 | self.assertEqual(expected_root_key, new_root) |
379 | @@ -1143,7 +1143,7 @@ |
380 | def test_iteritems_two_items(self): |
381 | chk_bytes = self.get_chk_bytes() |
382 | root_key = CHKMap.from_dict(chk_bytes, |
383 | - {b"a": b"content here", b"b": b"more content"}) |
384 | + {(b"a", ): b"content here", (b"b", ): b"more content"}) |
385 | chkmap = CHKMap(chk_bytes, root_key) |
386 | self.assertEqual([((b"a",), b"content here"), ((b"b",), b"more content")], |
387 | sorted(list(chkmap.iteritems()))) |
388 | @@ -1561,8 +1561,8 @@ |
389 | self.assertEqual(None, node.key()) |
390 | |
391 | def test_key_after_map(self): |
392 | - node = LeafNode.deserialise("chkleaf:\n10\n1\n0\n\n", ("sha1:1234",)) |
393 | - node.map(None, ("foo bar",), "baz quux") |
394 | + node = LeafNode.deserialise(b"chkleaf:\n10\n1\n0\n\n", (b"sha1:1234",)) |
395 | + node.map(None, (b"foo bar",), b"baz quux") |
396 | self.assertEqual(None, node.key()) |
397 | |
398 | def test_key_after_unmap(self): |
399 | |
400 | === modified file 'breezy/tests/test_commit.py' |
401 | --- breezy/tests/test_commit.py 2018-08-01 19:37:07 +0000 |
402 | +++ breezy/tests/test_commit.py 2018-08-07 21:08:25 +0000 |
403 | @@ -117,7 +117,7 @@ |
404 | with open('hello', 'w') as f: f.write('hello world') |
405 | wt.add('hello') |
406 | revid = wt.commit(message='add hello', rev_id=b'revid', lossy=True) |
407 | - self.assertEqual('revid', revid) |
408 | + self.assertEqual(b'revid', revid) |
409 | |
410 | def test_commit_lossy_foreign(self): |
411 | """Attempt a lossy commit to a foreign branch.""" |
412 | @@ -129,7 +129,7 @@ |
413 | wt.add('hello') |
414 | revid = wt.commit(message='add hello', lossy=True, |
415 | timestamp=1302659388, timezone=0) |
416 | - self.assertEqual(b'dummy-v1:1302659388.0-0-UNKNOWN', revid) |
417 | + self.assertEqual(b'dummy-v1:1302659388-0-UNKNOWN', revid) |
418 | |
419 | def test_commit_bound_lossy_foreign(self): |
420 | """Attempt a lossy commit to a bzr branch bound to a foreign branch.""" |
421 | @@ -142,10 +142,10 @@ |
422 | wt.add('hello') |
423 | revid = wt.commit(message='add hello', lossy=True, |
424 | timestamp=1302659388, timezone=0) |
425 | - self.assertEqual(b'dummy-v1:1302659388.0-0-0', revid) |
426 | - self.assertEqual(b'dummy-v1:1302659388.0-0-0', |
427 | + self.assertEqual(b'dummy-v1:1302659388-0-0', revid) |
428 | + self.assertEqual(b'dummy-v1:1302659388-0-0', |
429 | foreign_branch.last_revision()) |
430 | - self.assertEqual(b'dummy-v1:1302659388.0-0-0', |
431 | + self.assertEqual(b'dummy-v1:1302659388-0-0', |
432 | wt.branch.last_revision()) |
433 | |
434 | def test_missing_commit(self): |
435 | @@ -357,7 +357,7 @@ |
436 | with open('hello', 'w') as f: f.write((str(i) * 4) + '\n') |
437 | if i == 0: |
438 | wt.add(['hello'], [b'hello-id']) |
439 | - rev_id = 'test@rev-%d' % (i+1) |
440 | + rev_id = b'test@rev-%d' % (i+1) |
441 | rev_ids.append(rev_id) |
442 | wt.commit(message='rev %d' % (i+1), |
443 | rev_id=rev_id) |
444 | @@ -423,7 +423,7 @@ |
445 | wt = self.make_branch_and_tree('.') |
446 | branch = wt.branch |
447 | wt.commit("base", allow_pointless=True, rev_id=b'A') |
448 | - self.assertFalse(branch.repository.has_signature_for_revision_id('A')) |
449 | + self.assertFalse(branch.repository.has_signature_for_revision_id(b'A')) |
450 | try: |
451 | from ..testament import Testament |
452 | # monkey patch gpg signing mechanism |
453 | @@ -438,8 +438,8 @@ |
454 | return breezy.gpg.LoopbackGPGStrategy(None).sign( |
455 | text, breezy.gpg.MODE_CLEAR) |
456 | self.assertEqual(sign(Testament.from_revision(branch.repository, |
457 | - 'B').as_short_text()), |
458 | - branch.repository.get_signature_text('B')) |
459 | + b'B').as_short_text()), |
460 | + branch.repository.get_signature_text(b'B')) |
461 | finally: |
462 | breezy.gpg.GPGStrategy = oldstrategy |
463 | |
464 | |
465 | === modified file 'breezy/tests/test_config.py' |
466 | --- breezy/tests/test_config.py 2018-06-22 01:50:22 +0000 |
467 | +++ breezy/tests/test_config.py 2018-08-07 21:08:25 +0000 |
468 | @@ -1495,9 +1495,9 @@ |
469 | self.assertEqual('/environ-bzr', my_config.get_bzr_remote_path()) |
470 | |
471 | |
472 | -precedence_global = 'option = global' |
473 | -precedence_branch = 'option = branch' |
474 | -precedence_location = """ |
475 | +precedence_global = b'option = global' |
476 | +precedence_branch = b'option = branch' |
477 | +precedence_location = b""" |
478 | [http://] |
479 | recurse = true |
480 | option = recurse |
481 | |
482 | === modified file 'breezy/tests/test_conflicts.py' |
483 | --- breezy/tests/test_conflicts.py 2018-08-03 02:26:35 +0000 |
484 | +++ breezy/tests/test_conflicts.py 2018-08-07 21:08:25 +0000 |
485 | @@ -43,22 +43,22 @@ |
486 | # '\xc3\xae' == u'\xee' == i with hat |
487 | # So these are u'path' and 'id' only with a circle and a hat. (shappo?) |
488 | example_conflicts = conflicts.ConflictList( |
489 | - [conflicts.MissingParent('Not deleting', u'p\xe5thg', '\xc3\xaedg'), |
490 | - conflicts.ContentsConflict(u'p\xe5tha', None, '\xc3\xaeda'), |
491 | + [conflicts.MissingParent('Not deleting', u'p\xe5thg', b'\xc3\xaedg'), |
492 | + conflicts.ContentsConflict(u'p\xe5tha', None, b'\xc3\xaeda'), |
493 | conflicts.TextConflict(u'p\xe5tha'), |
494 | - conflicts.PathConflict(u'p\xe5thb', u'p\xe5thc', '\xc3\xaedb'), |
495 | + conflicts.PathConflict(u'p\xe5thb', u'p\xe5thc', b'\xc3\xaedb'), |
496 | conflicts.DuplicateID('Unversioned existing file', |
497 | u'p\xe5thc', u'p\xe5thc2', |
498 | - '\xc3\xaedc', '\xc3\xaedc'), |
499 | + b'\xc3\xaedc', b'\xc3\xaedc'), |
500 | conflicts.DuplicateEntry('Moved existing file to', |
501 | u'p\xe5thdd.moved', u'p\xe5thd', |
502 | - '\xc3\xaedd', None), |
503 | + b'\xc3\xaedd', None), |
504 | conflicts.ParentLoop('Cancelled move', u'p\xe5the', u'p\xe5th2e', |
505 | - None, '\xc3\xaed2e'), |
506 | + None, b'\xc3\xaed2e'), |
507 | conflicts.UnversionedParent('Versioned directory', |
508 | - u'p\xe5thf', '\xc3\xaedf'), |
509 | + u'p\xe5thf', b'\xc3\xaedf'), |
510 | conflicts.NonDirectoryParent('Created directory', |
511 | - u'p\xe5thg', '\xc3\xaedg'), |
512 | + u'p\xe5thg', b'\xc3\xaedg'), |
513 | ]) |
514 | |
515 | |
516 | @@ -933,18 +933,18 @@ |
517 | (dict(_base_actions='create_dir1_dir2'), |
518 | ('dir1_into_dir2', |
519 | dict(actions='move_dir1_into_dir2', check='dir1_moved', |
520 | - dir_id=b'dir1-id', target_id='dir2-id', xfail=False)), |
521 | + dir_id=b'dir1-id', target_id=b'dir2-id', xfail=False)), |
522 | ('dir2_into_dir1', |
523 | dict(actions='move_dir2_into_dir1', check='dir2_moved', |
524 | - dir_id=b'dir2-id', target_id='dir1-id', xfail=False))), |
525 | + dir_id=b'dir2-id', target_id=b'dir1-id', xfail=False))), |
526 | # Subdirs moved into each other |
527 | (dict(_base_actions='create_dir1_4'), |
528 | ('dir1_into_dir4', |
529 | dict(actions='move_dir1_into_dir4', check='dir1_2_moved', |
530 | - dir_id=b'dir1-id', target_id='dir4-id', xfail=True)), |
531 | + dir_id=b'dir1-id', target_id=b'dir4-id', xfail=True)), |
532 | ('dir3_into_dir2', |
533 | dict(actions='move_dir3_into_dir2', check='dir3_4_moved', |
534 | - dir_id=b'dir3-id', target_id='dir2-id', xfail=True))), |
535 | + dir_id=b'dir3-id', target_id=b'dir2-id', xfail=True))), |
536 | ]) |
537 | |
538 | def do_create_dir1_dir2(self): |
539 | |
540 | === modified file 'breezy/tests/test_email_message.py' |
541 | --- breezy/tests/test_email_message.py 2018-08-01 19:37:07 +0000 |
542 | +++ breezy/tests/test_email_message.py 2018-08-07 21:08:25 +0000 |
543 | @@ -23,6 +23,7 @@ |
544 | from .. import __version__ as _breezy_version |
545 | from ..email_message import EmailMessage |
546 | from ..errors import BzrBadParameterNotUnicode |
547 | +from ..sixish import text_type |
548 | from ..smtp_connection import SMTPConnection |
549 | from .. import tests |
550 | |
551 | @@ -110,10 +111,10 @@ |
552 | |
553 | def test_simple_message(self): |
554 | pairs = { |
555 | - 'body': SIMPLE_MESSAGE_ASCII, |
556 | + b'body': SIMPLE_MESSAGE_ASCII, |
557 | u'b\xf3dy': SIMPLE_MESSAGE_UTF8, |
558 | - 'b\xc3\xb3dy': SIMPLE_MESSAGE_UTF8, |
559 | - 'b\xf4dy': SIMPLE_MESSAGE_8BIT, |
560 | + b'b\xc3\xb3dy': SIMPLE_MESSAGE_UTF8, |
561 | + b'b\xf4dy': SIMPLE_MESSAGE_8BIT, |
562 | } |
563 | for body, expected in pairs.items(): |
564 | msg = EmailMessage('from@from.com', 'to@to.com', 'subject', body) |
565 | @@ -205,10 +206,9 @@ |
566 | def test_string_with_encoding(self): |
567 | pairs = { |
568 | u'Pepe': (b'Pepe', 'ascii'), |
569 | - u'P\xe9rez': ('P\xc3\xa9rez', 'utf-8'), |
570 | - 'Perez': ('Perez', 'ascii'), # u'Pepe' == 'Pepe' |
571 | - 'P\xc3\xa9rez': ('P\xc3\xa9rez', 'utf-8'), |
572 | - 'P\xe8rez': ('P\xe8rez', '8-bit'), |
573 | + u'P\xe9rez': (b'P\xc3\xa9rez', 'utf-8'), |
574 | + b'P\xc3\xa9rez': (b'P\xc3\xa9rez', 'utf-8'), |
575 | + b'P\xe8rez': (b'P\xe8rez', '8-bit'), |
576 | } |
577 | for string_, pair in pairs.items(): |
578 | self.assertEqual(pair, EmailMessage.string_with_encoding(string_)) |
579 | |
580 | === modified file 'breezy/tests/test_foreign.py' |
581 | --- breezy/tests/test_foreign.py 2018-07-22 17:06:14 +0000 |
582 | +++ breezy/tests/test_foreign.py 2018-08-07 21:08:25 +0000 |
583 | @@ -129,7 +129,7 @@ |
584 | mapping = DummyForeignVcsMapping(DummyForeignVcs()) |
585 | if self._lossy: |
586 | self._new_revision_id = mapping.revision_id_foreign_to_bzr( |
587 | - (str(self._timestamp).encode('ascii'), |
588 | + (b'%d' % self._timestamp, |
589 | str(self._timezone).encode('ascii'), b"UNKNOWN")) |
590 | self.random_revid = False |
591 | elif revid is not None: |
592 | @@ -198,7 +198,7 @@ |
593 | return (tree.get_file(path, file_id), None) |
594 | tree.get_file_with_stat = get_file_with_stat |
595 | new_revid = self.target.mapping.revision_id_foreign_to_bzr( |
596 | - (str(rev.timestamp).encode('ascii'), str(rev.timezone).encode('ascii'), |
597 | + (b'%d' % rev.timestamp, str(rev.timezone).encode('ascii'), |
598 | str(self.target.revno()).encode('ascii'))) |
599 | parent_revno, parent_revid= self.target.last_revision_info() |
600 | if parent_revid == revision.NULL_REVISION: |
601 | |
602 | === modified file 'breezy/tests/test_generate_ids.py' |
603 | --- breezy/tests/test_generate_ids.py 2018-08-01 19:37:07 +0000 |
604 | +++ breezy/tests/test_generate_ids.py 2018-08-07 21:08:25 +0000 |
605 | @@ -33,7 +33,7 @@ |
606 | file_id = generate_ids.gen_file_id(filename) |
607 | self.assertContainsRe(file_id, b'^'+regex+b'$') |
608 | # It should be a utf8 file_id, not a unicode one |
609 | - self.assertIsInstance(file_id, str) |
610 | + self.assertIsInstance(file_id, bytes) |
611 | # gen_file_id should always return ascii file ids. |
612 | file_id.decode('ascii') |
613 | |
614 | @@ -41,14 +41,14 @@ |
615 | gen_file_id = generate_ids.gen_file_id |
616 | |
617 | # We try to use the filename if possible |
618 | - self.assertStartsWith(gen_file_id(b'bar'), b'bar-') |
619 | + self.assertStartsWith(gen_file_id('bar'), b'bar-') |
620 | |
621 | # but we squash capitalization, and remove non word characters |
622 | - self.assertStartsWith(gen_file_id(b'Mwoo oof\t m'), b'mwoooofm-') |
623 | + self.assertStartsWith(gen_file_id('Mwoo oof\t m'), b'mwoooofm-') |
624 | |
625 | # We also remove leading '.' characters to prevent hidden file-ids |
626 | - self.assertStartsWith(gen_file_id(b'..gam.py'), b'gam.py-') |
627 | - self.assertStartsWith(gen_file_id(b'..Mwoo oof\t m'), b'mwoooofm-') |
628 | + self.assertStartsWith(gen_file_id('..gam.py'), b'gam.py-') |
629 | + self.assertStartsWith(gen_file_id('..Mwoo oof\t m'), b'mwoooofm-') |
630 | |
631 | # we remove unicode characters, and still don't end up with a |
632 | # hidden file id |
633 | @@ -61,18 +61,18 @@ |
634 | |
635 | # Test both case squashing and length restriction |
636 | fid = gen_file_id('A'*50 + '.txt') |
637 | - self.assertStartsWith(fid, 'a'*20 + '-') |
638 | + self.assertStartsWith(fid, b'a'*20 + b'-') |
639 | self.assertTrue(len(fid) < 60) |
640 | |
641 | # restricting length happens after the other actions, so |
642 | # we preserve as much as possible |
643 | fid = gen_file_id('\xe5\xb5..aBcd\tefGhijKLMnop\tqrstuvwxyz') |
644 | - self.assertStartsWith(fid, 'abcdefghijklmnopqrst-') |
645 | + self.assertStartsWith(fid, b'abcdefghijklmnopqrst-') |
646 | self.assertTrue(len(fid) < 60) |
647 | |
648 | def test_file_ids_are_ascii(self): |
649 | tail = br'-\d{14}-[a-z0-9]{16}-\d+' |
650 | - self.assertGenFileId(b'foo' + tail, b'foo') |
651 | + self.assertGenFileId(b'foo' + tail, 'foo') |
652 | self.assertGenFileId(b'foo' + tail, u'foo') |
653 | self.assertGenFileId(b'bar' + tail, u'bar') |
654 | self.assertGenFileId(b'br' + tail, u'b\xe5r') |
655 | |
656 | === modified file 'breezy/tests/test_http.py' |
657 | --- breezy/tests/test_http.py 2018-08-01 19:37:07 +0000 |
658 | +++ breezy/tests/test_http.py 2018-08-07 21:08:25 +0000 |
659 | @@ -2159,7 +2159,7 @@ |
660 | |
661 | def setUp(self): |
662 | super(TestNoReportActivity, self).setUp() |
663 | - self._transport =HttpTransport |
664 | + self._transport = HttpTransport |
665 | TestActivityMixin.setUp(self) |
666 | |
667 | def assertActivitiesMatch(self): |
668 | |
669 | === modified file 'breezy/tests/test_i18n.py' |
670 | --- breezy/tests/test_i18n.py 2018-08-01 19:37:07 +0000 |
671 | +++ breezy/tests/test_i18n.py 2018-08-07 21:08:25 +0000 |
672 | @@ -24,6 +24,7 @@ |
673 | errors, |
674 | workingtree, |
675 | ) |
676 | +from ..sixish import PY3 |
677 | |
678 | |
679 | class ZzzTranslations(object): |
680 | @@ -40,6 +41,9 @@ |
681 | def gettext(self, s): |
682 | return self.zzz(self._null_translation.gettext(s)) |
683 | |
684 | + def ngettext(self, s, p, n): |
685 | + return self.zzz(self._null_translation.ngettext(s, p, n)) |
686 | + |
687 | def ugettext(self, s): |
688 | return self.zzz(self._null_translation.ugettext(s)) |
689 | |
690 | @@ -59,16 +63,28 @@ |
691 | t = trans.zzz('msg') |
692 | self._check_exact(u'zz\xe5{{msg}}', t) |
693 | |
694 | - t = trans.ugettext('msg') |
695 | - self._check_exact(u'zz\xe5{{msg}}', t) |
696 | - |
697 | - t = trans.ungettext('msg1', 'msg2', 0) |
698 | - self._check_exact(u'zz\xe5{{msg2}}', t) |
699 | - t = trans.ungettext('msg1', 'msg2', 2) |
700 | - self._check_exact(u'zz\xe5{{msg2}}', t) |
701 | - |
702 | - t = trans.ungettext('msg1', 'msg2', 1) |
703 | - self._check_exact(u'zz\xe5{{msg1}}', t) |
704 | + if PY3: |
705 | + t = trans.gettext('msg') |
706 | + self._check_exact(u'zz\xe5{{msg}}', t) |
707 | + |
708 | + t = trans.ngettext('msg1', 'msg2', 0) |
709 | + self._check_exact(u'zz\xe5{{msg2}}', t) |
710 | + t = trans.ngettext('msg1', 'msg2', 2) |
711 | + self._check_exact(u'zz\xe5{{msg2}}', t) |
712 | + |
713 | + t = trans.ngettext('msg1', 'msg2', 1) |
714 | + self._check_exact(u'zz\xe5{{msg1}}', t) |
715 | + else: |
716 | + t = trans.ugettext('msg') |
717 | + self._check_exact(u'zz\xe5{{msg}}', t) |
718 | + |
719 | + t = trans.ungettext('msg1', 'msg2', 0) |
720 | + self._check_exact(u'zz\xe5{{msg2}}', t) |
721 | + t = trans.ungettext('msg1', 'msg2', 2) |
722 | + self._check_exact(u'zz\xe5{{msg2}}', t) |
723 | + |
724 | + t = trans.ungettext('msg1', 'msg2', 1) |
725 | + self._check_exact(u'zz\xe5{{msg1}}', t) |
726 | |
727 | |
728 | class TestGetText(tests.TestCase): |
729 | @@ -148,8 +164,11 @@ |
730 | workingtree.WorkingTree.open('./foo') |
731 | except errors.NotBranchError as e: |
732 | err = str(e) |
733 | - self.assertContainsRe(err, |
734 | - u"zz\xe5{{Not a branch: .*}}".encode("utf-8")) |
735 | + if PY3: |
736 | + self.assertContainsRe(err, u"zz\xe5{{Not a branch: .*}}") |
737 | + else: |
738 | + self.assertContainsRe( |
739 | + err, u"zz\xe5{{Not a branch: .*}}".encode('utf-8')) |
740 | |
741 | def test_topic_help_translation(self): |
742 | """does topic help get translated?""" |
743 | |
744 | === modified file 'breezy/tests/test_merge.py' |
745 | --- breezy/tests/test_merge.py 2018-07-15 18:45:17 +0000 |
746 | +++ breezy/tests/test_merge.py 2018-08-07 21:08:25 +0000 |
747 | @@ -3080,7 +3080,7 @@ |
748 | builder = self.make_builder() |
749 | builder.add_file(b'bar-id', builder.tree_root, 'bar', b'text1', True, |
750 | this=False) |
751 | - builder.add_dir(b'bar-dir', builder.tree_root, b'bar-id', |
752 | + builder.add_dir(b'bar-dir', builder.tree_root, 'bar-id', |
753 | base=False, other=False) |
754 | return builder |
755 | |
756 | |
757 | === modified file 'breezy/tests/test_options.py' |
758 | --- breezy/tests/test_options.py 2018-07-31 00:06:59 +0000 |
759 | +++ breezy/tests/test_options.py 2018-08-07 21:08:25 +0000 |
760 | @@ -81,7 +81,7 @@ |
761 | |
762 | def test_unknown_short_opt(self): |
763 | out, err = self.run_bzr('help -r', retcode=3) |
764 | - self.assertContainsRe(err, br'no such option') |
765 | + self.assertContainsRe(err, r'no such option') |
766 | |
767 | def test_set_short_name(self): |
768 | o = option.Option('wiggle') |
769 | |
770 | === modified file 'breezy/tests/test_reconfigure.py' |
771 | --- breezy/tests/test_reconfigure.py 2018-06-18 02:13:57 +0000 |
772 | +++ breezy/tests/test_reconfigure.py 2018-08-07 21:08:25 +0000 |
773 | @@ -385,7 +385,7 @@ |
774 | tree = workingtree.WorkingTree.open('root/tree') |
775 | repo = tree.branch.repository |
776 | self.assertRaises(errors.NoSuchRevision, repo.get_revision, |
777 | - 'dead-head-id') |
778 | + b'dead-head-id') |
779 | |
780 | def test_standalone_to_standalone(self): |
781 | tree = self.make_branch_and_tree('tree') |
782 | |
783 | === modified file 'breezy/tests/test_remote.py' |
784 | --- breezy/tests/test_remote.py 2018-07-25 21:49:15 +0000 |
785 | +++ breezy/tests/test_remote.py 2018-08-07 21:08:25 +0000 |
786 | @@ -1045,7 +1045,7 @@ |
787 | # XXX: It would be better to call fmt.initialize_on_transport_ex, but |
788 | # it's currently hard to test that without supplying a real remote |
789 | # transport connected to a real server. |
790 | - result = fmt._initialize_on_transport_ex_rpc(client, 'path', |
791 | + result = fmt._initialize_on_transport_ex_rpc(client, b'path', |
792 | transport, False, False, False, None, None, None, None, False) |
793 | self.assertFinished(client) |
794 | |
795 | @@ -1067,7 +1067,7 @@ |
796 | # it's currently hard to test that without supplying a real remote |
797 | # transport connected to a real server. |
798 | err = self.assertRaises(errors.PermissionDenied, |
799 | - fmt._initialize_on_transport_ex_rpc, client, 'path', transport, |
800 | + fmt._initialize_on_transport_ex_rpc, client, b'path', transport, |
801 | False, False, False, None, None, None, None, False) |
802 | self.assertEqual('path', err.path) |
803 | self.assertEqual(': extra info', err.extra) |
804 | @@ -1596,8 +1596,8 @@ |
805 | client = FakeClient(self.get_url()) |
806 | branch_network_name = self.get_branch_format().network_name() |
807 | client.add_expected_call( |
808 | - b'BzrDir.open_branchV3', ('stacked/',), |
809 | - b'success', ('branch', branch_network_name)) |
810 | + b'BzrDir.open_branchV3', (b'stacked/',), |
811 | + b'success', (b'branch', branch_network_name)) |
812 | client.add_expected_call( |
813 | b'BzrDir.find_repositoryV3', (b'stacked/',), |
814 | b'success', (b'ok', b'', b'yes', b'no', b'yes', network_name)) |
815 | @@ -1994,7 +1994,7 @@ |
816 | client.add_expected_call( |
817 | b'Branch.lock_write', (b'memory:///', b'', b''), |
818 | b'success', (b'ok', b'branch token', b'repo token')) |
819 | - encoded_dict_value = 'd5:ascii1:a11:unicode \xe2\x8c\x9a3:\xe2\x80\xbde' |
820 | + encoded_dict_value = b'd5:ascii1:a11:unicode \xe2\x8c\x9a3:\xe2\x80\xbde' |
821 | client.add_expected_call( |
822 | b'Branch.set_config_option_dict', (b'memory:///', b'branch token', |
823 | b'repo token', encoded_dict_value, b'foo', b''), |
824 | |
825 | === modified file 'breezy/tests/test_rename_map.py' |
826 | --- breezy/tests/test_rename_map.py 2018-07-24 21:44:05 +0000 |
827 | +++ breezy/tests/test_rename_map.py 2018-08-07 21:08:25 +0000 |
828 | @@ -46,8 +46,8 @@ |
829 | tree.add('a', b'a') |
830 | rn = RenameMap(tree) |
831 | rn.add_file_edge_hashes(tree, [b'a']) |
832 | - self.assertEqual({'a'}, rn.edge_hashes[myhash(('a\n', 'b\n'))]) |
833 | - self.assertEqual({'a'}, rn.edge_hashes[myhash(('b\n', 'c\n'))]) |
834 | + self.assertEqual({b'a'}, rn.edge_hashes[myhash(('a\n', 'b\n'))]) |
835 | + self.assertEqual({b'a'}, rn.edge_hashes[myhash(('b\n', 'c\n'))]) |
836 | self.assertIs(None, rn.edge_hashes.get(myhash(('c\n', 'd\n')))) |
837 | |
838 | def test_hitcounts(self): |
839 | @@ -63,8 +63,8 @@ |
840 | rn = RenameMap(tree) |
841 | rn.add_edge_hashes(self.a_lines, 'aid') |
842 | rn.add_edge_hashes(self.b_lines, 'bid') |
843 | - self.build_tree_contents([('tree/a', ''.join(self.a_lines))]) |
844 | - self.build_tree_contents([('tree/b', ''.join(self.b_lines))]) |
845 | + self.build_tree_contents([('tree/a', b''.join(self.a_lines))]) |
846 | + self.build_tree_contents([('tree/b', b''.join(self.b_lines))]) |
847 | self.assertEqual({'a': 'aid', 'b': 'bid'}, |
848 | rn.file_match(['a', 'b'])) |
849 | |
850 | |
851 | === modified file 'breezy/tests/test_repository.py' |
852 | --- breezy/tests/test_repository.py 2018-08-03 00:47:53 +0000 |
853 | +++ breezy/tests/test_repository.py 2018-08-07 21:08:25 +0000 |
854 | @@ -255,7 +255,7 @@ |
855 | tree.add(['foo'], [b'Nasty-IdC:'], ['file']) |
856 | tree.put_file_bytes_non_atomic('foo', b'') |
857 | tree.commit('1st post', rev_id=b'foo') |
858 | - self.assertHasKnit(t, b'knits/e8/%254easty-%2549d%2543%253a', |
859 | + self.assertHasKnit(t, 'knits/e8/%254easty-%2549d%2543%253a', |
860 | b'\nfoo fulltext 0 81 :') |
861 | |
862 | def assertHasKnit(self, t, knit_name, extra_content=b''): |
863 | @@ -265,9 +265,9 @@ |
864 | |
865 | def check_knits(self, t): |
866 | """check knit content for a repository.""" |
867 | - self.assertHasKnit(t, b'inventory') |
868 | - self.assertHasKnit(t, b'revisions') |
869 | - self.assertHasKnit(t, b'signatures') |
870 | + self.assertHasKnit(t, 'inventory') |
871 | + self.assertHasKnit(t, 'revisions') |
872 | + self.assertHasKnit(t, 'signatures') |
873 | |
874 | def test_shared_disk_layout(self): |
875 | control = bzrdir.BzrDirMetaFormat1().initialize(self.get_url()) |
876 | @@ -737,7 +737,7 @@ |
877 | (b'sha1:4ff91971043668583985aec83f4f0ab10a907d3f',), |
878 | (b'sha1:81e7324507c5ca132eedaf2d8414ee4bb2226187',), |
879 | (b'sha1:b101b7da280596c71a4540e9a1eeba8045985ee0',)}, |
880 | - simple_chk_records) |
881 | + set(simple_chk_records)) |
882 | # Now, when we do a similar call using 'get_stream_for_missing_keys' |
883 | # we should get a much larger set of pages. |
884 | missing = [('inventories', b'rev-2')] |
885 | @@ -956,13 +956,15 @@ |
886 | |
887 | def add_file(self, repo, inv, filename, revision, parents): |
888 | file_id = filename.encode('utf-8') + b'-id' |
889 | + content = [b'line\n'] |
890 | entry = inventory.InventoryFile(file_id, filename, b'TREE_ROOT') |
891 | entry.revision = revision |
892 | + entry.text_sha1 = osutils.sha_strings(content) |
893 | entry.text_size = 0 |
894 | inv.add(entry) |
895 | text_key = (file_id, revision) |
896 | parent_keys = [(file_id, parent) for parent in parents] |
897 | - repo.texts.add_lines(text_key, parent_keys, [b'line\n']) |
898 | + repo.texts.add_lines(text_key, parent_keys, content) |
899 | |
900 | def test_insert_from_broken_repo(self): |
901 | """Inserting a data stream from a broken repository won't silently |
902 | |
903 | === modified file 'breezy/tests/test_revert.py' |
904 | --- breezy/tests/test_revert.py 2018-07-07 19:27:38 +0000 |
905 | +++ breezy/tests/test_revert.py 2018-08-07 21:08:25 +0000 |
906 | @@ -103,7 +103,8 @@ |
907 | self.addCleanup(tree.unlock) |
908 | self.assertTrue(tree.is_executable('newfile')) |
909 | transform.revert(tree, tree.basis_tree(), None, backups=True) |
910 | - self.assertEqual('helooo!', tree.get_file('newfile').read()) |
911 | + with tree.get_file('newfile', 'rb') as f: |
912 | + self.assertEqual(b'helooo!', f.read()) |
913 | self.assertTrue(tree.is_executable('newfile')) |
914 | |
915 | def test_revert_executable(self): |
916 | |
917 | === modified file 'breezy/tests/test_selftest.py' |
918 | --- breezy/tests/test_selftest.py 2018-07-31 17:39:09 +0000 |
919 | +++ breezy/tests/test_selftest.py 2018-08-07 21:08:25 +0000 |
920 | @@ -18,6 +18,7 @@ |
921 | |
922 | import gc |
923 | import doctest |
924 | +from functools import reduce |
925 | import os |
926 | import signal |
927 | import sys |
928 | @@ -790,8 +791,8 @@ |
929 | |
930 | This is used to exercise the test framework. |
931 | """ |
932 | - self.time(text_type, 'hello', errors='replace') |
933 | - self.time(text_type, 'world', errors='replace') |
934 | + self.time(text_type, b'hello', errors='replace') |
935 | + self.time(text_type, b'world', errors='replace') |
936 | |
937 | def test_lsprofiling(self): |
938 | """Verbose test result prints lsprof statistics from test cases.""" |
939 | @@ -821,14 +822,20 @@ |
940 | # and then repeated but with 'world', rather than 'hello'. |
941 | # this should appear in the output stream of our test result. |
942 | output = result_stream.getvalue() |
943 | - self.assertContainsRe(output, |
944 | - r"LSProf output for <type 'unicode'>\(\('hello',\), {'errors': 'replace'}\)") |
945 | + if PY3: |
946 | + self.assertContainsRe(output, |
947 | + r"LSProf output for <class 'str'>\(\(b'hello',\), {'errors': 'replace'}\)") |
948 | + self.assertContainsRe(output, |
949 | + r"LSProf output for <class 'str'>\(\(b'world',\), {'errors': 'replace'}\)") |
950 | + else: |
951 | + self.assertContainsRe(output, |
952 | + r"LSProf output for <type 'unicode'>\(\('hello',\), {'errors': 'replace'}\)") |
953 | + self.assertContainsRe(output, |
954 | + r"LSProf output for <type 'unicode'>\(\('world',\), {'errors': 'replace'}\)\n") |
955 | self.assertContainsRe(output, |
956 | r" *CallCount *Recursive *Total\(ms\) *Inline\(ms\) *module:lineno\(function\)\n") |
957 | self.assertContainsRe(output, |
958 | r"( +1 +0 +0\.\d+ +0\.\d+ +<method 'disable' of '_lsprof\.Profiler' objects>\n)?") |
959 | - self.assertContainsRe(output, |
960 | - r"LSProf output for <type 'unicode'>\(\('world',\), {'errors': 'replace'}\)\n") |
961 | |
962 | def test_uses_time_from_testtools(self): |
963 | """Test case timings in verbose results should use testtools times""" |
964 | @@ -1912,9 +1919,14 @@ |
965 | self.assertRaises(AssertionError, self.assertIsInstance, 23.3, int) |
966 | e = self.assertRaises(AssertionError, |
967 | self.assertIsInstance, None, int, "it's just not") |
968 | - self.assertEqual(str(e), |
969 | - "None is an instance of <type 'NoneType'> rather than <type 'int'>" |
970 | - ": it's just not") |
971 | + if PY3: |
972 | + self.assertEqual(str(e), |
973 | + "None is an instance of <class 'NoneType'> rather than <class 'int'>: it's " |
974 | + "just not") |
975 | + else: |
976 | + self.assertEqual(str(e), |
977 | + "None is an instance of <type 'NoneType'> rather than <type 'int'>" |
978 | + ": it's just not") |
979 | |
980 | def test_assertEndsWith(self): |
981 | self.assertEndsWith('foo', 'oo') |
982 | @@ -2174,7 +2186,7 @@ |
983 | |
984 | def test_load_list(self): |
985 | # Provide a list with one test - this test. |
986 | - test_id_line = b'%s\n' % self.id() |
987 | + test_id_line = '%s\n' % self.id() |
988 | self.build_tree_contents([('test.list', test_id_line)]) |
989 | # And generate a list of the tests in the suite. |
990 | stream = self.run_selftest(load_list='test.list', list_only=True) |
991 | @@ -2862,7 +2874,7 @@ |
992 | out, err = self.run_bzr(["log", "%s/nonexistantpath" % url], retcode=3) |
993 | self.assertEqual(out, '') |
994 | self.assertContainsRe(err, |
995 | - b'brz: ERROR: Not a branch: ".*nonexistantpath/".\n') |
996 | + 'brz: ERROR: Not a branch: ".*nonexistantpath/".\n') |
997 | |
998 | |
999 | class TestTestLoader(tests.TestCase): |
1000 | |
1001 | === modified file 'breezy/tests/test_transform.py' |
1002 | --- breezy/tests/test_transform.py 2018-07-26 02:19:13 +0000 |
1003 | +++ breezy/tests/test_transform.py 2018-08-07 21:08:25 +0000 |
1004 | @@ -62,6 +62,7 @@ |
1005 | from ..mutabletree import MutableTree |
1006 | from ..sixish import ( |
1007 | BytesIO, |
1008 | + PY3, |
1009 | text_type, |
1010 | ) |
1011 | from . import ( |
1012 | @@ -2548,8 +2549,12 @@ |
1013 | new_globals.update(globals) |
1014 | new_func = types.FunctionType(func.__code__, new_globals, |
1015 | func.__name__, func.__defaults__) |
1016 | - setattr(instance, method_name, |
1017 | - types.MethodType(new_func, instance, instance.__class__)) |
1018 | + if PY3: |
1019 | + setattr(instance, method_name, |
1020 | + types.MethodType(new_func, instance)) |
1021 | + else: |
1022 | + setattr(instance, method_name, |
1023 | + types.MethodType(new_func, instance, instance.__class__)) |
1024 | self.addCleanup(delattr, instance, method_name) |
1025 | |
1026 | @staticmethod |
1027 | |
1028 | === modified file 'breezy/tests/test_upstream_import.py' |
1029 | --- breezy/tests/test_upstream_import.py 2018-07-19 22:29:27 +0000 |
1030 | +++ breezy/tests/test_upstream_import.py 2018-08-07 21:08:25 +0000 |
1031 | @@ -66,11 +66,11 @@ |
1032 | existing = fileobj.read() |
1033 | fileobj.seek(0) |
1034 | path = tempfile.mkdtemp(dir=os.getcwd()) |
1035 | - if existing != '': |
1036 | + if existing != b'': |
1037 | # copytree requires the directory not to exist |
1038 | os.rmdir(path) |
1039 | copytree(existing, path) |
1040 | - fileobj.write(path) |
1041 | + fileobj.write(path.encode('utf-8')) |
1042 | self.root = path |
1043 | |
1044 | def add(self, path): |
1045 | @@ -223,8 +223,7 @@ |
1046 | def archive_test(self, builder, importer, subdir=False): |
1047 | archive_file = self.make_archive(builder, subdir) |
1048 | tree = BzrDir.create_standalone_workingtree('tree') |
1049 | - tree.lock_write() |
1050 | - try: |
1051 | + with tree.lock_write(): |
1052 | importer(tree, archive_file) |
1053 | self.assertTrue(tree.is_versioned('README')) |
1054 | self.assertTrue(tree.is_versioned('FEEDME')) |
1055 | @@ -242,9 +241,6 @@ |
1056 | # Ensure the second version of the file is used. |
1057 | self.assertEqual(tree.get_file_text('README'), b'Wow?') |
1058 | self.assertTrue(not os.path.exists(tree.abspath('FEEDME'))) |
1059 | - finally: |
1060 | - tree.unlock() |
1061 | - |
1062 | |
1063 | def test_untar2(self): |
1064 | tar_file = self.make_messed_tar() |
1065 | |
1066 | === modified file 'breezy/tests/test_urlutils.py' |
1067 | --- breezy/tests/test_urlutils.py 2018-07-22 21:59:42 +0000 |
1068 | +++ breezy/tests/test_urlutils.py 2018-08-07 21:08:25 +0000 |
1069 | @@ -415,7 +415,7 @@ |
1070 | raise TestSkipped("local encoding cannot handle unicode") |
1071 | |
1072 | self.assertEqual('file:///D:/path/to/r%C3%A4ksm%C3%B6rg%C3%A5s', result) |
1073 | - self.assertFalse(isinstance(result, text_type)) |
1074 | + self.assertIsInstance(result, str) |
1075 | |
1076 | def test_win32_unc_path_to_url(self): |
1077 | self.requireFeature(features.win32_feature) |
1078 | @@ -654,7 +654,7 @@ |
1079 | def test_escape(self): |
1080 | self.assertEqual('%25', urlutils.escape('%')) |
1081 | self.assertEqual('%C3%A5', urlutils.escape(u'\xe5')) |
1082 | - self.assertFalse(isinstance(urlutils.escape(u'\xe5'), text_type)) |
1083 | + self.assertIsInstance(urlutils.escape(u'\xe5'), str) |
1084 | |
1085 | def test_escape_tildes(self): |
1086 | self.assertEqual('~foo', urlutils.escape('~foo')) |
1087 | @@ -1050,5 +1050,12 @@ |
1088 | |
1089 | def test_unquote(self): |
1090 | self.assertEqual('%', urlutils.unquote('%25')) |
1091 | - self.assertEqual('\xc3\xa5', urlutils.unquote('%C3%A5')) |
1092 | + if PY3: |
1093 | + self.assertEqual('\xe5', urlutils.unquote('%C3%A5')) |
1094 | + else: |
1095 | + self.assertEqual('\xc3\xa5', urlutils.unquote('%C3%A5')) |
1096 | self.assertEqual(u"\xe5", urlutils.unquote(u'\xe5')) |
1097 | + |
1098 | + def test_unquote_to_bytes(self): |
1099 | + self.assertEqual(b'%', urlutils.unquote_to_bytes('%25')) |
1100 | + self.assertEqual(b'\xc3\xa5', urlutils.unquote_to_bytes('%C3%A5')) |
1101 | |
1102 | === modified file 'breezy/tests/test_version.py' |
1103 | --- breezy/tests/test_version.py 2018-07-15 18:45:17 +0000 |
1104 | +++ breezy/tests/test_version.py 2018-08-07 21:08:25 +0000 |
1105 | @@ -25,8 +25,8 @@ |
1106 | workingtree, |
1107 | ) |
1108 | from ..sixish import ( |
1109 | - BytesIO, |
1110 | PY3, |
1111 | + StringIO, |
1112 | ) |
1113 | from .scenarios import load_tests_apply_scenarios |
1114 | |
1115 | @@ -53,7 +53,7 @@ |
1116 | |
1117 | def test_python_binary_path(self): |
1118 | self.permit_source_tree_branch_repo() |
1119 | - sio = BytesIO() |
1120 | + sio = StringIO() |
1121 | version.show_version(show_config=False, show_copyright=False, |
1122 | to_file=sio) |
1123 | out = sio.getvalue() |
1124 | |
1125 | === modified file 'breezy/tests/test_vf_search.py' |
1126 | --- breezy/tests/test_vf_search.py 2018-06-29 15:36:29 +0000 |
1127 | +++ breezy/tests/test_vf_search.py 2018-08-07 21:08:25 +0000 |
1128 | @@ -35,8 +35,8 @@ |
1129 | # rev3 / |
1130 | # | / |
1131 | # rev4 |
1132 | -ancestry_1 = {'rev1': [NULL_REVISION], 'rev2a': ['rev1'], 'rev2b': ['rev1'], |
1133 | - 'rev3': ['rev2a'], 'rev4': ['rev3', 'rev2b']} |
1134 | +ancestry_1 = {b'rev1': [NULL_REVISION], b'rev2a': [b'rev1'], b'rev2b': [b'rev1'], |
1135 | + b'rev3': [b'rev2a'], b'rev4': [b'rev3', b'rev2b']} |
1136 | |
1137 | # Ancestry 2: |
1138 | # |
1139 | @@ -49,8 +49,8 @@ |
1140 | # rev3a |
1141 | # | |
1142 | # rev4a |
1143 | -ancestry_2 = {'rev1a': [NULL_REVISION], 'rev2a': ['rev1a'], |
1144 | - 'rev1b': [NULL_REVISION], 'rev3a': ['rev2a'], 'rev4a': ['rev3a']} |
1145 | +ancestry_2 = {b'rev1a': [NULL_REVISION], b'rev2a': [b'rev1a'], |
1146 | + b'rev1b': [NULL_REVISION], b'rev3a': [b'rev2a'], b'rev4a': [b'rev3a']} |
1147 | |
1148 | |
1149 | # Extended history shortcut |
1150 | @@ -65,12 +65,12 @@ |
1151 | # d | |
1152 | # |\| |
1153 | # e f |
1154 | -extended_history_shortcut = {'a': [NULL_REVISION], |
1155 | - 'b': ['a'], |
1156 | - 'c': ['b'], |
1157 | - 'd': ['c'], |
1158 | - 'e': ['d'], |
1159 | - 'f': ['a', 'd'], |
1160 | +extended_history_shortcut = {b'a': [NULL_REVISION], |
1161 | + b'b': [b'a'], |
1162 | + b'c': [b'b'], |
1163 | + b'd': [b'c'], |
1164 | + b'e': [b'd'], |
1165 | + b'f': [b'a', b'd'], |
1166 | } |
1167 | |
1168 | |
1169 | @@ -83,18 +83,18 @@ |
1170 | # Used when pulling from a stacked repository, so test some revisions |
1171 | # being satisfied from the stacking branch. |
1172 | g = self.make_graph( |
1173 | - {"tip":["mid"], "mid":["base"], "tag":["base"], |
1174 | - "base":[NULL_REVISION], NULL_REVISION:[]}) |
1175 | - result = vf_search.SearchResult({'tip', 'tag'}, |
1176 | - {NULL_REVISION}, 4, {'tip', 'mid', 'tag', 'base'}) |
1177 | - result = result.refine({'tip'}, {'mid'}) |
1178 | + {b"tip": [b"mid"], b"mid": [b"base"], b"tag": [b"base"], |
1179 | + b"base": [NULL_REVISION], NULL_REVISION:[]}) |
1180 | + result = vf_search.SearchResult({b'tip', b'tag'}, |
1181 | + {NULL_REVISION}, 4, {b'tip', b'mid', b'tag', b'base'}) |
1182 | + result = result.refine({b'tip'}, {b'mid'}) |
1183 | recipe = result.get_recipe() |
1184 | # We should be starting from tag (original head) and mid (seen ref) |
1185 | - self.assertEqual({'mid', 'tag'}, recipe[1]) |
1186 | + self.assertEqual({b'mid', b'tag'}, recipe[1]) |
1187 | # We should be stopping at NULL (original stop) and tip (seen head) |
1188 | - self.assertEqual({NULL_REVISION, 'tip'}, recipe[2]) |
1189 | + self.assertEqual({NULL_REVISION, b'tip'}, recipe[2]) |
1190 | self.assertEqual(3, recipe[3]) |
1191 | - result = result.refine({'mid', 'tag', 'base'}, |
1192 | + result = result.refine({b'mid', b'tag', b'base'}, |
1193 | {NULL_REVISION}) |
1194 | recipe = result.get_recipe() |
1195 | # We should be starting from nothing (NULL was known as a cut point) |
1196 | @@ -103,7 +103,7 @@ |
1197 | # tag (seen head) and mid(seen mid-point head). We could come back and |
1198 | # define this as not including mid, for minimal results, but it is |
1199 | # still 'correct' to include mid, and simpler/easier. |
1200 | - self.assertEqual({NULL_REVISION, 'tip', 'tag', 'mid'}, recipe[2]) |
1201 | + self.assertEqual({NULL_REVISION, b'tip', b'tag', b'mid'}, recipe[2]) |
1202 | self.assertEqual(0, recipe[3]) |
1203 | self.assertTrue(result.is_empty()) |
1204 | |
1205 | @@ -122,30 +122,30 @@ |
1206 | self.assertSearchResult([], [], 0, None) |
1207 | |
1208 | def test_ancestry_1(self): |
1209 | - self.assertSearchResult(['rev4'], [NULL_REVISION], len(ancestry_1), |
1210 | + self.assertSearchResult([b'rev4'], [NULL_REVISION], len(ancestry_1), |
1211 | ancestry_1) |
1212 | |
1213 | def test_ancestry_2(self): |
1214 | - self.assertSearchResult(['rev1b', 'rev4a'], [NULL_REVISION], |
1215 | + self.assertSearchResult([b'rev1b', b'rev4a'], [NULL_REVISION], |
1216 | len(ancestry_2), ancestry_2) |
1217 | - self.assertSearchResult(['rev1b', 'rev4a'], [], |
1218 | + self.assertSearchResult([b'rev1b', b'rev4a'], [], |
1219 | len(ancestry_2)+1, ancestry_2, |
1220 | missing_keys=[NULL_REVISION]) |
1221 | |
1222 | def test_partial_search(self): |
1223 | parent_map = dict((k, extended_history_shortcut[k]) |
1224 | - for k in ['e', 'f']) |
1225 | - self.assertSearchResult(['e', 'f'], ['d', 'a'], 2, |
1226 | + for k in [b'e', b'f']) |
1227 | + self.assertSearchResult([b'e', b'f'], [b'd', b'a'], 2, |
1228 | parent_map) |
1229 | parent_map.update((k, extended_history_shortcut[k]) |
1230 | - for k in ['d', 'a']) |
1231 | - self.assertSearchResult(['e', 'f'], ['c', NULL_REVISION], 4, |
1232 | + for k in [b'd', b'a']) |
1233 | + self.assertSearchResult([b'e', b'f'], [b'c', NULL_REVISION], 4, |
1234 | parent_map) |
1235 | - parent_map['c'] = extended_history_shortcut['c'] |
1236 | - self.assertSearchResult(['e', 'f'], ['b'], 6, |
1237 | + parent_map[b'c'] = extended_history_shortcut[b'c'] |
1238 | + self.assertSearchResult([b'e', b'f'], [b'b'], 6, |
1239 | parent_map, missing_keys=[NULL_REVISION]) |
1240 | - parent_map['b'] = extended_history_shortcut['b'] |
1241 | - self.assertSearchResult(['e', 'f'], [], 7, |
1242 | + parent_map[b'b'] = extended_history_shortcut[b'b'] |
1243 | + self.assertSearchResult([b'e', b'f'], [], 7, |
1244 | parent_map, missing_keys=[NULL_REVISION]) |
1245 | |
1246 | |
1247 | @@ -159,24 +159,24 @@ |
1248 | (sorted(start), sorted(stop), count)) |
1249 | |
1250 | def test_empty_ancestry(self): |
1251 | - self.assertSearchResult([], [], 0, {}, (), ['tip-rev-id'], 10) |
1252 | + self.assertSearchResult([], [], 0, {}, (), [b'tip-rev-id'], 10) |
1253 | |
1254 | def test_ancestry_1(self): |
1255 | - self.assertSearchResult(['rev4'], ['rev1'], 4, |
1256 | - ancestry_1, (), ['rev1'], 10) |
1257 | - self.assertSearchResult(['rev2a', 'rev2b'], ['rev1'], 2, |
1258 | - ancestry_1, (), ['rev1'], 1) |
1259 | + self.assertSearchResult([b'rev4'], [b'rev1'], 4, |
1260 | + ancestry_1, (), [b'rev1'], 10) |
1261 | + self.assertSearchResult([b'rev2a', b'rev2b'], [b'rev1'], 2, |
1262 | + ancestry_1, (), [b'rev1'], 1) |
1263 | |
1264 | |
1265 | def test_multiple_heads(self): |
1266 | - self.assertSearchResult(['e', 'f'], ['a'], 5, |
1267 | - extended_history_shortcut, (), ['a'], 10) |
1268 | + self.assertSearchResult([b'e', b'f'], [b'a'], 5, |
1269 | + extended_history_shortcut, (), [b'a'], 10) |
1270 | # Note that even though we only take 1 step back, we find 'f', which |
1271 | # means the described search will still find d and c. |
1272 | - self.assertSearchResult(['f'], ['a'], 4, |
1273 | - extended_history_shortcut, (), ['a'], 1) |
1274 | - self.assertSearchResult(['f'], ['a'], 4, |
1275 | - extended_history_shortcut, (), ['a'], 2) |
1276 | + self.assertSearchResult([b'f'], [b'a'], 4, |
1277 | + extended_history_shortcut, (), [b'a'], 1) |
1278 | + self.assertSearchResult([b'f'], [b'a'], 4, |
1279 | + extended_history_shortcut, (), [b'a'], 2) |
1280 | |
1281 | |
1282 | class TestPendingAncestryResultRefine(tests.TestCase): |
1283 | @@ -188,12 +188,12 @@ |
1284 | # Used when pulling from a stacked repository, so test some revisions |
1285 | # being satisfied from the stacking branch. |
1286 | g = self.make_graph( |
1287 | - {"tip":["mid"], "mid":["base"], "tag":["base"], |
1288 | - "base":[NULL_REVISION], NULL_REVISION:[]}) |
1289 | - result = vf_search.PendingAncestryResult(['tip', 'tag'], None) |
1290 | - result = result.refine({'tip'}, {'mid'}) |
1291 | - self.assertEqual({'mid', 'tag'}, result.heads) |
1292 | - result = result.refine({'mid', 'tag', 'base'}, |
1293 | + {b"tip": [b"mid"], b"mid": [b"base"], b"tag": [b"base"], |
1294 | + b"base":[NULL_REVISION], NULL_REVISION:[]}) |
1295 | + result = vf_search.PendingAncestryResult([b'tip', b'tag'], None) |
1296 | + result = result.refine({b'tip'}, {b'mid'}) |
1297 | + self.assertEqual({b'mid', b'tag'}, result.heads) |
1298 | + result = result.refine({b'mid', b'tag', b'base'}, |
1299 | {NULL_REVISION}) |
1300 | self.assertEqual({NULL_REVISION}, result.heads) |
1301 | self.assertTrue(result.is_empty()) |
1302 | @@ -236,8 +236,8 @@ |
1303 | # ancestries. |
1304 | class StubGraph(object): |
1305 | def iter_ancestry(self, keys): |
1306 | - return [(NULL_REVISION, ()), ('foo', (NULL_REVISION,))] |
1307 | - result = vf_search.PendingAncestryResult(['rev-3'], None) |
1308 | + return [(NULL_REVISION, ()), (b'foo', (NULL_REVISION,))] |
1309 | + result = vf_search.PendingAncestryResult([b'rev-3'], None) |
1310 | result_keys = result._get_keys(StubGraph()) |
1311 | # Only the non-null keys from the ancestry appear. |
1312 | - self.assertEqual({'foo'}, set(result_keys)) |
1313 | + self.assertEqual({b'foo'}, set(result_keys)) |
1314 | |
1315 | === modified file 'breezy/transform.py' |
1316 | --- breezy/transform.py 2018-08-03 00:47:53 +0000 |
1317 | +++ breezy/transform.py 2018-08-07 21:08:25 +0000 |
1318 | @@ -1003,7 +1003,11 @@ |
1319 | (from_name, to_name), |
1320 | (from_kind, to_kind), |
1321 | (from_executable, to_executable))) |
1322 | - return iter(sorted(results, key=lambda x:x[1])) |
1323 | + |
1324 | + def path_key(t): |
1325 | + paths = t[1] |
1326 | + return (paths[0] or '', paths[1] or '') |
1327 | + return iter(sorted(results, key=path_key)) |
1328 | |
1329 | def get_preview_tree(self): |
1330 | """Return a tree representing the result of the transform. |
1331 | |
1332 | === modified file 'breezy/transport/http/response.py' |
1333 | --- breezy/transport/http/response.py 2018-08-01 19:37:07 +0000 |
1334 | +++ breezy/transport/http/response.py 2018-08-07 21:08:25 +0000 |
1335 | @@ -209,7 +209,7 @@ |
1336 | % (self._boundary, boundary_line)) |
1337 | |
1338 | def _unquote_boundary(self, b): |
1339 | - return b[:2] + email_utils.unquote(b[2:-2]) + b[-2:] |
1340 | + return b[:2] + email_utils.unquote(b[2:-2].decode('ascii')).encode('ascii') + b[-2:] |
1341 | |
1342 | def read_range_definition(self): |
1343 | """Read a new range definition in a multi parts message. |
1344 | |
1345 | === modified file 'breezy/upstream_import.py' |
1346 | --- breezy/upstream_import.py 2018-07-22 17:06:14 +0000 |
1347 | +++ breezy/upstream_import.py 2018-08-07 21:08:25 +0000 |
1348 | @@ -107,7 +107,7 @@ |
1349 | if mode != 'r': |
1350 | raise AssertionError( |
1351 | 'only readonly supported') |
1352 | - self.root = os.path.realpath(fileobj.read()) |
1353 | + self.root = os.path.realpath(fileobj.read().decode('utf-8')) |
1354 | |
1355 | def __repr__(self): |
1356 | return 'DirWrapper(%r)' % self.root |
1357 | @@ -331,7 +331,7 @@ |
1358 | archive, external_compressor = get_archive_type(source) |
1359 | except NotArchiveType: |
1360 | if file_kind(source) == 'directory': |
1361 | - s = StringIO(source) |
1362 | + s = BytesIO(source.encode('utf-8')) |
1363 | s.seek(0) |
1364 | import_dir(tree, s) |
1365 | else: |
1366 | |
1367 | === modified file 'breezy/urlutils.py' |
1368 | --- breezy/urlutils.py 2018-07-23 22:25:11 +0000 |
1369 | +++ breezy/urlutils.py 2018-08-07 21:08:25 +0000 |
1370 | @@ -422,7 +422,7 @@ |
1371 | if path_chars[i] not in _url_safe_characters: |
1372 | chars = path_chars[i].encode('utf-8') |
1373 | path_chars[i] = ''.join( |
1374 | - ['%%%02X' % ord(c) for c in path_chars[i].encode('utf-8')]) |
1375 | + ['%%%02X' % c for c in bytearray(path_chars[i].encode('utf-8'))]) |
1376 | path = ''.join(path_chars) |
1377 | path = _url_hex_escapes_re.sub(_unescape_safe_chars, path) |
1378 | return str(prefix + path) |
1379 | |
1380 | === modified file 'python3.passing' |
1381 | --- python3.passing 2018-08-07 19:37:29 +0000 |
1382 | +++ python3.passing 2018-08-07 21:08:25 +0000 |
1383 | @@ -387,6 +387,7 @@ |
1384 | breezy.plugins.fastimport.tests.test_revision_store.Test_TreeShim.test_id2path_no_delta |
1385 | breezy.plugins.fastimport.tests.test_revision_store.Test_TreeShim.test_id2path_with_delta |
1386 | breezy.plugins.fastimport.tests.test_revision_store.Test_TreeShim.test_path2id |
1387 | +breezy.plugins.git.tests.test_blackbox.ShallowTests.test_log_shallow |
1388 | breezy.plugins.git.tests.test_blackbox.ShallowTests.test_version_info_custom_without_revno |
1389 | breezy.plugins.git.tests.test_blackbox.ShallowTests.test_version_info_custom_with_revno |
1390 | breezy.plugins.git.tests.test_blackbox.ShallowTests.test_version_info_python |
1391 | @@ -1222,6 +1223,7 @@ |
1392 | breezy.plugins.weave_fmt.test_bzrdir.TestFormat6.test_same_lockfiles_between_tree_repo_branch |
1393 | breezy.plugins.weave_fmt.test_bzrdir.TestInfo.test_info_locking_oslocks |
1394 | breezy.plugins.weave_fmt.test_bzrdir.TestInit.test_init_weave |
1395 | +breezy.plugins.weave_fmt.test_bzrdir.TestUpgrade.test_upgrade_makes_dir_weaves |
1396 | breezy.plugins.weave_fmt.test_bzrdir.TestUpgrade.test_upgrade_simple |
1397 | breezy.plugins.weave_fmt.test_bzrdir.TestUpgrade.test_upgrade_to_meta_sets_workingtree_last_revision |
1398 | breezy.plugins.weave_fmt.test_bzrdir.TestUpgrade.test_upgrade_v6_to_meta_no_workingtree |
1399 | @@ -2563,6 +2565,7 @@ |
1400 | breezy.tests.blackbox.test_sign_my_commits.SignMyCommits.test_sign_dry_run |
1401 | breezy.tests.blackbox.test_sign_my_commits.SignMyCommits.test_sign_my_commits |
1402 | breezy.tests.blackbox.test_sign_my_commits.SignMyCommits.test_sign_my_commits_location |
1403 | +breezy.tests.blackbox.test_sign_my_commits.TestSmartServerSignMyCommits.test_sign_single_commit |
1404 | breezy.tests.blackbox.test_split.TestSplit.test_split |
1405 | breezy.tests.blackbox.test_split.TestSplit.test_split_repo_failure |
1406 | breezy.tests.blackbox.test_split.TestSplit.test_split_rich_root |
1407 | @@ -2746,6 +2749,7 @@ |
1408 | breezy.tests.blackbox.test_upgrade.UpgradeRecommendedTests.test_no_upgrade_recommendation_from_bzrdir |
1409 | breezy.tests.blackbox.test_upgrade.UpgradeRecommendedTests.test_recommend_upgrade_wt4 |
1410 | breezy.tests.blackbox.test_upgrade.UpgradeRecommendedTests.test_upgrade_shared_repo |
1411 | +breezy.tests.blackbox.test_verify_signatures.TestSmartServerVerifySignatures.test_verify_signatures |
1412 | breezy.tests.blackbox.test_verify_signatures.TestVerifySignatures.test_verify_signatures |
1413 | breezy.tests.blackbox.test_verify_signatures.TestVerifySignatures.test_verify_signatures_acceptable_key |
1414 | breezy.tests.blackbox.test_verify_signatures.TestVerifySignatures.test_verify_signatures_verbose |
1415 | @@ -8388,6 +8392,10 @@ |
1416 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_versioned_symlinks(InterDirStateTree(C)) |
1417 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_versioned_symlinks(InterTree(CHKInventory)) |
1418 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_versioned_symlinks_specific_files(InterDirStateTree(C)) |
1419 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_versioned_symlinks_specific_files(InterDirStateTree(PY)) |
1420 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_versioned_symlinks_specific_files(InterTree) |
1421 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_versioned_symlinks_specific_files(InterTree(CHKInventory)) |
1422 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_versioned_symlinks_specific_files(InterTree(PreviewTree)) |
1423 | breezy.tests.per_intertree.test_file_content_matches.TestFileContentMatches.test_different_contents_and_same_verifier(InterDirStateTree(C)) |
1424 | breezy.tests.per_intertree.test_file_content_matches.TestFileContentMatches.test_different_contents_and_same_verifier(InterDirStateTree(PY)) |
1425 | breezy.tests.per_intertree.test_file_content_matches.TestFileContentMatches.test_different_contents_and_same_verifier(InterTree) |
1426 | @@ -9104,6 +9112,10 @@ |
1427 | breezy.tests.per_repository_reference.test_fetch.TestFetch.test_sprout_from_stacked_with_short_history(RepositoryFormatKnitPack6) |
1428 | breezy.tests.per_repository_reference.test_fetch.TestFetch.test_sprout_from_stacked_with_short_history(RepositoryFormatKnitPack6RichRoot) |
1429 | breezy.tests.per_repository_reference.test_fetch.TestFetch.test_sprout_from_stacked_with_short_history(RepositoryFormatPackDevelopment2Subtree) |
1430 | +breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_fulltext_complex(RemoteRepositoryFormat-default) |
1431 | +breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_fulltext_complex(RemoteRepositoryFormat-v2) |
1432 | +breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_fulltext_complex(RepositoryFormat2a) |
1433 | +breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_fulltext_complex(RepositoryFormat2aSubtree) |
1434 | breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_fulltext_simple(RemoteRepositoryFormat-default) |
1435 | breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_fulltext_simple(RemoteRepositoryFormat-v2) |
1436 | breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_fulltext_simple(RepositoryFormat2a) |
1437 | @@ -9114,6 +9126,14 @@ |
1438 | breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_fulltext_simple(RepositoryFormatKnitPack6) |
1439 | breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_fulltext_simple(RepositoryFormatKnitPack6RichRoot) |
1440 | breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_fulltext_simple(RepositoryFormatPackDevelopment2Subtree) |
1441 | +breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_no_closure(RemoteRepositoryFormat-default) |
1442 | +breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_no_closure(RemoteRepositoryFormat-v2) |
1443 | +breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_no_closure(RepositoryFormat2a) |
1444 | +breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_no_closure(RepositoryFormat2aSubtree) |
1445 | +breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_unordered_fetch_complex_split(RemoteRepositoryFormat-default) |
1446 | +breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_unordered_fetch_complex_split(RemoteRepositoryFormat-v2) |
1447 | +breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_unordered_fetch_complex_split(RepositoryFormat2a) |
1448 | +breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_unordered_fetch_complex_split(RepositoryFormat2aSubtree) |
1449 | breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_no_closure(RepositoryFormatKnitPack5) |
1450 | breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_no_closure(RepositoryFormatKnitPack5RichRoot) |
1451 | breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_no_closure(RepositoryFormatKnitPack5RichRootBroken) |
1452 | @@ -12130,6 +12150,21 @@ |
1453 | breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_control_characters(RepositoryFormat2a) |
1454 | breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_control_characters(RepositoryFormat2aSubtree) |
1455 | breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_control_characters(RepositoryFormat4) |
1456 | +breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_control_characters(RepositoryFormat5) |
1457 | +breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_control_characters(RepositoryFormat6) |
1458 | +breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_control_characters(RepositoryFormat7) |
1459 | +breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_control_characters(RepositoryFormatKnit1) |
1460 | +breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_control_characters(RepositoryFormatKnit3) |
1461 | +breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_control_characters(RepositoryFormatKnit4) |
1462 | +breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_control_characters(RepositoryFormatKnitPack1) |
1463 | +breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_control_characters(RepositoryFormatKnitPack3) |
1464 | +breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_control_characters(RepositoryFormatKnitPack4) |
1465 | +breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_control_characters(RepositoryFormatKnitPack5) |
1466 | +breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_control_characters(RepositoryFormatKnitPack5RichRoot) |
1467 | +breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_control_characters(RepositoryFormatKnitPack5RichRootBroken) |
1468 | +breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_control_characters(RepositoryFormatKnitPack6) |
1469 | +breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_control_characters(RepositoryFormatKnitPack6RichRoot) |
1470 | +breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_control_characters(RepositoryFormatPackDevelopment2Subtree) |
1471 | breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_message(GitRepositoryFormat) |
1472 | breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_message(RemoteRepositoryFormat-default) |
1473 | breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_message(RemoteRepositoryFormat-v2) |
1474 | @@ -12992,6 +13027,7 @@ |
1475 | breezy.tests.per_repository.test_signatures.TestSignatures.test_sign_existing_revision(RepositoryFormatKnitPack6RichRoot) |
1476 | breezy.tests.per_repository.test_signatures.TestSignatures.test_sign_existing_revision(RepositoryFormatPackDevelopment2Subtree) |
1477 | breezy.tests.per_repository.test_signatures.TestSignatures.test_store_signature(GitRepositoryFormat) |
1478 | +breezy.tests.per_repository.test_signatures.TestSignatures.test_store_signature(RemoteRepositoryFormat-default) |
1479 | breezy.tests.per_repository.test_signatures.TestSignatures.test_store_signature(RemoteRepositoryFormat-v2) |
1480 | breezy.tests.per_repository.test_signatures.TestSignatures.test_store_signature(RepositoryFormat2a) |
1481 | breezy.tests.per_repository.test_signatures.TestSignatures.test_store_signature(RepositoryFormat2aSubtree) |
1482 | @@ -18178,6 +18214,8 @@ |
1483 | breezy.tests.per_tree.test_tree.TestSupportsVersionableKind.test_unknown(WorkingTreeFormat5) |
1484 | breezy.tests.per_tree.test_tree.TestSupportsVersionableKind.test_unknown(WorkingTreeFormat6) |
1485 | breezy.tests.per_tree.test_tree.TestSupportsVersionableKind.test_unknown(WorkingTreeFormat6,remote) |
1486 | +breezy.tests.per_tree.test_walkdirs.TestWalkdirs.test_walkdir_root(DirStateRevisionTree,WT4) |
1487 | +breezy.tests.per_tree.test_walkdirs.TestWalkdirs.test_walkdir_root(DirStateRevisionTree,WT5) |
1488 | breezy.tests.per_tree.test_walkdirs.TestWalkdirs.test_walkdir_root(GitWorkingTreeFormat) |
1489 | breezy.tests.per_tree.test_walkdirs.TestWalkdirs.test_walkdir_root(PreviewTree) |
1490 | breezy.tests.per_tree.test_walkdirs.TestWalkdirs.test_walkdir_root(PreviewTreePost) |
1491 | @@ -18188,6 +18226,8 @@ |
1492 | breezy.tests.per_tree.test_walkdirs.TestWalkdirs.test_walkdir_root(WorkingTreeFormat5) |
1493 | breezy.tests.per_tree.test_walkdirs.TestWalkdirs.test_walkdir_root(WorkingTreeFormat6) |
1494 | breezy.tests.per_tree.test_walkdirs.TestWalkdirs.test_walkdir_root(WorkingTreeFormat6,remote) |
1495 | +breezy.tests.per_tree.test_walkdirs.TestWalkdirs.test_walkdir_subtree(DirStateRevisionTree,WT4) |
1496 | +breezy.tests.per_tree.test_walkdirs.TestWalkdirs.test_walkdir_subtree(DirStateRevisionTree,WT5) |
1497 | breezy.tests.per_tree.test_walkdirs.TestWalkdirs.test_walkdir_subtree(GitWorkingTreeFormat) |
1498 | breezy.tests.per_tree.test_walkdirs.TestWalkdirs.test_walkdir_subtree(PreviewTree) |
1499 | breezy.tests.per_tree.test_walkdirs.TestWalkdirs.test_walkdir_subtree(PreviewTreePost) |
1500 | @@ -20582,6 +20622,12 @@ |
1501 | breezy.tests.per_workingtree.test_parents.UpdateToOneParentViaDeltaTests.test_removes(WorkingTreeFormat6) |
1502 | breezy.tests.per_workingtree.test_parents.UpdateToOneParentViaDeltaTests.test_removes(WorkingTreeFormat6,remote) |
1503 | breezy.tests.per_workingtree.test_paths2ids.TestPaths2Ids.test_find_children_of_moved_directories(GitWorkingTreeFormat) |
1504 | +breezy.tests.per_workingtree.test_paths2ids.TestPaths2Ids.test_find_children_of_moved_directories(WorkingTreeFormat2) |
1505 | +breezy.tests.per_workingtree.test_paths2ids.TestPaths2Ids.test_find_children_of_moved_directories(WorkingTreeFormat3) |
1506 | +breezy.tests.per_workingtree.test_paths2ids.TestPaths2Ids.test_find_children_of_moved_directories(WorkingTreeFormat4) |
1507 | +breezy.tests.per_workingtree.test_paths2ids.TestPaths2Ids.test_find_children_of_moved_directories(WorkingTreeFormat5) |
1508 | +breezy.tests.per_workingtree.test_paths2ids.TestPaths2Ids.test_find_children_of_moved_directories(WorkingTreeFormat6) |
1509 | +breezy.tests.per_workingtree.test_paths2ids.TestPaths2Ids.test_find_children_of_moved_directories(WorkingTreeFormat6,remote) |
1510 | breezy.tests.per_workingtree.test_paths2ids.TestPaths2Ids.test_find_single_root(GitWorkingTreeFormat) |
1511 | breezy.tests.per_workingtree.test_paths2ids.TestPaths2Ids.test_find_single_root(WorkingTreeFormat2) |
1512 | breezy.tests.per_workingtree.test_paths2ids.TestPaths2Ids.test_find_single_root(WorkingTreeFormat3) |
1513 | @@ -21556,6 +21602,7 @@ |
1514 | breezy.tests.per_workingtree.test_workingtree.TestFormatAttributes.test_versioned_directories(WorkingTreeFormat5) |
1515 | breezy.tests.per_workingtree.test_workingtree.TestFormatAttributes.test_versioned_directories(WorkingTreeFormat6) |
1516 | breezy.tests.per_workingtree.test_workingtree.TestFormatAttributes.test_versioned_directories(WorkingTreeFormat6,remote) |
1517 | +breezy.tests.per_workingtree.test_workingtree.TestIllegalPaths.test_bad_fs_path(GitWorkingTreeFormat) |
1518 | breezy.tests.per_workingtree.test_workingtree.TestWorkingTree.test_add_conflicts(GitWorkingTreeFormat) |
1519 | breezy.tests.per_workingtree.test_workingtree.TestWorkingTree.test_add_conflicts(WorkingTreeFormat2) |
1520 | breezy.tests.per_workingtree.test_workingtree.TestWorkingTree.test_add_conflicts(WorkingTreeFormat3) |
1521 | @@ -22525,6 +22572,7 @@ |
1522 | breezy.tests.test_bzrdir.TestBzrDirHooks.test_pre_open_called |
1523 | breezy.tests.test_bzrdir.TestBzrDirSprout.test_sprout_parent |
1524 | breezy.tests.test_bzrdir.TestBzrDirSprout.test_sprout_uses_branch_sprout |
1525 | +breezy.tests.test_bzrdir.TestBzrFormat.test_as_string |
1526 | breezy.tests.test_bzrdir.TestBzrFormat.test_check_support_status_optional |
1527 | breezy.tests.test_bzrdir.TestBzrFormat.test_check_support_status_required |
1528 | breezy.tests.test_bzrdir.TestBzrFormat.test_check_support_status_unknown |
1529 | @@ -22538,11 +22586,14 @@ |
1530 | breezy.tests.test_bzrdir.TestBzrFormat.test_from_string_with_spaces |
1531 | breezy.tests.test_bzrdir.TestBzrFormat.test_network_name |
1532 | breezy.tests.test_bzrdir.TestDefaultFormat.test_get_set_default_format |
1533 | +breezy.tests.test_bzrdir.TestDotBzrHidden.test_dot_bzr_hidden |
1534 | +breezy.tests.test_bzrdir.TestDotBzrHidden.test_dot_bzr_hidden_with_url |
1535 | breezy.tests.test_bzrdir.TestFormatRegistry.test_aliases |
1536 | breezy.tests.test_bzrdir.TestFormatRegistry.test_format_registry |
1537 | breezy.tests.test_bzrdir.TestFormatRegistry.test_get_help |
1538 | breezy.tests.test_bzrdir.TestFormatRegistry.test_help_topic |
1539 | breezy.tests.test_bzrdir.TestFormatRegistry.test_set_default_repository |
1540 | +breezy.tests.test_bzrdir.TestGenerateBackupName.test_exiting |
1541 | breezy.tests.test_bzrdir.TestGenerateBackupName.test_new |
1542 | breezy.tests.test_bzrdir.TestHTTPRedirections_nosmart.test_loop |
1543 | breezy.tests.test_bzrdir.TestHTTPRedirections_nosmart.test_qualifier_preserved |
1544 | @@ -22666,6 +22717,7 @@ |
1545 | breezy.tests.test_chk_map.TestLeafNode.test_deserialise_item_with_null_width_2 |
1546 | breezy.tests.test_chk_map.TestLeafNode.test_deserialise_multi_line |
1547 | breezy.tests.test_chk_map.TestLeafNode.test_iteritems_selected_one_of_two_items |
1548 | +breezy.tests.test_chk_map.TestLeafNode.test_key_after_map |
1549 | breezy.tests.test_chk_map.TestLeafNode.test_key_after_unmap |
1550 | breezy.tests.test_chk_map.TestLeafNode.test_key_new |
1551 | breezy.tests.test_chk_map.TestLeafNode.test_map_exceeding_max_size_only_entry_new |
1552 | @@ -22689,10 +22741,12 @@ |
1553 | breezy.tests.test_chk_map.TestMapSearchKeys.test_search_key_with_internal_node |
1554 | breezy.tests.test_chk_map.TestMap.test_apply_ab_empty |
1555 | breezy.tests.test_chk_map.TestMap.test_apply_delete_to_internal_node |
1556 | +breezy.tests.test_chk_map.TestMap.test_apply_empty_ab |
1557 | breezy.tests.test_chk_map.TestMap.test_apply_new_keys_must_be_new |
1558 | breezy.tests.test_chk_map.TestMap.test_deep_splitting |
1559 | breezy.tests.test_chk_map.TestMap.test__dump_tree |
1560 | breezy.tests.test_chk_map.TestMap.test__dump_tree_in_progress |
1561 | +breezy.tests.test_chk_map.TestMap.test_from_dict_ab |
1562 | breezy.tests.test_chk_map.TestMap.test_from_dict_empty |
1563 | breezy.tests.test_chk_map.TestMap.test_init_and_save_new |
1564 | breezy.tests.test_chk_map.TestMap.test_init_root_is_LeafNode_new |
1565 | @@ -22710,6 +22764,7 @@ |
1566 | breezy.tests.test_chk_map.TestMap.test_iteritems_keys_prefixed_by_2_width_nodes_hashed |
1567 | breezy.tests.test_chk_map.TestMap.test_iteritems_keys_prefixed_by_2_width_one_leaf |
1568 | breezy.tests.test_chk_map.TestMap.test_iteritems_selected_one_of_two_items |
1569 | +breezy.tests.test_chk_map.TestMap.test_iteritems_two_items |
1570 | breezy.tests.test_chk_map.TestMap.test___len__2 |
1571 | breezy.tests.test_chk_map.TestMap.test___len__empty |
1572 | breezy.tests.test_chk_map.TestMap.test_map_double_deep_collapses |
1573 | @@ -22853,6 +22908,8 @@ |
1574 | breezy.tests.test_commit.TestCommit.test_commit_has_1ms_resolution |
1575 | breezy.tests.test_commit.TestCommit.test_commit_invokes_hooks |
1576 | breezy.tests.test_commit.TestCommit.test_commit_kind_changes |
1577 | +breezy.tests.test_commit.TestCommit.test_commit_lossy_foreign |
1578 | +breezy.tests.test_commit.TestCommit.test_commit_lossy_native |
1579 | breezy.tests.test_commit.TestCommit.test_commit_move |
1580 | breezy.tests.test_commit.TestCommit.test_commit_new_subdir_child_selective |
1581 | breezy.tests.test_commit.TestCommit.test_commit_no_author |
1582 | @@ -22862,6 +22919,7 @@ |
1583 | breezy.tests.test_commit.TestCommit.test_commit_rename |
1584 | breezy.tests.test_commit.TestCommit.test_commit_reporting_after_merge |
1585 | breezy.tests.test_commit.TestCommit.test_commit_saves_1ms_timestamp |
1586 | +breezy.tests.test_commit.TestCommit.test_committed_ancestry |
1587 | breezy.tests.test_commit.TestCommit.test_commit_unversioned_specified |
1588 | breezy.tests.test_commit.TestCommit.test_commit_with_checkout_and_branch_sharing_repo |
1589 | breezy.tests.test_commit.TestCommit.test_missing_commit |
1590 | @@ -22877,6 +22935,7 @@ |
1591 | breezy.tests.test_commit.TestCommit.test_safe_master_lock |
1592 | breezy.tests.test_commit.TestCommit.test_selected_file_merge_commit |
1593 | breezy.tests.test_commit.TestCommit.test_selective_delete |
1594 | +breezy.tests.test_commit.TestCommit.test_signed_commit |
1595 | breezy.tests.test_commit.TestCommit.test_simple_commit |
1596 | breezy.tests.test_commit.TestCommit.test_strict_commit |
1597 | breezy.tests.test_commit.TestCommit.test_strict_commit_without_unknowns |
1598 | @@ -22927,6 +22986,7 @@ |
1599 | breezy.tests.test_config.TestBaseStackGet.test_get_without_registered_default_value |
1600 | breezy.tests.test_config.TestBaseStackGet.test_get_with_registered_default_value |
1601 | breezy.tests.test_config.TestBranchConfigItems.test_BRZ_EMAIL_OVERRIDES |
1602 | +breezy.tests.test_config.TestBranchConfigItems.test_config_precedence |
1603 | breezy.tests.test_config.TestBranchConfigItems.test_get_user_option_global |
1604 | breezy.tests.test_config.TestBranchConfigItems.test_user_id |
1605 | breezy.tests.test_config.TestBranchConfig.test_autonick_urlencoded |
1606 | @@ -23617,7 +23677,15 @@ |
1607 | breezy.tests.test_conflicts.TestPerConflict.test_stanza_roundtrip(PathConflict) |
1608 | breezy.tests.test_conflicts.TestPerConflict.test_stanza_roundtrip(TextConflict) |
1609 | breezy.tests.test_conflicts.TestPerConflict.test_stanza_roundtrip(UnversionedParent) |
1610 | +breezy.tests.test_conflicts.TestPerConflict.test_stanzification(ContentsConflict) |
1611 | +breezy.tests.test_conflicts.TestPerConflict.test_stanzification(DuplicateEntry) |
1612 | +breezy.tests.test_conflicts.TestPerConflict.test_stanzification(DuplicateID) |
1613 | +breezy.tests.test_conflicts.TestPerConflict.test_stanzification(MissingParent) |
1614 | +breezy.tests.test_conflicts.TestPerConflict.test_stanzification(NonDirectoryParent) |
1615 | +breezy.tests.test_conflicts.TestPerConflict.test_stanzification(ParentLoop) |
1616 | +breezy.tests.test_conflicts.TestPerConflict.test_stanzification(PathConflict) |
1617 | breezy.tests.test_conflicts.TestPerConflict.test_stanzification(TextConflict) |
1618 | +breezy.tests.test_conflicts.TestPerConflict.test_stanzification(UnversionedParent) |
1619 | breezy.tests.test_conflicts.TestPerConflict.test_stringification(ContentsConflict) |
1620 | breezy.tests.test_conflicts.TestPerConflict.test_stringification(DuplicateEntry) |
1621 | breezy.tests.test_conflicts.TestPerConflict.test_stringification(DuplicateID) |
1622 | @@ -23660,6 +23728,11 @@ |
1623 | breezy.tests.test_conflicts.TestResolveMissingParent.test_keep_them_all |
1624 | breezy.tests.test_conflicts.TestResolveMissingParent.test_kill_them_all |
1625 | breezy.tests.test_conflicts.TestResolveMissingParent.test_resolve_taking_other |
1626 | +breezy.tests.test_conflicts.TestResolveMissingParent.test_resolve_taking_this |
1627 | +breezy.tests.test_conflicts.TestResolveParentLoop.test_resolve_taking_other(dir1_into_dir2,dir2_into_dir1) |
1628 | +breezy.tests.test_conflicts.TestResolveParentLoop.test_resolve_taking_other(dir2_into_dir1,dir1_into_dir2) |
1629 | +breezy.tests.test_conflicts.TestResolveParentLoop.test_resolve_taking_this(dir1_into_dir2,dir2_into_dir1) |
1630 | +breezy.tests.test_conflicts.TestResolveParentLoop.test_resolve_taking_this(dir2_into_dir1,dir1_into_dir2) |
1631 | breezy.tests.test_conflicts.TestResolvePathConflictBefore531967.test_resolve_taking_other(dir_deleted,dir_renamed) |
1632 | breezy.tests.test_conflicts.TestResolvePathConflictBefore531967.test_resolve_taking_other(dir_renamed2,dir_renamed) |
1633 | breezy.tests.test_conflicts.TestResolvePathConflictBefore531967.test_resolve_taking_other(dir_renamed,dir_deleted) |
1634 | @@ -24286,10 +24359,13 @@ |
1635 | breezy.tests.test_foreign.ForeignVcsRegistryTests.test_parse_revision_id_unknown_mapping |
1636 | breezy.tests.test_generate_docs.TestGenerateDocs.test_man_page |
1637 | breezy.tests.test_generate_docs.TestGenerateDocs.test_rstx_man |
1638 | +breezy.tests.test_generate_ids.TestFileIds.test_file_ids_are_ascii |
1639 | +breezy.tests.test_generate_ids.TestFileIds.test_gen_file_id |
1640 | breezy.tests.test_generate_ids.TestFileIds.test_gen_root_id |
1641 | breezy.tests.test_generate_ids.TestFileIds.test__next_id_suffix_increments |
1642 | breezy.tests.test_generate_ids.TestFileIds.test__next_id_suffix_sets_suffix |
1643 | breezy.tests.test_generate_ids.TestGenRevisionId.test_gen_revision_id_email |
1644 | +breezy.tests.test_generate_ids.TestGenRevisionId.test_gen_revision_id_user |
1645 | breezy.tests.test_generate_ids.TestGenRevisionId.test_revision_ids_are_ascii |
1646 | breezy.tests.test_generate_ids.TestGenRevisionId.test_timestamp |
1647 | breezy.tests.test_globbing.TestExceptionGlobster.test_exclusion_order |
1648 | @@ -24605,6 +24681,21 @@ |
1649 | breezy.tests.test_http_response.TestHandleResponse.test_missing_content_range |
1650 | breezy.tests.test_http_response.TestHandleResponse.test_multipart_no_content_range |
1651 | breezy.tests.test_http_response.TestHTTPConnection.test_cleanup_pipe |
1652 | +breezy.tests.test_http_response.TestRangeFileMultipleRangesQuotedBoundaries.test_can_read_at_first_access |
1653 | +breezy.tests.test_http_response.TestRangeFileMultipleRangesQuotedBoundaries.test_checked_read_dont_overflow_buffers |
1654 | +breezy.tests.test_http_response.TestRangeFileMultipleRangesQuotedBoundaries.test_read_all_ranges |
1655 | +breezy.tests.test_http_response.TestRangeFileMultipleRangesQuotedBoundaries.test_read_at_range_end |
1656 | +breezy.tests.test_http_response.TestRangeFileMultipleRangesQuotedBoundaries.test_read_past_end_of_range |
1657 | +breezy.tests.test_http_response.TestRangeFileMultipleRangesQuotedBoundaries.test_read_zero |
1658 | +breezy.tests.test_http_response.TestRangeFileMultipleRangesQuotedBoundaries.test_seek_across_ranges |
1659 | +breezy.tests.test_http_response.TestRangeFileMultipleRangesQuotedBoundaries.test_seek_at_range_end |
1660 | +breezy.tests.test_http_response.TestRangeFileMultipleRangesQuotedBoundaries.test_seek_backwards |
1661 | +breezy.tests.test_http_response.TestRangeFileMultipleRangesQuotedBoundaries.test_seek_from_end |
1662 | +breezy.tests.test_http_response.TestRangeFileMultipleRangesQuotedBoundaries.test_seek_into_void |
1663 | +breezy.tests.test_http_response.TestRangeFileMultipleRangesQuotedBoundaries.test_seek_outside_single_range |
1664 | +breezy.tests.test_http_response.TestRangeFileMultipleRangesQuotedBoundaries.test_seek_read |
1665 | +breezy.tests.test_http_response.TestRangeFileMultipleRangesQuotedBoundaries.test_seek_twice_between_ranges |
1666 | +breezy.tests.test_http_response.TestRangeFileMultipleRangesQuotedBoundaries.test_unbounded_read_after_seek |
1667 | breezy.tests.test_http_response.TestRangeFileMultipleRanges.test_can_read_at_first_access |
1668 | breezy.tests.test_http_response.TestRangeFileMultipleRanges.test_checked_read_dont_overflow_buffers |
1669 | breezy.tests.test_http_response.TestRangeFileMultipleRanges.test_read_all_ranges |
1670 | @@ -24975,6 +25066,7 @@ |
1671 | breezy.tests.test_http.TestTruncatedMultipleRangeServer.test_readv_with_short_reads(urllib,HTTP/1.0) |
1672 | breezy.tests.test_http.TestTruncatedMultipleRangeServer.test_readv_with_short_reads(urllib,HTTP/1.1) |
1673 | breezy.tests.test_http.TestUrllib2AuthHandler.test_get_user_password_without_port |
1674 | +breezy.tests.test_i18n.LoadPluginTranslations.test_does_not_exist |
1675 | breezy.tests.test_i18n.TestGetTextPerParagraph.test_multiline |
1676 | breezy.tests.test_i18n.TestGetTextPerParagraph.test_oneline |
1677 | breezy.tests.test_i18n.TestGetText.test_multiline |
1678 | @@ -24982,7 +25074,9 @@ |
1679 | breezy.tests.test_i18n.TestInstall.test_custom_languages |
1680 | breezy.tests.test_i18n.TestInstall.test_disable_i18n |
1681 | breezy.tests.test_i18n.TestInstall.test_no_env_variables |
1682 | +breezy.tests.test_i18n.TestTranslate.test_error_message_translation |
1683 | breezy.tests.test_i18n.TestTranslate.test_topic_help_translation |
1684 | +breezy.tests.test_i18n.TestZzzTranslation.test_translation |
1685 | breezy.tests.test_identitymap.TestIdentityMap.test_add_weave |
1686 | breezy.tests.test_identitymap.TestIdentityMap.test_construct |
1687 | breezy.tests.test_identitymap.TestIdentityMap.test_double_add_weave |
1688 | @@ -26712,6 +26806,7 @@ |
1689 | breezy.tests.test_merge_directive.TestParseOldMergeDirective2.test_parse_old_merge_directive |
1690 | breezy.tests.test_merge.TestConfigurableFileMerger.test_affected_files_cached |
1691 | breezy.tests.test_merge.TestConfigurableFileMerger.test_hook_called_for_text_conflicts |
1692 | +breezy.tests.test_merge.TestConfigurableFileMerger.test_hook_not_called_for_kind_change |
1693 | breezy.tests.test_merge.TestConfigurableFileMerger.test_hook_not_called_for_other_files |
1694 | breezy.tests.test_merge.TestConfigurableFileMerger.test_uses_this_branch |
1695 | breezy.tests.test_merge.TestLCAMultiWay.test_all_differ |
1696 | @@ -26937,6 +27032,7 @@ |
1697 | breezy.tests.test_options.OptionTests.test_registry_conversion |
1698 | breezy.tests.test_options.OptionTests.test_registry_converter |
1699 | breezy.tests.test_options.OptionTests.test_set_short_name |
1700 | +breezy.tests.test_options.OptionTests.test_unknown_short_opt |
1701 | breezy.tests.test_options.TestListOptions.test_list_option |
1702 | breezy.tests.test_options.TestListOptions.test_list_option_can_be_reset |
1703 | breezy.tests.test_options.TestListOptions.test_list_option_no_arguments |
1704 | @@ -27412,6 +27508,7 @@ |
1705 | breezy.tests.test_reconfigure.TestReconfigure.test_unsynced_branch_to_lightweight_checkout_unforced |
1706 | breezy.tests.test_reconfigure.TestReconfigure.test_unsynced_checkout_to_lightweight |
1707 | breezy.tests.test_reconfigure.TestReconfigure.test_use_shared_to_standalone |
1708 | +breezy.tests.test_reconfigure.TestReconfigure.test_use_shared_to_standalone_preserves_dead_heads |
1709 | breezy.tests.test_reconfigure.TestReconfigure.test_use_shared_to_use_shared |
1710 | breezy.tests.test_registry.TestRegistryIter.test_items |
1711 | breezy.tests.test_registry.TestRegistryIter.test_iteritems |
1712 | @@ -27464,8 +27561,10 @@ |
1713 | breezy.tests.test_remote.TestBranchGetSetConfig.test_get_branch_conf |
1714 | breezy.tests.test_remote.TestBranchGetSetConfig.test_get_multi_line_branch_conf |
1715 | breezy.tests.test_remote.TestBranchGetSetConfig.test_set_option |
1716 | +breezy.tests.test_remote.TestBranchGetSetConfig.test_set_option_with_dict |
1717 | breezy.tests.test_remote.TestBranch_get_stacked_on_url.test_backwards_compatible |
1718 | breezy.tests.test_remote.TestBranch_get_stacked_on_url.test_get_stacked_on_invalid_url |
1719 | +breezy.tests.test_remote.TestBranch_get_stacked_on_url.test_get_stacked_on_real_branch |
1720 | breezy.tests.test_remote.TestBranchGetTagsBytes.test_backwards_compat |
1721 | breezy.tests.test_remote.TestBranchGetTagsBytes.test_trivial |
1722 | breezy.tests.test_remote.TestBranchHeadsToFetch.test_backwards_compatible |
1723 | @@ -27506,6 +27605,7 @@ |
1724 | breezy.tests.test_remote.TestBzrDirDestroyBranch.test_destroy_default |
1725 | breezy.tests.test_remote.TestBzrDirDestroyRepository.test_destroy_repository |
1726 | breezy.tests.test_remote.TestBzrDirFormatInitializeEx.test_error_from_real_server |
1727 | +breezy.tests.test_remote.TestBzrDirFormatInitializeEx.test_success |
1728 | breezy.tests.test_remote.TestBzrDirGetBranches.test_get_branches |
1729 | breezy.tests.test_remote.TestBzrDirGetSetConfig.test_backwards_compat_get_option |
1730 | breezy.tests.test_remote.TestBzrDirGetSetConfig.test__get_config |
1731 | @@ -27661,6 +27761,8 @@ |
1732 | breezy.tests.test_remote.TestWithCustomErrorHandler.test_no_context |
1733 | breezy.tests.test_remote.TestWithCustomErrorHandler.test_with_context |
1734 | breezy.tests.test_rename_map.TestRenameMap.test_add_edge_hashes |
1735 | +breezy.tests.test_rename_map.TestRenameMap.test_add_file_edge_hashes |
1736 | +breezy.tests.test_rename_map.TestRenameMap.test_file_match |
1737 | breezy.tests.test_rename_map.TestRenameMap.test_file_match_no_dups |
1738 | breezy.tests.test_rename_map.TestRenameMap.test_find_directory_renames |
1739 | breezy.tests.test_rename_map.TestRenameMap.test_guess_rename_handles_new_directories |
1740 | @@ -27676,6 +27778,7 @@ |
1741 | breezy.tests.test_repository.Test2a.test_chk_bytes_uses_custom_btree_parser |
1742 | breezy.tests.test_repository.Test2a.test_fetch_combines_groups |
1743 | breezy.tests.test_repository.Test2a.test_format_pack_compresses_True |
1744 | +breezy.tests.test_repository.Test2a.test_get_stream_for_missing_keys_includes_all_chk_refs |
1745 | breezy.tests.test_repository.Test2a.test_inconsistency_fatal |
1746 | breezy.tests.test_repository.Test2a.test_inventories_use_chk_map_with_parent_base_dict |
1747 | breezy.tests.test_repository.Test2a.test_pack_with_hint |
1748 | @@ -27701,6 +27804,9 @@ |
1749 | breezy.tests.test_repository.TestFormatKnit1.test_attribute__fetch_uses_deltas |
1750 | breezy.tests.test_repository.TestFormatKnit1.test_deserialise_sets_root_revision |
1751 | breezy.tests.test_repository.TestFormatKnit1.test_deserialise_uses_global_revision_id |
1752 | +breezy.tests.test_repository.TestFormatKnit1.test_disk_layout |
1753 | +breezy.tests.test_repository.TestFormatKnit1.test_shared_disk_layout |
1754 | +breezy.tests.test_repository.TestFormatKnit1.test_shared_no_tree_disk_layout |
1755 | breezy.tests.test_repository.TestFormatKnit1.test_supports_external_lookups |
1756 | breezy.tests.test_repository.TestGCCHKPacker.test_pack_with_distant_inventories |
1757 | breezy.tests.test_repository.TestGCCHKPacker.test_pack_with_missing_inventory |
1758 | @@ -27757,6 +27863,8 @@ |
1759 | breezy.tests.test_repository.TestRepositoryPackCollection.test_repr |
1760 | breezy.tests.test_repository.TestRepositoryPackCollection.test__save_pack_names |
1761 | breezy.tests.test_repository.TestRepositoryPackCollection.test__save_pack_names_already_obsoleted |
1762 | +breezy.tests.test_repository.TestWithBrokenRepo.test_insert_from_broken_repo |
1763 | +breezy.tests.test_revert.TestRevert.test_preserve_execute |
1764 | breezy.tests.test_revert.TestRevert.test_revert_deletes_files_from_revert |
1765 | breezy.tests.test_revert.TestRevert.test_revert_executable |
1766 | breezy.tests.test_revert.TestRevert.test_revert_file_in_deleted_dir |
1767 | @@ -28045,6 +28153,7 @@ |
1768 | breezy.tests.test_selftest.MetaTestLog.test_logging |
1769 | breezy.tests.test_selftest.TestActuallyStartBzrSubprocess.test_start_and_stop_bzr_subprocess_send_signal |
1770 | breezy.tests.test_selftest.TestBlackboxSupport.test_run_bzr_failure_not_caught |
1771 | +breezy.tests.test_selftest.TestBlackboxSupport.test_run_bzr_user_error_caught |
1772 | breezy.tests.test_selftest.TestBranchScenarios.test_scenarios |
1773 | breezy.tests.test_selftest.TestBzrDirScenarios.test_scenarios |
1774 | breezy.tests.test_selftest.TestCheckTreeShape.test_check_tree_shape |
1775 | @@ -28063,6 +28172,7 @@ |
1776 | breezy.tests.test_selftest.TestEnvironHandling.test_overrideEnv_None_called_twice_doesnt_leak |
1777 | breezy.tests.test_selftest.TestExtraAssertions.test_assertEndsWith |
1778 | breezy.tests.test_selftest.TestExtraAssertions.test_assertEqualDiff |
1779 | +breezy.tests.test_selftest.TestExtraAssertions.test_assert_isinstance |
1780 | breezy.tests.test_selftest.TestFilteredByModuleTestLoader.test_exclude_tests |
1781 | breezy.tests.test_selftest.TestFilteredByModuleTestLoader.test_load_tests |
1782 | breezy.tests.test_selftest.TestFilteredByNameStartTestLoader.test_exclude_tests |
1783 | @@ -28140,6 +28250,7 @@ |
1784 | breezy.tests.test_selftest.TestSelftest.test_selftest_benchmark_parameter_invokes_test_suite__benchmark__ |
1785 | breezy.tests.test_selftest.TestSelftest.test_transport_memory |
1786 | breezy.tests.test_selftest.TestSelftest.test_transport_sftp |
1787 | +breezy.tests.test_selftest.TestSelftestWithIdList.test_load_list |
1788 | breezy.tests.test_selftest.TestSelftestWithIdList.test_load_unknown |
1789 | breezy.tests.test_selftest.TestStartBzrSubProcess.test_allow_plugins |
1790 | breezy.tests.test_selftest.TestStartBzrSubProcess.test_env_del_missing |
1791 | @@ -28225,6 +28336,7 @@ |
1792 | breezy.tests.test_selftest.TestTestPrefixRegistry.test_resolve_unknown_alias |
1793 | breezy.tests.test_selftest.TestTestResult.test_add_not_supported |
1794 | breezy.tests.test_selftest.TestTestResult.test_known_failure |
1795 | +breezy.tests.test_selftest.TestTestResult.test_lsprofiling |
1796 | breezy.tests.test_selftest.TestTestResult.test_startTests |
1797 | breezy.tests.test_selftest.TestTestResult.test_startTests_only_once |
1798 | breezy.tests.test_selftest.TestTestResult.test_strict_with_known_failure |
1799 | @@ -28245,6 +28357,7 @@ |
1800 | breezy.tests.test_selftest.TestThreadLeakDetection.test_testcase_without_addCleanups |
1801 | breezy.tests.test_selftest.TestThreadLeakDetection.test_thread_leak |
1802 | breezy.tests.test_selftest.TestTransportScenarios.test_get_transport_permutations |
1803 | +breezy.tests.test_selftest.TestTransportScenarios.test_scenarios_include_all_modules |
1804 | breezy.tests.test_selftest.TestTransportScenarios.test_scenarios_include_transport_class |
1805 | breezy.tests.test_selftest.TestTreeScenarios.test_scenarios |
1806 | breezy.tests.test_selftest.TestTreeShape.test_unicode_paths |
1807 | @@ -29033,6 +29146,7 @@ |
1808 | breezy.tests.test_status.TestStatus.test_multiple_pending |
1809 | breezy.tests.test_status.TestStatus.test_multiple_pending_verbose |
1810 | breezy.tests.test_status.TestStatus.test_pending_none |
1811 | +breezy.tests.test_status.TestStatus.test_pending_with_ghosts |
1812 | breezy.tests.test_status.TestStatus.tests_revision_to_revision |
1813 | breezy.tests.test_status.TestStatus.test_with_pending_ghost |
1814 | breezy.tests.test_strace.TestStrace.test_strace_callable_is_called |
1815 | @@ -29245,6 +29359,12 @@ |
1816 | breezy.tests.test_transform.TestFileMover.test_file_mover |
1817 | breezy.tests.test_transform.TestFileMover.test_file_mover_rollback |
1818 | breezy.tests.test_transform.TestFileMover.test_pre_delete_rollback |
1819 | +breezy.tests.test_transform.TestFinalizeRobustness.test_rename_in_limbo_rename_raises_after_rename |
1820 | +breezy.tests.test_transform.TestFinalizeRobustness.test_rename_in_limbo_rename_raises_before_rename |
1821 | +breezy.tests.test_transform.TestFinalizeRobustness.test_root_create_file_open_raises_after_creation |
1822 | +breezy.tests.test_transform.TestFinalizeRobustness.test_root_create_file_open_raises_before_creation |
1823 | +breezy.tests.test_transform.TestFinalizeRobustness.test_subdir_create_file_open_raises_after_creation |
1824 | +breezy.tests.test_transform.TestFinalizeRobustness.test_subdir_create_file_open_raises_before_creation |
1825 | breezy.tests.test_transform.TestInventoryAltered.test_inventory_altered_changed_parent_id |
1826 | breezy.tests.test_transform.TestInventoryAltered.test_inventory_altered_noop_changed_parent_id |
1827 | breezy.tests.test_transform.TestInventoryAltered.test_inventory_altered_unchanged |
1828 | @@ -29319,6 +29439,7 @@ |
1829 | breezy.tests.test_transform.TestTransformPreview.test_missing_content_summary |
1830 | breezy.tests.test_transform.TestTransformPreview.test_path2id_created |
1831 | breezy.tests.test_transform.TestTransformPreview.test_path2id_deleted_unchanged |
1832 | +breezy.tests.test_transform.TestTransformPreview.test_path2id_moved |
1833 | breezy.tests.test_transform.TestTransformPreview.test_path2id_renamed_parent |
1834 | breezy.tests.test_transform.TestTransformPreview.test_plan_file_merge |
1835 | breezy.tests.test_transform.TestTransformPreview.test_plan_file_merge_revision_tree |
1836 | @@ -29632,6 +29753,7 @@ |
1837 | breezy.tests.test_upgrade.TestUpgrade.test_upgrade_rich_root |
1838 | breezy.tests.test_upstream_import.TestImport.test_broken_tar |
1839 | breezy.tests.test_upstream_import.TestImport.test_common_directory |
1840 | +breezy.tests.test_upstream_import.TestImport.test_copydir_nosub |
1841 | breezy.tests.test_upstream_import.TestImport.test_get_archive_type |
1842 | breezy.tests.test_upstream_import.TestImport.test_no_crash_with_bzrdir |
1843 | breezy.tests.test_upstream_import.TestImport.test_top_path |
1844 | @@ -29664,6 +29786,8 @@ |
1845 | breezy.tests.test_url_policy_open.TestOpenOnlyScheme.test_stacked_within_scheme |
1846 | breezy.tests.test_urlutils.QuoteTests.test_quote |
1847 | breezy.tests.test_urlutils.QuoteTests.test_quote_tildes |
1848 | +breezy.tests.test_urlutils.QuoteTests.test_unquote |
1849 | +breezy.tests.test_urlutils.QuoteTests.test_unquote_to_bytes |
1850 | breezy.tests.test_urlutils.TestCwdToURL.test_dot |
1851 | breezy.tests.test_urlutils.TestCwdToURL.test_non_ascii |
1852 | breezy.tests.test_urlutils.TestDeriveToLocation.test_to_locations_derived_from_paths |
1853 | @@ -29696,6 +29820,7 @@ |
1854 | breezy.tests.test_urlutils.TestURL.test_str |
1855 | breezy.tests.test_urlutils.TestUrlToPath.test_basename |
1856 | breezy.tests.test_urlutils.TestUrlToPath.test_dirname |
1857 | +breezy.tests.test_urlutils.TestUrlToPath.test_escape |
1858 | breezy.tests.test_urlutils.TestUrlToPath.test_escape_tildes |
1859 | breezy.tests.test_urlutils.TestUrlToPath.test_escape_unescape |
1860 | breezy.tests.test_urlutils.TestUrlToPath.test_function_type |
1861 | @@ -29716,6 +29841,7 @@ |
1862 | breezy.tests.test_urlutils.TestUrlToPath.test_url_scheme_re |
1863 | breezy.tests.test_urlutils.TestUrlToPath.test_win32_extract_drive_letter |
1864 | breezy.tests.test_urlutils.TestUrlToPath.test_win32_local_path_from_url |
1865 | +breezy.tests.test_urlutils.TestUrlToPath.test_win32_local_path_to_url |
1866 | breezy.tests.test_urlutils.TestUrlToPath.test_win32_strip_local_trailing_slash |
1867 | breezy.tests.test_urlutils.TestUrlToPath.test_win32_unc_path_from_url |
1868 | breezy.tests.test_urlutils.TestUrlToPath.test_win32_unc_path_to_url |
1869 | @@ -29766,6 +29892,7 @@ |
1870 | breezy.tests.test_version_info.TestVersionInfoRio.test_rio_version_hook |
1871 | breezy.tests.test_version_info.TestVersionInfoRio.test_simple |
1872 | breezy.tests.test_version.TestBzrlibVersioning.test_get_brz_source_tree |
1873 | +breezy.tests.test_version.TestBzrlibVersioning.test_python_binary_path |
1874 | breezy.tests.test_version.TestPlatformUse.test_platform(ascii) |
1875 | breezy.tests.test_version.TestPlatformUse.test_platform(unicode) |
1876 | breezy.tests.test_vf_search.TestLimitedSearchResultFromParentMap.test_ancestry_1 |
1877 | @@ -29778,6 +29905,7 @@ |
1878 | breezy.tests.test_vf_search.TestSearchResultFromParentMap.test_ancestry_1 |
1879 | breezy.tests.test_vf_search.TestSearchResultFromParentMap.test_ancestry_2 |
1880 | breezy.tests.test_vf_search.TestSearchResultFromParentMap.test_no_parents |
1881 | +breezy.tests.test_vf_search.TestSearchResultFromParentMap.test_partial_search |
1882 | breezy.tests.test_vf_search.TestSearchResultRefine.test_refine |
1883 | breezy.tests.test_views.TestErrors.test_file_outside_view |
1884 | breezy.tests.test_views.TestErrors.test_no_such_view |
Thanks! There are quite a few stream checking changes that really just need to be unicode always using an abstraction that decodes for python 2, but that can get cleaned up later. Couple of other inline notes.