Merge lp:~jelmer/brz/python3-e into lp:brz

Proposed by Jelmer Vernooij
Status: Merged
Merged at revision: 6996
Proposed branch: lp:~jelmer/brz/python3-e
Merge into: lp:brz
Prerequisite: lp:~jelmer/brz/python3-d
Diff against target: 4031 lines (+893/-566) (has conflicts)
70 files modified
breezy/branch.py (+1/-1)
breezy/bundle/serializer/v08.py (+2/-1)
breezy/bzr/branch.py (+1/-1)
breezy/bzr/bzrdir.py (+1/-1)
breezy/bzr/smart/request.py (+2/-1)
breezy/config.py (+2/-2)
breezy/conflicts.py (+3/-0)
breezy/diff.py (+1/-1)
breezy/email_message.py (+2/-2)
breezy/gpg.py (+2/-2)
breezy/log.py (+1/-1)
breezy/merge.py (+2/-1)
breezy/mergetools.py (+3/-1)
breezy/osutils.py (+9/-5)
breezy/plugins/git/branch.py (+3/-2)
breezy/plugins/git/dir.py (+1/-1)
breezy/plugins/git/fetch.py (+2/-1)
breezy/plugins/git/mapping.py (+3/-2)
breezy/plugins/git/remote.py (+2/-1)
breezy/plugins/git/tests/test_memorytree.py (+30/-35)
breezy/plugins/git/tree.py (+3/-2)
breezy/revisionspec.py (+1/-1)
breezy/shelf.py (+1/-1)
breezy/status.py (+2/-1)
breezy/tag.py (+2/-1)
breezy/testament.py (+10/-4)
breezy/tests/blackbox/test_reconcile.py (+2/-2)
breezy/tests/per_branch/test_branch.py (+7/-7)
breezy/tests/per_branch/test_check.py (+1/-1)
breezy/tests/per_branch/test_commit.py (+4/-4)
breezy/tests/per_branch/test_iter_merge_sorted_revisions.py (+18/-18)
breezy/tests/per_branch/test_revision_id_to_dotted_revno.py (+2/-2)
breezy/tests/per_foreign_vcs/test_branch.py (+1/-1)
breezy/tests/per_interbranch/test_push.py (+2/-2)
breezy/tests/per_interrepository/test_fetch.py (+10/-6)
breezy/tests/per_intertree/test_compare.py (+8/-8)
breezy/tests/per_pack_repository.py (+3/-3)
breezy/tests/per_repository/test_commit_builder.py (+1/-1)
breezy/tests/per_repository/test_repository.py (+2/-1)
breezy/tests/per_repository_reference/test_fetch.py (+19/-19)
breezy/tests/per_repository_reference/test_graph.py (+8/-8)
breezy/tests/per_repository_reference/test_unlock.py (+8/-8)
breezy/tests/per_repository_vf/test_check_reconcile.py (+219/-227)
breezy/tests/per_repository_vf/test_fileid_involved.py (+11/-11)
breezy/tests/per_repository_vf/test_repository.py (+6/-9)
breezy/tests/per_transport.py (+47/-47)
breezy/tests/per_tree/test_test_trees.py (+3/-2)
breezy/tests/per_workingtree/test_put_file.py (+5/-5)
breezy/tests/test_cache_utf8.py (+2/-1)
breezy/tests/test_config.py (+3/-2)
breezy/tests/test_conflicts.py (+9/-8)
breezy/tests/test_dirstate.py (+2/-2)
breezy/tests/test_fetch.py (+5/-5)
breezy/tests/test_inv.py (+10/-9)
breezy/tests/test_mail_client.py (+9/-7)
breezy/tests/test_memorytree.py (+14/-13)
breezy/tests/test_osutils.py (+10/-9)
breezy/tests/test_read_bundle.py (+3/-2)
breezy/tests/test_repository.py (+5/-4)
breezy/tests/test_transform.py (+2/-1)
breezy/tests/test_urlutils.py (+5/-4)
breezy/tests/test_workingtree_4.py (+22/-22)
breezy/transform.py (+6/-5)
breezy/transport/gio_transport.py (+2/-1)
breezy/tree.py (+3/-2)
breezy/urlutils.py (+1/-1)
breezy/utextwrap.py (+3/-2)
breezy/version.py (+2/-1)
breezy/win32utils.py (+1/-1)
python3.passing (+295/-0)
Text conflict in breezy/tests/per_interrepository/test_fetch.py
To merge this branch: bzr merge lp:~jelmer/brz/python3-e
Reviewer Review Type Date Requested Status
Martin Packman Approve
Review via email: mp+348118@code.launchpad.net

Commit message

Add more bees.

Description of the change

Fix more python3 tests.

% wc -l python3.passing
13351 python3.passing

To post a comment you must log in.
Revision history for this message
Martin Packman (gz) wrote :

