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
=== modified file 'breezy/branch.py'
--- breezy/branch.py 2018-06-21 08:27:34 +0000
+++ breezy/branch.py 2018-06-21 23:03:57 +0000
@@ -2124,7 +2124,7 @@
2124 try:2124 try:
2125 parent = self.source.get_parent()2125 parent = self.source.get_parent()
2126 except errors.InaccessibleParent as e:2126 except errors.InaccessibleParent as e:
2127 mutter('parent was not accessible to copy: %s', e)2127 mutter('parent was not accessible to copy: %s', str(e))
2128 else:2128 else:
2129 if parent:2129 if parent:
2130 self.target.set_parent(parent)2130 self.target.set_parent(parent)
21312131
=== modified file 'breezy/bundle/serializer/v08.py'
--- breezy/bundle/serializer/v08.py 2018-06-15 13:10:28 +0000
+++ breezy/bundle/serializer/v08.py 2018-06-21 23:03:57 +0000
@@ -30,6 +30,7 @@
30from breezy.bundle.bundle_data import (RevisionInfo, BundleInfo)30from breezy.bundle.bundle_data import (RevisionInfo, BundleInfo)
31from breezy.diff import internal_diff31from breezy.diff import internal_diff
32from breezy.revision import NULL_REVISION32from breezy.revision import NULL_REVISION
33from breezy.sixish import text_type
33from breezy.testament import StrictTestament34from breezy.testament import StrictTestament
34from breezy.timestamp import (35from breezy.timestamp import (
35 format_highres_date,36 format_highres_date,
@@ -152,7 +153,7 @@
152 f.write(b': ')153 f.write(b': ')
153 f.write(value)154 f.write(value)
154 f.write(b'\n')155 f.write(b'\n')
155 elif isinstance(value, unicode):156 elif isinstance(value, text_type):
156 f.write(b': ')157 f.write(b': ')
157 f.write(value.encode('utf-8'))158 f.write(value.encode('utf-8'))
158 f.write(b'\n')159 f.write(b'\n')
159160
=== modified file 'breezy/bzr/branch.py'
--- breezy/bzr/branch.py 2018-06-21 19:00:42 +0000
+++ breezy/bzr/branch.py 2018-06-21 23:03:57 +0000
@@ -263,7 +263,7 @@
263 _locs = ['parent', 'pull', 'x-pull']263 _locs = ['parent', 'pull', 'x-pull']
264 for l in _locs:264 for l in _locs:
265 try:265 try:
266 return self._transport.get_bytes(l).strip(b'\n')266 return self._transport.get_bytes(l).strip(b'\n').decode('utf-8')
267 except errors.NoSuchFile:267 except errors.NoSuchFile:
268 pass268 pass
269 return None269 return None
270270
=== modified file 'breezy/bzr/bzrdir.py'
--- breezy/bzr/bzrdir.py 2018-05-07 14:35:05 +0000
+++ breezy/bzr/bzrdir.py 2018-06-21 23:03:57 +0000
@@ -833,7 +833,7 @@
833 """833 """
834 if name == "":834 if name == "":
835 return 'branch'835 return 'branch'
836 return urlutils.join('branches', name.encode("utf-8"))836 return urlutils.join('branches', urlutils.escape(name))
837837
838 def _read_branch_list(self):838 def _read_branch_list(self):
839 """Read the branch list.839 """Read the branch list.
840840
=== modified file 'breezy/bzr/smart/request.py'
--- breezy/bzr/smart/request.py 2018-06-21 22:26:54 +0000
+++ breezy/bzr/smart/request.py 2018-06-21 23:03:57 +0000
@@ -45,6 +45,7 @@
45 trace,45 trace,
46 urlutils,46 urlutils,
47 )47 )
48from ...sixish import text_type
48from ...lazy_import import lazy_import49from ...lazy_import import lazy_import
49lazy_import(globals(), """50lazy_import(globals(), """
50from breezy.bzr import bzrdir51from breezy.bzr import bzrdir
@@ -445,7 +446,7 @@
445 # If it is a DecodeError, than most likely we are starting446 # If it is a DecodeError, than most likely we are starting
446 # with a plain string447 # with a plain string
447 str_or_unicode = err.object448 str_or_unicode = err.object
448 if isinstance(str_or_unicode, unicode):449 if isinstance(str_or_unicode, text_type):
449 # XXX: UTF-8 might have \x01 (our protocol v1 and v2 seperator450 # XXX: UTF-8 might have \x01 (our protocol v1 and v2 seperator
450 # byte) in it, so this encoding could cause broken responses.451 # byte) in it, so this encoding could cause broken responses.
451 # Newer clients use protocol v3, so will be fine.452 # Newer clients use protocol v3, so will be fine.
452453
=== modified file 'breezy/config.py'
--- breezy/config.py 2018-03-10 13:52:14 +0000
+++ breezy/config.py 2018-06-21 23:03:57 +0000
@@ -119,8 +119,8 @@
119 binary_type,119 binary_type,
120 BytesIO,120 BytesIO,
121 PY3,121 PY3,
122 string_types,
122 text_type,123 text_type,
123 string_types,
124 )124 )
125125
126126
@@ -2558,7 +2558,7 @@
2558 can take quoting into account.2558 can take quoting into account.
2559 """2559 """
2560 super(RegistryOption, self).__init__(2560 super(RegistryOption, self).__init__(
2561 name, default=lambda: unicode(registry.default_key),2561 name, default=lambda: registry.default_key.decode('utf-8'),
2562 default_from_env=default_from_env,2562 default_from_env=default_from_env,
2563 from_unicode=self.from_unicode, help=help,2563 from_unicode=self.from_unicode, help=help,
2564 invalid=invalid, unquote=False)2564 invalid=invalid, unquote=False)
25652565
=== modified file 'breezy/conflicts.py'
--- breezy/conflicts.py 2018-05-27 18:00:21 +0000
+++ breezy/conflicts.py 2018-06-21 23:03:57 +0000
@@ -400,6 +400,9 @@
400 return not self.__eq__(other)400 return not self.__eq__(other)
401401
402 def __unicode__(self):402 def __unicode__(self):
403 return self.describe()
404
405 def describe(self):
403 return self.format % self.__dict__406 return self.format % self.__dict__
404407
405 def __repr__(self):408 def __repr__(self):
406409
=== modified file 'breezy/diff.py'
--- breezy/diff.py 2018-02-18 19:18:40 +0000
+++ breezy/diff.py 2018-06-21 23:03:57 +0000
@@ -738,7 +738,7 @@
738 if sys.platform == 'win32': # Popen doesn't accept unicode on win32738 if sys.platform == 'win32': # Popen doesn't accept unicode on win32
739 command_encoded = []739 command_encoded = []
740 for c in command:740 for c in command:
741 if isinstance(c, unicode):741 if isinstance(c, text_type):
742 command_encoded.append(c.encode('mbcs'))742 command_encoded.append(c.encode('mbcs'))
743 else:743 else:
744 command_encoded.append(c)744 command_encoded.append(c)
745745
=== modified file 'breezy/email_message.py'
--- breezy/email_message.py 2017-10-26 11:10:38 +0000
+++ breezy/email_message.py 2018-06-21 23:03:57 +0000
@@ -69,7 +69,7 @@
69 self._body = body69 self._body = body
70 self._parts = []70 self._parts = []
7171
72 if isinstance(to_address, (str, text_type)):72 if isinstance(to_address, (bytes, text_type)):
73 to_address = [ to_address ]73 to_address = [ to_address ]
7474
75 to_addresses = []75 to_addresses = []
@@ -201,7 +201,7 @@
201 # avoid base64 when it's not necessary in order to be most compatible201 # avoid base64 when it's not necessary in order to be most compatible
202 # with the capabilities of the receiving side, we check with encode()202 # with the capabilities of the receiving side, we check with encode()
203 # and decode() whether the body is actually ascii-only.203 # and decode() whether the body is actually ascii-only.
204 if isinstance(string_, unicode):204 if isinstance(string_, text_type):
205 try:205 try:
206 return (string_.encode('ascii'), 'ascii')206 return (string_.encode('ascii'), 'ascii')
207 except UnicodeEncodeError:207 except UnicodeEncodeError:
208208
=== modified file 'breezy/gpg.py'
--- breezy/gpg.py 2018-06-15 13:10:28 +0000
+++ breezy/gpg.py 2018-06-21 23:03:57 +0000
@@ -42,7 +42,7 @@
42 errors,42 errors,
43 )43 )
44from .sixish import (44from .sixish import (
45 BytesIO,45 text_type,
46 )46 )
4747
48#verification results48#verification results
@@ -232,7 +232,7 @@
232232
233 def sign(self, content, mode):233 def sign(self, content, mode):
234 import gpg234 import gpg
235 if isinstance(content, unicode):235 if isinstance(content, text_type):
236 raise errors.BzrBadParameterUnicode('content')236 raise errors.BzrBadParameterUnicode('content')
237237
238 plain_text = gpg.Data(content)238 plain_text = gpg.Data(content)
239239
=== modified file 'breezy/log.py'
--- breezy/log.py 2018-05-21 00:30:32 +0000
+++ breezy/log.py 2018-06-21 23:03:57 +0000
@@ -1523,7 +1523,7 @@
1523 rev.mapping.vcs.show_foreign_revid(rev.foreign_revid))1523 rev.mapping.vcs.show_foreign_revid(rev.foreign_revid))
15241524
1525 # Imported foreign revision revision ids always contain :1525 # Imported foreign revision revision ids always contain :
1526 if not ":" in rev.revision_id:1526 if not b":" in rev.revision_id:
1527 return []1527 return []
15281528
1529 # Revision was once imported from a foreign repository1529 # Revision was once imported from a foreign repository
15301530
=== modified file 'breezy/merge.py'
--- breezy/merge.py 2018-06-04 11:35:48 +0000
+++ breezy/merge.py 2018-06-21 23:03:57 +0000
@@ -51,6 +51,7 @@
51 registry,51 registry,
52 )52 )
53from .sixish import (53from .sixish import (
54 text_type,
54 viewitems,55 viewitems,
55 )56 )
56# TODO: Report back as changes are merged in57# TODO: Report back as changes are merged in
@@ -841,7 +842,7 @@
841 self.tt.iter_changes(), self.change_reporter)842 self.tt.iter_changes(), self.change_reporter)
842 self.cook_conflicts(fs_conflicts)843 self.cook_conflicts(fs_conflicts)
843 for conflict in self.cooked_conflicts:844 for conflict in self.cooked_conflicts:
844 trace.warning(unicode(conflict))845 trace.warning('%s', conflict.describe())
845846
846 def _entries3(self):847 def _entries3(self):
847 """Gather data about files modified between three trees.848 """Gather data about files modified between three trees.
848849
=== modified file 'breezy/mergetools.py'
--- breezy/mergetools.py 2017-05-22 00:56:52 +0000
+++ breezy/mergetools.py 2018-06-21 23:03:57 +0000
@@ -33,6 +33,8 @@
33)33)
34""")34""")
3535
36from .sixish import text_type
37
3638
37known_merge_tools = {39known_merge_tools = {
38 'bcompare': 'bcompare {this} {other} {base} {result}',40 'bcompare': 'bcompare {this} {other} {base} {result}',
@@ -52,7 +54,7 @@
52 if exe is None:54 if exe is None:
53 return False55 return False
54 base, ext = os.path.splitext(exe)56 base, ext = os.path.splitext(exe)
55 path_ext = [unicode(s.lower())57 path_ext = [s.lower()
56 for s in os.getenv('PATHEXT', '').split(os.pathsep)]58 for s in os.getenv('PATHEXT', '').split(os.pathsep)]
57 return os.path.exists(exe) and ext in path_ext59 return os.path.exists(exe) and ext in path_ext
58 else:60 else:
5961
=== modified file 'breezy/osutils.py'
--- breezy/osutils.py 2018-05-13 02:18:13 +0000
+++ breezy/osutils.py 2018-06-21 23:03:57 +0000
@@ -384,12 +384,12 @@
384384
385def _win32_abspath(path):385def _win32_abspath(path):
386 # Real ntpath.abspath doesn't have a problem with a unicode cwd386 # Real ntpath.abspath doesn't have a problem with a unicode cwd
387 return _win32_fixdrive(ntpath.abspath(unicode(path)).replace('\\', '/'))387 return _win32_fixdrive(ntpath.abspath(path).replace('\\', '/'))
388388
389389
390def _win32_realpath(path):390def _win32_realpath(path):
391 # Real ntpath.realpath doesn't have a problem with a unicode cwd391 # Real ntpath.realpath doesn't have a problem with a unicode cwd
392 return _win32_fixdrive(ntpath.realpath(unicode(path)).replace('\\', '/'))392 return _win32_fixdrive(ntpath.realpath(path).replace('\\', '/'))
393393
394394
395def _win32_pathjoin(*args):395def _win32_pathjoin(*args):
@@ -397,7 +397,7 @@
397397
398398
399def _win32_normpath(path):399def _win32_normpath(path):
400 return _win32_fixdrive(ntpath.normpath(unicode(path)).replace('\\', '/'))400 return _win32_fixdrive(ntpath.normpath(path).replace('\\', '/'))
401401
402402
403def _win32_getcwd():403def _win32_getcwd():
@@ -1454,13 +1454,17 @@
1454 can be accessed by that path.1454 can be accessed by that path.
1455 """1455 """
14561456
1457 return unicodedata.normalize('NFC', text_type(path)), True1457 if isinstance(path, bytes):
1458 path = path.decode(sys.getfilesystemencoding())
1459 return unicodedata.normalize('NFC', path), True
14581460
14591461
1460def _inaccessible_normalized_filename(path):1462def _inaccessible_normalized_filename(path):
1461 __doc__ = _accessible_normalized_filename.__doc__1463 __doc__ = _accessible_normalized_filename.__doc__
14621464
1463 normalized = unicodedata.normalize('NFC', text_type(path))1465 if isinstance(path, bytes):
1466 path = path.decode(sys.getfilesystemencoding())
1467 normalized = unicodedata.normalize('NFC', path)
1464 return normalized, normalized == path1468 return normalized, normalized == path
14651469
14661470
14671471
=== modified file 'breezy/plugins/git/branch.py'
--- breezy/plugins/git/branch.py 2018-05-15 19:46:32 +0000
+++ breezy/plugins/git/branch.py 2018-06-21 23:03:57 +0000
@@ -44,6 +44,7 @@
44from ...revision import (44from ...revision import (
45 NULL_REVISION,45 NULL_REVISION,
46 )46 )
47from ...sixish import text_type
47from ...trace import (48from ...trace import (
48 is_quiet,49 is_quiet,
49 mutter,50 mutter,
@@ -263,7 +264,7 @@
263class GitBranchFormat(branch.BranchFormat):264class GitBranchFormat(branch.BranchFormat):
264265
265 def network_name(self):266 def network_name(self):
266 return "git"267 return b"git"
267268
268 def supports_tags(self):269 def supports_tags(self):
269 return True270 return True
@@ -695,7 +696,7 @@
695 peeled = refs.get_peeled(ref_name)696 peeled = refs.get_peeled(ref_name)
696 if peeled is None:697 if peeled is None:
697 peeled = unpeeled698 peeled = unpeeled
698 if type(tag_name) is not unicode:699 if not isinstance(tag_name, text_type):
699 raise TypeError(tag_name)700 raise TypeError(tag_name)
700 yield (ref_name, tag_name, peeled, unpeeled)701 yield (ref_name, tag_name, peeled, unpeeled)
701702
702703
=== modified file 'breezy/plugins/git/dir.py'
--- breezy/plugins/git/dir.py 2018-05-13 22:54:28 +0000
+++ breezy/plugins/git/dir.py 2018-06-21 23:03:57 +0000
@@ -689,5 +689,5 @@
689 except bzr_errors.NoSuchFile:689 except bzr_errors.NoSuchFile:
690 return self690 return self
691 else:691 else:
692 commondir = commondir.rstrip('/.git/')692 commondir = commondir.rstrip(b'/.git/')
693 return ControlDir.open_from_transport(get_transport_from_path(commondir))693 return ControlDir.open_from_transport(get_transport_from_path(commondir))
694694
=== modified file 'breezy/plugins/git/fetch.py'
--- breezy/plugins/git/fetch.py 2018-06-17 13:07:22 +0000
+++ breezy/plugins/git/fetch.py 2018-06-21 23:03:57 +0000
@@ -55,6 +55,7 @@
55from ...revision import (55from ...revision import (
56 NULL_REVISION,56 NULL_REVISION,
57 )57 )
58from ...sixish import text_type
58from ...bzr.inventorytree import InventoryRevisionTree59from ...bzr.inventorytree import InventoryRevisionTree
59from ...testament import (60from ...testament import (
60 StrictTestament3,61 StrictTestament3,
@@ -223,7 +224,7 @@
223 :param lookup_object: Lookup a git object by its SHA1224 :param lookup_object: Lookup a git object by its SHA1
224 :return: Inventory delta, as list225 :return: Inventory delta, as list
225 """226 """
226 if type(path) is not unicode:227 if not isinstance(path, text_type):
227 raise TypeError(path)228 raise TypeError(path)
228 ret = []229 ret = []
229 for name, mode, hexsha in base_tree.iteritems():230 for name, mode, hexsha in base_tree.iteritems():
230231
=== modified file 'breezy/plugins/git/mapping.py'
--- breezy/plugins/git/mapping.py 2018-05-15 01:20:00 +0000
+++ breezy/plugins/git/mapping.py 2018-06-21 23:03:57 +0000
@@ -40,6 +40,7 @@
40from ...revision import (40from ...revision import (
41 NULL_REVISION,41 NULL_REVISION,
42 )42 )
43from ...sixish import text_type
43from .errors import (44from .errors import (
44 NoPushSupport,45 NoPushSupport,
45 UnknownCommitExtra,46 UnknownCommitExtra,
@@ -159,7 +160,7 @@
159 # We must just hope they are valid UTF-8..160 # We must just hope they are valid UTF-8..
160 if path == "":161 if path == "":
161 return ROOT_ID162 return ROOT_ID
162 if type(path) is unicode:163 if isinstance(path, text_type):
163 path = path.encode("utf-8")164 path = path.encode("utf-8")
164 return FILE_ID_PREFIX + escape_file_id(path)165 return FILE_ID_PREFIX + escape_file_id(path)
165166
@@ -553,7 +554,7 @@
553def symlink_to_blob(symlink_target):554def symlink_to_blob(symlink_target):
554 from dulwich.objects import Blob555 from dulwich.objects import Blob
555 blob = Blob()556 blob = Blob()
556 if type(symlink_target) == unicode:557 if isinstance(symlink_target, text_type):
557 symlink_target = symlink_target.encode('utf-8')558 symlink_target = symlink_target.encode('utf-8')
558 blob.data = symlink_target559 blob.data = symlink_target
559 return blob560 return blob
560561
=== modified file 'breezy/plugins/git/remote.py'
--- breezy/plugins/git/remote.py 2018-05-20 16:08:36 +0000
+++ breezy/plugins/git/remote.py 2018-06-21 23:03:57 +0000
@@ -48,6 +48,7 @@
48 UninitializableFormat,48 UninitializableFormat,
49 )49 )
50from ...revisiontree import RevisionTree50from ...revisiontree import RevisionTree
51from ...sixish import text_type
51from ...transport import (52from ...transport import (
52 Transport,53 Transport,
53 register_urlparse_netloc_protocol,54 register_urlparse_netloc_protocol,
@@ -902,7 +903,7 @@
902 except KeyError:903 except KeyError:
903 # Let's just hope it's a commit904 # Let's just hope it's a commit
904 peeled = unpeeled905 peeled = unpeeled
905 if type(tag_name) is not unicode:906 if not isinstance(tag_name, text_type):
906 raise TypeError(tag_name)907 raise TypeError(tag_name)
907 yield (ref_name, tag_name, peeled, unpeeled)908 yield (ref_name, tag_name, peeled, unpeeled)
908909
909910
=== modified file 'breezy/plugins/git/tests/test_memorytree.py'
--- breezy/plugins/git/tests/test_memorytree.py 2018-05-22 02:05:12 +0000
+++ breezy/plugins/git/tests/test_memorytree.py 2018-06-21 23:03:57 +0000
@@ -96,33 +96,30 @@
96 def test_put_new_file(self):96 def test_put_new_file(self):
97 branch = self.make_branch('branch')97 branch = self.make_branch('branch')
98 tree = branch.create_memorytree()98 tree = branch.create_memorytree()
99 tree.lock_write()99 with tree.lock_write():
100 tree.add(['', 'foo'], kinds=['directory', 'file'])100 tree.add(['', 'foo'], kinds=['directory', 'file'])
101 tree.put_file_bytes_non_atomic('foo', 'barshoom')101 tree.put_file_bytes_non_atomic('foo', b'barshoom')
102 self.assertEqual('barshoom', tree.get_file('foo').read())102 self.assertEqual(b'barshoom', tree.get_file('foo').read())
103 tree.unlock()
104103
105 def test_put_existing_file(self):104 def test_put_existing_file(self):
106 branch = self.make_branch('branch')105 branch = self.make_branch('branch')
107 tree = branch.create_memorytree()106 tree = branch.create_memorytree()
108 tree.lock_write()107 with tree.lock_write():
109 tree.add(['', 'foo'], kinds=['directory', 'file'])108 tree.add(['', 'foo'], kinds=['directory', 'file'])
110 tree.put_file_bytes_non_atomic('foo', 'first-content')109 tree.put_file_bytes_non_atomic('foo', b'first-content')
111 tree.put_file_bytes_non_atomic('foo', 'barshoom')110 tree.put_file_bytes_non_atomic('foo', b'barshoom')
112 self.assertEqual('barshoom', tree.get_file('foo').read())111 self.assertEqual(b'barshoom', tree.get_file('foo').read())
113 tree.unlock()
114112
115 def test_add_in_subdir(self):113 def test_add_in_subdir(self):
116 branch = self.make_branch('branch')114 branch = self.make_branch('branch')
117 tree = branch.create_memorytree()115 tree = branch.create_memorytree()
118 tree.lock_write()116 with tree.lock_write():
119 self.addCleanup(tree.unlock)117 tree.add([''], None, ['directory'])
120 tree.add([''], None, ['directory'])118 tree.mkdir('adir')
121 tree.mkdir('adir')119 tree.put_file_bytes_non_atomic('adir/afile', b'barshoom')
122 tree.put_file_bytes_non_atomic('adir/afile', 'barshoom')120 tree.add(['adir/afile'], None, ['file'])
123 tree.add(['adir/afile'], None, ['file'])121 self.assertTrue(tree.is_versioned('adir/afile'))
124 self.assertTrue(tree.is_versioned('adir/afile'))122 self.assertTrue(tree.is_versioned('adir'))
125 self.assertTrue(tree.is_versioned('adir'))
126123
127 def test_commit_trivial(self):124 def test_commit_trivial(self):
128 """Smoke test for commit on a MemoryTree.125 """Smoke test for commit on a MemoryTree.
@@ -132,18 +129,16 @@
132 """129 """
133 branch = self.make_branch('branch')130 branch = self.make_branch('branch')
134 tree = branch.create_memorytree()131 tree = branch.create_memorytree()
135 tree.lock_write()132 with tree.lock_write():
136 tree.add(['', 'foo'], kinds=['directory', 'file'])133 tree.add(['', 'foo'], kinds=['directory', 'file'])
137 tree.put_file_bytes_non_atomic('foo', 'barshoom')134 tree.put_file_bytes_non_atomic('foo', b'barshoom')
138 revision_id = tree.commit('message baby')135 revision_id = tree.commit('message baby')
139 # the parents list for the tree should have changed.136 # the parents list for the tree should have changed.
140 self.assertEqual([revision_id], tree.get_parent_ids())137 self.assertEqual([revision_id], tree.get_parent_ids())
141 tree.unlock()
142 # and we should have a revision that is accessible outside the tree lock138 # and we should have a revision that is accessible outside the tree lock
143 revtree = tree.branch.repository.revision_tree(revision_id)139 revtree = tree.branch.repository.revision_tree(revision_id)
144 revtree.lock_read()140 with revtree.lock_read():
145 self.addCleanup(revtree.unlock)141 self.assertEqual(b'barshoom', revtree.get_file('foo').read())
146 self.assertEqual('barshoom', revtree.get_file('foo').read())
147142
148 def test_unversion(self):143 def test_unversion(self):
149 """Some test for unversion of a memory tree."""144 """Some test for unversion of a memory tree."""
@@ -168,22 +163,22 @@
168 tree = self.make_branch_and_memory_tree('branch')163 tree = self.make_branch_and_memory_tree('branch')
169 tree.lock_write()164 tree.lock_write()
170 self.addCleanup(tree.unlock)165 self.addCleanup(tree.unlock)
171 tree.add(['', 'foo'], ['root-id', 'foo-id'], ['directory', 'file'])166 tree.add(['', 'foo'], [b'root-id', b'foo-id'], ['directory', 'file'])
172 tree.put_file_bytes_non_atomic('foo', 'content\n')167 tree.put_file_bytes_non_atomic('foo', b'content\n')
173 tree.commit('one', rev_id=b'rev-one')168 tree.commit('one', rev_id=b'rev-one')
174 tree.rename_one('foo', 'bar')169 tree.rename_one('foo', 'bar')
175 self.assertEqual('bar', tree.id2path('foo-id'))170 self.assertEqual('bar', tree.id2path(b'foo-id'))
176 self.assertEqual('content\n', tree._file_transport.get_bytes('bar'))171 self.assertEqual('content\n', tree._file_transport.get_bytes('bar'))
177 self.assertRaises(errors.NoSuchFile,172 self.assertRaises(errors.NoSuchFile,
178 tree._file_transport.get_bytes, 'foo')173 tree._file_transport.get_bytes, 'foo')
179 tree.commit('two', rev_id=b'rev-two')174 tree.commit('two', rev_id=b'rev-two')
180 self.assertEqual('content\n', tree._file_transport.get_bytes('bar'))175 self.assertEqual(b'content\n', tree._file_transport.get_bytes('bar'))
181 self.assertRaises(errors.NoSuchFile,176 self.assertRaises(errors.NoSuchFile,
182 tree._file_transport.get_bytes, 'foo')177 tree._file_transport.get_bytes, 'foo')
183178
184 rev_tree2 = tree.branch.repository.revision_tree(b'rev-two')179 rev_tree2 = tree.branch.repository.revision_tree(b'rev-two')
185 self.assertEqual('bar', rev_tree2.id2path('foo-id'))180 self.assertEqual('bar', rev_tree2.id2path(b'foo-id'))
186 self.assertEqual('content\n', rev_tree2.get_file_text('bar'))181 self.assertEqual(b'content\n', rev_tree2.get_file_text('bar'))
187182
188 def test_rename_file_to_subdir(self):183 def test_rename_file_to_subdir(self):
189 tree = self.make_branch_and_memory_tree('branch')184 tree = self.make_branch_and_memory_tree('branch')
190185
=== modified file 'breezy/plugins/git/tree.py'
--- breezy/plugins/git/tree.py 2018-06-21 08:03:55 +0000
+++ breezy/plugins/git/tree.py 2018-06-21 23:03:57 +0000
@@ -59,6 +59,7 @@
59 CURRENT_REVISION,59 CURRENT_REVISION,
60 NULL_REVISION,60 NULL_REVISION,
61 )61 )
62from ...sixish import text_type
6263
63from .mapping import (64from .mapping import (
64 mode_is_executable,65 mode_is_executable,
@@ -1034,9 +1035,9 @@
1034 posixpath.basename(path).strip("/"), parent_id)1035 posixpath.basename(path).strip("/"), parent_id)
10351036
1036 def _get_file_ie(self, name, path, value, parent_id):1037 def _get_file_ie(self, name, path, value, parent_id):
1037 if type(name) is not unicode:1038 if not isinstance(name, text_type):
1038 raise TypeError(name)1039 raise TypeError(name)
1039 if type(path) is not unicode:1040 if not isinstance(path, text_type):
1040 raise TypeError(path)1041 raise TypeError(path)
1041 if not isinstance(value, tuple) or len(value) != 10:1042 if not isinstance(value, tuple) or len(value) != 10:
1042 raise TypeError(value)1043 raise TypeError(value)
10431044
=== modified file 'breezy/revisionspec.py'
--- breezy/revisionspec.py 2017-11-12 17:53:47 +0000
+++ breezy/revisionspec.py 2018-06-21 23:03:57 +0000
@@ -468,7 +468,7 @@
468 # self.spec comes straight from parsing the command line arguments,468 # self.spec comes straight from parsing the command line arguments,
469 # so we expect it to be a Unicode string. Switch it to the internal469 # so we expect it to be a Unicode string. Switch it to the internal
470 # representation.470 # representation.
471 if isinstance(self.spec, unicode):471 if isinstance(self.spec, text_type):
472 return cache_utf8.encode(self.spec)472 return cache_utf8.encode(self.spec)
473 return self.spec473 return self.spec
474474
475475
=== modified file 'breezy/shelf.py'
--- breezy/shelf.py 2018-02-18 19:18:40 +0000
+++ breezy/shelf.py 2018-06-21 23:03:57 +0000
@@ -297,7 +297,7 @@
297 if message is not None:297 if message is not None:
298 metadata[b'message'] = message.encode('utf-8')298 metadata[b'message'] = message.encode('utf-8')
299 return serializer.bytes_record(299 return serializer.bytes_record(
300 bencode.bencode(metadata), (('metadata',),))300 bencode.bencode(metadata), ((b'metadata',),))
301301
302 def write_shelf(self, shelf_file, message=None):302 def write_shelf(self, shelf_file, message=None):
303 """Serialize the shelved changes to a file.303 """Serialize the shelved changes to a file.
304304
=== modified file 'breezy/status.py'
--- breezy/status.py 2017-12-11 01:58:37 +0000
+++ breezy/status.py 2018-06-21 23:03:57 +0000
@@ -27,6 +27,7 @@
27 revision as _mod_revision,27 revision as _mod_revision,
28 )28 )
29from . import errors as errors29from . import errors as errors
30from .sixish import text_type
30from .trace import mutter, warning31from .trace import mutter, warning
31from .workingtree import ShelvingUnsupported32from .workingtree import ShelvingUnsupported
3233
@@ -195,7 +196,7 @@
195 prefix = 'C '196 prefix = 'C '
196 else:197 else:
197 prefix = ' '198 prefix = ' '
198 to_file.write("%s %s\n" % (prefix, unicode(conflict)))199 to_file.write("%s %s\n" % (prefix, conflict))
199 # Show files that were requested but don't exist (and are200 # Show files that were requested but don't exist (and are
200 # not versioned). We don't involve delta in this; these201 # not versioned). We don't involve delta in this; these
201 # paths are really the province of just the status202 # paths are really the province of just the status
202203
=== modified file 'breezy/tag.py'
--- breezy/tag.py 2018-05-13 02:18:13 +0000
+++ breezy/tag.py 2018-06-21 23:03:57 +0000
@@ -28,6 +28,7 @@
28# called tags* are ctags files... mbp 20070220.28# called tags* are ctags files... mbp 20070220.
2929
30from .registry import Registry30from .registry import Registry
31from .sixish import text_type
31from .lazy_import import lazy_import32from .lazy_import import lazy_import
32lazy_import(globals(), """33lazy_import(globals(), """
33import itertools34import itertools
@@ -360,7 +361,7 @@
360 """361 """
361 def natural_sort_key(tag):362 def natural_sort_key(tag):
362 return [f(s) for f, s in363 return [f(s) for f, s in
363 zip(itertools.cycle((unicode.lower, int)),364 zip(itertools.cycle((text_type.lower, int)),
364 re.split('([0-9]+)', tag[0]))]365 re.split('([0-9]+)', tag[0]))]
365 tags.sort(key=natural_sort_key)366 tags.sort(key=natural_sort_key)
366367
367368
=== modified file 'breezy/testament.py'
--- breezy/testament.py 2017-10-27 00:18:42 +0000
+++ breezy/testament.py 2018-06-21 23:03:57 +0000
@@ -78,6 +78,7 @@
78 contains_linebreaks,78 contains_linebreaks,
79 sha_strings,79 sha_strings,
80 )80 )
81from .sixish import text_type
81from .tree import Tree82from .tree import Tree
8283
8384
@@ -162,7 +163,9 @@
162 def _escape_path(self, path):163 def _escape_path(self, path):
163 if contains_linebreaks(path):164 if contains_linebreaks(path):
164 raise ValueError(path)165 raise ValueError(path)
165 return unicode(path.replace('\\', '/').replace(' ', '\\ '))166 if not isinstance(path, text_type):
167 raise TypeError(path)
168 return path.replace(u'\\', u'/').replace(u' ', u'\\ ')
166169
167 def _entry_to_line(self, path, ie):170 def _entry_to_line(self, path, ie):
168 """Turn an inventory entry into a testament line"""171 """Turn an inventory entry into a testament line"""
@@ -240,6 +243,9 @@
240 def _escape_path(self, path):243 def _escape_path(self, path):
241 if contains_linebreaks(path):244 if contains_linebreaks(path):
242 raise ValueError(path)245 raise ValueError(path)
243 if path == '':246 if not isinstance(path, text_type):
244 path = '.'247 # TODO(jelmer): Clean this up for pad.lv/1696545
245 return unicode(path.replace('\\', '/').replace(' ', '\\ '))248 path = path.decode('ascii')
249 if path == u'':
250 path = u'.'
251 return path.replace(u'\\', u'/').replace(u' ', u'\\ ')
246252
=== modified file 'breezy/tests/blackbox/test_reconcile.py'
--- breezy/tests/blackbox/test_reconcile.py 2018-02-18 15:21:06 +0000
+++ breezy/tests/blackbox/test_reconcile.py 2018-06-21 23:03:57 +0000
@@ -51,10 +51,10 @@
51 # an empty inventory with no revision will trigger reconciliation.51 # an empty inventory with no revision will trigger reconciliation.
52 repo = t.branch.repository52 repo = t.branch.repository
53 inv = inventory.Inventory(revision_id=b'missing')53 inv = inventory.Inventory(revision_id=b'missing')
54 inv.root.revision='missing'54 inv.root.revision=b'missing'
55 repo.lock_write()55 repo.lock_write()
56 repo.start_write_group()56 repo.start_write_group()
57 repo.add_inventory('missing', inv, [])57 repo.add_inventory(b'missing', inv, [])
58 repo.commit_write_group()58 repo.commit_write_group()
59 repo.unlock()59 repo.unlock()
60 (out, err) = self.run_bzr('reconcile')60 (out, err) = self.run_bzr('reconcile')
6161
=== modified file 'breezy/tests/per_branch/test_branch.py'
--- breezy/tests/per_branch/test_branch.py 2018-06-15 13:10:28 +0000
+++ breezy/tests/per_branch/test_branch.py 2018-06-21 23:03:57 +0000
@@ -74,7 +74,7 @@
74 graph = tree.branch.repository.get_graph()74 graph = tree.branch.repository.get_graph()
75 ancestry_graph = graph.get_parent_map(75 ancestry_graph = graph.get_parent_map(
76 tree.branch.repository.all_revision_ids())76 tree.branch.repository.all_revision_ids())
77 self.assertEqual({revmap['1']: ('null:',),77 self.assertEqual({revmap['1']: (b'null:',),
78 revmap['2']: (revmap['1'], ),78 revmap['2']: (revmap['1'], ),
79 revmap['1.1.1']: (revmap['1'], ),79 revmap['1.1.1']: (revmap['1'], ),
80 revmap['3']: (revmap['2'], revmap['1.1.1'], ),80 revmap['3']: (revmap['2'], revmap['1.1.1'], ),
@@ -213,9 +213,9 @@
213 if not wt.branch.repository._format.supports_ghosts:213 if not wt.branch.repository._format.supports_ghosts:
214 raise tests.TestNotApplicable("repository format does not "214 raise tests.TestNotApplicable("repository format does not "
215 "support ghosts")215 "support ghosts")
216 wt.set_parent_ids(['non:existent@rev--ision--0--2'],216 wt.set_parent_ids([b'non:existent@rev--ision--0--2'],
217 allow_leftmost_as_ghost=True)217 allow_leftmost_as_ghost=True)
218 self.assertEqual(['non:existent@rev--ision--0--2'],218 self.assertEqual([b'non:existent@rev--ision--0--2'],
219 wt.get_parent_ids())219 wt.get_parent_ids())
220 rev_id = wt.commit('commit against a ghost first parent.')220 rev_id = wt.commit('commit against a ghost first parent.')
221 rev = wt.branch.repository.get_revision(rev_id)221 rev = wt.branch.repository.get_revision(rev_id)
@@ -230,15 +230,15 @@
230 raise tests.TestNotApplicable("repository format does not "230 raise tests.TestNotApplicable("repository format does not "
231 "support ghosts")231 "support ghosts")
232 wt.set_parent_ids([232 wt.set_parent_ids([
233 'foo@azkhazan-123123-abcabc',233 b'foo@azkhazan-123123-abcabc',
234 'wibble@fofof--20050401--1928390812',234 b'wibble@fofof--20050401--1928390812',
235 ],235 ],
236 allow_leftmost_as_ghost=True)236 allow_leftmost_as_ghost=True)
237 rev_id = wt.commit("commit from ghost base with one merge")237 rev_id = wt.commit("commit from ghost base with one merge")
238 # the revision should have been committed with two parents238 # the revision should have been committed with two parents
239 rev = wt.branch.repository.get_revision(rev_id)239 rev = wt.branch.repository.get_revision(rev_id)
240 self.assertEqual(['foo@azkhazan-123123-abcabc',240 self.assertEqual([b'foo@azkhazan-123123-abcabc',
241 'wibble@fofof--20050401--1928390812'],241 b'wibble@fofof--20050401--1928390812'],
242 rev.parent_ids)242 rev.parent_ids)
243243
244 def test_bad_revision(self):244 def test_bad_revision(self):
245245
=== modified file 'breezy/tests/per_branch/test_check.py'
--- breezy/tests/per_branch/test_check.py 2017-06-05 20:48:31 +0000
+++ breezy/tests/per_branch/test_check.py 2018-06-21 23:03:57 +0000
@@ -60,7 +60,7 @@
60 result = tree.branch.check(refs)60 result = tree.branch.check(refs)
61 ui.ui_factory = tests.TestUIFactory(stdout=BytesIO())61 ui.ui_factory = tests.TestUIFactory(stdout=BytesIO())
62 result.report_results(True)62 result.report_results(True)
63 self.assertContainsRe('revno does not match len',63 self.assertContainsRe(b'revno does not match len',
64 ui.ui_factory.stdout.getvalue())64 ui.ui_factory.stdout.getvalue())
6565
66 def test_check_branch_report_results(self):66 def test_check_branch_report_results(self):
6767
=== modified file 'breezy/tests/per_branch/test_commit.py'
--- breezy/tests/per_branch/test_commit.py 2018-03-20 07:41:20 +0000
+++ breezy/tests/per_branch/test_commit.py 2018-06-21 23:03:57 +0000
@@ -189,20 +189,20 @@
189 # setting up a playground189 # setting up a playground
190 tree.add('rootfile')190 tree.add('rootfile')
191 rootfile_id = tree.path2id('rootfile')191 rootfile_id = tree.path2id('rootfile')
192 tree.put_file_bytes_non_atomic('rootfile', 'abc')192 tree.put_file_bytes_non_atomic('rootfile', b'abc')
193 tree.add('dir')193 tree.add('dir')
194 dir_id = tree.path2id('dir')194 dir_id = tree.path2id('dir')
195 tree.add('dir/subfile')195 tree.add('dir/subfile')
196 dir_subfile_id = tree.path2id('dir/subfile')196 dir_subfile_id = tree.path2id('dir/subfile')
197 tree.put_file_bytes_non_atomic('to_be_unversioned', 'blah')197 tree.put_file_bytes_non_atomic('to_be_unversioned', b'blah')
198 tree.add(['to_be_unversioned'])198 tree.add(['to_be_unversioned'])
199 to_be_unversioned_id = tree.path2id('to_be_unversioned')199 to_be_unversioned_id = tree.path2id('to_be_unversioned')
200 tree.put_file_bytes_non_atomic('dir/subfile', 'def')200 tree.put_file_bytes_non_atomic('dir/subfile', b'def')
201 revid1 = tree.commit('first revision')201 revid1 = tree.commit('first revision')
202202
203 with tree.lock_write():203 with tree.lock_write():
204 # making changes204 # making changes
205 tree.put_file_bytes_non_atomic('rootfile', 'jkl')205 tree.put_file_bytes_non_atomic('rootfile', b'jkl')
206 tree.rename_one('dir/subfile', 'dir/subfile_renamed')206 tree.rename_one('dir/subfile', 'dir/subfile_renamed')
207 tree.unversion(['to_be_unversioned'])207 tree.unversion(['to_be_unversioned'])
208 tree.mkdir('added_dir')208 tree.mkdir('added_dir')
209209
=== modified file 'breezy/tests/per_branch/test_iter_merge_sorted_revisions.py'
--- breezy/tests/per_branch/test_iter_merge_sorted_revisions.py 2018-03-27 00:51:45 +0000
+++ breezy/tests/per_branch/test_iter_merge_sorted_revisions.py 2018-06-21 23:03:57 +0000
@@ -81,47 +81,47 @@
8181
82 def test_merge_sorted_range(self):82 def test_merge_sorted_range(self):
83 self.assertIterRevids(['1.1.1'],83 self.assertIterRevids(['1.1.1'],
84 start_revision_id=b'1.1.1', stop_revision_id=b'1')84 start_revision_id='1.1.1', stop_revision_id='1')
8585
86 def test_merge_sorted_range_start_only(self):86 def test_merge_sorted_range_start_only(self):
87 self.assertIterRevids(['1.1.1', '1'],87 self.assertIterRevids(['1.1.1', '1'],
88 start_revision_id=b'1.1.1')88 start_revision_id='1.1.1')
8989
90 def test_merge_sorted_range_stop_exclude(self):90 def test_merge_sorted_range_stop_exclude(self):
91 self.assertIterRevids(['3', '1.1.1', '2'], stop_revision_id=b'1')91 self.assertIterRevids(['3', '1.1.1', '2'], stop_revision_id=b'1')
9292
93 def test_merge_sorted_range_stop_include(self):93 def test_merge_sorted_range_stop_include(self):
94 self.assertIterRevids(['3', '1.1.1', '2'],94 self.assertIterRevids(['3', '1.1.1', '2'],
95 stop_revision_id=b'2', stop_rule='include')95 stop_revision_id='2', stop_rule='include')
9696
97 def test_merge_sorted_range_stop_with_merges(self):97 def test_merge_sorted_range_stop_with_merges(self):
98 self.assertIterRevids(['3', '1.1.1'],98 self.assertIterRevids(['3', '1.1.1'],
99 stop_revision_id=b'3', stop_rule='with-merges')99 stop_revision_id='3', stop_rule='with-merges')
100100
101 def test_merge_sorted_range_stop_with_merges_can_show_non_parents(self):101 def test_merge_sorted_range_stop_with_merges_can_show_non_parents(self):
102 # 1.1.1 gets logged before the end revision is reached.102 # 1.1.1 gets logged before the end revision is reached.
103 # so it is returned even though 1.1.1 is not a parent of 2.103 # so it is returned even though 1.1.1 is not a parent of 2.
104 self.assertIterRevids(['3', '1.1.1', '2'],104 self.assertIterRevids(['3', '1.1.1', '2'],
105 stop_revision_id=b'2', stop_rule='with-merges')105 stop_revision_id='2', stop_rule='with-merges')
106106
107 def test_merge_sorted_range_stop_with_merges_ignore_non_parents(self):107 def test_merge_sorted_range_stop_with_merges_ignore_non_parents(self):
108 # 2 is not a parent of 1.1.1 so it must not be returned108 # 2 is not a parent of 1.1.1 so it must not be returned
109 self.assertIterRevids(['3', '1.1.1'],109 self.assertIterRevids(['3', '1.1.1'],
110 stop_revision_id=b'1.1.1', stop_rule='with-merges')110 stop_revision_id='1.1.1', stop_rule='with-merges')
111111
112 def test_merge_sorted_single_stop_exclude(self):112 def test_merge_sorted_single_stop_exclude(self):
113 # from X..X exclusive is an empty result113 # from X..X exclusive is an empty result
114 self.assertIterRevids([], start_revision_id=b'3', stop_revision_id=b'3')114 self.assertIterRevids([], start_revision_id='3', stop_revision_id='3')
115115
116 def test_merge_sorted_single_stop_include(self):116 def test_merge_sorted_single_stop_include(self):
117 # from X..X inclusive is [X]117 # from X..X inclusive is [X]
118 self.assertIterRevids(['3'],118 self.assertIterRevids(['3'],
119 start_revision_id=b'3', stop_revision_id=b'3',119 start_revision_id='3', stop_revision_id='3',
120 stop_rule='include')120 stop_rule='include')
121121
122 def test_merge_sorted_single_stop_with_merges(self):122 def test_merge_sorted_single_stop_with_merges(self):
123 self.assertIterRevids(['3', '1.1.1'],123 self.assertIterRevids(['3', '1.1.1'],
124 start_revision_id=b'3', stop_revision_id=b'3',124 start_revision_id='3', stop_revision_id='3',
125 stop_rule='with-merges')125 stop_rule='with-merges')
126126
127 def test_merge_sorted_forward(self):127 def test_merge_sorted_forward(self):
@@ -129,25 +129,25 @@
129129
130 def test_merge_sorted_range_forward(self):130 def test_merge_sorted_range_forward(self):
131 self.assertIterRevids(['1.1.1'],131 self.assertIterRevids(['1.1.1'],
132 start_revision_id=b'1.1.1', stop_revision_id=b'1',132 start_revision_id='1.1.1', stop_revision_id='1',
133 direction='forward')133 direction='forward')
134134
135 def test_merge_sorted_range_start_only_forward(self):135 def test_merge_sorted_range_start_only_forward(self):
136 self.assertIterRevids(['1', '1.1.1'],136 self.assertIterRevids(['1', '1.1.1'],
137 start_revision_id=b'1.1.1', direction='forward')137 start_revision_id='1.1.1', direction='forward')
138138
139 def test_merge_sorted_range_stop_exclude_forward(self):139 def test_merge_sorted_range_stop_exclude_forward(self):
140 self.assertIterRevids(['2', '1.1.1', '3'],140 self.assertIterRevids(['2', '1.1.1', '3'],
141 stop_revision_id=b'1', direction='forward')141 stop_revision_id='1', direction='forward')
142142
143 def test_merge_sorted_range_stop_include_forward(self):143 def test_merge_sorted_range_stop_include_forward(self):
144 self.assertIterRevids(['2', '1.1.1', '3'],144 self.assertIterRevids(['2', '1.1.1', '3'],
145 stop_revision_id=b'2', stop_rule='include',145 stop_revision_id='2', stop_rule='include',
146 direction='forward')146 direction='forward')
147147
148 def test_merge_sorted_range_stop_with_merges_forward(self):148 def test_merge_sorted_range_stop_with_merges_forward(self):
149 self.assertIterRevids(['1.1.1', '3'],149 self.assertIterRevids(['1.1.1', '3'],
150 stop_revision_id=b'3', stop_rule='with-merges',150 stop_revision_id='3', stop_rule='with-merges',
151 direction='forward')151 direction='forward')
152152
153153
@@ -303,7 +303,7 @@
303 branch)303 branch)
304 # 3 and 2.1.2 are not part of 2.2.1 ancestry and should not appear304 # 3 and 2.1.2 are not part of 2.2.1 ancestry and should not appear
305 self.assertIterRevids(['2.2.1', '2.1.1', '2', '1.1.1', '1'],305 self.assertIterRevids(['2.2.1', '2.1.1', '2', '1.1.1', '1'],
306 branch, start_revision_id=b'2.2.1',306 branch, start_revision_id='2.2.1',
307 stop_rule='with-merges')307 stop_rule='with-merges')
308308
309 def test_merge_sorted_with_different_depths_merge(self):309 def test_merge_sorted_with_different_depths_merge(self):
@@ -317,7 +317,7 @@
317 # 3 (and its descendants) and 2.1.2 are not part of 2.2.1 ancestry and317 # 3 (and its descendants) and 2.1.2 are not part of 2.2.1 ancestry and
318 # should not appear318 # should not appear
319 self.assertIterRevids(['2.2.1', '2.1.1', '2', '1'],319 self.assertIterRevids(['2.2.1', '2.1.1', '2', '1'],
320 branch, start_revision_id=b'2.2.1',320 branch, start_revision_id='2.2.1',
321 stop_rule='with-merges')321 stop_rule='with-merges')
322322
323 def test_merge_sorted_exclude_ancestry(self):323 def test_merge_sorted_exclude_ancestry(self):
@@ -329,6 +329,6 @@
329 self.assertIterRevids(['1.1.2', '1.2.1'],329 self.assertIterRevids(['1.1.2', '1.2.1'],
330 branch,330 branch,
331 stop_rule='with-merges-without-common-ancestry',331 stop_rule='with-merges-without-common-ancestry',
332 start_revision_id=b'1.1.2',332 start_revision_id='1.1.2',
333 stop_revision_id=b'1.1.1')333 stop_revision_id='1.1.1')
334334
335335
=== modified file 'breezy/tests/per_branch/test_revision_id_to_dotted_revno.py'
--- breezy/tests/per_branch/test_revision_id_to_dotted_revno.py 2017-08-07 21:14:18 +0000
+++ breezy/tests/per_branch/test_revision_id_to_dotted_revno.py 2018-06-21 23:03:57 +0000
@@ -26,11 +26,11 @@
26 def test_lookup_dotted_revno(self):26 def test_lookup_dotted_revno(self):
27 tree, revmap = self.create_tree_with_merge()27 tree, revmap = self.create_tree_with_merge()
28 the_branch = tree.branch28 the_branch = tree.branch
29 self.assertEqual((0,), the_branch.revision_id_to_dotted_revno('null:'))29 self.assertEqual((0,), the_branch.revision_id_to_dotted_revno(b'null:'))
30 self.assertEqual((1,), the_branch.revision_id_to_dotted_revno(revmap['1']))30 self.assertEqual((1,), the_branch.revision_id_to_dotted_revno(revmap['1']))
31 self.assertEqual((2,), the_branch.revision_id_to_dotted_revno(revmap['2']))31 self.assertEqual((2,), the_branch.revision_id_to_dotted_revno(revmap['2']))
32 self.assertEqual((3,), the_branch.revision_id_to_dotted_revno(revmap['3']))32 self.assertEqual((3,), the_branch.revision_id_to_dotted_revno(revmap['3']))
33 self.assertEqual((1, 1, 1), the_branch.revision_id_to_dotted_revno(33 self.assertEqual((1, 1, 1), the_branch.revision_id_to_dotted_revno(
34 revmap['1.1.1']))34 revmap['1.1.1']))
35 self.assertRaises(errors.NoSuchRevision,35 self.assertRaises(errors.NoSuchRevision,
36 the_branch.revision_id_to_dotted_revno, 'rev-1.0.2')36 the_branch.revision_id_to_dotted_revno, b'rev-1.0.2')
3737
=== modified file 'breezy/tests/per_foreign_vcs/test_branch.py'
--- breezy/tests/per_foreign_vcs/test_branch.py 2017-11-19 18:55:26 +0000
+++ breezy/tests/per_foreign_vcs/test_branch.py 2018-06-21 23:03:57 +0000
@@ -146,4 +146,4 @@
146 self.assertIsInstance(self.branch_format.get_format_description(), str)146 self.assertIsInstance(self.branch_format.get_format_description(), str)
147147
148 def test_network_name(self):148 def test_network_name(self):
149 self.assertIsInstance(self.branch_format.network_name(), str)149 self.assertIsInstance(self.branch_format.network_name(), bytes)
150150
=== modified file 'breezy/tests/per_interbranch/test_push.py'
--- breezy/tests/per_interbranch/test_push.py 2018-03-27 00:51:45 +0000
+++ breezy/tests/per_interbranch/test_push.py 2018-06-21 23:03:57 +0000
@@ -267,10 +267,10 @@
267 builder.start_series()267 builder.start_series()
268 revid1 = builder.build_snapshot(None, [268 revid1 = builder.build_snapshot(None, [
269 ('add', ('', None, 'directory', '')),269 ('add', ('', None, 'directory', '')),
270 ('add', ('filename', None, 'file', 'content\n'))])270 ('add', ('filename', None, 'file', b'content\n'))])
271 revid2 = builder.build_snapshot([revid1], [])271 revid2 = builder.build_snapshot([revid1], [])
272 revid3 = builder.build_snapshot([revid2],272 revid3 = builder.build_snapshot([revid2],
273 [('modify', ('filename', 'new-content\n'))])273 [('modify', ('filename', b'new-content\n'))])
274 builder.finish_series()274 builder.finish_series()
275 trunk = builder.get_branch()275 trunk = builder.get_branch()
276 # Sprout rev-1 to "trunk", so that we can stack on it.276 # Sprout rev-1 to "trunk", so that we can stack on it.
277277
=== modified file 'breezy/tests/per_interrepository/test_fetch.py'
--- breezy/tests/per_interrepository/test_fetch.py 2018-06-21 17:53:38 +0000
+++ breezy/tests/per_interrepository/test_fetch.py 2018-06-21 23:03:57 +0000
@@ -161,10 +161,10 @@
161 builder = self.make_branch_builder('full-branch')161 builder = self.make_branch_builder('full-branch')
162 builder.start_series()162 builder.start_series()
163 builder.build_snapshot(None, [163 builder.build_snapshot(None, [
164 ('add', ('', 'root-id', 'directory', '')),164 ('add', ('', b'root-id', 'directory', '')),
165 ('add', ('file', 'file-id', 'file', 'content\n'))],165 ('add', ('file', b'file-id', 'file', b'content\n'))],
166 revision_id=b'first')166 revision_id=b'first')
167 builder.build_snapshot(['first'], [167 builder.build_snapshot([b'first'], [
168 ('modify', ('file', b'second content\n'))],168 ('modify', ('file', b'second content\n'))],
169 revision_id=b'second')169 revision_id=b'second')
170 builder.build_snapshot([b'second'], [170 builder.build_snapshot([b'second'], [
@@ -174,19 +174,23 @@
174 branch = builder.get_branch()174 branch = builder.get_branch()
175 repo = self.make_repository('stacking-base')175 repo = self.make_repository('stacking-base')
176 trunk = repo.controldir.create_branch()176 trunk = repo.controldir.create_branch()
177 trunk.repository.fetch(branch.repository, 'second')177 trunk.repository.fetch(branch.repository, b'second')
178 repo = self.make_repository('stacked')178 repo = self.make_repository('stacked')
179 stacked_branch = repo.controldir.create_branch()179 stacked_branch = repo.controldir.create_branch()
180 stacked_branch.set_stacked_on_url(trunk.base)180 stacked_branch.set_stacked_on_url(trunk.base)
181 stacked_branch.repository.fetch(branch.repository, 'third')181 stacked_branch.repository.fetch(branch.repository, b'third')
182 target = self.make_to_repository('target')182 target = self.make_to_repository('target')
183<<<<<<< TREE
183 try:184 try:
184 target.fetch(stacked_branch.repository, 'third')185 target.fetch(stacked_branch.repository, 'third')
185 except errors.NoRoundtrippingSupport:186 except errors.NoRoundtrippingSupport:
186 raise TestNotApplicable('roundtripping not supported')187 raise TestNotApplicable('roundtripping not supported')
188=======
189 target.fetch(stacked_branch.repository, b'third')
190>>>>>>> MERGE-SOURCE
187 target.lock_read()191 target.lock_read()
188 self.addCleanup(target.unlock)192 self.addCleanup(target.unlock)
189 all_revs = {'first', 'second', 'third'}193 all_revs = {b'first', b'second', b'third'}
190 self.assertEqual(all_revs, set(target.get_parent_map(all_revs)))194 self.assertEqual(all_revs, set(target.get_parent_map(all_revs)))
191195
192 def test_fetch_parent_inventories_at_stacking_boundary_smart(self):196 def test_fetch_parent_inventories_at_stacking_boundary_smart(self):
193197
=== modified file 'breezy/tests/per_intertree/test_compare.py'
--- breezy/tests/per_intertree/test_compare.py 2018-05-13 02:18:13 +0000
+++ breezy/tests/per_intertree/test_compare.py 2018-06-21 23:03:57 +0000
@@ -793,14 +793,14 @@
793 tree1.mkdir('changing/unchanging', b'mid-id')793 tree1.mkdir('changing/unchanging', b'mid-id')
794 tree1.add(['changing/unchanging/file'], [b'file-id'], ['file'])794 tree1.add(['changing/unchanging/file'], [b'file-id'], ['file'])
795 tree1.put_file_bytes_non_atomic(795 tree1.put_file_bytes_non_atomic(
796 'changing/unchanging/file', 'a file', file_id='file-id')796 'changing/unchanging/file', b'a file', file_id=b'file-id')
797 tree2 = self.make_to_branch_and_tree('2')797 tree2 = self.make_to_branch_and_tree('2')
798 tree2.set_root_id(tree1.get_root_id())798 tree2.set_root_id(tree1.get_root_id())
799 tree2.mkdir('changed', b'parent-id')799 tree2.mkdir('changed', b'parent-id')
800 tree2.mkdir('changed/unchanging', b'mid-id')800 tree2.mkdir('changed/unchanging', b'mid-id')
801 tree2.add(['changed/unchanging/file'], [b'file-id'], ['file'])801 tree2.add(['changed/unchanging/file'], [b'file-id'], ['file'])
802 tree2.put_file_bytes_non_atomic(802 tree2.put_file_bytes_non_atomic(
803 'changed/unchanging/file', 'changed content', file_id=b'file-id')803 'changed/unchanging/file', b'changed content', file_id=b'file-id')
804 tree1, tree2 = self.mutable_trees_to_test_trees(self, tree1, tree2)804 tree1, tree2 = self.mutable_trees_to_test_trees(self, tree1, tree2)
805 # parent-id has changed, as has file-id805 # parent-id has changed, as has file-id
806 root_id = tree1.path2id('')806 root_id = tree1.path2id('')
@@ -820,15 +820,15 @@
820 tree1.mkdir('changed/unchanging', b'mid-id')820 tree1.mkdir('changed/unchanging', b'mid-id')
821 tree1.add(['changed/unchanging/file'], [b'file-id'], ['file'])821 tree1.add(['changed/unchanging/file'], [b'file-id'], ['file'])
822 tree1.put_file_bytes_non_atomic(822 tree1.put_file_bytes_non_atomic(
823 'changed/unchanging/file', 'a file',823 'changed/unchanging/file', b'a file',
824 'file-id')824 b'file-id')
825 tree2 = self.make_to_branch_and_tree('2')825 tree2 = self.make_to_branch_and_tree('2')
826 tree2.set_root_id(b'new')826 tree2.set_root_id(b'new')
827 tree2.mkdir('changed', b'parent-id')827 tree2.mkdir('changed', b'parent-id')
828 tree2.mkdir('changed/unchanging', b'mid-id')828 tree2.mkdir('changed/unchanging', b'mid-id')
829 tree2.add(['changed/unchanging/file'], [b'file-id'], ['file'])829 tree2.add(['changed/unchanging/file'], [b'file-id'], ['file'])
830 tree2.put_file_bytes_non_atomic(830 tree2.put_file_bytes_non_atomic(
831 'changed/unchanging/file', 'changed content', file_id=b'file-id')831 'changed/unchanging/file', b'changed content', file_id=b'file-id')
832 tree1, tree2 = self.mutable_trees_to_locked_test_trees(tree1, tree2)832 tree1, tree2 = self.mutable_trees_to_locked_test_trees(tree1, tree2)
833 # old is gone, new is added, parent-id has changed(reparented), as has833 # old is gone, new is added, parent-id has changed(reparented), as has
834 # file-id(content)834 # file-id(content)
@@ -874,12 +874,12 @@
874 # it must be emitted as a change.874 # it must be emitted as a change.
875 tree1 = self.make_branch_and_tree('1')875 tree1 = self.make_branch_and_tree('1')
876 tree1.add(['a'], [b'a-id'], ['file'])876 tree1.add(['a'], [b'a-id'], ['file'])
877 tree1.put_file_bytes_non_atomic('a', 'a file')877 tree1.put_file_bytes_non_atomic('a', b'a file')
878 tree2 = self.make_to_branch_and_tree('2')878 tree2 = self.make_to_branch_and_tree('2')
879 tree2.set_root_id(tree1.get_root_id())879 tree2.set_root_id(tree1.get_root_id())
880 tree2.mkdir('a', b'b-id')880 tree2.mkdir('a', b'b-id')
881 tree2.add(['a/c'], [b'c-id'], ['file'])881 tree2.add(['a/c'], [b'c-id'], ['file'])
882 tree2.put_file_bytes_non_atomic('a/c', 'another file')882 tree2.put_file_bytes_non_atomic('a/c', b'another file')
883 tree1, tree2 = self.mutable_trees_to_locked_test_trees(tree1, tree2)883 tree1, tree2 = self.mutable_trees_to_locked_test_trees(tree1, tree2)
884 # a-id is gone, b-id and c-id are added.884 # a-id is gone, b-id and c-id are added.
885 self.assertEqualIterChanges(885 self.assertEqualIterChanges(
@@ -900,7 +900,7 @@
900 tree2.mkdir('a', b'a-new-id')900 tree2.mkdir('a', b'a-new-id')
901 tree2.mkdir('a/reparented', b'reparented-id')901 tree2.mkdir('a/reparented', b'reparented-id')
902 tree2.add(['b'], [b'a-old-id'], ['file'])902 tree2.add(['b'], [b'a-old-id'], ['file'])
903 tree2.put_file_bytes_non_atomic('b', '')903 tree2.put_file_bytes_non_atomic('b', b'')
904 tree1, tree2 = self.mutable_trees_to_locked_test_trees(tree1, tree2)904 tree1, tree2 = self.mutable_trees_to_locked_test_trees(tree1, tree2)
905 # a-old-id is kind-changed, a-new-id is added, reparented-id is renamed,905 # a-old-id is kind-changed, a-new-id is added, reparented-id is renamed,
906 # deleted-id is gone906 # deleted-id is gone
907907
=== modified file 'breezy/tests/per_pack_repository.py'
--- breezy/tests/per_pack_repository.py 2018-05-27 18:00:21 +0000
+++ breezy/tests/per_pack_repository.py 2018-06-21 23:03:57 +0000
@@ -199,8 +199,8 @@
199 index = self.index_class(trans, 'pack-names', None)199 index = self.index_class(trans, 'pack-names', None)
200 self.assertEqual(9, len(list(index.iter_all_entries())))200 self.assertEqual(9, len(list(index.iter_all_entries())))
201 # insert some files in obsolete_packs which should be removed by pack.201 # insert some files in obsolete_packs which should be removed by pack.
202 trans.put_bytes('obsolete_packs/foo', '123')202 trans.put_bytes('obsolete_packs/foo', b'123')
203 trans.put_bytes('obsolete_packs/bar', '321')203 trans.put_bytes('obsolete_packs/bar', b'321')
204 # committing one more should coalesce to 1 of 10.204 # committing one more should coalesce to 1 of 10.
205 tree.commit('commit triggering pack')205 tree.commit('commit triggering pack')
206 index = self.index_class(trans, 'pack-names', None)206 index = self.index_class(trans, 'pack-names', None)
@@ -275,7 +275,7 @@
275 repo_transport = bzrdir.get_repository_transport(None)275 repo_transport = bzrdir.get_repository_transport(None)
276 self.assertTrue(repo_transport.has('obsolete_packs'))276 self.assertTrue(repo_transport.has('obsolete_packs'))
277 # these files are in use by another client and typically can't be deleted277 # these files are in use by another client and typically can't be deleted
278 repo_transport.put_bytes('obsolete_packs/.nfsblahblah', 'contents')278 repo_transport.put_bytes('obsolete_packs/.nfsblahblah', b'contents')
279 repo._pack_collection._clear_obsolete_packs()279 repo._pack_collection._clear_obsolete_packs()
280 self.assertTrue(repo_transport.has('obsolete_packs/.nfsblahblah'))280 self.assertTrue(repo_transport.has('obsolete_packs/.nfsblahblah'))
281281
282282
=== modified file 'breezy/tests/per_repository/test_commit_builder.py'
--- breezy/tests/per_repository/test_commit_builder.py 2018-05-05 15:49:41 +0000
+++ breezy/tests/per_repository/test_commit_builder.py 2018-06-21 23:03:57 +0000
@@ -556,7 +556,7 @@
556 tree = self.make_branch_and_tree('.')556 tree = self.make_branch_and_tree('.')
557 self.build_tree(['file'])557 self.build_tree(['file'])
558 def change_file():558 def change_file():
559 tree.put_file_bytes_non_atomic('file', 'new content')559 tree.put_file_bytes_non_atomic('file', b'new content')
560 self._add_commit_change_check_changed(tree, ('file', 'file'), change_file,560 self._add_commit_change_check_changed(tree, ('file', 'file'), change_file,
561 expect_fs_hash=True)561 expect_fs_hash=True)
562562
563563
=== modified file 'breezy/tests/per_repository/test_repository.py'
--- breezy/tests/per_repository/test_repository.py 2018-06-15 13:10:28 +0000
+++ breezy/tests/per_repository/test_repository.py 2018-06-21 23:03:57 +0000
@@ -44,6 +44,7 @@
44 )44 )
45from ...sixish import (45from ...sixish import (
46 BytesIO,46 BytesIO,
47 text_type,
47 )48 )
48from .. import (49from .. import (
49 per_repository,50 per_repository,
@@ -416,7 +417,7 @@
416 self.assertEqual(rev.message, message)417 self.assertEqual(rev.message, message)
417 # insist the class is unicode no matter what came in for418 # insist the class is unicode no matter what came in for
418 # consistency.419 # consistency.
419 self.assertIsInstance(rev.message, unicode)420 self.assertIsInstance(rev.message, text_type)
420421
421 def test_commit_unicode_message(self):422 def test_commit_unicode_message(self):
422 # a siple unicode message should be preserved423 # a siple unicode message should be preserved
423424
=== modified file 'breezy/tests/per_repository_reference/test_fetch.py'
--- breezy/tests/per_repository_reference/test_fetch.py 2018-05-22 02:05:12 +0000
+++ breezy/tests/per_repository_reference/test_fetch.py 2018-06-21 23:03:57 +0000
@@ -61,25 +61,25 @@
61 # Use 'make_branch' which gives us a bzr:// branch when appropriate,61 # Use 'make_branch' which gives us a bzr:// branch when appropriate,
62 # rather than creating a branch-on-disk62 # rather than creating a branch-on-disk
63 stack_b = self.make_branch('stack-on')63 stack_b = self.make_branch('stack-on')
64 stack_b.pull(source_b, stop_revision='B-id')64 stack_b.pull(source_b, stop_revision=b'B-id')
65 target_b = self.make_branch('target')65 target_b = self.make_branch('target')
66 target_b.set_stacked_on_url('../stack-on')66 target_b.set_stacked_on_url('../stack-on')
67 target_b.pull(source_b, stop_revision='C-id')67 target_b.pull(source_b, stop_revision=b'C-id')
68 # At this point, we should have a target branch, with 1 revision, on68 # At this point, we should have a target branch, with 1 revision, on
69 # top of the source.69 # top of the source.
70 final_b = self.make_branch('final')70 final_b = self.make_branch('final')
71 final_b.pull(target_b)71 final_b.pull(target_b)
72 final_b.lock_read()72 final_b.lock_read()
73 self.addCleanup(final_b.unlock)73 self.addCleanup(final_b.unlock)
74 self.assertEqual('C-id', final_b.last_revision())74 self.assertEqual(b'C-id', final_b.last_revision())
75 text_keys = [('a-id', 'A-id'), ('a-id', 'B-id'), ('a-id', 'C-id')]75 text_keys = [(b'a-id', b'A-id'), (b'a-id', b'B-id'), (b'a-id', b'C-id')]
76 stream = final_b.repository.texts.get_record_stream(text_keys,76 stream = final_b.repository.texts.get_record_stream(text_keys,
77 'unordered', True)77 'unordered', True)
78 records = sorted([(r.key, r.get_bytes_as('fulltext')) for r in stream])78 records = sorted([(r.key, r.get_bytes_as('fulltext')) for r in stream])
79 self.assertEqual([79 self.assertEqual([
80 (('a-id', 'A-id'), ''.join(content[:-2])),80 ((b'a-id', b'A-id'), b''.join(content[:-2])),
81 (('a-id', 'B-id'), ''.join(content[:-1])),81 ((b'a-id', b'B-id'), b''.join(content[:-1])),
82 (('a-id', 'C-id'), ''.join(content)),82 ((b'a-id', b'C-id'), b''.join(content)),
83 ], records)83 ], records)
8484
85 def test_sprout_from_smart_stacked_with_short_history(self):85 def test_sprout_from_smart_stacked_with_short_history(self):
@@ -97,7 +97,7 @@
97 target_bzrdir.create_repository()97 target_bzrdir.create_repository()
98 target_b = target_bzrdir.create_branch()98 target_b = target_bzrdir.create_branch()
99 target_b.set_stacked_on_url('../stack-on')99 target_b.set_stacked_on_url('../stack-on')
100 target_b.pull(source_b, stop_revision='C-id')100 target_b.pull(source_b, stop_revision=b'C-id')
101 # Now we should be able to branch from the remote location to a local101 # Now we should be able to branch from the remote location to a local
102 # location102 # location
103 final_b = target_b.controldir.sprout('final').open_branch()103 final_b = target_b.controldir.sprout('final').open_branch()
@@ -114,16 +114,16 @@
114 builder = self.make_branch_builder('source')114 builder = self.make_branch_builder('source')
115 builder.start_series()115 builder.start_series()
116 builder.build_snapshot(None, [116 builder.build_snapshot(None, [
117 ('add', ('', 'root-id', 'directory', None)),117 ('add', ('', b'root-id', 'directory', None)),
118 ('add', ('file', 'file-id', 'file', 'content\n'))],118 ('add', ('file', b'file-id', 'file', b'content\n'))],
119 revision_id=b'A-id')119 revision_id=b'A-id')
120 builder.build_snapshot(['A-id', 'ghost-id'], [], revision_id=b'B-id')120 builder.build_snapshot([b'A-id', b'ghost-id'], [], revision_id=b'B-id')
121 builder.finish_series()121 builder.finish_series()
122 source_b = builder.get_branch()122 source_b = builder.get_branch()
123 source_b.lock_read()123 source_b.lock_read()
124 self.addCleanup(source_b.unlock)124 self.addCleanup(source_b.unlock)
125 base = self.make_branch('base')125 base = self.make_branch('base')
126 base.pull(source_b, stop_revision='A-id')126 base.pull(source_b, stop_revision=b'A-id')
127 stacked = self.make_branch('stacked')127 stacked = self.make_branch('stacked')
128 stacked.set_stacked_on_url('../base')128 stacked.set_stacked_on_url('../base')
129 return source_b, base, stacked129 return source_b, base, stacked
@@ -131,7 +131,7 @@
131 def test_fetch_with_ghost_stacked(self):131 def test_fetch_with_ghost_stacked(self):
132 (source_b, base,132 (source_b, base,
133 stacked) = self.make_source_with_ghost_and_stacked_target()133 stacked) = self.make_source_with_ghost_and_stacked_target()
134 stacked.pull(source_b, stop_revision='B-id')134 stacked.pull(source_b, stop_revision=b'B-id')
135135
136 def test_fetch_into_smart_stacked_with_ghost(self):136 def test_fetch_into_smart_stacked_with_ghost(self):
137 (source_b, base,137 (source_b, base,
@@ -142,7 +142,7 @@
142 stacked = branch.Branch.open(trans.base)142 stacked = branch.Branch.open(trans.base)
143 stacked.lock_write()143 stacked.lock_write()
144 self.addCleanup(stacked.unlock)144 self.addCleanup(stacked.unlock)
145 stacked.pull(source_b, stop_revision='B-id')145 stacked.pull(source_b, stop_revision=b'B-id')
146146
147 def test_fetch_to_stacked_from_smart_with_ghost(self):147 def test_fetch_to_stacked_from_smart_with_ghost(self):
148 (source_b, base,148 (source_b, base,
@@ -153,7 +153,7 @@
153 source_b = branch.Branch.open(trans.base)153 source_b = branch.Branch.open(trans.base)
154 source_b.lock_read()154 source_b.lock_read()
155 self.addCleanup(source_b.unlock)155 self.addCleanup(source_b.unlock)
156 stacked.pull(source_b, stop_revision='B-id')156 stacked.pull(source_b, stop_revision=b'B-id')
157157
158158
159class TestFetchFromRepoWithUnconfiguredFallbacks(TestFetchBase):159class TestFetchFromRepoWithUnconfiguredFallbacks(TestFetchBase):
@@ -163,10 +163,10 @@
163 # Use 'make_branch' which gives us a bzr:// branch when appropriate,163 # Use 'make_branch' which gives us a bzr:// branch when appropriate,
164 # rather than creating a branch-on-disk164 # rather than creating a branch-on-disk
165 stack_b = self.make_branch('stack-on')165 stack_b = self.make_branch('stack-on')
166 stack_b.pull(source_b, stop_revision='B-id')166 stack_b.pull(source_b, stop_revision=b'B-id')
167 stacked_b = self.make_branch('stacked')167 stacked_b = self.make_branch('stacked')
168 stacked_b.set_stacked_on_url('../stack-on')168 stacked_b.set_stacked_on_url('../stack-on')
169 stacked_b.pull(source_b, stop_revision='C-id')169 stacked_b.pull(source_b, stop_revision=b'C-id')
170 return stacked_b.repository170 return stacked_b.repository
171171
172 def test_fetch_everything_includes_parent_invs(self):172 def test_fetch_everything_includes_parent_invs(self):
@@ -182,9 +182,9 @@
182 target.revisions.keys())182 target.revisions.keys())
183 self.assertEqual(repo_missing_fallbacks.inventories.keys(),183 self.assertEqual(repo_missing_fallbacks.inventories.keys(),
184 target.inventories.keys())184 target.inventories.keys())
185 self.assertEqual(['C-id'],185 self.assertEqual([b'C-id'],
186 sorted(k[-1] for k in target.revisions.keys()))186 sorted(k[-1] for k in target.revisions.keys()))
187 self.assertEqual(['B-id', 'C-id'],187 self.assertEqual([b'B-id', b'C-id'],
188 sorted(k[-1] for k in target.inventories.keys()))188 sorted(k[-1] for k in target.inventories.keys()))
189189
190190
191191
=== modified file 'breezy/tests/per_repository_reference/test_graph.py'
--- breezy/tests/per_repository_reference/test_graph.py 2018-05-22 02:05:12 +0000
+++ breezy/tests/per_repository_reference/test_graph.py 2018-06-21 23:03:57 +0000
@@ -57,19 +57,19 @@
57 builder = self.make_branch_builder('source')57 builder = self.make_branch_builder('source')
58 builder.start_series()58 builder.start_series()
59 builder.build_snapshot(None, [59 builder.build_snapshot(None, [
60 ('add', ('', 'directory', 'root-id', None))],60 ('add', ('', 'directory', b'root-id', None))],
61 revision_id=b'A')61 revision_id=b'A')
62 builder.build_snapshot(['A'], [], revision_id=b'B')62 builder.build_snapshot([b'A'], [], revision_id=b'B')
63 builder.build_snapshot(['B'], [], revision_id=b'C')63 builder.build_snapshot([b'B'], [], revision_id=b'C')
64 builder.build_snapshot(['C'], [], revision_id=b'D')64 builder.build_snapshot([b'C'], [], revision_id=b'D')
65 builder.build_snapshot(['D'], [], revision_id=b'E')65 builder.build_snapshot([b'D'], [], revision_id=b'E')
66 builder.build_snapshot(['E'], [], revision_id=b'F')66 builder.build_snapshot([b'E'], [], revision_id=b'F')
67 source_b = builder.get_branch()67 source_b = builder.get_branch()
68 master_b = self.make_branch('master')68 master_b = self.make_branch('master')
69 master_b.pull(source_b, stop_revision='E')69 master_b.pull(source_b, stop_revision=b'E')
70 stacked_b = self.make_branch('stacked')70 stacked_b = self.make_branch('stacked')
71 stacked_b.set_stacked_on_url('../master')71 stacked_b.set_stacked_on_url('../master')
72 stacked_b.pull(source_b, stop_revision='F')72 stacked_b.pull(source_b, stop_revision=b'F')
73 builder.finish_series()73 builder.finish_series()
74 return master_b, stacked_b74 return master_b, stacked_b
7575
7676
=== modified file 'breezy/tests/per_repository_reference/test_unlock.py'
--- breezy/tests/per_repository_reference/test_unlock.py 2018-05-22 02:05:12 +0000
+++ breezy/tests/per_repository_reference/test_unlock.py 2018-06-21 23:03:57 +0000
@@ -35,24 +35,24 @@
35 if not repo._format.supports_external_lookups:35 if not repo._format.supports_external_lookups:
36 raise tests.TestNotApplicable('format does not support stacking')36 raise tests.TestNotApplicable('format does not support stacking')
37 builder.build_snapshot(None, [37 builder.build_snapshot(None, [
38 ('add', ('', 'root-id', 'directory', None)),38 ('add', ('', b'root-id', 'directory', None)),
39 ('add', ('file', 'file-id', 'file', 'contents\n'))],39 ('add', ('file', b'file-id', 'file', b'contents\n'))],
40 revision_id=b'A-id')40 revision_id=b'A-id')
41 builder.build_snapshot(['A-id'], [41 builder.build_snapshot([b'A-id'], [
42 ('modify', ('file', 'new-content\n'))],42 ('modify', ('file', b'new-content\n'))],
43 revision_id=b'B-id')43 revision_id=b'B-id')
44 builder.build_snapshot(['B-id'], [44 builder.build_snapshot([b'B-id'], [
45 ('modify', ('file', 'yet more content\n'))],45 ('modify', ('file', b'yet more content\n'))],
46 revision_id=b'C-id')46 revision_id=b'C-id')
47 builder.finish_series()47 builder.finish_series()
48 source_b = builder.get_branch()48 source_b = builder.get_branch()
49 source_b.lock_read()49 source_b.lock_read()
50 self.addCleanup(source_b.unlock)50 self.addCleanup(source_b.unlock)
51 base = self.make_branch('base')51 base = self.make_branch('base')
52 base.pull(source_b, stop_revision='B-id')52 base.pull(source_b, stop_revision=b'B-id')
53 stacked = self.make_branch('stacked')53 stacked = self.make_branch('stacked')
54 stacked.set_stacked_on_url('../base')54 stacked.set_stacked_on_url('../base')
55 stacked.pull(source_b, stop_revision='C-id')55 stacked.pull(source_b, stop_revision=b'C-id')
5656
57 return base, stacked57 return base, stacked
5858
5959
=== modified file 'breezy/tests/per_repository_vf/test_check_reconcile.py'
--- breezy/tests/per_repository_vf/test_check_reconcile.py 2017-06-08 23:30:31 +0000
+++ breezy/tests/per_repository_vf/test_check_reconcile.py 2018-06-21 23:03:57 +0000
@@ -99,10 +99,10 @@
99 """99 """
100100
101 def all_versions_after_reconcile(self):101 def all_versions_after_reconcile(self):
102 return ('rev1a', )102 return (b'rev1a', )
103103
104 def populated_parents(self):104 def populated_parents(self):
105 return (((), 'rev1a'), )105 return (((), b'rev1a'), )
106106
107 def corrected_parents(self):107 def corrected_parents(self):
108 # Same as the populated parents, because there was nothing wrong.108 # Same as the populated parents, because there was nothing wrong.
@@ -114,22 +114,22 @@
114 def populate_repository(self, repo):114 def populate_repository(self, repo):
115 # make rev1a: A well-formed revision, containing 'a-file'115 # make rev1a: A well-formed revision, containing 'a-file'
116 inv = self.make_one_file_inventory(116 inv = self.make_one_file_inventory(
117 repo, 'rev1a', [], root_revision='rev1a')117 repo, b'rev1a', [], root_revision=b'rev1a')
118 self.add_revision(repo, 'rev1a', inv, [])118 self.add_revision(repo, b'rev1a', inv, [])
119 self.versioned_root = repo.supports_rich_root()119 self.versioned_root = repo.supports_rich_root()
120120
121 def repository_text_key_references(self):121 def repository_text_key_references(self):
122 result = {}122 result = {}
123 if self.versioned_root:123 if self.versioned_root:
124 result.update({('TREE_ROOT', 'rev1a'): True})124 result.update({(b'TREE_ROOT', b'rev1a'): True})
125 result.update({('a-file-id', 'rev1a'): True})125 result.update({(b'a-file-id', b'rev1a'): True})
126 return result126 return result
127127
128 def repository_text_keys(self):128 def repository_text_keys(self):
129 return {('a-file-id', 'rev1a'):[NULL_REVISION]}129 return {(b'a-file-id', b'rev1a'):[NULL_REVISION]}
130130
131 def versioned_repository_text_keys(self):131 def versioned_repository_text_keys(self):
132 return {('TREE_ROOT', 'rev1a'):[NULL_REVISION]}132 return {(b'TREE_ROOT', b'rev1a'):[NULL_REVISION]}
133133
134134
135class FileParentIsNotInRevisionAncestryScenario(BrokenRepoScenario):135class FileParentIsNotInRevisionAncestryScenario(BrokenRepoScenario):
@@ -164,39 +164,39 @@
164 def populate_repository(self, repo):164 def populate_repository(self, repo):
165 # make rev1a: A well-formed revision, containing 'a-file'165 # make rev1a: A well-formed revision, containing 'a-file'
166 inv = self.make_one_file_inventory(166 inv = self.make_one_file_inventory(
167 repo, 'rev1a', [], root_revision='rev1a')167 repo, b'rev1a', [], root_revision=b'rev1a')
168 self.add_revision(repo, 'rev1a', inv, [])168 self.add_revision(repo, b'rev1a', inv, [])
169169
170 # make rev1b, which has no Revision, but has an Inventory, and170 # make rev1b, which has no Revision, but has an Inventory, and
171 # a-file171 # a-file
172 inv = self.make_one_file_inventory(172 inv = self.make_one_file_inventory(
173 repo, 'rev1b', [], root_revision='rev1b')173 repo, b'rev1b', [], root_revision=b'rev1b')
174 repo.add_inventory('rev1b', inv, [])174 repo.add_inventory(b'rev1b', inv, [])
175175
176 # make rev2, with a-file.176 # make rev2, with a-file.
177 # a-file has 'rev1b' as an ancestor, even though this is not177 # a-file has 'rev1b' as an ancestor, even though this is not
178 # mentioned by 'rev1a', making it an unreferenced ancestor178 # mentioned by 'rev1a', making it an unreferenced ancestor
179 inv = self.make_one_file_inventory(179 inv = self.make_one_file_inventory(
180 repo, 'rev2', ['rev1a', 'rev1b'])180 repo, b'rev2', [b'rev1a', b'rev1b'])
181 self.add_revision(repo, 'rev2', inv, ['rev1a'])181 self.add_revision(repo, b'rev2', inv, [b'rev1a'])
182 self.versioned_root = repo.supports_rich_root()182 self.versioned_root = repo.supports_rich_root()
183183
184 def repository_text_key_references(self):184 def repository_text_key_references(self):
185 result = {}185 result = {}
186 if self.versioned_root:186 if self.versioned_root:
187 result.update({('TREE_ROOT', 'rev1a'): True,187 result.update({(b'TREE_ROOT', b'rev1a'): True,
188 ('TREE_ROOT', 'rev2'): True})188 (b'TREE_ROOT', b'rev2'): True})
189 result.update({('a-file-id', 'rev1a'): True,189 result.update({(b'a-file-id', b'rev1a'): True,
190 ('a-file-id', 'rev2'): True})190 (b'a-file-id', b'rev2'): True})
191 return result191 return result
192192
193 def repository_text_keys(self):193 def repository_text_keys(self):
194 return {('a-file-id', 'rev1a'):[NULL_REVISION],194 return {(b'a-file-id', b'rev1a'):[NULL_REVISION],
195 ('a-file-id', 'rev2'):[('a-file-id', 'rev1a')]}195 (b'a-file-id', b'rev2'):[(b'a-file-id', b'rev1a')]}
196196
197 def versioned_repository_text_keys(self):197 def versioned_repository_text_keys(self):
198 return {('TREE_ROOT', 'rev1a'):[NULL_REVISION],198 return {(b'TREE_ROOT', b'rev1a'):[NULL_REVISION],
199 ('TREE_ROOT', 'rev2'):[('TREE_ROOT', 'rev1a')]}199 (b'TREE_ROOT', b'rev2'):[(b'TREE_ROOT', b'rev1a')]}
200200
201201
202class FileParentHasInaccessibleInventoryScenario(BrokenRepoScenario):202class FileParentHasInaccessibleInventoryScenario(BrokenRepoScenario):
@@ -327,15 +327,15 @@
327 def populate_repository(self, repo):327 def populate_repository(self, repo):
328 # make rev1a: A well-formed revision, containing 'a-file'328 # make rev1a: A well-formed revision, containing 'a-file'
329 inv = self.make_one_file_inventory(329 inv = self.make_one_file_inventory(
330 repo, 'rev1a', [], root_revision='rev1a')330 repo, b'rev1a', [], root_revision=b'rev1a')
331 self.add_revision(repo, 'rev1a', inv, [])331 self.add_revision(repo, b'rev1a', inv, [])
332332
333 # make rev2, with a-file.333 # make rev2, with a-file.
334 # a-file is unmodified from rev1a, and an unreferenced rev2 file334 # a-file is unmodified from rev1a, and an unreferenced rev2 file
335 # version is present in the repository.335 # version is present in the repository.
336 self.make_one_file_inventory(336 self.make_one_file_inventory(
337 repo, 'rev2', ['rev1a'], inv_revision='rev1a')337 repo, b'rev2', [b'rev1a'], inv_revision=b'rev1a')
338 self.add_revision(repo, 'rev2', inv, ['rev1a'])338 self.add_revision(repo, b'rev2', inv, [b'rev1a'])
339339
340 # make rev3 with a-file340 # make rev3 with a-file
341 # a-file has 'rev2' as its ancestor, but the revision in 'rev2' was341 # a-file has 'rev2' as its ancestor, but the revision in 'rev2' was
@@ -344,8 +344,8 @@
344 # ghost, so only the details from rev1a are available for344 # ghost, so only the details from rev1a are available for
345 # determining whether a delta is acceptable, or a full is needed,345 # determining whether a delta is acceptable, or a full is needed,
346 # and what the correct parents are.346 # and what the correct parents are.
347 inv = self.make_one_file_inventory(repo, 'rev3', ['rev2'])347 inv = self.make_one_file_inventory(repo, b'rev3', [b'rev2'])
348 self.add_revision(repo, 'rev3', inv, ['rev1c', 'rev1a'])348 self.add_revision(repo, b'rev3', inv, [b'rev1c', b'rev1a'])
349349
350 # In rev2b, the true last-modifying-revision of a-file is rev1a,350 # In rev2b, the true last-modifying-revision of a-file is rev1a,
351 # inherited from rev2, but there is a version rev2b of the file, which351 # inherited from rev2, but there is a version rev2b of the file, which
@@ -354,8 +354,8 @@
354 # a-file-rev2b.354 # a-file-rev2b.
355 # ??? This is to test deduplication in fixing rev4355 # ??? This is to test deduplication in fixing rev4
356 inv = self.make_one_file_inventory(356 inv = self.make_one_file_inventory(
357 repo, 'rev2b', ['rev1a'], inv_revision='rev1a')357 repo, b'rev2b', [b'rev1a'], inv_revision=b'rev1a')
358 self.add_revision(repo, 'rev2b', inv, ['rev1a'])358 self.add_revision(repo, b'rev2b', inv, [b'rev1a'])
359359
360 # rev4 is for testing that when the last modified of a file in360 # rev4 is for testing that when the last modified of a file in
361 # multiple parent revisions is the same, that it only appears once361 # multiple parent revisions is the same, that it only appears once
@@ -365,13 +365,13 @@
365 # a-file, and is a merge of rev2 and rev2b, so it should end up with365 # a-file, and is a merge of rev2 and rev2b, so it should end up with
366 # a parent of just rev1a - the starting file parents list is simply366 # a parent of just rev1a - the starting file parents list is simply
367 # completely wrong.367 # completely wrong.
368 inv = self.make_one_file_inventory(repo, 'rev4', ['rev2'])368 inv = self.make_one_file_inventory(repo, b'rev4', [b'rev2'])
369 self.add_revision(repo, 'rev4', inv, ['rev2', 'rev2b'])369 self.add_revision(repo, b'rev4', inv, [b'rev2', b'rev2b'])
370370
371 # rev2c changes a-file from rev1a, so the version it of a-file it371 # rev2c changes a-file from rev1a, so the version it of a-file it
372 # introduces is a head revision when rev5 is checked.372 # introduces is a head revision when rev5 is checked.
373 inv = self.make_one_file_inventory(repo, 'rev2c', ['rev1a'])373 inv = self.make_one_file_inventory(repo, b'rev2c', [b'rev1a'])
374 self.add_revision(repo, 'rev2c', inv, ['rev1a'])374 self.add_revision(repo, b'rev2c', inv, [b'rev1a'])
375375
376 # rev5 descends from rev2 and rev2c; as rev2 does not alter a-file,376 # rev5 descends from rev2 and rev2c; as rev2 does not alter a-file,
377 # but rev2c does, this should use rev2c as the parent for the per377 # but rev2c does, this should use rev2c as the parent for the per
@@ -379,44 +379,44 @@
379 # available, because we use the heads of the revision parents for379 # available, because we use the heads of the revision parents for
380 # the inventory modification revisions of the file to determine the380 # the inventory modification revisions of the file to determine the
381 # parents for the per file graph.381 # parents for the per file graph.
382 inv = self.make_one_file_inventory(repo, 'rev5', ['rev2', 'rev2c'])382 inv = self.make_one_file_inventory(repo, b'rev5', [b'rev2', b'rev2c'])
383 self.add_revision(repo, 'rev5', inv, ['rev2', 'rev2c'])383 self.add_revision(repo, b'rev5', inv, [b'rev2', b'rev2c'])
384 self.versioned_root = repo.supports_rich_root()384 self.versioned_root = repo.supports_rich_root()
385385
386 def repository_text_key_references(self):386 def repository_text_key_references(self):
387 result = {}387 result = {}
388 if self.versioned_root:388 if self.versioned_root:
389 result.update({('TREE_ROOT', 'rev1a'): True,389 result.update({(b'TREE_ROOT', b'rev1a'): True,
390 ('TREE_ROOT', 'rev2'): True,390 (b'TREE_ROOT', b'rev2'): True,
391 ('TREE_ROOT', 'rev2b'): True,391 (b'TREE_ROOT', b'rev2b'): True,
392 ('TREE_ROOT', 'rev2c'): True,392 (b'TREE_ROOT', b'rev2c'): True,
393 ('TREE_ROOT', 'rev3'): True,393 (b'TREE_ROOT', b'rev3'): True,
394 ('TREE_ROOT', 'rev4'): True,394 (b'TREE_ROOT', b'rev4'): True,
395 ('TREE_ROOT', 'rev5'): True})395 (b'TREE_ROOT', b'rev5'): True})
396 result.update({('a-file-id', 'rev1a'): True,396 result.update({(b'a-file-id', b'rev1a'): True,
397 ('a-file-id', 'rev2c'): True,397 (b'a-file-id', b'rev2c'): True,
398 ('a-file-id', 'rev3'): True,398 (b'a-file-id', b'rev3'): True,
399 ('a-file-id', 'rev4'): True,399 (b'a-file-id', b'rev4'): True,
400 ('a-file-id', 'rev5'): True})400 (b'a-file-id', b'rev5'): True})
401 return result401 return result
402402
403 def repository_text_keys(self):403 def repository_text_keys(self):
404 return {('a-file-id', 'rev1a'): [NULL_REVISION],404 return {(b'a-file-id', b'rev1a'): [NULL_REVISION],
405 ('a-file-id', 'rev2c'): [('a-file-id', 'rev1a')],405 (b'a-file-id', b'rev2c'): [(b'a-file-id', b'rev1a')],
406 ('a-file-id', 'rev3'): [('a-file-id', 'rev1a')],406 (b'a-file-id', b'rev3'): [(b'a-file-id', b'rev1a')],
407 ('a-file-id', 'rev4'): [('a-file-id', 'rev1a')],407 (b'a-file-id', b'rev4'): [(b'a-file-id', b'rev1a')],
408 ('a-file-id', 'rev5'): [('a-file-id', 'rev2c')]}408 (b'a-file-id', b'rev5'): [(b'a-file-id', b'rev2c')]}
409409
410 def versioned_repository_text_keys(self):410 def versioned_repository_text_keys(self):
411 return {('TREE_ROOT', 'rev1a'): [NULL_REVISION],411 return {(b'TREE_ROOT', b'rev1a'): [NULL_REVISION],
412 ('TREE_ROOT', 'rev2'): [('TREE_ROOT', 'rev1a')],412 (b'TREE_ROOT', b'rev2'): [(b'TREE_ROOT', b'rev1a')],
413 ('TREE_ROOT', 'rev2b'): [('TREE_ROOT', 'rev1a')],413 (b'TREE_ROOT', b'rev2b'): [(b'TREE_ROOT', b'rev1a')],
414 ('TREE_ROOT', 'rev2c'): [('TREE_ROOT', 'rev1a')],414 (b'TREE_ROOT', b'rev2c'): [(b'TREE_ROOT', b'rev1a')],
415 ('TREE_ROOT', 'rev3'): [('TREE_ROOT', 'rev1a')],415 (b'TREE_ROOT', b'rev3'): [(b'TREE_ROOT', b'rev1a')],
416 ('TREE_ROOT', 'rev4'):416 (b'TREE_ROOT', b'rev4'):
417 [('TREE_ROOT', 'rev2'), ('TREE_ROOT', 'rev2b')],417 [(b'TREE_ROOT', b'rev2'), (b'TREE_ROOT', b'rev2b')],
418 ('TREE_ROOT', 'rev5'):418 (b'TREE_ROOT', b'rev5'):
419 [('TREE_ROOT', 'rev2'), ('TREE_ROOT', 'rev2c')]}419 [(b'TREE_ROOT', b'rev2'), (b'TREE_ROOT', b'rev2c')]}
420420
421421
422class UnreferencedFileParentsFromNoOpMergeScenario(BrokenRepoScenario):422class UnreferencedFileParentsFromNoOpMergeScenario(BrokenRepoScenario):
@@ -427,28 +427,28 @@
427 """427 """
428428
429 def all_versions_after_reconcile(self):429 def all_versions_after_reconcile(self):
430 return ('rev1a', 'rev1b', 'rev2', 'rev4')430 return (b'rev1a', b'rev1b', b'rev2', b'rev4')
431431
432 def populated_parents(self):432 def populated_parents(self):
433 return (433 return (
434 ((), 'rev1a'),434 ((), b'rev1a'),
435 ((), 'rev1b'),435 ((), b'rev1b'),
436 (('rev1a', 'rev1b'), 'rev2'),436 ((b'rev1a', b'rev1b'), b'rev2'),
437 (None, 'rev3'),437 (None, b'rev3'),
438 (('rev2',), 'rev4'),438 ((b'rev2',), b'rev4'),
439 )439 )
440440
441 def corrected_parents(self):441 def corrected_parents(self):
442 return (442 return (
443 ((), 'rev1a'),443 ((), b'rev1a'),
444 ((), 'rev1b'),444 ((), b'rev1b'),
445 ((), 'rev2'),445 ((), b'rev2'),
446 (None, 'rev3'),446 (None, b'rev3'),
447 (('rev2',), 'rev4'),447 ((b'rev2',), b'rev4'),
448 )448 )
449449
450 def corrected_fulltexts(self):450 def corrected_fulltexts(self):
451 return ['rev2']451 return [b'rev2']
452452
453 def check_regexes(self, repo):453 def check_regexes(self, repo):
454 return []454 return []
@@ -456,65 +456,66 @@
456 def populate_repository(self, repo):456 def populate_repository(self, repo):
457 # make rev1a: A well-formed revision, containing 'a-file'457 # make rev1a: A well-formed revision, containing 'a-file'
458 inv1a = self.make_one_file_inventory(458 inv1a = self.make_one_file_inventory(
459 repo, 'rev1a', [], root_revision='rev1a')459 repo, b'rev1a', [], root_revision=b'rev1a')
460 self.add_revision(repo, 'rev1a', inv1a, [])460 self.add_revision(repo, b'rev1a', inv1a, [])
461461
462 # make rev1b: A well-formed revision, containing 'a-file'462 # make rev1b: A well-formed revision, containing 'a-file'
463 # rev1b of a-file has the exact same contents as rev1a.463 # rev1b of a-file has the exact same contents as rev1a.
464 file_contents = repo.texts.get_record_stream([('a-file-id', 'rev1a')],464 file_contents = next(
465 "unordered", False).next().get_bytes_as('fulltext')465 repo.texts.get_record_stream([(b'a-file-id', b'rev1a')],
466 "unordered", False)).get_bytes_as('fulltext')
466 inv = self.make_one_file_inventory(467 inv = self.make_one_file_inventory(
467 repo, 'rev1b', [], root_revision='rev1b',468 repo, b'rev1b', [], root_revision=b'rev1b',
468 file_contents=file_contents)469 file_contents=file_contents)
469 self.add_revision(repo, 'rev1b', inv, [])470 self.add_revision(repo, b'rev1b', inv, [])
470471
471 # make rev2, a merge of rev1a and rev1b, with a-file.472 # make rev2, a merge of rev1a and rev1b, with a-file.
472 # a-file is unmodified from rev1a and rev1b, but a new version is473 # a-file is unmodified from rev1a and rev1b, but a new version is
473 # wrongly present anyway.474 # wrongly present anyway.
474 inv = self.make_one_file_inventory(475 inv = self.make_one_file_inventory(
475 repo, 'rev2', ['rev1a', 'rev1b'], inv_revision='rev1a',476 repo, b'rev2', [b'rev1a', b'rev1b'], inv_revision=b'rev1a',
476 file_contents=file_contents)477 file_contents=file_contents)
477 self.add_revision(repo, 'rev2', inv, ['rev1a', 'rev1b'])478 self.add_revision(repo, b'rev2', inv, [b'rev1a', b'rev1b'])
478479
479 # rev3: a-file unchanged from rev2, but wrongly referencing rev2 of the480 # rev3: a-file unchanged from rev2, but wrongly referencing rev2 of the
480 # file in its inventory.481 # file in its inventory.
481 inv = self.make_one_file_inventory(482 inv = self.make_one_file_inventory(
482 repo, 'rev3', ['rev2'], inv_revision='rev2',483 repo, b'rev3', [b'rev2'], inv_revision=b'rev2',
483 file_contents=file_contents, make_file_version=False)484 file_contents=file_contents, make_file_version=False)
484 self.add_revision(repo, 'rev3', inv, ['rev2'])485 self.add_revision(repo, b'rev3', inv, [b'rev2'])
485486
486 # rev4: a modification of a-file on top of rev3.487 # rev4: a modification of a-file on top of rev3.
487 inv = self.make_one_file_inventory(repo, 'rev4', ['rev2'])488 inv = self.make_one_file_inventory(repo, b'rev4', [b'rev2'])
488 self.add_revision(repo, 'rev4', inv, ['rev3'])489 self.add_revision(repo, b'rev4', inv, [b'rev3'])
489 self.versioned_root = repo.supports_rich_root()490 self.versioned_root = repo.supports_rich_root()
490491
491 def repository_text_key_references(self):492 def repository_text_key_references(self):
492 result = {}493 result = {}
493 if self.versioned_root:494 if self.versioned_root:
494 result.update({('TREE_ROOT', 'rev1a'): True,495 result.update({(b'TREE_ROOT', b'rev1a'): True,
495 ('TREE_ROOT', 'rev1b'): True,496 (b'TREE_ROOT', b'rev1b'): True,
496 ('TREE_ROOT', 'rev2'): True,497 (b'TREE_ROOT', b'rev2'): True,
497 ('TREE_ROOT', 'rev3'): True,498 (b'TREE_ROOT', b'rev3'): True,
498 ('TREE_ROOT', 'rev4'): True})499 (b'TREE_ROOT', b'rev4'): True})
499 result.update({('a-file-id', 'rev1a'): True,500 result.update({(b'a-file-id', b'rev1a'): True,
500 ('a-file-id', 'rev1b'): True,501 (b'a-file-id', b'rev1b'): True,
501 ('a-file-id', 'rev2'): False,502 (b'a-file-id', b'rev2'): False,
502 ('a-file-id', 'rev4'): True})503 (b'a-file-id', b'rev4'): True})
503 return result504 return result
504505
505 def repository_text_keys(self):506 def repository_text_keys(self):
506 return {('a-file-id', 'rev1a'): [NULL_REVISION],507 return {(b'a-file-id', b'rev1a'): [NULL_REVISION],
507 ('a-file-id', 'rev1b'): [NULL_REVISION],508 (b'a-file-id', b'rev1b'): [NULL_REVISION],
508 ('a-file-id', 'rev2'): [NULL_REVISION],509 (b'a-file-id', b'rev2'): [NULL_REVISION],
509 ('a-file-id', 'rev4'): [('a-file-id', 'rev2')]}510 (b'a-file-id', b'rev4'): [(b'a-file-id', b'rev2')]}
510511
511 def versioned_repository_text_keys(self):512 def versioned_repository_text_keys(self):
512 return {('TREE_ROOT', 'rev1a'): [NULL_REVISION],513 return {(b'TREE_ROOT', b'rev1a'): [NULL_REVISION],
513 ('TREE_ROOT', 'rev1b'): [NULL_REVISION],514 (b'TREE_ROOT', b'rev1b'): [NULL_REVISION],
514 ('TREE_ROOT', 'rev2'):515 (b'TREE_ROOT', b'rev2'):
515 [('TREE_ROOT', 'rev1a'), ('TREE_ROOT', 'rev1b')],516 [(b'TREE_ROOT', b'rev1a'), (b'TREE_ROOT', b'rev1b')],
516 ('TREE_ROOT', 'rev3'): [('TREE_ROOT', 'rev2')],517 (b'TREE_ROOT', b'rev3'): [(b'TREE_ROOT', b'rev2')],
517 ('TREE_ROOT', 'rev4'): [('TREE_ROOT', 'rev3')]}518 (b'TREE_ROOT', b'rev4'): [(b'TREE_ROOT', b'rev3')]}
518519
519520
520class TooManyParentsScenario(BrokenRepoScenario):521class TooManyParentsScenario(BrokenRepoScenario):
@@ -525,19 +526,19 @@
525 """526 """
526527
527 def all_versions_after_reconcile(self):528 def all_versions_after_reconcile(self):
528 return ('bad-parent', 'good-parent', 'broken-revision')529 return (b'bad-parent', b'good-parent', b'broken-revision')
529530
530 def populated_parents(self):531 def populated_parents(self):
531 return (532 return (
532 ((), 'bad-parent'),533 ((), b'bad-parent'),
533 (('bad-parent',), 'good-parent'),534 ((b'bad-parent',), b'good-parent'),
534 (('good-parent', 'bad-parent'), 'broken-revision'))535 ((b'good-parent', b'bad-parent'), b'broken-revision'))
535536
536 def corrected_parents(self):537 def corrected_parents(self):
537 return (538 return (
538 ((), 'bad-parent'),539 ((), b'bad-parent'),
539 (('bad-parent',), 'good-parent'),540 ((b'bad-parent',), b'good-parent'),
540 (('good-parent',), 'broken-revision'))541 ((b'good-parent',), b'broken-revision'))
541542
542 def check_regexes(self, repo):543 def check_regexes(self, repo):
543 if repo.supports_rich_root():544 if repo.supports_rich_root():
@@ -554,40 +555,40 @@
554555
555 def populate_repository(self, repo):556 def populate_repository(self, repo):
556 inv = self.make_one_file_inventory(557 inv = self.make_one_file_inventory(
557 repo, 'bad-parent', (), root_revision='bad-parent')558 repo, b'bad-parent', (), root_revision=b'bad-parent')
558 self.add_revision(repo, 'bad-parent', inv, ())559 self.add_revision(repo, b'bad-parent', inv, ())
559560
560 inv = self.make_one_file_inventory(561 inv = self.make_one_file_inventory(
561 repo, 'good-parent', ('bad-parent',))562 repo, b'good-parent', (b'bad-parent',))
562 self.add_revision(repo, 'good-parent', inv, ('bad-parent',))563 self.add_revision(repo, b'good-parent', inv, (b'bad-parent',))
563564
564 inv = self.make_one_file_inventory(565 inv = self.make_one_file_inventory(
565 repo, 'broken-revision', ('good-parent', 'bad-parent'))566 repo, b'broken-revision', (b'good-parent', b'bad-parent'))
566 self.add_revision(repo, 'broken-revision', inv, ('good-parent',))567 self.add_revision(repo, b'broken-revision', inv, (b'good-parent',))
567 self.versioned_root = repo.supports_rich_root()568 self.versioned_root = repo.supports_rich_root()
568569
569 def repository_text_key_references(self):570 def repository_text_key_references(self):
570 result = {}571 result = {}
571 if self.versioned_root:572 if self.versioned_root:
572 result.update({('TREE_ROOT', 'bad-parent'): True,573 result.update({(b'TREE_ROOT', b'bad-parent'): True,
573 ('TREE_ROOT', 'broken-revision'): True,574 (b'TREE_ROOT', b'broken-revision'): True,
574 ('TREE_ROOT', 'good-parent'): True})575 (b'TREE_ROOT', b'good-parent'): True})
575 result.update({('a-file-id', 'bad-parent'): True,576 result.update({(b'a-file-id', b'bad-parent'): True,
576 ('a-file-id', 'broken-revision'): True,577 (b'a-file-id', b'broken-revision'): True,
577 ('a-file-id', 'good-parent'): True})578 (b'a-file-id', b'good-parent'): True})
578 return result579 return result
579580
580 def repository_text_keys(self):581 def repository_text_keys(self):
581 return {('a-file-id', 'bad-parent'): [NULL_REVISION],582 return {(b'a-file-id', b'bad-parent'): [NULL_REVISION],
582 ('a-file-id', 'broken-revision'):583 (b'a-file-id', b'broken-revision'):
583 [('a-file-id', 'good-parent')],584 [(b'a-file-id', b'good-parent')],
584 ('a-file-id', 'good-parent'): [('a-file-id', 'bad-parent')]}585 (b'a-file-id', b'good-parent'): [('a-file-id', 'bad-parent')]}
585586
586 def versioned_repository_text_keys(self):587 def versioned_repository_text_keys(self):
587 return {('TREE_ROOT', 'bad-parent'): [NULL_REVISION],588 return {(b'TREE_ROOT', b'bad-parent'): [NULL_REVISION],
588 ('TREE_ROOT', 'broken-revision'):589 (b'TREE_ROOT', b'broken-revision'):
589 [('TREE_ROOT', 'good-parent')],590 [(b'TREE_ROOT', 'good-parent')],
590 ('TREE_ROOT', 'good-parent'): [('TREE_ROOT', 'bad-parent')]}591 (b'TREE_ROOT', b'good-parent'): [(b'TREE_ROOT', b'bad-parent')]}
591592
592593
593class ClaimedFileParentDidNotModifyFileScenario(BrokenRepoScenario):594class ClaimedFileParentDidNotModifyFileScenario(BrokenRepoScenario):
@@ -601,19 +602,19 @@
601 """602 """
602603
603 def all_versions_after_reconcile(self):604 def all_versions_after_reconcile(self):
604 return ('basis', 'current')605 return (b'basis', b'current')
605606
606 def populated_parents(self):607 def populated_parents(self):
607 return (608 return (
608 ((), 'basis'),609 ((), b'basis'),
609 (('basis',), 'modified-something-else'),610 ((b'basis',), b'modified-something-else'),
610 (('modified-something-else',), 'current'))611 ((b'modified-something-else',), b'current'))
611612
612 def corrected_parents(self):613 def corrected_parents(self):
613 return (614 return (
614 ((), 'basis'),615 ((), b'basis'),
615 (None, 'modified-something-else'),616 (None, b'modified-something-else'),
616 (('basis',), 'current'))617 ((b'basis',), b'current'))
617618
618 def check_regexes(self, repo):619 def check_regexes(self, repo):
619 if repo.supports_rich_root():620 if repo.supports_rich_root():
@@ -629,44 +630,44 @@
629 )630 )
630631
631 def populate_repository(self, repo):632 def populate_repository(self, repo):
632 inv = self.make_one_file_inventory(repo, 'basis', ())633 inv = self.make_one_file_inventory(repo, b'basis', ())
633 self.add_revision(repo, 'basis', inv, ())634 self.add_revision(repo, b'basis', inv, ())
634635
635 # 'modified-something-else' is a correctly recorded revision, but it636 # 'modified-something-else' is a correctly recorded revision, but it
636 # does not modify the file we are looking at, so the inventory for that637 # does not modify the file we are looking at, so the inventory for that
637 # file in this revision points to 'basis'.638 # file in this revision points to 'basis'.
638 inv = self.make_one_file_inventory(639 inv = self.make_one_file_inventory(
639 repo, 'modified-something-else', ('basis',), inv_revision='basis')640 repo, b'modified-something-else', (b'basis',), inv_revision=b'basis')
640 self.add_revision(repo, 'modified-something-else', inv, ('basis',))641 self.add_revision(repo, b'modified-something-else', inv, (b'basis',))
641642
642 # The 'current' revision has 'modified-something-else' as its parent,643 # The 'current' revision has 'modified-something-else' as its parent,
643 # but the 'current' version of 'a-file' should have 'basis' as its644 # but the 'current' version of 'a-file' should have 'basis' as its
644 # parent.645 # parent.
645 inv = self.make_one_file_inventory(646 inv = self.make_one_file_inventory(
646 repo, 'current', ('modified-something-else',))647 repo, b'current', (b'modified-something-else',))
647 self.add_revision(repo, 'current', inv, ('modified-something-else',))648 self.add_revision(repo, b'current', inv, (b'modified-something-else',))
648 self.versioned_root = repo.supports_rich_root()649 self.versioned_root = repo.supports_rich_root()
649650
650 def repository_text_key_references(self):651 def repository_text_key_references(self):
651 result = {}652 result = {}
652 if self.versioned_root:653 if self.versioned_root:
653 result.update({('TREE_ROOT', 'basis'): True,654 result.update({(b'TREE_ROOT', b'basis'): True,
654 ('TREE_ROOT', 'current'): True,655 (b'TREE_ROOT', b'current'): True,
655 ('TREE_ROOT', 'modified-something-else'): True})656 (b'TREE_ROOT', b'modified-something-else'): True})
656 result.update({('a-file-id', 'basis'): True,657 result.update({(b'a-file-id', b'basis'): True,
657 ('a-file-id', 'current'): True})658 (b'a-file-id', b'current'): True})
658 return result659 return result
659660
660 def repository_text_keys(self):661 def repository_text_keys(self):
661 return {('a-file-id', 'basis'): [NULL_REVISION],662 return {(b'a-file-id', b'basis'): [NULL_REVISION],
662 ('a-file-id', 'current'): [('a-file-id', 'basis')]}663 (b'a-file-id', b'current'): [(b'a-file-id', b'basis')]}
663664
664 def versioned_repository_text_keys(self):665 def versioned_repository_text_keys(self):
665 return {('TREE_ROOT', 'basis'): ['null:'],666 return {(b'TREE_ROOT', b'basis'): [b'null:'],
666 ('TREE_ROOT', 'current'):667 (b'TREE_ROOT', b'current'):
667 [('TREE_ROOT', 'modified-something-else')],668 [(b'TREE_ROOT', b'modified-something-else')],
668 ('TREE_ROOT', 'modified-something-else'):669 (b'TREE_ROOT', b'modified-something-else'):
669 [('TREE_ROOT', 'basis')]}670 [(b'TREE_ROOT', b'basis')]}
670671
671672
672class IncorrectlyOrderedParentsScenario(BrokenRepoScenario):673class IncorrectlyOrderedParentsScenario(BrokenRepoScenario):
@@ -682,22 +683,22 @@
682 """683 """
683684
684 def all_versions_after_reconcile(self):685 def all_versions_after_reconcile(self):
685 return ['parent-1', 'parent-2', 'broken-revision-1-2',686 return [b'parent-1', b'parent-2', b'broken-revision-1-2',
686 'broken-revision-2-1']687 b'broken-revision-2-1']
687688
688 def populated_parents(self):689 def populated_parents(self):
689 return (690 return (
690 ((), 'parent-1'),691 ((), b'parent-1'),
691 ((), 'parent-2'),692 ((), b'parent-2'),
692 (('parent-2', 'parent-1'), 'broken-revision-1-2'),693 ((b'parent-2', b'parent-1'), b'broken-revision-1-2'),
693 (('parent-1', 'parent-2'), 'broken-revision-2-1'))694 ((b'parent-1', b'parent-2'), b'broken-revision-2-1'))
694695
695 def corrected_parents(self):696 def corrected_parents(self):
696 return (697 return (
697 ((), 'parent-1'),698 ((), b'parent-1'),
698 ((), 'parent-2'),699 ((), b'parent-2'),
699 (('parent-1', 'parent-2'), 'broken-revision-1-2'),700 ((b'parent-1', b'parent-2'), b'broken-revision-1-2'),
700 (('parent-2', 'parent-1'), 'broken-revision-2-1'))701 ((b'parent-2', b'parent-1'), b'broken-revision-2-1'))
701702
702 def check_regexes(self, repo):703 def check_regexes(self, repo):
703 if repo.supports_rich_root():704 if repo.supports_rich_root():
@@ -716,51 +717,51 @@
716 r"\('parent-2', 'parent-1'\)")717 r"\('parent-2', 'parent-1'\)")
717718
718 def populate_repository(self, repo):719 def populate_repository(self, repo):
719 inv = self.make_one_file_inventory(repo, 'parent-1', [])720 inv = self.make_one_file_inventory(repo, b'parent-1', [])
720 self.add_revision(repo, 'parent-1', inv, [])721 self.add_revision(repo, b'parent-1', inv, [])
721722
722 inv = self.make_one_file_inventory(repo, 'parent-2', [])723 inv = self.make_one_file_inventory(repo, b'parent-2', [])
723 self.add_revision(repo, 'parent-2', inv, [])724 self.add_revision(repo, b'parent-2', inv, [])
724725
725 inv = self.make_one_file_inventory(726 inv = self.make_one_file_inventory(
726 repo, 'broken-revision-1-2', ['parent-2', 'parent-1'])727 repo, b'broken-revision-1-2', [b'parent-2', b'parent-1'])
727 self.add_revision(728 self.add_revision(
728 repo, 'broken-revision-1-2', inv, ['parent-1', 'parent-2'])729 repo, b'broken-revision-1-2', inv, [b'parent-1', b'parent-2'])
729730
730 inv = self.make_one_file_inventory(731 inv = self.make_one_file_inventory(
731 repo, 'broken-revision-2-1', ['parent-1', 'parent-2'])732 repo, b'broken-revision-2-1', [b'parent-1', b'parent-2'])
732 self.add_revision(733 self.add_revision(
733 repo, 'broken-revision-2-1', inv, ['parent-2', 'parent-1'])734 repo, b'broken-revision-2-1', inv, [b'parent-2', b'parent-1'])
734 self.versioned_root = repo.supports_rich_root()735 self.versioned_root = repo.supports_rich_root()
735736
736 def repository_text_key_references(self):737 def repository_text_key_references(self):
737 result = {}738 result = {}
738 if self.versioned_root:739 if self.versioned_root:
739 result.update({('TREE_ROOT', 'broken-revision-1-2'): True,740 result.update({(b'TREE_ROOT', b'broken-revision-1-2'): True,
740 ('TREE_ROOT', 'broken-revision-2-1'): True,741 (b'TREE_ROOT', b'broken-revision-2-1'): True,
741 ('TREE_ROOT', 'parent-1'): True,742 (b'TREE_ROOT', b'parent-1'): True,
742 ('TREE_ROOT', 'parent-2'): True})743 (b'TREE_ROOT', b'parent-2'): True})
743 result.update({('a-file-id', 'broken-revision-1-2'): True,744 result.update({(b'a-file-id', b'broken-revision-1-2'): True,
744 ('a-file-id', 'broken-revision-2-1'): True,745 (b'a-file-id', b'broken-revision-2-1'): True,
745 ('a-file-id', 'parent-1'): True,746 (b'a-file-id', b'parent-1'): True,
746 ('a-file-id', 'parent-2'): True})747 (b'a-file-id', b'parent-2'): True})
747 return result748 return result
748749
749 def repository_text_keys(self):750 def repository_text_keys(self):
750 return {('a-file-id', 'broken-revision-1-2'):751 return {(b'a-file-id', b'broken-revision-1-2'):
751 [('a-file-id', 'parent-1'), ('a-file-id', 'parent-2')],752 [(b'a-file-id', b'parent-1'), (b'a-file-id', b'parent-2')],
752 ('a-file-id', 'broken-revision-2-1'):753 (b'a-file-id', b'broken-revision-2-1'):
753 [('a-file-id', 'parent-2'), ('a-file-id', 'parent-1')],754 [(b'a-file-id', b'parent-2'), (b'a-file-id', b'parent-1')],
754 ('a-file-id', 'parent-1'): [NULL_REVISION],755 (b'a-file-id', b'parent-1'): [NULL_REVISION],
755 ('a-file-id', 'parent-2'): [NULL_REVISION]}756 (b'a-file-id', b'parent-2'): [NULL_REVISION]}
756757
757 def versioned_repository_text_keys(self):758 def versioned_repository_text_keys(self):
758 return {('TREE_ROOT', 'broken-revision-1-2'):759 return {(b'TREE_ROOT', b'broken-revision-1-2'):
759 [('TREE_ROOT', 'parent-1'), ('TREE_ROOT', 'parent-2')],760 [(b'TREE_ROOT', b'parent-1'), (b'TREE_ROOT', b'parent-2')],
760 ('TREE_ROOT', 'broken-revision-2-1'):761 (b'TREE_ROOT', b'broken-revision-2-1'):
761 [('TREE_ROOT', 'parent-2'), ('TREE_ROOT', 'parent-1')],762 [(b'TREE_ROOT', b'parent-2'), (b'TREE_ROOT', b'parent-1')],
762 ('TREE_ROOT', 'parent-1'): [NULL_REVISION],763 (b'TREE_ROOT', b'parent-1'): [NULL_REVISION],
763 ('TREE_ROOT', 'parent-2'): [NULL_REVISION]}764 (b'TREE_ROOT', b'parent-2'): [NULL_REVISION]}
764765
765766
766all_broken_scenario_classes = [767all_broken_scenario_classes = [
@@ -792,8 +793,7 @@
792 def make_populated_repository(self, factory):793 def make_populated_repository(self, factory):
793 """Create a new repository populated by the given factory."""794 """Create a new repository populated by the given factory."""
794 repo = self.make_repository('broken-repo')795 repo = self.make_repository('broken-repo')
795 repo.lock_write()796 with repo.lock_write():
796 try:
797 repo.start_write_group()797 repo.start_write_group()
798 try:798 try:
799 factory(repo)799 factory(repo)
@@ -802,8 +802,6 @@
802 except:802 except:
803 repo.abort_write_group()803 repo.abort_write_group()
804 raise804 raise
805 finally:
806 repo.unlock()
807805
808 def add_revision(self, repo, revision_id, inv, parent_ids):806 def add_revision(self, repo, revision_id, inv, parent_ids):
809 """Add a revision with a given inventory and parents to a repository.807 """Add a revision with a given inventory and parents to a repository.
@@ -847,15 +845,15 @@
847 inv = Inventory(revision_id=revision)845 inv = Inventory(revision_id=revision)
848 if root_revision is not None:846 if root_revision is not None:
849 inv.root.revision = root_revision847 inv.root.revision = root_revision
850 file_id = 'a-file-id'848 file_id = b'a-file-id'
851 entry = InventoryFile(file_id, 'a file name', 'TREE_ROOT')849 entry = InventoryFile(file_id, 'a file name', b'TREE_ROOT')
852 if inv_revision is not None:850 if inv_revision is not None:
853 entry.revision = inv_revision851 entry.revision = inv_revision
854 else:852 else:
855 entry.revision = revision853 entry.revision = revision
856 entry.text_size = 0854 entry.text_size = 0
857 if file_contents is None:855 if file_contents is None:
858 file_contents = '%sline\n' % entry.revision856 file_contents = b'%sline\n' % entry.revision
859 entry.text_sha1 = osutils.sha_string(file_contents)857 entry.text_sha1 = osutils.sha_string(file_contents)
860 inv.add(entry)858 inv.add(entry)
861 if make_file_version:859 if make_file_version:
@@ -869,13 +867,13 @@
869 "Format does not support text parent reconciliation")867 "Format does not support text parent reconciliation")
870868
871 def file_parents(self, repo, revision_id):869 def file_parents(self, repo, revision_id):
872 key = ('a-file-id', revision_id)870 key = (b'a-file-id', revision_id)
873 parent_map = repo.texts.get_parent_map([key])871 parent_map = repo.texts.get_parent_map([key])
874 return tuple(parent[-1] for parent in parent_map[key])872 return tuple(parent[-1] for parent in parent_map[key])
875873
876 def assertFileVersionAbsent(self, repo, revision_id):874 def assertFileVersionAbsent(self, repo, revision_id):
877 self.assertEqual({},875 self.assertEqual({},
878 repo.texts.get_parent_map([('a-file-id', revision_id)]))876 repo.texts.get_parent_map([(b'a-file-id', revision_id)]))
879877
880 def assertParentsMatch(self, expected_parents_for_versions, repo,878 def assertParentsMatch(self, expected_parents_for_versions, repo,
881 when_description):879 when_description):
@@ -907,7 +905,7 @@
907905
908 :returns: A dict of `{version: hash}`.906 :returns: A dict of `{version: hash}`.
909 """907 """
910 keys = [('a-file-id', version) for version in versions]908 keys = [(b'a-file-id', version) for version in versions]
911 return repo.texts.get_sha1s(keys)909 return repo.texts.get_sha1s(keys)
912910
913 def test_reconcile_behaviour(self):911 def test_reconcile_behaviour(self):
@@ -915,19 +913,15 @@
915 and after.913 and after.
916 """914 """
917 repo, scenario = self.prepare_test_repository()915 repo, scenario = self.prepare_test_repository()
918 repo.lock_read()916 with repo.lock_read():
919 try:
920 self.assertParentsMatch(scenario.populated_parents(), repo,917 self.assertParentsMatch(scenario.populated_parents(), repo,
921 'before')918 b'before')
922 vf_shas = self.shas_for_versions_of_file(919 vf_shas = self.shas_for_versions_of_file(
923 repo, scenario.all_versions_after_reconcile())920 repo, scenario.all_versions_after_reconcile())
924 finally:
925 repo.unlock()
926 result = repo.reconcile(thorough=True)921 result = repo.reconcile(thorough=True)
927 repo.lock_read()922 with repo.lock_read():
928 try:
929 self.assertParentsMatch(scenario.corrected_parents(), repo,923 self.assertParentsMatch(scenario.corrected_parents(), repo,
930 'after')924 b'after')
931 # The contents of the versions in the versionedfile should be the925 # The contents of the versions in the versionedfile should be the
932 # same after the reconcile.926 # same after the reconcile.
933 self.assertEqual(927 self.assertEqual(
@@ -943,14 +937,12 @@
943 # (we specify it this way because a store can use arbitrary937 # (we specify it this way because a store can use arbitrary
944 # compression pointers in principle.938 # compression pointers in principle.
945 for file_version in scenario.corrected_fulltexts():939 for file_version in scenario.corrected_fulltexts():
946 key = ('a-file-id', file_version)940 key = (b'a-file-id', file_version)
947 self.assertEqual({key:()}, repo.texts.get_parent_map([key]))941 self.assertEqual({key:()}, repo.texts.get_parent_map([key]))
948 self.assertIsInstance(942 self.assertIsInstance(
949 repo.texts.get_record_stream([key], 'unordered',943 repo.texts.get_record_stream([key], 'unordered',
950 True).next().get_bytes_as('fulltext'),944 True).next().get_bytes_as('fulltext'),
951 str)945 str)
952 finally:
953 repo.unlock()
954946
955 def test_check_behaviour(self):947 def test_check_behaviour(self):
956 """Populate a repository and check it, and verify the output."""948 """Populate a repository and check it, and verify the output."""
957949
=== modified file 'breezy/tests/per_repository_vf/test_fileid_involved.py'
--- breezy/tests/per_repository_vf/test_fileid_involved.py 2018-05-22 02:05:12 +0000
+++ breezy/tests/per_repository_vf/test_fileid_involved.py 2018-06-21 23:03:57 +0000
@@ -96,32 +96,32 @@
96 raise tests.TestNotApplicable('format does not support stacking')96 raise tests.TestNotApplicable('format does not support stacking')
97 builder.start_series()97 builder.start_series()
98 builder.build_snapshot(None, [98 builder.build_snapshot(None, [
99 ('add', ('', 'root-id', 'directory', None)),99 ('add', ('', b'root-id', 'directory', None)),
100 ('add', ('file', 'file-id', 'file', 'contents\n'))],100 ('add', ('file', b'file-id', 'file', b'contents\n'))],
101 revision_id=b'A-id')101 revision_id=b'A-id')
102 builder.build_snapshot(['A-id'], [102 builder.build_snapshot([b'A-id'], [
103 ('modify', ('file', 'new-content\n'))],103 ('modify', ('file', b'new-content\n'))],
104 revision_id=b'B-id')104 revision_id=b'B-id')
105 builder.build_snapshot(['B-id'], [105 builder.build_snapshot([b'B-id'], [
106 ('modify', ('file', 'yet more content\n'))],106 ('modify', ('file', b'yet more content\n'))],
107 revision_id=b'C-id')107 revision_id=b'C-id')
108 builder.finish_series()108 builder.finish_series()
109 source_b = builder.get_branch()109 source_b = builder.get_branch()
110 source_b.lock_read()110 source_b.lock_read()
111 self.addCleanup(source_b.unlock)111 self.addCleanup(source_b.unlock)
112 base = self.make_branch('base')112 base = self.make_branch('base')
113 base.pull(source_b, stop_revision='B-id')113 base.pull(source_b, stop_revision=b'B-id')
114 stacked = self.make_branch('stacked')114 stacked = self.make_branch('stacked')
115 stacked.set_stacked_on_url('../base')115 stacked.set_stacked_on_url('../base')
116 stacked.pull(source_b, stop_revision='C-id')116 stacked.pull(source_b, stop_revision=b'C-id')
117117
118 stacked.lock_read()118 stacked.lock_read()
119 self.addCleanup(stacked.unlock)119 self.addCleanup(stacked.unlock)
120 repo = stacked.repository120 repo = stacked.repository
121 keys = {'file-id': {'A-id'}}121 keys = {'file-id': {b'A-id'}}
122 if stacked.repository.supports_rich_root():122 if stacked.repository.supports_rich_root():
123 keys['root-id'] = {'A-id'}123 keys['root-id'] = {b'A-id'}
124 self.assertEqual(keys, repo.fileids_altered_by_revision_ids(['A-id']))124 self.assertEqual(keys, repo.fileids_altered_by_revision_ids([b'A-id']))
125125
126126
127class FileIdInvolvedBase(TestCaseWithRepository):127class FileIdInvolvedBase(TestCaseWithRepository):
128128
=== modified file 'breezy/tests/per_repository_vf/test_repository.py'
--- breezy/tests/per_repository_vf/test_repository.py 2018-05-22 02:05:12 +0000
+++ breezy/tests/per_repository_vf/test_repository.py 2018-06-21 23:03:57 +0000
@@ -265,13 +265,12 @@
265 """Test the basic behaviour of the text store."""265 """Test the basic behaviour of the text store."""
266 tree = self.make_branch_and_tree('tree')266 tree = self.make_branch_and_tree('tree')
267 repo = tree.branch.repository267 repo = tree.branch.repository
268 file_id = "Foo:Bar"268 file_id = b"Foo:Bar"
269 file_key = (file_id,)269 file_key = (file_id,)
270 tree.lock_write()270 with tree.lock_write():
271 try:
272 self.assertEqual(set(), set(repo.texts.keys()))271 self.assertEqual(set(), set(repo.texts.keys()))
273 tree.add(['foo'], [file_id], ['file'])272 tree.add(['foo'], [file_id], ['file'])
274 tree.put_file_bytes_non_atomic('foo', 'content\n', file_id=file_id)273 tree.put_file_bytes_non_atomic('foo', b'content\n', file_id=file_id)
275 try:274 try:
276 rev_key = (tree.commit("foo"),)275 rev_key = (tree.commit("foo"),)
277 except errors.IllegalPath:276 except errors.IllegalPath:
@@ -290,20 +289,18 @@
290 self.assertEqual(keys, set(repo.texts.keys()))289 self.assertEqual(keys, set(repo.texts.keys()))
291 self.assertEqual(parents,290 self.assertEqual(parents,
292 repo.texts.get_parent_map(repo.texts.keys()))291 repo.texts.get_parent_map(repo.texts.keys()))
293 finally:
294 tree.unlock()
295 tree2 = self.make_branch_and_tree('tree2')292 tree2 = self.make_branch_and_tree('tree2')
296 tree2.pull(tree.branch)293 tree2.pull(tree.branch)
297 tree2.put_file_bytes_non_atomic('foo', 'right\n', file_id='Foo:Bar')294 tree2.put_file_bytes_non_atomic('foo', b'right\n', file_id=b'Foo:Bar')
298 right_key = (tree2.commit('right'),)295 right_key = (tree2.commit('right'),)
299 keys.add(file_key + right_key)296 keys.add(file_key + right_key)
300 parents[file_key + right_key] = (file_key + rev_key,)297 parents[file_key + right_key] = (file_key + rev_key,)
301 tree.put_file_bytes_non_atomic('foo', 'left\n', file_id='Foo:Bar')298 tree.put_file_bytes_non_atomic('foo', b'left\n', file_id=b'Foo:Bar')
302 left_key = (tree.commit('left'),)299 left_key = (tree.commit('left'),)
303 keys.add(file_key + left_key)300 keys.add(file_key + left_key)
304 parents[file_key + left_key] = (file_key + rev_key,)301 parents[file_key + left_key] = (file_key + rev_key,)
305 tree.merge_from_branch(tree2.branch)302 tree.merge_from_branch(tree2.branch)
306 tree.put_file_bytes_non_atomic('foo', 'merged\n', file_id='Foo:Bar')303 tree.put_file_bytes_non_atomic('foo', b'merged\n', file_id=b'Foo:Bar')
307 try:304 try:
308 tree.auto_resolve()305 tree.auto_resolve()
309 except errors.UnsupportedOperation:306 except errors.UnsupportedOperation:
310307
=== modified file 'breezy/tests/per_transport.py'
--- breezy/tests/per_transport.py 2018-04-01 18:29:09 +0000
+++ breezy/tests/per_transport.py 2018-06-21 23:03:57 +0000
@@ -174,9 +174,9 @@
174 t = self.get_transport()174 t = self.get_transport()
175175
176 files = ['a']176 files = ['a']
177 content = 'contents of a\n'177 content = b'contents of a\n'
178 self.build_tree(['a'], transport=t, line_endings='binary')178 self.build_tree(['a'], transport=t, line_endings='binary')
179 self.check_transport_contents('contents of a\n', t, 'a')179 self.check_transport_contents(b'contents of a\n', t, 'a')
180 f = t.get('a')180 f = t.get('a')
181 self.assertEqual(content, f.read())181 self.assertEqual(content, f.read())
182182
@@ -220,13 +220,13 @@
220 t = self.get_transport()220 t = self.get_transport()
221221
222 files = ['a', 'b', 'e', 'g']222 files = ['a', 'b', 'e', 'g']
223 contents = ['contents of a\n',223 contents = [b'contents of a\n',
224 'contents of b\n',224 b'contents of b\n',
225 'contents of e\n',225 b'contents of e\n',
226 'contents of g\n',226 b'contents of g\n',
227 ]227 ]
228 self.build_tree(files, transport=t, line_endings='binary')228 self.build_tree(files, transport=t, line_endings='binary')
229 self.check_transport_contents('contents of a\n', t, 'a')229 self.check_transport_contents(b'contents of a\n', t, 'a')
230230
231 for content, fname in zip(contents, files):231 for content, fname in zip(contents, files):
232 self.assertEqual(content, t.get_bytes(fname))232 self.assertEqual(content, t.get_bytes(fname))
@@ -272,11 +272,11 @@
272272
273 t.put_bytes('a', b'some text for a\n')273 t.put_bytes('a', b'some text for a\n')
274 self.assertTrue(t.has('a'))274 self.assertTrue(t.has('a'))
275 self.check_transport_contents('some text for a\n', t, 'a')275 self.check_transport_contents(b'some text for a\n', t, 'a')
276276
277 # The contents should be overwritten277 # The contents should be overwritten
278 t.put_bytes('a', b'new text for a\n')278 t.put_bytes('a', b'new text for a\n')
279 self.check_transport_contents('new text for a\n', t, 'a')279 self.check_transport_contents(b'new text for a\n', t, 'a')
280280
281 self.assertRaises(NoSuchFile,281 self.assertRaises(NoSuchFile,
282 t.put_bytes, 'path/doesnt/exist/c', b'contents')282 t.put_bytes, 'path/doesnt/exist/c', b'contents')
@@ -286,37 +286,37 @@
286286
287 if t.is_readonly():287 if t.is_readonly():
288 self.assertRaises(TransportNotPossible,288 self.assertRaises(TransportNotPossible,
289 t.put_bytes_non_atomic, 'a', 'some text for a\n')289 t.put_bytes_non_atomic, 'a', b'some text for a\n')
290 return290 return
291291
292 self.assertFalse(t.has('a'))292 self.assertFalse(t.has('a'))
293 t.put_bytes_non_atomic('a', 'some text for a\n')293 t.put_bytes_non_atomic('a', b'some text for a\n')
294 self.assertTrue(t.has('a'))294 self.assertTrue(t.has('a'))
295 self.check_transport_contents('some text for a\n', t, 'a')295 self.check_transport_contents(b'some text for a\n', t, 'a')
296 # Put also replaces contents296 # Put also replaces contents
297 t.put_bytes_non_atomic('a', 'new\ncontents for\na\n')297 t.put_bytes_non_atomic('a', b'new\ncontents for\na\n')
298 self.check_transport_contents('new\ncontents for\na\n', t, 'a')298 self.check_transport_contents(b'new\ncontents for\na\n', t, 'a')
299299
300 # Make sure we can create another file300 # Make sure we can create another file
301 t.put_bytes_non_atomic('d', 'contents for\nd\n')301 t.put_bytes_non_atomic('d', b'contents for\nd\n')
302 # And overwrite 'a' with empty contents302 # And overwrite 'a' with empty contents
303 t.put_bytes_non_atomic('a', '')303 t.put_bytes_non_atomic('a', b'')
304 self.check_transport_contents('contents for\nd\n', t, 'd')304 self.check_transport_contents(b'contents for\nd\n', t, 'd')
305 self.check_transport_contents('', t, 'a')305 self.check_transport_contents(b'', t, 'a')
306306
307 self.assertRaises(NoSuchFile, t.put_bytes_non_atomic, 'no/such/path',307 self.assertRaises(NoSuchFile, t.put_bytes_non_atomic, 'no/such/path',
308 'contents\n')308 b'contents\n')
309 # Now test the create_parent flag309 # Now test the create_parent flag
310 self.assertRaises(NoSuchFile, t.put_bytes_non_atomic, 'dir/a',310 self.assertRaises(NoSuchFile, t.put_bytes_non_atomic, 'dir/a',
311 'contents\n')311 b'contents\n')
312 self.assertFalse(t.has('dir/a'))312 self.assertFalse(t.has('dir/a'))
313 t.put_bytes_non_atomic('dir/a', 'contents for dir/a\n',313 t.put_bytes_non_atomic('dir/a', b'contents for dir/a\n',
314 create_parent_dir=True)314 create_parent_dir=True)
315 self.check_transport_contents('contents for dir/a\n', t, 'dir/a')315 self.check_transport_contents(b'contents for dir/a\n', t, 'dir/a')
316316
317 # But we still get NoSuchFile if we can't make the parent dir317 # But we still get NoSuchFile if we can't make the parent dir
318 self.assertRaises(NoSuchFile, t.put_bytes_non_atomic, 'not/there/a',318 self.assertRaises(NoSuchFile, t.put_bytes_non_atomic, 'not/there/a',
319 'contents\n',319 b'contents\n',
320 create_parent_dir=True)320 create_parent_dir=True)
321321
322 def test_put_bytes_permissions(self):322 def test_put_bytes_permissions(self):
@@ -350,29 +350,29 @@
350 if not t._can_roundtrip_unix_modebits():350 if not t._can_roundtrip_unix_modebits():
351 # Can't roundtrip, so no need to run this test351 # Can't roundtrip, so no need to run this test
352 return352 return
353 t.put_bytes_non_atomic('mode644', 'test text\n', mode=0o644)353 t.put_bytes_non_atomic('mode644', b'test text\n', mode=0o644)
354 self.assertTransportMode(t, 'mode644', 0o644)354 self.assertTransportMode(t, 'mode644', 0o644)
355 t.put_bytes_non_atomic('mode666', 'test text\n', mode=0o666)355 t.put_bytes_non_atomic('mode666', b'test text\n', mode=0o666)
356 self.assertTransportMode(t, 'mode666', 0o666)356 self.assertTransportMode(t, 'mode666', 0o666)
357 t.put_bytes_non_atomic('mode600', 'test text\n', mode=0o600)357 t.put_bytes_non_atomic('mode600', b'test text\n', mode=0o600)
358 self.assertTransportMode(t, 'mode600', 0o600)358 self.assertTransportMode(t, 'mode600', 0o600)
359 t.put_bytes_non_atomic('mode400', 'test text\n', mode=0o400)359 t.put_bytes_non_atomic('mode400', b'test text\n', mode=0o400)
360 self.assertTransportMode(t, 'mode400', 0o400)360 self.assertTransportMode(t, 'mode400', 0o400)
361361
362 # The default permissions should be based on the current umask362 # The default permissions should be based on the current umask
363 umask = osutils.get_umask()363 umask = osutils.get_umask()
364 t.put_bytes_non_atomic('nomode', 'test text\n', mode=None)364 t.put_bytes_non_atomic('nomode', b'test text\n', mode=None)
365 self.assertTransportMode(t, 'nomode', 0o666 & ~umask)365 self.assertTransportMode(t, 'nomode', 0o666 & ~umask)
366366
367 # We should also be able to set the mode for a parent directory367 # We should also be able to set the mode for a parent directory
368 # when it is created368 # when it is created
369 t.put_bytes_non_atomic('dir700/mode664', 'test text\n', mode=0o664,369 t.put_bytes_non_atomic('dir700/mode664', b'test text\n', mode=0o664,
370 dir_mode=0o700, create_parent_dir=True)370 dir_mode=0o700, create_parent_dir=True)
371 self.assertTransportMode(t, 'dir700', 0o700)371 self.assertTransportMode(t, 'dir700', 0o700)
372 t.put_bytes_non_atomic('dir770/mode664', 'test text\n', mode=0o664,372 t.put_bytes_non_atomic('dir770/mode664', b'test text\n', mode=0o664,
373 dir_mode=0o770, create_parent_dir=True)373 dir_mode=0o770, create_parent_dir=True)
374 self.assertTransportMode(t, 'dir770', 0o770)374 self.assertTransportMode(t, 'dir770', 0o770)
375 t.put_bytes_non_atomic('dir777/mode664', 'test text\n', mode=0o664,375 t.put_bytes_non_atomic('dir777/mode664', b'test text\n', mode=0o664,
376 dir_mode=0o777, create_parent_dir=True)376 dir_mode=0o777, create_parent_dir=True)
377 self.assertTransportMode(t, 'dir777', 0o777)377 self.assertTransportMode(t, 'dir777', 0o777)
378378
@@ -388,11 +388,11 @@
388 # put_file returns the length of the data written388 # put_file returns the length of the data written
389 self.assertEqual(16, result)389 self.assertEqual(16, result)
390 self.assertTrue(t.has('a'))390 self.assertTrue(t.has('a'))
391 self.check_transport_contents('some text for a\n', t, 'a')391 self.check_transport_contents(b'some text for a\n', t, 'a')
392 # Put also replaces contents392 # Put also replaces contents
393 result = t.put_file('a', BytesIO(b'new\ncontents for\na\n'))393 result = t.put_file('a', BytesIO(b'new\ncontents for\na\n'))
394 self.assertEqual(19, result)394 self.assertEqual(19, result)
395 self.check_transport_contents('new\ncontents for\na\n', t, 'a')395 self.check_transport_contents(b'new\ncontents for\na\n', t, 'a')
396 self.assertRaises(NoSuchFile,396 self.assertRaises(NoSuchFile,
397 t.put_file, 'path/doesnt/exist/c',397 t.put_file, 'path/doesnt/exist/c',
398 BytesIO(b'contents'))398 BytesIO(b'contents'))
@@ -408,17 +408,17 @@
408 self.assertFalse(t.has('a'))408 self.assertFalse(t.has('a'))
409 t.put_file_non_atomic('a', BytesIO(b'some text for a\n'))409 t.put_file_non_atomic('a', BytesIO(b'some text for a\n'))
410 self.assertTrue(t.has('a'))410 self.assertTrue(t.has('a'))
411 self.check_transport_contents('some text for a\n', t, 'a')411 self.check_transport_contents(b'some text for a\n', t, 'a')
412 # Put also replaces contents412 # Put also replaces contents
413 t.put_file_non_atomic('a', BytesIO(b'new\ncontents for\na\n'))413 t.put_file_non_atomic('a', BytesIO(b'new\ncontents for\na\n'))
414 self.check_transport_contents('new\ncontents for\na\n', t, 'a')414 self.check_transport_contents(b'new\ncontents for\na\n', t, 'a')
415415
416 # Make sure we can create another file416 # Make sure we can create another file
417 t.put_file_non_atomic('d', BytesIO(b'contents for\nd\n'))417 t.put_file_non_atomic('d', BytesIO(b'contents for\nd\n'))
418 # And overwrite 'a' with empty contents418 # And overwrite 'a' with empty contents
419 t.put_file_non_atomic('a', BytesIO(b''))419 t.put_file_non_atomic('a', BytesIO(b''))
420 self.check_transport_contents('contents for\nd\n', t, 'd')420 self.check_transport_contents(b'contents for\nd\n', t, 'd')
421 self.check_transport_contents('', t, 'a')421 self.check_transport_contents(b'', t, 'a')
422422
423 self.assertRaises(NoSuchFile, t.put_file_non_atomic, 'no/such/path',423 self.assertRaises(NoSuchFile, t.put_file_non_atomic, 'no/such/path',
424 BytesIO(b'contents\n'))424 BytesIO(b'contents\n'))
@@ -428,7 +428,7 @@
428 self.assertFalse(t.has('dir/a'))428 self.assertFalse(t.has('dir/a'))
429 t.put_file_non_atomic('dir/a', BytesIO(b'contents for dir/a\n'),429 t.put_file_non_atomic('dir/a', BytesIO(b'contents for dir/a\n'),
430 create_parent_dir=True)430 create_parent_dir=True)
431 self.check_transport_contents('contents for dir/a\n', t, 'dir/a')431 self.check_transport_contents(b'contents for dir/a\n', t, 'dir/a')
432432
433 # But we still get NoSuchFile if we can't make the parent dir433 # But we still get NoSuchFile if we can't make the parent dir
434 self.assertRaises(NoSuchFile, t.put_file_non_atomic, 'not/there/a',434 self.assertRaises(NoSuchFile, t.put_file_non_atomic, 'not/there/a',
@@ -535,8 +535,8 @@
535 # Test get/put in sub-directories535 # Test get/put in sub-directories
536 t.put_bytes('dir_a/a', b'contents of dir_a/a')536 t.put_bytes('dir_a/a', b'contents of dir_a/a')
537 t.put_file('dir_b/b', BytesIO(b'contents of dir_b/b'))537 t.put_file('dir_b/b', BytesIO(b'contents of dir_b/b'))
538 self.check_transport_contents('contents of dir_a/a', t, 'dir_a/a')538 self.check_transport_contents(b'contents of dir_a/a', t, 'dir_a/a')
539 self.check_transport_contents('contents of dir_b/b', t, 'dir_b/b')539 self.check_transport_contents(b'contents of dir_b/b', t, 'dir_b/b')
540540
541 # mkdir of a dir with an absent parent541 # mkdir of a dir with an absent parent
542 self.assertRaises(NoSuchFile, t.mkdir, 'missing/dir')542 self.assertRaises(NoSuchFile, t.mkdir, 'missing/dir')
@@ -681,7 +681,7 @@
681 # And we can create new files, too681 # And we can create new files, too
682 self.assertEqual(0,682 self.assertEqual(0,
683 t.append_file('c', BytesIO(b'some text\nfor a missing file\n')))683 t.append_file('c', BytesIO(b'some text\nfor a missing file\n')))
684 self.check_transport_contents('some text\nfor a missing file\n',684 self.check_transport_contents(b'some text\nfor a missing file\n',
685 t, 'c')685 t, 'c')
686686
687 def test_append_bytes(self):687 def test_append_bytes(self):
@@ -908,14 +908,14 @@
908 self.assertTrue(t.has('b'))908 self.assertTrue(t.has('b'))
909 self.assertFalse(t.has('a'))909 self.assertFalse(t.has('a'))
910910
911 self.check_transport_contents('a first file\n', t, 'b')911 self.check_transport_contents(b'a first file\n', t, 'b')
912 self.assertEqual([False, True], [t.has(n) for n in ['a', 'b']])912 self.assertEqual([False, True], [t.has(n) for n in ['a', 'b']])
913913
914 # Overwrite a file914 # Overwrite a file
915 t.put_bytes('c', b'c this file\n')915 t.put_bytes('c', b'c this file\n')
916 t.move('c', 'b')916 t.move('c', 'b')
917 self.assertFalse(t.has('c'))917 self.assertFalse(t.has('c'))
918 self.check_transport_contents('c this file\n', t, 'b')918 self.check_transport_contents(b'c this file\n', t, 'b')
919919
920 # TODO: Try to write a test for atomicity920 # TODO: Try to write a test for atomicity
921 # TODO: Test moving into a non-existent subdirectory921 # TODO: Test moving into a non-existent subdirectory
@@ -928,7 +928,7 @@
928928
929 t.put_bytes('a', b'a file\n')929 t.put_bytes('a', b'a file\n')
930 t.copy('a', 'b')930 t.copy('a', 'b')
931 self.check_transport_contents('a file\n', t, 'b')931 self.check_transport_contents(b'a file\n', t, 'b')
932932
933 self.assertRaises(NoSuchFile, t.copy, 'c', 'd')933 self.assertRaises(NoSuchFile, t.copy, 'c', 'd')
934 os.mkdir('c')934 os.mkdir('c')
@@ -937,7 +937,7 @@
937 #self.assertRaises(Something, t.copy, 'a', 'c')937 #self.assertRaises(Something, t.copy, 'a', 'c')
938 t.put_bytes('d', b'text in d\n')938 t.put_bytes('d', b'text in d\n')
939 t.copy('d', 'b')939 t.copy('d', 'b')
940 self.check_transport_contents('text in d\n', t, 'b')940 self.check_transport_contents(b'text in d\n', t, 'b')
941941
942 def test_connection_error(self):942 def test_connection_error(self):
943 """ConnectionError is raised when connection is impossible.943 """ConnectionError is raised when connection is impossible.
@@ -1472,13 +1472,13 @@
1472 return1472 return
1473 transport.put_bytes('foo', b'bar')1473 transport.put_bytes('foo', b'bar')
1474 transport3 = self.get_transport()1474 transport3 = self.get_transport()
1475 self.check_transport_contents('bar', transport3, 'foo')1475 self.check_transport_contents(b'bar', transport3, 'foo')
14761476
1477 # now opening at a relative url should give use a sane result:1477 # now opening at a relative url should give use a sane result:
1478 transport.mkdir('newdir')1478 transport.mkdir('newdir')
1479 transport5 = self.get_transport('newdir')1479 transport5 = self.get_transport('newdir')
1480 transport6 = transport5.clone('..')1480 transport6 = transport5.clone('..')
1481 self.check_transport_contents('bar', transport6, 'foo')1481 self.check_transport_contents(b'bar', transport6, 'foo')
14821482
1483 def test_lock_write(self):1483 def test_lock_write(self):
1484 """Test transport-level write locks.1484 """Test transport-level write locks.
14851485
=== modified file 'breezy/tests/per_tree/test_test_trees.py'
--- breezy/tests/per_tree/test_test_trees.py 2018-03-24 15:27:01 +0000
+++ breezy/tests/per_tree/test_test_trees.py 2018-06-21 23:03:57 +0000
@@ -17,6 +17,7 @@
17"""Tests for the test trees used by the per_tree tests."""17"""Tests for the test trees used by the per_tree tests."""
1818
19from breezy import errors19from breezy import errors
20from breezy.sixish import text_type
20from breezy.tests import per_tree21from breezy.tests import per_tree
21from breezy.tests import (22from breezy.tests import (
22 TestNotApplicable,23 TestNotApplicable,
@@ -318,7 +319,7 @@
318319
319 for expected, (path, ie) in zip(path_and_ids, path_entries):320 for expected, (path, ie) in zip(path_and_ids, path_entries):
320 self.assertEqual(expected[0], path) # Paths should match321 self.assertEqual(expected[0], path) # Paths should match
321 self.assertIsInstance(path, unicode)322 self.assertIsInstance(path, text_type)
322 self.assertEqual(expected[1], ie.file_id)323 self.assertEqual(expected[1], ie.file_id)
323 self.assertIsInstance(ie.file_id, str)324 self.assertIsInstance(ie.file_id, str)
324 self.assertEqual(expected[2], ie.parent_id)325 self.assertEqual(expected[2], ie.parent_id)
@@ -387,7 +388,7 @@
387 for (epath, efid, eparent, erev), (path, ie) in zip(path_and_ids,388 for (epath, efid, eparent, erev), (path, ie) in zip(path_and_ids,
388 path_entries):389 path_entries):
389 self.assertEqual(epath, path) # Paths should match390 self.assertEqual(epath, path) # Paths should match
390 self.assertIsInstance(path, unicode)391 self.assertIsInstance(path, text_type)
391 self.assertIsInstance(ie.file_id, bytes)392 self.assertIsInstance(ie.file_id, bytes)
392 if wt.supports_setting_file_ids():393 if wt.supports_setting_file_ids():
393 self.assertEqual(efid, ie.file_id)394 self.assertEqual(efid, ie.file_id)
394395
=== modified file 'breezy/tests/per_workingtree/test_put_file.py'
--- breezy/tests/per_workingtree/test_put_file.py 2017-11-12 20:44:54 +0000
+++ breezy/tests/per_workingtree/test_put_file.py 2018-06-21 23:03:57 +0000
@@ -25,13 +25,13 @@
25 def test_put_new_file(self):25 def test_put_new_file(self):
26 t = self.make_branch_and_tree('t1')26 t = self.make_branch_and_tree('t1')
27 t.add(['foo'], kinds=['file'])27 t.add(['foo'], kinds=['file'])
28 t.put_file_bytes_non_atomic('foo', 'barshoom')28 t.put_file_bytes_non_atomic('foo', b'barshoom')
29 self.assertEqual('barshoom', t.get_file('foo').read())29 self.assertEqual(b'barshoom', t.get_file('foo').read())
3030
31 def test_put_existing_file(self):31 def test_put_existing_file(self):
32 t = self.make_branch_and_tree('t1')32 t = self.make_branch_and_tree('t1')
33 t.add(['foo'], kinds=['file'])33 t.add(['foo'], kinds=['file'])
34 t.put_file_bytes_non_atomic('foo', 'first-content')34 t.put_file_bytes_non_atomic('foo', b'first-content')
35 t.put_file_bytes_non_atomic('foo', 'barshoom')35 t.put_file_bytes_non_atomic('foo', b'barshoom')
36 self.assertEqual('barshoom', t.get_file('foo').read())36 self.assertEqual(b'barshoom', t.get_file('foo').read())
3737
3838
=== modified file 'breezy/tests/test_cache_utf8.py'
--- breezy/tests/test_cache_utf8.py 2017-05-22 00:56:52 +0000
+++ breezy/tests/test_cache_utf8.py 2018-06-21 23:03:57 +0000
@@ -19,6 +19,7 @@
19from .. import (19from .. import (
20 cache_utf8,20 cache_utf8,
21 )21 )
22from ..sixish import text_type
22from . import TestCase23from . import TestCase
2324
2425
@@ -105,7 +106,7 @@
105 # objects.106 # objects.
106 uni_x = cache_utf8.decode(x)107 uni_x = cache_utf8.decode(x)
107 self.assertEqual(u'simple text', uni_x)108 self.assertEqual(u'simple text', uni_x)
108 self.assertIsInstance(uni_x, unicode)109 self.assertIsInstance(uni_x, text_type)
109110
110 utf8_x = cache_utf8.encode(uni_x)111 utf8_x = cache_utf8.encode(uni_x)
111 self.assertIs(utf8_x, x)112 self.assertIs(utf8_x, x)
112113
=== modified file 'breezy/tests/test_config.py'
--- breezy/tests/test_config.py 2017-11-12 13:53:51 +0000
+++ breezy/tests/test_config.py 2018-06-21 23:03:57 +0000
@@ -44,6 +44,7 @@
44 )44 )
45from ..sixish import (45from ..sixish import (
46 BytesIO,46 BytesIO,
47 text_type,
47 )48 )
48from ..transport import remote as transport_remote49from ..transport import remote as transport_remote
49from . import (50from . import (
@@ -522,7 +523,7 @@
522 self.assertEqual(config.config_dir(), self.brz_home)523 self.assertEqual(config.config_dir(), self.brz_home)
523524
524 def test_config_dir_is_unicode(self):525 def test_config_dir_is_unicode(self):
525 self.assertIsInstance(config.config_dir(), unicode)526 self.assertIsInstance(config.config_dir(), text_type)
526527
527 def test_config_filename(self):528 def test_config_filename(self):
528 self.assertEqual(config.config_filename(),529 self.assertEqual(config.config_filename(),
@@ -554,7 +555,7 @@
554 self.assertEqual(config.config_dir(), self.bzr_home)555 self.assertEqual(config.config_dir(), self.bzr_home)
555556
556 def test_config_dir_is_unicode(self):557 def test_config_dir_is_unicode(self):
557 self.assertIsInstance(config.config_dir(), unicode)558 self.assertIsInstance(config.config_dir(), text_type)
558559
559 def test_config_filename(self):560 def test_config_filename(self):
560 self.assertEqual(config.config_filename(),561 self.assertEqual(config.config_filename(),
561562
=== modified file 'breezy/tests/test_conflicts.py'
--- breezy/tests/test_conflicts.py 2018-05-22 02:05:12 +0000
+++ breezy/tests/test_conflicts.py 2018-06-21 23:03:57 +0000
@@ -24,6 +24,7 @@
24 osutils,24 osutils,
25 tests,25 tests,
26 )26 )
27from ..sixish import text_type
27from . import (28from . import (
28 script,29 script,
29 scenarios,30 scenarios,
@@ -129,7 +130,7 @@
129 scenarios = scenarios.multiply_scenarios(vary_by_conflicts())130 scenarios = scenarios.multiply_scenarios(vary_by_conflicts())
130131
131 def test_stringification(self):132 def test_stringification(self):
132 text = unicode(self.conflict)133 text = text_type(self.conflict)
133 self.assertContainsString(text, self.conflict.path)134 self.assertContainsString(text, self.conflict.path)
134 self.assertContainsString(text.lower(), "conflict")135 self.assertContainsString(text.lower(), "conflict")
135 self.assertContainsString(repr(self.conflict),136 self.assertContainsString(repr(self.conflict),
@@ -140,14 +141,14 @@
140 o = conflicts.Conflict.factory(**p.as_stanza().as_dict())141 o = conflicts.Conflict.factory(**p.as_stanza().as_dict())
141 self.assertEqual(o, p)142 self.assertEqual(o, p)
142143
143 self.assertIsInstance(o.path, unicode)144 self.assertIsInstance(o.path, text_type)
144145
145 if o.file_id is not None:146 if o.file_id is not None:
146 self.assertIsInstance(o.file_id, str)147 self.assertIsInstance(o.file_id, str)
147148
148 conflict_path = getattr(o, 'conflict_path', None)149 conflict_path = getattr(o, 'conflict_path', None)
149 if conflict_path is not None:150 if conflict_path is not None:
150 self.assertIsInstance(conflict_path, unicode)151 self.assertIsInstance(conflict_path, text_type)
151152
152 conflict_file_id = getattr(o, 'conflict_file_id', None)153 conflict_file_id = getattr(o, 'conflict_file_id', None)
153 if conflict_file_id is not None:154 if conflict_file_id is not None:
@@ -174,7 +175,7 @@
174175
175 def test_stringification(self):176 def test_stringification(self):
176 for text, o in zip(example_conflicts.to_strings(), example_conflicts):177 for text, o in zip(example_conflicts.to_strings(), example_conflicts):
177 self.assertEqual(text, unicode(o))178 self.assertEqual(text, text_type(o))
178179
179180
180# FIXME: The shell-like tests should be converted to real whitebox tests... or181# FIXME: The shell-like tests should be converted to real whitebox tests... or
@@ -303,17 +304,17 @@
303304
304 # Create an empty trunk305 # Create an empty trunk
305 builder.build_snapshot(None, [306 builder.build_snapshot(None, [
306 ('add', ('', 'root-id', 'directory', ''))],307 ('add', (u'', b'root-id', 'directory', ''))],
307 revision_id=b'start')308 revision_id=b'start')
308 # Add a minimal base content309 # Add a minimal base content
309 base_actions = self._get_actions(self._base_actions)()310 base_actions = self._get_actions(self._base_actions)()
310 builder.build_snapshot(['start'], base_actions, revision_id=b'base')311 builder.build_snapshot([b'start'], base_actions, revision_id=b'base')
311 # Modify the base content in branch312 # Modify the base content in branch
312 actions_other = self._get_actions(self._other['actions'])()313 actions_other = self._get_actions(self._other['actions'])()
313 builder.build_snapshot(['base'], actions_other, revision_id=b'other')314 builder.build_snapshot([b'base'], actions_other, revision_id=b'other')
314 # Modify the base content in trunk315 # Modify the base content in trunk
315 actions_this = self._get_actions(self._this['actions'])()316 actions_this = self._get_actions(self._this['actions'])()
316 builder.build_snapshot(['base'], actions_this, revision_id=b'this')317 builder.build_snapshot([b'base'], actions_this, revision_id=b'this')
317 # builder.get_branch() tip is now 'this'318 # builder.get_branch() tip is now 'this'
318319
319 builder.finish_series()320 builder.finish_series()
320321
=== modified file 'breezy/tests/test_dirstate.py'
--- breezy/tests/test_dirstate.py 2018-05-22 02:05:12 +0000
+++ breezy/tests/test_dirstate.py 2018-06-21 23:03:57 +0000
@@ -1105,7 +1105,7 @@
1105 try:1105 try:
1106 tree1.add('')1106 tree1.add('')
1107 tree1.add(['a file'], [b'file-id'], ['file'])1107 tree1.add(['a file'], [b'file-id'], ['file'])
1108 tree1.put_file_bytes_non_atomic('a file', 'file-content')1108 tree1.put_file_bytes_non_atomic('a file', b'file-content')
1109 revid1 = tree1.commit('foo')1109 revid1 = tree1.commit('foo')
1110 finally:1110 finally:
1111 tree1.unlock()1111 tree1.unlock()
@@ -1113,7 +1113,7 @@
1113 tree2 = memorytree.MemoryTree.create_on_branch(branch2)1113 tree2 = memorytree.MemoryTree.create_on_branch(branch2)
1114 tree2.lock_write()1114 tree2.lock_write()
1115 try:1115 try:
1116 tree2.put_file_bytes_non_atomic('a file', 'new file-content')1116 tree2.put_file_bytes_non_atomic('a file', b'new file-content')
1117 revid2 = tree2.commit('foo')1117 revid2 = tree2.commit('foo')
1118 root_id = tree2.get_root_id()1118 root_id = tree2.get_root_id()
1119 finally:1119 finally:
11201120
=== modified file 'breezy/tests/test_fetch.py'
--- breezy/tests/test_fetch.py 2018-05-22 02:05:12 +0000
+++ breezy/tests/test_fetch.py 2018-06-21 23:03:57 +0000
@@ -149,14 +149,14 @@
149 Convert(tree.basedir, knit2_format)149 Convert(tree.basedir, knit2_format)
150 tree = WorkingTree.open(tree.basedir)150 tree = WorkingTree.open(tree.basedir)
151 branch = self.make_branch('branch', format=knit2_format)151 branch = self.make_branch('branch', format=knit2_format)
152 branch.pull(tree.branch, stop_revision='rev1')152 branch.pull(tree.branch, stop_revision=b'rev1')
153 repo = branch.repository153 repo = branch.repository
154 repo.lock_read()154 repo.lock_read()
155 try:155 try:
156 # Make sure fetch retrieved only what we requested156 # Make sure fetch retrieved only what we requested
157 self.assertEqual({('tree-root', 'rev1'):()},157 self.assertEqual({(b'tree-root', b'rev1'):()},
158 repo.texts.get_parent_map(158 repo.texts.get_parent_map(
159 [('tree-root', 'rev1'), ('tree-root', 'rev2')]))159 [(b'tree-root', b'rev1'), (b'tree-root', b'rev2')]))
160 finally:160 finally:
161 repo.unlock()161 repo.unlock()
162 branch.pull(tree.branch)162 branch.pull(tree.branch)
@@ -165,8 +165,8 @@
165 repo.lock_read()165 repo.lock_read()
166 try:166 try:
167 # Make sure fetch retrieved only what we requested167 # Make sure fetch retrieved only what we requested
168 self.assertEqual({('tree-root', 'rev2'):(('tree-root', 'rev1'),)},168 self.assertEqual({(b'tree-root', b'rev2'):((b'tree-root', b'rev1'),)},
169 repo.texts.get_parent_map([('tree-root', 'rev2')]))169 repo.texts.get_parent_map([(b'tree-root', b'rev2')]))
170 finally:170 finally:
171 repo.unlock()171 repo.unlock()
172172
173173
=== modified file 'breezy/tests/test_inv.py'
--- breezy/tests/test_inv.py 2018-05-22 02:05:12 +0000
+++ breezy/tests/test_inv.py 2018-06-21 23:03:57 +0000
@@ -23,6 +23,7 @@
23 tests,23 tests,
24 workingtree,24 workingtree,
25 )25 )
26from ..sixish import text_type
26from ..bzr import (27from ..bzr import (
27 chk_map,28 chk_map,
28 groupcompress,29 groupcompress,
@@ -1228,7 +1229,7 @@
1228 b'file-rev-id\nabcdefgh\n100\nY', bytes)1229 b'file-rev-id\nabcdefgh\n100\nY', bytes)
1229 ie2 = inv._bytes_to_entry(bytes)1230 ie2 = inv._bytes_to_entry(bytes)
1230 self.assertEqual(ie, ie2)1231 self.assertEqual(ie, ie2)
1231 self.assertIsInstance(ie2.name, unicode)1232 self.assertIsInstance(ie2.name, text_type)
1232 self.assertEqual(('filename', b'file-id', b'file-rev-id'),1233 self.assertEqual(('filename', b'file-id', b'file-rev-id'),
1233 inv._bytes_to_utf8name_key(bytes))1234 inv._bytes_to_utf8name_key(bytes))
12341235
@@ -1245,7 +1246,7 @@
1245 b'file-rev-id\n123456\n25\nN', bytes)1246 b'file-rev-id\n123456\n25\nN', bytes)
1246 ie2 = inv._bytes_to_entry(bytes)1247 ie2 = inv._bytes_to_entry(bytes)
1247 self.assertEqual(ie, ie2)1248 self.assertEqual(ie, ie2)
1248 self.assertIsInstance(ie2.name, unicode)1249 self.assertIsInstance(ie2.name, text_type)
1249 self.assertEqual((b'\xce\xa9name', b'file-id', b'file-rev-id'),1250 self.assertEqual((b'\xce\xa9name', b'file-id', b'file-rev-id'),
1250 inv._bytes_to_utf8name_key(bytes))1251 inv._bytes_to_utf8name_key(bytes))
12511252
@@ -1257,7 +1258,7 @@
1257 self.assertEqual(b'dir: dir-id\nparent-id\ndirname\ndir-rev-id', bytes)1258 self.assertEqual(b'dir: dir-id\nparent-id\ndirname\ndir-rev-id', bytes)
1258 ie2 = inv._bytes_to_entry(bytes)1259 ie2 = inv._bytes_to_entry(bytes)
1259 self.assertEqual(ie, ie2)1260 self.assertEqual(ie, ie2)
1260 self.assertIsInstance(ie2.name, unicode)1261 self.assertIsInstance(ie2.name, text_type)
1261 self.assertEqual(('dirname', b'dir-id', b'dir-rev-id'),1262 self.assertEqual(('dirname', b'dir-id', b'dir-rev-id'),
1262 inv._bytes_to_utf8name_key(bytes))1263 inv._bytes_to_utf8name_key(bytes))
12631264
@@ -1271,7 +1272,7 @@
1271 b'dir-rev-id', bytes)1272 b'dir-rev-id', bytes)
1272 ie2 = inv._bytes_to_entry(bytes)1273 ie2 = inv._bytes_to_entry(bytes)
1273 self.assertEqual(ie, ie2)1274 self.assertEqual(ie, ie2)
1274 self.assertIsInstance(ie2.name, unicode)1275 self.assertIsInstance(ie2.name, text_type)
1275 self.assertIs(ie2.parent_id, None)1276 self.assertIs(ie2.parent_id, None)
1276 self.assertEqual(('dir\xce\xa9name', b'dir-id', b'dir-rev-id'),1277 self.assertEqual(('dir\xce\xa9name', b'dir-id', b'dir-rev-id'),
1277 inv._bytes_to_utf8name_key(bytes))1278 inv._bytes_to_utf8name_key(bytes))
@@ -1286,8 +1287,8 @@
1286 'link-rev-id\ntarget/path', bytes)1287 'link-rev-id\ntarget/path', bytes)
1287 ie2 = inv._bytes_to_entry(bytes)1288 ie2 = inv._bytes_to_entry(bytes)
1288 self.assertEqual(ie, ie2)1289 self.assertEqual(ie, ie2)
1289 self.assertIsInstance(ie2.name, unicode)1290 self.assertIsInstance(ie2.name, text_type)
1290 self.assertIsInstance(ie2.symlink_target, unicode)1291 self.assertIsInstance(ie2.symlink_target, text_type)
1291 self.assertEqual(('linkname', 'link-id', 'link-rev-id'),1292 self.assertEqual(('linkname', 'link-id', 'link-rev-id'),
1292 inv._bytes_to_utf8name_key(bytes))1293 inv._bytes_to_utf8name_key(bytes))
12931294
@@ -1301,8 +1302,8 @@
1301 'link-rev-id\ntarget/\xce\xa9path', bytes)1302 'link-rev-id\ntarget/\xce\xa9path', bytes)
1302 ie2 = inv._bytes_to_entry(bytes)1303 ie2 = inv._bytes_to_entry(bytes)
1303 self.assertEqual(ie, ie2)1304 self.assertEqual(ie, ie2)
1304 self.assertIsInstance(ie2.name, unicode)1305 self.assertIsInstance(ie2.name, text_type)
1305 self.assertIsInstance(ie2.symlink_target, unicode)1306 self.assertIsInstance(ie2.symlink_target, text_type)
1306 self.assertEqual(('link\xce\xa9name', 'link-id', 'link-rev-id'),1307 self.assertEqual(('link\xce\xa9name', 'link-id', 'link-rev-id'),
1307 inv._bytes_to_utf8name_key(bytes))1308 inv._bytes_to_utf8name_key(bytes))
13081309
@@ -1317,7 +1318,7 @@
1317 'tree-rev-id\nref-rev-id', bytes)1318 'tree-rev-id\nref-rev-id', bytes)
1318 ie2 = inv._bytes_to_entry(bytes)1319 ie2 = inv._bytes_to_entry(bytes)
1319 self.assertEqual(ie, ie2)1320 self.assertEqual(ie, ie2)
1320 self.assertIsInstance(ie2.name, unicode)1321 self.assertIsInstance(ie2.name, text_type)
1321 self.assertEqual(('tree\xce\xa9name', 'tree-root-id', 'tree-rev-id'),1322 self.assertEqual(('tree\xce\xa9name', 'tree-root-id', 'tree-rev-id'),
1322 inv._bytes_to_utf8name_key(bytes))1323 inv._bytes_to_utf8name_key(bytes))
13231324
13241325
=== modified file 'breezy/tests/test_mail_client.py'
--- breezy/tests/test_mail_client.py 2017-07-16 01:55:39 +0000
+++ breezy/tests/test_mail_client.py 2018-06-21 23:03:57 +0000
@@ -21,6 +21,8 @@
21 urlutils,21 urlutils,
22 osutils,22 osutils,
23 )23 )
24from ..sixish import text_type
25
2426
25class TestMutt(tests.TestCase):27class TestMutt(tests.TestCase):
2628
@@ -43,7 +45,7 @@
43 ['-s', 'Hi there!', '-a', 'file%', '--', 'jrandom@example.org'],45 ['-s', 'Hi there!', '-a', 'file%', '--', 'jrandom@example.org'],
44 cmdline)46 cmdline)
45 for item in cmdline:47 for item in cmdline:
46 self.assertFalse(isinstance(item, unicode),48 self.assertFalse(isinstance(item, text_type),
47 'Command-line item %r is unicode!' % item)49 'Command-line item %r is unicode!' % item)
4850
4951
@@ -73,7 +75,7 @@
73 "subject='Hi there!',to='jrandom@example.org'",75 "subject='Hi there!',to='jrandom@example.org'",
74 ], cmdline)76 ], cmdline)
75 for item in cmdline:77 for item in cmdline:
76 self.assertFalse(isinstance(item, unicode),78 self.assertFalse(isinstance(item, text_type),
77 'Command-line item %r is unicode!' % item)79 'Command-line item %r is unicode!' % item)
7880
7981
@@ -110,7 +112,7 @@
110 if eclient.elisp_tmp_file is not None:112 if eclient.elisp_tmp_file is not None:
111 self.addCleanup(osutils.delete_any, eclient.elisp_tmp_file)113 self.addCleanup(osutils.delete_any, eclient.elisp_tmp_file)
112 for item in commandline:114 for item in commandline:
113 self.assertFalse(isinstance(item, unicode),115 self.assertFalse(isinstance(item, text_type),
114 'Command-line item %r is unicode!' % item)116 'Command-line item %r is unicode!' % item)
115117
116118
@@ -139,7 +141,7 @@
139 '--attach', 'file%'],141 '--attach', 'file%'],
140 cmdline)142 cmdline)
141 for item in cmdline:143 for item in cmdline:
142 self.assertFalse(isinstance(item, unicode),144 self.assertFalse(isinstance(item, text_type),
143 'Command-line item %r is unicode!' % item)145 'Command-line item %r is unicode!' % item)
144146
145147
@@ -163,7 +165,7 @@
163 ],165 ],
164 cmdline)166 cmdline)
165 for item in cmdline:167 for item in cmdline:
166 self.assertFalse(isinstance(item, unicode),168 self.assertFalse(isinstance(item, text_type),
167 'Command-line item %r is unicode!' % item)169 'Command-line item %r is unicode!' % item)
168170
169171
@@ -186,7 +188,7 @@
186 ['-s', 'Hi there!', '--attach', 'file%', 'jrandom@example.org'],188 ['-s', 'Hi there!', '--attach', 'file%', 'jrandom@example.org'],
187 cmdline)189 cmdline)
188 for item in cmdline:190 for item in cmdline:
189 self.assertFalse(isinstance(item, unicode),191 self.assertFalse(isinstance(item, text_type),
190 'Command-line item %r is unicode!' % item)192 'Command-line item %r is unicode!' % item)
191193
192194
@@ -219,7 +221,7 @@
219 'file%'],221 'file%'],
220 cmdline)222 cmdline)
221 for item in cmdline:223 for item in cmdline:
222 self.assertFalse(isinstance(item, unicode),224 self.assertFalse(isinstance(item, text_type),
223 'Command-line item %r is unicode!' % item)225 'Command-line item %r is unicode!' % item)
224226
225 def test_with_from(self):227 def test_with_from(self):
226228
=== modified file 'breezy/tests/test_memorytree.py'
--- breezy/tests/test_memorytree.py 2018-02-18 15:21:06 +0000
+++ breezy/tests/test_memorytree.py 2018-06-21 23:03:57 +0000
@@ -110,8 +110,8 @@
110 tree.lock_write()110 tree.lock_write()
111 tree.add(['', 'foo'], ids=[b'root-id', b'foo-id'],111 tree.add(['', 'foo'], ids=[b'root-id', b'foo-id'],
112 kinds=['directory', 'file'])112 kinds=['directory', 'file'])
113 tree.put_file_bytes_non_atomic('foo', 'barshoom')113 tree.put_file_bytes_non_atomic('foo', b'barshoom')
114 self.assertEqual('barshoom', tree.get_file('foo').read())114 self.assertEqual(b'barshoom', tree.get_file('foo').read())
115 tree.unlock()115 tree.unlock()
116116
117 def test_put_existing_file(self):117 def test_put_existing_file(self):
@@ -120,9 +120,9 @@
120 tree.lock_write()120 tree.lock_write()
121 tree.add(['', 'foo'], ids=[b'root-id', b'foo-id'],121 tree.add(['', 'foo'], ids=[b'root-id', b'foo-id'],
122 kinds=['directory', 'file'])122 kinds=['directory', 'file'])
123 tree.put_file_bytes_non_atomic('foo', 'first-content')123 tree.put_file_bytes_non_atomic('foo', b'first-content')
124 tree.put_file_bytes_non_atomic('foo', 'barshoom')124 tree.put_file_bytes_non_atomic('foo', b'barshoom')
125 self.assertEqual('barshoom', tree.get_file('foo').read())125 self.assertEqual(b'barshoom', tree.get_file('foo').read())
126 tree.unlock()126 tree.unlock()
127127
128 def test_add_in_subdir(self):128 def test_add_in_subdir(self):
@@ -135,11 +135,11 @@
135 # that *always* adds the directory as well. So if you want to create a135 # that *always* adds the directory as well. So if you want to create a
136 # file in a subdirectory, you have to split out the 'mkdir()' calls136 # file in a subdirectory, you have to split out the 'mkdir()' calls
137 # from the add and put_file_bytes_non_atomic calls. :(137 # from the add and put_file_bytes_non_atomic calls. :(
138 tree.mkdir('adir', 'dir-id')138 tree.mkdir('adir', b'dir-id')
139 tree.add(['adir/afile'], [b'file-id'], ['file'])139 tree.add(['adir/afile'], [b'file-id'], ['file'])
140 self.assertEqual('adir/afile', tree.id2path(b'file-id'))140 self.assertEqual('adir/afile', tree.id2path(b'file-id'))
141 self.assertEqual('adir', tree.id2path(b'dir-id'))141 self.assertEqual('adir', tree.id2path(b'dir-id'))
142 tree.put_file_bytes_non_atomic('adir/afile', 'barshoom')142 tree.put_file_bytes_non_atomic('adir/afile', b'barshoom')
143143
144 def test_commit_trivial(self):144 def test_commit_trivial(self):
145 """Smoke test for commit on a MemoryTree.145 """Smoke test for commit on a MemoryTree.
@@ -152,7 +152,7 @@
152 tree.lock_write()152 tree.lock_write()
153 tree.add(['', 'foo'], ids=[b'root-id', b'foo-id'],153 tree.add(['', 'foo'], ids=[b'root-id', b'foo-id'],
154 kinds=['directory', 'file'])154 kinds=['directory', 'file'])
155 tree.put_file_bytes_non_atomic('foo', 'barshoom')155 tree.put_file_bytes_non_atomic('foo', b'barshoom')
156 revision_id = tree.commit('message baby')156 revision_id = tree.commit('message baby')
157 # the parents list for the tree should have changed.157 # the parents list for the tree should have changed.
158 self.assertEqual([revision_id], tree.get_parent_ids())158 self.assertEqual([revision_id], tree.get_parent_ids())
@@ -161,7 +161,8 @@
161 revtree = tree.branch.repository.revision_tree(revision_id)161 revtree = tree.branch.repository.revision_tree(revision_id)
162 revtree.lock_read()162 revtree.lock_read()
163 self.addCleanup(revtree.unlock)163 self.addCleanup(revtree.unlock)
164 self.assertEqual('barshoom', revtree.get_file('foo').read())164 with revtree.get_file('foo') as f:
165 self.assertEqual(b'barshoom', f.read())
165166
166 def test_unversion(self):167 def test_unversion(self):
167 """Some test for unversion of a memory tree."""168 """Some test for unversion of a memory tree."""
@@ -189,7 +190,7 @@
189 tree.lock_write()190 tree.lock_write()
190 self.addCleanup(tree.unlock)191 self.addCleanup(tree.unlock)
191 tree.add(['', 'foo'], [b'root-id', b'foo-id'], ['directory', 'file'])192 tree.add(['', 'foo'], [b'root-id', b'foo-id'], ['directory', 'file'])
192 tree.put_file_bytes_non_atomic('foo', 'content\n')193 tree.put_file_bytes_non_atomic('foo', b'content\n')
193 tree.commit('one', rev_id=b'rev-one')194 tree.commit('one', rev_id=b'rev-one')
194 tree.rename_one('foo', 'bar')195 tree.rename_one('foo', 'bar')
195 self.assertEqual('bar', tree.id2path(b'foo-id'))196 self.assertEqual('bar', tree.id2path(b'foo-id'))
@@ -197,13 +198,13 @@
197 self.assertRaises(errors.NoSuchFile,198 self.assertRaises(errors.NoSuchFile,
198 tree._file_transport.get_bytes, 'foo')199 tree._file_transport.get_bytes, 'foo')
199 tree.commit('two', rev_id=b'rev-two')200 tree.commit('two', rev_id=b'rev-two')
200 self.assertEqual('content\n', tree._file_transport.get_bytes('bar'))201 self.assertEqual(b'content\n', tree._file_transport.get_bytes('bar'))
201 self.assertRaises(errors.NoSuchFile,202 self.assertRaises(errors.NoSuchFile,
202 tree._file_transport.get_bytes, 'foo')203 tree._file_transport.get_bytes, 'foo')
203204
204 rev_tree2 = tree.branch.repository.revision_tree(b'rev-two')205 rev_tree2 = tree.branch.repository.revision_tree(b'rev-two')
205 self.assertEqual('bar', rev_tree2.id2path(b'foo-id'))206 self.assertEqual('bar', rev_tree2.id2path(b'foo-id'))
206 self.assertEqual('content\n', rev_tree2.get_file_text('bar'))207 self.assertEqual(b'content\n', rev_tree2.get_file_text('bar'))
207208
208 def test_rename_file_to_subdir(self):209 def test_rename_file_to_subdir(self):
209 tree = self.make_branch_and_memory_tree('branch')210 tree = self.make_branch_and_memory_tree('branch')
@@ -212,7 +213,7 @@
212 tree.add('')213 tree.add('')
213 tree.mkdir('subdir', b'subdir-id')214 tree.mkdir('subdir', b'subdir-id')
214 tree.add('foo', b'foo-id', 'file')215 tree.add('foo', b'foo-id', 'file')
215 tree.put_file_bytes_non_atomic('foo', 'content\n')216 tree.put_file_bytes_non_atomic('foo', b'content\n')
216 tree.commit('one', rev_id=b'rev-one')217 tree.commit('one', rev_id=b'rev-one')
217218
218 tree.rename_one('foo', 'subdir/bar')219 tree.rename_one('foo', 'subdir/bar')
219220
=== modified file 'breezy/tests/test_osutils.py'
--- breezy/tests/test_osutils.py 2018-02-18 15:21:06 +0000
+++ breezy/tests/test_osutils.py 2018-06-21 23:03:57 +0000
@@ -38,6 +38,7 @@
38 )38 )
39from ..sixish import (39from ..sixish import (
40 BytesIO,40 BytesIO,
41 text_type,
41 )42 )
42from . import (43from . import (
43 features,44 features,
@@ -405,7 +406,7 @@
405 self.assertRaises(osutils.UnsupportedTimezoneFormat,406 self.assertRaises(osutils.UnsupportedTimezoneFormat,
406 osutils.format_date, 0, timezone='foo')407 osutils.format_date, 0, timezone='foo')
407 self.assertIsInstance(osutils.format_date(0), str)408 self.assertIsInstance(osutils.format_date(0), str)
408 self.assertIsInstance(osutils.format_local_date(0), unicode)409 self.assertIsInstance(osutils.format_local_date(0), text_type)
409 # Testing for the actual value of the local weekday without410 # Testing for the actual value of the local weekday without
410 # duplicating the code from format_date is difficult.411 # duplicating the code from format_date is difficult.
411 # Instead blackbox.test_locale should check for localized412 # Instead blackbox.test_locale should check for localized
@@ -1397,11 +1398,11 @@
1397 # all abspaths are Unicode, and encode them back into utf8.1398 # all abspaths are Unicode, and encode them back into utf8.
1398 for dirdetail, dirblock in osutils._walkdirs_utf8('.'):1399 for dirdetail, dirblock in osutils._walkdirs_utf8('.'):
1399 self.assertIsInstance(dirdetail[0], str)1400 self.assertIsInstance(dirdetail[0], str)
1400 if isinstance(dirdetail[1], unicode):1401 if isinstance(dirdetail[1], text_type):
1401 dirdetail = (dirdetail[0], dirdetail[1].encode('utf8'))1402 dirdetail = (dirdetail[0], dirdetail[1].encode('utf8'))
1402 dirblock = [list(info) for info in dirblock]1403 dirblock = [list(info) for info in dirblock]
1403 for info in dirblock:1404 for info in dirblock:
1404 self.assertIsInstance(info[4], unicode)1405 self.assertIsInstance(info[4], text_type)
1405 info[4] = info[4].encode('utf8')1406 info[4] = info[4].encode('utf8')
1406 new_dirblock = []1407 new_dirblock = []
1407 for info in dirblock:1408 for info in dirblock:
@@ -2137,13 +2138,13 @@
2137 def test_is_unicode(self):2138 def test_is_unicode(self):
2138 self.overrideEnv('BRZ_TEST_PATH', './anywhere at all/')2139 self.overrideEnv('BRZ_TEST_PATH', './anywhere at all/')
2139 path = osutils.path_from_environ('BRZ_TEST_PATH')2140 path = osutils.path_from_environ('BRZ_TEST_PATH')
2140 self.assertIsInstance(path, unicode)2141 self.assertIsInstance(path, text_type)
2141 self.assertEqual(u'./anywhere at all/', path)2142 self.assertEqual(u'./anywhere at all/', path)
21422143
2143 def test_posix_path_env_ascii(self):2144 def test_posix_path_env_ascii(self):
2144 self.overrideEnv('BRZ_TEST_PATH', '/tmp')2145 self.overrideEnv('BRZ_TEST_PATH', '/tmp')
2145 home = osutils._posix_path_from_environ('BRZ_TEST_PATH')2146 home = osutils._posix_path_from_environ('BRZ_TEST_PATH')
2146 self.assertIsInstance(home, unicode)2147 self.assertIsInstance(home, text_type)
2147 self.assertEqual(u'/tmp', home)2148 self.assertEqual(u'/tmp', home)
21482149
2149 def test_posix_path_env_unicode(self):2150 def test_posix_path_env_unicode(self):
@@ -2164,17 +2165,17 @@
21642165
2165 def test_is_unicode(self):2166 def test_is_unicode(self):
2166 home = osutils._get_home_dir()2167 home = osutils._get_home_dir()
2167 self.assertIsInstance(home, unicode)2168 self.assertIsInstance(home, text_type)
21682169
2169 def test_posix_homeless(self):2170 def test_posix_homeless(self):
2170 self.overrideEnv('HOME', None)2171 self.overrideEnv('HOME', None)
2171 home = osutils._get_home_dir()2172 home = osutils._get_home_dir()
2172 self.assertIsInstance(home, unicode)2173 self.assertIsInstance(home, text_type)
21732174
2174 def test_posix_home_ascii(self):2175 def test_posix_home_ascii(self):
2175 self.overrideEnv('HOME', '/home/test')2176 self.overrideEnv('HOME', '/home/test')
2176 home = osutils._posix_get_home_dir()2177 home = osutils._posix_get_home_dir()
2177 self.assertIsInstance(home, unicode)2178 self.assertIsInstance(home, text_type)
2178 self.assertEqual(u'/home/test', home)2179 self.assertEqual(u'/home/test', home)
21792180
2180 def test_posix_home_unicode(self):2181 def test_posix_home_unicode(self):
@@ -2193,7 +2194,7 @@
21932194
2194 def test_is_unicode(self):2195 def test_is_unicode(self):
2195 user = osutils.getuser_unicode()2196 user = osutils.getuser_unicode()
2196 self.assertIsInstance(user, unicode)2197 self.assertIsInstance(user, text_type)
21972198
2198 def envvar_to_override(self):2199 def envvar_to_override(self):
2199 if sys.platform == "win32":2200 if sys.platform == "win32":
22002201
=== modified file 'breezy/tests/test_read_bundle.py'
--- breezy/tests/test_read_bundle.py 2018-02-18 15:21:06 +0000
+++ breezy/tests/test_read_bundle.py 2018-06-21 23:03:57 +0000
@@ -22,6 +22,7 @@
22from .. import errors22from .. import errors
23from ..sixish import (23from ..sixish import (
24 BytesIO,24 BytesIO,
25 text_type,
25 )26 )
26from .. import tests27from .. import tests
27from .test_transport import TestTransportImplementation28from .test_transport import TestTransportImplementation
@@ -88,7 +89,7 @@
8889
89 def test_read_mergeable_from_url(self):90 def test_read_mergeable_from_url(self):
90 info = self.read_mergeable_from_url(91 info = self.read_mergeable_from_url(
91 unicode(self.get_url(self.bundle_name)))92 text_type(self.get_url(self.bundle_name)))
92 revision = info.real_revisions[-1]93 revision = info.real_revisions[-1]
93 self.assertEqual('commit-1', revision.revision_id)94 self.assertEqual('commit-1', revision.revision_id)
9495
@@ -107,6 +108,6 @@
107 # transports (the test will fail even).108 # transports (the test will fail even).
108 raise tests.TestSkipped(109 raise tests.TestSkipped(
109 'Need a ConnectedTransport to test transport reuse')110 'Need a ConnectedTransport to test transport reuse')
110 url = unicode(self.get_url(self.bundle_name))111 url = text_type(self.get_url(self.bundle_name))
111 info = self.read_mergeable_from_url(url)112 info = self.read_mergeable_from_url(url)
112 self.assertEqual(1, len(self.possible_transports))113 self.assertEqual(1, len(self.possible_transports))
113114
=== modified file 'breezy/tests/test_repository.py'
--- breezy/tests/test_repository.py 2018-05-22 02:05:12 +0000
+++ breezy/tests/test_repository.py 2018-06-21 23:03:57 +0000
@@ -242,8 +242,9 @@
242 # empty revision-store directory242 # empty revision-store directory
243 # empty weaves directory243 # empty weaves directory
244 t = control.get_repository_transport(None)244 t = control.get_repository_transport(None)
245 self.assertEqualDiff('Bazaar-NG Knit Repository Format 1',245 with t.get('format') as f:
246 t.get('format').read())246 self.assertEqualDiff(b'Bazaar-NG Knit Repository Format 1',
247 f.read())
247 # XXX: no locks left when unlocked at the moment248 # XXX: no locks left when unlocked at the moment
248 # self.assertEqualDiff('', t.get('lock').read())249 # self.assertEqualDiff('', t.get('lock').read())
249 self.assertTrue(S_ISDIR(t.stat('knits').st_mode))250 self.assertTrue(S_ISDIR(t.stat('knits').st_mode))
@@ -251,8 +252,8 @@
251 # Check per-file knits.252 # Check per-file knits.
252 branch = control.create_branch()253 branch = control.create_branch()
253 tree = control.create_workingtree()254 tree = control.create_workingtree()
254 tree.add(['foo'], ['Nasty-IdC:'], ['file'])255 tree.add(['foo'], [b'Nasty-IdC:'], ['file'])
255 tree.put_file_bytes_non_atomic('foo', '')256 tree.put_file_bytes_non_atomic('foo', b'')
256 tree.commit('1st post', rev_id=b'foo')257 tree.commit('1st post', rev_id=b'foo')
257 self.assertHasKnit(t, 'knits/e8/%254easty-%2549d%2543%253a',258 self.assertHasKnit(t, 'knits/e8/%254easty-%2549d%2543%253a',
258 '\nfoo fulltext 0 81 :')259 '\nfoo fulltext 0 81 :')
259260
=== modified file 'breezy/tests/test_transform.py'
--- breezy/tests/test_transform.py 2018-06-14 12:13:00 +0000
+++ breezy/tests/test_transform.py 2018-06-21 23:03:57 +0000
@@ -61,6 +61,7 @@
61from ..mutabletree import MutableTree61from ..mutabletree import MutableTree
62from ..sixish import (62from ..sixish import (
63 BytesIO,63 BytesIO,
64 text_type,
64 )65 )
65from . import (66from . import (
66 features,67 features,
@@ -877,7 +878,7 @@
877 raw_conflicts = resolve_conflicts(tt)878 raw_conflicts = resolve_conflicts(tt)
878 cooked_conflicts = cook_conflicts(raw_conflicts, tt)879 cooked_conflicts = cook_conflicts(raw_conflicts, tt)
879 tt.finalize()880 tt.finalize()
880 conflicts_s = [unicode(c) for c in cooked_conflicts]881 conflicts_s = [text_type(c) for c in cooked_conflicts]
881 self.assertEqual(len(cooked_conflicts), len(conflicts_s))882 self.assertEqual(len(cooked_conflicts), len(conflicts_s))
882 self.assertEqual(conflicts_s[0], 'Conflict adding file dorothy. '883 self.assertEqual(conflicts_s[0], 'Conflict adding file dorothy. '
883 'Moved existing file to '884 'Moved existing file to '
884885
=== modified file 'breezy/tests/test_urlutils.py'
--- breezy/tests/test_urlutils.py 2018-05-27 18:00:21 +0000
+++ breezy/tests/test_urlutils.py 2018-06-21 23:03:57 +0000
@@ -23,6 +23,7 @@
23from ..errors import (23from ..errors import (
24 PathNotChild,24 PathNotChild,
25 )25 )
26from ..sixish import text_type
26from . import features, TestCaseInTempDir, TestCase, TestSkipped27from . import features, TestCaseInTempDir, TestCase, TestSkipped
2728
2829
@@ -411,7 +412,7 @@
411 raise TestSkipped("local encoding cannot handle unicode")412 raise TestSkipped("local encoding cannot handle unicode")
412413
413 self.assertEqual('file:///D:/path/to/r%C3%A4ksm%C3%B6rg%C3%A5s', result)414 self.assertEqual('file:///D:/path/to/r%C3%A4ksm%C3%B6rg%C3%A5s', result)
414 self.assertFalse(isinstance(result, unicode))415 self.assertFalse(isinstance(result, text_type))
415416
416 def test_win32_unc_path_to_url(self):417 def test_win32_unc_path_to_url(self):
417 self.requireFeature(features.win32_feature)418 self.requireFeature(features.win32_feature)
@@ -427,7 +428,7 @@
427 raise TestSkipped("local encoding cannot handle unicode")428 raise TestSkipped("local encoding cannot handle unicode")
428429
429 self.assertEqual('file://HOST/path/to/r%C3%A4ksm%C3%B6rg%C3%A5s', result)430 self.assertEqual('file://HOST/path/to/r%C3%A4ksm%C3%B6rg%C3%A5s', result)
430 self.assertFalse(isinstance(result, unicode))431 self.assertFalse(isinstance(result, text_type))
431432
432 def test_win32_local_path_from_url(self):433 def test_win32_local_path_from_url(self):
433 from_url = urlutils._win32_local_path_from_url434 from_url = urlutils._win32_local_path_from_url
@@ -610,7 +611,7 @@
610 # Test that URLs are converted to nice unicode strings for display611 # Test that URLs are converted to nice unicode strings for display
611 def test(expected, url, encoding='utf-8'):612 def test(expected, url, encoding='utf-8'):
612 disp_url = urlutils.unescape_for_display(url, encoding=encoding)613 disp_url = urlutils.unescape_for_display(url, encoding=encoding)
613 self.assertIsInstance(disp_url, unicode)614 self.assertIsInstance(disp_url, text_type)
614 self.assertEqual(expected, disp_url)615 self.assertEqual(expected, disp_url)
615616
616 test('http://foo', 'http://foo')617 test('http://foo', 'http://foo')
@@ -650,7 +651,7 @@
650 def test_escape(self):651 def test_escape(self):
651 self.assertEqual('%25', urlutils.escape('%'))652 self.assertEqual('%25', urlutils.escape('%'))
652 self.assertEqual('%C3%A5', urlutils.escape(u'\xe5'))653 self.assertEqual('%C3%A5', urlutils.escape(u'\xe5'))
653 self.assertFalse(isinstance(urlutils.escape(u'\xe5'), unicode))654 self.assertFalse(isinstance(urlutils.escape(u'\xe5'), text_type))
654655
655 def test_escape_tildes(self):656 def test_escape_tildes(self):
656 self.assertEqual('~foo', urlutils.escape('~foo'))657 self.assertEqual('~foo', urlutils.escape('~foo'))
657658
=== modified file 'breezy/tests/test_workingtree_4.py'
--- breezy/tests/test_workingtree_4.py 2018-06-14 12:13:00 +0000
+++ breezy/tests/test_workingtree_4.py 2018-06-21 23:03:57 +0000
@@ -281,17 +281,17 @@
281 builder.start_series()281 builder.start_series()
282 self.addCleanup(builder.finish_series)282 self.addCleanup(builder.finish_series)
283 builder.build_snapshot([], [283 builder.build_snapshot([], [
284 ('add', ('', 'root-id', 'directory', None)),284 ('add', ('', b'root-id', 'directory', None)),
285 ('add', ('a', 'a-id', 'file', 'content\n'))],285 ('add', ('a', b'a-id', 'file', b'content\n'))],
286 revision_id=b'A')286 revision_id=b'A')
287 builder.build_snapshot(['A'], [287 builder.build_snapshot([b'A'], [
288 ('modify', ('a', 'new content\nfor a\n')),288 ('modify', ('a', b'new content\nfor a\n')),
289 ('add', ('b', 'b-id', 'file', 'b-content\n'))],289 ('add', ('b', b'b-id', 'file', b'b-content\n'))],
290 revision_id=b'B')290 revision_id=b'B')
291 tree = self.make_workingtree('tree')291 tree = self.make_workingtree('tree')
292 source_branch = builder.get_branch()292 source_branch = builder.get_branch()
293 tree.branch.repository.fetch(source_branch.repository, 'B')293 tree.branch.repository.fetch(source_branch.repository, b'B')
294 tree.pull(source_branch, stop_revision='A')294 tree.pull(source_branch, stop_revision=b'A')
295 tree.lock_write()295 tree.lock_write()
296 self.addCleanup(tree.unlock)296 self.addCleanup(tree.unlock)
297 state = tree.current_dirstate()297 state = tree.current_dirstate()
@@ -302,37 +302,37 @@
302 return orig_update(delta, new_revid)302 return orig_update(delta, new_revid)
303 state.update_basis_by_delta = log_update_basis_by_delta303 state.update_basis_by_delta = log_update_basis_by_delta
304 basis = tree.basis_tree()304 basis = tree.basis_tree()
305 self.assertEqual('a-id', basis.path2id('a'))305 self.assertEqual(b'a-id', basis.path2id('a'))
306 self.assertFalse(basis.is_versioned('b'))306 self.assertFalse(basis.is_versioned('b'))
307 def fail_set_parent_trees(trees, ghosts):307 def fail_set_parent_trees(trees, ghosts):
308 raise AssertionError('dirstate.set_parent_trees() was called')308 raise AssertionError('dirstate.set_parent_trees() was called')
309 state.set_parent_trees = fail_set_parent_trees309 state.set_parent_trees = fail_set_parent_trees
310 repo = tree.branch.repository310 repo = tree.branch.repository
311 tree.pull(source_branch, stop_revision='B')311 tree.pull(source_branch, stop_revision=b'B')
312 self.assertEqual(['B'], called)312 self.assertEqual([b'B'], called)
313 basis = tree.basis_tree()313 basis = tree.basis_tree()
314 self.assertEqual('a-id', basis.path2id('a'))314 self.assertEqual(b'a-id', basis.path2id('a'))
315 self.assertEqual('b-id', basis.path2id('b'))315 self.assertEqual(b'b-id', basis.path2id('b'))
316316
317 def test_set_parent_trees_handles_missing_basis(self):317 def test_set_parent_trees_handles_missing_basis(self):
318 builder = self.make_branch_builder('source')318 builder = self.make_branch_builder('source')
319 builder.start_series()319 builder.start_series()
320 self.addCleanup(builder.finish_series)320 self.addCleanup(builder.finish_series)
321 builder.build_snapshot([], [321 builder.build_snapshot([], [
322 ('add', ('', 'root-id', 'directory', None)),322 ('add', ('', b'root-id', 'directory', None)),
323 ('add', ('a', 'a-id', 'file', 'content\n'))],323 ('add', ('a', b'a-id', 'file', b'content\n'))],
324 revision_id=b'A')324 revision_id=b'A')
325 builder.build_snapshot(['A'], [325 builder.build_snapshot([b'A'], [
326 ('modify', ('a', 'new content\nfor a\n')),326 ('modify', ('a', b'new content\nfor a\n')),
327 ('add', ('b', 'b-id', 'file', 'b-content\n'))],327 ('add', ('b', b'b-id', 'file', b'b-content\n'))],
328 revision_id=b'B')328 revision_id=b'B')
329 builder.build_snapshot(['A'], [329 builder.build_snapshot([b'A'], [
330 ('add', ('c', 'c-id', 'file', 'c-content\n'))],330 ('add', ('c', b'c-id', 'file', b'c-content\n'))],
331 revision_id=b'C')331 revision_id=b'C')
332 b_c = self.make_branch('branch_with_c')332 b_c = self.make_branch('branch_with_c')
333 b_c.pull(builder.get_branch(), stop_revision='C')333 b_c.pull(builder.get_branch(), stop_revision=b'C')
334 b_b = self.make_branch('branch_with_b')334 b_b = self.make_branch('branch_with_b')
335 b_b.pull(builder.get_branch(), stop_revision='B')335 b_b.pull(builder.get_branch(), stop_revision=b'B')
336 # This is reproducing some of what 'switch' does, just to isolate the336 # This is reproducing some of what 'switch' does, just to isolate the
337 # set_parent_trees() step.337 # set_parent_trees() step.
338 wt = b_b.create_checkout('tree', lightweight=True)338 wt = b_b.create_checkout('tree', lightweight=True)
@@ -340,7 +340,7 @@
340 fmt.set_reference(wt.controldir, None, b_c)340 fmt.set_reference(wt.controldir, None, b_c)
341 # Re-open with the new reference341 # Re-open with the new reference
342 wt = wt.controldir.open_workingtree()342 wt = wt.controldir.open_workingtree()
343 wt.set_parent_trees([('C', b_c.repository.revision_tree(b'C'))])343 wt.set_parent_trees([(b'C', b_c.repository.revision_tree(b'C'))])
344 self.assertFalse(wt.basis_tree().is_versioned('b'))344 self.assertFalse(wt.basis_tree().is_versioned('b'))
345345
346 def test_new_dirstate_on_new_lock(self):346 def test_new_dirstate_on_new_lock(self):
347347
=== modified file 'breezy/transform.py'
--- breezy/transform.py 2018-06-12 23:20:41 +0000
+++ breezy/transform.py 2018-06-21 23:03:57 +0000
@@ -66,6 +66,7 @@
66 )66 )
67from .progress import ProgressPhase67from .progress import ProgressPhase
68from .sixish import (68from .sixish import (
69 text_type,
69 viewitems,70 viewitems,
70 viewvalues,71 viewvalues,
71 )72 )
@@ -2122,7 +2123,7 @@
2122 if file_id is None:2123 if file_id is None:
2123 continue2124 continue
2124 if (specific_files is not None and2125 if (specific_files is not None and
2125 unicode(self._final_paths.get_path(trans_id)) not in specific_files):2126 self._final_paths.get_path(trans_id) not in specific_files):
2126 continue2127 continue
2127 kind = self._transform.final_kind(trans_id)2128 kind = self._transform.final_kind(trans_id)
2128 if kind is None:2129 if kind is None:
@@ -2167,7 +2168,7 @@
2167 ordered_ids = self._list_files_by_dir()2168 ordered_ids = self._list_files_by_dir()
2168 for entry, trans_id in self._make_inv_entries(ordered_ids,2169 for entry, trans_id in self._make_inv_entries(ordered_ids,
2169 specific_files):2170 specific_files):
2170 yield unicode(self._final_paths.get_path(trans_id)), entry2171 yield self._final_paths.get_path(trans_id), entry
21712172
2172 def _iter_entries_for_dir(self, dir_path):2173 def _iter_entries_for_dir(self, dir_path):
2173 """Return path, entry for items in a directory without recursing down."""2174 """Return path, entry for items in a directory without recursing down."""
@@ -2177,7 +2178,7 @@
2177 for child_trans_id in self._all_children(dir_trans_id):2178 for child_trans_id in self._all_children(dir_trans_id):
2178 ordered_ids.append((child_trans_id, dir_id))2179 ordered_ids.append((child_trans_id, dir_id))
2179 for entry, trans_id in self._make_inv_entries(ordered_ids):2180 for entry, trans_id in self._make_inv_entries(ordered_ids):
2180 yield unicode(self._final_paths.get_path(trans_id)), entry2181 yield self._final_paths.get_path(trans_id), entry
21812182
2182 def list_files(self, include_root=False, from_dir=None, recursive=True):2183 def list_files(self, include_root=False, from_dir=None, recursive=True):
2183 """See WorkingTree.list_files."""2184 """See WorkingTree.list_files."""
@@ -2622,7 +2623,7 @@
2622 precomputed_delta = None2623 precomputed_delta = None
2623 conflicts = cook_conflicts(raw_conflicts, tt)2624 conflicts = cook_conflicts(raw_conflicts, tt)
2624 for conflict in conflicts:2625 for conflict in conflicts:
2625 trace.warning(unicode(conflict))2626 trace.warning(text_type(conflict))
2626 try:2627 try:
2627 wt.add_conflicts(conflicts)2628 wt.add_conflicts(conflicts)
2628 except errors.UnsupportedOperation:2629 except errors.UnsupportedOperation:
@@ -2814,7 +2815,7 @@
2814 unversioned_filter=working_tree.is_ignored)2815 unversioned_filter=working_tree.is_ignored)
2815 delta.report_changes(tt.iter_changes(), change_reporter)2816 delta.report_changes(tt.iter_changes(), change_reporter)
2816 for conflict in conflicts:2817 for conflict in conflicts:
2817 trace.warning(unicode(conflict))2818 trace.warning(text_type(conflict))
2818 pp.next_phase()2819 pp.next_phase()
2819 tt.apply()2820 tt.apply()
2820 if working_tree.supports_merge_modified():2821 if working_tree.supports_merge_modified():
28212822
=== modified file 'breezy/transport/gio_transport.py'
--- breezy/transport/gio_transport.py 2017-09-26 00:55:04 +0000
+++ breezy/transport/gio_transport.py 2018-06-21 23:03:57 +0000
@@ -51,6 +51,7 @@
51 )51 )
52from ..sixish import (52from ..sixish import (
53 BytesIO,53 BytesIO,
54 text_type,
54 )55 )
55from ..trace import mutter56from ..trace import mutter
56from . import (57from . import (
@@ -153,7 +154,7 @@
153154
154 def _relpath_to_url(self, relpath):155 def _relpath_to_url(self, relpath):
155 full_url = urlutils.join(self.url, relpath)156 full_url = urlutils.join(self.url, relpath)
156 if isinstance(full_url, unicode):157 if isinstance(full_url, text_type):
157 raise urlutils.InvalidURL(full_url)158 raise urlutils.InvalidURL(full_url)
158 return full_url159 return full_url
159160
160161
=== modified file 'breezy/tree.py'
--- breezy/tree.py 2018-06-21 22:57:44 +0000
+++ breezy/tree.py 2018-06-21 23:03:57 +0000
@@ -44,6 +44,7 @@
44 )44 )
45from .inter import InterObject45from .inter import InterObject
46from .sixish import (46from .sixish import (
47 text_type,
47 viewvalues,48 viewvalues,
48 )49 )
4950
@@ -1163,10 +1164,10 @@
1163 # This is stolen from _dirstate_helpers_py.py, only switching it to1164 # This is stolen from _dirstate_helpers_py.py, only switching it to
1164 # Unicode objects. Consider using encode_utf8() and then using the1165 # Unicode objects. Consider using encode_utf8() and then using the
1165 # optimized versions, or maybe writing optimized unicode versions.1166 # optimized versions, or maybe writing optimized unicode versions.
1166 if not isinstance(path1, unicode):1167 if not isinstance(path1, text_type):
1167 raise TypeError("'path1' must be a unicode string, not %s: %r"1168 raise TypeError("'path1' must be a unicode string, not %s: %r"
1168 % (type(path1), path1))1169 % (type(path1), path1))
1169 if not isinstance(path2, unicode):1170 if not isinstance(path2, text_type):
1170 raise TypeError("'path2' must be a unicode string, not %s: %r"1171 raise TypeError("'path2' must be a unicode string, not %s: %r"
1171 % (type(path2), path2))1172 % (type(path2), path2))
1172 return cmp(MultiWalker._path_to_key(path1),1173 return cmp(MultiWalker._path_to_key(path1),
11731174
=== modified file 'breezy/urlutils.py'
--- breezy/urlutils.py 2018-06-21 19:00:42 +0000
+++ breezy/urlutils.py 2018-06-21 23:03:57 +0000
@@ -881,7 +881,7 @@
881 # pad.lv/1696545: For the moment, accept both native strings and unicode.881 # pad.lv/1696545: For the moment, accept both native strings and unicode.
882 if isinstance(url, str):882 if isinstance(url, str):
883 pass883 pass
884 elif isinstance(url, unicode):884 elif isinstance(url, text_type):
885 try:885 try:
886 url = url.encode()886 url = url.encode()
887 except UnicodeEncodeError:887 except UnicodeEncodeError:
888888
=== modified file 'breezy/utextwrap.py'
--- breezy/utextwrap.py 2017-05-22 00:56:52 +0000
+++ breezy/utextwrap.py 2018-06-21 23:03:57 +0000
@@ -30,6 +30,7 @@
30from unicodedata import east_asian_width as _eawidth30from unicodedata import east_asian_width as _eawidth
3131
32from . import osutils32from . import osutils
33from .sixish import text_type
3334
34__all__ = ["UTextWrapper", "fill", "wrap"]35__all__ = ["UTextWrapper", "fill", "wrap"]
3536
@@ -216,7 +217,7 @@
216 return lines217 return lines
217218
218 def _split(self, text):219 def _split(self, text):
219 chunks = textwrap.TextWrapper._split(self, unicode(text))220 chunks = textwrap.TextWrapper._split(self, text)
220 cjk_split_chunks = []221 cjk_split_chunks = []
221 for chunk in chunks:222 for chunk in chunks:
222 prev_pos = 0223 prev_pos = 0
@@ -232,7 +233,7 @@
232233
233 def wrap(self, text):234 def wrap(self, text):
234 # ensure text is unicode235 # ensure text is unicode
235 return textwrap.TextWrapper.wrap(self, unicode(text))236 return textwrap.TextWrapper.wrap(self, text_type(text))
236237
237# -- Convenience interface ---------------------------------------------238# -- Convenience interface ---------------------------------------------
238239
239240
=== modified file 'breezy/version.py'
--- breezy/version.py 2018-05-19 12:57:00 +0000
+++ breezy/version.py 2018-06-21 23:03:57 +0000
@@ -30,6 +30,7 @@
30 osutils,30 osutils,
31 trace,31 trace,
32 )32 )
33from .sixish import text_type
3334
3435
35def show_version(show_config=True, show_copyright=True, to_file=None):36def show_version(show_config=True, show_copyright=True, to_file=None):
@@ -80,7 +81,7 @@
80 to_file.write(breezy.__path__[0] + '\n')81 to_file.write(breezy.__path__[0] + '\n')
81 if show_config:82 if show_config:
82 config_dir = osutils.normpath(config.config_dir()) # use native slashes83 config_dir = osutils.normpath(config.config_dir()) # use native slashes
83 if not isinstance(config_dir, unicode):84 if not isinstance(config_dir, text_type):
84 config_dir = config_dir.decode(osutils.get_user_encoding())85 config_dir = config_dir.decode(osutils.get_user_encoding())
85 to_file.write(" Breezy configuration: %s\n" % (config_dir,))86 to_file.write(" Breezy configuration: %s\n" % (config_dir,))
86 to_file.write(" Breezy log file: ")87 to_file.write(" Breezy log file: ")
8788
=== modified file 'breezy/win32utils.py'
--- breezy/win32utils.py 2017-11-12 13:53:51 +0000
+++ breezy/win32utils.py 2018-06-21 23:03:57 +0000
@@ -271,7 +271,7 @@
271 if windir:271 if windir:
272 return os.path.splitdrive(windir)[0] + '/'272 return os.path.splitdrive(windir)[0] + '/'
273 # otherwise C:\ is good enough for 98% users273 # otherwise C:\ is good enough for 98% users
274 return unicode('C:/')274 return u'C:/'
275275
276276
277def get_user_name():277def get_user_name():
278278
=== modified file 'python3.passing'
--- python3.passing 2018-06-15 13:10:28 +0000
+++ python3.passing 2018-06-21 23:03:57 +0000
@@ -142,6 +142,7 @@
142breezy.tests.commands.test_init_repository.TestInitRepository.test_init_repository142breezy.tests.commands.test_init_repository.TestInitRepository.test_init_repository
143breezy.tests.commands.test_init.TestInit.test_init143breezy.tests.commands.test_init.TestInit.test_init
144breezy.tests.commands.test_merge.TestMerge.test_merge144breezy.tests.commands.test_merge.TestMerge.test_merge
145breezy.tests.commands.test_missing.TestMissing.test_missing
145breezy.tests.commands.test_pull.TestPull.test_pull146breezy.tests.commands.test_pull.TestPull.test_pull
146breezy.tests.commands.test_pull.TestPull.test_pull_with_bound_branch147breezy.tests.commands.test_pull.TestPull.test_pull_with_bound_branch
147breezy.tests.commands.test_push.TestPush.test_push148breezy.tests.commands.test_push.TestPush.test_push
@@ -280,6 +281,7 @@
280breezy.tests.per_branch.test_branch.TestBranch.test_clone_branch_nickname(RemoteBranchFormat-v2)281breezy.tests.per_branch.test_branch.TestBranch.test_clone_branch_nickname(RemoteBranchFormat-v2)
281breezy.tests.per_branch.test_branch.TestBranch.test_clone_branch_nickname(RemoteGitBranchFormat)282breezy.tests.per_branch.test_branch.TestBranch.test_clone_branch_nickname(RemoteGitBranchFormat)
282breezy.tests.per_branch.test_branch.TestBranch.test_clone_branch_parent(BranchReferenceFormat)283breezy.tests.per_branch.test_branch.TestBranch.test_clone_branch_parent(BranchReferenceFormat)
284breezy.tests.per_branch.test_branch.TestBranch.test_clone_branch_parent(BzrBranchFormat5)
283breezy.tests.per_branch.test_branch.TestBranch.test_clone_branch_parent(BzrBranchFormat6)285breezy.tests.per_branch.test_branch.TestBranch.test_clone_branch_parent(BzrBranchFormat6)
284breezy.tests.per_branch.test_branch.TestBranch.test_clone_branch_parent(BzrBranchFormat7)286breezy.tests.per_branch.test_branch.TestBranch.test_clone_branch_parent(BzrBranchFormat7)
285breezy.tests.per_branch.test_branch.TestBranch.test_clone_branch_parent(BzrBranchFormat8)287breezy.tests.per_branch.test_branch.TestBranch.test_clone_branch_parent(BzrBranchFormat8)
@@ -346,6 +348,10 @@
346breezy.tests.per_branch.test_branch.TestBranch.test_create_open_branch_uses_repository(RemoteBranchFormat-default)348breezy.tests.per_branch.test_branch.TestBranch.test_create_open_branch_uses_repository(RemoteBranchFormat-default)
347breezy.tests.per_branch.test_branch.TestBranch.test_create_open_branch_uses_repository(RemoteGitBranchFormat)349breezy.tests.per_branch.test_branch.TestBranch.test_create_open_branch_uses_repository(RemoteGitBranchFormat)
348breezy.tests.per_branch.test_branch.TestBranch.test_create_tree_with_merge(BranchReferenceFormat)350breezy.tests.per_branch.test_branch.TestBranch.test_create_tree_with_merge(BranchReferenceFormat)
351breezy.tests.per_branch.test_branch.TestBranch.test_create_tree_with_merge(BzrBranchFormat5)
352breezy.tests.per_branch.test_branch.TestBranch.test_create_tree_with_merge(BzrBranchFormat6)
353breezy.tests.per_branch.test_branch.TestBranch.test_create_tree_with_merge(BzrBranchFormat7)
354breezy.tests.per_branch.test_branch.TestBranch.test_create_tree_with_merge(BzrBranchFormat8)
349breezy.tests.per_branch.test_branch.TestBranch.test_create_tree_with_merge(RemoteGitBranchFormat)355breezy.tests.per_branch.test_branch.TestBranch.test_create_tree_with_merge(RemoteGitBranchFormat)
350breezy.tests.per_branch.test_branch.TestBranch.test_fetch_revisions(BranchReferenceFormat)356breezy.tests.per_branch.test_branch.TestBranch.test_fetch_revisions(BranchReferenceFormat)
351breezy.tests.per_branch.test_branch.TestBranch.test_fetch_revisions(BzrBranchFormat5)357breezy.tests.per_branch.test_branch.TestBranch.test_fetch_revisions(BzrBranchFormat5)
@@ -437,6 +443,10 @@
437breezy.tests.per_branch.test_branch.TestBranch.test_record_initial_ghost(RemoteGitBranchFormat)443breezy.tests.per_branch.test_branch.TestBranch.test_record_initial_ghost(RemoteGitBranchFormat)
438breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(BranchReferenceFormat)444breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(BranchReferenceFormat)
439breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(BzrBranchFormat4)445breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(BzrBranchFormat4)
446breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(BzrBranchFormat5)
447breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(BzrBranchFormat6)
448breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(BzrBranchFormat7)
449breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(BzrBranchFormat8)
440breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(LocalGitBranchFormat)450breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(LocalGitBranchFormat)
441breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(RemoteBranchFormat-default)451breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(RemoteBranchFormat-default)
442breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(RemoteGitBranchFormat)452breezy.tests.per_branch.test_branch.TestBranch.test_record_two_ghosts(RemoteGitBranchFormat)
@@ -778,6 +788,10 @@
778breezy.tests.per_branch.test_check.TestBranchCheck.test_check_branch_report_results(RemoteBranchFormat-v2)788breezy.tests.per_branch.test_check.TestBranchCheck.test_check_branch_report_results(RemoteBranchFormat-v2)
779breezy.tests.per_branch.test_check.TestBranchCheck.test_check_branch_report_results(RemoteGitBranchFormat)789breezy.tests.per_branch.test_check.TestBranchCheck.test_check_branch_report_results(RemoteGitBranchFormat)
780breezy.tests.per_branch.test_check.TestBranchCheck.test_check_detects_invalid_revhistory(BranchReferenceFormat)790breezy.tests.per_branch.test_check.TestBranchCheck.test_check_detects_invalid_revhistory(BranchReferenceFormat)
791breezy.tests.per_branch.test_check.TestBranchCheck.test_check_detects_invalid_revhistory(BzrBranchFormat5)
792breezy.tests.per_branch.test_check.TestBranchCheck.test_check_detects_invalid_revhistory(BzrBranchFormat6)
793breezy.tests.per_branch.test_check.TestBranchCheck.test_check_detects_invalid_revhistory(BzrBranchFormat7)
794breezy.tests.per_branch.test_check.TestBranchCheck.test_check_detects_invalid_revhistory(BzrBranchFormat8)
781breezy.tests.per_branch.test_check.TestBranchCheck.test_check_detects_invalid_revhistory(RemoteGitBranchFormat)795breezy.tests.per_branch.test_check.TestBranchCheck.test_check_detects_invalid_revhistory(RemoteGitBranchFormat)
782breezy.tests.per_branch.test_check.TestBranchCheck.test__get_check_refs(BranchReferenceFormat)796breezy.tests.per_branch.test_check.TestBranchCheck.test__get_check_refs(BranchReferenceFormat)
783breezy.tests.per_branch.test_check.TestBranchCheck.test__get_check_refs(BzrBranchFormat5)797breezy.tests.per_branch.test_check.TestBranchCheck.test__get_check_refs(BzrBranchFormat5)
@@ -1091,17 +1105,37 @@
1091breezy.tests.per_branch.test_hooks.TestPreChangeBranchTip.test_nonempty_history(LocalGitBranchFormat)1105breezy.tests.per_branch.test_hooks.TestPreChangeBranchTip.test_nonempty_history(LocalGitBranchFormat)
1092breezy.tests.per_branch.test_hooks.TestPreChangeBranchTip.test_nonempty_history(RemoteGitBranchFormat)1106breezy.tests.per_branch.test_hooks.TestPreChangeBranchTip.test_nonempty_history(RemoteGitBranchFormat)
1093breezy.tests.per_branch.test_http.InaccessibleParentTests.test_clone_invalid_parent(BranchReferenceFormat)1107breezy.tests.per_branch.test_http.InaccessibleParentTests.test_clone_invalid_parent(BranchReferenceFormat)
1108breezy.tests.per_branch.test_http.InaccessibleParentTests.test_clone_invalid_parent(BzrBranchFormat4)
1109breezy.tests.per_branch.test_http.InaccessibleParentTests.test_clone_invalid_parent(BzrBranchFormat5)
1110breezy.tests.per_branch.test_http.InaccessibleParentTests.test_clone_invalid_parent(BzrBranchFormat6)
1111breezy.tests.per_branch.test_http.InaccessibleParentTests.test_clone_invalid_parent(BzrBranchFormat7)
1112breezy.tests.per_branch.test_http.InaccessibleParentTests.test_clone_invalid_parent(BzrBranchFormat8)
1094breezy.tests.per_branch.test_http.InaccessibleParentTests.test_clone_invalid_parent(RemoteGitBranchFormat)1113breezy.tests.per_branch.test_http.InaccessibleParentTests.test_clone_invalid_parent(RemoteGitBranchFormat)
1095breezy.tests.per_branch.test_http.InaccessibleParentTests.test_get_parent_invalid(BranchReferenceFormat)1114breezy.tests.per_branch.test_http.InaccessibleParentTests.test_get_parent_invalid(BranchReferenceFormat)
1115breezy.tests.per_branch.test_http.InaccessibleParentTests.test_get_parent_invalid(BzrBranchFormat4)
1116breezy.tests.per_branch.test_http.InaccessibleParentTests.test_get_parent_invalid(BzrBranchFormat5)
1096breezy.tests.per_branch.test_http.InaccessibleParentTests.test_get_parent_invalid(BzrBranchFormat6)1117breezy.tests.per_branch.test_http.InaccessibleParentTests.test_get_parent_invalid(BzrBranchFormat6)
1097breezy.tests.per_branch.test_http.InaccessibleParentTests.test_get_parent_invalid(BzrBranchFormat7)1118breezy.tests.per_branch.test_http.InaccessibleParentTests.test_get_parent_invalid(BzrBranchFormat7)
1098breezy.tests.per_branch.test_http.InaccessibleParentTests.test_get_parent_invalid(BzrBranchFormat8)1119breezy.tests.per_branch.test_http.InaccessibleParentTests.test_get_parent_invalid(BzrBranchFormat8)
1099breezy.tests.per_branch.test_http.InaccessibleParentTests.test_get_parent_invalid(RemoteGitBranchFormat)1120breezy.tests.per_branch.test_http.InaccessibleParentTests.test_get_parent_invalid(RemoteGitBranchFormat)
1100breezy.tests.per_branch.test_http.InaccessibleParentTests.test_sprout_invalid_parent(BranchReferenceFormat)1121breezy.tests.per_branch.test_http.InaccessibleParentTests.test_sprout_invalid_parent(BranchReferenceFormat)
1122breezy.tests.per_branch.test_http.InaccessibleParentTests.test_sprout_invalid_parent(BzrBranchFormat4)
1123breezy.tests.per_branch.test_http.InaccessibleParentTests.test_sprout_invalid_parent(BzrBranchFormat5)
1124breezy.tests.per_branch.test_http.InaccessibleParentTests.test_sprout_invalid_parent(BzrBranchFormat6)
1125breezy.tests.per_branch.test_http.InaccessibleParentTests.test_sprout_invalid_parent(BzrBranchFormat7)
1126breezy.tests.per_branch.test_http.InaccessibleParentTests.test_sprout_invalid_parent(BzrBranchFormat8)
1101breezy.tests.per_branch.test_http.InaccessibleParentTests.test_sprout_invalid_parent(RemoteGitBranchFormat)1127breezy.tests.per_branch.test_http.InaccessibleParentTests.test_sprout_invalid_parent(RemoteGitBranchFormat)
1102breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_exclude_ancestry(BranchReferenceFormat)1128breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_exclude_ancestry(BranchReferenceFormat)
1129breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_exclude_ancestry(BzrBranchFormat5)
1130breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_exclude_ancestry(BzrBranchFormat6)
1131breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_exclude_ancestry(BzrBranchFormat7)
1132breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_exclude_ancestry(BzrBranchFormat8)
1103breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_exclude_ancestry(RemoteGitBranchFormat)1133breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_exclude_ancestry(RemoteGitBranchFormat)
1104breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_starting_at_embedded_merge(BranchReferenceFormat)1134breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_starting_at_embedded_merge(BranchReferenceFormat)
1135breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_starting_at_embedded_merge(BzrBranchFormat5)
1136breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_starting_at_embedded_merge(BzrBranchFormat6)
1137breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_starting_at_embedded_merge(BzrBranchFormat7)
1138breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_starting_at_embedded_merge(BzrBranchFormat8)
1105breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_starting_at_embedded_merge(RemoteGitBranchFormat)1139breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_starting_at_embedded_merge(RemoteGitBranchFormat)
1106breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_with_different_depths_merge(BranchReferenceFormat)1140breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_with_different_depths_merge(BranchReferenceFormat)
1107breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_with_different_depths_merge(RemoteGitBranchFormat)1141breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsBushyGraph.test_merge_sorted_with_different_depths_merge(RemoteGitBranchFormat)
@@ -1117,35 +1151,91 @@
1117breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_forward(BzrBranchFormat8)1151breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_forward(BzrBranchFormat8)
1118breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_forward(RemoteGitBranchFormat)1152breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_forward(RemoteGitBranchFormat)
1119breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range(BranchReferenceFormat)1153breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range(BranchReferenceFormat)
1154breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range(BzrBranchFormat5)
1155breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range(BzrBranchFormat6)
1156breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range(BzrBranchFormat7)
1157breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range(BzrBranchFormat8)
1120breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_forward(BranchReferenceFormat)1158breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_forward(BranchReferenceFormat)
1159breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_forward(BzrBranchFormat5)
1160breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_forward(BzrBranchFormat6)
1161breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_forward(BzrBranchFormat7)
1162breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_forward(BzrBranchFormat8)
1121breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_forward(RemoteGitBranchFormat)1163breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_forward(RemoteGitBranchFormat)
1122breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range(RemoteGitBranchFormat)1164breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range(RemoteGitBranchFormat)
1123breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only(BranchReferenceFormat)1165breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only(BranchReferenceFormat)
1166breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only(BzrBranchFormat5)
1167breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only(BzrBranchFormat6)
1168breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only(BzrBranchFormat7)
1169breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only(BzrBranchFormat8)
1124breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only_forward(BranchReferenceFormat)1170breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only_forward(BranchReferenceFormat)
1171breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only_forward(BzrBranchFormat5)
1172breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only_forward(BzrBranchFormat6)
1173breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only_forward(BzrBranchFormat7)
1174breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only_forward(BzrBranchFormat8)
1125breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only_forward(RemoteGitBranchFormat)1175breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only_forward(RemoteGitBranchFormat)
1126breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only(RemoteGitBranchFormat)1176breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_start_only(RemoteGitBranchFormat)
1127breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_exclude(BranchReferenceFormat)1177breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_exclude(BranchReferenceFormat)
1128breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_exclude_forward(BranchReferenceFormat)1178breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_exclude_forward(BranchReferenceFormat)
1179breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_exclude_forward(BzrBranchFormat5)
1180breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_exclude_forward(BzrBranchFormat6)
1181breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_exclude_forward(BzrBranchFormat7)
1182breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_exclude_forward(BzrBranchFormat8)
1129breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_exclude_forward(RemoteGitBranchFormat)1183breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_exclude_forward(RemoteGitBranchFormat)
1130breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_exclude(RemoteGitBranchFormat)1184breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_exclude(RemoteGitBranchFormat)
1131breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include(BranchReferenceFormat)1185breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include(BranchReferenceFormat)
1186breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include(BzrBranchFormat5)
1187breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include(BzrBranchFormat6)
1188breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include(BzrBranchFormat7)
1189breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include(BzrBranchFormat8)
1132breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include_forward(BranchReferenceFormat)1190breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include_forward(BranchReferenceFormat)
1191breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include_forward(BzrBranchFormat5)
1192breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include_forward(BzrBranchFormat6)
1193breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include_forward(BzrBranchFormat7)
1194breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include_forward(BzrBranchFormat8)
1133breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include_forward(RemoteGitBranchFormat)1195breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include_forward(RemoteGitBranchFormat)
1134breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include(RemoteGitBranchFormat)1196breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_include(RemoteGitBranchFormat)
1135breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges(BranchReferenceFormat)1197breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges(BranchReferenceFormat)
1198breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges(BzrBranchFormat5)
1199breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges(BzrBranchFormat6)
1200breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges(BzrBranchFormat7)
1201breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges(BzrBranchFormat8)
1136breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_can_show_non_parents(BranchReferenceFormat)1202breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_can_show_non_parents(BranchReferenceFormat)
1203breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_can_show_non_parents(BzrBranchFormat5)
1204breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_can_show_non_parents(BzrBranchFormat6)
1205breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_can_show_non_parents(BzrBranchFormat7)
1206breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_can_show_non_parents(BzrBranchFormat8)
1137breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_can_show_non_parents(RemoteGitBranchFormat)1207breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_can_show_non_parents(RemoteGitBranchFormat)
1138breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_forward(BranchReferenceFormat)1208breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_forward(BranchReferenceFormat)
1209breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_forward(BzrBranchFormat5)
1210breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_forward(BzrBranchFormat6)
1211breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_forward(BzrBranchFormat7)
1212breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_forward(BzrBranchFormat8)
1139breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_forward(RemoteGitBranchFormat)1213breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_forward(RemoteGitBranchFormat)
1140breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_ignore_non_parents(BranchReferenceFormat)1214breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_ignore_non_parents(BranchReferenceFormat)
1215breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_ignore_non_parents(BzrBranchFormat5)
1216breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_ignore_non_parents(BzrBranchFormat6)
1217breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_ignore_non_parents(BzrBranchFormat7)
1218breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_ignore_non_parents(BzrBranchFormat8)
1141breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_ignore_non_parents(RemoteGitBranchFormat)1219breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges_ignore_non_parents(RemoteGitBranchFormat)
1142breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges(RemoteGitBranchFormat)1220breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_range_stop_with_merges(RemoteGitBranchFormat)
1143breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted(RemoteGitBranchFormat)1221breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted(RemoteGitBranchFormat)
1144breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_exclude(BranchReferenceFormat)1222breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_exclude(BranchReferenceFormat)
1223breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_exclude(BzrBranchFormat5)
1224breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_exclude(BzrBranchFormat6)
1225breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_exclude(BzrBranchFormat7)
1226breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_exclude(BzrBranchFormat8)
1145breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_exclude(RemoteGitBranchFormat)1227breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_exclude(RemoteGitBranchFormat)
1146breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_include(BranchReferenceFormat)1228breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_include(BranchReferenceFormat)
1229breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_include(BzrBranchFormat5)
1230breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_include(BzrBranchFormat6)
1231breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_include(BzrBranchFormat7)
1232breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_include(BzrBranchFormat8)
1147breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_include(RemoteGitBranchFormat)1233breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_include(RemoteGitBranchFormat)
1148breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_with_merges(BranchReferenceFormat)1234breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_with_merges(BranchReferenceFormat)
1235breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_with_merges(BzrBranchFormat5)
1236breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_with_merges(BzrBranchFormat6)
1237breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_with_merges(BzrBranchFormat7)
1238breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_with_merges(BzrBranchFormat8)
1149breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_with_merges(RemoteGitBranchFormat)1239breezy.tests.per_branch.test_iter_merge_sorted_revisions.TestIterMergeSortedRevisionsSimpleGraph.test_merge_sorted_single_stop_with_merges(RemoteGitBranchFormat)
1150breezy.tests.per_branch.test_last_revision_info.TestLastRevisionInfo.test_empty_branch(BranchReferenceFormat)1240breezy.tests.per_branch.test_last_revision_info.TestLastRevisionInfo.test_empty_branch(BranchReferenceFormat)
1151breezy.tests.per_branch.test_last_revision_info.TestLastRevisionInfo.test_empty_branch(BzrBranchFormat4)1241breezy.tests.per_branch.test_last_revision_info.TestLastRevisionInfo.test_empty_branch(BzrBranchFormat4)
@@ -1654,6 +1744,10 @@
1654breezy.tests.per_branch.test_reconcile.TestBranchReconcile.test_reconcile_supports_thorough(BzrBranchFormat8)1744breezy.tests.per_branch.test_reconcile.TestBranchReconcile.test_reconcile_supports_thorough(BzrBranchFormat8)
1655breezy.tests.per_branch.test_reconcile.TestBranchReconcile.test_reconcile_supports_thorough(RemoteGitBranchFormat)1745breezy.tests.per_branch.test_reconcile.TestBranchReconcile.test_reconcile_supports_thorough(RemoteGitBranchFormat)
1656breezy.tests.per_branch.test_revision_id_to_dotted_revno.TestRevisionIdToDottedRevno.test_lookup_dotted_revno(BranchReferenceFormat)1746breezy.tests.per_branch.test_revision_id_to_dotted_revno.TestRevisionIdToDottedRevno.test_lookup_dotted_revno(BranchReferenceFormat)
1747breezy.tests.per_branch.test_revision_id_to_dotted_revno.TestRevisionIdToDottedRevno.test_lookup_dotted_revno(BzrBranchFormat5)
1748breezy.tests.per_branch.test_revision_id_to_dotted_revno.TestRevisionIdToDottedRevno.test_lookup_dotted_revno(BzrBranchFormat6)
1749breezy.tests.per_branch.test_revision_id_to_dotted_revno.TestRevisionIdToDottedRevno.test_lookup_dotted_revno(BzrBranchFormat7)
1750breezy.tests.per_branch.test_revision_id_to_dotted_revno.TestRevisionIdToDottedRevno.test_lookup_dotted_revno(BzrBranchFormat8)
1657breezy.tests.per_branch.test_revision_id_to_dotted_revno.TestRevisionIdToDottedRevno.test_lookup_dotted_revno(RemoteGitBranchFormat)1751breezy.tests.per_branch.test_revision_id_to_dotted_revno.TestRevisionIdToDottedRevno.test_lookup_dotted_revno(RemoteGitBranchFormat)
1658breezy.tests.per_branch.test_revision_id_to_revno.TestRevisionIdToRevno.test_empty(BranchReferenceFormat)1752breezy.tests.per_branch.test_revision_id_to_revno.TestRevisionIdToRevno.test_empty(BranchReferenceFormat)
1659breezy.tests.per_branch.test_revision_id_to_revno.TestRevisionIdToRevno.test_empty(RemoteBranchFormat-default)1753breezy.tests.per_branch.test_revision_id_to_revno.TestRevisionIdToRevno.test_empty(RemoteBranchFormat-default)
@@ -1676,6 +1770,8 @@
1676breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_nickname(RemoteBranchFormat-v2)1770breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_nickname(RemoteBranchFormat-v2)
1677breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_nickname(RemoteGitBranchFormat)1771breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_nickname(RemoteGitBranchFormat)
1678breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_parent(BranchReferenceFormat)1772breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_parent(BranchReferenceFormat)
1773breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_parent(BzrBranchFormat4)
1774breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_parent(BzrBranchFormat5)
1679breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_parent(BzrBranchFormat6)1775breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_parent(BzrBranchFormat6)
1680breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_parent(BzrBranchFormat7)1776breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_parent(BzrBranchFormat7)
1681breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_parent(BzrBranchFormat8)1777breezy.tests.per_branch.test_sprout.TestSprout.test_sprout_branch_parent(BzrBranchFormat8)
@@ -2464,10 +2560,12 @@
2464breezy.tests.per_interrepository.test_interrepository.TestInterRepository.test_interrepository_get_returns_correct_optimiser(InterSameDataRepository,RepositoryFormatKnit3,RepositoryFormatKnit3)2560breezy.tests.per_interrepository.test_interrepository.TestInterRepository.test_interrepository_get_returns_correct_optimiser(InterSameDataRepository,RepositoryFormatKnit3,RepositoryFormatKnit3)
2465breezy.tests.per_intertree.test_compare.TestCompare.test_abc_content_to_empty(InterDirStateTree(C))2561breezy.tests.per_intertree.test_compare.TestCompare.test_abc_content_to_empty(InterDirStateTree(C))
2466breezy.tests.per_intertree.test_compare.TestCompare.test_abc_content_to_empty(InterTree)2562breezy.tests.per_intertree.test_compare.TestCompare.test_abc_content_to_empty(InterTree)
2563breezy.tests.per_intertree.test_compare.TestCompare.test_abc_content_to_empty(InterTree(PreviewTree))
2467breezy.tests.per_intertree.test_compare.TestCompare.test_compare_empty_trees(InterDirStateTree(C))2564breezy.tests.per_intertree.test_compare.TestCompare.test_compare_empty_trees(InterDirStateTree(C))
2468breezy.tests.per_intertree.test_compare.TestCompare.test_compare_empty_trees(InterDirStateTree(PY))2565breezy.tests.per_intertree.test_compare.TestCompare.test_compare_empty_trees(InterDirStateTree(PY))
2469breezy.tests.per_intertree.test_compare.TestCompare.test_compare_empty_trees(InterTree)2566breezy.tests.per_intertree.test_compare.TestCompare.test_compare_empty_trees(InterTree)
2470breezy.tests.per_intertree.test_compare.TestCompare.test_compare_empty_trees(InterTree(CHKInventory))2567breezy.tests.per_intertree.test_compare.TestCompare.test_compare_empty_trees(InterTree(CHKInventory))
2568breezy.tests.per_intertree.test_compare.TestCompare.test_compare_empty_trees(InterTree(PreviewTree))
2471breezy.tests.per_intertree.test_compare.TestCompare.test_dangling(InterDirStateTree(C))2569breezy.tests.per_intertree.test_compare.TestCompare.test_dangling(InterDirStateTree(C))
2472breezy.tests.per_intertree.test_compare.TestCompare.test_dangling(InterDirStateTree(PY))2570breezy.tests.per_intertree.test_compare.TestCompare.test_dangling(InterDirStateTree(PY))
2473breezy.tests.per_intertree.test_compare.TestCompare.test_dangling(InterTree(CHKInventory))2571breezy.tests.per_intertree.test_compare.TestCompare.test_dangling(InterTree(CHKInventory))
@@ -2475,18 +2573,23 @@
2475breezy.tests.per_intertree.test_compare.TestCompare.test_default_ignores_unversioned_files(InterDirStateTree(PY))2573breezy.tests.per_intertree.test_compare.TestCompare.test_default_ignores_unversioned_files(InterDirStateTree(PY))
2476breezy.tests.per_intertree.test_compare.TestCompare.test_default_ignores_unversioned_files(InterTree)2574breezy.tests.per_intertree.test_compare.TestCompare.test_default_ignores_unversioned_files(InterTree)
2477breezy.tests.per_intertree.test_compare.TestCompare.test_default_ignores_unversioned_files(InterTree(CHKInventory))2575breezy.tests.per_intertree.test_compare.TestCompare.test_default_ignores_unversioned_files(InterTree(CHKInventory))
2576breezy.tests.per_intertree.test_compare.TestCompare.test_default_ignores_unversioned_files(InterTree(PreviewTree))
2478breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_a_and_c_only(InterDirStateTree(C))2577breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_a_and_c_only(InterDirStateTree(C))
2479breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_a_only(InterDirStateTree(C))2578breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_a_only(InterDirStateTree(C))
2480breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_b_only(InterDirStateTree(C))2579breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_b_only(InterDirStateTree(C))
2481breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_c_only(InterDirStateTree(C))2580breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_c_only(InterDirStateTree(C))
2482breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content(InterDirStateTree(C))2581breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content(InterDirStateTree(C))
2483breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content(InterTree)2582breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content(InterTree)
2583breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content(InterTree(PreviewTree))
2484breezy.tests.per_intertree.test_compare.TestCompare.test_extra_trees_finds_ids(InterDirStateTree(C))2584breezy.tests.per_intertree.test_compare.TestCompare.test_extra_trees_finds_ids(InterDirStateTree(C))
2485breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename_and_meta_modification(InterDirStateTree(C))2585breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename_and_meta_modification(InterDirStateTree(C))
2486breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename_and_meta_modification(InterTree)2586breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename_and_meta_modification(InterTree)
2587breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename_and_meta_modification(InterTree(PreviewTree))
2487breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename(InterTree)2588breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename(InterTree)
2589breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename(InterTree(PreviewTree))
2488breezy.tests.per_intertree.test_compare.TestCompare.test_meta_modification(InterDirStateTree(C))2590breezy.tests.per_intertree.test_compare.TestCompare.test_meta_modification(InterDirStateTree(C))
2489breezy.tests.per_intertree.test_compare.TestCompare.test_meta_modification(InterTree)2591breezy.tests.per_intertree.test_compare.TestCompare.test_meta_modification(InterTree)
2592breezy.tests.per_intertree.test_compare.TestCompare.test_meta_modification(InterTree(PreviewTree))
2490breezy.tests.per_intertree.test_compare.TestCompare.test_require_versioned(InterDirStateTree(C))2593breezy.tests.per_intertree.test_compare.TestCompare.test_require_versioned(InterDirStateTree(C))
2491breezy.tests.per_intertree.test_compare.TestCompare.test_require_versioned(InterDirStateTree(PY))2594breezy.tests.per_intertree.test_compare.TestCompare.test_require_versioned(InterDirStateTree(PY))
2492breezy.tests.per_intertree.test_compare.TestCompare.test_require_versioned(InterTree)2595breezy.tests.per_intertree.test_compare.TestCompare.test_require_versioned(InterTree)
@@ -2495,16 +2598,21 @@
2495breezy.tests.per_intertree.test_compare.TestCompare.test_unversioned_paths_in_tree(InterDirStateTree(PY))2598breezy.tests.per_intertree.test_compare.TestCompare.test_unversioned_paths_in_tree(InterDirStateTree(PY))
2496breezy.tests.per_intertree.test_compare.TestCompare.test_unversioned_paths_in_tree(InterTree)2599breezy.tests.per_intertree.test_compare.TestCompare.test_unversioned_paths_in_tree(InterTree)
2497breezy.tests.per_intertree.test_compare.TestCompare.test_unversioned_paths_in_tree(InterTree(CHKInventory))2600breezy.tests.per_intertree.test_compare.TestCompare.test_unversioned_paths_in_tree(InterTree(CHKInventory))
2601breezy.tests.per_intertree.test_compare.TestCompare.test_unversioned_paths_in_tree(InterTree(PreviewTree))
2498breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_a_only(InterDirStateTree(C))2602breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_a_only(InterDirStateTree(C))
2499breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_a_only(InterTree)2603breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_a_only(InterTree)
2604breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_a_only(InterTree(PreviewTree))
2500breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_b_only(InterDirStateTree(C))2605breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_b_only(InterDirStateTree(C))
2501breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_b_only(InterTree)2606breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_b_only(InterTree)
2607breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_b_only(InterTree(PreviewTree))
2502breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty(InterDirStateTree(C))2608breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty(InterDirStateTree(C))
2503breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty(InterTree)2609breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty(InterTree)
2610breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty(InterTree(PreviewTree))
2504breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_empty_trees(InterDirStateTree(C))2611breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_empty_trees(InterDirStateTree(C))
2505breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_empty_trees(InterDirStateTree(PY))2612breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_empty_trees(InterDirStateTree(PY))
2506breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_empty_trees(InterTree)2613breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_empty_trees(InterTree)
2507breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_empty_trees(InterTree(CHKInventory))2614breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_empty_trees(InterTree(CHKInventory))
2615breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_empty_trees(InterTree(PreviewTree))
2508breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_subtrees(InterDirStateTree(C))2616breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_subtrees(InterDirStateTree(C))
2509breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_subtrees(InterDirStateTree(PY))2617breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_subtrees(InterDirStateTree(PY))
2510breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_subtrees(InterTree)2618breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_subtrees(InterTree)
@@ -2513,6 +2621,7 @@
2513breezy.tests.per_intertree.test_compare.TestIterChanges.test_default_ignores_unversioned_files(InterDirStateTree(C))2621breezy.tests.per_intertree.test_compare.TestIterChanges.test_default_ignores_unversioned_files(InterDirStateTree(C))
2514breezy.tests.per_intertree.test_compare.TestIterChanges.test_default_ignores_unversioned_files(InterTree)2622breezy.tests.per_intertree.test_compare.TestIterChanges.test_default_ignores_unversioned_files(InterTree)
2515breezy.tests.per_intertree.test_compare.TestIterChanges.test_default_ignores_unversioned_files(InterTree(CHKInventory))2623breezy.tests.per_intertree.test_compare.TestIterChanges.test_default_ignores_unversioned_files(InterTree(CHKInventory))
2624breezy.tests.per_intertree.test_compare.TestIterChanges.test_default_ignores_unversioned_files(InterTree(PreviewTree))
2516breezy.tests.per_intertree.test_compare.TestIterChanges.test_deleted_and_unknown(InterDirStateTree(C))2625breezy.tests.per_intertree.test_compare.TestIterChanges.test_deleted_and_unknown(InterDirStateTree(C))
2517breezy.tests.per_intertree.test_compare.TestIterChanges.test_deleted_and_unknown(InterTree(CHKInventory))2626breezy.tests.per_intertree.test_compare.TestIterChanges.test_deleted_and_unknown(InterTree(CHKInventory))
2518breezy.tests.per_intertree.test_compare.TestIterChanges.test_disk_in_subtrees_skipped(InterDirStateTree(C))2627breezy.tests.per_intertree.test_compare.TestIterChanges.test_disk_in_subtrees_skipped(InterDirStateTree(C))
@@ -2520,28 +2629,37 @@
2520breezy.tests.per_intertree.test_compare.TestIterChanges.test_disk_in_subtrees_skipped(InterTree(CHKInventory))2629breezy.tests.per_intertree.test_compare.TestIterChanges.test_disk_in_subtrees_skipped(InterTree(CHKInventory))
2521breezy.tests.per_intertree.test_compare.TestIterChanges.test_disk_in_subtrees_skipped(InterTree(PreviewTree))2630breezy.tests.per_intertree.test_compare.TestIterChanges.test_disk_in_subtrees_skipped(InterTree(PreviewTree))
2522breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_dir(InterTree)2631breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_dir(InterTree)
2632breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_dir(InterTree(PreviewTree))
2523breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_specific_files(InterDirStateTree(C))2633breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_specific_files(InterDirStateTree(C))
2524breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_specific_files(InterDirStateTree(PY))2634breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_specific_files(InterDirStateTree(PY))
2525breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_specific_files(InterTree)2635breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_specific_files(InterTree)
2636breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_specific_files(InterTree(PreviewTree))
2526breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content_a_and_c_only(InterDirStateTree(C))2637breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content_a_and_c_only(InterDirStateTree(C))
2527breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content_a_only(InterDirStateTree(C))2638breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content_a_only(InterDirStateTree(C))
2528breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content(InterDirStateTree(C))2639breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content(InterDirStateTree(C))
2529breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content(InterTree)2640breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content(InterTree)
2641breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content(InterTree(PreviewTree))
2530breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_becomes_unversionable_bug_438569(InterDirStateTree(C))2642breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_becomes_unversionable_bug_438569(InterDirStateTree(C))
2531breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_becomes_unversionable_bug_438569(InterDirStateTree(PY))2643breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_becomes_unversionable_bug_438569(InterDirStateTree(PY))
2532breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_becomes_unversionable_bug_438569(InterTree)2644breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_becomes_unversionable_bug_438569(InterTree)
2533breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_becomes_unversionable_bug_438569(InterTree(CHKInventory))2645breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_becomes_unversionable_bug_438569(InterTree(CHKInventory))
2646breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_becomes_unversionable_bug_438569(InterTree(PreviewTree))
2534breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename_and_meta_modification(InterDirStateTree(C))2647breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename_and_meta_modification(InterDirStateTree(C))
2535breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename_and_meta_modification(InterTree)2648breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename_and_meta_modification(InterTree)
2649breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename_and_meta_modification(InterTree(PreviewTree))
2536breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename(InterTree)2650breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename(InterTree)
2651breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename(InterTree(PreviewTree))
2537breezy.tests.per_intertree.test_compare.TestIterChanges.test_meta_modification(InterDirStateTree(C))2652breezy.tests.per_intertree.test_compare.TestIterChanges.test_meta_modification(InterDirStateTree(C))
2538breezy.tests.per_intertree.test_compare.TestIterChanges.test_meta_modification(InterTree)2653breezy.tests.per_intertree.test_compare.TestIterChanges.test_meta_modification(InterTree)
2654breezy.tests.per_intertree.test_compare.TestIterChanges.test_meta_modification(InterTree(PreviewTree))
2539breezy.tests.per_intertree.test_compare.TestIterChanges.test_missing_and_renamed(InterDirStateTree(C))2655breezy.tests.per_intertree.test_compare.TestIterChanges.test_missing_and_renamed(InterDirStateTree(C))
2540breezy.tests.per_intertree.test_compare.TestIterChanges.test_missing_and_renamed(InterTree(CHKInventory))2656breezy.tests.per_intertree.test_compare.TestIterChanges.test_missing_and_renamed(InterTree(CHKInventory))
2541breezy.tests.per_intertree.test_compare.TestIterChanges.test_missing_in_target(InterDirStateTree(C))2657breezy.tests.per_intertree.test_compare.TestIterChanges.test_missing_in_target(InterDirStateTree(C))
2542breezy.tests.per_intertree.test_compare.TestIterChanges.test_missing_in_target(InterTree)2658breezy.tests.per_intertree.test_compare.TestIterChanges.test_missing_in_target(InterTree)
2659breezy.tests.per_intertree.test_compare.TestIterChanges.test_missing_in_target(InterTree(PreviewTree))
2543breezy.tests.per_intertree.test_compare.TestIterChanges.test_no_specific_files(InterDirStateTree(C))2660breezy.tests.per_intertree.test_compare.TestIterChanges.test_no_specific_files(InterDirStateTree(C))
2544breezy.tests.per_intertree.test_compare.TestIterChanges.test_no_specific_files(InterTree)2661breezy.tests.per_intertree.test_compare.TestIterChanges.test_no_specific_files(InterTree)
2662breezy.tests.per_intertree.test_compare.TestIterChanges.test_no_specific_files(InterTree(PreviewTree))
2545breezy.tests.per_intertree.test_compare.TestIterChanges.test_only_in_source_and_missing(InterDirStateTree(C))2663breezy.tests.per_intertree.test_compare.TestIterChanges.test_only_in_source_and_missing(InterDirStateTree(C))
2546breezy.tests.per_intertree.test_compare.TestIterChanges.test_only_in_source_and_missing(InterDirStateTree(PY))2664breezy.tests.per_intertree.test_compare.TestIterChanges.test_only_in_source_and_missing(InterDirStateTree(PY))
2547breezy.tests.per_intertree.test_compare.TestIterChanges.test_only_in_source_and_missing(InterTree(CHKInventory))2665breezy.tests.per_intertree.test_compare.TestIterChanges.test_only_in_source_and_missing(InterTree(CHKInventory))
@@ -2551,32 +2669,43 @@
2551breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_added(InterDirStateTree(C))2669breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_added(InterDirStateTree(C))
2552breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_added(InterTree)2670breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_added(InterTree)
2553breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_added(InterTree(CHKInventory))2671breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_added(InterTree(CHKInventory))
2672breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_added(InterTree(PreviewTree))
2554breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_unknown(InterDirStateTree(C))2673breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_unknown(InterDirStateTree(C))
2555breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_unknown(InterTree(CHKInventory))2674breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_unknown(InterTree(CHKInventory))
2556breezy.tests.per_intertree.test_compare.TestIterChanges.test_rename_over_deleted(InterDirStateTree(C))2675breezy.tests.per_intertree.test_compare.TestIterChanges.test_rename_over_deleted(InterDirStateTree(C))
2557breezy.tests.per_intertree.test_compare.TestIterChanges.test_rename_over_deleted(InterTree)2676breezy.tests.per_intertree.test_compare.TestIterChanges.test_rename_over_deleted(InterTree)
2558breezy.tests.per_intertree.test_compare.TestIterChanges.test_rename_over_deleted(InterTree(CHKInventory))2677breezy.tests.per_intertree.test_compare.TestIterChanges.test_rename_over_deleted(InterTree(CHKInventory))
2678breezy.tests.per_intertree.test_compare.TestIterChanges.test_rename_over_deleted(InterTree(PreviewTree))
2679breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_content_modification_grabs_parents(InterDirStateTree(C))
2680breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_content_modification_grabs_parents_root_changes(InterDirStateTree(C))
2681breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_becomes_file(InterDirStateTree(C))
2559breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_child_collides_with_unselected_new(InterDirStateTree(C))2682breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_child_collides_with_unselected_new(InterDirStateTree(C))
2560breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_child_dir_stops_being_dir(InterDirStateTree(C))2683breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_child_dir_stops_being_dir(InterDirStateTree(C))
2684breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_same_path_new_parent(InterDirStateTree(C))
2561breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_with_rename_under_new_dir_reports_new_dir(InterDirStateTree(C))2685breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_with_rename_under_new_dir_reports_new_dir(InterDirStateTree(C))
2562breezy.tests.per_intertree.test_compare.TestIterChanges.test_trees_with_deleted_dir(InterDirStateTree(C))2686breezy.tests.per_intertree.test_compare.TestIterChanges.test_trees_with_deleted_dir(InterDirStateTree(C))
2563breezy.tests.per_intertree.test_compare.TestIterChanges.test_trees_with_deleted_dir(InterTree)2687breezy.tests.per_intertree.test_compare.TestIterChanges.test_trees_with_deleted_dir(InterTree)
2688breezy.tests.per_intertree.test_compare.TestIterChanges.test_trees_with_deleted_dir(InterTree(PreviewTree))
2564breezy.tests.per_intertree.test_compare.TestIterChanges.test_trees_with_special_names(InterDirStateTree(C))2689breezy.tests.per_intertree.test_compare.TestIterChanges.test_trees_with_special_names(InterDirStateTree(C))
2565breezy.tests.per_intertree.test_compare.TestIterChanges.test_unknown_empty_dir(InterDirStateTree(C))2690breezy.tests.per_intertree.test_compare.TestIterChanges.test_unknown_empty_dir(InterDirStateTree(C))
2566breezy.tests.per_intertree.test_compare.TestIterChanges.test_unknown_empty_dir(InterTree)2691breezy.tests.per_intertree.test_compare.TestIterChanges.test_unknown_empty_dir(InterTree)
2692breezy.tests.per_intertree.test_compare.TestIterChanges.test_unknown_empty_dir(InterTree(PreviewTree))
2567breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_target_matching_source_old_names(InterDirStateTree(C))2693breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_target_matching_source_old_names(InterDirStateTree(C))
2568breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_target_matching_source_old_names(InterTree(CHKInventory))2694breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_target_matching_source_old_names(InterTree(CHKInventory))
2569breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree(InterDirStateTree(C))2695breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree(InterDirStateTree(C))
2570breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree(InterDirStateTree(PY))2696breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree(InterDirStateTree(PY))
2571breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree(InterTree)2697breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree(InterTree)
2572breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree(InterTree(CHKInventory))2698breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree(InterTree(CHKInventory))
2699breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree(InterTree(PreviewTree))
2573breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree_specific_files(InterDirStateTree(C))2700breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree_specific_files(InterDirStateTree(C))
2574breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree_specific_files(InterTree)2701breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree_specific_files(InterTree)
2575breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree_specific_files(InterTree(CHKInventory))2702breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree_specific_files(InterTree(CHKInventory))
2703breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree_specific_files(InterTree(PreviewTree))
2576breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_subtree_only_emits_root(InterDirStateTree(C))2704breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_subtree_only_emits_root(InterDirStateTree(C))
2577breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_subtree_only_emits_root(InterDirStateTree(PY))2705breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_subtree_only_emits_root(InterDirStateTree(PY))
2578breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_subtree_only_emits_root(InterTree)2706breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_subtree_only_emits_root(InterTree)
2579breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_subtree_only_emits_root(InterTree(CHKInventory))2707breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_subtree_only_emits_root(InterTree(CHKInventory))
2708breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_subtree_only_emits_root(InterTree(PreviewTree))
2580breezy.tests.per_intertree.test_file_content_matches.TestFileContentMatches.test_different_contents_and_same_verifier(InterDirStateTree(C))2709breezy.tests.per_intertree.test_file_content_matches.TestFileContentMatches.test_different_contents_and_same_verifier(InterDirStateTree(C))
2581breezy.tests.per_intertree.test_file_content_matches.TestFileContentMatches.test_different_contents_and_same_verifier(InterDirStateTree(PY))2710breezy.tests.per_intertree.test_file_content_matches.TestFileContentMatches.test_different_contents_and_same_verifier(InterDirStateTree(PY))
2582breezy.tests.per_intertree.test_file_content_matches.TestFileContentMatches.test_different_contents_and_same_verifier(InterTree)2711breezy.tests.per_intertree.test_file_content_matches.TestFileContentMatches.test_different_contents_and_same_verifier(InterTree)
@@ -2673,6 +2802,13 @@
2673breezy.tests.per_pack_repository.TestPackRepository.test_concurrent_pack_during_get_record_reloads(2a)2802breezy.tests.per_pack_repository.TestPackRepository.test_concurrent_pack_during_get_record_reloads(2a)
2674breezy.tests.per_pack_repository.TestPackRepository.test_concurrent_pack_during_get_record_reloads(pack-0.92)2803breezy.tests.per_pack_repository.TestPackRepository.test_concurrent_pack_during_get_record_reloads(pack-0.92)
2675breezy.tests.per_pack_repository.TestPackRepository.test_concurrent_pack_during_get_record_reloads(pack-0.92-subtree)2804breezy.tests.per_pack_repository.TestPackRepository.test_concurrent_pack_during_get_record_reloads(pack-0.92-subtree)
2805breezy.tests.per_pack_repository.TestPackRepository.test_fail_obsolete_deletion(1.6)
2806breezy.tests.per_pack_repository.TestPackRepository.test_fail_obsolete_deletion(1.6.1-rich-root)
2807breezy.tests.per_pack_repository.TestPackRepository.test_fail_obsolete_deletion(1.9)
2808breezy.tests.per_pack_repository.TestPackRepository.test_fail_obsolete_deletion(1.9-rich-root)
2809breezy.tests.per_pack_repository.TestPackRepository.test_fail_obsolete_deletion(2a)
2810breezy.tests.per_pack_repository.TestPackRepository.test_fail_obsolete_deletion(pack-0.92)
2811breezy.tests.per_pack_repository.TestPackRepository.test_fail_obsolete_deletion(pack-0.92-subtree)
2676breezy.tests.per_pack_repository.TestPackRepository.test_fetch_without_find_ghosts_ignores_ghosts(2a)2812breezy.tests.per_pack_repository.TestPackRepository.test_fetch_without_find_ghosts_ignores_ghosts(2a)
2677breezy.tests.per_pack_repository.TestPackRepository.test_lock_write_does_not_physically_lock(1.6)2813breezy.tests.per_pack_repository.TestPackRepository.test_lock_write_does_not_physically_lock(1.6)
2678breezy.tests.per_pack_repository.TestPackRepository.test_lock_write_does_not_physically_lock(1.6.1-rich-root)2814breezy.tests.per_pack_repository.TestPackRepository.test_lock_write_does_not_physically_lock(1.6.1-rich-root)
@@ -4331,6 +4467,8 @@
4331breezy.tests.per_repository.test_repository.TestRepository.test_clone_to_hpss(RepositoryFormat4)4467breezy.tests.per_repository.test_repository.TestRepository.test_clone_to_hpss(RepositoryFormat4)
4332breezy.tests.per_repository.test_repository.TestRepository.test_clone_to_hpss(RepositoryFormat5)4468breezy.tests.per_repository.test_repository.TestRepository.test_clone_to_hpss(RepositoryFormat5)
4333breezy.tests.per_repository.test_repository.TestRepository.test_clone_to_hpss(RepositoryFormat6)4469breezy.tests.per_repository.test_repository.TestRepository.test_clone_to_hpss(RepositoryFormat6)
4470breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_message(RepositoryFormat2a)
4471breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_message(RepositoryFormat2aSubtree)
4334breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_message(RepositoryFormat4)4472breezy.tests.per_repository.test_repository.TestRepository.test_commit_unicode_message(RepositoryFormat4)
4335breezy.tests.per_repository.test_repository.TestRepository.test_create_repository(RemoteRepositoryFormat-default)4473breezy.tests.per_repository.test_repository.TestRepository.test_create_repository(RemoteRepositoryFormat-default)
4336breezy.tests.per_repository.test_repository.TestRepository.test_create_repository(RemoteRepositoryFormat-v2)4474breezy.tests.per_repository.test_repository.TestRepository.test_create_repository(RemoteRepositoryFormat-v2)
@@ -5882,18 +6020,42 @@
5882breezy.tests.per_transport.TransportTests.test_connection_sharing(TransportLogDecorator,LogDecoratorServer)6020breezy.tests.per_transport.TransportTests.test_connection_sharing(TransportLogDecorator,LogDecoratorServer)
5883breezy.tests.per_transport.TransportTests.test_connection_sharing(TransportTraceDecorator,TraceServer)6021breezy.tests.per_transport.TransportTests.test_connection_sharing(TransportTraceDecorator,TraceServer)
5884breezy.tests.per_transport.TransportTests.test_connection_sharing(UnlistableTransportDecorator,UnlistableServer)6022breezy.tests.per_transport.TransportTests.test_connection_sharing(UnlistableTransportDecorator,UnlistableServer)
6023breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(ChrootTransport,TestingChrootServer)
6024breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(FakeNFSTransportDecorator,FakeNFSServer)
6025breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(FakeVFATTransportDecorator,FakeVFATServer)
5885breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(FtpTransport,UnavailableFTPTestServer)6026breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(FtpTransport,UnavailableFTPTestServer)
5886breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(HTTPS_transport,HTTPSServer)6027breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(HTTPS_transport,HTTPSServer)
5887breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(HTTPS_urllib_transport,HTTPSServer_urllib)6028breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(HTTPS_urllib_transport,HTTPSServer_urllib)
5888breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(HttpTransport,HttpServer)6029breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(HttpTransport,HttpServer)
5889breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(HttpTransport_urllib,HttpServer_urllib)6030breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(HttpTransport_urllib,HttpServer_urllib)
6031breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(LocalTransport,LocalURLServer)
6032breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(MemoryTransport,MemoryServer)
6033breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(NoSmartTransportDecorator,NoSmartTransportServer)
6034breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(PathFilteringTransport,TestingPathFilteringServer)
5890breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(ReadonlyTransportDecorator,ReadonlyServer)6035breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(ReadonlyTransportDecorator,ReadonlyServer)
6036breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(RemoteTCPTransport,SmartTCPServer_for_testing)
6037breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(SFTPTransport,SFTPAbsoluteServer)
6038breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(SFTPTransport,SFTPHomeDirServer)
6039breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(SFTPTransport,SFTPSiblingAbsoluteServer)
6040breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(TransportLogDecorator,LogDecoratorServer)
6041breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(TransportTraceDecorator,TraceServer)
6042breezy.tests.per_transport.TransportTests.test_connect_twice_is_same_content(UnlistableTransportDecorator,UnlistableServer)
6043breezy.tests.per_transport.TransportTests.test_copy(ChrootTransport,TestingChrootServer)
6044breezy.tests.per_transport.TransportTests.test_copy(FakeNFSTransportDecorator,FakeNFSServer)
6045breezy.tests.per_transport.TransportTests.test_copy(FakeVFATTransportDecorator,FakeVFATServer)
5891breezy.tests.per_transport.TransportTests.test_copy(FtpTransport,UnavailableFTPTestServer)6046breezy.tests.per_transport.TransportTests.test_copy(FtpTransport,UnavailableFTPTestServer)
5892breezy.tests.per_transport.TransportTests.test_copy(HTTPS_transport,HTTPSServer)6047breezy.tests.per_transport.TransportTests.test_copy(HTTPS_transport,HTTPSServer)
5893breezy.tests.per_transport.TransportTests.test_copy(HTTPS_urllib_transport,HTTPSServer_urllib)6048breezy.tests.per_transport.TransportTests.test_copy(HTTPS_urllib_transport,HTTPSServer_urllib)
5894breezy.tests.per_transport.TransportTests.test_copy(HttpTransport,HttpServer)6049breezy.tests.per_transport.TransportTests.test_copy(HttpTransport,HttpServer)
5895breezy.tests.per_transport.TransportTests.test_copy(HttpTransport_urllib,HttpServer_urllib)6050breezy.tests.per_transport.TransportTests.test_copy(HttpTransport_urllib,HttpServer_urllib)
6051breezy.tests.per_transport.TransportTests.test_copy(LocalTransport,LocalURLServer)
6052breezy.tests.per_transport.TransportTests.test_copy(MemoryTransport,MemoryServer)
6053breezy.tests.per_transport.TransportTests.test_copy(NoSmartTransportDecorator,NoSmartTransportServer)
6054breezy.tests.per_transport.TransportTests.test_copy(PathFilteringTransport,TestingPathFilteringServer)
5896breezy.tests.per_transport.TransportTests.test_copy(ReadonlyTransportDecorator,ReadonlyServer)6055breezy.tests.per_transport.TransportTests.test_copy(ReadonlyTransportDecorator,ReadonlyServer)
6056breezy.tests.per_transport.TransportTests.test_copy(SFTPTransport,SFTPAbsoluteServer)
6057breezy.tests.per_transport.TransportTests.test_copy(SFTPTransport,SFTPHomeDirServer)
6058breezy.tests.per_transport.TransportTests.test_copy(SFTPTransport,SFTPSiblingAbsoluteServer)
5897breezy.tests.per_transport.TransportTests.test_copy_to(ChrootTransport,TestingChrootServer)6059breezy.tests.per_transport.TransportTests.test_copy_to(ChrootTransport,TestingChrootServer)
5898breezy.tests.per_transport.TransportTests.test_copy_to(FakeNFSTransportDecorator,FakeNFSServer)6060breezy.tests.per_transport.TransportTests.test_copy_to(FakeNFSTransportDecorator,FakeNFSServer)
5899breezy.tests.per_transport.TransportTests.test_copy_to(FakeVFATTransportDecorator,FakeVFATServer)6061breezy.tests.per_transport.TransportTests.test_copy_to(FakeVFATTransportDecorator,FakeVFATServer)
@@ -5910,6 +6072,8 @@
5910breezy.tests.per_transport.TransportTests.test_copy_to(TransportLogDecorator,LogDecoratorServer)6072breezy.tests.per_transport.TransportTests.test_copy_to(TransportLogDecorator,LogDecoratorServer)
5911breezy.tests.per_transport.TransportTests.test_copy_to(TransportTraceDecorator,TraceServer)6073breezy.tests.per_transport.TransportTests.test_copy_to(TransportTraceDecorator,TraceServer)
5912breezy.tests.per_transport.TransportTests.test_copy_to(UnlistableTransportDecorator,UnlistableServer)6074breezy.tests.per_transport.TransportTests.test_copy_to(UnlistableTransportDecorator,UnlistableServer)
6075breezy.tests.per_transport.TransportTests.test_copy(TransportLogDecorator,LogDecoratorServer)
6076breezy.tests.per_transport.TransportTests.test_copy(TransportTraceDecorator,TraceServer)
5913breezy.tests.per_transport.TransportTests.test_copy_tree(ChrootTransport,TestingChrootServer)6077breezy.tests.per_transport.TransportTests.test_copy_tree(ChrootTransport,TestingChrootServer)
5914breezy.tests.per_transport.TransportTests.test_copy_tree(FakeNFSTransportDecorator,FakeNFSServer)6078breezy.tests.per_transport.TransportTests.test_copy_tree(FakeNFSTransportDecorator,FakeNFSServer)
5915breezy.tests.per_transport.TransportTests.test_copy_tree(FakeVFATTransportDecorator,FakeVFATServer)6079breezy.tests.per_transport.TransportTests.test_copy_tree(FakeVFATTransportDecorator,FakeVFATServer)
@@ -5948,6 +6112,7 @@
5948breezy.tests.per_transport.TransportTests.test_copy_tree(TransportLogDecorator,LogDecoratorServer)6112breezy.tests.per_transport.TransportTests.test_copy_tree(TransportLogDecorator,LogDecoratorServer)
5949breezy.tests.per_transport.TransportTests.test_copy_tree(TransportTraceDecorator,TraceServer)6113breezy.tests.per_transport.TransportTests.test_copy_tree(TransportTraceDecorator,TraceServer)
5950breezy.tests.per_transport.TransportTests.test_copy_tree(UnlistableTransportDecorator,UnlistableServer)6114breezy.tests.per_transport.TransportTests.test_copy_tree(UnlistableTransportDecorator,UnlistableServer)
6115breezy.tests.per_transport.TransportTests.test_copy(UnlistableTransportDecorator,UnlistableServer)
5951breezy.tests.per_transport.TransportTests.test_create_prefix(ChrootTransport,TestingChrootServer)6116breezy.tests.per_transport.TransportTests.test_create_prefix(ChrootTransport,TestingChrootServer)
5952breezy.tests.per_transport.TransportTests.test_create_prefix(FakeNFSTransportDecorator,FakeNFSServer)6117breezy.tests.per_transport.TransportTests.test_create_prefix(FakeNFSTransportDecorator,FakeNFSServer)
5953breezy.tests.per_transport.TransportTests.test_create_prefix(FakeVFATTransportDecorator,FakeVFATServer)6118breezy.tests.per_transport.TransportTests.test_create_prefix(FakeVFATTransportDecorator,FakeVFATServer)
@@ -6081,7 +6246,21 @@
6081breezy.tests.per_transport.TransportTests.test_external_url(TransportLogDecorator,LogDecoratorServer)6246breezy.tests.per_transport.TransportTests.test_external_url(TransportLogDecorator,LogDecoratorServer)
6082breezy.tests.per_transport.TransportTests.test_external_url(TransportTraceDecorator,TraceServer)6247breezy.tests.per_transport.TransportTests.test_external_url(TransportTraceDecorator,TraceServer)
6083breezy.tests.per_transport.TransportTests.test_external_url(UnlistableTransportDecorator,UnlistableServer)6248breezy.tests.per_transport.TransportTests.test_external_url(UnlistableTransportDecorator,UnlistableServer)
6249breezy.tests.per_transport.TransportTests.test_get_bytes(ChrootTransport,TestingChrootServer)
6250breezy.tests.per_transport.TransportTests.test_get_bytes(FakeNFSTransportDecorator,FakeNFSServer)
6251breezy.tests.per_transport.TransportTests.test_get_bytes(FakeVFATTransportDecorator,FakeVFATServer)
6084breezy.tests.per_transport.TransportTests.test_get_bytes(FtpTransport,UnavailableFTPTestServer)6252breezy.tests.per_transport.TransportTests.test_get_bytes(FtpTransport,UnavailableFTPTestServer)
6253breezy.tests.per_transport.TransportTests.test_get_bytes(LocalTransport,LocalURLServer)
6254breezy.tests.per_transport.TransportTests.test_get_bytes(MemoryTransport,MemoryServer)
6255breezy.tests.per_transport.TransportTests.test_get_bytes(NoSmartTransportDecorator,NoSmartTransportServer)
6256breezy.tests.per_transport.TransportTests.test_get_bytes(PathFilteringTransport,TestingPathFilteringServer)
6257breezy.tests.per_transport.TransportTests.test_get_bytes(ReadonlyTransportDecorator,ReadonlyServer)
6258breezy.tests.per_transport.TransportTests.test_get_bytes(RemoteTCPTransport,SmartTCPServer_for_testing)
6259breezy.tests.per_transport.TransportTests.test_get_bytes(SFTPTransport,SFTPAbsoluteServer)
6260breezy.tests.per_transport.TransportTests.test_get_bytes(SFTPTransport,SFTPHomeDirServer)
6261breezy.tests.per_transport.TransportTests.test_get_bytes(SFTPTransport,SFTPSiblingAbsoluteServer)
6262breezy.tests.per_transport.TransportTests.test_get_bytes(TransportLogDecorator,LogDecoratorServer)
6263breezy.tests.per_transport.TransportTests.test_get_bytes(TransportTraceDecorator,TraceServer)
6085breezy.tests.per_transport.TransportTests.test_get_bytes_unknown_file(ChrootTransport,TestingChrootServer)6264breezy.tests.per_transport.TransportTests.test_get_bytes_unknown_file(ChrootTransport,TestingChrootServer)
6086breezy.tests.per_transport.TransportTests.test_get_bytes_unknown_file(FakeNFSTransportDecorator,FakeNFSServer)6265breezy.tests.per_transport.TransportTests.test_get_bytes_unknown_file(FakeNFSTransportDecorator,FakeNFSServer)
6087breezy.tests.per_transport.TransportTests.test_get_bytes_unknown_file(FakeVFATTransportDecorator,FakeVFATServer)6266breezy.tests.per_transport.TransportTests.test_get_bytes_unknown_file(FakeVFATTransportDecorator,FakeVFATServer)
@@ -6097,12 +6276,14 @@
6097breezy.tests.per_transport.TransportTests.test_get_bytes_unknown_file(TransportLogDecorator,LogDecoratorServer)6276breezy.tests.per_transport.TransportTests.test_get_bytes_unknown_file(TransportLogDecorator,LogDecoratorServer)
6098breezy.tests.per_transport.TransportTests.test_get_bytes_unknown_file(TransportTraceDecorator,TraceServer)6277breezy.tests.per_transport.TransportTests.test_get_bytes_unknown_file(TransportTraceDecorator,TraceServer)
6099breezy.tests.per_transport.TransportTests.test_get_bytes_unknown_file(UnlistableTransportDecorator,UnlistableServer)6278breezy.tests.per_transport.TransportTests.test_get_bytes_unknown_file(UnlistableTransportDecorator,UnlistableServer)
6279breezy.tests.per_transport.TransportTests.test_get_bytes(UnlistableTransportDecorator,UnlistableServer)
6100breezy.tests.per_transport.TransportTests.test_get_bytes_with_open_write_stream_sees_all_content(FtpTransport,UnavailableFTPTestServer)6280breezy.tests.per_transport.TransportTests.test_get_bytes_with_open_write_stream_sees_all_content(FtpTransport,UnavailableFTPTestServer)
6101breezy.tests.per_transport.TransportTests.test_get_bytes_with_open_write_stream_sees_all_content(HTTPS_transport,HTTPSServer)6281breezy.tests.per_transport.TransportTests.test_get_bytes_with_open_write_stream_sees_all_content(HTTPS_transport,HTTPSServer)
6102breezy.tests.per_transport.TransportTests.test_get_bytes_with_open_write_stream_sees_all_content(HTTPS_urllib_transport,HTTPSServer_urllib)6282breezy.tests.per_transport.TransportTests.test_get_bytes_with_open_write_stream_sees_all_content(HTTPS_urllib_transport,HTTPSServer_urllib)
6103breezy.tests.per_transport.TransportTests.test_get_bytes_with_open_write_stream_sees_all_content(HttpTransport,HttpServer)6283breezy.tests.per_transport.TransportTests.test_get_bytes_with_open_write_stream_sees_all_content(HttpTransport,HttpServer)
6104breezy.tests.per_transport.TransportTests.test_get_bytes_with_open_write_stream_sees_all_content(HttpTransport_urllib,HttpServer_urllib)6284breezy.tests.per_transport.TransportTests.test_get_bytes_with_open_write_stream_sees_all_content(HttpTransport_urllib,HttpServer_urllib)
6105breezy.tests.per_transport.TransportTests.test_get_bytes_with_open_write_stream_sees_all_content(ReadonlyTransportDecorator,ReadonlyServer)6285breezy.tests.per_transport.TransportTests.test_get_bytes_with_open_write_stream_sees_all_content(ReadonlyTransportDecorator,ReadonlyServer)
6286breezy.tests.per_transport.TransportTests.test_get(ChrootTransport,TestingChrootServer)
6106breezy.tests.per_transport.TransportTests.test_get_directory_read_gives_ReadError(ChrootTransport,TestingChrootServer)6287breezy.tests.per_transport.TransportTests.test_get_directory_read_gives_ReadError(ChrootTransport,TestingChrootServer)
6107breezy.tests.per_transport.TransportTests.test_get_directory_read_gives_ReadError(FakeNFSTransportDecorator,FakeNFSServer)6288breezy.tests.per_transport.TransportTests.test_get_directory_read_gives_ReadError(FakeNFSTransportDecorator,FakeNFSServer)
6108breezy.tests.per_transport.TransportTests.test_get_directory_read_gives_ReadError(FakeVFATTransportDecorator,FakeVFATServer)6289breezy.tests.per_transport.TransportTests.test_get_directory_read_gives_ReadError(FakeVFATTransportDecorator,FakeVFATServer)
@@ -6120,7 +6301,18 @@
6120breezy.tests.per_transport.TransportTests.test_get_directory_read_gives_ReadError(TransportLogDecorator,LogDecoratorServer)6301breezy.tests.per_transport.TransportTests.test_get_directory_read_gives_ReadError(TransportLogDecorator,LogDecoratorServer)
6121breezy.tests.per_transport.TransportTests.test_get_directory_read_gives_ReadError(TransportTraceDecorator,TraceServer)6302breezy.tests.per_transport.TransportTests.test_get_directory_read_gives_ReadError(TransportTraceDecorator,TraceServer)
6122breezy.tests.per_transport.TransportTests.test_get_directory_read_gives_ReadError(UnlistableTransportDecorator,UnlistableServer)6303breezy.tests.per_transport.TransportTests.test_get_directory_read_gives_ReadError(UnlistableTransportDecorator,UnlistableServer)
6304breezy.tests.per_transport.TransportTests.test_get(FakeNFSTransportDecorator,FakeNFSServer)
6305breezy.tests.per_transport.TransportTests.test_get(FakeVFATTransportDecorator,FakeVFATServer)
6123breezy.tests.per_transport.TransportTests.test_get(FtpTransport,UnavailableFTPTestServer)6306breezy.tests.per_transport.TransportTests.test_get(FtpTransport,UnavailableFTPTestServer)
6307breezy.tests.per_transport.TransportTests.test_get(LocalTransport,LocalURLServer)
6308breezy.tests.per_transport.TransportTests.test_get(MemoryTransport,MemoryServer)
6309breezy.tests.per_transport.TransportTests.test_get(NoSmartTransportDecorator,NoSmartTransportServer)
6310breezy.tests.per_transport.TransportTests.test_get(PathFilteringTransport,TestingPathFilteringServer)
6311breezy.tests.per_transport.TransportTests.test_get(ReadonlyTransportDecorator,ReadonlyServer)
6312breezy.tests.per_transport.TransportTests.test_get(RemoteTCPTransport,SmartTCPServer_for_testing)
6313breezy.tests.per_transport.TransportTests.test_get(SFTPTransport,SFTPAbsoluteServer)
6314breezy.tests.per_transport.TransportTests.test_get(SFTPTransport,SFTPHomeDirServer)
6315breezy.tests.per_transport.TransportTests.test_get(SFTPTransport,SFTPSiblingAbsoluteServer)
6124breezy.tests.per_transport.TransportTests.test_get_smart_medium(ChrootTransport,TestingChrootServer)6316breezy.tests.per_transport.TransportTests.test_get_smart_medium(ChrootTransport,TestingChrootServer)
6125breezy.tests.per_transport.TransportTests.test_get_smart_medium(FakeNFSTransportDecorator,FakeNFSServer)6317breezy.tests.per_transport.TransportTests.test_get_smart_medium(FakeNFSTransportDecorator,FakeNFSServer)
6126breezy.tests.per_transport.TransportTests.test_get_smart_medium(FakeVFATTransportDecorator,FakeVFATServer)6318breezy.tests.per_transport.TransportTests.test_get_smart_medium(FakeVFATTransportDecorator,FakeVFATServer)
@@ -6141,6 +6333,8 @@
6141breezy.tests.per_transport.TransportTests.test_get_smart_medium(TransportLogDecorator,LogDecoratorServer)6333breezy.tests.per_transport.TransportTests.test_get_smart_medium(TransportLogDecorator,LogDecoratorServer)
6142breezy.tests.per_transport.TransportTests.test_get_smart_medium(TransportTraceDecorator,TraceServer)6334breezy.tests.per_transport.TransportTests.test_get_smart_medium(TransportTraceDecorator,TraceServer)
6143breezy.tests.per_transport.TransportTests.test_get_smart_medium(UnlistableTransportDecorator,UnlistableServer)6335breezy.tests.per_transport.TransportTests.test_get_smart_medium(UnlistableTransportDecorator,UnlistableServer)
6336breezy.tests.per_transport.TransportTests.test_get(TransportLogDecorator,LogDecoratorServer)
6337breezy.tests.per_transport.TransportTests.test_get(TransportTraceDecorator,TraceServer)
6144breezy.tests.per_transport.TransportTests.test_get_unknown_file(ChrootTransport,TestingChrootServer)6338breezy.tests.per_transport.TransportTests.test_get_unknown_file(ChrootTransport,TestingChrootServer)
6145breezy.tests.per_transport.TransportTests.test_get_unknown_file(FakeNFSTransportDecorator,FakeNFSServer)6339breezy.tests.per_transport.TransportTests.test_get_unknown_file(FakeNFSTransportDecorator,FakeNFSServer)
6146breezy.tests.per_transport.TransportTests.test_get_unknown_file(FakeVFATTransportDecorator,FakeVFATServer)6340breezy.tests.per_transport.TransportTests.test_get_unknown_file(FakeVFATTransportDecorator,FakeVFATServer)
@@ -6156,6 +6350,7 @@
6156breezy.tests.per_transport.TransportTests.test_get_unknown_file(TransportLogDecorator,LogDecoratorServer)6350breezy.tests.per_transport.TransportTests.test_get_unknown_file(TransportLogDecorator,LogDecoratorServer)
6157breezy.tests.per_transport.TransportTests.test_get_unknown_file(TransportTraceDecorator,TraceServer)6351breezy.tests.per_transport.TransportTests.test_get_unknown_file(TransportTraceDecorator,TraceServer)
6158breezy.tests.per_transport.TransportTests.test_get_unknown_file(UnlistableTransportDecorator,UnlistableServer)6352breezy.tests.per_transport.TransportTests.test_get_unknown_file(UnlistableTransportDecorator,UnlistableServer)
6353breezy.tests.per_transport.TransportTests.test_get(UnlistableTransportDecorator,UnlistableServer)
6159breezy.tests.per_transport.TransportTests.test_get_with_open_write_stream_sees_all_content(FtpTransport,UnavailableFTPTestServer)6354breezy.tests.per_transport.TransportTests.test_get_with_open_write_stream_sees_all_content(FtpTransport,UnavailableFTPTestServer)
6160breezy.tests.per_transport.TransportTests.test_get_with_open_write_stream_sees_all_content(HTTPS_transport,HTTPSServer)6355breezy.tests.per_transport.TransportTests.test_get_with_open_write_stream_sees_all_content(HTTPS_transport,HTTPSServer)
6161breezy.tests.per_transport.TransportTests.test_get_with_open_write_stream_sees_all_content(HTTPS_urllib_transport,HTTPSServer_urllib)6356breezy.tests.per_transport.TransportTests.test_get_with_open_write_stream_sees_all_content(HTTPS_urllib_transport,HTTPSServer_urllib)
@@ -6356,11 +6551,18 @@
6356breezy.tests.per_transport.TransportTests.test_lock_write(TransportLogDecorator,LogDecoratorServer)6551breezy.tests.per_transport.TransportTests.test_lock_write(TransportLogDecorator,LogDecoratorServer)
6357breezy.tests.per_transport.TransportTests.test_lock_write(TransportTraceDecorator,TraceServer)6552breezy.tests.per_transport.TransportTests.test_lock_write(TransportTraceDecorator,TraceServer)
6358breezy.tests.per_transport.TransportTests.test_lock_write(UnlistableTransportDecorator,UnlistableServer)6553breezy.tests.per_transport.TransportTests.test_lock_write(UnlistableTransportDecorator,UnlistableServer)
6554breezy.tests.per_transport.TransportTests.test_mkdir(ChrootTransport,TestingChrootServer)
6555breezy.tests.per_transport.TransportTests.test_mkdir(FakeNFSTransportDecorator,FakeNFSServer)
6556breezy.tests.per_transport.TransportTests.test_mkdir(FakeVFATTransportDecorator,FakeVFATServer)
6359breezy.tests.per_transport.TransportTests.test_mkdir(FtpTransport,UnavailableFTPTestServer)6557breezy.tests.per_transport.TransportTests.test_mkdir(FtpTransport,UnavailableFTPTestServer)
6360breezy.tests.per_transport.TransportTests.test_mkdir(HTTPS_transport,HTTPSServer)6558breezy.tests.per_transport.TransportTests.test_mkdir(HTTPS_transport,HTTPSServer)
6361breezy.tests.per_transport.TransportTests.test_mkdir(HTTPS_urllib_transport,HTTPSServer_urllib)6559breezy.tests.per_transport.TransportTests.test_mkdir(HTTPS_urllib_transport,HTTPSServer_urllib)
6362breezy.tests.per_transport.TransportTests.test_mkdir(HttpTransport,HttpServer)6560breezy.tests.per_transport.TransportTests.test_mkdir(HttpTransport,HttpServer)
6363breezy.tests.per_transport.TransportTests.test_mkdir(HttpTransport_urllib,HttpServer_urllib)6561breezy.tests.per_transport.TransportTests.test_mkdir(HttpTransport_urllib,HttpServer_urllib)
6562breezy.tests.per_transport.TransportTests.test_mkdir(LocalTransport,LocalURLServer)
6563breezy.tests.per_transport.TransportTests.test_mkdir(MemoryTransport,MemoryServer)
6564breezy.tests.per_transport.TransportTests.test_mkdir(NoSmartTransportDecorator,NoSmartTransportServer)
6565breezy.tests.per_transport.TransportTests.test_mkdir(PathFilteringTransport,TestingPathFilteringServer)
6364breezy.tests.per_transport.TransportTests.test_mkdir_permissions(ChrootTransport,TestingChrootServer)6566breezy.tests.per_transport.TransportTests.test_mkdir_permissions(ChrootTransport,TestingChrootServer)
6365breezy.tests.per_transport.TransportTests.test_mkdir_permissions(FakeNFSTransportDecorator,FakeNFSServer)6567breezy.tests.per_transport.TransportTests.test_mkdir_permissions(FakeNFSTransportDecorator,FakeNFSServer)
6366breezy.tests.per_transport.TransportTests.test_mkdir_permissions(FakeVFATTransportDecorator,FakeVFATServer)6568breezy.tests.per_transport.TransportTests.test_mkdir_permissions(FakeVFATTransportDecorator,FakeVFATServer)
@@ -6382,12 +6584,33 @@
6382breezy.tests.per_transport.TransportTests.test_mkdir_permissions(TransportTraceDecorator,TraceServer)6584breezy.tests.per_transport.TransportTests.test_mkdir_permissions(TransportTraceDecorator,TraceServer)
6383breezy.tests.per_transport.TransportTests.test_mkdir_permissions(UnlistableTransportDecorator,UnlistableServer)6585breezy.tests.per_transport.TransportTests.test_mkdir_permissions(UnlistableTransportDecorator,UnlistableServer)
6384breezy.tests.per_transport.TransportTests.test_mkdir(ReadonlyTransportDecorator,ReadonlyServer)6586breezy.tests.per_transport.TransportTests.test_mkdir(ReadonlyTransportDecorator,ReadonlyServer)
6587breezy.tests.per_transport.TransportTests.test_mkdir(RemoteTCPTransport,SmartTCPServer_for_testing)
6588breezy.tests.per_transport.TransportTests.test_mkdir(SFTPTransport,SFTPAbsoluteServer)
6589breezy.tests.per_transport.TransportTests.test_mkdir(SFTPTransport,SFTPHomeDirServer)
6590breezy.tests.per_transport.TransportTests.test_mkdir(SFTPTransport,SFTPSiblingAbsoluteServer)
6591breezy.tests.per_transport.TransportTests.test_mkdir(TransportLogDecorator,LogDecoratorServer)
6592breezy.tests.per_transport.TransportTests.test_mkdir(TransportTraceDecorator,TraceServer)
6593breezy.tests.per_transport.TransportTests.test_mkdir(UnlistableTransportDecorator,UnlistableServer)
6594breezy.tests.per_transport.TransportTests.test_move(ChrootTransport,TestingChrootServer)
6595breezy.tests.per_transport.TransportTests.test_move(FakeNFSTransportDecorator,FakeNFSServer)
6596breezy.tests.per_transport.TransportTests.test_move(FakeVFATTransportDecorator,FakeVFATServer)
6385breezy.tests.per_transport.TransportTests.test_move(FtpTransport,UnavailableFTPTestServer)6597breezy.tests.per_transport.TransportTests.test_move(FtpTransport,UnavailableFTPTestServer)
6386breezy.tests.per_transport.TransportTests.test_move(HTTPS_transport,HTTPSServer)6598breezy.tests.per_transport.TransportTests.test_move(HTTPS_transport,HTTPSServer)
6387breezy.tests.per_transport.TransportTests.test_move(HTTPS_urllib_transport,HTTPSServer_urllib)6599breezy.tests.per_transport.TransportTests.test_move(HTTPS_urllib_transport,HTTPSServer_urllib)
6388breezy.tests.per_transport.TransportTests.test_move(HttpTransport,HttpServer)6600breezy.tests.per_transport.TransportTests.test_move(HttpTransport,HttpServer)
6389breezy.tests.per_transport.TransportTests.test_move(HttpTransport_urllib,HttpServer_urllib)6601breezy.tests.per_transport.TransportTests.test_move(HttpTransport_urllib,HttpServer_urllib)
6602breezy.tests.per_transport.TransportTests.test_move(LocalTransport,LocalURLServer)
6603breezy.tests.per_transport.TransportTests.test_move(MemoryTransport,MemoryServer)
6604breezy.tests.per_transport.TransportTests.test_move(NoSmartTransportDecorator,NoSmartTransportServer)
6605breezy.tests.per_transport.TransportTests.test_move(PathFilteringTransport,TestingPathFilteringServer)
6390breezy.tests.per_transport.TransportTests.test_move(ReadonlyTransportDecorator,ReadonlyServer)6606breezy.tests.per_transport.TransportTests.test_move(ReadonlyTransportDecorator,ReadonlyServer)
6607breezy.tests.per_transport.TransportTests.test_move(RemoteTCPTransport,SmartTCPServer_for_testing)
6608breezy.tests.per_transport.TransportTests.test_move(SFTPTransport,SFTPAbsoluteServer)
6609breezy.tests.per_transport.TransportTests.test_move(SFTPTransport,SFTPHomeDirServer)
6610breezy.tests.per_transport.TransportTests.test_move(SFTPTransport,SFTPSiblingAbsoluteServer)
6611breezy.tests.per_transport.TransportTests.test_move(TransportLogDecorator,LogDecoratorServer)
6612breezy.tests.per_transport.TransportTests.test_move(TransportTraceDecorator,TraceServer)
6613breezy.tests.per_transport.TransportTests.test_move(UnlistableTransportDecorator,UnlistableServer)
6391breezy.tests.per_transport.TransportTests.test_no_segment_parameters(ChrootTransport,TestingChrootServer)6614breezy.tests.per_transport.TransportTests.test_no_segment_parameters(ChrootTransport,TestingChrootServer)
6392breezy.tests.per_transport.TransportTests.test_no_segment_parameters(FakeNFSTransportDecorator,FakeNFSServer)6615breezy.tests.per_transport.TransportTests.test_no_segment_parameters(FakeNFSTransportDecorator,FakeNFSServer)
6393breezy.tests.per_transport.TransportTests.test_no_segment_parameters(FakeVFATTransportDecorator,FakeVFATServer)6616breezy.tests.per_transport.TransportTests.test_no_segment_parameters(FakeVFATTransportDecorator,FakeVFATServer)
@@ -6434,21 +6657,56 @@
6434breezy.tests.per_transport.TransportTests.test_opening_a_file_stream_creates_file(HttpTransport,HttpServer)6657breezy.tests.per_transport.TransportTests.test_opening_a_file_stream_creates_file(HttpTransport,HttpServer)
6435breezy.tests.per_transport.TransportTests.test_opening_a_file_stream_creates_file(HttpTransport_urllib,HttpServer_urllib)6658breezy.tests.per_transport.TransportTests.test_opening_a_file_stream_creates_file(HttpTransport_urllib,HttpServer_urllib)
6436breezy.tests.per_transport.TransportTests.test_opening_a_file_stream_creates_file(ReadonlyTransportDecorator,ReadonlyServer)6659breezy.tests.per_transport.TransportTests.test_opening_a_file_stream_creates_file(ReadonlyTransportDecorator,ReadonlyServer)
6660breezy.tests.per_transport.TransportTests.test_put_bytes(ChrootTransport,TestingChrootServer)
6661breezy.tests.per_transport.TransportTests.test_put_bytes(FakeNFSTransportDecorator,FakeNFSServer)
6662breezy.tests.per_transport.TransportTests.test_put_bytes(FakeVFATTransportDecorator,FakeVFATServer)
6437breezy.tests.per_transport.TransportTests.test_put_bytes(FtpTransport,UnavailableFTPTestServer)6663breezy.tests.per_transport.TransportTests.test_put_bytes(FtpTransport,UnavailableFTPTestServer)
6438breezy.tests.per_transport.TransportTests.test_put_bytes(HTTPS_transport,HTTPSServer)6664breezy.tests.per_transport.TransportTests.test_put_bytes(HTTPS_transport,HTTPSServer)
6439breezy.tests.per_transport.TransportTests.test_put_bytes(HTTPS_urllib_transport,HTTPSServer_urllib)6665breezy.tests.per_transport.TransportTests.test_put_bytes(HTTPS_urllib_transport,HTTPSServer_urllib)
6440breezy.tests.per_transport.TransportTests.test_put_bytes(HttpTransport,HttpServer)6666breezy.tests.per_transport.TransportTests.test_put_bytes(HttpTransport,HttpServer)
6441breezy.tests.per_transport.TransportTests.test_put_bytes(HttpTransport_urllib,HttpServer_urllib)6667breezy.tests.per_transport.TransportTests.test_put_bytes(HttpTransport_urllib,HttpServer_urllib)
6668breezy.tests.per_transport.TransportTests.test_put_bytes(LocalTransport,LocalURLServer)
6669breezy.tests.per_transport.TransportTests.test_put_bytes(MemoryTransport,MemoryServer)
6670breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(ChrootTransport,TestingChrootServer)
6671breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(FakeNFSTransportDecorator,FakeNFSServer)
6672breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(FakeVFATTransportDecorator,FakeVFATServer)
6442breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(FtpTransport,UnavailableFTPTestServer)6673breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(FtpTransport,UnavailableFTPTestServer)
6674breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(HTTPS_transport,HTTPSServer)
6675breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(HttpTransport,HttpServer)
6676breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(LocalTransport,LocalURLServer)
6677breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(MemoryTransport,MemoryServer)
6678breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(NoSmartTransportDecorator,NoSmartTransportServer)
6679breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(PathFilteringTransport,TestingPathFilteringServer)
6680breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(ChrootTransport,TestingChrootServer)
6681breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(FakeNFSTransportDecorator,FakeNFSServer)
6443breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(FakeVFATTransportDecorator,FakeVFATServer)6682breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(FakeVFATTransportDecorator,FakeVFATServer)
6444breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(FtpTransport,UnavailableFTPTestServer)6683breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(FtpTransport,UnavailableFTPTestServer)
6445breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(HTTPS_transport,HTTPSServer)6684breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(HTTPS_transport,HTTPSServer)
6446breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(HTTPS_urllib_transport,HTTPSServer_urllib)6685breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(HTTPS_urllib_transport,HTTPSServer_urllib)
6447breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(HttpTransport,HttpServer)6686breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(HttpTransport,HttpServer)
6448breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(HttpTransport_urllib,HttpServer_urllib)6687breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(HttpTransport_urllib,HttpServer_urllib)
6688breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(LocalTransport,LocalURLServer)
6449breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(MemoryTransport,MemoryServer)6689breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(MemoryTransport,MemoryServer)
6690breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(NoSmartTransportDecorator,NoSmartTransportServer)
6691breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(PathFilteringTransport,TestingPathFilteringServer)
6450breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(ReadonlyTransportDecorator,ReadonlyServer)6692breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(ReadonlyTransportDecorator,ReadonlyServer)
6451breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(RemoteTCPTransport,SmartTCPServer_for_testing)6693breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(RemoteTCPTransport,SmartTCPServer_for_testing)
6694breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(SFTPTransport,SFTPAbsoluteServer)
6695breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(SFTPTransport,SFTPHomeDirServer)
6696breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(SFTPTransport,SFTPSiblingAbsoluteServer)
6697breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(TransportLogDecorator,LogDecoratorServer)
6698breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(TransportTraceDecorator,TraceServer)
6699breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic_permissions(UnlistableTransportDecorator,UnlistableServer)
6700breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(ReadonlyTransportDecorator,ReadonlyServer)
6701breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(RemoteTCPTransport,SmartTCPServer_for_testing)
6702breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(SFTPTransport,SFTPAbsoluteServer)
6703breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(SFTPTransport,SFTPHomeDirServer)
6704breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(SFTPTransport,SFTPSiblingAbsoluteServer)
6705breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(TransportLogDecorator,LogDecoratorServer)
6706breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(TransportTraceDecorator,TraceServer)
6707breezy.tests.per_transport.TransportTests.test_put_bytes_non_atomic(UnlistableTransportDecorator,UnlistableServer)
6708breezy.tests.per_transport.TransportTests.test_put_bytes(NoSmartTransportDecorator,NoSmartTransportServer)
6709breezy.tests.per_transport.TransportTests.test_put_bytes(PathFilteringTransport,TestingPathFilteringServer)
6452breezy.tests.per_transport.TransportTests.test_put_bytes_permissions(ChrootTransport,TestingChrootServer)6710breezy.tests.per_transport.TransportTests.test_put_bytes_permissions(ChrootTransport,TestingChrootServer)
6453breezy.tests.per_transport.TransportTests.test_put_bytes_permissions(FakeNFSTransportDecorator,FakeNFSServer)6711breezy.tests.per_transport.TransportTests.test_put_bytes_permissions(FakeNFSTransportDecorator,FakeNFSServer)
6454breezy.tests.per_transport.TransportTests.test_put_bytes_permissions(FakeVFATTransportDecorator,FakeVFATServer)6712breezy.tests.per_transport.TransportTests.test_put_bytes_permissions(FakeVFATTransportDecorator,FakeVFATServer)
@@ -6470,6 +6728,12 @@
6470breezy.tests.per_transport.TransportTests.test_put_bytes_permissions(TransportTraceDecorator,TraceServer)6728breezy.tests.per_transport.TransportTests.test_put_bytes_permissions(TransportTraceDecorator,TraceServer)
6471breezy.tests.per_transport.TransportTests.test_put_bytes_permissions(UnlistableTransportDecorator,UnlistableServer)6729breezy.tests.per_transport.TransportTests.test_put_bytes_permissions(UnlistableTransportDecorator,UnlistableServer)
6472breezy.tests.per_transport.TransportTests.test_put_bytes(ReadonlyTransportDecorator,ReadonlyServer)6730breezy.tests.per_transport.TransportTests.test_put_bytes(ReadonlyTransportDecorator,ReadonlyServer)
6731breezy.tests.per_transport.TransportTests.test_put_bytes(RemoteTCPTransport,SmartTCPServer_for_testing)
6732breezy.tests.per_transport.TransportTests.test_put_bytes(SFTPTransport,SFTPAbsoluteServer)
6733breezy.tests.per_transport.TransportTests.test_put_bytes(SFTPTransport,SFTPHomeDirServer)
6734breezy.tests.per_transport.TransportTests.test_put_bytes(SFTPTransport,SFTPSiblingAbsoluteServer)
6735breezy.tests.per_transport.TransportTests.test_put_bytes(TransportLogDecorator,LogDecoratorServer)
6736breezy.tests.per_transport.TransportTests.test_put_bytes(TransportTraceDecorator,TraceServer)
6473breezy.tests.per_transport.TransportTests.test_put_bytes_unicode(ChrootTransport,TestingChrootServer)6737breezy.tests.per_transport.TransportTests.test_put_bytes_unicode(ChrootTransport,TestingChrootServer)
6474breezy.tests.per_transport.TransportTests.test_put_bytes_unicode(FakeNFSTransportDecorator,FakeNFSServer)6738breezy.tests.per_transport.TransportTests.test_put_bytes_unicode(FakeNFSTransportDecorator,FakeNFSServer)
6475breezy.tests.per_transport.TransportTests.test_put_bytes_unicode(FakeVFATTransportDecorator,FakeVFATServer)6739breezy.tests.per_transport.TransportTests.test_put_bytes_unicode(FakeVFATTransportDecorator,FakeVFATServer)
@@ -6490,16 +6754,29 @@
6490breezy.tests.per_transport.TransportTests.test_put_bytes_unicode(TransportLogDecorator,LogDecoratorServer)6754breezy.tests.per_transport.TransportTests.test_put_bytes_unicode(TransportLogDecorator,LogDecoratorServer)
6491breezy.tests.per_transport.TransportTests.test_put_bytes_unicode(TransportTraceDecorator,TraceServer)6755breezy.tests.per_transport.TransportTests.test_put_bytes_unicode(TransportTraceDecorator,TraceServer)
6492breezy.tests.per_transport.TransportTests.test_put_bytes_unicode(UnlistableTransportDecorator,UnlistableServer)6756breezy.tests.per_transport.TransportTests.test_put_bytes_unicode(UnlistableTransportDecorator,UnlistableServer)
6757breezy.tests.per_transport.TransportTests.test_put_bytes(UnlistableTransportDecorator,UnlistableServer)
6758breezy.tests.per_transport.TransportTests.test_put_file(ChrootTransport,TestingChrootServer)
6759breezy.tests.per_transport.TransportTests.test_put_file(FakeNFSTransportDecorator,FakeNFSServer)
6760breezy.tests.per_transport.TransportTests.test_put_file(FakeVFATTransportDecorator,FakeVFATServer)
6493breezy.tests.per_transport.TransportTests.test_put_file(FtpTransport,UnavailableFTPTestServer)6761breezy.tests.per_transport.TransportTests.test_put_file(FtpTransport,UnavailableFTPTestServer)
6494breezy.tests.per_transport.TransportTests.test_put_file(HTTPS_transport,HTTPSServer)6762breezy.tests.per_transport.TransportTests.test_put_file(HTTPS_transport,HTTPSServer)
6495breezy.tests.per_transport.TransportTests.test_put_file(HTTPS_urllib_transport,HTTPSServer_urllib)6763breezy.tests.per_transport.TransportTests.test_put_file(HTTPS_urllib_transport,HTTPSServer_urllib)
6496breezy.tests.per_transport.TransportTests.test_put_file(HttpTransport,HttpServer)6764breezy.tests.per_transport.TransportTests.test_put_file(HttpTransport,HttpServer)
6497breezy.tests.per_transport.TransportTests.test_put_file(HttpTransport_urllib,HttpServer_urllib)6765breezy.tests.per_transport.TransportTests.test_put_file(HttpTransport_urllib,HttpServer_urllib)
6766breezy.tests.per_transport.TransportTests.test_put_file(LocalTransport,LocalURLServer)
6767breezy.tests.per_transport.TransportTests.test_put_file(MemoryTransport,MemoryServer)
6768breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(ChrootTransport,TestingChrootServer)
6769breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(FakeNFSTransportDecorator,FakeNFSServer)
6770breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(FakeVFATTransportDecorator,FakeVFATServer)
6498breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(FtpTransport,UnavailableFTPTestServer)6771breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(FtpTransport,UnavailableFTPTestServer)
6499breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(HTTPS_transport,HTTPSServer)6772breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(HTTPS_transport,HTTPSServer)
6500breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(HTTPS_urllib_transport,HTTPSServer_urllib)6773breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(HTTPS_urllib_transport,HTTPSServer_urllib)
6501breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(HttpTransport,HttpServer)6774breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(HttpTransport,HttpServer)
6502breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(HttpTransport_urllib,HttpServer_urllib)6775breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(HttpTransport_urllib,HttpServer_urllib)
6776breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(LocalTransport,LocalURLServer)
6777breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(MemoryTransport,MemoryServer)
6778breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(NoSmartTransportDecorator,NoSmartTransportServer)
6779breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(PathFilteringTransport,TestingPathFilteringServer)
6503breezy.tests.per_transport.TransportTests.test_put_file_non_atomic_permissions(ChrootTransport,TestingChrootServer)6780breezy.tests.per_transport.TransportTests.test_put_file_non_atomic_permissions(ChrootTransport,TestingChrootServer)
6504breezy.tests.per_transport.TransportTests.test_put_file_non_atomic_permissions(FakeNFSTransportDecorator,FakeNFSServer)6781breezy.tests.per_transport.TransportTests.test_put_file_non_atomic_permissions(FakeNFSTransportDecorator,FakeNFSServer)
6505breezy.tests.per_transport.TransportTests.test_put_file_non_atomic_permissions(FakeVFATTransportDecorator,FakeVFATServer)6782breezy.tests.per_transport.TransportTests.test_put_file_non_atomic_permissions(FakeVFATTransportDecorator,FakeVFATServer)
@@ -6521,6 +6798,15 @@
6521breezy.tests.per_transport.TransportTests.test_put_file_non_atomic_permissions(TransportTraceDecorator,TraceServer)6798breezy.tests.per_transport.TransportTests.test_put_file_non_atomic_permissions(TransportTraceDecorator,TraceServer)
6522breezy.tests.per_transport.TransportTests.test_put_file_non_atomic_permissions(UnlistableTransportDecorator,UnlistableServer)6799breezy.tests.per_transport.TransportTests.test_put_file_non_atomic_permissions(UnlistableTransportDecorator,UnlistableServer)
6523breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(ReadonlyTransportDecorator,ReadonlyServer)6800breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(ReadonlyTransportDecorator,ReadonlyServer)
6801breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(RemoteTCPTransport,SmartTCPServer_for_testing)
6802breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(SFTPTransport,SFTPAbsoluteServer)
6803breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(SFTPTransport,SFTPHomeDirServer)
6804breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(SFTPTransport,SFTPSiblingAbsoluteServer)
6805breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(TransportLogDecorator,LogDecoratorServer)
6806breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(TransportTraceDecorator,TraceServer)
6807breezy.tests.per_transport.TransportTests.test_put_file_non_atomic(UnlistableTransportDecorator,UnlistableServer)
6808breezy.tests.per_transport.TransportTests.test_put_file(NoSmartTransportDecorator,NoSmartTransportServer)
6809breezy.tests.per_transport.TransportTests.test_put_file(PathFilteringTransport,TestingPathFilteringServer)
6524breezy.tests.per_transport.TransportTests.test_put_file_permissions(ChrootTransport,TestingChrootServer)6810breezy.tests.per_transport.TransportTests.test_put_file_permissions(ChrootTransport,TestingChrootServer)
6525breezy.tests.per_transport.TransportTests.test_put_file_permissions(FakeNFSTransportDecorator,FakeNFSServer)6811breezy.tests.per_transport.TransportTests.test_put_file_permissions(FakeNFSTransportDecorator,FakeNFSServer)
6526breezy.tests.per_transport.TransportTests.test_put_file_permissions(FakeVFATTransportDecorator,FakeVFATServer)6812breezy.tests.per_transport.TransportTests.test_put_file_permissions(FakeVFATTransportDecorator,FakeVFATServer)
@@ -6542,6 +6828,13 @@
6542breezy.tests.per_transport.TransportTests.test_put_file_permissions(TransportTraceDecorator,TraceServer)6828breezy.tests.per_transport.TransportTests.test_put_file_permissions(TransportTraceDecorator,TraceServer)
6543breezy.tests.per_transport.TransportTests.test_put_file_permissions(UnlistableTransportDecorator,UnlistableServer)6829breezy.tests.per_transport.TransportTests.test_put_file_permissions(UnlistableTransportDecorator,UnlistableServer)
6544breezy.tests.per_transport.TransportTests.test_put_file(ReadonlyTransportDecorator,ReadonlyServer)6830breezy.tests.per_transport.TransportTests.test_put_file(ReadonlyTransportDecorator,ReadonlyServer)
6831breezy.tests.per_transport.TransportTests.test_put_file(RemoteTCPTransport,SmartTCPServer_for_testing)
6832breezy.tests.per_transport.TransportTests.test_put_file(SFTPTransport,SFTPAbsoluteServer)
6833breezy.tests.per_transport.TransportTests.test_put_file(SFTPTransport,SFTPHomeDirServer)
6834breezy.tests.per_transport.TransportTests.test_put_file(SFTPTransport,SFTPSiblingAbsoluteServer)
6835breezy.tests.per_transport.TransportTests.test_put_file(TransportLogDecorator,LogDecoratorServer)
6836breezy.tests.per_transport.TransportTests.test_put_file(TransportTraceDecorator,TraceServer)
6837breezy.tests.per_transport.TransportTests.test_put_file(UnlistableTransportDecorator,UnlistableServer)
6545breezy.tests.per_transport.TransportTests.test_readv(ChrootTransport,TestingChrootServer)6838breezy.tests.per_transport.TransportTests.test_readv(ChrootTransport,TestingChrootServer)
6546breezy.tests.per_transport.TransportTests.test_readv(FakeNFSTransportDecorator,FakeNFSServer)6839breezy.tests.per_transport.TransportTests.test_readv(FakeNFSTransportDecorator,FakeNFSServer)
6547breezy.tests.per_transport.TransportTests.test_readv(FakeVFATTransportDecorator,FakeVFATServer)6840breezy.tests.per_transport.TransportTests.test_readv(FakeVFATTransportDecorator,FakeVFATServer)
@@ -7119,6 +7412,8 @@
7119breezy.tests.per_tree.test_revision_tree.TestRevisionTree.test_get_random_tree_raises(WorkingTreeFormat6,remote)7412breezy.tests.per_tree.test_revision_tree.TestRevisionTree.test_get_random_tree_raises(WorkingTreeFormat6,remote)
7120breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_empty_tree_no_parents(DirStateRevisionTree,WT4)7413breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_empty_tree_no_parents(DirStateRevisionTree,WT4)
7121breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_empty_tree_no_parents(DirStateRevisionTree,WT5)7414breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_empty_tree_no_parents(DirStateRevisionTree,WT5)
7415breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_empty_tree_no_parents(PreviewTree)
7416breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_empty_tree_no_parents(PreviewTreePost)
7122breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_empty_tree_no_parents(RevisionTree)7417breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_empty_tree_no_parents(RevisionTree)
7123breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_empty_tree_no_parents(WorkingTreeFormat2)7418breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_empty_tree_no_parents(WorkingTreeFormat2)
7124breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_empty_tree_no_parents(WorkingTreeFormat3)7419breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_empty_tree_no_parents(WorkingTreeFormat3)

Subscribers

People subscribed via source and target branches