Thanks! There's some scary bits here with the unicode() cast changes, may need to write ourselves a more robust helper for the short term to have confidence.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'breezy/branch.py'
2--- breezy/branch.py 2018-06-21 08:27:34 +0000
3+++ breezy/branch.py 2018-06-21 23:03:57 +0000
4@@ -2124,7 +2124,7 @@
5 try:
6 parent = self.source.get_parent()
7 except errors.InaccessibleParent as e:
8- mutter('parent was not accessible to copy: %s', e)
9+ mutter('parent was not accessible to copy: %s', str(e))
10 else:
11 if parent:
12 self.target.set_parent(parent)
13
14=== modified file 'breezy/bundle/serializer/v08.py'
15--- breezy/bundle/serializer/v08.py 2018-06-15 13:10:28 +0000
16+++ breezy/bundle/serializer/v08.py 2018-06-21 23:03:57 +0000
17@@ -30,6 +30,7 @@
18 from breezy.bundle.bundle_data import (RevisionInfo, BundleInfo)
19 from breezy.diff import internal_diff
20 from breezy.revision import NULL_REVISION
21+from breezy.sixish import text_type
22 from breezy.testament import StrictTestament
23 from breezy.timestamp import (
24 format_highres_date,
25@@ -152,7 +153,7 @@
26 f.write(b': ')
27 f.write(value)
28 f.write(b'\n')
29- elif isinstance(value, unicode):
30+ elif isinstance(value, text_type):
31 f.write(b': ')
32 f.write(value.encode('utf-8'))
33 f.write(b'\n')
34
35=== modified file 'breezy/bzr/branch.py'
36--- breezy/bzr/branch.py 2018-06-21 19:00:42 +0000
37+++ breezy/bzr/branch.py 2018-06-21 23:03:57 +0000
38@@ -263,7 +263,7 @@
39 _locs = ['parent', 'pull', 'x-pull']
40 for l in _locs:
41 try:
42- return self._transport.get_bytes(l).strip(b'\n')
43+ return self._transport.get_bytes(l).strip(b'\n').decode('utf-8')
44 except errors.NoSuchFile:
45 pass
46 return None
47
48=== modified file 'breezy/bzr/bzrdir.py'
49--- breezy/bzr/bzrdir.py 2018-05-07 14:35:05 +0000
50+++ breezy/bzr/bzrdir.py 2018-06-21 23:03:57 +0000
51@@ -833,7 +833,7 @@
52 """
53 if name == "":
54 return 'branch'
55- return urlutils.join('branches', name.encode("utf-8"))
56+ return urlutils.join('branches', urlutils.escape(name))
57
58 def _read_branch_list(self):
59 """Read the branch list.
60
61=== modified file 'breezy/bzr/smart/request.py'
62--- breezy/bzr/smart/request.py 2018-06-21 22:26:54 +0000
63+++ breezy/bzr/smart/request.py 2018-06-21 23:03:57 +0000
64@@ -45,6 +45,7 @@
65 trace,
66 urlutils,
67 )
68+from ...sixish import text_type
69 from ...lazy_import import lazy_import
70 lazy_import(globals(), """
71 from breezy.bzr import bzrdir
72@@ -445,7 +446,7 @@
73 # If it is a DecodeError, than most likely we are starting
74 # with a plain string
75 str_or_unicode = err.object
76- if isinstance(str_or_unicode, unicode):
77+ if isinstance(str_or_unicode, text_type):
78 # XXX: UTF-8 might have \x01 (our protocol v1 and v2 seperator
79 # byte) in it, so this encoding could cause broken responses.
80 # Newer clients use protocol v3, so will be fine.
81
82=== modified file 'breezy/config.py'
83--- breezy/config.py 2018-03-10 13:52:14 +0000
84+++ breezy/config.py 2018-06-21 23:03:57 +0000
85@@ -119,8 +119,8 @@
86 binary_type,
87 BytesIO,
88 PY3,
89+ string_types,
90 text_type,
91- string_types,
92 )
93
94
95@@ -2558,7 +2558,7 @@
96 can take quoting into account.
97 """
98 super(RegistryOption, self).__init__(
99- name, default=lambda: unicode(registry.default_key),
100+ name, default=lambda: registry.default_key.decode('utf-8'),
101 default_from_env=default_from_env,
102 from_unicode=self.from_unicode, help=help,
103 invalid=invalid, unquote=False)
104
105=== modified file 'breezy/conflicts.py'
106--- breezy/conflicts.py 2018-05-27 18:00:21 +0000
107+++ breezy/conflicts.py 2018-06-21 23:03:57 +0000
108@@ -400,6 +400,9 @@
109 return not self.__eq__(other)
110
111 def __unicode__(self):
112+ return self.describe()
113+
114+ def describe(self):
115 return self.format % self.__dict__
116
117 def __repr__(self):
118
119=== modified file 'breezy/diff.py'
120--- breezy/diff.py 2018-02-18 19:18:40 +0000
121+++ breezy/diff.py 2018-06-21 23:03:57 +0000
122@@ -738,7 +738,7 @@
123 if sys.platform == 'win32': # Popen doesn't accept unicode on win32
124 command_encoded = []
125 for c in command:
126- if isinstance(c, unicode):
127+ if isinstance(c, text_type):
128 command_encoded.append(c.encode('mbcs'))
129 else:
130 command_encoded.append(c)
131
132=== modified file 'breezy/email_message.py'
133--- breezy/email_message.py 2017-10-26 11:10:38 +0000
134+++ breezy/email_message.py 2018-06-21 23:03:57 +0000
135@@ -69,7 +69,7 @@
136 self._body = body
137 self._parts = []
138
139- if isinstance(to_address, (str, text_type)):
140+ if isinstance(to_address, (bytes, text_type)):
141 to_address = [ to_address ]
142
143 to_addresses = []
144@@ -201,7 +201,7 @@
145 # avoid base64 when it's not necessary in order to be most compatible
146 # with the capabilities of the receiving side, we check with encode()
147 # and decode() whether the body is actually ascii-only.
148- if isinstance(string_, unicode):
149+ if isinstance(string_, text_type):
150 try:
151 return (string_.encode('ascii'), 'ascii')
152 except UnicodeEncodeError:
153
154=== modified file 'breezy/gpg.py'
155--- breezy/gpg.py 2018-06-15 13:10:28 +0000
156+++ breezy/gpg.py 2018-06-21 23:03:57 +0000
157@@ -42,7 +42,7 @@
158 errors,
159 )
160 from .sixish import (
161- BytesIO,
162+ text_type,
163 )
164
165 #verification results
166@@ -232,7 +232,7 @@
167
168 def sign(self, content, mode):
169 import gpg
170- if isinstance(content, unicode):
171+ if isinstance(content, text_type):
172 raise errors.BzrBadParameterUnicode('content')
173
174 plain_text = gpg.Data(content)
175
176=== modified file 'breezy/log.py'
177--- breezy/log.py 2018-05-21 00:30:32 +0000
178+++ breezy/log.py 2018-06-21 23:03:57 +0000
179@@ -1523,7 +1523,7 @@
180 rev.mapping.vcs.show_foreign_revid(rev.foreign_revid))
181
182 # Imported foreign revision revision ids always contain :
183- if not ":" in rev.revision_id:
184+ if not b":" in rev.revision_id:
185 return []
186
187 # Revision was once imported from a foreign repository
188
189=== modified file 'breezy/merge.py'
190--- breezy/merge.py 2018-06-04 11:35:48 +0000
191+++ breezy/merge.py 2018-06-21 23:03:57 +0000
192@@ -51,6 +51,7 @@
193 registry,
194 )
195 from .sixish import (
196+ text_type,
197 viewitems,
198 )
199 # TODO: Report back as changes are merged in
200@@ -841,7 +842,7 @@
201 self.tt.iter_changes(), self.change_reporter)
202 self.cook_conflicts(fs_conflicts)
203 for conflict in self.cooked_conflicts:
204- trace.warning(unicode(conflict))
205+ trace.warning('%s', conflict.describe())
206
207 def _entries3(self):
208 """Gather data about files modified between three trees.
209
210=== modified file 'breezy/mergetools.py'
211--- breezy/mergetools.py 2017-05-22 00:56:52 +0000
212+++ breezy/mergetools.py 2018-06-21 23:03:57 +0000
213@@ -33,6 +33,8 @@
214 )
215 """)
216
217+from .sixish import text_type
218+
219
220 known_merge_tools = {
221 'bcompare': 'bcompare {this} {other} {base} {result}',
222@@ -52,7 +54,7 @@
223 if exe is None:
224 return False
225 base, ext = os.path.splitext(exe)
226- path_ext = [unicode(s.lower())
227+ path_ext = [s.lower()
228 for s in os.getenv('PATHEXT', '').split(os.pathsep)]
229 return os.path.exists(exe) and ext in path_ext
230 else:
231
232=== modified file 'breezy/osutils.py'
233--- breezy/osutils.py 2018-05-13 02:18:13 +0000
234+++ breezy/osutils.py 2018-06-21 23:03:57 +0000
235@@ -384,12 +384,12 @@
236
237 def _win32_abspath(path):
238 # Real ntpath.abspath doesn't have a problem with a unicode cwd
239- return _win32_fixdrive(ntpath.abspath(unicode(path)).replace('\\', '/'))
240+ return _win32_fixdrive(ntpath.abspath(path).replace('\\', '/'))
241
242
243 def _win32_realpath(path):
244 # Real ntpath.realpath doesn't have a problem with a unicode cwd
245- return _win32_fixdrive(ntpath.realpath(unicode(path)).replace('\\', '/'))
246+ return _win32_fixdrive(ntpath.realpath(path).replace('\\', '/'))
247
248
249 def _win32_pathjoin(*args):
250@@ -397,7 +397,7 @@
251
252
253 def _win32_normpath(path):
254- return _win32_fixdrive(ntpath.normpath(unicode(path)).replace('\\', '/'))
255+ return _win32_fixdrive(ntpath.normpath(path).replace('\\', '/'))
256
257
258 def _win32_getcwd():
259@@ -1454,13 +1454,17 @@
260 can be accessed by that path.
261 """
262
263- return unicodedata.normalize('NFC', text_type(path)), True
264+ if isinstance(path, bytes):
265+ path = path.decode(sys.getfilesystemencoding())
266+ return unicodedata.normalize('NFC', path), True
267
268
269 def _inaccessible_normalized_filename(path):
270 __doc__ = _accessible_normalized_filename.__doc__
271
272- normalized = unicodedata.normalize('NFC', text_type(path))
273+ if isinstance(path, bytes):
274+ path = path.decode(sys.getfilesystemencoding())
275+ normalized = unicodedata.normalize('NFC', path)
276 return normalized, normalized == path
277
278
279
280=== modified file 'breezy/plugins/git/branch.py'
281--- breezy/plugins/git/branch.py 2018-05-15 19:46:32 +0000
282+++ breezy/plugins/git/branch.py 2018-06-21 23:03:57 +0000
283@@ -44,6 +44,7 @@
284 from ...revision import (
285 NULL_REVISION,
286 )
287+from ...sixish import text_type
288 from ...trace import (
289 is_quiet,
290 mutter,
291@@ -263,7 +264,7 @@
292 class GitBranchFormat(branch.BranchFormat):
293
294 def network_name(self):
295- return "git"
296+ return b"git"
297
298 def supports_tags(self):
299 return True
300@@ -695,7 +696,7 @@
301 peeled = refs.get_peeled(ref_name)
302 if peeled is None:
303 peeled = unpeeled
304- if type(tag_name) is not unicode:
305+ if not isinstance(tag_name, text_type):
306 raise TypeError(tag_name)
307 yield (ref_name, tag_name, peeled, unpeeled)
308
309
310=== modified file 'breezy/plugins/git/dir.py'
311--- breezy/plugins/git/dir.py 2018-05-13 22:54:28 +0000
312+++ breezy/plugins/git/dir.py 2018-06-21 23:03:57 +0000
313@@ -689,5 +689,5 @@
314 except bzr_errors.NoSuchFile:
315 return self
316 else:
317- commondir = commondir.rstrip('/.git/')
318+ commondir = commondir.rstrip(b'/.git/')
319 return ControlDir.open_from_transport(get_transport_from_path(commondir))
320
321=== modified file 'breezy/plugins/git/fetch.py'
322--- breezy/plugins/git/fetch.py 2018-06-17 13:07:22 +0000
323+++ breezy/plugins/git/fetch.py 2018-06-21 23:03:57 +0000
324@@ -55,6 +55,7 @@
325 from ...revision import (
326 NULL_REVISION,
327 )
328+from ...sixish import text_type
329 from ...bzr.inventorytree import InventoryRevisionTree
330 from ...testament import (
331 StrictTestament3,
332@@ -223,7 +224,7 @@
333 :param lookup_object: Lookup a git object by its SHA1
334 :return: Inventory delta, as list
335 """
336- if type(path) is not unicode:
337+ if not isinstance(path, text_type):
338 raise TypeError(path)
339 ret = []
340 for name, mode, hexsha in base_tree.iteritems():
341
342=== modified file 'breezy/plugins/git/mapping.py'
343--- breezy/plugins/git/mapping.py 2018-05-15 01:20:00 +0000
344+++ breezy/plugins/git/mapping.py 2018-06-21 23:03:57 +0000
345@@ -40,6 +40,7 @@
346 from ...revision import (
347 NULL_REVISION,
348 )
349+from ...sixish import text_type
350 from .errors import (
351 NoPushSupport,
352 UnknownCommitExtra,
353@@ -159,7 +160,7 @@
354 # We must just hope they are valid UTF-8..
355 if path == "":
356 return ROOT_ID
357- if type(path) is unicode:
358+ if isinstance(path, text_type):
359 path = path.encode("utf-8")
360 return FILE_ID_PREFIX + escape_file_id(path)
361
362@@ -553,7 +554,7 @@
363 def symlink_to_blob(symlink_target):
364 from dulwich.objects import Blob
365 blob = Blob()
366- if type(symlink_target) == unicode:
367+ if isinstance(symlink_target, text_type):
368 symlink_target = symlink_target.encode('utf-8')
369 blob.data = symlink_target
370 return blob
371
372=== modified file 'breezy/plugins/git/remote.py'
373--- breezy/plugins/git/remote.py 2018-05-20 16:08:36 +0000
374+++ breezy/plugins/git/remote.py 2018-06-21 23:03:57 +0000
375@@ -48,6 +48,7 @@
376 UninitializableFormat,
377 )
378 from ...revisiontree import RevisionTree
379+from ...sixish import text_type
380 from ...transport import (
381 Transport,
382 register_urlparse_netloc_protocol,
383@@ -902,7 +903,7 @@
384 except KeyError:
385 # Let's just hope it's a commit
386 peeled = unpeeled
387- if type(tag_name) is not unicode:
388+ if not isinstance(tag_name, text_type):
389 raise TypeError(tag_name)
390 yield (ref_name, tag_name, peeled, unpeeled)
391
392
393=== modified file 'breezy/plugins/git/tests/test_memorytree.py'
394--- breezy/plugins/git/tests/test_memorytree.py 2018-05-22 02:05:12 +0000
395+++ breezy/plugins/git/tests/test_memorytree.py 2018-06-21 23:03:57 +0000
396@@ -96,33 +96,30 @@
397 def test_put_new_file(self):
398 branch = self.make_branch('branch')
399 tree = branch.create_memorytree()
400- tree.lock_write()
401- tree.add(['', 'foo'], kinds=['directory', 'file'])
402- tree.put_file_bytes_non_atomic('foo', 'barshoom')
403- self.assertEqual('barshoom', tree.get_file('foo').read())
404- tree.unlock()
405+ with tree.lock_write():
406+ tree.add(['', 'foo'], kinds=['directory', 'file'])
407+ tree.put_file_bytes_non_atomic('foo', b'barshoom')
408+ self.assertEqual(b'barshoom', tree.get_file('foo').read())
409
410 def test_put_existing_file(self):
411 branch = self.make_branch('branch')
412 tree = branch.create_memorytree()
413- tree.lock_write()
414- tree.add(['', 'foo'], kinds=['directory', 'file'])
415- tree.put_file_bytes_non_atomic('foo', 'first-content')
416- tree.put_file_bytes_non_atomic('foo', 'barshoom')
417- self.assertEqual('barshoom', tree.get_file('foo').read())
418- tree.unlock()
419+ with tree.lock_write():
420+ tree.add(['', 'foo'], kinds=['directory', 'file'])
421+ tree.put_file_bytes_non_atomic('foo', b'first-content')
422+ tree.put_file_bytes_non_atomic('foo', b'barshoom')
423+ self.assertEqual(b'barshoom', tree.get_file('foo').read())
424
425 def test_add_in_subdir(self):
426 branch = self.make_branch('branch')
427 tree = branch.create_memorytree()
428- tree.lock_write()
429- self.addCleanup(tree.unlock)
430- tree.add([''], None, ['directory'])
431- tree.mkdir('adir')
432- tree.put_file_bytes_non_atomic('adir/afile', 'barshoom')
433- tree.add(['adir/afile'], None, ['file'])
434- self.assertTrue(tree.is_versioned('adir/afile'))
435- self.assertTrue(tree.is_versioned('adir'))
436+ with tree.lock_write():
437+ tree.add([''], None, ['directory'])
438+ tree.mkdir('adir')
439+ tree.put_file_bytes_non_atomic('adir/afile', b'barshoom')
440+ tree.add(['adir/afile'], None, ['file'])
441+ self.assertTrue(tree.is_versioned('adir/afile'))
442+ self.assertTrue(tree.is_versioned('adir'))
443
444 def test_commit_trivial(self):
445 """Smoke test for commit on a MemoryTree.
446@@ -132,18 +129,16 @@
447 """
448 branch = self.make_branch('branch')
449 tree = branch.create_memorytree()
450- tree.lock_write()
451- tree.add(['', 'foo'], kinds=['directory', 'file'])
452- tree.put_file_bytes_non_atomic('foo', 'barshoom')
453- revision_id = tree.commit('message baby')
454- # the parents list for the tree should have changed.
455- self.assertEqual([revision_id], tree.get_parent_ids())
456- tree.unlock()
457+ with tree.lock_write():
458+ tree.add(['', 'foo'], kinds=['directory', 'file'])
459+ tree.put_file_bytes_non_atomic('foo', b'barshoom')
460+ revision_id = tree.commit('message baby')
461+ # the parents list for the tree should have changed.
462+ self.assertEqual([revision_id], tree.get_parent_ids())
463 # and we should have a revision that is accessible outside the tree lock
464 revtree = tree.branch.repository.revision_tree(revision_id)
465- revtree.lock_read()
466- self.addCleanup(revtree.unlock)
467- self.assertEqual('barshoom', revtree.get_file('foo').read())
468+ with revtree.lock_read():
469+ self.assertEqual(b'barshoom', revtree.get_file('foo').read())
470
471 def test_unversion(self):
472 """Some test for unversion of a memory tree."""
473@@ -168,22 +163,22 @@
474 tree = self.make_branch_and_memory_tree('branch')
475 tree.lock_write()
476 self.addCleanup(tree.unlock)
477- tree.add(['', 'foo'], ['root-id', 'foo-id'], ['directory', 'file'])
478- tree.put_file_bytes_non_atomic('foo', 'content\n')
479+ tree.add(['', 'foo'], [b'root-id', b'foo-id'], ['directory', 'file'])
480+ tree.put_file_bytes_non_atomic('foo', b'content\n')
481 tree.commit('one', rev_id=b'rev-one')
482 tree.rename_one('foo', 'bar')
483- self.assertEqual('bar', tree.id2path('foo-id'))
484+ self.assertEqual('bar', tree.id2path(b'foo-id'))
485 self.assertEqual('content\n', tree._file_transport.get_bytes('bar'))
486 self.assertRaises(errors.NoSuchFile,
487 tree._file_transport.get_bytes, 'foo')
488 tree.commit('two', rev_id=b'rev-two')
489- self.assertEqual('content\n', tree._file_transport.get_bytes('bar'))
490+ self.assertEqual(b'content\n', tree._file_transport.get_bytes('bar'))
491 self.assertRaises(errors.NoSuchFile,
492 tree._file_transport.get_bytes, 'foo')
493
494 rev_tree2 = tree.branch.repository.revision_tree(b'rev-two')
495- self.assertEqual('bar', rev_tree2.id2path('foo-id'))
496- self.assertEqual('content\n', rev_tree2.get_file_text('bar'))
497+ self.assertEqual('bar', rev_tree2.id2path(b'foo-id'))
498+ self.assertEqual(b'content\n', rev_tree2.get_file_text('bar'))
499
500 def test_rename_file_to_subdir(self):
501 tree = self.make_branch_and_memory_tree('branch')
502
503=== modified file 'breezy/plugins/git/tree.py'
504--- breezy/plugins/git/tree.py 2018-06-21 08:03:55 +0000
505+++ breezy/plugins/git/tree.py 2018-06-21 23:03:57 +0000
506@@ -59,6 +59,7 @@
507 CURRENT_REVISION,
508 NULL_REVISION,
509 )
510+from ...sixish import text_type
511
512 from .mapping import (
513 mode_is_executable,
514@@ -1034,9 +1035,9 @@
515 posixpath.basename(path).strip("/"), parent_id)
516
517 def _get_file_ie(self, name, path, value, parent_id):
518- if type(name) is not unicode:
519+ if not isinstance(name, text_type):
520 raise TypeError(name)
521- if type(path) is not unicode:
522+ if not isinstance(path, text_type):
523 raise TypeError(path)
524 if not isinstance(value, tuple) or len(value) != 10:
525 raise TypeError(value)
526
527=== modified file 'breezy/revisionspec.py'
528--- breezy/revisionspec.py 2017-11-12 17:53:47 +0000
529+++ breezy/revisionspec.py 2018-06-21 23:03:57 +0000
530@@ -468,7 +468,7 @@
531 # self.spec comes straight from parsing the command line arguments,
532 # so we expect it to be a Unicode string. Switch it to the internal
533 # representation.
534- if isinstance(self.spec, unicode):
535+ if isinstance(self.spec, text_type):
536 return cache_utf8.encode(self.spec)
537 return self.spec
538
539
540=== modified file 'breezy/shelf.py'
541--- breezy/shelf.py 2018-02-18 19:18:40 +0000
542+++ breezy/shelf.py 2018-06-21 23:03:57 +0000
543@@ -297,7 +297,7 @@
544 if message is not None:
545 metadata[b'message'] = message.encode('utf-8')
546 return serializer.bytes_record(
547- bencode.bencode(metadata), (('metadata',),))
548+ bencode.bencode(metadata), ((b'metadata',),))
549
550 def write_shelf(self, shelf_file, message=None):
551 """Serialize the shelved changes to a file.
552
553=== modified file 'breezy/status.py'
554--- breezy/status.py 2017-12-11 01:58:37 +0000
555+++ breezy/status.py 2018-06-21 23:03:57 +0000
556@@ -27,6 +27,7 @@
557 revision as _mod_revision,
558 )
559 from . import errors as errors
560+from .sixish import text_type
561 from .trace import mutter, warning
562 from .workingtree import ShelvingUnsupported
563
564@@ -195,7 +196,7 @@
565 prefix = 'C '
566 else:
567 prefix = ' '
568- to_file.write("%s %s\n" % (prefix, unicode(conflict)))
569+ to_file.write("%s %s\n" % (prefix, conflict))
570 # Show files that were requested but don't exist (and are
571 # not versioned). We don't involve delta in this; these
572 # paths are really the province of just the status
573
574=== modified file 'breezy/tag.py'
575--- breezy/tag.py 2018-05-13 02:18:13 +0000
576+++ breezy/tag.py 2018-06-21 23:03:57 +0000
577@@ -28,6 +28,7 @@
578 # called tags* are ctags files... mbp 20070220.
579
580 from .registry import Registry
581+from .sixish import text_type
582 from .lazy_import import lazy_import
583 lazy_import(globals(), """
584 import itertools
585@@ -360,7 +361,7 @@
586 """
587 def natural_sort_key(tag):
588 return [f(s) for f, s in
589- zip(itertools.cycle((unicode.lower, int)),
590+ zip(itertools.cycle((text_type.lower, int)),
591 re.split('([0-9]+)', tag[0]))]
592 tags.sort(key=natural_sort_key)
593
594
595=== modified file 'breezy/testament.py'
596--- breezy/testament.py 2017-10-27 00:18:42 +0000
597+++ breezy/testament.py 2018-06-21 23:03:57 +0000
598@@ -78,6 +78,7 @@
599 contains_linebreaks,
600 sha_strings,
601 )
602+from .sixish import text_type
603 from .tree import Tree
604
605
606@@ -162,7 +163,9 @@
607 def _escape_path(self, path):
608 if contains_linebreaks(path):
609 raise ValueError(path)
610- return unicode(path.replace('\\', '/').replace(' ', '\\ '))
611+ if not isinstance(path, text_type):
612+ raise TypeError(path)
613+ return path.replace(u'\\', u'/').replace(u' ', u'\\ ')
614
615 def _entry_to_line(self, path, ie):
616 """Turn an inventory entry into a testament line"""
617@@ -240,6 +243,9 @@
618 def _escape_path(self, path):
619 if contains_linebreaks(path):
620 raise ValueError(path)
621- if path == '':
622- path = '.'
623- return unicode(path.replace('\\', '/').replace(' ', '\\ '))
624+ if not isinstance(path, text_type):
625+ # TODO(jelmer): Clean this up for pad.lv/1696545
626+ path = path.decode('ascii')
627+ if path == u'':
628+ path = u'.'
629+ return path.replace(u'\\', u'/').replace(u' ', u'\\ ')
630
631=== modified file 'breezy/tests/blackbox/test_reconcile.py'
632--- breezy/tests/blackbox/test_reconcile.py 2018-02-18 15:21:06 +0000
633+++ breezy/tests/blackbox/test_reconcile.py 2018-06-21 23:03:57 +0000
634@@ -51,10 +51,10 @@
635 # an empty inventory with no revision will trigger reconciliation.
636 repo = t.branch.repository
637 inv = inventory.Inventory(revision_id=b'missing')
638- inv.root.revision='missing'
639+ inv.root.revision=b'missing'
640 repo.lock_write()
641 repo.start_write_group()
642- repo.add_inventory('missing', inv, [])
643+ repo.add_inventory(b'missing', inv, [])
644 repo.commit_write_group()
645 repo.unlock()
646 (out, err) = self.run_bzr('reconcile')
647
648=== modified file 'breezy/tests/per_branch/test_branch.py'
649--- breezy/tests/per_branch/test_branch.py 2018-06-15 13:10:28 +0000
650+++ breezy/tests/per_branch/test_branch.py 2018-06-21 23:03:57 +0000
651@@ -74,7 +74,7 @@
652 graph = tree.branch.repository.get_graph()
653 ancestry_graph = graph.get_parent_map(
654 tree.branch.repository.all_revision_ids())
655- self.assertEqual({revmap['1']: ('null:',),
656+ self.assertEqual({revmap['1']: (b'null:',),
657 revmap['2']: (revmap['1'], ),
658 revmap['1.1.1']: (revmap['1'], ),
659 revmap['3']: (revmap['2'], revmap['1.1.1'], ),
660@@ -213,9 +213,9 @@
661 if not wt.branch.repository._format.supports_ghosts:
662 raise tests.TestNotApplicable("repository format does not "
663 "support ghosts")
664- wt.set_parent_ids(['non:existent@rev--ision--0--2'],
665+ wt.set_parent_ids([b'non:existent@rev--ision--0--2'],
666 allow_leftmost_as_ghost=True)
667- self.assertEqual(['non:existent@rev--ision--0--2'],
668+ self.assertEqual([b'non:existent@rev--ision--0--2'],
669 wt.get_parent_ids())
670 rev_id = wt.commit('commit against a ghost first parent.')
671 rev = wt.branch.repository.get_revision(rev_id)
672@@ -230,15 +230,15 @@
673 raise tests.TestNotApplicable("repository format does not "
674 "support ghosts")
675 wt.set_parent_ids([
676- 'foo@azkhazan-123123-abcabc',
677- 'wibble@fofof--20050401--1928390812',
678+ b'foo@azkhazan-123123-abcabc',
679+ b'wibble@fofof--20050401--1928390812',
680 ],
681 allow_leftmost_as_ghost=True)
682 rev_id = wt.commit("commit from ghost base with one merge")
683 # the revision should have been committed with two parents
684 rev = wt.branch.repository.get_revision(rev_id)
685- self.assertEqual(['foo@azkhazan-123123-abcabc',
686- 'wibble@fofof--20050401--1928390812'],
687+ self.assertEqual([b'foo@azkhazan-123123-abcabc',
688+ b'wibble@fofof--20050401--1928390812'],
689 rev.parent_ids)
690
691 def test_bad_revision(self):
692
693=== modified file 'breezy/tests/per_branch/test_check.py'
694--- breezy/tests/per_branch/test_check.py 2017-06-05 20:48:31 +0000
695+++ breezy/tests/per_branch/test_check.py 2018-06-21 23:03:57 +0000
696@@ -60,7 +60,7 @@
697 result = tree.branch.check(refs)
698 ui.ui_factory = tests.TestUIFactory(stdout=BytesIO())
699 result.report_results(True)
700- self.assertContainsRe('revno does not match len',
701+ self.assertContainsRe(b'revno does not match len',
702 ui.ui_factory.stdout.getvalue())
703
704 def test_check_branch_report_results(self):
705
706=== modified file 'breezy/tests/per_branch/test_commit.py'
707--- breezy/tests/per_branch/test_commit.py 2018-03-20 07:41:20 +0000
708+++ breezy/tests/per_branch/test_commit.py 2018-06-21 23:03:57 +0000
709@@ -189,20 +189,20 @@
710 # setting up a playground
711 tree.add('rootfile')
712 rootfile_id = tree.path2id('rootfile')
713- tree.put_file_bytes_non_atomic('rootfile', 'abc')
714+ tree.put_file_bytes_non_atomic('rootfile', b'abc')
715 tree.add('dir')
716 dir_id = tree.path2id('dir')
717 tree.add('dir/subfile')
718 dir_subfile_id = tree.path2id('dir/subfile')
719- tree.put_file_bytes_non_atomic('to_be_unversioned', 'blah')
720+ tree.put_file_bytes_non_atomic('to_be_unversioned', b'blah')
721 tree.add(['to_be_unversioned'])
722 to_be_unversioned_id = tree.path2id('to_be_unversioned')
723- tree.put_file_bytes_non_atomic('dir/subfile', 'def')
724+ tree.put_file_bytes_non_atomic('dir/subfile', b'def')
725 revid1 = tree.commit('first revision')
726
727 with tree.lock_write():
728 # making changes
729- tree.put_file_bytes_non_atomic('rootfile', 'jkl')
730+ tree.put_file_bytes_non_atomic('rootfile', b'jkl')
731 tree.rename_one('dir/subfile', 'dir/subfile_renamed')
732 tree.unversion(['to_be_unversioned'])
733 tree.mkdir('added_dir')
734
735=== modified file 'breezy/tests/per_branch/test_iter_merge_sorted_revisions.py'
736--- breezy/tests/per_branch/test_iter_merge_sorted_revisions.py 2018-03-27 00:51:45 +0000
737+++ breezy/tests/per_branch/test_iter_merge_sorted_revisions.py 2018-06-21 23:03:57 +0000
738@@ -81,47 +81,47 @@
739
740 def test_merge_sorted_range(self):
741 self.assertIterRevids(['1.1.1'],
742- start_revision_id=b'1.1.1', stop_revision_id=b'1')
743+ start_revision_id='1.1.1', stop_revision_id='1')
744
745 def test_merge_sorted_range_start_only(self):
746 self.assertIterRevids(['1.1.1', '1'],
747- start_revision_id=b'1.1.1')
748+ start_revision_id='1.1.1')
749
750 def test_merge_sorted_range_stop_exclude(self):
751 self.assertIterRevids(['3', '1.1.1', '2'], stop_revision_id=b'1')
752
753 def test_merge_sorted_range_stop_include(self):
754 self.assertIterRevids(['3', '1.1.1', '2'],
755- stop_revision_id=b'2', stop_rule='include')
756+ stop_revision_id='2', stop_rule='include')
757
758 def test_merge_sorted_range_stop_with_merges(self):
759 self.assertIterRevids(['3', '1.1.1'],
760- stop_revision_id=b'3', stop_rule='with-merges')
761+ stop_revision_id='3', stop_rule='with-merges')
762
763 def test_merge_sorted_range_stop_with_merges_can_show_non_parents(self):
764 # 1.1.1 gets logged before the end revision is reached.
765 # so it is returned even though 1.1.1 is not a parent of 2.
766 self.assertIterRevids(['3', '1.1.1', '2'],
767- stop_revision_id=b'2', stop_rule='with-merges')
768+ stop_revision_id='2', stop_rule='with-merges')
769
770 def test_merge_sorted_range_stop_with_merges_ignore_non_parents(self):
771 # 2 is not a parent of 1.1.1 so it must not be returned
772 self.assertIterRevids(['3', '1.1.1'],
773- stop_revision_id=b'1.1.1', stop_rule='with-merges')
774+ stop_revision_id='1.1.1', stop_rule='with-merges')
775
776 def test_merge_sorted_single_stop_exclude(self):
777 # from X..X exclusive is an empty result
778- self.assertIterRevids([], start_revision_id=b'3', stop_revision_id=b'3')
779+ self.assertIterRevids([], start_revision_id='3', stop_revision_id='3')
780
781 def test_merge_sorted_single_stop_include(self):
782 # from X..X inclusive is [X]
783 self.assertIterRevids(['3'],
784- start_revision_id=b'3', stop_revision_id=b'3',
785+ start_revision_id='3', stop_revision_id='3',
786 stop_rule='include')
787
788 def test_merge_sorted_single_stop_with_merges(self):
789 self.assertIterRevids(['3', '1.1.1'],
790- start_revision_id=b'3', stop_revision_id=b'3',
791+ start_revision_id='3', stop_revision_id='3',
792 stop_rule='with-merges')
793
794 def test_merge_sorted_forward(self):
795@@ -129,25 +129,25 @@
796
797 def test_merge_sorted_range_forward(self):
798 self.assertIterRevids(['1.1.1'],
799- start_revision_id=b'1.1.1', stop_revision_id=b'1',
800+ start_revision_id='1.1.1', stop_revision_id='1',
801 direction='forward')
802
803 def test_merge_sorted_range_start_only_forward(self):
804 self.assertIterRevids(['1', '1.1.1'],
805- start_revision_id=b'1.1.1', direction='forward')
806+ start_revision_id='1.1.1', direction='forward')
807
808 def test_merge_sorted_range_stop_exclude_forward(self):
809 self.assertIterRevids(['2', '1.1.1', '3'],
810- stop_revision_id=b'1', direction='forward')
811+ stop_revision_id='1', direction='forward')
812
813 def test_merge_sorted_range_stop_include_forward(self):
814 self.assertIterRevids(['2', '1.1.1', '3'],
815- stop_revision_id=b'2', stop_rule='include',
816+ stop_revision_id='2', stop_rule='include',
817 direction='forward')
818
819 def test_merge_sorted_range_stop_with_merges_forward(self):
820 self.assertIterRevids(['1.1.1', '3'],
821- stop_revision_id=b'3', stop_rule='with-merges',
822+ stop_revision_id='3', stop_rule='with-merges',
823 direction='forward')
824
825
826@@ -303,7 +303,7 @@
827 branch)
828 # 3 and 2.1.2 are not part of 2.2.1 ancestry and should not appear
829 self.assertIterRevids(['2.2.1', '2.1.1', '2', '1.1.1', '1'],
830- branch, start_revision_id=b'2.2.1',
831+ branch, start_revision_id='2.2.1',
832 stop_rule='with-merges')
833
834 def test_merge_sorted_with_different_depths_merge(self):
835@@ -317,7 +317,7 @@
836 # 3 (and its descendants) and 2.1.2 are not part of 2.2.1 ancestry and
837 # should not appear
838 self.assertIterRevids(['2.2.1', '2.1.1', '2', '1'],
839- branch, start_revision_id=b'2.2.1',
840+ branch, start_revision_id='2.2.1',
841 stop_rule='with-merges')
842
843 def test_merge_sorted_exclude_ancestry(self):
844@@ -329,6 +329,6 @@
845 self.assertIterRevids(['1.1.2', '1.2.1'],
846 branch,
847 stop_rule='with-merges-without-common-ancestry',
848- start_revision_id=b'1.1.2',
849- stop_revision_id=b'1.1.1')
850+ start_revision_id='1.1.2',
851+ stop_revision_id='1.1.1')
852
853
854=== modified file 'breezy/tests/per_branch/test_revision_id_to_dotted_revno.py'
855--- breezy/tests/per_branch/test_revision_id_to_dotted_revno.py 2017-08-07 21:14:18 +0000
856+++ breezy/tests/per_branch/test_revision_id_to_dotted_revno.py 2018-06-21 23:03:57 +0000
857@@ -26,11 +26,11 @@
858 def test_lookup_dotted_revno(self):
859 tree, revmap = self.create_tree_with_merge()
860 the_branch = tree.branch
861- self.assertEqual((0,), the_branch.revision_id_to_dotted_revno('null:'))
862+ self.assertEqual((0,), the_branch.revision_id_to_dotted_revno(b'null:'))
863 self.assertEqual((1,), the_branch.revision_id_to_dotted_revno(revmap['1']))
864 self.assertEqual((2,), the_branch.revision_id_to_dotted_revno(revmap['2']))
865 self.assertEqual((3,), the_branch.revision_id_to_dotted_revno(revmap['3']))
866 self.assertEqual((1, 1, 1), the_branch.revision_id_to_dotted_revno(
867 revmap['1.1.1']))
868 self.assertRaises(errors.NoSuchRevision,
869- the_branch.revision_id_to_dotted_revno, 'rev-1.0.2')
870+ the_branch.revision_id_to_dotted_revno, b'rev-1.0.2')
871
872=== modified file 'breezy/tests/per_foreign_vcs/test_branch.py'
873--- breezy/tests/per_foreign_vcs/test_branch.py 2017-11-19 18:55:26 +0000
874+++ breezy/tests/per_foreign_vcs/test_branch.py 2018-06-21 23:03:57 +0000
875@@ -146,4 +146,4 @@
876 self.assertIsInstance(self.branch_format.get_format_description(), str)
877
878 def test_network_name(self):
879- self.assertIsInstance(self.branch_format.network_name(), str)
880+ self.assertIsInstance(self.branch_format.network_name(), bytes)
881
882=== modified file 'breezy/tests/per_interbranch/test_push.py'
883--- breezy/tests/per_interbranch/test_push.py 2018-03-27 00:51:45 +0000
884+++ breezy/tests/per_interbranch/test_push.py 2018-06-21 23:03:57 +0000
885@@ -267,10 +267,10 @@
886 builder.start_series()
887 revid1 = builder.build_snapshot(None, [
888 ('add', ('', None, 'directory', '')),
889- ('add', ('filename', None, 'file', 'content\n'))])
890+ ('add', ('filename', None, 'file', b'content\n'))])
891 revid2 = builder.build_snapshot([revid1], [])
892 revid3 = builder.build_snapshot([revid2],
893- [('modify', ('filename', 'new-content\n'))])
894+ [('modify', ('filename', b'new-content\n'))])
895 builder.finish_series()
896 trunk = builder.get_branch()
897 # Sprout rev-1 to "trunk", so that we can stack on it.
898
899=== modified file 'breezy/tests/per_interrepository/test_fetch.py'
900--- breezy/tests/per_interrepository/test_fetch.py 2018-06-21 17:53:38 +0000
901+++ breezy/tests/per_interrepository/test_fetch.py 2018-06-21 23:03:57 +0000
902@@ -161,10 +161,10 @@
903 builder = self.make_branch_builder('full-branch')
904 builder.start_series()
905 builder.build_snapshot(None, [
906- ('add', ('', 'root-id', 'directory', '')),
907- ('add', ('file', 'file-id', 'file', 'content\n'))],
908+ ('add', ('', b'root-id', 'directory', '')),
909+ ('add', ('file', b'file-id', 'file', b'content\n'))],
910 revision_id=b'first')
911- builder.build_snapshot(['first'], [
912+ builder.build_snapshot([b'first'], [
913 ('modify', ('file', b'second content\n'))],
914 revision_id=b'second')
915 builder.build_snapshot([b'second'], [
916@@ -174,19 +174,23 @@
917 branch = builder.get_branch()
918 repo = self.make_repository('stacking-base')
919 trunk = repo.controldir.create_branch()
920- trunk.repository.fetch(branch.repository, 'second')
921+ trunk.repository.fetch(branch.repository, b'second')
922 repo = self.make_repository('stacked')
923 stacked_branch = repo.controldir.create_branch()
924 stacked_branch.set_stacked_on_url(trunk.base)
925- stacked_branch.repository.fetch(branch.repository, 'third')
926+ stacked_branch.repository.fetch(branch.repository, b'third')
927 target = self.make_to_repository('target')
928+<<<<<<< TREE
929 try:
930 target.fetch(stacked_branch.repository, 'third')
931 except errors.NoRoundtrippingSupport:
932 raise TestNotApplicable('roundtripping not supported')
933+=======
934+ target.fetch(stacked_branch.repository, b'third')
935+>>>>>>> MERGE-SOURCE
936 target.lock_read()
937 self.addCleanup(target.unlock)
938- all_revs = {'first', 'second', 'third'}
939+ all_revs = {b'first', b'second', b'third'}
940 self.assertEqual(all_revs, set(target.get_parent_map(all_revs)))
941
942 def test_fetch_parent_inventories_at_stacking_boundary_smart(self):
943
944=== modified file 'breezy/tests/per_intertree/test_compare.py'
945--- breezy/tests/per_intertree/test_compare.py 2018-05-13 02:18:13 +0000
946+++ breezy/tests/per_intertree/test_compare.py 2018-06-21 23:03:57 +0000
947@@ -793,14 +793,14 @@
948 tree1.mkdir('changing/unchanging', b'mid-id')
949 tree1.add(['changing/unchanging/file'], [b'file-id'], ['file'])
950 tree1.put_file_bytes_non_atomic(
951- 'changing/unchanging/file', 'a file', file_id='file-id')
952+ 'changing/unchanging/file', b'a file', file_id=b'file-id')
953 tree2 = self.make_to_branch_and_tree('2')
954 tree2.set_root_id(tree1.get_root_id())
955 tree2.mkdir('changed', b'parent-id')
956 tree2.mkdir('changed/unchanging', b'mid-id')
957 tree2.add(['changed/unchanging/file'], [b'file-id'], ['file'])
958 tree2.put_file_bytes_non_atomic(
959- 'changed/unchanging/file', 'changed content', file_id=b'file-id')
960+ 'changed/unchanging/file', b'changed content', file_id=b'file-id')
961 tree1, tree2 = self.mutable_trees_to_test_trees(self, tree1, tree2)
962 # parent-id has changed, as has file-id
963 root_id = tree1.path2id('')
964@@ -820,15 +820,15 @@
965 tree1.mkdir('changed/unchanging', b'mid-id')
966 tree1.add(['changed/unchanging/file'], [b'file-id'], ['file'])
967 tree1.put_file_bytes_non_atomic(
968- 'changed/unchanging/file', 'a file',
969- 'file-id')
970+ 'changed/unchanging/file', b'a file',
971+ b'file-id')
972 tree2 = self.make_to_branch_and_tree('2')
973 tree2.set_root_id(b'new')
974 tree2.mkdir('changed', b'parent-id')
975 tree2.mkdir('changed/unchanging', b'mid-id')
976 tree2.add(['changed/unchanging/file'], [b'file-id'], ['file'])
977 tree2.put_file_bytes_non_atomic(
978- 'changed/unchanging/file', 'changed content', file_id=b'file-id')
979+ 'changed/unchanging/file', b'changed content', file_id=b'file-id')
980 tree1, tree2 = self.mutable_trees_to_locked_test_trees(tree1, tree2)
981 # old is gone, new is added, parent-id has changed(reparented), as has
982 # file-id(content)
983@@ -874,12 +874,12 @@
984 # it must be emitted as a change.
985 tree1 = self.make_branch_and_tree('1')
986 tree1.add(['a'], [b'a-id'], ['file'])
987- tree1.put_file_bytes_non_atomic('a', 'a file')
988+ tree1.put_file_bytes_non_atomic('a', b'a file')
989 tree2 = self.make_to_branch_and_tree('2')
990 tree2.set_root_id(tree1.get_root_id())
991 tree2.mkdir('a', b'b-id')
992 tree2.add(['a/c'], [b'c-id'], ['file'])
993- tree2.put_file_bytes_non_atomic('a/c', 'another file')
994+ tree2.put_file_bytes_non_atomic('a/c', b'another file')
995 tree1, tree2 = self.mutable_trees_to_locked_test_trees(tree1, tree2)
996 # a-id is gone, b-id and c-id are added.
997 self.assertEqualIterChanges(
998@@ -900,7 +900,7 @@
999 tree2.mkdir('a', b'a-new-id')
1000 tree2.mkdir('a/reparented', b'reparented-id')
1001 tree2.add(['b'], [b'a-old-id'], ['file'])
1002- tree2.put_file_bytes_non_atomic('b', '')
1003+ tree2.put_file_bytes_non_atomic('b', b'')
1004 tree1, tree2 = self.mutable_trees_to_locked_test_trees(tree1, tree2)
1005 # a-old-id is kind-changed, a-new-id is added, reparented-id is renamed,
1006 # deleted-id is gone
1007
1008=== modified file 'breezy/tests/per_pack_repository.py'
1009--- breezy/tests/per_pack_repository.py 2018-05-27 18:00:21 +0000
1010+++ breezy/tests/per_pack_repository.py 2018-06-21 23:03:57 +0000
1011@@ -199,8 +199,8 @@
1012 index = self.index_class(trans, 'pack-names', None)
1013 self.assertEqual(9, len(list(index.iter_all_entries())))
1014 # insert some files in obsolete_packs which should be removed by pack.
1015- trans.put_bytes('obsolete_packs/foo', '123')
1016- trans.put_bytes('obsolete_packs/bar', '321')
1017+ trans.put_bytes('obsolete_packs/foo', b'123')
1018+ trans.put_bytes('obsolete_packs/bar', b'321')
1019 # committing one more should coalesce to 1 of 10.
1020 tree.commit('commit triggering pack')
1021 index = self.index_class(trans, 'pack-names', None)
1022@@ -275,7 +275,7 @@
1023 repo_transport = bzrdir.get_repository_transport(None)
1024 self.assertTrue(repo_transport.has('obsolete_packs'))
1025 # these files are in use by another client and typically can't be deleted
1026- repo_transport.put_bytes('obsolete_packs/.nfsblahblah', 'contents')
1027+ repo_transport.put_bytes('obsolete_packs/.nfsblahblah', b'contents')
1028 repo._pack_collection._clear_obsolete_packs()
1029 self.assertTrue(repo_transport.has('obsolete_packs/.nfsblahblah'))
1030
1031
1032=== modified file 'breezy/tests/per_repository/test_commit_builder.py'
1033--- breezy/tests/per_repository/test_commit_builder.py 2018-05-05 15:49:41 +0000
1034+++ breezy/tests/per_repository/test_commit_builder.py 2018-06-21 23:03:57 +0000
1035@@ -556,7 +556,7 @@
1036 tree = self.make_branch_and_tree('.')
1037 self.build_tree(['file'])
1038 def change_file():
1039- tree.put_file_bytes_non_atomic('file', 'new content')
1040+ tree.put_file_bytes_non_atomic('file', b'new content')
1041 self._add_commit_change_check_changed(tree, ('file', 'file'), change_file,
1042 expect_fs_hash=True)
1043
1044
1045=== modified file 'breezy/tests/per_repository/test_repository.py'
1046--- breezy/tests/per_repository/test_repository.py 2018-06-15 13:10:28 +0000
1047+++ breezy/tests/per_repository/test_repository.py 2018-06-21 23:03:57 +0000
1048@@ -44,6 +44,7 @@
1049 )
1050 from ...sixish import (
1051 BytesIO,
1052+ text_type,
1053 )
1054 from .. import (
1055 per_repository,
1056@@ -416,7 +417,7 @@
1057 self.assertEqual(rev.message, message)
1058 # insist the class is unicode no matter what came in for
1059 # consistency.
1060- self.assertIsInstance(rev.message, unicode)
1061+ self.assertIsInstance(rev.message, text_type)
1062
1063 def test_commit_unicode_message(self):
1064 # a siple unicode message should be preserved
1065
1066=== modified file 'breezy/tests/per_repository_reference/test_fetch.py'
1067--- breezy/tests/per_repository_reference/test_fetch.py 2018-05-22 02:05:12 +0000
1068+++ breezy/tests/per_repository_reference/test_fetch.py 2018-06-21 23:03:57 +0000
1069@@ -61,25 +61,25 @@
1070 # Use 'make_branch' which gives us a bzr:// branch when appropriate,
1071 # rather than creating a branch-on-disk
1072 stack_b = self.make_branch('stack-on')
1073- stack_b.pull(source_b, stop_revision='B-id')
1074+ stack_b.pull(source_b, stop_revision=b'B-id')
1075 target_b = self.make_branch('target')
1076 target_b.set_stacked_on_url('../stack-on')
1077- target_b.pull(source_b, stop_revision='C-id')
1078+ target_b.pull(source_b, stop_revision=b'C-id')
1079 # At this point, we should have a target branch, with 1 revision, on
1080 # top of the source.
1081 final_b = self.make_branch('final')
1082 final_b.pull(target_b)
1083 final_b.lock_read()
1084 self.addCleanup(final_b.unlock)
1085- self.assertEqual('C-id', final_b.last_revision())
1086- text_keys = [('a-id', 'A-id'), ('a-id', 'B-id'), ('a-id', 'C-id')]
1087+ self.assertEqual(b'C-id', final_b.last_revision())
1088+ text_keys = [(b'a-id', b'A-id'), (b'a-id', b'B-id'), (b'a-id', b'C-id')]
1089 stream = final_b.repository.texts.get_record_stream(text_keys,
1090 'unordered', True)
1091 records = sorted([(r.key, r.get_bytes_as('fulltext')) for r in stream])
1092 self.assertEqual([
1093- (('a-id', 'A-id'), ''.join(content[:-2])),
1094- (('a-id', 'B-id'), ''.join(content[:-1])),
1095- (('a-id', 'C-id'), ''.join(content)),
1096+ ((b'a-id', b'A-id'), b''.join(content[:-2])),
1097+ ((b'a-id', b'B-id'), b''.join(content[:-1])),
1098+ ((b'a-id', b'C-id'), b''.join(content)),
1099 ], records)
1100
1101 def test_sprout_from_smart_stacked_with_short_history(self):
1102@@ -97,7 +97,7 @@
1103 target_bzrdir.create_repository()
1104 target_b = target_bzrdir.create_branch()
1105 target_b.set_stacked_on_url('../stack-on')
1106- target_b.pull(source_b, stop_revision='C-id')
1107+ target_b.pull(source_b, stop_revision=b'C-id')
1108 # Now we should be able to branch from the remote location to a local
1109 # location
1110 final_b = target_b.controldir.sprout('final').open_branch()
1111@@ -114,16 +114,16 @@
1112 builder = self.make_branch_builder('source')
1113 builder.start_series()
1114 builder.build_snapshot(None, [
1115- ('add', ('', 'root-id', 'directory', None)),
1116- ('add', ('file', 'file-id', 'file', 'content\n'))],
1117+ ('add', ('', b'root-id', 'directory', None)),
1118+ ('add', ('file', b'file-id', 'file', b'content\n'))],
1119 revision_id=b'A-id')
1120- builder.build_snapshot(['A-id', 'ghost-id'], [], revision_id=b'B-id')
1121+ builder.build_snapshot([b'A-id', b'ghost-id'], [], revision_id=b'B-id')
1122 builder.finish_series()
1123 source_b = builder.get_branch()
1124 source_b.lock_read()
1125 self.addCleanup(source_b.unlock)
1126 base = self.make_branch('base')
1127- base.pull(source_b, stop_revision='A-id')
1128+ base.pull(source_b, stop_revision=b'A-id')
1129 stacked = self.make_branch('stacked')
1130 stacked.set_stacked_on_url('../base')
1131 return source_b, base, stacked
1132@@ -131,7 +131,7 @@
1133 def test_fetch_with_ghost_stacked(self):
1134 (source_b, base,
1135 stacked) = self.make_source_with_ghost_and_stacked_target()
1136- stacked.pull(source_b, stop_revision='B-id')
1137+ stacked.pull(source_b, stop_revision=b'B-id')
1138
1139 def test_fetch_into_smart_stacked_with_ghost(self):
1140 (source_b, base,
1141@@ -142,7 +142,7 @@
1142 stacked = branch.Branch.open(trans.base)
1143 stacked.lock_write()
1144 self.addCleanup(stacked.unlock)
1145- stacked.pull(source_b, stop_revision='B-id')
1146+ stacked.pull(source_b, stop_revision=b'B-id')
1147
1148 def test_fetch_to_stacked_from_smart_with_ghost(self):
1149 (source_b, base,
1150@@ -153,7 +153,7 @@
1151 source_b = branch.Branch.open(trans.base)
1152 source_b.lock_read()
1153 self.addCleanup(source_b.unlock)
1154- stacked.pull(source_b, stop_revision='B-id')
1155+ stacked.pull(source_b, stop_revision=b'B-id')
1156
1157
1158 class TestFetchFromRepoWithUnconfiguredFallbacks(TestFetchBase):
1159@@ -163,10 +163,10 @@
1160 # Use 'make_branch' which gives us a bzr:// branch when appropriate,
1161 # rather than creating a branch-on-disk
1162 stack_b = self.make_branch('stack-on')
1163- stack_b.pull(source_b, stop_revision='B-id')
1164+ stack_b.pull(source_b, stop_revision=b'B-id')
1165 stacked_b = self.make_branch('stacked')
1166 stacked_b.set_stacked_on_url('../stack-on')
1167- stacked_b.pull(source_b, stop_revision='C-id')
1168+ stacked_b.pull(source_b, stop_revision=b'C-id')
1169 return stacked_b.repository
1170
1171 def test_fetch_everything_includes_parent_invs(self):
1172@@ -182,9 +182,9 @@
1173 target.revisions.keys())
1174 self.assertEqual(repo_missing_fallbacks.inventories.keys(),
1175 target.inventories.keys())
1176- self.assertEqual(['C-id'],
1177+ self.assertEqual([b'C-id'],
1178 sorted(k[-1] for k in target.revisions.keys()))
1179- self.assertEqual(['B-id', 'C-id'],
1180+ self.assertEqual([b'B-id', b'C-id'],
1181 sorted(k[-1] for k in target.inventories.keys()))
1182
1183
1184
1185=== modified file 'breezy/tests/per_repository_reference/test_graph.py'
1186--- breezy/tests/per_repository_reference/test_graph.py 2018-05-22 02:05:12 +0000
1187+++ breezy/tests/per_repository_reference/test_graph.py 2018-06-21 23:03:57 +0000
1188@@ -57,19 +57,19 @@
1189 builder = self.make_branch_builder('source')
1190 builder.start_series()
1191 builder.build_snapshot(None, [
1192- ('add', ('', 'directory', 'root-id', None))],
1193+ ('add', ('', 'directory', b'root-id', None))],
1194 revision_id=b'A')
1195- builder.build_snapshot(['A'], [], revision_id=b'B')
1196- builder.build_snapshot(['B'], [], revision_id=b'C')
1197- builder.build_snapshot(['C'], [], revision_id=b'D')
1198- builder.build_snapshot(['D'], [], revision_id=b'E')
1199- builder.build_snapshot(['E'], [], revision_id=b'F')
1200+ builder.build_snapshot([b'A'], [], revision_id=b'B')
1201+ builder.build_snapshot([b'B'], [], revision_id=b'C')
1202+ builder.build_snapshot([b'C'], [], revision_id=b'D')
1203+ builder.build_snapshot([b'D'], [], revision_id=b'E')
1204+ builder.build_snapshot([b'E'], [], revision_id=b'F')
1205 source_b = builder.get_branch()
1206 master_b = self.make_branch('master')
1207- master_b.pull(source_b, stop_revision='E')
1208+ master_b.pull(source_b, stop_revision=b'E')
1209 stacked_b = self.make_branch('stacked')
1210 stacked_b.set_stacked_on_url('../master')
1211- stacked_b.pull(source_b, stop_revision='F')
1212+ stacked_b.pull(source_b, stop_revision=b'F')
1213 builder.finish_series()
1214 return master_b, stacked_b
1215
1216
1217=== modified file 'breezy/tests/per_repository_reference/test_unlock.py'
1218--- breezy/tests/per_repository_reference/test_unlock.py 2018-05-22 02:05:12 +0000
1219+++ breezy/tests/per_repository_reference/test_unlock.py 2018-06-21 23:03:57 +0000
1220@@ -35,24 +35,24 @@
1221 if not repo._format.supports_external_lookups:
1222 raise tests.TestNotApplicable('format does not support stacking')
1223 builder.build_snapshot(None, [
1224- ('add', ('', 'root-id', 'directory', None)),
1225- ('add', ('file', 'file-id', 'file', 'contents\n'))],
1226+ ('add', ('', b'root-id', 'directory', None)),
1227+ ('add', ('file', b'file-id', 'file', b'contents\n'))],
1228 revision_id=b'A-id')
1229- builder.build_snapshot(['A-id'], [
1230- ('modify', ('file', 'new-content\n'))],
1231+ builder.build_snapshot([b'A-id'], [
1232+ ('modify', ('file', b'new-content\n'))],
1233 revision_id=b'B-id')
1234- builder.build_snapshot(['B-id'], [
1235- ('modify', ('file', 'yet more content\n'))],
1236+ builder.build_snapshot([b'B-id'], [
1237+ ('modify', ('file', b'yet more content\n'))],
1238 revision_id=b'C-id')
1239 builder.finish_series()
1240 source_b = builder.get_branch()
1241 source_b.lock_read()
1242 self.addCleanup(source_b.unlock)
1243 base = self.make_branch('base')
1244- base.pull(source_b, stop_revision='B-id')
1245+ base.pull(source_b, stop_revision=b'B-id')
1246 stacked = self.make_branch('stacked')
1247 stacked.set_stacked_on_url('../base')
1248- stacked.pull(source_b, stop_revision='C-id')
1249+ stacked.pull(source_b, stop_revision=b'C-id')
1250
1251 return base, stacked
1252
1253
1254=== modified file 'breezy/tests/per_repository_vf/test_check_reconcile.py'
1255--- breezy/tests/per_repository_vf/test_check_reconcile.py 2017-06-08 23:30:31 +0000
1256+++ breezy/tests/per_repository_vf/test_check_reconcile.py 2018-06-21 23:03:57 +0000
1257@@ -99,10 +99,10 @@
1258 """
1259
1260 def all_versions_after_reconcile(self):
1261- return ('rev1a', )
1262+ return (b'rev1a', )
1263
1264 def populated_parents(self):
1265- return (((), 'rev1a'), )
1266+ return (((), b'rev1a'), )
1267
1268 def corrected_parents(self):
1269 # Same as the populated parents, because there was nothing wrong.
1270@@ -114,22 +114,22 @@
1271 def populate_repository(self, repo):
1272 # make rev1a: A well-formed revision, containing 'a-file'
1273 inv = self.make_one_file_inventory(
1274- repo, 'rev1a', [], root_revision='rev1a')
1275- self.add_revision(repo, 'rev1a', inv, [])
1276+ repo, b'rev1a', [], root_revision=b'rev1a')
1277+ self.add_revision(repo, b'rev1a', inv, [])
1278 self.versioned_root = repo.supports_rich_root()
1279
1280 def repository_text_key_references(self):
1281 result = {}
1282 if self.versioned_root:
1283- result.update({('TREE_ROOT', 'rev1a'): True})
1284- result.update({('a-file-id', 'rev1a'): True})
1285+ result.update({(b'TREE_ROOT', b'rev1a'): True})
1286+ result.update({(b'a-file-id', b'rev1a'): True})
1287 return result
1288
1289 def repository_text_keys(self):
1290- return {('a-file-id', 'rev1a'):[NULL_REVISION]}
1291+ return {(b'a-file-id', b'rev1a'):[NULL_REVISION]}
1292
1293 def versioned_repository_text_keys(self):
1294- return {('TREE_ROOT', 'rev1a'):[NULL_REVISION]}
1295+ return {(b'TREE_ROOT', b'rev1a'):[NULL_REVISION]}
1296
1297
1298 class FileParentIsNotInRevisionAncestryScenario(BrokenRepoScenario):
1299@@ -164,39 +164,39 @@
1300 def populate_repository(self, repo):
1301 # make rev1a: A well-formed revision, containing 'a-file'
1302 inv = self.make_one_file_inventory(
1303- repo, 'rev1a', [], root_revision='rev1a')
1304- self.add_revision(repo, 'rev1a', inv, [])
1305+ repo, b'rev1a', [], root_revision=b'rev1a')
1306+ self.add_revision(repo, b'rev1a', inv, [])
1307
1308 # make rev1b, which has no Revision, but has an Inventory, and
1309 # a-file
1310 inv = self.make_one_file_inventory(
1311- repo, 'rev1b', [], root_revision='rev1b')
1312- repo.add_inventory('rev1b', inv, [])
1313+ repo, b'rev1b', [], root_revision=b'rev1b')
1314+ repo.add_inventory(b'rev1b', inv, [])
1315
1316 # make rev2, with a-file.
1317 # a-file has 'rev1b' as an ancestor, even though this is not
1318 # mentioned by 'rev1a', making it an unreferenced ancestor
1319 inv = self.make_one_file_inventory(
1320- repo, 'rev2', ['rev1a', 'rev1b'])
1321- self.add_revision(repo, 'rev2', inv, ['rev1a'])
1322+ repo, b'rev2', [b'rev1a', b'rev1b'])
1323+ self.add_revision(repo, b'rev2', inv, [b'rev1a'])
1324 self.versioned_root = repo.supports_rich_root()
1325
1326 def repository_text_key_references(self):
1327 result = {}
1328 if self.versioned_root:
1329- result.update({('TREE_ROOT', 'rev1a'): True,
1330- ('TREE_ROOT', 'rev2'): True})
1331- result.update({('a-file-id', 'rev1a'): True,
1332- ('a-file-id', 'rev2'): True})
1333+ result.update({(b'TREE_ROOT', b'rev1a'): True,
1334+ (b'TREE_ROOT', b'rev2'): True})
1335+ result.update({(b'a-file-id', b'rev1a'): True,
1336+ (b'a-file-id', b'rev2'): True})
1337 return result
1338
1339 def repository_text_keys(self):
1340- return {('a-file-id', 'rev1a'):[NULL_REVISION],
1341- ('a-file-id', 'rev2'):[('a-file-id', 'rev1a')]}
1342+ return {(b'a-file-id', b'rev1a'):[NULL_REVISION],
1343+ (b'a-file-id', b'rev2'):[(b'a-file-id', b'rev1a')]}
1344
1345 def versioned_repository_text_keys(self):
1346- return {('TREE_ROOT', 'rev1a'):[NULL_REVISION],
1347- ('TREE_ROOT', 'rev2'):[('TREE_ROOT', 'rev1a')]}
1348+ return {(b'TREE_ROOT', b'rev1a'):[NULL_REVISION],
1349+ (b'TREE_ROOT', b'rev2'):[(b'TREE_ROOT', b'rev1a')]}
1350
1351
1352 class FileParentHasInaccessibleInventoryScenario(BrokenRepoScenario):
1353@@ -327,15 +327,15 @@
1354 def populate_repository(self, repo):
1355 # make rev1a: A well-formed revision, containing 'a-file'
1356 inv = self.make_one_file_inventory(
1357- repo, 'rev1a', [], root_revision='rev1a')
1358- self.add_revision(repo, 'rev1a', inv, [])
1359+ repo, b'rev1a', [], root_revision=b'rev1a')
1360+ self.add_revision(repo, b'rev1a', inv, [])
1361
1362 # make rev2, with a-file.
1363 # a-file is unmodified from rev1a, and an unreferenced rev2 file
1364 # version is present in the repository.
1365 self.make_one_file_inventory(
1366- repo, 'rev2', ['rev1a'], inv_revision='rev1a')
1367- self.add_revision(repo, 'rev2', inv, ['rev1a'])
1368+ repo, b'rev2', [b'rev1a'], inv_revision=b'rev1a')
1369+ self.add_revision(repo, b'rev2', inv, [b'rev1a'])
1370
1371 # make rev3 with a-file
1372 # a-file has 'rev2' as its ancestor, but the revision in 'rev2' was
1373@@ -344,8 +344,8 @@
1374 # ghost, so only the details from rev1a are available for
1375 # determining whether a delta is acceptable, or a full is needed,
1376 # and what the correct parents are.
1377- inv = self.make_one_file_inventory(repo, 'rev3', ['rev2'])
1378- self.add_revision(repo, 'rev3', inv, ['rev1c', 'rev1a'])
1379+ inv = self.make_one_file_inventory(repo, b'rev3', [b'rev2'])
1380+ self.add_revision(repo, b'rev3', inv, [b'rev1c', b'rev1a'])
1381
1382 # In rev2b, the true last-modifying-revision of a-file is rev1a,
1383 # inherited from rev2, but there is a version rev2b of the file, which
1384@@ -354,8 +354,8 @@
1385 # a-file-rev2b.
1386 # ??? This is to test deduplication in fixing rev4
1387 inv = self.make_one_file_inventory(
1388- repo, 'rev2b', ['rev1a'], inv_revision='rev1a')
1389- self.add_revision(repo, 'rev2b', inv, ['rev1a'])
1390+ repo, b'rev2b', [b'rev1a'], inv_revision=b'rev1a')
1391+ self.add_revision(repo, b'rev2b', inv, [b'rev1a'])
1392
1393 # rev4 is for testing that when the last modified of a file in
1394 # multiple parent revisions is the same, that it only appears once
1395@@ -365,13 +365,13 @@
1396 # a-file, and is a merge of rev2 and rev2b, so it should end up with
1397 # a parent of just rev1a - the starting file parents list is simply
1398 # completely wrong.
1399- inv = self.make_one_file_inventory(repo, 'rev4', ['rev2'])
1400- self.add_revision(repo, 'rev4', inv, ['rev2', 'rev2b'])
1401+ inv = self.make_one_file_inventory(repo, b'rev4', [b'rev2'])
1402+ self.add_revision(repo, b'rev4', inv, [b'rev2', b'rev2b'])
1403
1404 # rev2c changes a-file from rev1a, so the version it of a-file it
1405 # introduces is a head revision when rev5 is checked.
1406- inv = self.make_one_file_inventory(repo, 'rev2c', ['rev1a'])
1407- self.add_revision(repo, 'rev2c', inv, ['rev1a'])
1408+ inv = self.make_one_file_inventory(repo, b'rev2c', [b'rev1a'])
1409+ self.add_revision(repo, b'rev2c', inv, [b'rev1a'])
1410
1411 # rev5 descends from rev2 and rev2c; as rev2 does not alter a-file,
1412 # but rev2c does, this should use rev2c as the parent for the per
1413@@ -379,44 +379,44 @@
1414 # available, because we use the heads of the revision parents for
1415 # the inventory modification revisions of the file to determine the
1416 # parents for the per file graph.
1417- inv = self.make_one_file_inventory(repo, 'rev5', ['rev2', 'rev2c'])
1418- self.add_revision(repo, 'rev5', inv, ['rev2', 'rev2c'])
1419+ inv = self.make_one_file_inventory(repo, b'rev5', [b'rev2', b'rev2c'])
1420+ self.add_revision(repo, b'rev5', inv, [b'rev2', b'rev2c'])
1421 self.versioned_root = repo.supports_rich_root()
1422
1423 def repository_text_key_references(self):
1424 result = {}
1425 if self.versioned_root:
1426- result.update({('TREE_ROOT', 'rev1a'): True,
1427- ('TREE_ROOT', 'rev2'): True,
1428- ('TREE_ROOT', 'rev2b'): True,
1429- ('TREE_ROOT', 'rev2c'): True,
1430- ('TREE_ROOT', 'rev3'): True,
1431- ('TREE_ROOT', 'rev4'): True,
1432- ('TREE_ROOT', 'rev5'): True})
1433- result.update({('a-file-id', 'rev1a'): True,
1434- ('a-file-id', 'rev2c'): True,
1435- ('a-file-id', 'rev3'): True,
1436- ('a-file-id', 'rev4'): True,
1437- ('a-file-id', 'rev5'): True})
1438+ result.update({(b'TREE_ROOT', b'rev1a'): True,
1439+ (b'TREE_ROOT', b'rev2'): True,
1440+ (b'TREE_ROOT', b'rev2b'): True,
1441+ (b'TREE_ROOT', b'rev2c'): True,
1442+ (b'TREE_ROOT', b'rev3'): True,
1443+ (b'TREE_ROOT', b'rev4'): True,
1444+ (b'TREE_ROOT', b'rev5'): True})
1445+ result.update({(b'a-file-id', b'rev1a'): True,
1446+ (b'a-file-id', b'rev2c'): True,
1447+ (b'a-file-id', b'rev3'): True,
1448+ (b'a-file-id', b'rev4'): True,
1449+ (b'a-file-id', b'rev5'): True})
1450 return result
1451
1452 def repository_text_keys(self):
1453- return {('a-file-id', 'rev1a'): [NULL_REVISION],
1454- ('a-file-id', 'rev2c'): [('a-file-id', 'rev1a')],
1455- ('a-file-id', 'rev3'): [('a-file-id', 'rev1a')],
1456- ('a-file-id', 'rev4'): [('a-file-id', 'rev1a')],
1457- ('a-file-id', 'rev5'): [('a-file-id', 'rev2c')]}
1458+ return {(b'a-file-id', b'rev1a'): [NULL_REVISION],
1459+ (b'a-file-id', b'rev2c'): [(b'a-file-id', b'rev1a')],
1460+ (b'a-file-id', b'rev3'): [(b'a-file-id', b'rev1a')],
1461+ (b'a-file-id', b'rev4'): [(b'a-file-id', b'rev1a')],
1462+ (b'a-file-id', b'rev5'): [(b'a-file-id', b'rev2c')]}
1463
1464 def versioned_repository_text_keys(self):
1465- return {('TREE_ROOT', 'rev1a'): [NULL_REVISION],
1466- ('TREE_ROOT', 'rev2'): [('TREE_ROOT', 'rev1a')],
1467- ('TREE_ROOT', 'rev2b'): [('TREE_ROOT', 'rev1a')],
1468- ('TREE_ROOT', 'rev2c'): [('TREE_ROOT', 'rev1a')],
1469- ('TREE_ROOT', 'rev3'): [('TREE_ROOT', 'rev1a')],
1470- ('TREE_ROOT', 'rev4'):
1471- [('TREE_ROOT', 'rev2'), ('TREE_ROOT', 'rev2b')],
1472- ('TREE_ROOT', 'rev5'):
1473- [('TREE_ROOT', 'rev2'), ('TREE_ROOT', 'rev2c')]}
1474+ return {(b'TREE_ROOT', b'rev1a'): [NULL_REVISION],
1475+ (b'TREE_ROOT', b'rev2'): [(b'TREE_ROOT', b'rev1a')],
1476+ (b'TREE_ROOT', b'rev2b'): [(b'TREE_ROOT', b'rev1a')],
1477+ (b'TREE_ROOT', b'rev2c'): [(b'TREE_ROOT', b'rev1a')],
1478+ (b'TREE_ROOT', b'rev3'): [(b'TREE_ROOT', b'rev1a')],
1479+ (b'TREE_ROOT', b'rev4'):
1480+ [(b'TREE_ROOT', b'rev2'), (b'TREE_ROOT', b'rev2b')],
1481+ (b'TREE_ROOT', b'rev5'):
1482+ [(b'TREE_ROOT', b'rev2'), (b'TREE_ROOT', b'rev2c')]}
1483
1484
1485 class UnreferencedFileParentsFromNoOpMergeScenario(BrokenRepoScenario):
1486@@ -427,28 +427,28 @@
1487 """
1488
1489 def all_versions_after_reconcile(self):
1490- return ('rev1a', 'rev1b', 'rev2', 'rev4')
1491+ return (b'rev1a', b'rev1b', b'rev2', b'rev4')
1492
1493 def populated_parents(self):
1494 return (
1495- ((), 'rev1a'),
1496- ((), 'rev1b'),
1497- (('rev1a', 'rev1b'), 'rev2'),
1498- (None, 'rev3'),
1499- (('rev2',), 'rev4'),
1500+ ((), b'rev1a'),
1501+ ((), b'rev1b'),
1502+ ((b'rev1a', b'rev1b'), b'rev2'),
1503+ (None, b'rev3'),
1504+ ((b'rev2',), b'rev4'),
1505 )
1506
1507 def corrected_parents(self):
1508 return (
1509- ((), 'rev1a'),
1510- ((), 'rev1b'),
1511- ((), 'rev2'),
1512- (None, 'rev3'),
1513- (('rev2',), 'rev4'),
1514+ ((), b'rev1a'),
1515+ ((), b'rev1b'),
1516+ ((), b'rev2'),
1517+ (None, b'rev3'),
1518+ ((b'rev2',), b'rev4'),
1519 )
1520
1521 def corrected_fulltexts(self):
1522- return ['rev2']
1523+ return [b'rev2']
1524
1525 def check_regexes(self, repo):
1526 return []
1527@@ -456,65 +456,66 @@
1528 def populate_repository(self, repo):
1529 # make rev1a: A well-formed revision, containing 'a-file'
1530 inv1a = self.make_one_file_inventory(
1531- repo, 'rev1a', [], root_revision='rev1a')
1532- self.add_revision(repo, 'rev1a', inv1a, [])
1533+ repo, b'rev1a', [], root_revision=b'rev1a')
1534+ self.add_revision(repo, b'rev1a', inv1a, [])
1535
1536 # make rev1b: A well-formed revision, containing 'a-file'
1537 # rev1b of a-file has the exact same contents as rev1a.
1538- file_contents = repo.texts.get_record_stream([('a-file-id', 'rev1a')],
1539- "unordered", False).next().get_bytes_as('fulltext')
1540+ file_contents = next(
1541+ repo.texts.get_record_stream([(b'a-file-id', b'rev1a')],
1542+ "unordered", False)).get_bytes_as('fulltext')
1543 inv = self.make_one_file_inventory(
1544- repo, 'rev1b', [], root_revision='rev1b',
1545+ repo, b'rev1b', [], root_revision=b'rev1b',
1546 file_contents=file_contents)
1547- self.add_revision(repo, 'rev1b', inv, [])
1548+ self.add_revision(repo, b'rev1b', inv, [])
1549
1550 # make rev2, a merge of rev1a and rev1b, with a-file.
1551 # a-file is unmodified from rev1a and rev1b, but a new version is
1552 # wrongly present anyway.
1553 inv = self.make_one_file_inventory(
1554- repo, 'rev2', ['rev1a', 'rev1b'], inv_revision='rev1a',
1555+ repo, b'rev2', [b'rev1a', b'rev1b'], inv_revision=b'rev1a',
1556 file_contents=file_contents)
1557- self.add_revision(repo, 'rev2', inv, ['rev1a', 'rev1b'])
1558+ self.add_revision(repo, b'rev2', inv, [b'rev1a', b'rev1b'])
1559
1560 # rev3: a-file unchanged from rev2, but wrongly referencing rev2 of the
1561 # file in its inventory.
1562 inv = self.make_one_file_inventory(
1563- repo, 'rev3', ['rev2'], inv_revision='rev2',
1564+ repo, b'rev3', [b'rev2'], inv_revision=b'rev2',
1565 file_contents=file_contents, make_file_version=False)
1566- self.add_revision(repo, 'rev3', inv, ['rev2'])
1567+ self.add_revision(repo, b'rev3', inv, [b'rev2'])
1568
1569 # rev4: a modification of a-file on top of rev3.
1570- inv = self.make_one_file_inventory(repo, 'rev4', ['rev2'])
1571- self.add_revision(repo, 'rev4', inv, ['rev3'])
1572+ inv = self.make_one_file_inventory(repo, b'rev4', [b'rev2'])
1573+ self.add_revision(repo, b'rev4', inv, [b'rev3'])
1574 self.versioned_root = repo.supports_rich_root()
1575
1576 def repository_text_key_references(self):
1577 result = {}
1578 if self.versioned_root:
1579- result.update({('TREE_ROOT', 'rev1a'): True,
1580- ('TREE_ROOT', 'rev1b'): True,
1581- ('TREE_ROOT', 'rev2'): True,
1582- ('TREE_ROOT', 'rev3'): True,
1583- ('TREE_ROOT', 'rev4'): True})
1584- result.update({('a-file-id', 'rev1a'): True,
1585- ('a-file-id', 'rev1b'): True,
1586- ('a-file-id', 'rev2'): False,
1587- ('a-file-id', 'rev4'): True})
1588+ result.update({(b'TREE_ROOT', b'rev1a'): True,
1589+ (b'TREE_ROOT', b'rev1b'): True,
1590+ (b'TREE_ROOT', b'rev2'): True,
1591+ (b'TREE_ROOT', b'rev3'): True,
1592+ (b'TREE_ROOT', b'rev4'): True})
1593+ result.update({(b'a-file-id', b'rev1a'): True,
1594+ (b'a-file-id', b'rev1b'): True,
1595+ (b'a-file-id', b'rev2'): False,
1596+ (b'a-file-id', b'rev4'): True})
1597 return result
1598
1599 def repository_text_keys(self):
1600- return {('a-file-id', 'rev1a'): [NULL_REVISION],
1601- ('a-file-id', 'rev1b'): [NULL_REVISION],
1602- ('a-file-id', 'rev2'): [NULL_REVISION],
1603- ('a-file-id', 'rev4'): [('a-file-id', 'rev2')]}
1604+ return {(b'a-file-id', b'rev1a'): [NULL_REVISION],
1605+ (b'a-file-id', b'rev1b'): [NULL_REVISION],
1606+ (b'a-file-id', b'rev2'): [NULL_REVISION],
1607+ (b'a-file-id', b'rev4'): [(b'a-file-id', b'rev2')]}
1608
1609 def versioned_repository_text_keys(self):
1610- return {('TREE_ROOT', 'rev1a'): [NULL_REVISION],
1611- ('TREE_ROOT', 'rev1b'): [NULL_REVISION],
1612- ('TREE_ROOT', 'rev2'):
1613- [('TREE_ROOT', 'rev1a'), ('TREE_ROOT', 'rev1b')],
1614- ('TREE_ROOT', 'rev3'): [('TREE_ROOT', 'rev2')],
1615- ('TREE_ROOT', 'rev4'): [('TREE_ROOT', 'rev3')]}
1616+ return {(b'TREE_ROOT', b'rev1a'): [NULL_REVISION],
1617+ (b'TREE_ROOT', b'rev1b'): [NULL_REVISION],
1618+ (b'TREE_ROOT', b'rev2'):
1619+ [(b'TREE_ROOT', b'rev1a'), (b'TREE_ROOT', b'rev1b')],
1620+ (b'TREE_ROOT', b'rev3'): [(b'TREE_ROOT', b'rev2')],
1621+ (b'TREE_ROOT', b'rev4'): [(b'TREE_ROOT', b'rev3')]}
1622
1623
1624 class TooManyParentsScenario(BrokenRepoScenario):
1625@@ -525,19 +526,19 @@
1626 """
1627
1628 def all_versions_after_reconcile(self):
1629- return ('bad-parent', 'good-parent', 'broken-revision')
1630+ return (b'bad-parent', b'good-parent', b'broken-revision')
1631
1632 def populated_parents(self):
1633 return (
1634- ((), 'bad-parent'),
1635- (('bad-parent',), 'good-parent'),
1636- (('good-parent', 'bad-parent'), 'broken-revision'))
1637+ ((), b'bad-parent'),
1638+ ((b'bad-parent',), b'good-parent'),
1639+ ((b'good-parent', b'bad-parent'), b'broken-revision'))
1640
1641 def corrected_parents(self):
1642 return (
1643- ((), 'bad-parent'),
1644- (('bad-parent',), 'good-parent'),
1645- (('good-parent',), 'broken-revision'))
1646+ ((), b'bad-parent'),
1647+ ((b'bad-parent',), b'good-parent'),
1648+ ((b'good-parent',), b'broken-revision'))
1649
1650 def check_regexes(self, repo):
1651 if repo.supports_rich_root():
1652@@ -554,40 +555,40 @@
1653
1654 def populate_repository(self, repo):
1655 inv = self.make_one_file_inventory(
1656- repo, 'bad-parent', (), root_revision='bad-parent')
1657- self.add_revision(repo, 'bad-parent', inv, ())
1658-
1659- inv = self.make_one_file_inventory(
1660- repo, 'good-parent', ('bad-parent',))
1661- self.add_revision(repo, 'good-parent', inv, ('bad-parent',))
1662-
1663- inv = self.make_one_file_inventory(
1664- repo, 'broken-revision', ('good-parent', 'bad-parent'))
1665- self.add_revision(repo, 'broken-revision', inv, ('good-parent',))
1666+ repo, b'bad-parent', (), root_revision=b'bad-parent')
1667+ self.add_revision(repo, b'bad-parent', inv, ())
1668+
1669+ inv = self.make_one_file_inventory(
1670+ repo, b'good-parent', (b'bad-parent',))
1671+ self.add_revision(repo, b'good-parent', inv, (b'bad-parent',))
1672+
1673+ inv = self.make_one_file_inventory(
1674+ repo, b'broken-revision', (b'good-parent', b'bad-parent'))
1675+ self.add_revision(repo, b'broken-revision', inv, (b'good-parent',))
1676 self.versioned_root = repo.supports_rich_root()
1677
1678 def repository_text_key_references(self):
1679 result = {}
1680 if self.versioned_root:
1681- result.update({('TREE_ROOT', 'bad-parent'): True,
1682- ('TREE_ROOT', 'broken-revision'): True,
1683- ('TREE_ROOT', 'good-parent'): True})
1684- result.update({('a-file-id', 'bad-parent'): True,
1685- ('a-file-id', 'broken-revision'): True,
1686- ('a-file-id', 'good-parent'): True})
1687+ result.update({(b'TREE_ROOT', b'bad-parent'): True,
1688+ (b'TREE_ROOT', b'broken-revision'): True,
1689+ (b'TREE_ROOT', b'good-parent'): True})
1690+ result.update({(b'a-file-id', b'bad-parent'): True,
1691+ (b'a-file-id', b'broken-revision'): True,
1692+ (b'a-file-id', b'good-parent'): True})
1693 return result
1694
1695 def repository_text_keys(self):
1696- return {('a-file-id', 'bad-parent'): [NULL_REVISION],
1697- ('a-file-id', 'broken-revision'):
1698- [('a-file-id', 'good-parent')],
1699- ('a-file-id', 'good-parent'): [('a-file-id', 'bad-parent')]}
1700+ return {(b'a-file-id', b'bad-parent'): [NULL_REVISION],
1701+ (b'a-file-id', b'broken-revision'):
1702+ [(b'a-file-id', b'good-parent')],
1703+ (b'a-file-id', b'good-parent'): [('a-file-id', 'bad-parent')]}
1704
1705 def versioned_repository_text_keys(self):
1706- return {('TREE_ROOT', 'bad-parent'): [NULL_REVISION],
1707- ('TREE_ROOT', 'broken-revision'):
1708- [('TREE_ROOT', 'good-parent')],
1709- ('TREE_ROOT', 'good-parent'): [('TREE_ROOT', 'bad-parent')]}
1710+ return {(b'TREE_ROOT', b'bad-parent'): [NULL_REVISION],
1711+ (b'TREE_ROOT', b'broken-revision'):
1712+ [(b'TREE_ROOT', 'good-parent')],
1713+ (b'TREE_ROOT', b'good-parent'): [(b'TREE_ROOT', b'bad-parent')]}
1714
1715
1716 class ClaimedFileParentDidNotModifyFileScenario(BrokenRepoScenario):
1717@@ -601,19 +602,19 @@
1718 """
1719
1720 def all_versions_after_reconcile(self):
1721- return ('basis', 'current')
1722+ return (b'basis', b'current')
1723
1724 def populated_parents(self):
1725 return (
1726- ((), 'basis'),
1727- (('basis',), 'modified-something-else'),
1728- (('modified-something-else',), 'current'))
1729+ ((), b'basis'),
1730+ ((b'basis',), b'modified-something-else'),
1731+ ((b'modified-something-else',), b'current'))
1732
1733 def corrected_parents(self):
1734 return (
1735- ((), 'basis'),
1736- (None, 'modified-something-else'),
1737- (('basis',), 'current'))
1738+ ((), b'basis'),
1739+ (None, b'modified-something-else'),
1740+ ((b'basis',), b'current'))
1741
1742 def check_regexes(self, repo):
1743 if repo.supports_rich_root():
1744@@ -629,44 +630,44 @@
1745 )
1746
1747 def populate_repository(self, repo):
1748- inv = self.make_one_file_inventory(repo, 'basis', ())
1749- self.add_revision(repo, 'basis', inv, ())
1750+ inv = self.make_one_file_inventory(repo, b'basis', ())
1751+ self.add_revision(repo, b'basis', inv, ())
1752
1753 # 'modified-something-else' is a correctly recorded revision, but it
1754 # does not modify the file we are looking at, so the inventory for that
1755 # file in this revision points to 'basis'.
1756 inv = self.make_one_file_inventory(
1757- repo, 'modified-something-else', ('basis',), inv_revision='basis')
1758- self.add_revision(repo, 'modified-something-else', inv, ('basis',))
1759+ repo, b'modified-something-else', (b'basis',), inv_revision=b'basis')
1760+ self.add_revision(repo, b'modified-something-else', inv, (b'basis',))
1761
1762 # The 'current' revision has 'modified-something-else' as its parent,
1763 # but the 'current' version of 'a-file' should have 'basis' as its
1764 # parent.
1765 inv = self.make_one_file_inventory(
1766- repo, 'current', ('modified-something-else',))
1767- self.add_revision(repo, 'current', inv, ('modified-something-else',))
1768+ repo, b'current', (b'modified-something-else',))
1769+ self.add_revision(repo, b'current', inv, (b'modified-something-else',))
1770 self.versioned_root = repo.supports_rich_root()
1771
1772 def repository_text_key_references(self):
1773 result = {}
1774 if self.versioned_root:
1775- result.update({('TREE_ROOT', 'basis'): True,
1776- ('TREE_ROOT', 'current'): True,
1777- ('TREE_ROOT', 'modified-something-else'): True})
1778- result.update({('a-file-id', 'basis'): True,
1779- ('a-file-id', 'current'): True})
1780+ result.update({(b'TREE_ROOT', b'basis'): True,
1781+ (b'TREE_ROOT', b'current'): True,
1782+ (b'TREE_ROOT', b'modified-something-else'): True})
1783+ result.update({(b'a-file-id', b'basis'): True,
1784+ (b'a-file-id', b'current'): True})
1785 return result
1786
1787 def repository_text_keys(self):
1788- return {('a-file-id', 'basis'): [NULL_REVISION],
1789- ('a-file-id', 'current'): [('a-file-id', 'basis')]}
1790+ return {(b'a-file-id', b'basis'): [NULL_REVISION],
1791+ (b'a-file-id', b'current'): [(b'a-file-id', b'basis')]}
1792
1793 def versioned_repository_text_keys(self):
1794- return {('TREE_ROOT', 'basis'): ['null:'],
1795- ('TREE_ROOT', 'current'):
1796- [('TREE_ROOT', 'modified-something-else')],
1797- ('TREE_ROOT', 'modified-something-else'):
1798- [('TREE_ROOT', 'basis')]}
1799+ return {(b'TREE_ROOT', b'basis'): [b'null:'],
1800+ (b'TREE_ROOT', b'current'):
1801+ [(b'TREE_ROOT', b'modified-something-else')],
1802+ (b'TREE_ROOT', b'modified-something-else'):
1803+ [(b'TREE_ROOT', b'basis')]}
1804
1805
1806 class IncorrectlyOrderedParentsScenario(BrokenRepoScenario):
1807@@ -682,22 +683,22 @@
1808 """
1809
1810 def all_versions_after_reconcile(self):
1811- return ['parent-1', 'parent-2', 'broken-revision-1-2',
1812- 'broken-revision-2-1']
1813+ return [b'parent-1', b'parent-2', b'broken-revision-1-2',
1814+ b'broken-revision-2-1']
1815
1816 def populated_parents(self):
1817 return (
1818- ((), 'parent-1'),
1819- ((), 'parent-2'),
1820- (('parent-2', 'parent-1'), 'broken-revision-1-2'),
1821- (('parent-1', 'parent-2'), 'broken-revision-2-1'))
1822+ ((), b'parent-1'),
1823+ ((), b'parent-2'),
1824+ ((b'parent-2', b'parent-1'), b'broken-revision-1-2'),
1825+ ((b'parent-1', b'parent-2'), b'broken-revision-2-1'))
1826
1827 def corrected_parents(self):
1828 return (
1829- ((), 'parent-1'),
1830- ((), 'parent-2'),
1831- (('parent-1', 'parent-2'), 'broken-revision-1-2'),
1832- (('parent-2', 'parent-1'), 'broken-revision-2-1'))
1833+ ((), b'parent-1'),
1834+ ((), b'parent-2'),
1835+ ((b'parent-1', b'parent-2'), b'broken-revision-1-2'),
1836+ ((b'parent-2', b'parent-1'), b'broken-revision-2-1'))
1837
1838 def check_regexes(self, repo):
1839 if repo.supports_rich_root():
1840@@ -716,51 +717,51 @@
1841 r"\('parent-2', 'parent-1'\)")
1842
1843 def populate_repository(self, repo):
1844- inv = self.make_one_file_inventory(repo, 'parent-1', [])
1845- self.add_revision(repo, 'parent-1', inv, [])
1846-
1847- inv = self.make_one_file_inventory(repo, 'parent-2', [])
1848- self.add_revision(repo, 'parent-2', inv, [])
1849-
1850- inv = self.make_one_file_inventory(
1851- repo, 'broken-revision-1-2', ['parent-2', 'parent-1'])
1852- self.add_revision(
1853- repo, 'broken-revision-1-2', inv, ['parent-1', 'parent-2'])
1854-
1855- inv = self.make_one_file_inventory(
1856- repo, 'broken-revision-2-1', ['parent-1', 'parent-2'])
1857- self.add_revision(
1858- repo, 'broken-revision-2-1', inv, ['parent-2', 'parent-1'])
1859+ inv = self.make_one_file_inventory(repo, b'parent-1', [])
1860+ self.add_revision(repo, b'parent-1', inv, [])
1861+
1862+ inv = self.make_one_file_inventory(repo, b'parent-2', [])
1863+ self.add_revision(repo, b'parent-2', inv, [])
1864+
1865+ inv = self.make_one_file_inventory(
1866+ repo, b'broken-revision-1-2', [b'parent-2', b'parent-1'])
1867+ self.add_revision(
1868+ repo, b'broken-revision-1-2', inv, [b'parent-1', b'parent-2'])
1869+
1870+ inv = self.make_one_file_inventory(
1871+ repo, b'broken-revision-2-1', [b'parent-1', b'parent-2'])
1872+ self.add_revision(
1873+ repo, b'broken-revision-2-1', inv, [b'parent-2', b'parent-1'])
1874 self.versioned_root = repo.supports_rich_root()
1875
1876 def repository_text_key_references(self):
1877 result = {}
1878 if self.versioned_root:
1879- result.update({('TREE_ROOT', 'broken-revision-1-2'): True,
1880- ('TREE_ROOT', 'broken-revision-2-1'): True,
1881- ('TREE_ROOT', 'parent-1'): True,
1882- ('TREE_ROOT', 'parent-2'): True})
1883- result.update({('a-file-id', 'broken-revision-1-2'): True,
1884- ('a-file-id', 'broken-revision-2-1'): True,
1885- ('a-file-id', 'parent-1'): True,
1886- ('a-file-id', 'parent-2'): True})
1887+ result.update({(b'TREE_ROOT', b'broken-revision-1-2'): True,
1888+ (b'TREE_ROOT', b'broken-revision-2-1'): True,
1889+ (b'TREE_ROOT', b'parent-1'): True,
1890+ (b'TREE_ROOT', b'parent-2'): True})
1891+ result.update({(b'a-file-id', b'broken-revision-1-2'): True,
1892+ (b'a-file-id', b'broken-revision-2-1'): True,
1893+ (b'a-file-id', b'parent-1'): True,
1894+ (b'a-file-id', b'parent-2'): True})
1895 return result
1896
1897 def repository_text_keys(self):
1898- return {('a-file-id', 'broken-revision-1-2'):
1899- [('a-file-id', 'parent-1'), ('a-file-id', 'parent-2')],
1900- ('a-file-id', 'broken-revision-2-1'):
1901- [('a-file-id', 'parent-2'), ('a-file-id', 'parent-1')],
1902- ('a-file-id', 'parent-1'): [NULL_REVISION],
1903- ('a-file-id', 'parent-2'): [NULL_REVISION]}
1904+ return {(b'a-file-id', b'broken-revision-1-2'):
1905+ [(b'a-file-id', b'parent-1'), (b'a-file-id', b'parent-2')],
1906+ (b'a-file-id', b'broken-revision-2-1'):
1907+ [(b'a-file-id', b'parent-2'), (b'a-file-id', b'parent-1')],
1908+ (b'a-file-id', b'parent-1'): [NULL_REVISION],
1909+ (b'a-file-id', b'parent-2'): [NULL_REVISION]}
1910
1911 def versioned_repository_text_keys(self):
1912- return {('TREE_ROOT', 'broken-revision-1-2'):
1913- [('TREE_ROOT', 'parent-1'), ('TREE_ROOT', 'parent-2')],
1914- ('TREE_ROOT', 'broken-revision-2-1'):
1915- [('TREE_ROOT', 'parent-2'), ('TREE_ROOT', 'parent-1')],
1916- ('TREE_ROOT', 'parent-1'): [NULL_REVISION],
1917- ('TREE_ROOT', 'parent-2'): [NULL_REVISION]}
1918+ return {(b'TREE_ROOT', b'broken-revision-1-2'):
1919+ [(b'TREE_ROOT', b'parent-1'), (b'TREE_ROOT', b'parent-2')],
1920+ (b'TREE_ROOT', b'broken-revision-2-1'):
1921+ [(b'TREE_ROOT', b'parent-2'), (b'TREE_ROOT', b'parent-1')],
1922+ (b'TREE_ROOT', b'parent-1'): [NULL_REVISION],
1923+ (b'TREE_ROOT', b'parent-2'): [NULL_REVISION]}
1924
1925
1926 all_broken_scenario_classes = [
1927@@ -792,8 +793,7 @@
1928 def make_populated_repository(self, factory):
1929 """Create a new repository populated by the given factory."""
1930 repo = self.make_repository('broken-repo')
1931- repo.lock_write()
1932- try:
1933+ with repo.lock_write():
1934 repo.start_write_group()
1935 try:
1936 factory(repo)
1937@@ -802,8 +802,6 @@
1938 except:
1939 repo.abort_write_group()
1940 raise
1941- finally:
1942- repo.unlock()
1943
1944 def add_revision(self, repo, revision_id, inv, parent_ids):
1945 """Add a revision with a given inventory and parents to a repository.
1946@@ -847,15 +845,15 @@
1947 inv = Inventory(revision_id=revision)
1948 if root_revision is not None:
1949 inv.root.revision = root_revision
1950- file_id = 'a-file-id'
1951- entry = InventoryFile(file_id, 'a file name', 'TREE_ROOT')
1952+ file_id = b'a-file-id'
1953+ entry = InventoryFile(file_id, 'a file name', b'TREE_ROOT')
1954 if inv_revision is not None:
1955 entry.revision = inv_revision
1956 else:
1957 entry.revision = revision
1958 entry.text_size = 0
1959 if file_contents is None:
1960- file_contents = '%sline\n' % entry.revision
1961+ file_contents = b'%sline\n' % entry.revision
1962 entry.text_sha1 = osutils.sha_string(file_contents)
1963 inv.add(entry)
1964 if make_file_version:
1965@@ -869,13 +867,13 @@
1966 "Format does not support text parent reconciliation")
1967
1968 def file_parents(self, repo, revision_id):
1969- key = ('a-file-id', revision_id)
1970+ key = (b'a-file-id', revision_id)
1971 parent_map = repo.texts.get_parent_map([key])
1972 return tuple(parent[-1] for parent in parent_map[key])
1973
1974 def assertFileVersionAbsent(self, repo, revision_id):
1975 self.assertEqual({},
1976- repo.texts.get_parent_map([('a-file-id', revision_id)]))
1977+ repo.texts.get_parent_map([(b'a-file-id', revision_id)]))
1978
1979 def assertParentsMatch(self, expected_parents_for_versions, repo,
1980 when_description):
1981@@ -907,7 +905,7 @@
1982
1983 :returns: A dict of `{version: hash}`.
1984 """
1985- keys = [('a-file-id', version) for version in versions]
1986+ keys = [(b'a-file-id', version) for version in versions]
1987 return repo.texts.get_sha1s(keys)
1988
1989 def test_reconcile_behaviour(self):
1990@@ -915,19 +913,15 @@
1991 and after.
1992 """
1993 repo, scenario = self.prepare_test_repository()
1994- repo.lock_read()
1995- try:
1996+ with repo.lock_read():
1997 self.assertParentsMatch(scenario.populated_parents(), repo,
1998- 'before')
1999+ b'before')
2000 vf_shas = self.shas_for_versions_of_file(
2001 repo, scenario.all_versions_after_reconcile())
2002- finally:
2003- repo.unlock()
2004 result = repo.reconcile(thorough=True)
2005- repo.lock_read()
2006- try:
2007+ with repo.lock_read():
2008 self.assertParentsMatch(scenario.corrected_parents(), repo,
2009- 'after')
2010+ b'after')
2011 # The contents of the versions in the versionedfile should be the
2012 # same after the reconcile.
2013 self.assertEqual(
2014@@ -943,14 +937,12 @@
2015 # (we specify it this way because a store can use arbitrary
2016 # compression pointers in principle.
2017 for file_version in scenario.corrected_fulltexts():
2018- key = ('a-file-id', file_version)
2019+ key = (b'a-file-id', file_version)
2020 self.assertEqual({key:()}, repo.texts.get_parent_map([key]))
2021 self.assertIsInstance(
2022 repo.texts.get_record_stream([key], 'unordered',
2023 True).next().get_bytes_as('fulltext'),
2024 str)
2025- finally:
2026- repo.unlock()
2027
2028 def test_check_behaviour(self):
2029 """Populate a repository and check it, and verify the output."""
2030
2031=== modified file 'breezy/tests/per_repository_vf/test_fileid_involved.py'
2032--- breezy/tests/per_repository_vf/test_fileid_involved.py 2018-05-22 02:05:12 +0000
2033+++ breezy/tests/per_repository_vf/test_fileid_involved.py 2018-06-21 23:03:57 +0000
2034@@ -96,32 +96,32 @@
2035 raise tests.TestNotApplicable('format does not support stacking')
2036 builder.start_series()
2037 builder.build_snapshot(None, [
2038- ('add', ('', 'root-id', 'directory', None)),
2039- ('add', ('file', 'file-id', 'file', 'contents\n'))],
2040+ ('add', ('', b'root-id', 'directory', None)),
2041+ ('add', ('file', b'file-id', 'file', b'contents\n'))],
2042 revision_id=b'A-id')
2043- builder.build_snapshot(['A-id'], [
2044- ('modify', ('file', 'new-content\n'))],
2045+ builder.build_snapshot([b'A-id'], [
2046+ ('modify', ('file', b'new-content\n'))],
2047 revision_id=b'B-id')
2048- builder.build_snapshot(['B-id'], [
2049- ('modify', ('file', 'yet more content\n'))],
2050+ builder.build_snapshot([b'B-id'], [
2051+ ('modify', ('file', b'yet more content\n'))],
2052 revision_id=b'C-id')
2053 builder.finish_series()
2054 source_b = builder.get_branch()
2055 source_b.lock_read()
2056 self.addCleanup(source_b.unlock)
2057 base = self.make_branch('base')
2058- base.pull(source_b, stop_revision='B-id')
2059+ base.pull(source_b, stop_revision=b'B-id')
2060 stacked = self.make_branch('stacked')
2061 stacked.set_stacked_on_url('../base')
2062- stacked.pull(source_b, stop_revision='C-id')
2063+ stacked.pull(source_b, stop_revision=b'C-id')
2064
2065 stacked.lock_read()
2066 self.addCleanup(stacked.unlock)
2067 repo = stacked.repository
2068- keys = {'file-id': {'A-id'}}
2069+ keys = {'file-id': {b'A-id'}}
2070 if stacked.repository.supports_rich_root():
2071- keys['root-id'] = {'A-id'}
2072- self.assertEqual(keys, repo.fileids_altered_by_revision_ids(['A-id']))
2073+ keys['root-id'] = {b'A-id'}
2074+ self.assertEqual(keys, repo.fileids_altered_by_revision_ids([b'A-id']))
2075
2076
2077 class FileIdInvolvedBase(TestCaseWithRepository):
2078
2079=== modified file 'breezy/tests/per_repository_vf/test_repository.py'
2080--- breezy/tests/per_repository_vf/test_repository.py 2018-05-22 02:05:12 +0000
2081+++ breezy/tests/per_repository_vf/test_repository.py 2018-06-21 23:03:57 +0000
2082@@ -265,13 +265,12 @@
2083 """Test the basic behaviour of the text store."""
2084 tree = self.make_branch_and_tree('tree')
2085 repo = tree.branch.repository
2086- file_id = "Foo:Bar"
2087+ file_id = b"Foo:Bar"
2088 file_key = (file_id,)
2089- tree.lock_write()
2090- try:
2091+ with tree.lock_write():
2092 self.assertEqual(set(), set(repo.texts.keys()))
2093 tree.add(['foo'], [file_id], ['file'])
2094- tree.put_file_bytes_non_atomic('foo', 'content\n', file_id=file_id)
2095+ tree.put_file_bytes_non_atomic('foo', b'content\n', file_id=file_id)
2096 try:
2097 rev_key = (tree.commit("foo"),)
2098 except errors.IllegalPath:
2099@@ -290,20 +289,18 @@
2100 self.assertEqual(keys, set(repo.texts.keys()))
2101 self.assertEqual(parents,
2102 repo.texts.get_parent_map(repo.texts.keys()))
2103- finally:
2104- tree.unlock()
2105 tree2 = self.make_branch_and_tree('tree2')
2106 tree2.pull(tree.branch)
2107- tree2.put_file_bytes_non_atomic('foo', 'right\n', file_id='Foo:Bar')
2108+ tree2.put_file_bytes_non_atomic('foo', b'right\n', file_id=b'Foo:Bar')
2109 right_key = (tree2.commit('right'),)
2110 keys.add(file_key + right_key)
2111 parents[file_key + right_key] = (file_key + rev_key,)
2112- tree.put_file_bytes_non_atomic('foo', 'left\n', file_id='Foo:Bar')
2113+ tree.put_file_bytes_non_atomic('foo', b'left\n', file_id=b'Foo:Bar')
2114 left_key = (tree.commit('left'),)
2115 keys.add(file_key + left_key)
2116 parents[file_key + left_key] = (file_key + rev_key,)
2117 tree.merge_from_branch(tree2.branch)
2118- tree.put_file_bytes_non_atomic('foo', 'merged\n', file_id='Foo:Bar')
2119+ tree.put_file_bytes_non_atomic('foo', b'merged\n', file_id=b'Foo:Bar')
2120 try:
2121 tree.auto_resolve()
2122 except errors.UnsupportedOperation:
2123
2124=== modified file 'breezy/tests/per_transport.py'
2125--- breezy/tests/per_transport.py 2018-04-01 18:29:09 +0000
2126+++ breezy/tests/per_transport.py 2018-06-21 23:03:57 +0000
2127@@ -174,9 +174,9 @@
2128 t = self.get_transport()
2129
2130 files = ['a']
2131- content = 'contents of a\n'
2132+ content = b'contents of a\n'
2133 self.build_tree(['a'], transport=t, line_endings='binary')
2134- self.check_transport_contents('contents of a\n', t, 'a')
2135+ self.check_transport_contents(b'contents of a\n', t, 'a')
2136 f = t.get('a')
2137 self.assertEqual(content, f.read())
2138
2139@@ -220,13 +220,13 @@
2140 t = self.get_transport()
2141
2142 files = ['a', 'b', 'e', 'g']
2143- contents = ['contents of a\n',
2144- 'contents of b\n',
2145- 'contents of e\n',
2146- 'contents of g\n',
2147+ contents = [b'contents of a\n',
2148+ b'contents of b\n',
2149+ b'contents of e\n',
2150+ b'contents of g\n',
2151 ]
2152 self.build_tree(files, transport=t, line_endings='binary')
2153- self.check_transport_contents('contents of a\n', t, 'a')
2154+ self.check_transport_contents(b'contents of a\n', t, 'a')
2155
2156 for content, fname in zip(contents, files):
2157 self.assertEqual(content, t.get_bytes(fname))
2158@@ -272,11 +272,11 @@
2159
2160 t.put_bytes('a', b'some text for a\n')
2161 self.assertTrue(t.has('a'))
2162- self.check_transport_contents('some text for a\n', t, 'a')
2163+ self.check_transport_contents(b'some text for a\n', t, 'a')
2164
2165 # The contents should be overwritten
2166 t.put_bytes('a', b'new text for a\n')
2167- self.check_transport_contents('new text for a\n', t, 'a')
2168+ self.check_transport_contents(b'new text for a\n', t, 'a')
2169
2170 self.assertRaises(NoSuchFile,
2171 t.put_bytes, 'path/doesnt/exist/c', b'contents')
2172@@ -286,37 +286,37 @@
2173
2174 if t.is_readonly():
2175 self.assertRaises(TransportNotPossible,
2176- t.put_bytes_non_atomic, 'a', 'some text for a\n')
2177+ t.put_bytes_non_atomic, 'a', b'some text for a\n')
2178 return
2179
2180 self.assertFalse(t.has('a'))
2181- t.put_bytes_non_atomic('a', 'some text for a\n')
2182+ t.put_bytes_non_atomic('a', b'some text for a\n')
2183 self.assertTrue(t.has('a'))
2184- self.check_transport_contents('some text for a\n', t, 'a')
2185+ self.check_transport_contents(b'some text for a\n', t, 'a')
2186 # Put also replaces contents
2187- t.put_bytes_non_atomic('a', 'new\ncontents for\na\n')
2188- self.check_transport_contents('new\ncontents for\na\n', t, 'a')
2189+ t.put_bytes_non_atomic('a', b'new\ncontents for\na\n')
2190+ self.check_transport_contents(b'new\ncontents for\na\n', t, 'a')
2191
2192 # Make sure we can create another file
2193- t.put_bytes_non_atomic('d', 'contents for\nd\n')
2194+ t.put_bytes_non_atomic('d', b'contents for\nd\n')
2195 # And overwrite 'a' with empty contents
2196- t.put_bytes_non_atomic('a', '')
2197- self.check_transport_contents('contents for\nd\n', t, 'd')
2198- self.check_transport_contents('', t, 'a')
2199+ t.put_bytes_non_atomic('a', b'')
2200+ self.check_transport_contents(b'contents for\nd\n', t, 'd')
2201+ self.check_transport_contents(b'', t, 'a')
2202
2203 self.assertRaises(NoSuchFile, t.put_bytes_non_atomic, 'no/such/path',
2204- 'contents\n')
2205+ b'contents\n')
2206 # Now test the create_parent flag
2207 self.assertRaises(NoSuchFile, t.put_bytes_non_atomic, 'dir/a',
2208- 'contents\n')
2209+ b'contents\n')
2210 self.assertFalse(t.has('dir/a'))
2211- t.put_bytes_non_atomic('dir/a', 'contents for dir/a\n',
2212+ t.put_bytes_non_atomic('dir/a', b'contents for dir/a\n',
2213 create_parent_dir=True)
2214- self.check_transport_contents('contents for dir/a\n', t, 'dir/a')
2215+ self.check_transport_contents(b'contents for dir/a\n', t, 'dir/a')
2216
2217 # But we still get NoSuchFile if we can't make the parent dir
2218 self.assertRaises(NoSuchFile, t.put_bytes_non_atomic, 'not/there/a',
2219- 'contents\n',
2220+ b'contents\n',
2221 create_parent_dir=True)
2222
2223 def test_put_bytes_permissions(self):
2224@@ -350,29 +350,29 @@
2225 if not t._can_roundtrip_unix_modebits():
2226 # Can't roundtrip, so no need to run this test
2227 return
2228- t.put_bytes_non_atomic('mode644', 'test text\n', mode=0o644)
2229+ t.put_bytes_non_atomic('mode644', b'test text\n', mode=0o644)
2230 self.assertTransportMode(t, 'mode644', 0o644)
2231- t.put_bytes_non_atomic('mode666', 'test text\n', mode=0o666)
2232+ t.put_bytes_non_atomic('mode666', b'test text\n', mode=0o666)
2233 self.assertTransportMode(t, 'mode666', 0o666)
2234- t.put_bytes_non_atomic('mode600', 'test text\n', mode=0o600)
2235+ t.put_bytes_non_atomic('mode600', b'test text\n', mode=0o600)
2236 self.assertTransportMode(t, 'mode600', 0o600)
2237- t.put_bytes_non_atomic('mode400', 'test text\n', mode=0o400)
2238+ t.put_bytes_non_atomic('mode400', b'test text\n', mode=0o400)
2239 self.assertTransportMode(t, 'mode400', 0o400)
2240
2241 # The default permissions should be based on the current umask
2242 umask = osutils.get_umask()
2243- t.put_bytes_non_atomic('nomode', 'test text\n', mode=None)
2244+ t.put_bytes_non_atomic('nomode', b'test text\n', mode=None)
2245 self.assertTransportMode(t, 'nomode', 0o666 & ~umask)
2246
2247 # We should also be able to set the mode for a parent directory
2248 # when it is created
2249- t.put_bytes_non_atomic('dir700/mode664', 'test text\n', mode=0o664,
2250+ t.put_bytes_non_atomic('dir700/mode664', b'test text\n', mode=0o664,
2251 dir_mode=0o700, create_parent_dir=True)
2252 self.assertTransportMode(t, 'dir700', 0o700)
2253- t.put_bytes_non_atomic('dir770/mode664', 'test text\n', mode=0o664,
2254+ t.put_bytes_non_atomic('dir770/mode664', b'test text\n', mode=0o664,
2255 dir_mode=0o770, create_parent_dir=True)
2256 self.assertTransportMode(t, 'dir770', 0o770)
2257- t.put_bytes_non_atomic('dir777/mode664', 'test text\n', mode=0o664,
2258+ t.put_bytes_non_atomic('dir777/mode664', b'test text\n', mode=0o664,
2259 dir_mode=0o777, create_parent_dir=True)
2260 self.assertTransportMode(t, 'dir777', 0o777)
2261
2262@@ -388,11 +388,11 @@
2263 # put_file returns the length of the data written
2264 self.assertEqual(16, result)
2265 self.assertTrue(t.has('a'))
2266- self.check_transport_contents('some text for a\n', t, 'a')
2267+ self.check_transport_contents(b'some text for a\n', t, 'a')
2268 # Put also replaces contents
2269 result = t.put_file('a', BytesIO(b'new\ncontents for\na\n'))
2270 self.assertEqual(19, result)
2271- self.check_transport_contents('new\ncontents for\na\n', t, 'a')
2272+ self.check_transport_contents(b'new\ncontents for\na\n', t, 'a')
2273 self.assertRaises(NoSuchFile,
2274 t.put_file, 'path/doesnt/exist/c',
2275 BytesIO(b'contents'))
2276@@ -408,17 +408,17 @@
2277 self.assertFalse(t.has('a'))
2278 t.put_file_non_atomic('a', BytesIO(b'some text for a\n'))
2279 self.assertTrue(t.has('a'))
2280- self.check_transport_contents('some text for a\n', t, 'a')
2281+ self.check_transport_contents(b'some text for a\n', t, 'a')
2282 # Put also replaces contents
2283 t.put_file_non_atomic('a', BytesIO(b'new\ncontents for\na\n'))
2284- self.check_transport_contents('new\ncontents for\na\n', t, 'a')
2285+ self.check_transport_contents(b'new\ncontents for\na\n', t, 'a')
2286
2287 # Make sure we can create another file
2288 t.put_file_non_atomic('d', BytesIO(b'contents for\nd\n'))
2289 # And overwrite 'a' with empty contents
2290 t.put_file_non_atomic('a', BytesIO(b''))
2291- self.check_transport_contents('contents for\nd\n', t, 'd')
2292- self.check_transport_contents('', t, 'a')
2293+ self.check_transport_contents(b'contents for\nd\n', t, 'd')
2294+ self.check_transport_contents(b'', t, 'a')
2295
2296 self.assertRaises(NoSuchFile, t.put_file_non_atomic, 'no/such/path',
2297 BytesIO(b'contents\n'))
2298@@ -428,7 +428,7 @@
2299 self.assertFalse(t.has('dir/a'))
2300 t.put_file_non_atomic('dir/a', BytesIO(b'contents for dir/a\n'),
2301 create_parent_dir=True)
2302- self.check_transport_contents('contents for dir/a\n', t, 'dir/a')
2303+ self.check_transport_contents(b'contents for dir/a\n', t, 'dir/a')
2304
2305 # But we still get NoSuchFile if we can't make the parent dir
2306 self.assertRaises(NoSuchFile, t.put_file_non_atomic, 'not/there/a',
2307@@ -535,8 +535,8 @@
2308 # Test get/put in sub-directories
2309 t.put_bytes('dir_a/a', b'contents of dir_a/a')
2310 t.put_file('dir_b/b', BytesIO(b'contents of dir_b/b'))
2311- self.check_transport_contents('contents of dir_a/a', t, 'dir_a/a')
2312- self.check_transport_contents('contents of dir_b/b', t, 'dir_b/b')
2313+ self.check_transport_contents(b'contents of dir_a/a', t, 'dir_a/a')
2314+ self.check_transport_contents(b'contents of dir_b/b', t, 'dir_b/b')
2315
2316 # mkdir of a dir with an absent parent
2317 self.assertRaises(NoSuchFile, t.mkdir, 'missing/dir')
2318@@ -681,7 +681,7 @@
2319 # And we can create new files, too
2320 self.assertEqual(0,
2321 t.append_file('c', BytesIO(b'some text\nfor a missing file\n')))
2322- self.check_transport_contents('some text\nfor a missing file\n',
2323+ self.check_transport_contents(b'some text\nfor a missing file\n',
2324 t, 'c')
2325
2326 def test_append_bytes(self):
2327@@ -908,14 +908,14 @@
2328 self.assertTrue(t.has('b'))
2329 self.assertFalse(t.has('a'))
2330
2331- self.check_transport_contents('a first file\n', t, 'b')
2332+ self.check_transport_contents(b'a first file\n', t, 'b')
2333 self.assertEqual([False, True], [t.has(n) for n in ['a', 'b']])
2334
2335 # Overwrite a file
2336 t.put_bytes('c', b'c this file\n')
2337 t.move('c', 'b')
2338 self.assertFalse(t.has('c'))
2339- self.check_transport_contents('c this file\n', t, 'b')
2340+ self.check_transport_contents(b'c this file\n', t, 'b')
2341
2342 # TODO: Try to write a test for atomicity
2343 # TODO: Test moving into a non-existent subdirectory
2344@@ -928,7 +928,7 @@
2345
2346 t.put_bytes('a', b'a file\n')
2347 t.copy('a', 'b')
2348- self.check_transport_contents('a file\n', t, 'b')
2349+ self.check_transport_contents(b'a file\n', t, 'b')
2350
2351 self.assertRaises(NoSuchFile, t.copy, 'c', 'd')
2352 os.mkdir('c')
2353@@ -937,7 +937,7 @@
2354 #self.assertRaises(Something, t.copy, 'a', 'c')
2355 t.put_bytes('d', b'text in d\n')
2356 t.copy('d', 'b')
2357- self.check_transport_contents('text in d\n', t, 'b')
2358+ self.check_transport_contents(b'text in d\n', t, 'b')
2359
2360 def test_connection_error(self):
2361 """ConnectionError is raised when connection is impossible.
2362@@ -1472,13 +1472,13 @@
2363 return
2364 transport.put_bytes('foo', b'bar')
2365 transport3 = self.get_transport()
2366- self.check_transport_contents('bar', transport3, 'foo')
2367+ self.check_transport_contents(b'bar', transport3, 'foo')
2368
2369 # now opening at a relative url should give use a sane result:
2370 transport.mkdir('newdir')
2371 transport5 = self.get_transport('newdir')
2372 transport6 = transport5.clone('..')
2373- self.check_transport_contents('bar', transport6, 'foo')
2374+ self.check_transport_contents(b'bar', transport6, 'foo')
2375
2376 def test_lock_write(self):
2377 """Test transport-level write locks.
2378
2379=== modified file 'breezy/tests/per_tree/test_test_trees.py'
2380--- breezy/tests/per_tree/test_test_trees.py 2018-03-24 15:27:01 +0000
2381+++ breezy/tests/per_tree/test_test_trees.py 2018-06-21 23:03:57 +0000
2382@@ -17,6 +17,7 @@
2383 """Tests for the test trees used by the per_tree tests."""
2384
2385 from breezy import errors
2386+from breezy.sixish import text_type
2387 from breezy.tests import per_tree
2388 from breezy.tests import (
2389 TestNotApplicable,
2390@@ -318,7 +319,7 @@
2391
2392 for expected, (path, ie) in zip(path_and_ids, path_entries):
2393 self.assertEqual(expected[0], path) # Paths should match
2394- self.assertIsInstance(path, unicode)
2395+ self.assertIsInstance(path, text_type)
2396 self.assertEqual(expected[1], ie.file_id)
2397 self.assertIsInstance(ie.file_id, str)
2398 self.assertEqual(expected[2], ie.parent_id)
2399@@ -387,7 +388,7 @@
2400 for (epath, efid, eparent, erev), (path, ie) in zip(path_and_ids,
2401 path_entries):
2402 self.assertEqual(epath, path) # Paths should match
2403- self.assertIsInstance(path, unicode)
2404+ self.assertIsInstance(path, text_type)
2405 self.assertIsInstance(ie.file_id, bytes)
2406 if wt.supports_setting_file_ids():
2407 self.assertEqual(efid, ie.file_id)
2408
2409=== modified file 'breezy/tests/per_workingtree/test_put_file.py'
2410--- breezy/tests/per_workingtree/test_put_file.py 2017-11-12 20:44:54 +0000
2411+++ breezy/tests/per_workingtree/test_put_file.py 2018-06-21 23:03:57 +0000
2412@@ -25,13 +25,13 @@
2413 def test_put_new_file(self):
2414 t = self.make_branch_and_tree('t1')
2415 t.add(['foo'], kinds=['file'])
2416- t.put_file_bytes_non_atomic('foo', 'barshoom')
2417- self.assertEqual('barshoom', t.get_file('foo').read())
2418+ t.put_file_bytes_non_atomic('foo', b'barshoom')
2419+ self.assertEqual(b'barshoom', t.get_file('foo').read())
2420
2421 def test_put_existing_file(self):
2422 t = self.make_branch_and_tree('t1')
2423 t.add(['foo'], kinds=['file'])
2424- t.put_file_bytes_non_atomic('foo', 'first-content')
2425- t.put_file_bytes_non_atomic('foo', 'barshoom')
2426- self.assertEqual('barshoom', t.get_file('foo').read())
2427+ t.put_file_bytes_non_atomic('foo', b'first-content')
2428+ t.put_file_bytes_non_atomic('foo', b'barshoom')
2429+ self.assertEqual(b'barshoom', t.get_file('foo').read())
2430
2431
2432=== modified file 'breezy/tests/test_cache_utf8.py'
2433--- breezy/tests/test_cache_utf8.py 2017-05-22 00:56:52 +0000
2434+++ breezy/tests/test_cache_utf8.py 2018-06-21 23:03:57 +0000
2435@@ -19,6 +19,7 @@
2436 from .. import (
2437 cache_utf8,
2438 )
2439+from ..sixish import text_type
2440 from . import TestCase
2441
2442
2443@@ -105,7 +106,7 @@
2444 # objects.
2445 uni_x = cache_utf8.decode(x)
2446 self.assertEqual(u'simple text', uni_x)
2447- self.assertIsInstance(uni_x, unicode)
2448+ self.assertIsInstance(uni_x, text_type)
2449
2450 utf8_x = cache_utf8.encode(uni_x)
2451 self.assertIs(utf8_x, x)
2452
2453=== modified file 'breezy/tests/test_config.py'
2454--- breezy/tests/test_config.py 2017-11-12 13:53:51 +0000
2455+++ breezy/tests/test_config.py 2018-06-21 23:03:57 +0000
2456@@ -44,6 +44,7 @@
2457 )
2458 from ..sixish import (
2459 BytesIO,
2460+ text_type,
2461 )
2462 from ..transport import remote as transport_remote
2463 from . import (
2464@@ -522,7 +523,7 @@
2465 self.assertEqual(config.config_dir(), self.brz_home)
2466
2467 def test_config_dir_is_unicode(self):
2468- self.assertIsInstance(config.config_dir(), unicode)
2469+ self.assertIsInstance(config.config_dir(), text_type)
2470
2471 def test_config_filename(self):
2472 self.assertEqual(config.config_filename(),
2473@@ -554,7 +555,7 @@
2474 self.assertEqual(config.config_dir(), self.bzr_home)
2475
2476 def test_config_dir_is_unicode(self):
2477- self.assertIsInstance(config.config_dir(), unicode)
2478+ self.assertIsInstance(config.config_dir(), text_type)
2479
2480 def test_config_filename(self):
2481 self.assertEqual(config.config_filename(),
2482
2483=== modified file 'breezy/tests/test_conflicts.py'
2484--- breezy/tests/test_conflicts.py 2018-05-22 02:05:12 +0000
2485+++ breezy/tests/test_conflicts.py 2018-06-21 23:03:57 +0000
2486@@ -24,6 +24,7 @@
2487 osutils,
2488 tests,
2489 )
2490+from ..sixish import text_type
2491 from . import (
2492 script,
2493 scenarios,
2494@@ -129,7 +130,7 @@
2495 scenarios = scenarios.multiply_scenarios(vary_by_conflicts())
2496
2497 def test_stringification(self):
2498- text = unicode(self.conflict)
2499+ text = text_type(self.conflict)
2500 self.assertContainsString(text, self.conflict.path)
2501 self.assertContainsString(text.lower(), "conflict")
2502 self.assertContainsString(repr(self.conflict),
2503@@ -140,14 +141,14 @@
2504 o = conflicts.Conflict.factory(**p.as_stanza().as_dict())
2505 self.assertEqual(o, p)
2506
2507- self.assertIsInstance(o.path, unicode)
2508+ self.assertIsInstance(o.path, text_type)
2509
2510 if o.file_id is not None:
2511 self.assertIsInstance(o.file_id, str)
2512
2513 conflict_path = getattr(o, 'conflict_path', None)
2514 if conflict_path is not None:
2515- self.assertIsInstance(conflict_path, unicode)
2516+ self.assertIsInstance(conflict_path, text_type)
2517
2518 conflict_file_id = getattr(o, 'conflict_file_id', None)
2519 if conflict_file_id is not None:
2520@@ -174,7 +175,7 @@
2521
2522 def test_stringification(self):
2523 for text, o in zip(example_conflicts.to_strings(), example_conflicts):
2524- self.assertEqual(text, unicode(o))
2525+ self.assertEqual(text, text_type(o))
2526
2527
2528 # FIXME: The shell-like tests should be converted to real whitebox tests... or
2529@@ -303,17 +304,17 @@
2530
2531 # Create an empty trunk
2532 builder.build_snapshot(None, [
2533- ('add', ('', 'root-id', 'directory', ''))],
2534+ ('add', (u'', b'root-id', 'directory', ''))],
2535 revision_id=b'start')
2536 # Add a minimal base content
2537 base_actions = self._get_actions(self._base_actions)()
2538- builder.build_snapshot(['start'], base_actions, revision_id=b'base')
2539+ builder.build_snapshot([b'start'], base_actions, revision_id=b'base')
2540 # Modify the base content in branch
2541 actions_other = self._get_actions(self._other['actions'])()
2542- builder.build_snapshot(['base'], actions_other, revision_id=b'other')
2543+ builder.build_snapshot([b'base'], actions_other, revision_id=b'other')
2544 # Modify the base content in trunk
2545 actions_this = self._get_actions(self._this['actions'])()
2546- builder.build_snapshot(['base'], actions_this, revision_id=b'this')
2547+ builder.build_snapshot([b'base'], actions_this, revision_id=b'this')
2548 # builder.get_branch() tip is now 'this'
2549
2550 builder.finish_series()
2551
2552=== modified file 'breezy/tests/test_dirstate.py'
2553--- breezy/tests/test_dirstate.py 2018-05-22 02:05:12 +0000
2554+++ breezy/tests/test_dirstate.py 2018-06-21 23:03:57 +0000
2555@@ -1105,7 +1105,7 @@
2556 try:
2557 tree1.add('')
2558 tree1.add(['a file'], [b'file-id'], ['file'])
2559- tree1.put_file_bytes_non_atomic('a file', 'file-content')
2560+ tree1.put_file_bytes_non_atomic('a file', b'file-content')
2561 revid1 = tree1.commit('foo')
2562 finally:
2563 tree1.unlock()
2564@@ -1113,7 +1113,7 @@
2565 tree2 = memorytree.MemoryTree.create_on_branch(branch2)
2566 tree2.lock_write()
2567 try:
2568- tree2.put_file_bytes_non_atomic('a file', 'new file-content')
2569+ tree2.put_file_bytes_non_atomic('a file', b'new file-content')
2570 revid2 = tree2.commit('foo')
2571 root_id = tree2.get_root_id()
2572 finally:
2573
2574=== modified file 'breezy/tests/test_fetch.py'
2575--- breezy/tests/test_fetch.py 2018-05-22 02:05:12 +0000
2576+++ breezy/tests/test_fetch.py 2018-06-21 23:03:57 +0000
2577@@ -149,14 +149,14 @@
2578 Convert(tree.basedir, knit2_format)
2579 tree = WorkingTree.open(tree.basedir)
2580 branch = self.make_branch('branch', format=knit2_format)
2581- branch.pull(tree.branch, stop_revision='rev1')
2582+ branch.pull(tree.branch, stop_revision=b'rev1')
2583 repo = branch.repository
2584 repo.lock_read()
2585 try:
2586 # Make sure fetch retrieved only what we requested
2587- self.assertEqual({('tree-root', 'rev1'):()},
2588+ self.assertEqual({(b'tree-root', b'rev1'):()},
2589 repo.texts.get_parent_map(
2590- [('tree-root', 'rev1'), ('tree-root', 'rev2')]))
2591+ [(b'tree-root', b'rev1'), (b'tree-root', b'rev2')]))
2592 finally:
2593 repo.unlock()
2594 branch.pull(tree.branch)
2595@@ -165,8 +165,8 @@
2596 repo.lock_read()
2597 try:
2598 # Make sure fetch retrieved only what we requested
2599- self.assertEqual({('tree-root', 'rev2'):(('tree-root', 'rev1'),)},
2600- repo.texts.get_parent_map([('tree-root', 'rev2')]))
2601+ self.assertEqual({(b'tree-root', b'rev2'):((b'tree-root', b'rev1'),)},
2602+ repo.texts.get_parent_map([(b'tree-root', b'rev2')]))
2603 finally:
2604 repo.unlock()
2605
2606
2607=== modified file 'breezy/tests/test_inv.py'
2608--- breezy/tests/test_inv.py 2018-05-22 02:05:12 +0000
2609+++ breezy/tests/test_inv.py 2018-06-21 23:03:57 +0000
2610@@ -23,6 +23,7 @@
2611 tests,
2612 workingtree,
2613 )
2614+from ..sixish import text_type
2615 from ..bzr import (
2616 chk_map,
2617 groupcompress,
2618@@ -1228,7 +1229,7 @@
2619 b'file-rev-id\nabcdefgh\n100\nY', bytes)
2620 ie2 = inv._bytes_to_entry(bytes)
2621 self.assertEqual(ie, ie2)
2622- self.assertIsInstance(ie2.name, unicode)
2623+ self.assertIsInstance(ie2.name, text_type)
2624 self.assertEqual(('filename', b'file-id', b'file-rev-id'),
2625 inv._bytes_to_utf8name_key(bytes))
2626
2627@@ -1245,7 +1246,7 @@
2628 b'file-rev-id\n123456\n25\nN', bytes)
2629 ie2 = inv._bytes_to_entry(bytes)
2630 self.assertEqual(ie, ie2)
2631- self.assertIsInstance(ie2.name, unicode)
2632+ self.assertIsInstance(ie2.name, text_type)
2633 self.assertEqual((b'\xce\xa9name', b'file-id', b'file-rev-id'),
2634 inv._bytes_to_utf8name_key(bytes))
2635
2636@@ -1257,7 +1258,7 @@
2637 self.assertEqual(b'dir: dir-id\nparent-id\ndirname\ndir-rev-id', bytes)
2638 ie2 = inv._bytes_to_entry(bytes)
2639 self.assertEqual(ie, ie2)
2640- self.assertIsInstance(ie2.name, unicode)
2641+ self.assertIsInstance(ie2.name, text_type)
2642 self.assertEqual(('dirname', b'dir-id', b'dir-rev-id'),
2643 inv._bytes_to_utf8name_key(bytes))
2644
2645@@ -1271,7 +1272,7 @@
2646 b'dir-rev-id', bytes)
2647 ie2 = inv._bytes_to_entry(bytes)
2648 self.assertEqual(ie, ie2)
2649- self.assertIsInstance(ie2.name, unicode)
2650+ self.assertIsInstance(ie2.name, text_type)
2651 self.assertIs(ie2.parent_id, None)
2652 self.assertEqual(('dir\xce\xa9name', b'dir-id', b'dir-rev-id'),
2653 inv._bytes_to_utf8name_key(bytes))
2654@@ -1286,8 +1287,8 @@
2655 'link-rev-id\ntarget/path', bytes)
2656 ie2 = inv._bytes_to_entry(bytes)
2657 self.assertEqual(ie, ie2)
2658- self.assertIsInstance(ie2.name, unicode)
2659- self.assertIsInstance(ie2.symlink_target, unicode)
2660+ self.assertIsInstance(ie2.name, text_type)
2661+ self.assertIsInstance(ie2.symlink_target, text_type)
2662 self.assertEqual(('linkname', 'link-id', 'link-rev-id'),
2663 inv._bytes_to_utf8name_key(bytes))
2664
2665@@ -1301,8 +1302,8 @@
2666 'link-rev-id\ntarget/\xce\xa9path', bytes)
2667 ie2 = inv._bytes_to_entry(bytes)
2668 self.assertEqual(ie, ie2)
2669- self.assertIsInstance(ie2.name, unicode)
2670- self.assertIsInstance(ie2.symlink_target, unicode)
2671+ self.assertIsInstance(ie2.name, text_type)
2672+ self.assertIsInstance(ie2.symlink_target, text_type)
2673 self.assertEqual(('link\xce\xa9name', 'link-id', 'link-rev-id'),
2674 inv._bytes_to_utf8name_key(bytes))
2675
2676@@ -1317,7 +1318,7 @@
2677 'tree-rev-id\nref-rev-id', bytes)
2678 ie2 = inv._bytes_to_entry(bytes)
2679 self.assertEqual(ie, ie2)
2680- self.assertIsInstance(ie2.name, unicode)
2681+ self.assertIsInstance(ie2.name, text_type)
2682 self.assertEqual(('tree\xce\xa9name', 'tree-root-id', 'tree-rev-id'),
2683 inv._bytes_to_utf8name_key(bytes))
2684
2685
2686=== modified file 'breezy/tests/test_mail_client.py'
2687--- breezy/tests/test_mail_client.py 2017-07-16 01:55:39 +0000
2688+++ breezy/tests/test_mail_client.py 2018-06-21 23:03:57 +0000
2689@@ -21,6 +21,8 @@
2690 urlutils,
2691 osutils,
2692 )
2693+from ..sixish import text_type
2694+
2695
2696 class TestMutt(tests.TestCase):
2697
2698@@ -43,7 +45,7 @@
2699 ['-s', 'Hi there!', '-a', 'file%', '--', 'jrandom@example.org'],
2700 cmdline)
2701 for item in cmdline:
2702- self.assertFalse(isinstance(item, unicode),
2703+ self.assertFalse(isinstance(item, text_type),
2704 'Command-line item %r is unicode!' % item)
2705
2706
2707@@ -73,7 +75,7 @@
2708 "subject='Hi there!',to='jrandom@example.org'",
2709 ], cmdline)
2710 for item in cmdline:
2711- self.assertFalse(isinstance(item, unicode),
2712+ self.assertFalse(isinstance(item, text_type),
2713 'Command-line item %r is unicode!' % item)
2714
2715
2716@@ -110,7 +112,7 @@
2717 if eclient.elisp_tmp_file is not None:
2718 self.addCleanup(osutils.delete_any, eclient.elisp_tmp_file)
2719 for item in commandline:
2720- self.assertFalse(isinstance(item, unicode),
2721+ self.assertFalse(isinstance(item, text_type),
2722 'Command-line item %r is unicode!' % item)
2723
2724
2725@@ -139,7 +141,7 @@
2726 '--attach', 'file%'],
2727 cmdline)
2728 for item in cmdline:
2729- self.assertFalse(isinstance(item, unicode),
2730+ self.assertFalse(isinstance(item, text_type),
2731 'Command-line item %r is unicode!' % item)
2732
2733
2734@@ -163,7 +165,7 @@
2735 ],
2736 cmdline)
2737 for item in cmdline:
2738- self.assertFalse(isinstance(item, unicode),
2739+ self.assertFalse(isinstance(item, text_type),
2740 'Command-line item %r is unicode!' % item)
2741
2742
2743@@ -186,7 +188,7 @@
2744 ['-s', 'Hi there!', '--attach', 'file%', 'jrandom@example.org'],
2745 cmdline)
2746 for item in cmdline:
2747- self.assertFalse(isinstance(item, unicode),
2748+ self.assertFalse(isinstance(item, text_type),
2749 'Command-line item %r is unicode!' % item)
2750
2751
2752@@ -219,7 +221,7 @@
2753 'file%'],
2754 cmdline)
2755 for item in cmdline:
2756- self.assertFalse(isinstance(item, unicode),
2757+ self.assertFalse(isinstance(item, text_type),
2758 'Command-line item %r is unicode!' % item)
2759
2760 def test_with_from(self):
2761
2762=== modified file 'breezy/tests/test_memorytree.py'
2763--- breezy/tests/test_memorytree.py 2018-02-18 15:21:06 +0000
2764+++ breezy/tests/test_memorytree.py 2018-06-21 23:03:57 +0000
2765@@ -110,8 +110,8 @@
2766 tree.lock_write()
2767 tree.add(['', 'foo'], ids=[b'root-id', b'foo-id'],
2768 kinds=['directory', 'file'])
2769- tree.put_file_bytes_non_atomic('foo', 'barshoom')
2770- self.assertEqual('barshoom', tree.get_file('foo').read())
2771+ tree.put_file_bytes_non_atomic('foo', b'barshoom')
2772+ self.assertEqual(b'barshoom', tree.get_file('foo').read())
2773 tree.unlock()
2774
2775 def test_put_existing_file(self):
2776@@ -120,9 +120,9 @@
2777 tree.lock_write()
2778 tree.add(['', 'foo'], ids=[b'root-id', b'foo-id'],
2779 kinds=['directory', 'file'])
2780- tree.put_file_bytes_non_atomic('foo', 'first-content')
2781- tree.put_file_bytes_non_atomic('foo', 'barshoom')
2782- self.assertEqual('barshoom', tree.get_file('foo').read())
2783+ tree.put_file_bytes_non_atomic('foo', b'first-content')
2784+ tree.put_file_bytes_non_atomic('foo', b'barshoom')
2785+ self.assertEqual(b'barshoom', tree.get_file('foo').read())
2786 tree.unlock()
2787
2788 def test_add_in_subdir(self):
2789@@ -135,11 +135,11 @@
2790 # that *always* adds the directory as well. So if you want to create a
2791 # file in a subdirectory, you have to split out the 'mkdir()' calls
2792 # from the add and put_file_bytes_non_atomic calls. :(
2793- tree.mkdir('adir', 'dir-id')
2794+ tree.mkdir('adir', b'dir-id')
2795 tree.add(['adir/afile'], [b'file-id'], ['file'])
2796 self.assertEqual('adir/afile', tree.id2path(b'file-id'))
2797 self.assertEqual('adir', tree.id2path(b'dir-id'))
2798- tree.put_file_bytes_non_atomic('adir/afile', 'barshoom')
2799+ tree.put_file_bytes_non_atomic('adir/afile', b'barshoom')
2800
2801 def test_commit_trivial(self):
2802 """Smoke test for commit on a MemoryTree.
2803@@ -152,7 +152,7 @@
2804 tree.lock_write()
2805 tree.add(['', 'foo'], ids=[b'root-id', b'foo-id'],
2806 kinds=['directory', 'file'])
2807- tree.put_file_bytes_non_atomic('foo', 'barshoom')
2808+ tree.put_file_bytes_non_atomic('foo', b'barshoom')
2809 revision_id = tree.commit('message baby')
2810 # the parents list for the tree should have changed.
2811 self.assertEqual([revision_id], tree.get_parent_ids())
2812@@ -161,7 +161,8 @@
2813 revtree = tree.branch.repository.revision_tree(revision_id)
2814 revtree.lock_read()
2815 self.addCleanup(revtree.unlock)
2816- self.assertEqual('barshoom', revtree.get_file('foo').read())
2817+ with revtree.get_file('foo') as f:
2818+ self.assertEqual(b'barshoom', f.read())
2819
2820 def test_unversion(self):
2821 """Some test for unversion of a memory tree."""
2822@@ -189,7 +190,7 @@
2823 tree.lock_write()
2824 self.addCleanup(tree.unlock)
2825 tree.add(['', 'foo'], [b'root-id', b'foo-id'], ['directory', 'file'])
2826- tree.put_file_bytes_non_atomic('foo', 'content\n')
2827+ tree.put_file_bytes_non_atomic('foo', b'content\n')
2828 tree.commit('one', rev_id=b'rev-one')
2829 tree.rename_one('foo', 'bar')
2830 self.assertEqual('bar', tree.id2path(b'foo-id'))
2831@@ -197,13 +198,13 @@
2832 self.assertRaises(errors.NoSuchFile,
2833 tree._file_transport.get_bytes, 'foo')
2834 tree.commit('two', rev_id=b'rev-two')
2835- self.assertEqual('content\n', tree._file_transport.get_bytes('bar'))
2836+ self.assertEqual(b'content\n', tree._file_transport.get_bytes('bar'))
2837 self.assertRaises(errors.NoSuchFile,
2838 tree._file_transport.get_bytes, 'foo')
2839
2840 rev_tree2 = tree.branch.repository.revision_tree(b'rev-two')
2841 self.assertEqual('bar', rev_tree2.id2path(b'foo-id'))
2842- self.assertEqual('content\n', rev_tree2.get_file_text('bar'))
2843+ self.assertEqual(b'content\n', rev_tree2.get_file_text('bar'))
2844
2845 def test_rename_file_to_subdir(self):
2846 tree = self.make_branch_and_memory_tree('branch')
2847@@ -212,7 +213,7 @@
2848 tree.add('')
2849 tree.mkdir('subdir', b'subdir-id')
2850 tree.add('foo', b'foo-id', 'file')
2851- tree.put_file_bytes_non_atomic('foo', 'content\n')
2852+ tree.put_file_bytes_non_atomic('foo', b'content\n')
2853 tree.commit('one', rev_id=b'rev-one')
2854
2855 tree.rename_one('foo', 'subdir/bar')
2856
2857=== modified file 'breezy/tests/test_osutils.py'
2858--- breezy/tests/test_osutils.py 2018-02-18 15:21:06 +0000
2859+++ breezy/tests/test_osutils.py 2018-06-21 23:03:57 +0000
2860@@ -38,6 +38,7 @@
2861 )
2862 from ..sixish import (
2863 BytesIO,
2864+ text_type,
2865 )
2866 from . import (
2867 features,
2868@@ -405,7 +406,7 @@
2869 self.assertRaises(osutils.UnsupportedTimezoneFormat,
2870 osutils.format_date, 0, timezone='foo')
2871 self.assertIsInstance(osutils.format_date(0), str)
2872- self.assertIsInstance(osutils.format_local_date(0), unicode)
2873+ self.assertIsInstance(osutils.format_local_date(0), text_type)
2874 # Testing for the actual value of the local weekday without
2875 # duplicating the code from format_date is difficult.
2876 # Instead blackbox.test_locale should check for localized
2877@@ -1397,11 +1398,11 @@
2878 # all abspaths are Unicode, and encode them back into utf8.
2879 for dirdetail, dirblock in osutils._walkdirs_utf8('.'):
2880 self.assertIsInstance(dirdetail[0], str)
2881- if isinstance(dirdetail[1], unicode):
2882+ if isinstance(dirdetail[1], text_type):
2883 dirdetail = (dirdetail[0], dirdetail[1].encode('utf8'))
2884 dirblock = [list(info) for info in dirblock]
2885 for info in dirblock:
2886- self.assertIsInstance(info[4], unicode)
2887+ self.assertIsInstance(info[4], text_type)
2888 info[4] = info[4].encode('utf8')
2889 new_dirblock = []
2890 for info in dirblock:
2891@@ -2137,13 +2138,13 @@
2892 def test_is_unicode(self):
2893 self.overrideEnv('BRZ_TEST_PATH', './anywhere at all/')
2894 path = osutils.path_from_environ('BRZ_TEST_PATH')
2895- self.assertIsInstance(path, unicode)
2896+ self.assertIsInstance(path, text_type)
2897 self.assertEqual(u'./anywhere at all/', path)
2898
2899 def test_posix_path_env_ascii(self):
2900 self.overrideEnv('BRZ_TEST_PATH', '/tmp')
2901 home = osutils._posix_path_from_environ('BRZ_TEST_PATH')
2902- self.assertIsInstance(home, unicode)
2903+ self.assertIsInstance(home, text_type)
2904 self.assertEqual(u'/tmp', home)
2905
2906 def test_posix_path_env_unicode(self):
2907@@ -2164,17 +2165,17 @@
2908
2909 def test_is_unicode(self):
2910 home = osutils._get_home_dir()
2911- self.assertIsInstance(home, unicode)
2912+ self.assertIsInstance(home, text_type)
2913
2914 def test_posix_homeless(self):
2915 self.overrideEnv('HOME', None)
2916 home = osutils._get_home_dir()
2917- self.assertIsInstance(home, unicode)
2918+ self.assertIsInstance(home, text_type)
2919
2920 def test_posix_home_ascii(self):
2921 self.overrideEnv('HOME', '/home/test')
2922 home = osutils._posix_get_home_dir()
2923- self.assertIsInstance(home, unicode)
2924+ self.assertIsInstance(home, text_type)
2925 self.assertEqual(u'/home/test', home)
2926
2927 def test_posix_home_unicode(self):
2928@@ -2193,7 +2194,7 @@
2929
2930 def test_is_unicode(self):
2931 user = osutils.getuser_unicode()
2932- self.assertIsInstance(user, unicode)
2933+ self.assertIsInstance(user, text_type)
2934
2935 def envvar_to_override(self):
2936 if sys.platform == "win32":
2937
2938=== modified file 'breezy/tests/test_read_bundle.py'
2939--- breezy/tests/test_read_bundle.py 2018-02-18 15:21:06 +0000
2940+++ breezy/tests/test_read_bundle.py 2018-06-21 23:03:57 +0000
2941@@ -22,6 +22,7 @@
2942 from .. import errors
2943 from ..sixish import (
2944 BytesIO,
2945+ text_type,
2946 )
2947 from .. import tests
2948 from .test_transport import TestTransportImplementation
2949@@ -88,7 +89,7 @@
2950
2951 def test_read_mergeable_from_url(self):
2952 info = self.read_mergeable_from_url(
2953- unicode(self.get_url(self.bundle_name)))
2954+ text_type(self.get_url(self.bundle_name)))
2955 revision = info.real_revisions[-1]
2956 self.assertEqual('commit-1', revision.revision_id)
2957
2958@@ -107,6 +108,6 @@
2959 # transports (the test will fail even).
2960 raise tests.TestSkipped(
2961 'Need a ConnectedTransport to test transport reuse')
2962- url = unicode(self.get_url(self.bundle_name))
2963+ url = text_type(self.get_url(self.bundle_name))
2964 info = self.read_mergeable_from_url(url)
2965 self.assertEqual(1, len(self.possible_transports))
2966
2967=== modified file 'breezy/tests/test_repository.py'
2968--- breezy/tests/test_repository.py 2018-05-22 02:05:12 +0000
2969+++ breezy/tests/test_repository.py 2018-06-21 23:03:57 +0000
2970@@ -242,8 +242,9 @@
2971 # empty revision-store directory
2972 # empty weaves directory
2973 t = control.get_repository_transport(None)
2974- self.assertEqualDiff('Bazaar-NG Knit Repository Format 1',
2975- t.get('format').read())
2976+ with t.get('format') as f:
2977+ self.assertEqualDiff(b'Bazaar-NG Knit Repository Format 1',
2978+ f.read())
2979 # XXX: no locks left when unlocked at the moment
2980 # self.assertEqualDiff('', t.get('lock').read())
2981 self.assertTrue(S_ISDIR(t.stat('knits').st_mode))
2982@@ -251,8 +252,8 @@
2983 # Check per-file knits.
2984 branch = control.create_branch()
2985 tree = control.create_workingtree()
2986- tree.add(['foo'], ['Nasty-IdC:'], ['file'])
2987- tree.put_file_bytes_non_atomic('foo', '')
2988+ tree.add(['foo'], [b'Nasty-IdC:'], ['file'])
2989+ tree.put_file_bytes_non_atomic('foo', b'')
2990 tree.commit('1st post', rev_id=b'foo')
2991 self.assertHasKnit(t, 'knits/e8/%254easty-%2549d%2543%253a',
2992 '\nfoo fulltext 0 81 :')
2993
2994=== modified file 'breezy/tests/test_transform.py'
2995--- breezy/tests/test_transform.py 2018-06-14 12:13:00 +0000
2996+++ breezy/tests/test_transform.py 2018-06-21 23:03:57 +0000
2997@@ -61,6 +61,7 @@
2998 from ..mutabletree import MutableTree
2999 from ..sixish import (
3000 BytesIO,
3001+ text_type,
3002 )
3003 from . import (
3004 features,
3005@@ -877,7 +878,7 @@
3006 raw_conflicts = resolve_conflicts(tt)
3007 cooked_conflicts = cook_conflicts(raw_conflicts, tt)
3008 tt.finalize()
3009- conflicts_s = [unicode(c) for c in cooked_conflicts]
3010+ conflicts_s = [text_type(c) for c in cooked_conflicts]
3011 self.assertEqual(len(cooked_conflicts), len(conflicts_s))
3012 self.assertEqual(conflicts_s[0], 'Conflict adding file dorothy. '
3013 'Moved existing file to '
3014
3015=== modified file 'breezy/tests/test_urlutils.py'
3016--- breezy/tests/test_urlutils.py 2018-05-27 18:00:21 +0000
3017+++ breezy/tests/test_urlutils.py 2018-06-21 23:03:57 +0000
3018@@ -23,6 +23,7 @@
3019 from ..errors import (
3020 PathNotChild,
3021 )
3022+from ..sixish import text_type
3023 from . import features, TestCaseInTempDir, TestCase, TestSkipped
3024
3025
3026@@ -411,7 +412,7 @@
3027 raise TestSkipped("local encoding cannot handle unicode")
3028
3029 self.assertEqual('file:///D:/path/to/r%C3%A4ksm%C3%B6rg%C3%A5s', result)
3030- self.assertFalse(isinstance(result, unicode))
3031+ self.assertFalse(isinstance(result, text_type))
3032
3033 def test_win32_unc_path_to_url(self):
3034 self.requireFeature(features.win32_feature)
3035@@ -427,7 +428,7 @@
3036 raise TestSkipped("local encoding cannot handle unicode")
3037
3038 self.assertEqual('file://HOST/path/to/r%C3%A4ksm%C3%B6rg%C3%A5s', result)
3039- self.assertFalse(isinstance(result, unicode))
3040+ self.assertFalse(isinstance(result, text_type))
3041
3042 def test_win32_local_path_from_url(self):
3043 from_url = urlutils._win32_local_path_from_url
3044@@ -610,7 +611,7 @@
3045 # Test that URLs are converted to nice unicode strings for display
3046 def test(expected, url, encoding='utf-8'):
3047 disp_url = urlutils.unescape_for_display(url, encoding=encoding)
3048- self.assertIsInstance(disp_url, unicode)
3049+ self.assertIsInstance(disp_url, text_type)
3050 self.assertEqual(expected, disp_url)
3051
3052 test('http://foo', 'http://foo')
3053@@ -650,7 +651,7 @@
3054 def test_escape(self):
3055 self.assertEqual('%25', urlutils.escape('%'))
3056 self.assertEqual('%C3%A5', urlutils.escape(u'\xe5'))
3057- self.assertFalse(isinstance(urlutils.escape(u'\xe5'), unicode))
3058+ self.assertFalse(isinstance(urlutils.escape(u'\xe5'), text_type))
3059
3060 def test_escape_tildes(self):
3061 self.assertEqual('~foo', urlutils.escape('~foo'))
3062
3063=== modified file 'breezy/tests/test_workingtree_4.py'
3064--- breezy/tests/test_workingtree_4.py 2018-06-14 12:13:00 +0000
3065+++ breezy/tests/test_workingtree_4.py 2018-06-21 23:03:57 +0000
3066@@ -281,17 +281,17 @@
3067 builder.start_series()
3068 self.addCleanup(builder.finish_series)
3069 builder.build_snapshot([], [
3070- ('add', ('', 'root-id', 'directory', None)),
3071- ('add', ('a', 'a-id', 'file', 'content\n'))],
3072+ ('add', ('', b'root-id', 'directory', None)),
3073+ ('add', ('a', b'a-id', 'file', b'content\n'))],
3074 revision_id=b'A')
3075- builder.build_snapshot(['A'], [
3076- ('modify', ('a', 'new content\nfor a\n')),
3077- ('add', ('b', 'b-id', 'file', 'b-content\n'))],
3078+ builder.build_snapshot([b'A'], [
3079+ ('modify', ('a', b'new content\nfor a\n')),
3080+ ('add', ('b', b'b-id', 'file', b'b-content\n'))],
3081 revision_id=b'B')
3082 tree = self.make_workingtree('tree')
3083 source_branch = builder.get_branch()
3084- tree.branch.repository.fetch(source_branch.repository, 'B')
3085- tree.pull(source_branch, stop_revision='A')
3086+ tree.branch.repository.fetch(source_branch.repository, b'B')
3087+ tree.pull(source_branch, stop_revision=b'A')
3088 tree.lock_write()
3089 self.addCleanup(tree.unlock)
3090 state = tree.current_dirstate()
3091@@ -302,37 +302,37 @@
3092 return orig_update(delta, new_revid)
3093 state.update_basis_by_delta = log_update_basis_by_delta
3094 basis = tree.basis_tree()
3095- self.assertEqual('a-id', basis.path2id('a'))
3096+ self.assertEqual(b'a-id', basis.path2id('a'))
3097 self.assertFalse(basis.is_versioned('b'))
3098 def fail_set_parent_trees(trees, ghosts):
3099 raise AssertionError('dirstate.set_parent_trees() was called')
3100 state.set_parent_trees = fail_set_parent_trees
3101 repo = tree.branch.repository
3102- tree.pull(source_branch, stop_revision='B')
3103- self.assertEqual(['B'], called)
3104+ tree.pull(source_branch, stop_revision=b'B')
3105+ self.assertEqual([b'B'], called)
3106 basis = tree.basis_tree()
3107- self.assertEqual('a-id', basis.path2id('a'))
3108- self.assertEqual('b-id', basis.path2id('b'))
3109+ self.assertEqual(b'a-id', basis.path2id('a'))
3110+ self.assertEqual(b'b-id', basis.path2id('b'))
3111
3112 def test_set_parent_trees_handles_missing_basis(self):
3113 builder = self.make_branch_builder('source')
3114 builder.start_series()
3115 self.addCleanup(builder.finish_series)
3116 builder.build_snapshot([], [
3117- ('add', ('', 'root-id', 'directory', None)),
3118- ('add', ('a', 'a-id', 'file', 'content\n'))],
3119+ ('add', ('', b'root-id', 'directory', None)),
3120+ ('add', ('a', b'a-id', 'file', b'content\n'))],
3121 revision_id=b'A')
3122- builder.build_snapshot(['A'], [
3123- ('modify', ('a', 'new content\nfor a\n')),
3124- ('add', ('b', 'b-id', 'file', 'b-content\n'))],
3125+ builder.build_snapshot([b'A'], [
3126+ ('modify', ('a', b'new content\nfor a\n')),
3127+ ('add', ('b', b'b-id', 'file', b'b-content\n'))],
3128 revision_id=b'B')
3129- builder.build_snapshot(['A'], [
3130- ('add', ('c', 'c-id', 'file', 'c-content\n'))],
3131+ builder.build_snapshot([b'A'], [
3132+ ('add', ('c', b'c-id', 'file', b'c-content\n'))],
3133 revision_id=b'C')
3134 b_c = self.make_branch('branch_with_c')
3135- b_c.pull(builder.get_branch(), stop_revision='C')
3136+ b_c.pull(builder.get_branch(), stop_revision=b'C')
3137 b_b = self.make_branch('branch_with_b')
3138- b_b.pull(builder.get_branch(), stop_revision='B')
3139+ b_b.pull(builder.get_branch(), stop_revision=b'B')
3140 # This is reproducing some of what 'switch' does, just to isolate the
3141 # set_parent_trees() step.
3142 wt = b_b.create_checkout('tree', lightweight=True)
3143@@ -340,7 +340,7 @@
3144 fmt.set_reference(wt.controldir, None, b_c)
3145 # Re-open with the new reference
3146 wt = wt.controldir.open_workingtree()
3147- wt.set_parent_trees([('C', b_c.repository.revision_tree(b'C'))])
3148+ wt.set_parent_trees([(b'C', b_c.repository.revision_tree(b'C'))])
3149 self.assertFalse(wt.basis_tree().is_versioned('b'))
3150
3151 def test_new_dirstate_on_new_lock(self):
3152
3153=== modified file 'breezy/transform.py'
3154--- breezy/transform.py 2018-06-12 23:20:41 +0000
3155+++ breezy/transform.py 2018-06-21 23:03:57 +0000
3156@@ -66,6 +66,7 @@
3157 )
3158 from .progress import ProgressPhase
3159 from .sixish import (
3160+ text_type,
3161 viewitems,
3162 viewvalues,
3163 )
3164@@ -2122,7 +2123,7 @@
3165 if file_id is None:
3166 continue
3167 if (specific_files is not None and
3168- unicode(self._final_paths.get_path(trans_id)) not in specific_files):
3169+ self._final_paths.get_path(trans_id) not in specific_files):
3170 continue
3171 kind = self._transform.final_kind(trans_id)
3172 if kind is None:
3173@@ -2167,7 +2168,7 @@
3174 ordered_ids = self._list_files_by_dir()
3175 for entry, trans_id in self._make_inv_entries(ordered_ids,
3176 specific_files):
3177- yield unicode(self._final_paths.get_path(trans_id)), entry
3178+ yield self._final_paths.get_path(trans_id), entry
3179
3180 def _iter_entries_for_dir(self, dir_path):
3181 """Return path, entry for items in a directory without recursing down."""
3182@@ -2177,7 +2178,7 @@
3183 for child_trans_id in self._all_children(dir_trans_id):
3184 ordered_ids.append((child_trans_id, dir_id))
3185 for entry, trans_id in self._make_inv_entries(ordered_ids):
3186- yield unicode(self._final_paths.get_path(trans_id)), entry
3187+ yield self._final_paths.get_path(trans_id), entry
3188
3189 def list_files(self, include_root=False, from_dir=None, recursive=True):
3190 """See WorkingTree.list_files."""
3191@@ -2622,7 +2623,7 @@
3192 precomputed_delta = None
3193 conflicts = cook_conflicts(raw_conflicts, tt)
3194 for conflict in conflicts:
3195- trace.warning(unicode(conflict))
3196+ trace.warning(text_type(conflict))
3197 try:
3198 wt.add_conflicts(conflicts)
3199 except errors.UnsupportedOperation:
3200@@ -2814,7 +2815,7 @@
3201 unversioned_filter=working_tree.is_ignored)
3202 delta.report_changes(tt.iter_changes(), change_reporter)
3203 for conflict in conflicts:
3204- trace.warning(unicode(conflict))
3205+ trace.warning(text_type(conflict))
3206 pp.next_phase()
3207 tt.apply()
3208 if working_tree.supports_merge_modified():
3209
3210=== modified file 'breezy/transport/gio_transport.py'
3211--- breezy/transport/gio_transport.py 2017-09-26 00:55:04 +0000
3212+++ breezy/transport/gio_transport.py 2018-06-21 23:03:57 +0000
3213@@ -51,6 +51,7 @@
3214 )
3215 from ..sixish import (
3216 BytesIO,
3217+ text_type,
3218 )
3219 from ..trace import mutter
3220 from . import (
3221@@ -153,7 +154,7 @@
3222
3223 def _relpath_to_url(self, relpath):
3224 full_url = urlutils.join(self.url, relpath)
3225- if isinstance(full_url, unicode):
3226+ if isinstance(full_url, text_type):
3227 raise urlutils.InvalidURL(full_url)
3228 return full_url
3229
3230
3231=== modified file 'breezy/tree.py'
3232--- breezy/tree.py 2018-06-21 22:57:44 +0000
3233+++ breezy/tree.py 2018-06-21 23:03:57 +0000
3234@@ -44,6 +44,7 @@
3235 )
3236 from .inter import InterObject
3237 from .sixish import (
3238+ text_type,
3239 viewvalues,
3240 )
3241
3242@@ -1163,10 +1164,10 @@
3243 # This is stolen from _dirstate_helpers_py.py, only switching it to
3244 # Unicode objects. Consider using encode_utf8() and then using the
3245 # optimized versions, or maybe writing optimized unicode versions.
3246- if not isinstance(path1, unicode):
3247+ if not isinstance(path1, text_type):
3248 raise TypeError("'path1' must be a unicode string, not %s: %r"
3249 % (type(path1), path1))
3250- if not isinstance(path2, unicode):
3251+ if not isinstance(path2, text_type):
3252 raise TypeError("'path2' must be a unicode string, not %s: %r"
3253 % (type(path2), path2))
3254 return cmp(MultiWalker._path_to_key(path1),
3255
3256=== modified file 'breezy/urlutils.py'
3257--- breezy/urlutils.py 2018-06-21 19:00:42 +0000
3258+++ breezy/urlutils.py 2018-06-21 23:03:57 +0000
3259@@ -881,7 +881,7 @@
3260 # pad.lv/1696545: For the moment, accept both native strings and unicode.
3261 if isinstance(url, str):
3262 pass
3263- elif isinstance(url, unicode):
3264+ elif isinstance(url, text_type):
3265 try:
3266 url = url.encode()
3267 except UnicodeEncodeError:
3268
3269=== modified file 'breezy/utextwrap.py'
3270--- breezy/utextwrap.py 2017-05-22 00:56:52 +0000
3271+++ breezy/utextwrap.py 2018-06-21 23:03:57 +0000
3272@@ -30,6 +30,7 @@
3273 from unicodedata import east_asian_width as _eawidth
3274
3275 from . import osutils
3276+from .sixish import text_type
3277
3278 __all__ = ["UTextWrapper", "fill", "wrap"]
3279
3280@@ -216,7 +217,7 @@
3281 return lines
3282
3283 def _split(self, text):
3284- chunks = textwrap.TextWrapper._split(self, unicode(text))
3285+ chunks = textwrap.TextWrapper._split(self, text)
3286 cjk_split_chunks = []
3287 for chunk in chunks:
3288 prev_pos = 0
3289@@ -232,7 +233,7 @@
3290
3291 def wrap(self, text):
3292 # ensure text is unicode
3293- return textwrap.TextWrapper.wrap(self, unicode(text))
3294+ return textwrap.TextWrapper.wrap(self, text_type(text))
3295
3296 # -- Convenience interface ---------------------------------------------
3297
3298
3299=== modified file 'breezy/version.py'
3300--- breezy/version.py 2018-05-19 12:57:00 +0000
3301+++ breezy/version.py 2018-06-21 23:03:57 +0000
3302@@ -30,6 +30,7 @@
3303 osutils,
3304 trace,
3305 )
3306+from .sixish import text_type
3307
3308
3309 def show_version(show_config=True, show_copyright=True, to_file=None):
3310@@ -80,7 +81,7 @@
3311 to_file.write(breezy.__path__[0] + '\n')
3312 if show_config:
3313 config_dir = osutils.normpath(config.config_dir()) # use native slashes
3314- if not isinstance(config_dir, unicode):
3315+ if not isinstance(config_dir, text_type):
3316 config_dir = config_dir.decode(osutils.get_user_encoding())
3317 to_file.write(" Breezy configuration: %s\n" % (config_dir,))
3318 to_file.write(" Breezy log file: ")
3319
3320=== modified file 'breezy/win32utils.py'
3321--- breezy/win32utils.py 2017-11-12 13:53:51 +0000
3322+++ breezy/win32utils.py 2018-06-21 23:03:57 +0000
3323@@ -271,7 +271,7 @@
3324 if windir:
3325 return os.path.splitdrive(windir)[0] + '/'
3326 # otherwise C:\ is good enough for 98% users
3327- return unicode('C:/')
3328+ return u'C:/'
3329
3330
3331 def get_user_name():
3332
3333=== modified file 'python3.passing'
3334--- python3.passing 2018-06-15 13:10:28 +0000
3335+++ python3.passing 2018-06-21 23:03:57 +0000
3336@@ -142,6 +142,7 @@
3337 breezy.tests.commands.test_init_repository.TestInitRepository.test_init_repository
3338 breezy.tests.commands.test_init.TestInit.test_init
3339 breezy.tests.commands.test_merge.TestMerge.test_merge
3340+breezy.tests.commands.test_missing.TestMissing.test_missing
3341 breezy.tests.commands.test_pull.TestPull.test_pull
3342 breezy.tests.commands.test_pull.TestPull.test_pull_with_bound_branch
3343 breezy.tests.commands.test_push.TestPush.test_push
3344@@ -280,6 +281,7 @@
3345 breezy.tests.per_branch.test_branch.TestBranch.test_clone_branch_nickname(RemoteBranchFormat-v2)
3346 breezy.tests.per_branch.test_branch.TestBranch.test_clone_branch_nickname(RemoteGitBranchFormat)
3347 breezy.tests.per_branch.test_branch.TestBranch.test_clone_branch_parent(BranchReferenceFormat)
3348+breezy.tests.per_branch.test_branch.TestBranch.test_clone_branch_parent(BzrBranchFormat5)
3349 breezy.tests.per_branch.test_branch.TestBranch.test_clone_branch_parent(BzrBranchFormat6)
3350 breezy.tests.per_branch.test_branch.TestBranch.test_clone_branch_parent(BzrBranchFormat7)
3351 breezy.tests.per_branch.test_branch.TestBranch.test_clone_branch_parent(BzrBranchFormat8)
3352@@ -346,6 +348,10 @@
3353 breezy.tests.per_branch.test_branch.TestBranch.test_create_open_branch_uses_repository(RemoteBranchFormat-default)
3354 breezy.tests.per_branch.test_branch.TestBranch.test_create_open_branch_uses_repository(RemoteGitBranchFormat)
3355 breezy.tests.per_branch.test_branch.TestBranch.test_create_tree_with_merge(BranchReferenceFormat)
3356+breezy.tests.per_branch.test_branch.TestBranch.test_create_tree_with_merge(BzrBranchFormat5)
3357+breezy.tests.per_branch.test_branch.TestBranch.test_create_tree_with_merge(BzrBranchFormat6)
3358+breezy.tests.per_branch.test_branch.TestBranch.test_create_tree_with_merge(BzrBranchFormat7)
3359+breezy.tests.per_branch.test_branch.TestBranch.test_create_tree_with_merge(BzrBranchFormat8)
3360 breezy.tests.per_branch.test_branch.TestBranch.test_create_tree_with_merge(RemoteGitBranchFormat)
3361 breezy.tests.per_branch.test_branch.TestBranch.test_fetch_revisions(BranchReferenceFormat)
3362 breezy.tests.per_branch.test_branch.TestBranch.test_fetch_revisions(BzrBranchFormat5)
3363@@ -437,6 +443,10 @@
3364 breezy.tests.per_branch.test_branch.TestBranch.test_record_initial_ghost(RemoteGitBranchFormat)
3365 breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(BranchReferenceFormat)
3366 breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(BzrBranchFormat4)
3367+breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(BzrBranchFormat5)
3368+breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(BzrBranchFormat6)
3369+breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(BzrBranchFormat7)
3370+breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(BzrBranchFormat8)
3371 breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(LocalGitBranchFormat)
3372 breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(RemoteBranchFormat-default)
3373 breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(RemoteGitBranchFormat)
3374@@ -778,6 +788,10 @@
3375 breezy.tests.per_branch.test_check.TestBranchCheck.test_check_branch_report_results(RemoteBranchFormat-v2)
3376 breezy.tests.per_branch.test_check.TestBranchCheck.test_check_branch_report_results(RemoteGitBranchFormat)
3377 breezy.tests.per_branch.test_check.TestBranchCheck.test_check_detects_invalid_revhistory(BranchReferenceFormat)
3378+breezy.tests.per_branch.test_check.TestBranchCheck.test_check_detects_invalid_revhistory(BzrBranchFormat5)
3379+breezy.tests.per_branch.test_check.TestBranchCheck.test_check_detects_invalid_revhistory(BzrBranchFormat6)
3380+breezy.tests.per_branch.test_check.TestBranchCheck.test_check_detects_invalid_revhistory(BzrBranchFormat7)
3381+breezy.tests.per_branch.test_check.TestBranchCheck.test_check_detects_invalid_revhistory(BzrBranchFormat8)
3382 breezy.tests.per_branch.test_check.TestBranchCheck.test_check_detects_invalid_revhistory(RemoteGitBranchFormat)
3383 breezy.tests.per_branch.test_check.TestBranchCheck.test__get_check_refs(BranchReferenceFormat)
3384 breezy.tests.per_branch.test_check.TestBranchCheck.test__get_check_refs(BzrBranchFormat5)
3385@@ -1091,17 +1105,37 @@
3386 breezy.tests.per_branch.test_hooks.TestPreChangeBranchTip.test_nonempty_history(LocalGitBranchFormat)
3387 breezy.tests.per_branch.test_hooks.TestPreChangeBranchTip.test_nonempty_history(RemoteGitBranchFormat)
3388 breezy.tests.per_branch.test_http.InaccessibleParentTests.test_clone_invalid_parent(BranchReferenceFormat)
3389+breezy.tests.per_branch.test_http.InaccessibleParentTests.test_clone_invalid_parent(BzrBranchFormat4)
3390+breezy.tests.per_branch.test_http.InaccessibleParentTests.test_clone_invalid_parent(BzrBranchFormat5)
3391+breezy.tests.per_branch.test_http.InaccessibleParentTests.test_clone_invalid_parent(BzrBranchFormat6)
3392+breezy.tests.per_branch.test_http.InaccessibleParentTests.test_clone_invalid_parent(BzrBranchFormat7)
3393+breezy.tests.per_branch.test_http.InaccessibleParentTests.test_clone_invalid_parent(BzrBranchFormat8)
3394 breezy.tests.per_branch.test_http.InaccessibleParentTests.test_clone_invalid_parent(RemoteGitBranchFormat)
3395 breezy.tests.per_branch.test_http.InaccessibleParentTests.test_get_parent_invalid(BranchReferenceFormat)
3396+breezy.tests.per_branch.test_http.InaccessibleParentTests.test_get_parent_invalid(BzrBranchFormat4)
3397+breezy.tests.per_branch.test_http.InaccessibleParentTests.test_get_parent_invalid(BzrBranchFormat5)
3398 breezy.tests.per_branch.test_http.InaccessibleParentTests.test_get_parent_invalid(BzrBranchFormat6)
3399 breezy.tests.per_branch.test_http.InaccessibleParentTests.test_get_parent_invalid(BzrBranchFormat7)
3400 breezy.tests.per_branch.test_http.InaccessibleParentTests.test_get_parent_invalid(BzrBranchFormat8)
3401 breezy.tests.per_branch.test_http.InaccessibleParentTests.test_get_parent_invalid(RemoteGitBranchFormat)
3402 breezy.tests.per_branch.test_http.InaccessibleParentTests.test_sprout_invalid_parent(BranchReferenceFormat)
3403+breezy.tests.per_branch.test_http.InaccessibleParentTests.test_sprout_invalid_parent(BzrBranchFormat4)
3404+breezy.tests.per_branch.test_http.InaccessibleParentTests.test_sprout_invalid_parent(BzrBranchFormat5)
3405+breezy.tests.per_branch.test_http.InaccessibleParentTests.test_sprout_invalid_parent(BzrBranchFormat6)
3406+breezy.tests.per_branch.test_http.InaccessibleParentTests.test_sprout_invalid_parent(BzrBranchFormat7)
3407+breezy.tests.per_branch.test_http.InaccessibleParentTests.test_sprout_invalid_parent(BzrBranchFormat8)
3408 breezy.tests.per_branch.test_http.InaccessibleParentTests.test_sprout_invalid_parent(RemoteGitBranchFormat)
3409 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_exclude_ancestry(BranchReferenceFormat)
3410+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_exclude_ancestry(BzrBranchFormat5)
3411+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_exclude_ancestry(BzrBranchFormat6)
3412+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_exclude_ancestry(BzrBranchFormat7)
3413+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_exclude_ancestry(BzrBranchFormat8)
3414 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_exclude_ancestry(RemoteGitBranchFormat)
3415 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_starting_at_embedded_merge(BranchReferenceFormat)
3416+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_starting_at_embedded_merge(BzrBranchFormat5)
3417+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_starting_at_embedded_merge(BzrBranchFormat6)
3418+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_starting_at_embedded_merge(BzrBranchFormat7)
3419+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_starting_at_embedded_merge(BzrBranchFormat8)
3420 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_starting_at_embedded_merge(RemoteGitBranchFormat)
3421 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_with_different_depths_merge(BranchReferenceFormat)
3422 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_with_different_depths_merge(RemoteGitBranchFormat)
3423@@ -1117,35 +1151,91 @@
3424 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_forward(BzrBranchFormat8)
3425 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_forward(RemoteGitBranchFormat)
3426 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range(BranchReferenceFormat)
3427+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range(BzrBranchFormat5)
3428+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range(BzrBranchFormat6)
3429+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range(BzrBranchFormat7)
3430+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range(BzrBranchFormat8)
3431 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_forward(BranchReferenceFormat)
3432+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_forward(BzrBranchFormat5)
3433+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_forward(BzrBranchFormat6)
3434+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_forward(BzrBranchFormat7)
3435+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_forward(BzrBranchFormat8)
3436 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_forward(RemoteGitBranchFormat)
3437 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range(RemoteGitBranchFormat)
3438 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only(BranchReferenceFormat)
3439+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only(BzrBranchFormat5)
3440+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only(BzrBranchFormat6)
3441+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only(BzrBranchFormat7)
3442+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only(BzrBranchFormat8)
3443 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only_forward(BranchReferenceFormat)
3444+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only_forward(BzrBranchFormat5)
3445+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only_forward(BzrBranchFormat6)
3446+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only_forward(BzrBranchFormat7)
3447+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only_forward(BzrBranchFormat8)
3448 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only_forward(RemoteGitBranchFormat)
3449 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only(RemoteGitBranchFormat)
3450 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_exclude(BranchReferenceFormat)
3451 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_exclude_forward(BranchReferenceFormat)
3452+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_exclude_forward(BzrBranchFormat5)
3453+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_exclude_forward(BzrBranchFormat6)
3454+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_exclude_forward(BzrBranchFormat7)
3455+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_exclude_forward(BzrBranchFormat8)
3456 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_exclude_forward(RemoteGitBranchFormat)
3457 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_exclude(RemoteGitBranchFormat)
3458 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include(BranchReferenceFormat)
3459+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include(BzrBranchFormat5)
3460+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include(BzrBranchFormat6)
3461+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include(BzrBranchFormat7)
3462+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include(BzrBranchFormat8)
3463 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include_forward(BranchReferenceFormat)
3464+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include_forward(BzrBranchFormat5)
3465+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include_forward(BzrBranchFormat6)
3466+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include_forward(BzrBranchFormat7)
3467+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include_forward(BzrBranchFormat8)
3468 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include_forward(RemoteGitBranchFormat)
3469 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include(RemoteGitBranchFormat)
3470 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges(BranchReferenceFormat)
3471+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges(BzrBranchFormat5)
3472+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges(BzrBranchFormat6)
3473+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges(BzrBranchFormat7)
3474+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges(BzrBranchFormat8)
3475 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_can_show_non_parents(BranchReferenceFormat)
3476+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_can_show_non_parents(BzrBranchFormat5)
3477+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_can_show_non_parents(BzrBranchFormat6)
3478+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_can_show_non_parents(BzrBranchFormat7)
3479+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_can_show_non_parents(BzrBranchFormat8)
3480 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_can_show_non_parents(RemoteGitBranchFormat)
3481 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_forward(BranchReferenceFormat)
3482+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_forward(BzrBranchFormat5)
3483+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_forward(BzrBranchFormat6)
3484+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_forward(BzrBranchFormat7)
3485+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_forward(BzrBranchFormat8)
3486 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_forward(RemoteGitBranchFormat)
3487 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_ignore_non_parents(BranchReferenceFormat)
3488+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_ignore_non_parents(BzrBranchFormat5)
3489+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_ignore_non_parents(BzrBranchFormat6)
3490+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_ignore_non_parents(BzrBranchFormat7)
3491+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_ignore_non_parents(BzrBranchFormat8)
3492 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_ignore_non_parents(RemoteGitBranchFormat)
3493 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges(RemoteGitBranchFormat)
3494 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted(RemoteGitBranchFormat)
3495 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_exclude(BranchReferenceFormat)
3496+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_exclude(BzrBranchFormat5)
3497+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_exclude(BzrBranchFormat6)
3498+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_exclude(BzrBranchFormat7)
3499+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_exclude(BzrBranchFormat8)
3500 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_exclude(RemoteGitBranchFormat)
3501 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_include(BranchReferenceFormat)
3502+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_include(BzrBranchFormat5)
3503+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_include(BzrBranchFormat6)
3504+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_include(BzrBranchFormat7)
3505+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_include(BzrBranchFormat8)
3506 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_include(RemoteGitBranchFormat)
3507 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_with_merges(BranchReferenceFormat)
3508+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_with_merges(BzrBranchFormat5)
3509+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_with_merges(BzrBranchFormat6)
3510+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_with_merges(BzrBranchFormat7)
3511+breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_with_merges(BzrBranchFormat8)
3512 breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_with_merges(RemoteGitBranchFormat)
3513 breezy.tests.per_branch.test_last_revision_info.TestLastRevisionInfo.test_empty_branch(BranchReferenceFormat)
3514 breezy.tests.per_branch.test_last_revision_info.TestLastRevisionInfo.test_empty_branch(BzrBranchFormat4)
3515@@ -1654,6 +1744,10 @@
3516 breezy.tests.per_branch.test_reconcile.TestBranchReconcile.test_reconcile_supports_thorough(BzrBranchFormat8)
3517 breezy.tests.per_branch.test_reconcile.TestBranchReconcile.test_reconcile_supports_thorough(RemoteGitBranchFormat)
3518 breezy.tests.per_branch.test_revision_id_to_dotted_revno.TestRevisionIdToDottedRevno.test_lookup_dotted_revno(BranchReferenceFormat)
3519+breezy.tests.per_branch.test_revision_id_to_dotted_revno.TestRevisionIdToDottedRevno.test_lookup_dotted_revno(BzrBranchFormat5)
3520+breezy.tests.per_branch.test_revision_id_to_dotted_revno.TestRevisionIdToDottedRevno.test_lookup_dotted_revno(BzrBranchFormat6)
3521+breezy.tests.per_branch.test_revision_id_to_dotted_revno.TestRevisionIdToDottedRevno.test_lookup_dotted_revno(BzrBranchFormat7)
3522+breezy.tests.per_branch.test_revision_id_to_dotted_revno.TestRevisionIdToDottedRevno.test_lookup_dotted_revno(BzrBranchFormat8)
3523 breezy.tests.per_branch.test_revision_id_to_dotted_revno.TestRevisionIdToDottedRevno.test_lookup_dotted_revno(RemoteGitBranchFormat)
3524 breezy.tests.per_branch.test_revision_id_to_revno.TestRevisionIdToRevno.test_empty(BranchReferenceFormat)
3525 breezy.tests.per_branch.test_revision_id_to_revno.TestRevisionIdToRevno.test_empty(RemoteBranchFormat-default)
3526@@ -1676,6 +1770,8 @@
3527 breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_nickname(RemoteBranchFormat-v2)
3528 breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_nickname(RemoteGitBranchFormat)
3529 breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_parent(BranchReferenceFormat)
3530+breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_parent(BzrBranchFormat4)
3531+breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_parent(BzrBranchFormat5)
3532 breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_parent(BzrBranchFormat6)
3533 breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_parent(BzrBranchFormat7)
3534 breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_parent(BzrBranchFormat8)
3535@@ -2464,10 +2560,12 @@
3536 breezy.tests.per_interrepository.test_interrepository.TestInterRepository.test_interrepository_get_returns_correct_optimiser(InterSameDataRepository,RepositoryFormatKnit3,RepositoryFormatKnit3)
3537 breezy.tests.per_intertree.test_compare.TestCompare.test_abc_content_to_empty(InterDirStateTree(C))
3538 breezy.tests.per_intertree.test_compare.TestCompare.test_abc_content_to_empty(InterTree)
3539+breezy.tests.per_intertree.test_compare.TestCompare.test_abc_content_to_empty(InterTree(PreviewTree))
3540 breezy.tests.per_intertree.test_compare.TestCompare.test_compare_empty_trees(InterDirStateTree(C))
3541 breezy.tests.per_intertree.test_compare.TestCompare.test_compare_empty_trees(InterDirStateTree(PY))
3542 breezy.tests.per_intertree.test_compare.TestCompare.test_compare_empty_trees(InterTree)
3543 breezy.tests.per_intertree.test_compare.TestCompare.test_compare_empty_trees(InterTree(CHKInventory))
3544+breezy.tests.per_intertree.test_compare.TestCompare.test_compare_empty_trees(InterTree(PreviewTree))
3545 breezy.tests.per_intertree.test_compare.TestCompare.test_dangling(InterDirStateTree(C))
3546 breezy.tests.per_intertree.test_compare.TestCompare.test_dangling(InterDirStateTree(PY))
3547 breezy.tests.per_intertree.test_compare.TestCompare.test_dangling(InterTree(CHKInventory))
3548@@ -2475,18 +2573,23 @@
3549 breezy.tests.per_intertree.test_compare.TestCompare.test_default_ignores_unversioned_files(InterDirStateTree(PY))
3550 breezy.tests.per_intertree.test_compare.TestCompare.test_default_ignores_unversioned_files(InterTree)
3551 breezy.tests.per_intertree.test_compare.TestCompare.test_default_ignores_unversioned_files(InterTree(CHKInventory))
3552+breezy.tests.per_intertree.test_compare.TestCompare.test_default_ignores_unversioned_files(InterTree(PreviewTree))
3553 breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_a_and_c_only(InterDirStateTree(C))
3554 breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_a_only(InterDirStateTree(C))
3555 breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_b_only(InterDirStateTree(C))
3556 breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_c_only(InterDirStateTree(C))
3557 breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content(InterDirStateTree(C))
3558 breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content(InterTree)
3559+breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content(InterTree(PreviewTree))
3560 breezy.tests.per_intertree.test_compare.TestCompare.test_extra_trees_finds_ids(InterDirStateTree(C))
3561 breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename_and_meta_modification(InterDirStateTree(C))
3562 breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename_and_meta_modification(InterTree)
3563+breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename_and_meta_modification(InterTree(PreviewTree))
3564 breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename(InterTree)
3565+breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename(InterTree(PreviewTree))
3566 breezy.tests.per_intertree.test_compare.TestCompare.test_meta_modification(InterDirStateTree(C))
3567 breezy.tests.per_intertree.test_compare.TestCompare.test_meta_modification(InterTree)
3568+breezy.tests.per_intertree.test_compare.TestCompare.test_meta_modification(InterTree(PreviewTree))
3569 breezy.tests.per_intertree.test_compare.TestCompare.test_require_versioned(InterDirStateTree(C))
3570 breezy.tests.per_intertree.test_compare.TestCompare.test_require_versioned(InterDirStateTree(PY))
3571 breezy.tests.per_intertree.test_compare.TestCompare.test_require_versioned(InterTree)
3572@@ -2495,16 +2598,21 @@
3573 breezy.tests.per_intertree.test_compare.TestCompare.test_unversioned_paths_in_tree(InterDirStateTree(PY))
3574 breezy.tests.per_intertree.test_compare.TestCompare.test_unversioned_paths_in_tree(InterTree)
3575 breezy.tests.per_intertree.test_compare.TestCompare.test_unversioned_paths_in_tree(InterTree(CHKInventory))
3576+breezy.tests.per_intertree.test_compare.TestCompare.test_unversioned_paths_in_tree(InterTree(PreviewTree))
3577 breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_a_only(InterDirStateTree(C))
3578 breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_a_only(InterTree)
3579+breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_a_only(InterTree(PreviewTree))
3580 breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_b_only(InterDirStateTree(C))
3581 breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_b_only(InterTree)
3582+breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_b_only(InterTree(PreviewTree))
3583 breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty(InterDirStateTree(C))
3584 breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty(InterTree)
3585+breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty(InterTree(PreviewTree))
3586 breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_empty_trees(InterDirStateTree(C))
3587 breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_empty_trees(InterDirStateTree(PY))
3588 breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_empty_trees(InterTree)
3589 breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_empty_trees(InterTree(CHKInventory))
3590+breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_empty_trees(InterTree(PreviewTree))
3591 breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_subtrees(InterDirStateTree(C))
3592 breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_subtrees(InterDirStateTree(PY))
3593 breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_subtrees(InterTree)
3594@@ -2513,6 +2621,7 @@
3595 breezy.tests.per_intertree.test_compare.TestIterChanges.test_default_ignores_unversioned_files(InterDirStateTree(C))
3596 breezy.tests.per_intertree.test_compare.TestIterChanges.test_default_ignores_unversioned_files(InterTree)
3597 breezy.tests.per_intertree.test_compare.TestIterChanges.test_default_ignores_unversioned_files(InterTree(CHKInventory))
3598+breezy.tests.per_intertree.test_compare.TestIterChanges.test_default_ignores_unversioned_files(InterTree(PreviewTree))
3599 breezy.tests.per_intertree.test_compare.TestIterChanges.test_deleted_and_unknown(InterDirStateTree(C))
3600 breezy.tests.per_intertree.test_compare.TestIterChanges.test_deleted_and_unknown(InterTree(CHKInventory))
3601 breezy.tests.per_intertree.test_compare.TestIterChanges.test_disk_in_subtrees_skipped(InterDirStateTree(C))
3602@@ -2520,28 +2629,37 @@
3603 breezy.tests.per_intertree.test_compare.TestIterChanges.test_disk_in_subtrees_skipped(InterTree(CHKInventory))
3604 breezy.tests.per_intertree.test_compare.TestIterChanges.test_disk_in_subtrees_skipped(InterTree(PreviewTree))
3605 breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_dir(InterTree)
3606+breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_dir(InterTree(PreviewTree))
3607 breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_specific_files(InterDirStateTree(C))
3608 breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_specific_files(InterDirStateTree(PY))
3609 breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_specific_files(InterTree)
3610+breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_specific_files(InterTree(PreviewTree))
3611 breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content_a_and_c_only(InterDirStateTree(C))
3612 breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content_a_only(InterDirStateTree(C))
3613 breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content(InterDirStateTree(C))
3614 breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content(InterTree)
3615+breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content(InterTree(PreviewTree))
3616 breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_becomes_unversionable_bug_438569(InterDirStateTree(C))
3617 breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_becomes_unversionable_bug_438569(InterDirStateTree(PY))
3618 breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_becomes_unversionable_bug_438569(InterTree)
3619 breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_becomes_unversionable_bug_438569(InterTree(CHKInventory))
3620+breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_becomes_unversionable_bug_438569(InterTree(PreviewTree))
3621 breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename_and_meta_modification(InterDirStateTree(C))
3622 breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename_and_meta_modification(InterTree)
3623+breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename_and_meta_modification(InterTree(PreviewTree))
3624 breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename(InterTree)
3625+breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename(InterTree(PreviewTree))
3626 breezy.tests.per_intertree.test_compare.TestIterChanges.test_meta_modification(InterDirStateTree(C))
3627 breezy.tests.per_intertree.test_compare.TestIterChanges.test_meta_modification(InterTree)
3628+breezy.tests.per_intertree.test_compare.TestIterChanges.test_meta_modification(InterTree(PreviewTree))
3629 breezy.tests.per_intertree.test_compare.TestIterChanges.test_missing_and_renamed(InterDirStateTree(C))
3630 breezy.tests.per_intertree.test_compare.TestIterChanges.test_missing_and_renamed(InterTree(CHKInventory))
3631 breezy.tests.per_intertree.test_compare.TestIterChanges.test_missing_in_target(InterDirStateTree(C))
3632 breezy.tests.per_intertree.test_compare.TestIterChanges.test_missing_in_target(InterTree)
3633+breezy.tests.per_intertree.test_compare.TestIterChanges.test_missing_in_target(InterTree(PreviewTree))
3634 breezy.tests.per_intertree.test_compare.TestIterChanges.test_no_specific_files(InterDirStateTree(C))
3635 breezy.tests.per_intertree.test_compare.TestIterChanges.test_no_specific_files(InterTree)
3636+breezy.tests.per_intertree.test_compare.TestIterChanges.test_no_specific_files(InterTree(PreviewTree))
3637 breezy.tests.per_intertree.test_compare.TestIterChanges.test_only_in_source_and_missing(InterDirStateTree(C))
3638 breezy.tests.per_intertree.test_compare.TestIterChanges.test_only_in_source_and_missing(InterDirStateTree(PY))
3639 breezy.tests.per_intertree.test_compare.TestIterChanges.test_only_in_source_and_missing(InterTree(CHKInventory))
3640@@ -2551,32 +2669,43 @@
3641 breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_added(InterDirStateTree(C))
3642 breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_added(InterTree)
3643 breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_added(InterTree(CHKInventory))
3644+breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_added(InterTree(PreviewTree))
3645 breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_unknown(InterDirStateTree(C))
3646 breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_unknown(InterTree(CHKInventory))
3647 breezy.tests.per_intertree.test_compare.TestIterChanges.test_rename_over_deleted(InterDirStateTree(C))
3648 breezy.tests.per_intertree.test_compare.TestIterChanges.test_rename_over_deleted(InterTree)
3649 breezy.tests.per_intertree.test_compare.TestIterChanges.test_rename_over_deleted(InterTree(CHKInventory))
3650+breezy.tests.per_intertree.test_compare.TestIterChanges.test_rename_over_deleted(InterTree(PreviewTree))
3651+breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_content_modification_grabs_parents(InterDirStateTree(C))
3652+breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_content_modification_grabs_parents_root_changes(InterDirStateTree(C))
3653+breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_becomes_file(InterDirStateTree(C))
3654 breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_child_collides_with_unselected_new(InterDirStateTree(C))
3655 breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_child_dir_stops_being_dir(InterDirStateTree(C))
3656+breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_same_path_new_parent(InterDirStateTree(C))
3657 breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_with_rename_under_new_dir_reports_new_dir(InterDirStateTree(C))
3658 breezy.tests.per_intertree.test_compare.TestIterChanges.test_trees_with_deleted_dir(InterDirStateTree(C))
3659 breezy.tests.per_intertree.test_compare.TestIterChanges.test_trees_with_deleted_dir(InterTree)
3660+breezy.tests.per_intertree.test_compare.TestIterChanges.test_trees_with_deleted_dir(InterTree(PreviewTree))
3661 breezy.tests.per_intertree.test_compare.TestIterChanges.test_trees_with_special_names(InterDirStateTree(C))
3662 breezy.tests.per_intertree.test_compare.TestIterChanges.test_unknown_empty_dir(InterDirStateTree(C))
3663 breezy.tests.per_intertree.test_compare.TestIterChanges.test_unknown_empty_dir(InterTree)
3664+breezy.tests.per_intertree.test_compare.TestIterChanges.test_unknown_empty_dir(InterTree(PreviewTree))
3665 breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_target_matching_source_old_names(InterDirStateTree(C))
3666 breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_target_matching_source_old_names(InterTree(CHKInventory))
3667 breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree(InterDirStateTree(C))
3668 breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree(InterDirStateTree(PY))
3669 breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree(InterTree)
3670 breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree(InterTree(CHKInventory))
3671+breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree(InterTree(PreviewTree))
3672 breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree_specific_files(InterDirStateTree(C))
3673 breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree_specific_files(InterTree)
3674 breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree_specific_files(InterTree(CHKInventory))
3675+breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree_specific_files(InterTree(PreviewTree))
3676 breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_subtree_only_emits_root(InterDirStateTree(C))
3677 breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_subtree_only_emits_root(InterDirStateTree(PY))
3678 breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_subtree_only_emits_root(InterTree)
3679 breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_subtree_only_emits_root(InterTree(CHKInventory))
3680+breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_subtree_only_emits_root(InterTree(PreviewTree))
3681 breezy.tests.per_intertree.test_file_content_matches.TestFileContentMatches.test_different_contents_and_same_verifier(InterDirStateTree(C))
3682 breezy.tests.per_intertree.test_file_content_matches.TestFileContentMatches.test_different_contents_and_same_verifier(InterDirStateTree(PY))
3683 breezy.tests.per_intertree.test_file_content_matches.TestFileContentMatches.test_different_contents_and_same_verifier(InterTree)
3684@@ -2673,6 +2802,13 @@
3685 breezy.tests.per_pack_repository.TestPackRepository.test_concurrent_pack_during_get_record_reloads(2a)
3686 breezy.tests.per_pack_repository.TestPackRepository.test_concurrent_pack_during_get_record_reloads(pack-0.92)
3687 breezy.tests.per_pack_repository.TestPackRepository.test_concurrent_pack_during_get_record_reloads(pack-0.92-subtree)
3688+breezy.tests.per_pack_repository.TestPackRepository.test_fail_obsolete_deletion(1.6)
3689+breezy.tests.per_pack_repository.TestPackRepository.test_fail_obsolete_deletion(1.6.1-rich-root)
3690+breezy.tests.per_pack_repository.TestPackRepository.test_fail_obsolete_deletion(1.9)
3691+breezy.tests.per_pack_repository.TestPackRepository.test_fail_obsolete_deletion(1.9-rich-root)
3692+breezy.tests.per_pack_repository.TestPackRepository.test_fail_obsolete_deletion(2a)
3693+breezy.tests.per_pack_repository.TestPackRepository.test_fail_obsolete_deletion(pack-0.92)
3694+breezy.tests.per_pack_repository.TestPackRepository.test_fail_obsolete_deletion(pack-0.92-subtree)
3695 breezy.tests.per_pack_repository.TestPackRepository.test_fetch_without_find_ghosts_ignores_ghosts(2a)
3696 breezy.tests.per_pack_repository.TestPackRepository.test_lock_write_does_not_physically_lock(1.6)
3697 breezy.tests.per_pack_repository.TestPackRepository.test_lock_write_does_not_physically_lock(1.6.1-rich-root)
3698@@ -4331,6 +4467,8 @@
3699 breezy.tests.per_repository.test_repository.TestRepository.test_clone_to_hpss(RepositoryFormat4)
3700 breezy.tests.per_repository.test_repository.TestRepository.test_clone_to_hpss(RepositoryFormat5)
3701 breezy.tests.per_repository.test_repository.TestRepository.test_clone_to_hpss(RepositoryFormat6)
3702+breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_message(RepositoryFormat2a)
3703+breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_message(RepositoryFormat2aSubtree)
3704 breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_message(RepositoryFormat4)
3705 breezy.tests.per_repository.test_repository.TestRepository.test_create_repository(RemoteRepositoryFormat-default)
3706 breezy.tests.per_repository.test_repository.TestRepository.test_create_repository(RemoteRepositoryFormat-v2)
3707@@ -5882,18 +6020,42 @@
3708 breezy.tests.per_transport.TransportTests.test_connection_sharing(TransportLogDecorator,LogDecoratorServer)
3709 breezy.tests.per_transport.TransportTests.test_connection_sharing(TransportTraceDecorator,TraceServer)
3710 breezy.tests.per_transport.TransportTests.test_connection_sharing(UnlistableTransportDecorator,UnlistableServer)
3711+breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(ChrootTransport,TestingChrootServer)
3712+breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(FakeNFSTransportDecorator,FakeNFSServer)
3713+breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(FakeVFATTransportDecorator,FakeVFATServer)
3714 breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(FtpTransport,UnavailableFTPTestServer)
3715 breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(HTTPS_transport,HTTPSServer)
3716 breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(HTTPS_urllib_transport,HTTPSServer_urllib)
3717 breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(HttpTransport,HttpServer)
3718 breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(HttpTransport_urllib,HttpServer_urllib)
3719+breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(LocalTransport,LocalURLServer)
3720+breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(MemoryTransport,MemoryServer)
3721+breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(NoSmartTransportDecorator,NoSmartTransportServer)
3722+breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(PathFilteringTransport,TestingPathFilteringServer)
3723 breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(ReadonlyTransportDecorator,ReadonlyServer)
3724+breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(RemoteTCPTransport,SmartTCPServer_for_testing)
3725+breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(SFTPTransport,SFTPAbsoluteServer)
3726+breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(SFTPTransport,SFTPHomeDirServer)
3727+breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(SFTPTransport,SFTPSiblingAbsoluteServer)
3728+breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(TransportLogDecorator,LogDecoratorServer)
3729+breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(TransportTraceDecorator,TraceServer)
3730+breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(UnlistableTransportDecorator,UnlistableServer)
3731+breezy.tests.per_transport.TransportTests.test_copy(ChrootTransport,TestingChrootServer)
3732+breezy.tests.per_transport.TransportTests.test_copy(FakeNFSTransportDecorator,FakeNFSServer)
3733+breezy.tests.per_transport.TransportTests.test_copy(FakeVFATTransportDecorator,FakeVFATServer)
3734 breezy.tests.per_transport.TransportTests.test_copy(FtpTransport,UnavailableFTPTestServer)
3735 breezy.tests.per_transport.TransportTests.test_copy(HTTPS_transport,HTTPSServer)
3736 breezy.tests.per_transport.TransportTests.test_copy(HTTPS_urllib_transport,HTTPSServer_urllib)
3737 breezy.tests.per_transport.TransportTests.test_copy(HttpTransport,HttpServer)
3738 breezy.tests.per_transport.TransportTests.test_copy(HttpTransport_urllib,HttpServer_urllib)
3739+breezy.tests.per_transport.TransportTests.test_copy(LocalTransport,LocalURLServer)
3740+breezy.tests.per_transport.TransportTests.test_copy(MemoryTransport,MemoryServer)
3741+breezy.tests.per_transport.TransportTests.test_copy(NoSmartTransportDecorator,NoSmartTransportServer)
3742+breezy.tests.per_transport.TransportTests.test_copy(PathFilteringTransport,TestingPathFilteringServer)
3743 breezy.tests.per_transport.TransportTests.test_copy(ReadonlyTransportDecorator,ReadonlyServer)
3744+breezy.tests.per_transport.TransportTests.test_copy(SFTPTransport,SFTPAbsoluteServer)
3745+breezy.tests.per_transport.TransportTests.test_copy(SFTPTransport,SFTPHomeDirServer)
3746+breezy.tests.per_transport.TransportTests.test_copy(SFTPTransport,SFTPSiblingAbsoluteServer)
3747 breezy.tests.per_transport.TransportTests.test_copy_to(ChrootTransport,TestingChrootServer)
3748 breezy.tests.per_transport.TransportTests.test_copy_to(FakeNFSTransportDecorator,FakeNFSServer)
3749 breezy.tests.per_transport.TransportTests.test_copy_to(FakeVFATTransportDecorator,FakeVFATServer)
3750@@ -5910,6 +6072,8 @@
3751 breezy.tests.per_transport.TransportTests.test_copy_to(TransportLogDecorator,LogDecoratorServer)
3752 breezy.tests.per_transport.TransportTests.test_copy_to(TransportTraceDecorator,TraceServer)
3753 breezy.tests.per_transport.TransportTests.test_copy_to(UnlistableTransportDecorator,UnlistableServer)
3754+breezy.tests.per_transport.TransportTests.test_copy(TransportLogDecorator,LogDecoratorServer)
3755+breezy.tests.per_transport.TransportTests.test_copy(TransportTraceDecorator,TraceServer)
3756 breezy.tests.per_transport.TransportTests.test_copy_tree(ChrootTransport,TestingChrootServer)
3757 breezy.tests.per_transport.TransportTests.test_copy_tree(FakeNFSTransportDecorator,FakeNFSServer)
3758 breezy.tests.per_transport.TransportTests.test_copy_tree(FakeVFATTransportDecorator,FakeVFATServer)
3759@@ -5948,6 +6112,7 @@
3760 breezy.tests.per_transport.TransportTests.test_copy_tree(TransportLogDecorator,LogDecoratorServer)
3761 breezy.tests.per_transport.TransportTests.test_copy_tree(TransportTraceDecorator,TraceServer)
3762 breezy.tests.per_transport.TransportTests.test_copy_tree(UnlistableTransportDecorator,UnlistableServer)
3763+breezy.tests.per_transport.TransportTests.test_copy(UnlistableTransportDecorator,UnlistableServer)
3764 breezy.tests.per_transport.TransportTests.test_create_prefix(ChrootTransport,TestingChrootServer)
3765 breezy.tests.per_transport.TransportTests.test_create_prefix(FakeNFSTransportDecorator,FakeNFSServer)
3766 breezy.tests.per_transport.TransportTests.test_create_prefix(FakeVFATTransportDecorator,FakeVFATServer)
3767@@ -6081,7 +6246,21 @@
3768 breezy.tests.per_transport.TransportTests.test_external_url(TransportLogDecorator,LogDecoratorServer)
3769 breezy.tests.per_transport.TransportTests.test_external_url(TransportTraceDecorator,TraceServer)
3770 breezy.tests.per_transport.TransportTests.test_external_url(UnlistableTransportDecorator,UnlistableServer)
3771+breezy.tests.per_transport.TransportTests.test_get_bytes(ChrootTransport,TestingChrootServer)
3772+breezy.tests.per_transport.TransportTests.test_get_bytes(FakeNFSTransportDecorator,FakeNFSServer)
3773+breezy.tests.per_transport.TransportTests.test_get_bytes(FakeVFATTransportDecorator,FakeVFATServer)
3774 breezy.tests.per_transport.TransportTests.test_get_bytes(FtpTransport,UnavailableFTPTestServer)
3775+breezy.tests.per_transport.TransportTests.test_get_bytes(LocalTransport,LocalURLServer)
3776+breezy.tests.per_transport.TransportTests.test_get_bytes(MemoryTransport,MemoryServer)
3777+breezy.tests.per_transport.TransportTests.test_get_bytes(NoSmartTransportDecorator,NoSmartTransportServer)
3778+breezy.tests.per_transport.TransportTests.test_get_bytes(PathFilteringTransport,TestingPathFilteringServer)
3779+breezy.tests.per_transport.TransportTests.test_get_bytes(ReadonlyTransportDecorator,ReadonlyServer)
3780+breezy.tests.per_transport.TransportTests.test_get_bytes(RemoteTCPTransport,SmartTCPServer_for_testing)
3781+breezy.tests.per_transport.TransportTests.test_get_bytes(SFTPTransport,SFTPAbsoluteServer)
3782+breezy.tests.per_transport.TransportTests.test_get_bytes(SFTPTransport,SFTPHomeDirServer)
3783+breezy.tests.per_transport.TransportTests.test_get_bytes(SFTPTransport,SFTPSiblingAbsoluteServer)
3784+breezy.tests.per_transport.TransportTests.test_get_bytes(TransportLogDecorator,LogDecoratorServer)
3785+breezy.tests.per_transport.TransportTests.test_get_bytes(TransportTraceDecorator,TraceServer)
3786 breezy.tests.per_transport.TransportTests.test_get_bytes_unknown_file(ChrootTransport,TestingChrootServer)
3787 breezy.tests.per_transport.TransportTests.test_get_bytes_unknown_file(FakeNFSTransportDecorator,FakeNFSServer)
3788 breezy.tests.per_transport.TransportTests.test_get_bytes_unknown_file(FakeVFATTransportDecorator,FakeVFATServer)
3789@@ -6097,12 +6276,14 @@
3790 breezy.tests.per_transport.TransportTests.test_get_bytes_unknown_file(TransportLogDecorator,LogDecoratorServer)
3791 breezy.tests.per_transport.TransportTests.test_get_bytes_unknown_file(TransportTraceDecorator,TraceServer)
3792 breezy.tests.per_transport.TransportTests.test_get_bytes_unknown_file(UnlistableTransportDecorator,UnlistableServer)
3793+breezy.tests.per_transport.TransportTests.test_get_bytes(UnlistableTransportDecorator,UnlistableServer)
3794 breezy.tests.per_transport.TransportTests.test_get_bytes_with_open_write_stream_sees_all_content(FtpTransport,UnavailableFTPTestServer)
3795 breezy.tests.per_transport.TransportTests.test_get_bytes_with_open_write_stream_sees_all_content(HTTPS_transport,HTTPSServer)
3796 breezy.tests.per_transport.TransportTests.test_get_bytes_with_open_write_stream_sees_all_content(HTTPS_urllib_transport,HTTPSServer_urllib)
3797 breezy.tests.per_transport.TransportTests.test_get_bytes_with_open_write_stream_sees_all_content(HttpTransport,HttpServer)
3798 breezy.tests.per_transport.TransportTests.test_get_bytes_with_open_write_stream_sees_all_content(HttpTransport_urllib,HttpServer_urllib)
3799 breezy.tests.per_transport.TransportTests.test_get_bytes_with_open_write_stream_sees_all_content(ReadonlyTransportDecorator,ReadonlyServer)
3800+breezy.tests.per_transport.TransportTests.test_get(ChrootTransport,TestingChrootServer)
3801 breezy.tests.per_transport.TransportTests.test_get_directory_read_gives_ReadError(ChrootTransport,TestingChrootServer)
3802 breezy.tests.per_transport.TransportTests.test_get_directory_read_gives_ReadError(FakeNFSTransportDecorator,FakeNFSServer)
3803 breezy.tests.per_transport.TransportTests.test_get_directory_read_gives_ReadError(FakeVFATTransportDecorator,FakeVFATServer)
3804@@ -6120,7 +6301,18 @@
3805 breezy.tests.per_transport.TransportTests.test_get_directory_read_gives_ReadError(TransportLogDecorator,LogDecoratorServer)
3806 breezy.tests.per_transport.TransportTests.test_get_directory_read_gives_ReadError(TransportTraceDecorator,TraceServer)
3807 breezy.tests.per_transport.TransportTests.test_get_directory_read_gives_ReadError(UnlistableTransportDecorator,UnlistableServer)
3808+breezy.tests.per_transport.TransportTests.test_get(FakeNFSTransportDecorator,FakeNFSServer)
3809+breezy.tests.per_transport.TransportTests.test_get(FakeVFATTransportDecorator,FakeVFATServer)
3810 breezy.tests.per_transport.TransportTests.test_get(FtpTransport,UnavailableFTPTestServer)
3811+breezy.tests.per_transport.TransportTests.test_get(LocalTransport,LocalURLServer)
3812+breezy.tests.per_transport.TransportTests.test_get(MemoryTransport,MemoryServer)
3813+breezy.tests.per_transport.TransportTests.test_get(NoSmartTransportDecorator,NoSmartTransportServer)
3814+breezy.tests.per_transport.TransportTests.test_get(PathFilteringTransport,TestingPathFilteringServer)
3815+breezy.tests.per_transport.TransportTests.test_get(ReadonlyTransportDecorator,ReadonlyServer)
3816+breezy.tests.per_transport.TransportTests.test_get(RemoteTCPTransport,SmartTCPServer_for_testing)
3817+breezy.tests.per_transport.TransportTests.test_get(SFTPTransport,SFTPAbsoluteServer)
3818+breezy.tests.per_transport.TransportTests.test_get(SFTPTransport,SFTPHomeDirServer)
3819+breezy.tests.per_transport.TransportTests.test_get(SFTPTransport,SFTPSiblingAbsoluteServer)
3820 breezy.tests.per_transport.TransportTests.test_get_smart_medium(ChrootTransport,TestingChrootServer)
3821 breezy.tests.per_transport.TransportTests.test_get_smart_medium(FakeNFSTransportDecorator,FakeNFSServer)
3822 breezy.tests.per_transport.TransportTests.test_get_smart_medium(FakeVFATTransportDecorator,FakeVFATServer)
3823@@ -6141,6 +6333,8 @@
3824 breezy.tests.per_transport.TransportTests.test_get_smart_medium(TransportLogDecorator,LogDecoratorServer)
3825 breezy.tests.per_transport.TransportTests.test_get_smart_medium(TransportTraceDecorator,TraceServer)
3826 breezy.tests.per_transport.TransportTests.test_get_smart_medium(UnlistableTransportDecorator,UnlistableServer)
3827+breezy.tests.per_transport.TransportTests.test_get(TransportLogDecorator,LogDecoratorServer)
3828+breezy.tests.per_transport.TransportTests.test_get(TransportTraceDecorator,TraceServer)
3829 breezy.tests.per_transport.TransportTests.test_get_unknown_file(ChrootTransport,TestingChrootServer)
3830 breezy.tests.per_transport.TransportTests.test_get_unknown_file(FakeNFSTransportDecorator,FakeNFSServer)
3831 breezy.tests.per_transport.TransportTests.test_get_unknown_file(FakeVFATTransportDecorator,FakeVFATServer)
3832@@ -6156,6 +6350,7 @@
3833 breezy.tests.per_transport.TransportTests.test_get_unknown_file(TransportLogDecorator,LogDecoratorServer)
3834 breezy.tests.per_transport.TransportTests.test_get_unknown_file(TransportTraceDecorator,TraceServer)
3835 breezy.tests.per_transport.TransportTests.test_get_unknown_file(UnlistableTransportDecorator,UnlistableServer)
3836+breezy.tests.per_transport.TransportTests.test_get(UnlistableTransportDecorator,UnlistableServer)
3837 breezy.tests.per_transport.TransportTests.test_get_with_open_write_stream_sees_all_content(FtpTransport,UnavailableFTPTestServer)
3838 breezy.tests.per_transport.TransportTests.test_get_with_open_write_stream_sees_all_content(HTTPS_transport,HTTPSServer)
3839 breezy.tests.per_transport.TransportTests.test_get_with_open_write_stream_sees_all_content(HTTPS_urllib_transport,HTTPSServer_urllib)
3840@@ -6356,11 +6551,18 @@
3841 breezy.tests.per_transport.TransportTests.test_lock_write(TransportLogDecorator,LogDecoratorServer)
3842 breezy.tests.per_transport.TransportTests.test_lock_write(TransportTraceDecorator,TraceServer)
3843 breezy.tests.per_transport.TransportTests.test_lock_write(UnlistableTransportDecorator,UnlistableServer)
3844+breezy.tests.per_transport.TransportTests.test_mkdir(ChrootTransport,TestingChrootServer)
3845+breezy.tests.per_transport.TransportTests.test_mkdir(FakeNFSTransportDecorator,FakeNFSServer)
3846+breezy.tests.per_transport.TransportTests.test_mkdir(FakeVFATTransportDecorator,FakeVFATServer)
3847 breezy.tests.per_transport.TransportTests.test_mkdir(FtpTransport,UnavailableFTPTestServer)
3848 breezy.tests.per_transport.TransportTests.test_mkdir(HTTPS_transport,HTTPSServer)
3849 breezy.tests.per_transport.TransportTests.test_mkdir(HTTPS_urllib_transport,HTTPSServer_urllib)
3850 breezy.tests.per_transport.TransportTests.test_mkdir(HttpTransport,HttpServer)
3851 breezy.tests.per_transport.TransportTests.test_mkdir(HttpTransport_urllib,HttpServer_urllib)
3852+breezy.tests.per_transport.TransportTests.test_mkdir(LocalTransport,LocalURLServer)
3853+breezy.tests.per_transport.TransportTests.test_mkdir(MemoryTransport,MemoryServer)
3854+breezy.tests.per_transport.TransportTests.test_mkdir(NoSmartTransportDecorator,NoSmartTransportServer)
3855+breezy.tests.per_transport.TransportTests.test_mkdir(PathFilteringTransport,TestingPathFilteringServer)
3856 breezy.tests.per_transport.TransportTests.test_mkdir_permissions(ChrootTransport,TestingChrootServer)
3857 breezy.tests.per_transport.TransportTests.test_mkdir_permissions(FakeNFSTransportDecorator,FakeNFSServer)
3858 breezy.tests.per_transport.TransportTests.test_mkdir_permissions(FakeVFATTransportDecorator,FakeVFATServer)
3859@@ -6382,12 +6584,33 @@
3860 breezy.tests.per_transport.TransportTests.test_mkdir_permissions(TransportTraceDecorator,TraceServer)
3861 breezy.tests.per_transport.TransportTests.test_mkdir_permissions(UnlistableTransportDecorator,UnlistableServer)
3862 breezy.tests.per_transport.TransportTests.test_mkdir(ReadonlyTransportDecorator,ReadonlyServer)
3863+breezy.tests.per_transport.TransportTests.test_mkdir(RemoteTCPTransport,SmartTCPServer_for_testing)
3864+breezy.tests.per_transport.TransportTests.test_mkdir(SFTPTransport,SFTPAbsoluteServer)
3865+breezy.tests.per_transport.TransportTests.test_mkdir(SFTPTransport,SFTPHomeDirServer)
3866+breezy.tests.per_transport.TransportTests.test_mkdir(SFTPTransport,SFTPSiblingAbsoluteServer)
3867+breezy.tests.per_transport.TransportTests.test_mkdir(TransportLogDecorator,LogDecoratorServer)
3868+breezy.tests.per_transport.TransportTests.test_mkdir(TransportTraceDecorator,TraceServer)
3869+breezy.tests.per_transport.TransportTests.test_mkdir(UnlistableTransportDecorator,UnlistableServer)
3870+breezy.tests.per_transport.TransportTests.test_move(ChrootTransport,TestingChrootServer)
3871+breezy.tests.per_transport.TransportTests.test_move(FakeNFSTransportDecorator,FakeNFSServer)
3872+breezy.tests.per_transport.TransportTests.test_move(FakeVFATTransportDecorator,FakeVFATServer)
3873 breezy.tests.per_transport.TransportTests.test_move(FtpTransport,UnavailableFTPTestServer)
3874 breezy.tests.per_transport.TransportTests.test_move(HTTPS_transport,HTTPSServer)
3875 breezy.tests.per_transport.TransportTests.test_move(HTTPS_urllib_transport,HTTPSServer_urllib)
3876 breezy.tests.per_transport.TransportTests.test_move(HttpTransport,HttpServer)
3877 breezy.tests.per_transport.TransportTests.test_move(HttpTransport_urllib,HttpServer_urllib)
3878+breezy.tests.per_transport.TransportTests.test_move(LocalTransport,LocalURLServer)
3879+breezy.tests.per_transport.TransportTests.test_move(MemoryTransport,MemoryServer)
3880+breezy.tests.per_transport.TransportTests.test_move(NoSmartTransportDecorator,NoSmartTransportServer)
3881+breezy.tests.per_transport.TransportTests.test_move(PathFilteringTransport,TestingPathFilteringServer)
3882 breezy.tests.per_transport.TransportTests.test_move(ReadonlyTransportDecorator,ReadonlyServer)
3883+breezy.tests.per_transport.TransportTests.test_move(RemoteTCPTransport,SmartTCPServer_for_testing)
3884+breezy.tests.per_transport.TransportTests.test_move(SFTPTransport,SFTPAbsoluteServer)
3885+breezy.tests.per_transport.TransportTests.test_move(SFTPTransport,SFTPHomeDirServer)
3886+breezy.tests.per_transport.TransportTests.test_move(SFTPTransport,SFTPSiblingAbsoluteServer)
3887+breezy.tests.per_transport.TransportTests.test_move(TransportLogDecorator,LogDecoratorServer)
3888+breezy.tests.per_transport.TransportTests.test_move(TransportTraceDecorator,TraceServer)
3889+breezy.tests.per_transport.TransportTests.test_move(UnlistableTransportDecorator,UnlistableServer)
3890 breezy.tests.per_transport.TransportTests.test_no_segment_parameters(ChrootTransport,TestingChrootServer)
3891 breezy.tests.per_transport.TransportTests.test_no_segment_parameters(FakeNFSTransportDecorator,FakeNFSServer)
3892 breezy.tests.per_transport.TransportTests.test_no_segment_parameters(FakeVFATTransportDecorator,FakeVFATServer)
3893@@ -6434,21 +6657,56 @@
3894 breezy.tests.per_transport.TransportTests.test_opening_a_file_stream_creates_file(HttpTransport,HttpServer)
3895 breezy.tests.per_transport.TransportTests.test_opening_a_file_stream_creates_file(HttpTransport_urllib,HttpServer_urllib)
3896 breezy.tests.per_transport.TransportTests.test_opening_a_file_stream_creates_file(ReadonlyTransportDecorator,ReadonlyServer)
3897+breezy.tests.per_transport.TransportTests.test_put_bytes(ChrootTransport,TestingChrootServer)
3898+breezy.tests.per_transport.TransportTests.test_put_bytes(FakeNFSTransportDecorator,FakeNFSServer)
3899+breezy.tests.per_transport.TransportTests.test_put_bytes(FakeVFATTransportDecorator,FakeVFATServer)
3900 breezy.tests.per_transport.TransportTests.test_put_bytes(FtpTransport,UnavailableFTPTestServer)
3901 breezy.tests.per_transport.TransportTests.test_put_bytes(HTTPS_transport,HTTPSServer)
3902 breezy.tests.per_transport.TransportTests.test_put_bytes(HTTPS_urllib_transport,HTTPSServer_urllib)
3903 breezy.tests.per_transport.TransportTests.test_put_bytes(HttpTransport,HttpServer)
3904 breezy.tests.per_transport.TransportTests.test_put_bytes(HttpTransport_urllib,HttpServer_urllib)
3905+breezy.tests.per_transport.TransportTests.test_put_bytes(LocalTransport,LocalURLServer)
3906+breezy.tests.per_transport.TransportTests.test_put_bytes(MemoryTransport,MemoryServer)
3907+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(ChrootTransport,TestingChrootServer)
3908+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(FakeNFSTransportDecorator,FakeNFSServer)
3909+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(FakeVFATTransportDecorator,FakeVFATServer)
3910 breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(FtpTransport,UnavailableFTPTestServer)
3911+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(HTTPS_transport,HTTPSServer)
3912+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(HttpTransport,HttpServer)
3913+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(LocalTransport,LocalURLServer)
3914+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(MemoryTransport,MemoryServer)
3915+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(NoSmartTransportDecorator,NoSmartTransportServer)
3916+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(PathFilteringTransport,TestingPathFilteringServer)
3917+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(ChrootTransport,TestingChrootServer)
3918+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(FakeNFSTransportDecorator,FakeNFSServer)
3919 breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(FakeVFATTransportDecorator,FakeVFATServer)
3920 breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(FtpTransport,UnavailableFTPTestServer)
3921 breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(HTTPS_transport,HTTPSServer)
3922 breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(HTTPS_urllib_transport,HTTPSServer_urllib)
3923 breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(HttpTransport,HttpServer)
3924 breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(HttpTransport_urllib,HttpServer_urllib)
3925+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(LocalTransport,LocalURLServer)
3926 breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(MemoryTransport,MemoryServer)
3927+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(NoSmartTransportDecorator,NoSmartTransportServer)
3928+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(PathFilteringTransport,TestingPathFilteringServer)
3929 breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(ReadonlyTransportDecorator,ReadonlyServer)
3930 breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(RemoteTCPTransport,SmartTCPServer_for_testing)
3931+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(SFTPTransport,SFTPAbsoluteServer)
3932+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(SFTPTransport,SFTPHomeDirServer)
3933+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(SFTPTransport,SFTPSiblingAbsoluteServer)
3934+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(TransportLogDecorator,LogDecoratorServer)
3935+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(TransportTraceDecorator,TraceServer)
3936+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(UnlistableTransportDecorator,UnlistableServer)
3937+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(ReadonlyTransportDecorator,ReadonlyServer)
3938+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(RemoteTCPTransport,SmartTCPServer_for_testing)
3939+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(SFTPTransport,SFTPAbsoluteServer)
3940+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(SFTPTransport,SFTPHomeDirServer)
3941+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(SFTPTransport,SFTPSiblingAbsoluteServer)
3942+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(TransportLogDecorator,LogDecoratorServer)
3943+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(TransportTraceDecorator,TraceServer)
3944+breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(UnlistableTransportDecorator,UnlistableServer)
3945+breezy.tests.per_transport.TransportTests.test_put_bytes(NoSmartTransportDecorator,NoSmartTransportServer)
3946+breezy.tests.per_transport.TransportTests.test_put_bytes(PathFilteringTransport,TestingPathFilteringServer)
3947 breezy.tests.per_transport.TransportTests.test_put_bytes_permissions(ChrootTransport,TestingChrootServer)
3948 breezy.tests.per_transport.TransportTests.test_put_bytes_permissions(FakeNFSTransportDecorator,FakeNFSServer)
3949 breezy.tests.per_transport.TransportTests.test_put_bytes_permissions(FakeVFATTransportDecorator,FakeVFATServer)
3950@@ -6470,6 +6728,12 @@
3951 breezy.tests.per_transport.TransportTests.test_put_bytes_permissions(TransportTraceDecorator,TraceServer)
3952 breezy.tests.per_transport.TransportTests.test_put_bytes_permissions(UnlistableTransportDecorator,UnlistableServer)
3953 breezy.tests.per_transport.TransportTests.test_put_bytes(ReadonlyTransportDecorator,ReadonlyServer)
3954+breezy.tests.per_transport.TransportTests.test_put_bytes(RemoteTCPTransport,SmartTCPServer_for_testing)
3955+breezy.tests.per_transport.TransportTests.test_put_bytes(SFTPTransport,SFTPAbsoluteServer)
3956+breezy.tests.per_transport.TransportTests.test_put_bytes(SFTPTransport,SFTPHomeDirServer)
3957+breezy.tests.per_transport.TransportTests.test_put_bytes(SFTPTransport,SFTPSiblingAbsoluteServer)
3958+breezy.tests.per_transport.TransportTests.test_put_bytes(TransportLogDecorator,LogDecoratorServer)
3959+breezy.tests.per_transport.TransportTests.test_put_bytes(TransportTraceDecorator,TraceServer)
3960 breezy.tests.per_transport.TransportTests.test_put_bytes_unicode(ChrootTransport,TestingChrootServer)
3961 breezy.tests.per_transport.TransportTests.test_put_bytes_unicode(FakeNFSTransportDecorator,FakeNFSServer)
3962 breezy.tests.per_transport.TransportTests.test_put_bytes_unicode(FakeVFATTransportDecorator,FakeVFATServer)
3963@@ -6490,16 +6754,29 @@
3964 breezy.tests.per_transport.TransportTests.test_put_bytes_unicode(TransportLogDecorator,LogDecoratorServer)
3965 breezy.tests.per_transport.TransportTests.test_put_bytes_unicode(TransportTraceDecorator,TraceServer)
3966 breezy.tests.per_transport.TransportTests.test_put_bytes_unicode(UnlistableTransportDecorator,UnlistableServer)
3967+breezy.tests.per_transport.TransportTests.test_put_bytes(UnlistableTransportDecorator,UnlistableServer)
3968+breezy.tests.per_transport.TransportTests.test_put_file(ChrootTransport,TestingChrootServer)
3969+breezy.tests.per_transport.TransportTests.test_put_file(FakeNFSTransportDecorator,FakeNFSServer)
3970+breezy.tests.per_transport.TransportTests.test_put_file(FakeVFATTransportDecorator,FakeVFATServer)
3971 breezy.tests.per_transport.TransportTests.test_put_file(FtpTransport,UnavailableFTPTestServer)
3972 breezy.tests.per_transport.TransportTests.test_put_file(HTTPS_transport,HTTPSServer)
3973 breezy.tests.per_transport.TransportTests.test_put_file(HTTPS_urllib_transport,HTTPSServer_urllib)
3974 breezy.tests.per_transport.TransportTests.test_put_file(HttpTransport,HttpServer)
3975 breezy.tests.per_transport.TransportTests.test_put_file(HttpTransport_urllib,HttpServer_urllib)
3976+breezy.tests.per_transport.TransportTests.test_put_file(LocalTransport,LocalURLServer)
3977+breezy.tests.per_transport.TransportTests.test_put_file(MemoryTransport,MemoryServer)
3978+breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(ChrootTransport,TestingChrootServer)
3979+breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(FakeNFSTransportDecorator,FakeNFSServer)
3980+breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(FakeVFATTransportDecorator,FakeVFATServer)
3981 breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(FtpTransport,UnavailableFTPTestServer)
3982 breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(HTTPS_transport,HTTPSServer)
3983 breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(HTTPS_urllib_transport,HTTPSServer_urllib)
3984 breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(HttpTransport,HttpServer)
3985 breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(HttpTransport_urllib,HttpServer_urllib)
3986+breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(LocalTransport,LocalURLServer)
3987+breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(MemoryTransport,MemoryServer)
3988+breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(NoSmartTransportDecorator,NoSmartTransportServer)
3989+breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(PathFilteringTransport,TestingPathFilteringServer)
3990 breezy.tests.per_transport.TransportTests.test_put_file_non_atomic_permissions(ChrootTransport,TestingChrootServer)
3991 breezy.tests.per_transport.TransportTests.test_put_file_non_atomic_permissions(FakeNFSTransportDecorator,FakeNFSServer)
3992 breezy.tests.per_transport.TransportTests.test_put_file_non_atomic_permissions(FakeVFATTransportDecorator,FakeVFATServer)
3993@@ -6521,6 +6798,15 @@
3994 breezy.tests.per_transport.TransportTests.test_put_file_non_atomic_permissions(TransportTraceDecorator,TraceServer)
3995 breezy.tests.per_transport.TransportTests.test_put_file_non_atomic_permissions(UnlistableTransportDecorator,UnlistableServer)
3996 breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(ReadonlyTransportDecorator,ReadonlyServer)
3997+breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(RemoteTCPTransport,SmartTCPServer_for_testing)
3998+breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(SFTPTransport,SFTPAbsoluteServer)
3999+breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(SFTPTransport,SFTPHomeDirServer)
4000+breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(SFTPTransport,SFTPSiblingAbsoluteServer)
4001+breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(TransportLogDecorator,LogDecoratorServer)
4002+breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(TransportTraceDecorator,TraceServer)
4003+breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(UnlistableTransportDecorator,UnlistableServer)
4004+breezy.tests.per_transport.TransportTests.test_put_file(NoSmartTransportDecorator,NoSmartTransportServer)
4005+breezy.tests.per_transport.TransportTests.test_put_file(PathFilteringTransport,TestingPathFilteringServer)
4006 breezy.tests.per_transport.TransportTests.test_put_file_permissions(ChrootTransport,TestingChrootServer)
4007 breezy.tests.per_transport.TransportTests.test_put_file_permissions(FakeNFSTransportDecorator,FakeNFSServer)
4008 breezy.tests.per_transport.TransportTests.test_put_file_permissions(FakeVFATTransportDecorator,FakeVFATServer)
4009@@ -6542,6 +6828,13 @@
4010 breezy.tests.per_transport.TransportTests.test_put_file_permissions(TransportTraceDecorator,TraceServer)
4011 breezy.tests.per_transport.TransportTests.test_put_file_permissions(UnlistableTransportDecorator,UnlistableServer)
4012 breezy.tests.per_transport.TransportTests.test_put_file(ReadonlyTransportDecorator,ReadonlyServer)
4013+breezy.tests.per_transport.TransportTests.test_put_file(RemoteTCPTransport,SmartTCPServer_for_testing)
4014+breezy.tests.per_transport.TransportTests.test_put_file(SFTPTransport,SFTPAbsoluteServer)
4015+breezy.tests.per_transport.TransportTests.test_put_file(SFTPTransport,SFTPHomeDirServer)
4016+breezy.tests.per_transport.TransportTests.test_put_file(SFTPTransport,SFTPSiblingAbsoluteServer)
4017+breezy.tests.per_transport.TransportTests.test_put_file(TransportLogDecorator,LogDecoratorServer)
4018+breezy.tests.per_transport.TransportTests.test_put_file(TransportTraceDecorator,TraceServer)
4019+breezy.tests.per_transport.TransportTests.test_put_file(UnlistableTransportDecorator,UnlistableServer)
4020 breezy.tests.per_transport.TransportTests.test_readv(ChrootTransport,TestingChrootServer)
4021 breezy.tests.per_transport.TransportTests.test_readv(FakeNFSTransportDecorator,FakeNFSServer)
4022 breezy.tests.per_transport.TransportTests.test_readv(FakeVFATTransportDecorator,FakeVFATServer)
4023@@ -7119,6 +7412,8 @@
4024 breezy.tests.per_tree.test_revision_tree.TestRevisionTree.test_get_random_tree_raises(WorkingTreeFormat6,remote)
4025 breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_empty_tree_no_parents(DirStateRevisionTree,WT4)
4026 breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_empty_tree_no_parents(DirStateRevisionTree,WT5)
4027+breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_empty_tree_no_parents(PreviewTree)
4028+breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_empty_tree_no_parents(PreviewTreePost)
4029 breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_empty_tree_no_parents(RevisionTree)
4030 breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_empty_tree_no_parents(WorkingTreeFormat2)
4031 breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_empty_tree_no_parents(WorkingTreeFormat3)

Subscribers

People subscribed via source and target branches