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

Proposed by Jelmer Vernooij
Status: Merged
Approved by: Jelmer Vernooij
Approved revision: no longer in the source branch.
Merge reported by: The Breezy Bot
Merged at revision: not available
Proposed branch: lp:~jelmer/brz/python3-blackbox
Merge into: lp:brz
Diff against target: 9966 lines (+2160/-1739)
96 files modified
breezy/builtins.py (+3/-2)
breezy/bzr/smart/vfs.py (+1/-1)
breezy/diff.py (+1/-0)
breezy/log.py (+2/-0)
breezy/plugins/fastimport/tests/test_commands.py (+14/-14)
breezy/plugins/git/fetch.py (+14/-11)
breezy/plugins/git/send.py (+2/-1)
breezy/plugins/git/tests/test_blackbox.py (+57/-57)
breezy/plugins/git/transportgit.py (+20/-21)
breezy/plugins/git/tree.py (+2/-1)
breezy/plugins/grep/test_grep.py (+393/-393)
breezy/plugins/repodebug/tests/__init__.py (+16/-16)
breezy/plugins/weave_fmt/test_bzrdir.py (+14/-14)
breezy/plugins/weave_fmt/test_repository.py (+2/-2)
breezy/tests/__init__.py (+10/-5)
breezy/tests/blackbox/test_add.py (+43/-43)
breezy/tests/blackbox/test_added.py (+8/-8)
breezy/tests/blackbox/test_alias.py (+14/-14)
breezy/tests/blackbox/test_aliases.py (+2/-2)
breezy/tests/blackbox/test_ancestry.py (+4/-4)
breezy/tests/blackbox/test_annotate.py (+32/-32)
breezy/tests/blackbox/test_bound_branches.py (+1/-1)
breezy/tests/blackbox/test_branch.py (+43/-43)
breezy/tests/blackbox/test_branches.py (+17/-17)
breezy/tests/blackbox/test_break_lock.py (+1/-1)
breezy/tests/blackbox/test_bundle_info.py (+1/-1)
breezy/tests/blackbox/test_cat.py (+20/-20)
breezy/tests/blackbox/test_cat_revision.py (+7/-7)
breezy/tests/blackbox/test_check.py (+26/-26)
breezy/tests/blackbox/test_command_encoding.py (+6/-6)
breezy/tests/blackbox/test_commit.py (+69/-69)
breezy/tests/blackbox/test_config.py (+11/-11)
breezy/tests/blackbox/test_conflicts.py (+1/-1)
breezy/tests/blackbox/test_cp.py (+1/-1)
breezy/tests/blackbox/test_debug.py (+1/-1)
breezy/tests/blackbox/test_deleted.py (+1/-1)
breezy/tests/blackbox/test_diff.py (+37/-37)
breezy/tests/blackbox/test_exceptions.py (+3/-3)
breezy/tests/blackbox/test_export.py (+26/-26)
breezy/tests/blackbox/test_export_pot.py (+6/-6)
breezy/tests/blackbox/test_filtered_view_ops.py (+49/-49)
breezy/tests/blackbox/test_help.py (+5/-5)
breezy/tests/blackbox/test_ignore.py (+4/-4)
breezy/tests/blackbox/test_ignored.py (+3/-3)
breezy/tests/blackbox/test_info.py (+94/-94)
breezy/tests/blackbox/test_init.py (+28/-28)
breezy/tests/blackbox/test_inventory.py (+19/-19)
breezy/tests/blackbox/test_join.py (+3/-3)
breezy/tests/blackbox/test_log.py (+55/-51)
breezy/tests/blackbox/test_logformats.py (+2/-2)
breezy/tests/blackbox/test_lookup_revision.py (+2/-2)
breezy/tests/blackbox/test_ls.py (+110/-110)
breezy/tests/blackbox/test_lsprof.py (+3/-3)
breezy/tests/blackbox/test_merge.py (+19/-19)
breezy/tests/blackbox/test_missing.py (+4/-4)
breezy/tests/blackbox/test_modified.py (+9/-9)
breezy/tests/blackbox/test_mv.py (+18/-18)
breezy/tests/blackbox/test_non_ascii.py (+5/-1)
breezy/tests/blackbox/test_outside_wt.py (+4/-4)
breezy/tests/blackbox/test_pack.py (+6/-6)
breezy/tests/blackbox/test_plugins.py (+5/-1)
breezy/tests/blackbox/test_pull.py (+12/-12)
breezy/tests/blackbox/test_push.py (+37/-37)
breezy/tests/blackbox/test_reconfigure.py (+8/-8)
breezy/tests/blackbox/test_reference.py (+5/-5)
breezy/tests/blackbox/test_remerge.py (+11/-11)
breezy/tests/blackbox/test_remove.py (+13/-13)
breezy/tests/blackbox/test_remove_tree.py (+4/-4)
breezy/tests/blackbox/test_repair_workingtree.py (+4/-4)
breezy/tests/blackbox/test_revert.py (+4/-4)
breezy/tests/blackbox/test_revision_history.py (+1/-1)
breezy/tests/blackbox/test_revision_info.py (+19/-19)
breezy/tests/blackbox/test_revno.py (+18/-18)
breezy/tests/blackbox/test_rmbranch.py (+4/-5)
breezy/tests/blackbox/test_script.py (+12/-12)
breezy/tests/blackbox/test_selftest.py (+1/-1)
breezy/tests/blackbox/test_send.py (+3/-3)
breezy/tests/blackbox/test_serve.py (+3/-3)
breezy/tests/blackbox/test_shell_complete.py (+6/-6)
breezy/tests/blackbox/test_shelve.py (+9/-9)
breezy/tests/blackbox/test_sign_my_commits.py (+1/-1)
breezy/tests/blackbox/test_status.py (+33/-33)
breezy/tests/blackbox/test_switch.py (+8/-8)
breezy/tests/blackbox/test_tags.py (+55/-48)
breezy/tests/blackbox/test_uncommit.py (+17/-17)
breezy/tests/blackbox/test_unknowns.py (+6/-6)
breezy/tests/blackbox/test_update.py (+31/-31)
breezy/tests/blackbox/test_upgrade.py (+4/-4)
breezy/tests/blackbox/test_version_info.py (+31/-28)
breezy/tests/blackbox/test_versioning.py (+2/-2)
breezy/tests/blackbox/test_view.py (+13/-13)
breezy/tests/blackbox/test_whoami.py (+3/-3)
breezy/tests/test_options.py (+1/-1)
breezy/tests/treeshape.py (+1/-1)
breezy/transport/remote.py (+2/-1)
python3.passing (+399/-13)
To merge this branch: bzr merge lp:~jelmer/brz/python3-blackbox
Reviewer Review Type Date Requested Status
Martin Packman Approve
Review via email: mp+349090@code.launchpad.net

Commit message

Change run_bzr to use StringIOWithEncoding for stderr and stdout on python 3.

Description of the change

Change run_bzr to use StringIOWithEncoding for stderr and stdout on python 3.

This is more correct: it matches the actual sys.stderr and sys.stdout on Python 3.

It fixes a large number of blackbox tests and removes the need to add bees in many places.

There are some corner cases, where we currently compare with utf-8 encoded bytestrings on Python2. We'll need to either special case those for Python 3 or add some sort of generic way of dealing with it.

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

I think the run_bzr level should be text by default, so overall changes here seem good regardless of a few messy bits. Some of the output content checks really should be using regexp matching over more primitive things, but that can all get fiddled with later.

review: Approve
Revision history for this message
The Breezy Bot (the-breezy-bot) wrote :
Revision history for this message
The Breezy Bot (the-breezy-bot) wrote :
Revision history for this message
The Breezy Bot (the-breezy-bot) wrote :
Revision history for this message
The Breezy Bot (the-breezy-bot) wrote :

Running landing tests failed
https://ci.breezy-vcs.org/job/land-brz/300/

Revision history for this message
The Breezy Bot (the-breezy-bot) wrote :
Revision history for this message
The Breezy Bot (the-breezy-bot) wrote :
Revision history for this message
The Breezy Bot (the-breezy-bot) wrote :

Running landing tests failed
https://ci.breezy-vcs.org/job/land-brz/310/

Revision history for this message
The Breezy Bot (the-breezy-bot) wrote :

Running landing tests failed
https://ci.breezy-vcs.org/job/land-brz/311/

Revision history for this message
The Breezy Bot (the-breezy-bot) wrote :

Running landing tests failed
https://ci.breezy-vcs.org/job/land-brz/312/

Revision history for this message
The Breezy Bot (the-breezy-bot) wrote :

Running landing tests failed
https://ci.breezy-vcs.org/job/land-brz/313/

Revision history for this message
The Breezy Bot (the-breezy-bot) wrote :

Running landing tests failed
https://ci.breezy-vcs.org/job/land-brz/314/

Revision history for this message
The Breezy Bot (the-breezy-bot) wrote :

Running landing tests failed
https://ci.breezy-vcs.org/job/land-brz/315/

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'breezy/builtins.py'
2--- breezy/builtins.py 2018-07-13 00:21:51 +0000
3+++ breezy/builtins.py 2018-07-14 19:37:12 +0000
4@@ -84,6 +84,7 @@
5 )
6 from .sixish import (
7 BytesIO,
8+ PY3,
9 text_type,
10 viewitems,
11 viewvalues,
12@@ -1581,7 +1582,7 @@
13 else:
14 prefix = " "
15 self.outf.write("%s %s\n" % (
16- prefix, name.encode(self.outf.encoding)))
17+ prefix, (name if PY3 else name.encode(self.outf.encoding))))
18
19
20 class cmd_checkout(Command):
21@@ -5461,7 +5462,7 @@
22 uncommit(b, tree=tree, dry_run=dry_run, verbose=verbose,
23 revno=revno, local=local, keep_tags=keep_tags)
24 self.outf.write(gettext('You can restore the old tip by running:\n'
25- ' brz pull . -r revid:%s\n') % last_rev_id)
26+ ' brz pull . -r revid:%s\n') % last_rev_id.decode('utf-8'))
27
28
29 class cmd_break_lock(Command):
30
31=== modified file 'breezy/bzr/smart/vfs.py'
32--- breezy/bzr/smart/vfs.py 2018-05-13 02:18:13 +0000
33+++ breezy/bzr/smart/vfs.py 2018-07-14 19:37:12 +0000
34@@ -126,7 +126,7 @@
35 relpath += b'/'
36 relpath = self.translate_client_path(relpath)
37 filenames = self._backing_transport.list_dir(relpath)
38- return request.SuccessfulSmartServerResponse((b'names',) + tuple(filenames))
39+ return request.SuccessfulSmartServerResponse((b'names',) + tuple([filename.encode('utf-8') for filename in filenames]))
40
41
42 class MkdirRequest(VfsRequest):
43
44=== modified file 'breezy/diff.py'
45--- breezy/diff.py 2018-07-11 21:06:20 +0000
46+++ breezy/diff.py 2018-07-14 19:37:12 +0000
47@@ -757,6 +757,7 @@
48 else:
49 raise
50 self.to_file.write(proc.stdout.read())
51+ proc.stdout.close()
52 return proc.wait()
53
54 def _try_symlink_root(self, tree, prefix):
55
56=== modified file 'breezy/log.py'
57--- breezy/log.py 2018-07-12 08:47:57 +0000
58+++ breezy/log.py 2018-07-14 19:37:12 +0000
59@@ -759,6 +759,8 @@
60 # Oops, a ghost.
61 yield e.revision_id, None, None
62 break
63+ except StopIteration:
64+ break
65 else:
66 yield revision_id, str(cur_revno) if cur_revno is not None else None, 0
67 if cur_revno is not None:
68
69=== modified file 'breezy/plugins/fastimport/tests/test_commands.py'
70--- breezy/plugins/fastimport/tests/test_commands.py 2018-07-03 23:54:50 +0000
71+++ breezy/plugins/fastimport/tests/test_commands.py 2018-07-14 19:37:12 +0000
72@@ -59,7 +59,7 @@
73 self.assertIsNot(b"bla", stream.read())
74
75
76-fast_export_baseline_data = b"""commit refs/heads/master
77+fast_export_baseline_data = """commit refs/heads/master
78 mark :1
79 committer
80 data 15
81@@ -99,19 +99,19 @@
82
83 def test_empty(self):
84 self.make_branch_and_tree("br")
85- self.assertEquals(b"", self.run_bzr("fast-export br")[0])
86+ self.assertEquals("", self.run_bzr("fast-export br")[0])
87
88 def test_pointless(self):
89 tree = self.make_branch_and_tree("br")
90 tree.commit("pointless")
91 data = self.run_bzr("fast-export br")[0]
92- self.assertTrue(data.startswith(b'commit refs/heads/master\nmark :1\ncommitter'))
93+ self.assertTrue(data.startswith('commit refs/heads/master\nmark :1\ncommitter'))
94
95 def test_file(self):
96 tree = self.make_branch_and_tree("br")
97 tree.commit("pointless")
98 data = self.run_bzr("fast-export br br.fi")[0]
99- self.assertEquals(b"", data)
100+ self.assertEquals("", data)
101 try:
102 self.assertPathExists("br.fi")
103 except AttributeError: # bzr < 2.4
104@@ -124,17 +124,17 @@
105 rev_id = tree.branch.dotted_revno_to_revision_id((1,))
106 tree.branch.tags.set_tag("goodTag", rev_id)
107 tree.branch.tags.set_tag("bad Tag", rev_id)
108-
109+
110 # first check --no-rewrite-tag-names
111 data = self.run_bzr("fast-export --plain --no-rewrite-tag-names br")[0]
112- self.assertNotEqual(-1, data.find(b"reset refs/tags/goodTag"))
113- self.assertEqual(data.find(b"reset refs/tags/"), data.rfind(b"reset refs/tags/"))
114-
115+ self.assertNotEqual(-1, data.find("reset refs/tags/goodTag"))
116+ self.assertEqual(data.find("reset refs/tags/"), data.rfind("reset refs/tags/"))
117+
118 # and now with --rewrite-tag-names
119 data = self.run_bzr("fast-export --plain --rewrite-tag-names br")[0]
120- self.assertNotEqual(-1, data.find(b"reset refs/tags/goodTag"))
121+ self.assertNotEqual(-1, data.find("reset refs/tags/goodTag"))
122 # "bad Tag" should be exported as bad_Tag
123- self.assertNotEqual(-1, data.find(b"reset refs/tags/bad_Tag"))
124+ self.assertNotEqual(-1, data.find("reset refs/tags/bad_Tag"))
125
126 def test_no_tags(self):
127 tree = self.make_branch_and_tree("br")
128@@ -144,7 +144,7 @@
129 tree.branch.tags.set_tag("someTag", rev_id)
130
131 data = self.run_bzr("fast-export --plain --no-tags br")[0]
132- self.assertEqual(-1, data.find(b"reset refs/tags/someTag"))
133+ self.assertEqual(-1, data.find("reset refs/tags/someTag"))
134
135 def test_baseline_option(self):
136 tree = self.make_branch_and_tree("bl")
137@@ -184,7 +184,7 @@
138 # This exports the baseline state at Revision 3,
139 # followed by the deltas for 4 and 5
140 data = self.run_bzr("fast-export --baseline -r 3.. bl")[0]
141- data = re.sub(b'committer.*', b'committer', data)
142+ data = re.sub('committer.*', 'committer', data)
143 self.assertEquals(fast_export_baseline_data, data)
144
145 # Also confirm that --baseline with no args is identical to full export
146@@ -208,7 +208,7 @@
147 def test_empty(self):
148 self.build_tree_contents([('empty.fi', b"")])
149 self.make_branch_and_tree("br")
150- self.assertEquals(b"", self.run_bzr("fast-import empty.fi br")[0])
151+ self.assertEquals("", self.run_bzr("fast-import empty.fi br")[0])
152
153 def test_file(self):
154 tree = self.make_branch_and_tree("br")
155@@ -224,5 +224,5 @@
156 data 15
157 """)])
158 self.make_branch_and_tree("br")
159- self.run_bzr_error([b'brz: ERROR: 4: Parse error: line 4: Command commit is missing section .*committer.*\n'], "fast-import empty.fi br")
160+ self.run_bzr_error(['brz: ERROR: 4: Parse error: line 4: Command commit is missing section .*committer.*\n'], "fast-import empty.fi br")
161
162
163=== modified file 'breezy/plugins/git/fetch.py'
164--- breezy/plugins/git/fetch.py 2018-07-03 00:15:59 +0000
165+++ breezy/plugins/git/fetch.py 2018-07-14 19:37:12 +0000
166@@ -101,6 +101,9 @@
167 :param blob: A git blob
168 :return: Inventory delta for this file
169 """
170+ if not isinstance(path, bytes):
171+ raise TypeError(path)
172+ decoded_path = path.decode('utf-8')
173 (base_mode, mode) = modes
174 (base_hexsha, hexsha) = hexshas
175 if mapping.is_special_file(path):
176@@ -108,7 +111,7 @@
177 if base_hexsha == hexsha and base_mode == mode:
178 # If nothing has changed since the base revision, we're done
179 return []
180- file_id = lookup_file_id(osutils.safe_unicode(path))
181+ file_id = lookup_file_id(decoded_path)
182 if stat.S_ISLNK(mode):
183 cls = InventoryLink
184 else:
185@@ -117,14 +120,14 @@
186 if ie.kind == "file":
187 ie.executable = mode_is_executable(mode)
188 if base_hexsha == hexsha and mode_kind(base_mode) == mode_kind(mode):
189- base_exec = base_bzr_tree.is_executable(path)
190+ base_exec = base_bzr_tree.is_executable(decoded_path)
191 if ie.kind == "symlink":
192- ie.symlink_target = base_bzr_tree.get_symlink_target(path)
193+ ie.symlink_target = base_bzr_tree.get_symlink_target(decoded_path)
194 else:
195- ie.text_size = base_bzr_tree.get_file_size(path)
196- ie.text_sha1 = base_bzr_tree.get_file_sha1(path)
197+ ie.text_size = base_bzr_tree.get_file_size(decoded_path)
198+ ie.text_sha1 = base_bzr_tree.get_file_sha1(decoded_path)
199 if ie.kind == "symlink" or ie.executable == base_exec:
200- ie.revision = base_bzr_tree.get_file_revision(path)
201+ ie.revision = base_bzr_tree.get_file_revision(decoded_path)
202 else:
203 blob = lookup_object(hexsha)
204 else:
205@@ -139,9 +142,10 @@
206 parent_keys = []
207 for ptree in parent_bzr_trees:
208 try:
209- ppath = ptree.id2path(file_id)
210- except errors.NoSuchId:
211+ ppaths = base_bzr_tree.find_related_paths_across_trees([decoded_path], trees=[ptree])
212+ except errors.PathsNotVersionedError:
213 continue
214+ ppath = ppaths.pop()
215 pkind = ptree.kind(ppath, file_id)
216 if (pkind == ie.kind and
217 ((pkind == "symlink" and ptree.get_symlink_target(ppath, file_id) == ie.symlink_target) or
218@@ -167,14 +171,13 @@
219 tuple(parent_keys), ie.text_sha1, chunks)])
220 invdelta = []
221 if base_hexsha is not None:
222- old_path = path.decode("utf-8") # Renames are not supported yet
223+ old_path = decoded_path # Renames are not supported yet
224 if stat.S_ISDIR(base_mode):
225 invdelta.extend(remove_disappeared_children(base_bzr_tree, old_path,
226 lookup_object(base_hexsha), [], lookup_object))
227 else:
228 old_path = None
229- new_path = path.decode("utf-8")
230- invdelta.append((old_path, new_path, file_id, ie))
231+ invdelta.append((old_path, decoded_path, file_id, ie))
232 if base_hexsha != hexsha:
233 store_updater.add_object(blob, (ie.file_id, ie.revision), path)
234 return invdelta
235
236=== modified file 'breezy/plugins/git/send.py'
237--- breezy/plugins/git/send.py 2018-05-13 22:54:28 +0000
238+++ breezy/plugins/git/send.py 2018-07-14 19:37:12 +0000
239@@ -75,7 +75,8 @@
240 return object_mode(kind, executable)
241 def get_blob(present, tree, path):
242 if present:
243- return Blob.from_string(tree.get_file(path).read())
244+ with tree.get_file(path) as f:
245+ return Blob.from_string(f.read())
246 else:
247 return None
248 trees = (self.old_tree, self.new_tree)
249
250=== modified file 'breezy/plugins/git/tests/test_blackbox.py'
251--- breezy/plugins/git/tests/test_blackbox.py 2018-07-03 01:42:53 +0000
252+++ breezy/plugins/git/tests/test_blackbox.py 2018-07-14 19:37:12 +0000
253@@ -54,18 +54,18 @@
254 dir = ControlDir.open(self.test_dir)
255 dir.create_branch()
256 output, error = self.run_bzr(['nick'])
257- self.assertEqual(b"master\n", output)
258+ self.assertEqual("master\n", output)
259
260 def test_branches(self):
261 self.simple_commit()
262 output, error = self.run_bzr(['branches'])
263- self.assertEqual(b"* master\n", output)
264+ self.assertEqual("* master\n", output)
265
266 def test_info(self):
267 self.simple_commit()
268 output, error = self.run_bzr(['info'])
269- self.assertEqual(error, b'')
270- self.assertTrue(b"Standalone tree (format: git)" in output)
271+ self.assertEqual(error, '')
272+ self.assertTrue("Standalone tree (format: git)" in output)
273
274 def test_branch(self):
275 os.mkdir("gitbranch")
276@@ -79,8 +79,8 @@
277
278 output, error = self.run_bzr(['branch', 'gitbranch', 'bzrbranch'])
279 self.assertTrue(
280- (error == b'Branched 1 revision(s).\n') or
281- (error == b'Branched 1 revision.\n'),
282+ (error == 'Branched 1 revision(s).\n') or
283+ (error == 'Branched 1 revision.\n'),
284 error)
285
286 def test_checkout(self):
287@@ -95,15 +95,15 @@
288
289 output, error = self.run_bzr(['checkout', 'gitbranch', 'bzrbranch'])
290 self.assertEqual(error,
291- b'Fetching from Git to Bazaar repository. '
292- b'For better performance, fetch into a Git repository.\n')
293- self.assertEqual(output, b'')
294+ 'Fetching from Git to Bazaar repository. '
295+ 'For better performance, fetch into a Git repository.\n')
296+ self.assertEqual(output, '')
297
298 def test_branch_ls(self):
299 self.simple_commit()
300 output, error = self.run_bzr(['ls', '-r-1'])
301- self.assertEqual(error, b'')
302- self.assertEqual(output, b"a\n")
303+ self.assertEqual(error, '')
304+ self.assertEqual(output, "a\n")
305
306 def test_init(self):
307 self.run_bzr("init --format=git repo")
308@@ -112,11 +112,11 @@
309 self.simple_commit()
310
311 output, error = self.run_bzr(['info', '-v'])
312- self.assertEqual(error, b'')
313- self.assertTrue(b"Standalone tree (format: git)" in output)
314- self.assertTrue(b"control: Local Git Repository" in output)
315- self.assertTrue(b"branch: Local Git Branch" in output)
316- self.assertTrue(b"repository: Git Repository" in output)
317+ self.assertEqual(error, '')
318+ self.assertTrue("Standalone tree (format: git)" in output)
319+ self.assertTrue("control: Local Git Repository" in output)
320+ self.assertTrue("branch: Local Git Branch" in output)
321+ self.assertTrue("repository: Git Repository" in output)
322
323 def test_push_roundtripping(self):
324 self.knownFailure("roundtripping is not yet supported")
325@@ -136,10 +136,10 @@
326
327 # Check that bzr log does not fail and includes the revision.
328 output, error = self.run_bzr(['log'])
329- self.assertEqual(error, b'')
330+ self.assertEqual(error, '')
331 self.assertTrue(
332- b'<The commit message>' in output,
333- b"Commit message was not found in output:\n%s" % (output,))
334+ '<The commit message>' in output,
335+ "Commit message was not found in output:\n%s" % (output,))
336
337 def test_log_verbose(self):
338 # Smoke test for "bzr log -v" in a git repository.
339@@ -153,8 +153,8 @@
340 git_repo.refs[b"refs/tags/foo"] = commit_sha1
341
342 output, error = self.run_bzr(['tags'])
343- self.assertEqual(error, b'')
344- self.assertEqual(output, b"foo 1\n")
345+ self.assertEqual(error, '')
346+ self.assertEqual(output, "foo 1\n")
347
348 def test_tag(self):
349 self.simple_commit()
350@@ -163,28 +163,28 @@
351
352 # bzr <= 2.2 emits this message in the output stream
353 # bzr => 2.3 emits this message in the error stream
354- self.assertEqual(error + output, b'Created tag bar.\n')
355+ self.assertEqual(error + output, 'Created tag bar.\n')
356
357 def test_init_repo(self):
358 output, error = self.run_bzr(["init", "--format=git", "bla.git"])
359- self.assertEqual(error, b'')
360- self.assertEqual(output, b'Created a standalone tree (format: git)\n')
361+ self.assertEqual(error, '')
362+ self.assertEqual(output, 'Created a standalone tree (format: git)\n')
363
364 def test_diff_format(self):
365 tree = self.make_branch_and_tree('.')
366 self.build_tree(['a'])
367 tree.add(['a'])
368 output, error = self.run_bzr(['diff', '--format=git'], retcode=1)
369- self.assertEqual(error, b'')
370+ self.assertEqual(error, '')
371 self.assertEqual(output,
372- b'diff --git /dev/null b/a\n'
373- b'old mode 0\n'
374- b'new mode 100644\n'
375- b'index 0000000..c197bd8 100644\n'
376- b'--- /dev/null\n'
377- b'+++ b/a\n'
378- b'@@ -0,0 +1 @@\n'
379- b'+contents of a\n')
380+ 'diff --git /dev/null b/a\n'
381+ 'old mode 0\n'
382+ 'new mode 100644\n'
383+ 'index 0000000..c197bd8 100644\n'
384+ '--- /dev/null\n'
385+ '+++ b/a\n'
386+ '@@ -0,0 +1 @@\n'
387+ '+contents of a\n')
388
389 def test_git_import_uncolocated(self):
390 r = GitRepo.init("a", mkdir=True)
391@@ -249,10 +249,10 @@
392 cid = r.do_commit(ref=b"refs/heads/abranch", committer=b"Joe <joe@example.com>", message=b"Dummy")
393 r[b"refs/tags/atag"] = cid
394 (stdout, stderr) = self.run_bzr(["git-refs", "a"])
395- self.assertEqual(stderr, b"")
396+ self.assertEqual(stderr, "")
397 self.assertEqual(stdout,
398- b'refs/heads/abranch -> ' + cid + b'\n'
399- b'refs/tags/atag -> ' + cid + b'\n')
400+ 'refs/heads/abranch -> ' + cid.decode('ascii') + '\n'
401+ 'refs/tags/atag -> ' + cid.decode('ascii') + '\n')
402
403 def test_git_refs_from_bzr(self):
404 tree = self.make_branch_and_tree('a')
405@@ -261,9 +261,9 @@
406 revid = tree.commit(committer=b"Joe <joe@example.com>", message=b"Dummy")
407 tree.branch.tags.set_tag("atag", revid)
408 (stdout, stderr) = self.run_bzr(["git-refs", "a"])
409- self.assertEqual(stderr, b"")
410- self.assertTrue(b"refs/tags/atag -> " in stdout)
411- self.assertTrue(b"HEAD -> " in stdout)
412+ self.assertEqual(stderr, "")
413+ self.assertTrue("refs/tags/atag -> " in stdout)
414+ self.assertTrue("HEAD -> " in stdout)
415
416 def test_check(self):
417 r = GitRepo.init("gitr", mkdir=True)
418@@ -272,8 +272,8 @@
419 r.do_commit(b"message", committer=b"Somebody <user@example.com>")
420 out, err = self.run_bzr(["check", "gitr"])
421 self.maxDiff = None
422- self.assertEqual(out, b'')
423- self.assertTrue(err.endswith, b'3 objects\n')
424+ self.assertEqual(out, '')
425+ self.assertTrue(err.endswith, '3 objects\n')
426
427
428 class ShallowTests(ExternalBase):
429@@ -293,36 +293,36 @@
430 def test_log_shallow(self):
431 # Check that bzr log does not fail and includes the revision.
432 output, error = self.run_bzr(['log', 'gitr'], retcode=3)
433- self.assertEqual(error, b'brz: ERROR: Further revision history missing.\n')
434+ self.assertEqual(error, 'brz: ERROR: Further revision history missing.\n')
435 self.assertEqual(output,
436- b'------------------------------------------------------------\n'
437- b'revision-id: git-v1:' + self.repo.head() + b'\n'
438- b'git commit: ' + self.repo.head() + b'\n'
439- b'committer: Somebody <user@example.com>\n'
440- b'timestamp: Mon 2018-05-14 20:36:05 +0000\n'
441- b'message:\n'
442- b' message\n')
443+ '------------------------------------------------------------\n'
444+ 'revision-id: git-v1:' + self.repo.head().decode('ascii') + '\n'
445+ 'git commit: ' + self.repo.head().decode('ascii') + '\n'
446+ 'committer: Somebody <user@example.com>\n'
447+ 'timestamp: Mon 2018-05-14 20:36:05 +0000\n'
448+ 'message:\n'
449+ ' message\n')
450
451 def test_version_info_rio(self):
452 output, error = self.run_bzr(['version-info', '--rio', 'gitr'])
453- self.assertEqual(error, b'')
454- self.assertNotIn(b'revno:', output)
455+ self.assertEqual(error, '')
456+ self.assertNotIn('revno:', output)
457
458 def test_version_info_python(self):
459 output, error = self.run_bzr(['version-info', '--python', 'gitr'])
460- self.assertEqual(error, b'')
461- self.assertNotIn(b'revno:', output)
462+ self.assertEqual(error, '')
463+ self.assertNotIn('revno:', output)
464
465 def test_version_info_custom_with_revno(self):
466 output, error = self.run_bzr(
467 ['version-info', '--custom',
468 '--template=VERSION_INFO r{revno})\n', 'gitr'], retcode=3)
469- self.assertEqual(error, b'brz: ERROR: Variable {revno} is not available.\n')
470- self.assertEqual(output, b'VERSION_INFO r')
471+ self.assertEqual(error, 'brz: ERROR: Variable {revno} is not available.\n')
472+ self.assertEqual(output, 'VERSION_INFO r')
473
474 def test_version_info_custom_without_revno(self):
475 output, error = self.run_bzr(
476 ['version-info', '--custom', '--template=VERSION_INFO \n',
477 'gitr'])
478- self.assertEqual(error, b'')
479- self.assertEqual(output, b'VERSION_INFO \n')
480+ self.assertEqual(error, '')
481+ self.assertEqual(output, 'VERSION_INFO \n')
482
483=== modified file 'breezy/plugins/git/transportgit.py'
484--- breezy/plugins/git/transportgit.py 2018-07-03 01:42:53 +0000
485+++ breezy/plugins/git/transportgit.py 2018-07-14 19:37:12 +0000
486@@ -220,7 +220,7 @@
487 f = transport.get(name)
488 except NoSuchFile:
489 return None
490- try:
491+ with f:
492 header = f.read(len(SYMREF))
493 if header == SYMREF:
494 # Read only the first line
495@@ -228,8 +228,6 @@
496 else:
497 # Read only the first 40 bytes
498 return header + f.read(40-len(SYMREF))
499- finally:
500- f.close()
501
502 def _remove_packed_ref(self, name):
503 if self._packed_refs is None:
504@@ -485,7 +483,8 @@
505 def get_config(self):
506 from dulwich.config import ConfigFile
507 try:
508- return ConfigFile.from_file(self._controltransport.get('config'))
509+ with self._controltransport.get('config') as f:
510+ return ConfigFile.from_file(f)
511 except NoSuchFile:
512 return ConfigFile()
513
514@@ -568,16 +567,14 @@
515 except NoSuchFile:
516 return []
517 ret = []
518- try:
519+ with f:
520 for l in f.read().splitlines():
521- if l[0] == "#":
522+ if l[0] == b"#":
523 continue
524 if os.path.isabs(l):
525 continue
526 ret.append(l)
527 return ret
528- finally:
529- f.close()
530
531 @property
532 def packs(self):
533@@ -596,15 +593,16 @@
534 except NoSuchFile:
535 return self.pack_transport.list_dir(".")
536 else:
537- ret = []
538- for line in f.read().splitlines():
539- if not line:
540- continue
541- (kind, name) = line.split(" ", 1)
542- if kind != "P":
543- continue
544- ret.append(name)
545- return ret
546+ with f:
547+ ret = []
548+ for line in f.read().splitlines():
549+ if not line:
550+ continue
551+ (kind, name) = line.split(b" ", 1)
552+ if kind != b"P":
553+ continue
554+ ret.append(name)
555+ return ret
556
557 def _remove_pack(self, pack):
558 self.pack_transport.delete(os.path.basename(pack.index.path))
559@@ -646,7 +644,8 @@
560 def _get_loose_object(self, sha):
561 path = osutils.joinpath(self._split_loose_object(sha))
562 try:
563- return ShaFile.from_file(self.transport.get(path))
564+ with self.transport.get(path) as f:
565+ return ShaFile.from_file(f)
566 except NoSuchFile:
567 return None
568
569@@ -676,7 +675,7 @@
570 f.seek(0)
571 p = PackData("", f, len(f.getvalue()))
572 entries = p.sorted_entries()
573- basename = "pack-%s" % iter_sha1(entry[0] for entry in entries)
574+ basename = "pack-%s" % iter_sha1(entry[0] for entry in entries).decode('ascii')
575 p._filename = basename + ".pack"
576 f.seek(0)
577 self.pack_transport.put_file(basename + ".pack", f)
578@@ -709,14 +708,14 @@
579 pack_sha = p.index.objects_sha1()
580
581 datafile = self.pack_transport.open_write_stream(
582- "pack-%s.pack" % pack_sha)
583+ "pack-%s.pack" % pack_sha.decode('ascii'))
584 try:
585 entries, data_sum = write_pack_objects(datafile, p.pack_tuples())
586 finally:
587 datafile.close()
588 entries = sorted([(k, v[0], v[1]) for (k, v) in entries.items()])
589 idxfile = self.pack_transport.open_write_stream(
590- "pack-%s.idx" % pack_sha)
591+ "pack-%s.idx" % pack_sha.decode('ascii'))
592 try:
593 write_pack_index_v2(idxfile, entries, data_sum)
594 finally:
595
596=== modified file 'breezy/plugins/git/tree.py'
597--- breezy/plugins/git/tree.py 2018-07-11 21:04:18 +0000
598+++ breezy/plugins/git/tree.py 2018-07-14 19:37:12 +0000
599@@ -946,7 +946,8 @@
600 file = BytesIO()
601 stat_val = os.stat_result(
602 (stat.S_IFREG | 0o644, 0, 0, 0, 0, 0, 0, 0, 0, 0))
603- blob.set_raw_string(file.read())
604+ with file:
605+ blob.set_raw_string(file.read())
606 # Add object to the repository if it didn't exist yet
607 if not blob.id in self.store:
608 self.store.add_object(blob)
609
610=== modified file 'breezy/plugins/grep/test_grep.py'
611--- breezy/plugins/grep/test_grep.py 2018-07-01 15:42:26 +0000
612+++ breezy/plugins/grep/test_grep.py 2018-07-14 19:37:12 +0000
613@@ -89,21 +89,21 @@
614 self._mk_unknown_file('file0.txt')
615
616 out, err = self.run_bzr(['grep', 'line1', 'file0.txt'])
617- self.assertContainsRe(out, b"file0.txt:line1", flags=TestGrep._reflags)
618+ self.assertContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
619 self.assertEqual(len(out.splitlines()), 2) # finds line1 and line10
620
621 out, err = self.run_bzr(['grep', 'line\\d+', 'file0.txt'])
622- self.assertContainsRe(out, b"file0.txt:line1", flags=TestGrep._reflags)
623+ self.assertContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
624 self.assertEqual(len(out.splitlines()), 10)
625
626 # unknown file is not grepped unless explicitely specified
627 out, err = self.run_bzr(['grep', 'line1'])
628- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
629+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
630 self.assertEqual(len(out.splitlines()), 0)
631
632 # unknown file is not grepped unless explicitely specified
633 out, err = self.run_bzr(['grep', 'line1$'])
634- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
635+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
636 self.assertEqual(len(out.splitlines()), 0)
637
638 def test_ver_basic_file(self):
639@@ -115,16 +115,16 @@
640 self._mk_versioned_file('file0.txt')
641
642 out, err = self.run_bzr(['grep', '-r', '1', 'line1', 'file0.txt'])
643- self.assertContainsRe(out, b"file0.txt~1:line1", flags=TestGrep._reflags)
644+ self.assertContainsRe(out, "file0.txt~1:line1", flags=TestGrep._reflags)
645 self.assertEqual(len(out.splitlines()), 2) # finds line1 and line10
646
647 out, err = self.run_bzr(['grep', '-r', '1', 'line[0-9]$', 'file0.txt'])
648- self.assertContainsRe(out, b"file0.txt~1:line1", flags=TestGrep._reflags)
649+ self.assertContainsRe(out, "file0.txt~1:line1", flags=TestGrep._reflags)
650 self.assertEqual(len(out.splitlines()), 9)
651
652 # finds all the lines
653 out, err = self.run_bzr(['grep', '-r', '1', 'line[0-9]', 'file0.txt'])
654- self.assertContainsRe(out, b"file0.txt~1:line1", flags=TestGrep._reflags)
655+ self.assertContainsRe(out, "file0.txt~1:line1", flags=TestGrep._reflags)
656 self.assertEqual(len(out.splitlines()), 10)
657
658 def test_wtree_basic_file(self):
659@@ -137,19 +137,19 @@
660 self._update_file('file0.txt', 'ABC\n', checkin=False)
661
662 out, err = self.run_bzr(['grep', 'ABC', 'file0.txt'])
663- self.assertContainsRe(out, b"file0.txt:ABC", flags=TestGrep._reflags)
664+ self.assertContainsRe(out, "file0.txt:ABC", flags=TestGrep._reflags)
665 self.assertEqual(len(out.splitlines()), 1)
666
667 out, err = self.run_bzr(['grep', '[A-Z]{3}', 'file0.txt'])
668- self.assertContainsRe(out, b"file0.txt:ABC", flags=TestGrep._reflags)
669+ self.assertContainsRe(out, "file0.txt:ABC", flags=TestGrep._reflags)
670 self.assertEqual(len(out.splitlines()), 1)
671
672 out, err = self.run_bzr(['grep', '-r', 'last:1', 'ABC', 'file0.txt'])
673- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
674+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
675 self.assertEqual(len(out.splitlines()), 0)
676
677 out, err = self.run_bzr(['grep', '-r', 'last:1', '[A-Z]{3}', 'file0.txt'])
678- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
679+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
680 self.assertEqual(len(out.splitlines()), 0)
681
682 def test_ver_basic_include(self):
683@@ -164,33 +164,33 @@
684
685 out, err = self.run_bzr(['grep', '-r', 'last:1',
686 '--include', '*.aa', '--include', '*.bb', 'line1'])
687- self.assertContainsRe(out, b"file0.aa~.:line1", flags=TestGrep._reflags)
688- self.assertContainsRe(out, b"file0.bb~.:line1", flags=TestGrep._reflags)
689- self.assertNotContainsRe(out, b"file0.cc", flags=TestGrep._reflags)
690+ self.assertContainsRe(out, "file0.aa~.:line1", flags=TestGrep._reflags)
691+ self.assertContainsRe(out, "file0.bb~.:line1", flags=TestGrep._reflags)
692+ self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
693 # two lines each (line1, line10) from file0.aa and file0.bb
694 self.assertEqual(len(out.splitlines()), 4)
695
696 out, err = self.run_bzr(['grep', '-r', 'last:1',
697 '--include', '*.aa', '--include', '*.bb', 'line1$'])
698- self.assertContainsRe(out, b"file0.aa~.:line1", flags=TestGrep._reflags)
699- self.assertContainsRe(out, b"file0.bb~.:line1", flags=TestGrep._reflags)
700- self.assertNotContainsRe(out, b"file0.cc", flags=TestGrep._reflags)
701+ self.assertContainsRe(out, "file0.aa~.:line1", flags=TestGrep._reflags)
702+ self.assertContainsRe(out, "file0.bb~.:line1", flags=TestGrep._reflags)
703+ self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
704 # one lines each (line1) from file0.aa and file0.bb
705 self.assertEqual(len(out.splitlines()), 2)
706
707 out, err = self.run_bzr(['grep', '-r', 'last:1',
708 '-I', '*.aa', '-I', '*.bb', 'line1'])
709- self.assertContainsRe(out, b"file0.aa~.:line1", flags=TestGrep._reflags)
710- self.assertContainsRe(out, b"file0.bb~.:line1", flags=TestGrep._reflags)
711- self.assertNotContainsRe(out, b"file0.cc", flags=TestGrep._reflags)
712+ self.assertContainsRe(out, "file0.aa~.:line1", flags=TestGrep._reflags)
713+ self.assertContainsRe(out, "file0.bb~.:line1", flags=TestGrep._reflags)
714+ self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
715 # two lines each (line1, line10) from file0.aa and file0.bb
716 self.assertEqual(len(out.splitlines()), 4)
717
718 out, err = self.run_bzr(['grep', '-r', 'last:1',
719 '-I', '*.aa', '-I', '*.bb', 'line1$'])
720- self.assertContainsRe(out, b"file0.aa~.:line1", flags=TestGrep._reflags)
721- self.assertContainsRe(out, b"file0.bb~.:line1", flags=TestGrep._reflags)
722- self.assertNotContainsRe(out, b"file0.cc", flags=TestGrep._reflags)
723+ self.assertContainsRe(out, "file0.aa~.:line1", flags=TestGrep._reflags)
724+ self.assertContainsRe(out, "file0.bb~.:line1", flags=TestGrep._reflags)
725+ self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
726 # one lines each (line1) from file0.aa and file0.bb
727 self.assertEqual(len(out.splitlines()), 2)
728
729@@ -206,17 +206,17 @@
730
731 out, err = self.run_bzr(['grep', '--include', '*.aa',
732 '--include', '*.bb', 'line1'])
733- self.assertContainsRe(out, b"file0.aa:line1", flags=TestGrep._reflags)
734- self.assertContainsRe(out, b"file0.bb:line1", flags=TestGrep._reflags)
735- self.assertNotContainsRe(out, b"file0.cc", flags=TestGrep._reflags)
736+ self.assertContainsRe(out, "file0.aa:line1", flags=TestGrep._reflags)
737+ self.assertContainsRe(out, "file0.bb:line1", flags=TestGrep._reflags)
738+ self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
739 # two lines each (line1, line10) from file0.aa and file0.bb
740 self.assertEqual(len(out.splitlines()), 4)
741
742 out, err = self.run_bzr(['grep', '--include', '*.aa',
743 '--include', '*.bb', 'line1$'])
744- self.assertContainsRe(out, b"file0.aa:line1", flags=TestGrep._reflags)
745- self.assertContainsRe(out, b"file0.bb:line1", flags=TestGrep._reflags)
746- self.assertNotContainsRe(out, b"file0.cc", flags=TestGrep._reflags)
747+ self.assertContainsRe(out, "file0.aa:line1", flags=TestGrep._reflags)
748+ self.assertContainsRe(out, "file0.bb:line1", flags=TestGrep._reflags)
749+ self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
750 # one line each (line1) from file0.aa and file0.bb
751 self.assertEqual(len(out.splitlines()), 2)
752
753@@ -232,27 +232,27 @@
754
755 out, err = self.run_bzr(['grep', '-r', 'last:1',
756 '--exclude', '*.cc', 'line1'])
757- self.assertContainsRe(out, b"file0.aa~.:line1$", flags=TestGrep._reflags)
758- self.assertContainsRe(out, b"file0.bb~.:line1$", flags=TestGrep._reflags)
759- self.assertContainsRe(out, b"file0.aa~.:line10", flags=TestGrep._reflags)
760- self.assertContainsRe(out, b"file0.bb~.:line10", flags=TestGrep._reflags)
761- self.assertNotContainsRe(out, b"file0.cc", flags=TestGrep._reflags)
762+ self.assertContainsRe(out, "file0.aa~.:line1$", flags=TestGrep._reflags)
763+ self.assertContainsRe(out, "file0.bb~.:line1$", flags=TestGrep._reflags)
764+ self.assertContainsRe(out, "file0.aa~.:line10", flags=TestGrep._reflags)
765+ self.assertContainsRe(out, "file0.bb~.:line10", flags=TestGrep._reflags)
766+ self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
767 # two lines each (line1, line10) from file0.aa and file0.bb
768 self.assertEqual(len(out.splitlines()), 4)
769
770 out, err = self.run_bzr(['grep', '-r', 'last:1',
771 '--exclude', '*.cc', 'line1$'])
772- self.assertContainsRe(out, b"file0.aa~.:line1", flags=TestGrep._reflags)
773- self.assertContainsRe(out, b"file0.bb~.:line1", flags=TestGrep._reflags)
774- self.assertNotContainsRe(out, b"file0.cc", flags=TestGrep._reflags)
775+ self.assertContainsRe(out, "file0.aa~.:line1", flags=TestGrep._reflags)
776+ self.assertContainsRe(out, "file0.bb~.:line1", flags=TestGrep._reflags)
777+ self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
778 # one line each (line1) from file0.aa and file0.bb
779 self.assertEqual(len(out.splitlines()), 2)
780
781 out, err = self.run_bzr(['grep', '-r', 'last:1',
782 '-X', '*.cc', 'line1'])
783- self.assertContainsRe(out, b"file0.aa~.:line1", flags=TestGrep._reflags)
784- self.assertContainsRe(out, b"file0.bb~.:line1", flags=TestGrep._reflags)
785- self.assertNotContainsRe(out, b"file0.cc", flags=TestGrep._reflags)
786+ self.assertContainsRe(out, "file0.aa~.:line1", flags=TestGrep._reflags)
787+ self.assertContainsRe(out, "file0.bb~.:line1", flags=TestGrep._reflags)
788+ self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
789 # two lines each (line1, line10) from file0.aa and file0.bb
790 self.assertEqual(len(out.splitlines()), 4)
791
792@@ -267,16 +267,16 @@
793 self._mk_versioned_file('file0.cc')
794
795 out, err = self.run_bzr(['grep', '--exclude', '*.cc', 'line1'])
796- self.assertContainsRe(out, b"file0.aa:line1", flags=TestGrep._reflags)
797- self.assertContainsRe(out, b"file0.bb:line1", flags=TestGrep._reflags)
798- self.assertNotContainsRe(out, b"file0.cc", flags=TestGrep._reflags)
799+ self.assertContainsRe(out, "file0.aa:line1", flags=TestGrep._reflags)
800+ self.assertContainsRe(out, "file0.bb:line1", flags=TestGrep._reflags)
801+ self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
802 # two lines each (line1, line10) from file0.aa and file0.bb
803 self.assertEqual(len(out.splitlines()), 4)
804
805 out, err = self.run_bzr(['grep', '--exclude', '*.cc', 'lin.1$'])
806- self.assertContainsRe(out, b"file0.aa:line1", flags=TestGrep._reflags)
807- self.assertContainsRe(out, b"file0.bb:line1", flags=TestGrep._reflags)
808- self.assertNotContainsRe(out, b"file0.cc", flags=TestGrep._reflags)
809+ self.assertContainsRe(out, "file0.aa:line1", flags=TestGrep._reflags)
810+ self.assertContainsRe(out, "file0.bb:line1", flags=TestGrep._reflags)
811+ self.assertNotContainsRe(out, "file0.cc", flags=TestGrep._reflags)
812 # one line each (line1) from file0.aa and file0.bb
813 self.assertEqual(len(out.splitlines()), 2)
814
815@@ -291,21 +291,21 @@
816 self._mk_versioned_file('file2.txt', total_lines=2)
817
818 out, err = self.run_bzr(['grep', '-r', 'last:1', 'line[1-2]$'])
819- self.assertContainsRe(out, b"file0.txt~.:line1", flags=TestGrep._reflags)
820- self.assertContainsRe(out, b"file0.txt~.:line2", flags=TestGrep._reflags)
821- self.assertContainsRe(out, b"file1.txt~.:line1", flags=TestGrep._reflags)
822- self.assertContainsRe(out, b"file1.txt~.:line2", flags=TestGrep._reflags)
823- self.assertContainsRe(out, b"file2.txt~.:line1", flags=TestGrep._reflags)
824- self.assertContainsRe(out, b"file2.txt~.:line2", flags=TestGrep._reflags)
825+ self.assertContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
826+ self.assertContainsRe(out, "file0.txt~.:line2", flags=TestGrep._reflags)
827+ self.assertContainsRe(out, "file1.txt~.:line1", flags=TestGrep._reflags)
828+ self.assertContainsRe(out, "file1.txt~.:line2", flags=TestGrep._reflags)
829+ self.assertContainsRe(out, "file2.txt~.:line1", flags=TestGrep._reflags)
830+ self.assertContainsRe(out, "file2.txt~.:line2", flags=TestGrep._reflags)
831 self.assertEqual(len(out.splitlines()), 6)
832
833 out, err = self.run_bzr(['grep', '-r', 'last:1', 'line'])
834- self.assertContainsRe(out, b"file0.txt~.:line1", flags=TestGrep._reflags)
835- self.assertContainsRe(out, b"file0.txt~.:line2", flags=TestGrep._reflags)
836- self.assertContainsRe(out, b"file1.txt~.:line1", flags=TestGrep._reflags)
837- self.assertContainsRe(out, b"file1.txt~.:line2", flags=TestGrep._reflags)
838- self.assertContainsRe(out, b"file2.txt~.:line1", flags=TestGrep._reflags)
839- self.assertContainsRe(out, b"file2.txt~.:line2", flags=TestGrep._reflags)
840+ self.assertContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
841+ self.assertContainsRe(out, "file0.txt~.:line2", flags=TestGrep._reflags)
842+ self.assertContainsRe(out, "file1.txt~.:line1", flags=TestGrep._reflags)
843+ self.assertContainsRe(out, "file1.txt~.:line2", flags=TestGrep._reflags)
844+ self.assertContainsRe(out, "file2.txt~.:line1", flags=TestGrep._reflags)
845+ self.assertContainsRe(out, "file2.txt~.:line2", flags=TestGrep._reflags)
846 self.assertEqual(len(out.splitlines()), 6)
847
848 def test_multiple_wtree_files(self):
849@@ -324,33 +324,33 @@
850 out, err = self.run_bzr(['grep', 'HELLO',
851 'file0.txt', 'file1.txt', 'file2.txt'])
852
853- self.assertContainsRe(out, b"file0.txt:HELLO", flags=TestGrep._reflags)
854- self.assertContainsRe(out, b"file1.txt:HELLO", flags=TestGrep._reflags)
855- self.assertContainsRe(out, b"file2.txt:HELLO", flags=TestGrep._reflags)
856+ self.assertContainsRe(out, "file0.txt:HELLO", flags=TestGrep._reflags)
857+ self.assertContainsRe(out, "file1.txt:HELLO", flags=TestGrep._reflags)
858+ self.assertContainsRe(out, "file2.txt:HELLO", flags=TestGrep._reflags)
859 self.assertEqual(len(out.splitlines()), 3)
860
861 out, err = self.run_bzr(['grep', 'HELLO', '-r', 'last:1',
862 'file0.txt', 'file1.txt', 'file2.txt'])
863
864- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
865- self.assertContainsRe(out, b"file1.txt~.:HELLO", flags=TestGrep._reflags)
866- self.assertNotContainsRe(out, b"file2.txt", flags=TestGrep._reflags)
867+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
868+ self.assertContainsRe(out, "file1.txt~.:HELLO", flags=TestGrep._reflags)
869+ self.assertNotContainsRe(out, "file2.txt", flags=TestGrep._reflags)
870 self.assertEqual(len(out.splitlines()), 1)
871
872 out, err = self.run_bzr(['grep', 'HE..O',
873 'file0.txt', 'file1.txt', 'file2.txt'])
874
875- self.assertContainsRe(out, b"file0.txt:HELLO", flags=TestGrep._reflags)
876- self.assertContainsRe(out, b"file1.txt:HELLO", flags=TestGrep._reflags)
877- self.assertContainsRe(out, b"file2.txt:HELLO", flags=TestGrep._reflags)
878+ self.assertContainsRe(out, "file0.txt:HELLO", flags=TestGrep._reflags)
879+ self.assertContainsRe(out, "file1.txt:HELLO", flags=TestGrep._reflags)
880+ self.assertContainsRe(out, "file2.txt:HELLO", flags=TestGrep._reflags)
881 self.assertEqual(len(out.splitlines()), 3)
882
883 out, err = self.run_bzr(['grep', 'HE..O', '-r', 'last:1',
884 'file0.txt', 'file1.txt', 'file2.txt'])
885
886- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
887- self.assertContainsRe(out, b"file1.txt~.:HELLO", flags=TestGrep._reflags)
888- self.assertNotContainsRe(out, b"file2.txt", flags=TestGrep._reflags)
889+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
890+ self.assertContainsRe(out, "file1.txt~.:HELLO", flags=TestGrep._reflags)
891+ self.assertNotContainsRe(out, "file2.txt", flags=TestGrep._reflags)
892 self.assertEqual(len(out.splitlines()), 1)
893
894 def test_ver_null_option(self):
895@@ -408,11 +408,11 @@
896 self._mk_versioned_file('dir0/file0.txt')
897
898 out, err = self.run_bzr(['grep', '-r', 'last:1', '--no-recursive', 'line1'])
899- self.assertNotContainsRe(out, b"file0.txt~.:line1", flags=TestGrep._reflags)
900+ self.assertNotContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
901 self.assertEqual(len(out.splitlines()), 0)
902
903 out, err = self.run_bzr(['grep', '-r', 'last:1', '--no-recursive', 'line1$'])
904- self.assertNotContainsRe(out, b"file0.txt~.:line1", flags=TestGrep._reflags)
905+ self.assertNotContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
906 self.assertEqual(len(out.splitlines()), 0)
907
908 def test_wtree_file_in_dir_no_recursive(self):
909@@ -425,11 +425,11 @@
910 self._mk_versioned_file('dir0/file0.txt')
911
912 out, err = self.run_bzr(['grep', '--no-recursive', 'line1'])
913- self.assertNotContainsRe(out, b"file0.txt:line1", flags=TestGrep._reflags)
914+ self.assertNotContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
915 self.assertEqual(len(out.splitlines()), 0)
916
917 out, err = self.run_bzr(['grep', '--no-recursive', 'lin.1'])
918- self.assertNotContainsRe(out, b"file0.txt:line1", flags=TestGrep._reflags)
919+ self.assertNotContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
920 self.assertEqual(len(out.splitlines()), 0)
921
922 def test_versioned_file_in_dir_recurse(self):
923@@ -442,12 +442,12 @@
924 self._mk_versioned_file('dir0/file0.txt')
925
926 out, err = self.run_bzr(['grep', '-r', '-1', '.i.e1'])
927- self.assertContainsRe(out, b"^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
928+ self.assertContainsRe(out, "^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
929 # find line1 and line10
930 self.assertEqual(len(out.splitlines()), 2)
931
932 out, err = self.run_bzr(['grep', '-r', '-1', 'line1'])
933- self.assertContainsRe(out, b"^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
934+ self.assertContainsRe(out, "^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
935 # find line1 and line10
936 self.assertEqual(len(out.splitlines()), 2)
937
938@@ -461,12 +461,12 @@
939 self._mk_versioned_file('dir0/file0.txt')
940
941 out, err = self.run_bzr(['grep', 'line1'])
942- self.assertContainsRe(out, b"^dir0/file0.txt:line1", flags=TestGrep._reflags)
943+ self.assertContainsRe(out, "^dir0/file0.txt:line1", flags=TestGrep._reflags)
944 # find line1 and line10
945 self.assertEqual(len(out.splitlines()), 2)
946
947 out, err = self.run_bzr(['grep', 'lin.1'])
948- self.assertContainsRe(out, b"^dir0/file0.txt:line1", flags=TestGrep._reflags)
949+ self.assertContainsRe(out, "^dir0/file0.txt:line1", flags=TestGrep._reflags)
950 # find line1 and line10
951 self.assertEqual(len(out.splitlines()), 2)
952
953@@ -481,12 +481,12 @@
954 os.chdir('dir0')
955
956 out, err = self.run_bzr(['grep', '-r', 'last:1', 'line1'])
957- self.assertContainsRe(out, b"^file0.txt~.:line1", flags=TestGrep._reflags)
958+ self.assertContainsRe(out, "^file0.txt~.:line1", flags=TestGrep._reflags)
959 # finds line1 and line10
960 self.assertEqual(len(out.splitlines()), 2)
961
962 out, err = self.run_bzr(['grep', '-r', 'last:1', '.i.e1'])
963- self.assertContainsRe(out, b"^file0.txt~.:line1", flags=TestGrep._reflags)
964+ self.assertContainsRe(out, "^file0.txt~.:line1", flags=TestGrep._reflags)
965 # finds line1 and line10
966 self.assertEqual(len(out.splitlines()), 2)
967
968@@ -505,39 +505,39 @@
969
970 out, err = self.run_bzr(['grep', '-r', 'last:1',
971 '--include', '*.aa', 'line1'])
972- self.assertContainsRe(out, b"^file1.aa~5:line1$", flags=TestGrep._reflags)
973- self.assertContainsRe(out, b"^file1.aa~5:line10$", flags=TestGrep._reflags)
974- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
975+ self.assertContainsRe(out, "^file1.aa~5:line1$", flags=TestGrep._reflags)
976+ self.assertContainsRe(out, "^file1.aa~5:line10$", flags=TestGrep._reflags)
977+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
978 # finds line1 and line10
979 self.assertEqual(len(out.splitlines()), 2)
980
981 out, err = self.run_bzr(['grep', '-r', 'last:2..last:1',
982 '--include', '*.aa', 'line1'])
983- self.assertContainsRe(out, b"^file1.aa~4:line1$", flags=TestGrep._reflags)
984- self.assertContainsRe(out, b"^file1.aa~4:line10$", flags=TestGrep._reflags)
985- self.assertContainsRe(out, b"^file1.aa~5:line1$", flags=TestGrep._reflags)
986- self.assertContainsRe(out, b"^file1.aa~5:line10$", flags=TestGrep._reflags)
987- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
988+ self.assertContainsRe(out, "^file1.aa~4:line1$", flags=TestGrep._reflags)
989+ self.assertContainsRe(out, "^file1.aa~4:line10$", flags=TestGrep._reflags)
990+ self.assertContainsRe(out, "^file1.aa~5:line1$", flags=TestGrep._reflags)
991+ self.assertContainsRe(out, "^file1.aa~5:line10$", flags=TestGrep._reflags)
992+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
993 # finds line1 and line10 over two revisions
994 self.assertEqual(len(out.splitlines()), 4)
995
996 out, err = self.run_bzr(['grep', '-r', 'last:1',
997 '--include', '*.aa', 'lin.1'])
998- self.assertContainsRe(out, b"^file1.aa~5:line1$", flags=TestGrep._reflags)
999- self.assertContainsRe(out, b"^file1.aa~5:line10$", flags=TestGrep._reflags)
1000- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
1001+ self.assertContainsRe(out, "^file1.aa~5:line1$", flags=TestGrep._reflags)
1002+ self.assertContainsRe(out, "^file1.aa~5:line10$", flags=TestGrep._reflags)
1003+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1004 # finds line1 and line10
1005 self.assertEqual(len(out.splitlines()), 2)
1006
1007 out, err = self.run_bzr(['grep', '-r', 'last:3..last:1',
1008 '--include', '*.aa', 'lin.1'])
1009- self.assertContainsRe(out, b"^file1.aa~3:line1$", flags=TestGrep._reflags)
1010- self.assertContainsRe(out, b"^file1.aa~4:line1$", flags=TestGrep._reflags)
1011- self.assertContainsRe(out, b"^file1.aa~5:line1$", flags=TestGrep._reflags)
1012- self.assertContainsRe(out, b"^file1.aa~3:line10$", flags=TestGrep._reflags)
1013- self.assertContainsRe(out, b"^file1.aa~4:line10$", flags=TestGrep._reflags)
1014- self.assertContainsRe(out, b"^file1.aa~5:line10$", flags=TestGrep._reflags)
1015- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
1016+ self.assertContainsRe(out, "^file1.aa~3:line1$", flags=TestGrep._reflags)
1017+ self.assertContainsRe(out, "^file1.aa~4:line1$", flags=TestGrep._reflags)
1018+ self.assertContainsRe(out, "^file1.aa~5:line1$", flags=TestGrep._reflags)
1019+ self.assertContainsRe(out, "^file1.aa~3:line10$", flags=TestGrep._reflags)
1020+ self.assertContainsRe(out, "^file1.aa~4:line10$", flags=TestGrep._reflags)
1021+ self.assertContainsRe(out, "^file1.aa~5:line10$", flags=TestGrep._reflags)
1022+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1023 # finds line1 and line10 over 3 revisions
1024 self.assertEqual(len(out.splitlines()), 6)
1025
1026@@ -554,15 +554,15 @@
1027
1028 out, err = self.run_bzr(['grep', '-r', 'last:1',
1029 '--exclude', '*.txt', 'line1'])
1030- self.assertContainsRe(out, b"^file1.aa~.:line1", flags=TestGrep._reflags)
1031- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
1032+ self.assertContainsRe(out, "^file1.aa~.:line1", flags=TestGrep._reflags)
1033+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1034 # finds line1 and line10
1035 self.assertEqual(len(out.splitlines()), 2)
1036
1037 out, err = self.run_bzr(['grep', '-r', 'last:1',
1038 '--exclude', '*.txt', 'l[a-z]ne1'])
1039- self.assertContainsRe(out, b"^file1.aa~.:line1", flags=TestGrep._reflags)
1040- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
1041+ self.assertContainsRe(out, "^file1.aa~.:line1", flags=TestGrep._reflags)
1042+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1043 # finds line1 and line10
1044 self.assertEqual(len(out.splitlines()), 2)
1045
1046@@ -577,12 +577,12 @@
1047 os.chdir('dir0')
1048
1049 out, err = self.run_bzr(['grep', 'line1'])
1050- self.assertContainsRe(out, b"^file0.txt:line1", flags=TestGrep._reflags)
1051+ self.assertContainsRe(out, "^file0.txt:line1", flags=TestGrep._reflags)
1052 # finds line1 and line10
1053 self.assertEqual(len(out.splitlines()), 2)
1054
1055 out, err = self.run_bzr(['grep', 'l[aeiou]ne1'])
1056- self.assertContainsRe(out, b"^file0.txt:line1", flags=TestGrep._reflags)
1057+ self.assertContainsRe(out, "^file0.txt:line1", flags=TestGrep._reflags)
1058 # finds line1 and line10
1059 self.assertEqual(len(out.splitlines()), 2)
1060
1061@@ -598,13 +598,13 @@
1062 os.chdir('dir0')
1063
1064 out, err = self.run_bzr(['grep', '--include', '*.aa', 'line1'])
1065- self.assertContainsRe(out, b"^file1.aa:line1", flags=TestGrep._reflags)
1066+ self.assertContainsRe(out, "^file1.aa:line1", flags=TestGrep._reflags)
1067 # finds line1 and line10
1068 self.assertEqual(len(out.splitlines()), 2)
1069
1070 out, err = self.run_bzr(['grep', '--include', '*.aa', 'l[ixn]ne1'])
1071- self.assertContainsRe(out, b"^file1.aa:line1", flags=TestGrep._reflags)
1072- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
1073+ self.assertContainsRe(out, "^file1.aa:line1", flags=TestGrep._reflags)
1074+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1075 # finds line1 and line10
1076 self.assertEqual(len(out.splitlines()), 2)
1077
1078@@ -620,16 +620,16 @@
1079 os.chdir('dir0')
1080
1081 out, err = self.run_bzr(['grep', '--exclude', '*.txt', 'li.e1'])
1082- self.assertContainsRe(out, b"^file1.aa:line1$", flags=TestGrep._reflags)
1083- self.assertContainsRe(out, b"^file1.aa:line10$", flags=TestGrep._reflags)
1084- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
1085+ self.assertContainsRe(out, "^file1.aa:line1$", flags=TestGrep._reflags)
1086+ self.assertContainsRe(out, "^file1.aa:line10$", flags=TestGrep._reflags)
1087+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1088 # finds line1 and line10
1089 self.assertEqual(len(out.splitlines()), 2)
1090
1091 out, err = self.run_bzr(['grep', '--exclude', '*.txt', 'line1'])
1092- self.assertContainsRe(out, b"^file1.aa:line1$", flags=TestGrep._reflags)
1093- self.assertContainsRe(out, b"^file1.aa:line10$", flags=TestGrep._reflags)
1094- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
1095+ self.assertContainsRe(out, "^file1.aa:line1$", flags=TestGrep._reflags)
1096+ self.assertContainsRe(out, "^file1.aa:line10$", flags=TestGrep._reflags)
1097+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1098 # finds line1 and line10
1099 self.assertEqual(len(out.splitlines()), 2)
1100
1101@@ -651,21 +651,21 @@
1102
1103 out, err = self.run_bzr(['grep', '-r', 'last:1',
1104 '--include', '*.aa', '--include', '*.bb', 'l..e1'])
1105- self.assertContainsRe(out, b"^dir0/file0.aa~.:line1$", flags=TestGrep._reflags)
1106- self.assertContainsRe(out, b"^dir1/file1.bb~.:line1$", flags=TestGrep._reflags)
1107- self.assertContainsRe(out, b"^dir0/file0.aa~.:line10$", flags=TestGrep._reflags)
1108- self.assertContainsRe(out, b"^dir1/file1.bb~.:line10$", flags=TestGrep._reflags)
1109- self.assertNotContainsRe(out, b"file1.cc", flags=TestGrep._reflags)
1110+ self.assertContainsRe(out, "^dir0/file0.aa~.:line1$", flags=TestGrep._reflags)
1111+ self.assertContainsRe(out, "^dir1/file1.bb~.:line1$", flags=TestGrep._reflags)
1112+ self.assertContainsRe(out, "^dir0/file0.aa~.:line10$", flags=TestGrep._reflags)
1113+ self.assertContainsRe(out, "^dir1/file1.bb~.:line10$", flags=TestGrep._reflags)
1114+ self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
1115 # finds line1 and line10
1116 self.assertEqual(len(out.splitlines()), 4)
1117
1118 out, err = self.run_bzr(['grep', '-r', 'last:1',
1119 '--include', '*.aa', '--include', '*.bb', 'line1'])
1120- self.assertContainsRe(out, b"^dir0/file0.aa~.:line1$", flags=TestGrep._reflags)
1121- self.assertContainsRe(out, b"^dir1/file1.bb~.:line1$", flags=TestGrep._reflags)
1122- self.assertContainsRe(out, b"^dir0/file0.aa~.:line10$", flags=TestGrep._reflags)
1123- self.assertContainsRe(out, b"^dir1/file1.bb~.:line10$", flags=TestGrep._reflags)
1124- self.assertNotContainsRe(out, b"file1.cc", flags=TestGrep._reflags)
1125+ self.assertContainsRe(out, "^dir0/file0.aa~.:line1$", flags=TestGrep._reflags)
1126+ self.assertContainsRe(out, "^dir1/file1.bb~.:line1$", flags=TestGrep._reflags)
1127+ self.assertContainsRe(out, "^dir0/file0.aa~.:line10$", flags=TestGrep._reflags)
1128+ self.assertContainsRe(out, "^dir1/file1.bb~.:line10$", flags=TestGrep._reflags)
1129+ self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
1130 # finds line1 and line10
1131 self.assertEqual(len(out.splitlines()), 4)
1132
1133@@ -687,21 +687,21 @@
1134
1135 out, err = self.run_bzr(['grep', '--include', '*.aa',
1136 '--include', '*.bb', 'l.n.1'])
1137- self.assertContainsRe(out, b"^dir0/file0.aa:line1$", flags=TestGrep._reflags)
1138- self.assertContainsRe(out, b"^dir1/file1.bb:line1$", flags=TestGrep._reflags)
1139- self.assertContainsRe(out, b"^dir0/file0.aa:line10$", flags=TestGrep._reflags)
1140- self.assertContainsRe(out, b"^dir1/file1.bb:line10$", flags=TestGrep._reflags)
1141- self.assertNotContainsRe(out, b"file1.cc", flags=TestGrep._reflags)
1142+ self.assertContainsRe(out, "^dir0/file0.aa:line1$", flags=TestGrep._reflags)
1143+ self.assertContainsRe(out, "^dir1/file1.bb:line1$", flags=TestGrep._reflags)
1144+ self.assertContainsRe(out, "^dir0/file0.aa:line10$", flags=TestGrep._reflags)
1145+ self.assertContainsRe(out, "^dir1/file1.bb:line10$", flags=TestGrep._reflags)
1146+ self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
1147 # finds line1 and line10
1148 self.assertEqual(len(out.splitlines()), 4)
1149
1150 out, err = self.run_bzr(['grep', '--include', '*.aa',
1151 '--include', '*.bb', 'line1'])
1152- self.assertContainsRe(out, b"^dir0/file0.aa:line1$", flags=TestGrep._reflags)
1153- self.assertContainsRe(out, b"^dir1/file1.bb:line1$", flags=TestGrep._reflags)
1154- self.assertContainsRe(out, b"^dir0/file0.aa:line10$", flags=TestGrep._reflags)
1155- self.assertContainsRe(out, b"^dir1/file1.bb:line10$", flags=TestGrep._reflags)
1156- self.assertNotContainsRe(out, b"file1.cc", flags=TestGrep._reflags)
1157+ self.assertContainsRe(out, "^dir0/file0.aa:line1$", flags=TestGrep._reflags)
1158+ self.assertContainsRe(out, "^dir1/file1.bb:line1$", flags=TestGrep._reflags)
1159+ self.assertContainsRe(out, "^dir0/file0.aa:line10$", flags=TestGrep._reflags)
1160+ self.assertContainsRe(out, "^dir1/file1.bb:line10$", flags=TestGrep._reflags)
1161+ self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
1162 # finds line1 and line10
1163 self.assertEqual(len(out.splitlines()), 4)
1164
1165@@ -723,15 +723,15 @@
1166
1167 out, err = self.run_bzr(['grep', '-r', 'last:1',
1168 '--exclude', '*.cc', 'l..e1'])
1169- self.assertContainsRe(out, b"^dir0/file0.aa~.:line1", flags=TestGrep._reflags)
1170- self.assertContainsRe(out, b"^dir1/file1.bb~.:line1", flags=TestGrep._reflags)
1171- self.assertNotContainsRe(out, b"file1.cc", flags=TestGrep._reflags)
1172+ self.assertContainsRe(out, "^dir0/file0.aa~.:line1", flags=TestGrep._reflags)
1173+ self.assertContainsRe(out, "^dir1/file1.bb~.:line1", flags=TestGrep._reflags)
1174+ self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
1175
1176 out, err = self.run_bzr(['grep', '-r', 'last:1',
1177 '--exclude', '*.cc', 'line1'])
1178- self.assertContainsRe(out, b"^dir0/file0.aa~.:line1", flags=TestGrep._reflags)
1179- self.assertContainsRe(out, b"^dir1/file1.bb~.:line1", flags=TestGrep._reflags)
1180- self.assertNotContainsRe(out, b"file1.cc", flags=TestGrep._reflags)
1181+ self.assertContainsRe(out, "^dir0/file0.aa~.:line1", flags=TestGrep._reflags)
1182+ self.assertContainsRe(out, "^dir1/file1.bb~.:line1", flags=TestGrep._reflags)
1183+ self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
1184
1185 def test_wtree_exclude_from_outside_dir(self):
1186 """(wtree) Ensure --exclude is respected during recursive search.
1187@@ -750,14 +750,14 @@
1188 self._mk_versioned_file('dir2/file2.cc')
1189
1190 out, err = self.run_bzr(['grep', '--exclude', '*.cc', 'l[hijk]ne1'])
1191- self.assertContainsRe(out, b"^dir0/file0.aa:line1", flags=TestGrep._reflags)
1192- self.assertContainsRe(out, b"^dir1/file1.bb:line1", flags=TestGrep._reflags)
1193- self.assertNotContainsRe(out, b"file1.cc", flags=TestGrep._reflags)
1194+ self.assertContainsRe(out, "^dir0/file0.aa:line1", flags=TestGrep._reflags)
1195+ self.assertContainsRe(out, "^dir1/file1.bb:line1", flags=TestGrep._reflags)
1196+ self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
1197
1198 out, err = self.run_bzr(['grep', '--exclude', '*.cc', 'line1'])
1199- self.assertContainsRe(out, b"^dir0/file0.aa:line1", flags=TestGrep._reflags)
1200- self.assertContainsRe(out, b"^dir1/file1.bb:line1", flags=TestGrep._reflags)
1201- self.assertNotContainsRe(out, b"file1.cc", flags=TestGrep._reflags)
1202+ self.assertContainsRe(out, "^dir0/file0.aa:line1", flags=TestGrep._reflags)
1203+ self.assertContainsRe(out, "^dir1/file1.bb:line1", flags=TestGrep._reflags)
1204+ self.assertNotContainsRe(out, "file1.cc", flags=TestGrep._reflags)
1205
1206 def test_workingtree_files_from_outside_dir(self):
1207 """(wtree) Grep for pattern with dirs passed as argument.
1208@@ -773,12 +773,12 @@
1209 self._mk_versioned_file('dir1/file1.txt')
1210
1211 out, err = self.run_bzr(['grep', 'l[aeiou]ne1', 'dir0', 'dir1'])
1212- self.assertContainsRe(out, b"^dir0/file0.txt:line1", flags=TestGrep._reflags)
1213- self.assertContainsRe(out, b"^dir1/file1.txt:line1", flags=TestGrep._reflags)
1214+ self.assertContainsRe(out, "^dir0/file0.txt:line1", flags=TestGrep._reflags)
1215+ self.assertContainsRe(out, "^dir1/file1.txt:line1", flags=TestGrep._reflags)
1216
1217 out, err = self.run_bzr(['grep', 'line1', 'dir0', 'dir1'])
1218- self.assertContainsRe(out, b"^dir0/file0.txt:line1", flags=TestGrep._reflags)
1219- self.assertContainsRe(out, b"^dir1/file1.txt:line1", flags=TestGrep._reflags)
1220+ self.assertContainsRe(out, "^dir0/file0.txt:line1", flags=TestGrep._reflags)
1221+ self.assertContainsRe(out, "^dir1/file1.txt:line1", flags=TestGrep._reflags)
1222
1223 def test_versioned_files_from_outside_dir(self):
1224 """(versioned) Grep for pattern with dirs passed as argument.
1225@@ -794,12 +794,12 @@
1226 self._mk_versioned_file('dir1/file1.txt')
1227
1228 out, err = self.run_bzr(['grep', '-r', 'last:1', '.ine1', 'dir0', 'dir1'])
1229- self.assertContainsRe(out, b"^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
1230- self.assertContainsRe(out, b"^dir1/file1.txt~.:line1", flags=TestGrep._reflags)
1231+ self.assertContainsRe(out, "^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
1232+ self.assertContainsRe(out, "^dir1/file1.txt~.:line1", flags=TestGrep._reflags)
1233
1234 out, err = self.run_bzr(['grep', '-r', 'last:1', 'line1', 'dir0', 'dir1'])
1235- self.assertContainsRe(out, b"^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
1236- self.assertContainsRe(out, b"^dir1/file1.txt~.:line1", flags=TestGrep._reflags)
1237+ self.assertContainsRe(out, "^dir0/file0.txt~.:line1", flags=TestGrep._reflags)
1238+ self.assertContainsRe(out, "^dir1/file1.txt~.:line1", flags=TestGrep._reflags)
1239
1240 def test_wtree_files_from_outside_dir(self):
1241 """(wtree) Grep for pattern with dirs passed as argument.
1242@@ -815,12 +815,12 @@
1243 self._mk_versioned_file('dir1/file1.txt')
1244
1245 out, err = self.run_bzr(['grep', 'li.e1', 'dir0', 'dir1'])
1246- self.assertContainsRe(out, b"^dir0/file0.txt:line1", flags=TestGrep._reflags)
1247- self.assertContainsRe(out, b"^dir1/file1.txt:line1", flags=TestGrep._reflags)
1248+ self.assertContainsRe(out, "^dir0/file0.txt:line1", flags=TestGrep._reflags)
1249+ self.assertContainsRe(out, "^dir1/file1.txt:line1", flags=TestGrep._reflags)
1250
1251 out, err = self.run_bzr(['grep', 'line1', 'dir0', 'dir1'])
1252- self.assertContainsRe(out, b"^dir0/file0.txt:line1", flags=TestGrep._reflags)
1253- self.assertContainsRe(out, b"^dir1/file1.txt:line1", flags=TestGrep._reflags)
1254+ self.assertContainsRe(out, "^dir0/file0.txt:line1", flags=TestGrep._reflags)
1255+ self.assertContainsRe(out, "^dir1/file1.txt:line1", flags=TestGrep._reflags)
1256
1257 def test_versioned_files_from_outside_two_dirs(self):
1258 """(versioned) Grep for pattern with two levels of nested dir.
1259@@ -839,16 +839,16 @@
1260 self._mk_versioned_file('dir0/dir00/file0.txt')
1261
1262 out, err = self.run_bzr(['grep', '-r', 'last:1', 'l.ne1', 'dir0/dir00'])
1263- self.assertContainsRe(out, b"^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
1264+ self.assertContainsRe(out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
1265
1266 out, err = self.run_bzr(['grep', '-r', 'last:1', 'l.ne1'])
1267- self.assertContainsRe(out, b"^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
1268+ self.assertContainsRe(out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
1269
1270 out, err = self.run_bzr(['grep', '-r', 'last:1', 'line1', 'dir0/dir00'])
1271- self.assertContainsRe(out, b"^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
1272+ self.assertContainsRe(out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
1273
1274 out, err = self.run_bzr(['grep', '-r', 'last:1', 'line1'])
1275- self.assertContainsRe(out, b"^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
1276+ self.assertContainsRe(out, "^dir0/dir00/file0.txt~.:line1", flags=TestGrep._reflags)
1277
1278 def test_wtree_files_from_outside_two_dirs(self):
1279 """(wtree) Grep for pattern with two levels of nested dir.
1280@@ -867,16 +867,16 @@
1281 self._mk_versioned_file('dir0/dir00/file0.txt')
1282
1283 out, err = self.run_bzr(['grep', 'lin.1', 'dir0/dir00'])
1284- self.assertContainsRe(out, b"^dir0/dir00/file0.txt:line1", flags=TestGrep._reflags)
1285+ self.assertContainsRe(out, "^dir0/dir00/file0.txt:line1", flags=TestGrep._reflags)
1286
1287 out, err = self.run_bzr(['grep', 'li.e1'])
1288- self.assertContainsRe(out, b"^dir0/dir00/file0.txt:line1", flags=TestGrep._reflags)
1289+ self.assertContainsRe(out, "^dir0/dir00/file0.txt:line1", flags=TestGrep._reflags)
1290
1291 out, err = self.run_bzr(['grep', 'line1', 'dir0/dir00'])
1292- self.assertContainsRe(out, b"^dir0/dir00/file0.txt:line1", flags=TestGrep._reflags)
1293+ self.assertContainsRe(out, "^dir0/dir00/file0.txt:line1", flags=TestGrep._reflags)
1294
1295 out, err = self.run_bzr(['grep', 'line1'])
1296- self.assertContainsRe(out, b"^dir0/dir00/file0.txt:line1", flags=TestGrep._reflags)
1297+ self.assertContainsRe(out, "^dir0/dir00/file0.txt:line1", flags=TestGrep._reflags)
1298
1299 def test_versioned_file_within_dir_two_levels(self):
1300 """(versioned) Search for pattern while in nested dir (two levels).
1301@@ -890,22 +890,22 @@
1302 os.chdir('dir0')
1303
1304 out, err = self.run_bzr(['grep', '-r', 'last:1', '.ine1'])
1305- self.assertContainsRe(out, b"^dir1/file0.txt~.:line1", flags=TestGrep._reflags)
1306+ self.assertContainsRe(out, "^dir1/file0.txt~.:line1", flags=TestGrep._reflags)
1307
1308 out, err = self.run_bzr(['grep', '-r', 'last:1', '--from-root', 'l.ne1'])
1309- self.assertContainsRe(out, b"^dir0/dir1/file0.txt~.:line1", flags=TestGrep._reflags)
1310+ self.assertContainsRe(out, "^dir0/dir1/file0.txt~.:line1", flags=TestGrep._reflags)
1311
1312 out, err = self.run_bzr(['grep', '-r', 'last:1', '--no-recursive', 'line1'])
1313- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
1314+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1315
1316 out, err = self.run_bzr(['grep', '-r', 'last:1', 'lin.1'])
1317- self.assertContainsRe(out, b"^dir1/file0.txt~.:line1", flags=TestGrep._reflags)
1318+ self.assertContainsRe(out, "^dir1/file0.txt~.:line1", flags=TestGrep._reflags)
1319
1320 out, err = self.run_bzr(['grep', '-r', 'last:1', '--from-root', 'line1'])
1321- self.assertContainsRe(out, b"^dir0/dir1/file0.txt~.:line1", flags=TestGrep._reflags)
1322+ self.assertContainsRe(out, "^dir0/dir1/file0.txt~.:line1", flags=TestGrep._reflags)
1323
1324 out, err = self.run_bzr(['grep', '-r', 'last:1', '--no-recursive', 'line1'])
1325- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
1326+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1327 self.assertEqual(len(out.splitlines()), 0)
1328
1329 def test_wtree_file_within_dir_two_levels(self):
1330@@ -920,22 +920,22 @@
1331 os.chdir('dir0')
1332
1333 out, err = self.run_bzr(['grep', 'l[hij]ne1'])
1334- self.assertContainsRe(out, b"^dir1/file0.txt:line1", flags=TestGrep._reflags)
1335+ self.assertContainsRe(out, "^dir1/file0.txt:line1", flags=TestGrep._reflags)
1336
1337 out, err = self.run_bzr(['grep', '--from-root', 'l.ne1'])
1338- self.assertContainsRe(out, b"^dir0/dir1/file0.txt:line1", flags=TestGrep._reflags)
1339+ self.assertContainsRe(out, "^dir0/dir1/file0.txt:line1", flags=TestGrep._reflags)
1340
1341 out, err = self.run_bzr(['grep', '--no-recursive', 'lin.1'])
1342- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
1343+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1344
1345 out, err = self.run_bzr(['grep', 'line1'])
1346- self.assertContainsRe(out, b"^dir1/file0.txt:line1", flags=TestGrep._reflags)
1347+ self.assertContainsRe(out, "^dir1/file0.txt:line1", flags=TestGrep._reflags)
1348
1349 out, err = self.run_bzr(['grep', '--from-root', 'line1'])
1350- self.assertContainsRe(out, b"^dir0/dir1/file0.txt:line1", flags=TestGrep._reflags)
1351+ self.assertContainsRe(out, "^dir0/dir1/file0.txt:line1", flags=TestGrep._reflags)
1352
1353 out, err = self.run_bzr(['grep', '--no-recursive', 'line1'])
1354- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
1355+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1356
1357 def test_versioned_ignore_case_no_match(self):
1358 """(versioned) Match fails without --ignore-case.
1359@@ -946,10 +946,10 @@
1360 self._mk_versioned_file('file0.txt')
1361
1362 out, err = self.run_bzr(['grep', '-r', 'last:1', 'LinE1', 'file0.txt'])
1363- self.assertNotContainsRe(out, b"file0.txt~.:line1", flags=TestGrep._reflags)
1364+ self.assertNotContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
1365
1366 out, err = self.run_bzr(['grep', '-r', 'last:1', 'Li.E1', 'file0.txt'])
1367- self.assertNotContainsRe(out, b"file0.txt~.:line1", flags=TestGrep._reflags)
1368+ self.assertNotContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
1369
1370 def test_wtree_ignore_case_no_match(self):
1371 """(wtree) Match fails without --ignore-case.
1372@@ -960,10 +960,10 @@
1373 self._mk_versioned_file('file0.txt')
1374
1375 out, err = self.run_bzr(['grep', 'LinE1', 'file0.txt'])
1376- self.assertNotContainsRe(out, b"file0.txt:line1", flags=TestGrep._reflags)
1377+ self.assertNotContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
1378
1379 out, err = self.run_bzr(['grep', '.inE1', 'file0.txt'])
1380- self.assertNotContainsRe(out, b"file0.txt:line1", flags=TestGrep._reflags)
1381+ self.assertNotContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
1382
1383 def test_versioned_ignore_case_match(self):
1384 """(versioned) Match fails without --ignore-case.
1385@@ -975,15 +975,15 @@
1386
1387 out, err = self.run_bzr(['grep', '-r', 'last:1',
1388 '-i', 'Li.E1', 'file0.txt'])
1389- self.assertContainsRe(out, b"file0.txt~.:line1", flags=TestGrep._reflags)
1390+ self.assertContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
1391
1392 out, err = self.run_bzr(['grep', '-r', 'last:1',
1393 '-i', 'LinE1', 'file0.txt'])
1394- self.assertContainsRe(out, b"file0.txt~.:line1", flags=TestGrep._reflags)
1395+ self.assertContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
1396
1397 out, err = self.run_bzr(['grep', '-r', 'last:1',
1398 '--ignore-case', 'LinE1', 'file0.txt'])
1399- self.assertContainsRe(out, b"^file0.txt~.:line1", flags=TestGrep._reflags)
1400+ self.assertContainsRe(out, "^file0.txt~.:line1", flags=TestGrep._reflags)
1401
1402 def test_wtree_ignore_case_match(self):
1403 """(wtree) Match fails without --ignore-case.
1404@@ -994,13 +994,13 @@
1405 self._mk_versioned_file('file0.txt')
1406
1407 out, err = self.run_bzr(['grep', '-i', 'LinE1', 'file0.txt'])
1408- self.assertContainsRe(out, b"file0.txt:line1", flags=TestGrep._reflags)
1409+ self.assertContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
1410
1411 out, err = self.run_bzr(['grep', '--ignore-case', 'LinE1', 'file0.txt'])
1412- self.assertContainsRe(out, b"^file0.txt:line1", flags=TestGrep._reflags)
1413+ self.assertContainsRe(out, "^file0.txt:line1", flags=TestGrep._reflags)
1414
1415 out, err = self.run_bzr(['grep', '--ignore-case', 'Li.E1', 'file0.txt'])
1416- self.assertContainsRe(out, b"^file0.txt:line1", flags=TestGrep._reflags)
1417+ self.assertContainsRe(out, "^file0.txt:line1", flags=TestGrep._reflags)
1418
1419 def test_versioned_from_root_fail(self):
1420 """(versioned) Match should fail without --from-root.
1421@@ -1013,10 +1013,10 @@
1422 os.chdir('dir0')
1423
1424 out, err = self.run_bzr(['grep', '-r', 'last:1', 'li.e1'])
1425- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
1426+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1427
1428 out, err = self.run_bzr(['grep', '-r', 'last:1', 'line1'])
1429- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
1430+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1431
1432 def test_wtree_from_root_fail(self):
1433 """(wtree) Match should fail without --from-root.
1434@@ -1029,10 +1029,10 @@
1435 os.chdir('dir0')
1436
1437 out, err = self.run_bzr(['grep', 'line1'])
1438- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
1439+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1440
1441 out, err = self.run_bzr(['grep', 'li.e1'])
1442- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
1443+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1444
1445 def test_versioned_from_root_pass(self):
1446 """(versioned) Match pass with --from-root.
1447@@ -1046,11 +1046,11 @@
1448
1449 out, err = self.run_bzr(['grep', '-r', 'last:1',
1450 '--from-root', 'l.ne1'])
1451- self.assertContainsRe(out, b"file0.txt~.:line1", flags=TestGrep._reflags)
1452+ self.assertContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
1453
1454 out, err = self.run_bzr(['grep', '-r', 'last:1',
1455 '--from-root', 'line1'])
1456- self.assertContainsRe(out, b"file0.txt~.:line1", flags=TestGrep._reflags)
1457+ self.assertContainsRe(out, "file0.txt~.:line1", flags=TestGrep._reflags)
1458
1459 def test_wtree_from_root_pass(self):
1460 """(wtree) Match pass with --from-root.
1461@@ -1063,10 +1063,10 @@
1462 os.chdir('dir0')
1463
1464 out, err = self.run_bzr(['grep', '--from-root', 'lin.1'])
1465- self.assertContainsRe(out, b"file0.txt:line1", flags=TestGrep._reflags)
1466+ self.assertContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
1467
1468 out, err = self.run_bzr(['grep', '--from-root', 'line1'])
1469- self.assertContainsRe(out, b"file0.txt:line1", flags=TestGrep._reflags)
1470+ self.assertContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
1471
1472 def test_versioned_with_line_number(self):
1473 """(versioned) Search for pattern with --line-number.
1474@@ -1078,18 +1078,18 @@
1475
1476 out, err = self.run_bzr(['grep', '-r', 'last:1',
1477 '--line-number', 'li.e3', 'file0.txt'])
1478- self.assertContainsRe(out, b"file0.txt~.:3:line3", flags=TestGrep._reflags)
1479+ self.assertContainsRe(out, "file0.txt~.:3:line3", flags=TestGrep._reflags)
1480
1481 out, err = self.run_bzr(['grep', '-r', 'last:1',
1482 '--line-number', 'line3', 'file0.txt'])
1483- self.assertContainsRe(out, b"file0.txt~.:3:line3", flags=TestGrep._reflags)
1484+ self.assertContainsRe(out, "file0.txt~.:3:line3", flags=TestGrep._reflags)
1485
1486 out, err = self.run_bzr(['grep', '-r', 'last:1',
1487 '-n', 'line1', 'file0.txt'])
1488- self.assertContainsRe(out, b"file0.txt~.:1:line1", flags=TestGrep._reflags)
1489+ self.assertContainsRe(out, "file0.txt~.:1:line1", flags=TestGrep._reflags)
1490
1491 out, err = self.run_bzr(['grep', '-n', 'line[0-9]', 'file0.txt'])
1492- self.assertContainsRe(out, b"file0.txt:3:line3", flags=TestGrep._reflags)
1493+ self.assertContainsRe(out, "file0.txt:3:line3", flags=TestGrep._reflags)
1494
1495 def test_wtree_with_line_number(self):
1496 """(wtree) Search for pattern with --line-number.
1497@@ -1100,16 +1100,16 @@
1498 self._mk_versioned_file('file0.txt')
1499
1500 out, err = self.run_bzr(['grep', '--line-number', 'line3', 'file0.txt'])
1501- self.assertContainsRe(out, b"file0.txt:3:line3", flags=TestGrep._reflags)
1502+ self.assertContainsRe(out, "file0.txt:3:line3", flags=TestGrep._reflags)
1503
1504 out, err = self.run_bzr(['grep', '-n', 'line1', 'file0.txt'])
1505- self.assertContainsRe(out, b"file0.txt:1:line1", flags=TestGrep._reflags)
1506+ self.assertContainsRe(out, "file0.txt:1:line1", flags=TestGrep._reflags)
1507
1508 out, err = self.run_bzr(['grep', '-n', '[hjkl]ine1', 'file0.txt'])
1509- self.assertContainsRe(out, b"file0.txt:1:line1", flags=TestGrep._reflags)
1510+ self.assertContainsRe(out, "file0.txt:1:line1", flags=TestGrep._reflags)
1511
1512 out, err = self.run_bzr(['grep', '-n', 'line[0-9]', 'file0.txt'])
1513- self.assertContainsRe(out, b"file0.txt:3:line3", flags=TestGrep._reflags)
1514+ self.assertContainsRe(out, "file0.txt:3:line3", flags=TestGrep._reflags)
1515
1516 def test_revno_basic_history_grep_file(self):
1517 """Search for pattern in specific revision number in a file.
1518@@ -1125,27 +1125,27 @@
1519
1520 # rev 2 should not have text 'v3'
1521 out, err = self.run_bzr(['grep', '-r', '2', 'v3', fname])
1522- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
1523+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1524
1525 # rev 3 should not have text 'v3'
1526 out, err = self.run_bzr(['grep', '-r', '3', 'v3', fname])
1527- self.assertContainsRe(out, b"file0.txt~3:v3.*", flags=TestGrep._reflags)
1528+ self.assertContainsRe(out, "file0.txt~3:v3.*", flags=TestGrep._reflags)
1529
1530 # rev 3 should not have text 'v3' with line number
1531 out, err = self.run_bzr(['grep', '-r', '3', '-n', 'v3', fname])
1532- self.assertContainsRe(out, b"file0.txt~3:2:v3.*", flags=TestGrep._reflags)
1533+ self.assertContainsRe(out, "file0.txt~3:2:v3.*", flags=TestGrep._reflags)
1534
1535 # rev 2 should not have text 'v3'
1536 out, err = self.run_bzr(['grep', '-r', '2', '[tuv]3', fname])
1537- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
1538+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1539
1540 # rev 3 should not have text 'v3'
1541 out, err = self.run_bzr(['grep', '-r', '3', '[tuv]3', fname])
1542- self.assertContainsRe(out, b"file0.txt~3:v3.*", flags=TestGrep._reflags)
1543+ self.assertContainsRe(out, "file0.txt~3:v3.*", flags=TestGrep._reflags)
1544
1545 # rev 3 should not have text 'v3' with line number
1546 out, err = self.run_bzr(['grep', '-r', '3', '-n', '[tuv]3', fname])
1547- self.assertContainsRe(out, b"file0.txt~3:2:v3.*", flags=TestGrep._reflags)
1548+ self.assertContainsRe(out, "file0.txt~3:2:v3.*", flags=TestGrep._reflags)
1549
1550 def test_revno_basic_history_grep_full(self):
1551 """Search for pattern in specific revision number in a file.
1552@@ -1162,27 +1162,27 @@
1553
1554 # rev 2 should not have text 'v3'
1555 out, err = self.run_bzr(['grep', '-r', '2', 'v3'])
1556- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
1557+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1558
1559 # rev 3 should not have text 'v3'
1560 out, err = self.run_bzr(['grep', '-r', '3', 'v3'])
1561- self.assertContainsRe(out, b"file0.txt~3:v3", flags=TestGrep._reflags)
1562+ self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1563
1564 # rev 3 should not have text 'v3' with line number
1565 out, err = self.run_bzr(['grep', '-r', '3', '-n', 'v3'])
1566- self.assertContainsRe(out, b"file0.txt~3:1:v3", flags=TestGrep._reflags)
1567+ self.assertContainsRe(out, "file0.txt~3:1:v3", flags=TestGrep._reflags)
1568
1569 # rev 2 should not have text 'v3'
1570 out, err = self.run_bzr(['grep', '-r', '2', '[tuv]3'])
1571- self.assertNotContainsRe(out, b"file0.txt", flags=TestGrep._reflags)
1572+ self.assertNotContainsRe(out, "file0.txt", flags=TestGrep._reflags)
1573
1574 # rev 3 should not have text 'v3'
1575 out, err = self.run_bzr(['grep', '-r', '3', '[tuv]3'])
1576- self.assertContainsRe(out, b"file0.txt~3:v3", flags=TestGrep._reflags)
1577+ self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1578
1579 # rev 3 should not have text 'v3' with line number
1580 out, err = self.run_bzr(['grep', '-r', '3', '-n', '[tuv]3'])
1581- self.assertContainsRe(out, b"file0.txt~3:1:v3", flags=TestGrep._reflags)
1582+ self.assertContainsRe(out, "file0.txt~3:1:v3", flags=TestGrep._reflags)
1583
1584 def test_revno_versioned_file_in_dir(self):
1585 """Grep specific version of file withing dir.
1586@@ -1198,19 +1198,19 @@
1587
1588 # v4 should not be present in revno 3
1589 out, err = self.run_bzr(['grep', '-r', 'last:3', 'v4'])
1590- self.assertNotContainsRe(out, b"^dir0/file0.txt", flags=TestGrep._reflags)
1591+ self.assertNotContainsRe(out, "^dir0/file0.txt", flags=TestGrep._reflags)
1592
1593 # v4 should be present in revno 4
1594 out, err = self.run_bzr(['grep', '-r', 'last:2', 'v4'])
1595- self.assertContainsRe(out, b"^dir0/file0.txt~4:v4", flags=TestGrep._reflags)
1596+ self.assertContainsRe(out, "^dir0/file0.txt~4:v4", flags=TestGrep._reflags)
1597
1598 # v4 should not be present in revno 3
1599 out, err = self.run_bzr(['grep', '-r', 'last:3', '[tuv]4'])
1600- self.assertNotContainsRe(out, b"^dir0/file0.txt", flags=TestGrep._reflags)
1601+ self.assertNotContainsRe(out, "^dir0/file0.txt", flags=TestGrep._reflags)
1602
1603 # v4 should be present in revno 4
1604 out, err = self.run_bzr(['grep', '-r', 'last:2', '[tuv]4'])
1605- self.assertContainsRe(out, b"^dir0/file0.txt~4:v4", flags=TestGrep._reflags)
1606+ self.assertContainsRe(out, "^dir0/file0.txt~4:v4", flags=TestGrep._reflags)
1607
1608 def test_revno_range_basic_history_grep(self):
1609 """Search for pattern in revision range for file.
1610@@ -1227,10 +1227,10 @@
1611 self._update_file(fname, text="v6 text\n") # rev6
1612
1613 out, err = self.run_bzr(['grep', '-r', '1..', 'v3'])
1614- self.assertContainsRe(out, b"file0.txt~3:v3", flags=TestGrep._reflags)
1615- self.assertContainsRe(out, b"file0.txt~4:v3", flags=TestGrep._reflags)
1616- self.assertContainsRe(out, b"file0.txt~5:v3", flags=TestGrep._reflags)
1617- self.assertContainsRe(out, b"file0.txt~6:v3", flags=TestGrep._reflags)
1618+ self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1619+ self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1620+ self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
1621+ self.assertContainsRe(out, "file0.txt~6:v3", flags=TestGrep._reflags)
1622 self.assertEqual(len(out.splitlines()), 4)
1623
1624 out, err = self.run_bzr(['grep', '-r', '..1', 'v3'])
1625@@ -1238,51 +1238,51 @@
1626 self.assertEqual(len(out.splitlines()), 0)
1627
1628 out, err = self.run_bzr(['grep', '-r', '..6', 'v3'])
1629- self.assertContainsRe(out, b"file0.txt~3:v3", flags=TestGrep._reflags)
1630- self.assertContainsRe(out, b"file0.txt~4:v3", flags=TestGrep._reflags)
1631- self.assertContainsRe(out, b"file0.txt~5:v3", flags=TestGrep._reflags)
1632- self.assertContainsRe(out, b"file0.txt~6:v3", flags=TestGrep._reflags)
1633+ self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1634+ self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1635+ self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
1636+ self.assertContainsRe(out, "file0.txt~6:v3", flags=TestGrep._reflags)
1637 self.assertEqual(len(out.splitlines()), 4)
1638
1639 out, err = self.run_bzr(['grep', '-r', '..', 'v3'])
1640- self.assertContainsRe(out, b"file0.txt~3:v3", flags=TestGrep._reflags)
1641- self.assertContainsRe(out, b"file0.txt~4:v3", flags=TestGrep._reflags)
1642- self.assertContainsRe(out, b"file0.txt~5:v3", flags=TestGrep._reflags)
1643- self.assertContainsRe(out, b"file0.txt~6:v3", flags=TestGrep._reflags)
1644+ self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1645+ self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1646+ self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
1647+ self.assertContainsRe(out, "file0.txt~6:v3", flags=TestGrep._reflags)
1648 self.assertEqual(len(out.splitlines()), 4)
1649
1650 out, err = self.run_bzr(['grep', '-r', '1..5', 'v3'])
1651- self.assertContainsRe(out, b"file0.txt~3:v3", flags=TestGrep._reflags)
1652- self.assertContainsRe(out, b"file0.txt~4:v3", flags=TestGrep._reflags)
1653- self.assertContainsRe(out, b"file0.txt~5:v3", flags=TestGrep._reflags)
1654+ self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1655+ self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1656+ self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
1657 self.assertNotContainsRe(out, "file0.txt~6:v3", flags=TestGrep._reflags)
1658 self.assertEqual(len(out.splitlines()), 3)
1659
1660 out, err = self.run_bzr(['grep', '-r', '5..1', 'v3'])
1661- self.assertContainsRe(out, b"file0.txt~3:v3", flags=TestGrep._reflags)
1662- self.assertContainsRe(out, b"file0.txt~4:v3", flags=TestGrep._reflags)
1663- self.assertContainsRe(out, b"file0.txt~5:v3", flags=TestGrep._reflags)
1664+ self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1665+ self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1666+ self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
1667 self.assertNotContainsRe(out, "file0.txt~6:v3", flags=TestGrep._reflags)
1668 self.assertEqual(len(out.splitlines()), 3)
1669
1670 out, err = self.run_bzr(['grep', '-r', '1..', '[tuv]3'])
1671- self.assertContainsRe(out, b"file0.txt~3:v3", flags=TestGrep._reflags)
1672- self.assertContainsRe(out, b"file0.txt~4:v3", flags=TestGrep._reflags)
1673- self.assertContainsRe(out, b"file0.txt~5:v3", flags=TestGrep._reflags)
1674- self.assertContainsRe(out, b"file0.txt~6:v3", flags=TestGrep._reflags)
1675+ self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1676+ self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1677+ self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
1678+ self.assertContainsRe(out, "file0.txt~6:v3", flags=TestGrep._reflags)
1679 self.assertEqual(len(out.splitlines()), 4)
1680
1681 out, err = self.run_bzr(['grep', '-r', '1..5', '[tuv]3'])
1682- self.assertContainsRe(out, b"file0.txt~3:v3", flags=TestGrep._reflags)
1683- self.assertContainsRe(out, b"file0.txt~4:v3", flags=TestGrep._reflags)
1684- self.assertContainsRe(out, b"file0.txt~5:v3", flags=TestGrep._reflags)
1685+ self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1686+ self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1687+ self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
1688 self.assertNotContainsRe(out, "file0.txt~6:v3", flags=TestGrep._reflags)
1689 self.assertEqual(len(out.splitlines()), 3)
1690
1691 out, err = self.run_bzr(['grep', '-r', '5..1', '[tuv]3'])
1692- self.assertContainsRe(out, b"file0.txt~3:v3", flags=TestGrep._reflags)
1693- self.assertContainsRe(out, b"file0.txt~4:v3", flags=TestGrep._reflags)
1694- self.assertContainsRe(out, b"file0.txt~5:v3", flags=TestGrep._reflags)
1695+ self.assertContainsRe(out, "file0.txt~3:v3", flags=TestGrep._reflags)
1696+ self.assertContainsRe(out, "file0.txt~4:v3", flags=TestGrep._reflags)
1697+ self.assertContainsRe(out, "file0.txt~5:v3", flags=TestGrep._reflags)
1698 self.assertNotContainsRe(out, "file0.txt~6:v3", flags=TestGrep._reflags)
1699 self.assertEqual(len(out.splitlines()), 3)
1700
1701@@ -1300,16 +1300,16 @@
1702 self._update_file('dir0/file0.txt', "v6 text\n") # rev6
1703
1704 out, err = self.run_bzr(['grep', '-r', '2..5', 'v3'])
1705- self.assertContainsRe(out, b"^dir0/file0.txt~3:v3", flags=TestGrep._reflags)
1706- self.assertContainsRe(out, b"^dir0/file0.txt~4:v3", flags=TestGrep._reflags)
1707- self.assertContainsRe(out, b"^dir0/file0.txt~5:v3", flags=TestGrep._reflags)
1708+ self.assertContainsRe(out, "^dir0/file0.txt~3:v3", flags=TestGrep._reflags)
1709+ self.assertContainsRe(out, "^dir0/file0.txt~4:v3", flags=TestGrep._reflags)
1710+ self.assertContainsRe(out, "^dir0/file0.txt~5:v3", flags=TestGrep._reflags)
1711 self.assertNotContainsRe(out, "^dir0/file0.txt~6:v3", flags=TestGrep._reflags)
1712 self.assertEqual(len(out.splitlines()), 3)
1713
1714 out, err = self.run_bzr(['grep', '-r', '2..5', '[tuv]3'])
1715- self.assertContainsRe(out, b"^dir0/file0.txt~3:v3", flags=TestGrep._reflags)
1716- self.assertContainsRe(out, b"^dir0/file0.txt~4:v3", flags=TestGrep._reflags)
1717- self.assertContainsRe(out, b"^dir0/file0.txt~5:v3", flags=TestGrep._reflags)
1718+ self.assertContainsRe(out, "^dir0/file0.txt~3:v3", flags=TestGrep._reflags)
1719+ self.assertContainsRe(out, "^dir0/file0.txt~4:v3", flags=TestGrep._reflags)
1720+ self.assertContainsRe(out, "^dir0/file0.txt~5:v3", flags=TestGrep._reflags)
1721 self.assertNotContainsRe(out, "^dir0/file0.txt~6:v3", flags=TestGrep._reflags)
1722 self.assertEqual(len(out.splitlines()), 3)
1723
1724@@ -1327,15 +1327,15 @@
1725 self._update_file('dir0/file0.txt', "v6 text\n") # rev6
1726
1727 out, err = self.run_bzr(['grep', '-r', '2..5', 'v3', 'dir0'])
1728- self.assertContainsRe(out, b"^dir0/file0.txt~3:v3", flags=TestGrep._reflags)
1729- self.assertContainsRe(out, b"^dir0/file0.txt~4:v3", flags=TestGrep._reflags)
1730- self.assertContainsRe(out, b"^dir0/file0.txt~5:v3", flags=TestGrep._reflags)
1731+ self.assertContainsRe(out, "^dir0/file0.txt~3:v3", flags=TestGrep._reflags)
1732+ self.assertContainsRe(out, "^dir0/file0.txt~4:v3", flags=TestGrep._reflags)
1733+ self.assertContainsRe(out, "^dir0/file0.txt~5:v3", flags=TestGrep._reflags)
1734 self.assertNotContainsRe(out, "^dir0/file0.txt~6:v3", flags=TestGrep._reflags)
1735
1736 out, err = self.run_bzr(['grep', '-r', '2..5', '[tuv]3', 'dir0'])
1737- self.assertContainsRe(out, b"^dir0/file0.txt~3:v3", flags=TestGrep._reflags)
1738- self.assertContainsRe(out, b"^dir0/file0.txt~4:v3", flags=TestGrep._reflags)
1739- self.assertContainsRe(out, b"^dir0/file0.txt~5:v3", flags=TestGrep._reflags)
1740+ self.assertContainsRe(out, "^dir0/file0.txt~3:v3", flags=TestGrep._reflags)
1741+ self.assertContainsRe(out, "^dir0/file0.txt~4:v3", flags=TestGrep._reflags)
1742+ self.assertContainsRe(out, "^dir0/file0.txt~5:v3", flags=TestGrep._reflags)
1743 self.assertNotContainsRe(out, "^dir0/file0.txt~6:v3", flags=TestGrep._reflags)
1744
1745 def test_levels(self):
1746@@ -1358,63 +1358,63 @@
1747 out, err = self.run_bzr(['ci', '-m', 'merged'])
1748
1749 out, err = self.run_bzr(['grep', 'line1'])
1750- self.assertContainsRe(out, b"file0.txt:line1", flags=TestGrep._reflags)
1751- self.assertContainsRe(out, b"file1.txt:line1", flags=TestGrep._reflags)
1752+ self.assertContainsRe(out, "file0.txt:line1", flags=TestGrep._reflags)
1753+ self.assertContainsRe(out, "file1.txt:line1", flags=TestGrep._reflags)
1754
1755 # levels should be ignored by wtree grep
1756 out, err = self.run_bzr(['grep', '--levels=0', 'line1'])
1757- self.assertContainsRe(out, b"^file0.txt:line1$", flags=TestGrep._reflags)
1758- self.assertContainsRe(out, b"^file1.txt:line1$", flags=TestGrep._reflags)
1759- self.assertContainsRe(out, b"^file0.txt:line10$", flags=TestGrep._reflags)
1760- self.assertContainsRe(out, b"^file1.txt:line10$", flags=TestGrep._reflags)
1761+ self.assertContainsRe(out, "^file0.txt:line1$", flags=TestGrep._reflags)
1762+ self.assertContainsRe(out, "^file1.txt:line1$", flags=TestGrep._reflags)
1763+ self.assertContainsRe(out, "^file0.txt:line10$", flags=TestGrep._reflags)
1764+ self.assertContainsRe(out, "^file1.txt:line10$", flags=TestGrep._reflags)
1765 self.assertEqual(len(out.splitlines()), 4)
1766
1767 out, err = self.run_bzr(['grep', '-r', 'last:1..', '--levels=0', 'line1'])
1768- self.assertContainsRe(out, b"^file0.txt~2:line1$", flags=TestGrep._reflags)
1769- self.assertContainsRe(out, b"^file1.txt~2:line1$", flags=TestGrep._reflags)
1770- self.assertContainsRe(out, b"^file0.txt~1.1.1:line1$", flags=TestGrep._reflags)
1771- self.assertContainsRe(out, b"^file1.txt~1.1.1:line1$", flags=TestGrep._reflags)
1772- self.assertContainsRe(out, b"^file0.txt~2:line10$", flags=TestGrep._reflags)
1773- self.assertContainsRe(out, b"^file1.txt~2:line10$", flags=TestGrep._reflags)
1774- self.assertContainsRe(out, b"^file0.txt~1.1.1:line10$", flags=TestGrep._reflags)
1775- self.assertContainsRe(out, b"^file1.txt~1.1.1:line10$", flags=TestGrep._reflags)
1776+ self.assertContainsRe(out, "^file0.txt~2:line1$", flags=TestGrep._reflags)
1777+ self.assertContainsRe(out, "^file1.txt~2:line1$", flags=TestGrep._reflags)
1778+ self.assertContainsRe(out, "^file0.txt~1.1.1:line1$", flags=TestGrep._reflags)
1779+ self.assertContainsRe(out, "^file1.txt~1.1.1:line1$", flags=TestGrep._reflags)
1780+ self.assertContainsRe(out, "^file0.txt~2:line10$", flags=TestGrep._reflags)
1781+ self.assertContainsRe(out, "^file1.txt~2:line10$", flags=TestGrep._reflags)
1782+ self.assertContainsRe(out, "^file0.txt~1.1.1:line10$", flags=TestGrep._reflags)
1783+ self.assertContainsRe(out, "^file1.txt~1.1.1:line10$", flags=TestGrep._reflags)
1784 self.assertEqual(len(out.splitlines()), 8)
1785
1786 out, err = self.run_bzr(['grep', '-r', '-1..', '-n', '--levels=0', 'line1'])
1787- self.assertContainsRe(out, b"^file0.txt~2:1:line1$", flags=TestGrep._reflags)
1788- self.assertContainsRe(out, b"^file1.txt~2:1:line1$", flags=TestGrep._reflags)
1789- self.assertContainsRe(out, b"^file0.txt~1.1.1:1:line1$", flags=TestGrep._reflags)
1790- self.assertContainsRe(out, b"^file1.txt~1.1.1:1:line1$", flags=TestGrep._reflags)
1791- self.assertContainsRe(out, b"^file0.txt~2:10:line10$", flags=TestGrep._reflags)
1792- self.assertContainsRe(out, b"^file1.txt~2:10:line10$", flags=TestGrep._reflags)
1793- self.assertContainsRe(out, b"^file0.txt~1.1.1:10:line10$", flags=TestGrep._reflags)
1794- self.assertContainsRe(out, b"^file1.txt~1.1.1:10:line10$", flags=TestGrep._reflags)
1795+ self.assertContainsRe(out, "^file0.txt~2:1:line1$", flags=TestGrep._reflags)
1796+ self.assertContainsRe(out, "^file1.txt~2:1:line1$", flags=TestGrep._reflags)
1797+ self.assertContainsRe(out, "^file0.txt~1.1.1:1:line1$", flags=TestGrep._reflags)
1798+ self.assertContainsRe(out, "^file1.txt~1.1.1:1:line1$", flags=TestGrep._reflags)
1799+ self.assertContainsRe(out, "^file0.txt~2:10:line10$", flags=TestGrep._reflags)
1800+ self.assertContainsRe(out, "^file1.txt~2:10:line10$", flags=TestGrep._reflags)
1801+ self.assertContainsRe(out, "^file0.txt~1.1.1:10:line10$", flags=TestGrep._reflags)
1802+ self.assertContainsRe(out, "^file1.txt~1.1.1:10:line10$", flags=TestGrep._reflags)
1803 self.assertEqual(len(out.splitlines()), 8)
1804
1805 # levels should be ignored by wtree grep
1806 out, err = self.run_bzr(['grep', '--levels=0', 'l.ne1'])
1807- self.assertContainsRe(out, b"^file0.txt:line1$", flags=TestGrep._reflags)
1808- self.assertContainsRe(out, b"^file1.txt:line1$", flags=TestGrep._reflags)
1809- self.assertContainsRe(out, b"^file0.txt:line10$", flags=TestGrep._reflags)
1810- self.assertContainsRe(out, b"^file1.txt:line10$", flags=TestGrep._reflags)
1811+ self.assertContainsRe(out, "^file0.txt:line1$", flags=TestGrep._reflags)
1812+ self.assertContainsRe(out, "^file1.txt:line1$", flags=TestGrep._reflags)
1813+ self.assertContainsRe(out, "^file0.txt:line10$", flags=TestGrep._reflags)
1814+ self.assertContainsRe(out, "^file1.txt:line10$", flags=TestGrep._reflags)
1815 self.assertEqual(len(out.splitlines()), 4)
1816
1817 out, err = self.run_bzr(['grep', '-r', 'last:1..', '--levels=0', 'lin.1'])
1818- self.assertContainsRe(out, b"^file0.txt~2:line1$", flags=TestGrep._reflags)
1819- self.assertContainsRe(out, b"^file1.txt~2:line1$", flags=TestGrep._reflags)
1820- self.assertContainsRe(out, b"^file0.txt~1.1.1:line1$", flags=TestGrep._reflags)
1821- self.assertContainsRe(out, b"^file1.txt~1.1.1:line1$", flags=TestGrep._reflags)
1822- self.assertContainsRe(out, b"^file0.txt~2:line10$", flags=TestGrep._reflags)
1823- self.assertContainsRe(out, b"^file1.txt~2:line10$", flags=TestGrep._reflags)
1824- self.assertContainsRe(out, b"^file0.txt~1.1.1:line10$", flags=TestGrep._reflags)
1825- self.assertContainsRe(out, b"^file1.txt~1.1.1:line10$", flags=TestGrep._reflags)
1826+ self.assertContainsRe(out, "^file0.txt~2:line1$", flags=TestGrep._reflags)
1827+ self.assertContainsRe(out, "^file1.txt~2:line1$", flags=TestGrep._reflags)
1828+ self.assertContainsRe(out, "^file0.txt~1.1.1:line1$", flags=TestGrep._reflags)
1829+ self.assertContainsRe(out, "^file1.txt~1.1.1:line1$", flags=TestGrep._reflags)
1830+ self.assertContainsRe(out, "^file0.txt~2:line10$", flags=TestGrep._reflags)
1831+ self.assertContainsRe(out, "^file1.txt~2:line10$", flags=TestGrep._reflags)
1832+ self.assertContainsRe(out, "^file0.txt~1.1.1:line10$", flags=TestGrep._reflags)
1833+ self.assertContainsRe(out, "^file1.txt~1.1.1:line10$", flags=TestGrep._reflags)
1834 self.assertEqual(len(out.splitlines()), 8)
1835
1836 out, err = self.run_bzr(['grep', '-r', '-1..', '-n', '--levels=0', '.ine1'])
1837- self.assertContainsRe(out, b"file0.txt~2:1:line1", flags=TestGrep._reflags)
1838- self.assertContainsRe(out, b"file1.txt~2:1:line1", flags=TestGrep._reflags)
1839- self.assertContainsRe(out, b"file0.txt~1.1.1:1:line1", flags=TestGrep._reflags)
1840- self.assertContainsRe(out, b"file1.txt~1.1.1:1:line1", flags=TestGrep._reflags)
1841+ self.assertContainsRe(out, "file0.txt~2:1:line1", flags=TestGrep._reflags)
1842+ self.assertContainsRe(out, "file1.txt~2:1:line1", flags=TestGrep._reflags)
1843+ self.assertContainsRe(out, "file0.txt~1.1.1:1:line1", flags=TestGrep._reflags)
1844+ self.assertContainsRe(out, "file1.txt~1.1.1:1:line1", flags=TestGrep._reflags)
1845
1846 def test_dotted_rev_grep(self):
1847 """Grep in dotted revs
1848@@ -1439,12 +1439,12 @@
1849 out, err = self.run_bzr(['ci', '-m', 'merged'])
1850
1851 out, err = self.run_bzr(['grep', '-r', '1.1.1..1.1.4', 'text'])
1852- self.assertContainsRe(out, b"file1.txt~1.1.2:text 0", flags=TestGrep._reflags)
1853- self.assertContainsRe(out, b"file1.txt~1.1.3:text 1", flags=TestGrep._reflags)
1854- self.assertContainsRe(out, b"file1.txt~1.1.3:text 1", flags=TestGrep._reflags)
1855- self.assertContainsRe(out, b"file1.txt~1.1.4:text 0", flags=TestGrep._reflags)
1856- self.assertContainsRe(out, b"file1.txt~1.1.4:text 1", flags=TestGrep._reflags)
1857- self.assertContainsRe(out, b"file1.txt~1.1.4:text 2", flags=TestGrep._reflags)
1858+ self.assertContainsRe(out, "file1.txt~1.1.2:text 0", flags=TestGrep._reflags)
1859+ self.assertContainsRe(out, "file1.txt~1.1.3:text 1", flags=TestGrep._reflags)
1860+ self.assertContainsRe(out, "file1.txt~1.1.3:text 1", flags=TestGrep._reflags)
1861+ self.assertContainsRe(out, "file1.txt~1.1.4:text 0", flags=TestGrep._reflags)
1862+ self.assertContainsRe(out, "file1.txt~1.1.4:text 1", flags=TestGrep._reflags)
1863+ self.assertContainsRe(out, "file1.txt~1.1.4:text 2", flags=TestGrep._reflags)
1864 self.assertEqual(len(out.splitlines()), 6)
1865
1866 def test_versioned_binary_file_grep(self):
1867@@ -1460,15 +1460,15 @@
1868 # note: set --verbose/-v flag to get the skip message.
1869 out, err = self.run_bzr(['grep', '-v', '-r', 'last:1',
1870 'lineNN', 'file0.bin'])
1871- self.assertNotContainsRe(out, b"file0.bin", flags=TestGrep._reflags)
1872- self.assertContainsRe(err, b"Binary file.*file0.bin.*skipped", flags=TestGrep._reflags)
1873+ self.assertNotContainsRe(out, "file0.bin", flags=TestGrep._reflags)
1874+ self.assertContainsRe(err, "Binary file.*file0.bin.*skipped", flags=TestGrep._reflags)
1875 self.assertEqual(len(out.splitlines()), 0)
1876 self.assertEqual(len(err.splitlines()), 1)
1877
1878 out, err = self.run_bzr(['grep', '-v', '-r', 'last:1',
1879 'line.N', 'file0.bin'])
1880- self.assertNotContainsRe(out, b"file0.bin", flags=TestGrep._reflags)
1881- self.assertContainsRe(err, b"Binary file.*file0.bin.*skipped", flags=TestGrep._reflags)
1882+ self.assertNotContainsRe(out, "file0.bin", flags=TestGrep._reflags)
1883+ self.assertContainsRe(err, "Binary file.*file0.bin.*skipped", flags=TestGrep._reflags)
1884 self.assertEqual(len(out.splitlines()), 0)
1885 self.assertEqual(len(err.splitlines()), 1)
1886
1887@@ -1483,13 +1483,13 @@
1888
1889 # note: set --verbose/-v flag to get the skip message.
1890 out, err = self.run_bzr(['grep', '-v', 'lineNN', 'file0.bin'])
1891- self.assertNotContainsRe(out, b"file0.bin:line1", flags=TestGrep._reflags)
1892- self.assertContainsRe(err, b"Binary file.*file0.bin.*skipped", flags=TestGrep._reflags)
1893+ self.assertNotContainsRe(out, "file0.bin:line1", flags=TestGrep._reflags)
1894+ self.assertContainsRe(err, "Binary file.*file0.bin.*skipped", flags=TestGrep._reflags)
1895
1896 # binary warning should not be shown without --verbose
1897 out, err = self.run_bzr(['grep', 'lineNN', 'file0.bin'])
1898- self.assertNotContainsRe(out, b"file0.bin:line1", flags=TestGrep._reflags)
1899- self.assertNotContainsRe(err, b"Binary file", flags=TestGrep._reflags)
1900+ self.assertNotContainsRe(out, "file0.bin:line1", flags=TestGrep._reflags)
1901+ self.assertNotContainsRe(err, "Binary file", flags=TestGrep._reflags)
1902
1903 def test_revspec(self):
1904 """Ensure various revspecs work
1905@@ -1508,7 +1508,7 @@
1906 self.assertEqual(len(out.splitlines()), 0)
1907
1908 out, err = self.run_bzr(['grep', '-r', 'revno:4..', 'v4'])
1909- self.assertContainsRe(out, b"^dir0/file0.txt", flags=TestGrep._reflags)
1910+ self.assertContainsRe(out, "^dir0/file0.txt", flags=TestGrep._reflags)
1911 self.assertEqual(len(out.splitlines()), 2) # find v4 in rev4 and rev5
1912
1913 out, err = self.run_bzr(['grep', '-r', '..revno:3', 'v4'])
1914@@ -1516,7 +1516,7 @@
1915 self.assertEqual(len(out.splitlines()), 0)
1916
1917 out, err = self.run_bzr(['grep', '-r', '..revno:3', 'v3'])
1918- self.assertContainsRe(out, b"^dir0/file0.txt", flags=TestGrep._reflags)
1919+ self.assertContainsRe(out, "^dir0/file0.txt", flags=TestGrep._reflags)
1920 self.assertEqual(len(out.splitlines()), 1)
1921
1922 def test_wtree_files_with_matches(self):
1923@@ -1538,65 +1538,65 @@
1924 # fixed-string
1925 out, err = self.run_bzr(['grep', '--files-with-matches', 'HELLO'])
1926
1927- self.assertContainsRe(out, b"^file0.txt$", flags=TestGrep._reflags)
1928- self.assertContainsRe(out, b"^dir0/file00.txt$", flags=TestGrep._reflags)
1929+ self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1930+ self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1931 self.assertEqual(len(out.splitlines()), 2)
1932
1933 # regex
1934 out, err = self.run_bzr(['grep', '--files-with-matches', 'HE.LO'])
1935
1936- self.assertContainsRe(out, b"^file0.txt$", flags=TestGrep._reflags)
1937- self.assertContainsRe(out, b"^dir0/file00.txt$", flags=TestGrep._reflags)
1938+ self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1939+ self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1940 self.assertEqual(len(out.splitlines()), 2)
1941
1942 # fixed-string
1943 out, err = self.run_bzr(['grep', '-l', 'HELLO'])
1944
1945- self.assertContainsRe(out, b"^file0.txt$", flags=TestGrep._reflags)
1946- self.assertContainsRe(out, b"^dir0/file00.txt$", flags=TestGrep._reflags)
1947+ self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1948+ self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1949 self.assertEqual(len(out.splitlines()), 2)
1950
1951 # regex
1952 out, err = self.run_bzr(['grep', '-l', 'HE.LO'])
1953
1954- self.assertContainsRe(out, b"^file0.txt$", flags=TestGrep._reflags)
1955- self.assertContainsRe(out, b"^dir0/file00.txt$", flags=TestGrep._reflags)
1956+ self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1957+ self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1958 self.assertEqual(len(out.splitlines()), 2)
1959
1960 # fixed-string
1961 out, err = self.run_bzr(['grep', '-l', 'HELLO', 'dir0', 'file1.txt'])
1962
1963- self.assertContainsRe(out, b"^dir0/file00.txt$", flags=TestGrep._reflags)
1964+ self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1965 self.assertEqual(len(out.splitlines()), 1)
1966
1967 # regex
1968 out, err = self.run_bzr(['grep', '-l', '.ELLO', 'dir0', 'file1.txt'])
1969
1970- self.assertContainsRe(out, b"^dir0/file00.txt$", flags=TestGrep._reflags)
1971+ self.assertContainsRe(out, "^dir0/file00.txt$", flags=TestGrep._reflags)
1972 self.assertEqual(len(out.splitlines()), 1)
1973
1974 # fixed-string
1975 out, err = self.run_bzr(['grep', '-l', 'HELLO', 'file0.txt'])
1976
1977- self.assertContainsRe(out, b"^file0.txt$", flags=TestGrep._reflags)
1978+ self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1979 self.assertEqual(len(out.splitlines()), 1)
1980
1981 # regex
1982 out, err = self.run_bzr(['grep', '-l', '.ELLO', 'file0.txt'])
1983
1984- self.assertContainsRe(out, b"^file0.txt$", flags=TestGrep._reflags)
1985+ self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1986 self.assertEqual(len(out.splitlines()), 1)
1987
1988 # fixed-string
1989 out, err = self.run_bzr(['grep', '--no-recursive', '-l', 'HELLO'])
1990
1991- self.assertContainsRe(out, b"^file0.txt$", flags=TestGrep._reflags)
1992+ self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
1993 self.assertEqual(len(out.splitlines()), 1)
1994
1995 # regex
1996 out, err = self.run_bzr(['grep', '--no-recursive', '-l', '.ELLO'])
1997
1998- self.assertContainsRe(out, b"^file0.txt$", flags=TestGrep._reflags)
1999+ self.assertContainsRe(out, "^file0.txt$", flags=TestGrep._reflags)
2000 self.assertEqual(len(out.splitlines()), 1)
2001
2002 def test_ver_files_with_matches(self):
2003@@ -1619,90 +1619,90 @@
2004 out, err = self.run_bzr(['grep', '-r', '-1', '--files-with-matches',
2005 'HELLO'])
2006
2007- self.assertContainsRe(out, b"^file0.txt~7$", flags=TestGrep._reflags)
2008- self.assertContainsRe(out, b"^dir0/file00.txt~7$", flags=TestGrep._reflags)
2009+ self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
2010+ self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
2011 self.assertEqual(len(out.splitlines()), 2)
2012
2013 # regex
2014 out, err = self.run_bzr(['grep', '-r', '-1', '--files-with-matches',
2015 'H.LLO'])
2016
2017- self.assertContainsRe(out, b"^file0.txt~7$", flags=TestGrep._reflags)
2018- self.assertContainsRe(out, b"^dir0/file00.txt~7$", flags=TestGrep._reflags)
2019+ self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
2020+ self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
2021 self.assertEqual(len(out.splitlines()), 2)
2022
2023 # fixed-string
2024 out, err = self.run_bzr(['grep', '-r', '6..7', '--files-with-matches',
2025 'HELLO'])
2026
2027- self.assertContainsRe(out, b"^file0.txt~6$", flags=TestGrep._reflags)
2028- self.assertContainsRe(out, b"^file0.txt~7$", flags=TestGrep._reflags)
2029- self.assertContainsRe(out, b"^dir0/file00.txt~7$", flags=TestGrep._reflags)
2030+ self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
2031+ self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
2032+ self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
2033 self.assertEqual(len(out.splitlines()), 3)
2034
2035 # regex
2036 out, err = self.run_bzr(['grep', '-r', '6..7', '--files-with-matches',
2037 'H.LLO'])
2038
2039- self.assertContainsRe(out, b"^file0.txt~6$", flags=TestGrep._reflags)
2040- self.assertContainsRe(out, b"^file0.txt~7$", flags=TestGrep._reflags)
2041- self.assertContainsRe(out, b"^dir0/file00.txt~7$", flags=TestGrep._reflags)
2042+ self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
2043+ self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
2044+ self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
2045 self.assertEqual(len(out.splitlines()), 3)
2046
2047 # fixed-string
2048 out, err = self.run_bzr(['grep', '-r', '-1', '-l', 'HELLO'])
2049
2050- self.assertContainsRe(out, b"^file0.txt~7$", flags=TestGrep._reflags)
2051- self.assertContainsRe(out, b"^dir0/file00.txt~7$", flags=TestGrep._reflags)
2052+ self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
2053+ self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
2054 self.assertEqual(len(out.splitlines()), 2)
2055
2056 # regex
2057 out, err = self.run_bzr(['grep', '-r', '-1', '-l', 'H.LLO'])
2058
2059- self.assertContainsRe(out, b"^file0.txt~7$", flags=TestGrep._reflags)
2060- self.assertContainsRe(out, b"^dir0/file00.txt~7$", flags=TestGrep._reflags)
2061+ self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
2062+ self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
2063 self.assertEqual(len(out.splitlines()), 2)
2064
2065 # fixed-string
2066 out, err = self.run_bzr(['grep', '-l', 'HELLO', '-r', '-1',
2067 'dir0', 'file1.txt'])
2068
2069- self.assertContainsRe(out, b"^dir0/file00.txt~7$", flags=TestGrep._reflags)
2070+ self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
2071 self.assertEqual(len(out.splitlines()), 1)
2072
2073 # regex
2074 out, err = self.run_bzr(['grep', '-l', 'H.LLO', '-r', '-1',
2075 'dir0', 'file1.txt'])
2076
2077- self.assertContainsRe(out, b"^dir0/file00.txt~7$", flags=TestGrep._reflags)
2078+ self.assertContainsRe(out, "^dir0/file00.txt~7$", flags=TestGrep._reflags)
2079 self.assertEqual(len(out.splitlines()), 1)
2080
2081 # fixed-string
2082 out, err = self.run_bzr(['grep', '-l', 'HELLO',
2083 '-r', '-2', 'file0.txt'])
2084
2085- self.assertContainsRe(out, b"^file0.txt~6$", flags=TestGrep._reflags)
2086+ self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
2087 self.assertEqual(len(out.splitlines()), 1)
2088
2089 # regex
2090 out, err = self.run_bzr(['grep', '-l', 'HE.LO',
2091 '-r', '-2', 'file0.txt'])
2092
2093- self.assertContainsRe(out, b"^file0.txt~6$", flags=TestGrep._reflags)
2094+ self.assertContainsRe(out, "^file0.txt~6$", flags=TestGrep._reflags)
2095 self.assertEqual(len(out.splitlines()), 1)
2096
2097 # fixed-string
2098 out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
2099 '-l', 'HELLO'])
2100
2101- self.assertContainsRe(out, b"^file0.txt~7$", flags=TestGrep._reflags)
2102+ self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
2103 self.assertEqual(len(out.splitlines()), 1)
2104
2105 # regex
2106 out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
2107 '-l', '.ELLO'])
2108
2109- self.assertContainsRe(out, b"^file0.txt~7$", flags=TestGrep._reflags)
2110+ self.assertContainsRe(out, "^file0.txt~7$", flags=TestGrep._reflags)
2111 self.assertEqual(len(out.splitlines()), 1)
2112
2113 def test_wtree_files_without_matches(self):
2114@@ -1724,67 +1724,67 @@
2115 # fixed-string
2116 out, err = self.run_bzr(['grep', '--files-without-match', 'HELLO'])
2117
2118- self.assertContainsRe(out, b"^file1.txt$", flags=TestGrep._reflags)
2119- self.assertContainsRe(out, b"^dir0/file01.txt$", flags=TestGrep._reflags)
2120+ self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
2121+ self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
2122 self.assertEqual(len(out.splitlines()), 2)
2123
2124 # regex
2125 out, err = self.run_bzr(['grep', '--files-without-match', 'HE.LO'])
2126
2127- self.assertContainsRe(out, b"^file1.txt$", flags=TestGrep._reflags)
2128- self.assertContainsRe(out, b"^dir0/file01.txt$", flags=TestGrep._reflags)
2129+ self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
2130+ self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
2131 self.assertEqual(len(out.splitlines()), 2)
2132
2133 # fixed-string
2134 out, err = self.run_bzr(['grep', '-L', 'HELLO'])
2135
2136- self.assertContainsRe(out, b"^file1.txt$", flags=TestGrep._reflags)
2137- self.assertContainsRe(out, b"^dir0/file01.txt$", flags=TestGrep._reflags)
2138+ self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
2139+ self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
2140 self.assertEqual(len(out.splitlines()), 2)
2141
2142 # regex
2143 out, err = self.run_bzr(['grep', '-L', 'HE.LO'])
2144
2145- self.assertContainsRe(out, b"^file1.txt$", flags=TestGrep._reflags)
2146- self.assertContainsRe(out, b"^dir0/file01.txt$", flags=TestGrep._reflags)
2147+ self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
2148+ self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
2149 self.assertEqual(len(out.splitlines()), 2)
2150
2151 # fixed-string
2152 out, err = self.run_bzr(['grep', '-L', 'HELLO', 'dir0', 'file1.txt'])
2153
2154- self.assertContainsRe(out, b"^file1.txt$", flags=TestGrep._reflags)
2155- self.assertContainsRe(out, b"^dir0/file01.txt$", flags=TestGrep._reflags)
2156+ self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
2157+ self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
2158 self.assertEqual(len(out.splitlines()), 2)
2159
2160 # regex
2161 out, err = self.run_bzr(['grep', '-L', '.ELLO', 'dir0', 'file1.txt'])
2162
2163- self.assertContainsRe(out, b"^file1.txt$", flags=TestGrep._reflags)
2164- self.assertContainsRe(out, b"^dir0/file01.txt$", flags=TestGrep._reflags)
2165+ self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
2166+ self.assertContainsRe(out, "^dir0/file01.txt$", flags=TestGrep._reflags)
2167 self.assertEqual(len(out.splitlines()), 2)
2168
2169 # fixed-string
2170 out, err = self.run_bzr(['grep', '-L', 'HELLO', 'file1.txt'])
2171
2172- self.assertContainsRe(out, b"^file1.txt$", flags=TestGrep._reflags)
2173+ self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
2174 self.assertEqual(len(out.splitlines()), 1)
2175
2176 # regex
2177 out, err = self.run_bzr(['grep', '-L', '.ELLO', 'file1.txt'])
2178
2179- self.assertContainsRe(out, b"^file1.txt$", flags=TestGrep._reflags)
2180+ self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
2181 self.assertEqual(len(out.splitlines()), 1)
2182
2183 # fixed-string
2184 out, err = self.run_bzr(['grep', '--no-recursive', '-L', 'HELLO'])
2185
2186- self.assertContainsRe(out, b"^file1.txt$", flags=TestGrep._reflags)
2187+ self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
2188 self.assertEqual(len(out.splitlines()), 1)
2189
2190 # regex
2191 out, err = self.run_bzr(['grep', '--no-recursive', '-L', '.ELLO'])
2192
2193- self.assertContainsRe(out, b"^file1.txt$", flags=TestGrep._reflags)
2194+ self.assertContainsRe(out, "^file1.txt$", flags=TestGrep._reflags)
2195 self.assertEqual(len(out.splitlines()), 1)
2196
2197 def test_ver_files_without_matches(self):
2198@@ -1807,96 +1807,96 @@
2199 out, err = self.run_bzr(['grep', '-r', '-1', '--files-without-match',
2200 'HELLO'])
2201
2202- self.assertContainsRe(out, b"^file1.txt~7$", flags=TestGrep._reflags)
2203- self.assertContainsRe(out, b"^dir0/file01.txt~7$", flags=TestGrep._reflags)
2204+ self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2205+ self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2206 self.assertEqual(len(out.splitlines()), 2)
2207
2208 # regex
2209 out, err = self.run_bzr(['grep', '-r', '-1', '--files-without-match',
2210 'H.LLO'])
2211
2212- self.assertContainsRe(out, b"^file1.txt~7$", flags=TestGrep._reflags)
2213- self.assertContainsRe(out, b"^dir0/file01.txt~7$", flags=TestGrep._reflags)
2214+ self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2215+ self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2216 self.assertEqual(len(out.splitlines()), 2)
2217
2218 # fixed-string
2219 out, err = self.run_bzr(['grep', '-r', '6..7', '--files-without-match',
2220 'HELLO'])
2221
2222- self.assertContainsRe(out, b"^file1.txt~6$", flags=TestGrep._reflags)
2223- self.assertContainsRe(out, b"^dir0/file00.txt~6$", flags=TestGrep._reflags)
2224- self.assertContainsRe(out, b"^dir0/file01.txt~6$", flags=TestGrep._reflags)
2225- self.assertContainsRe(out, b"^file1.txt~7$", flags=TestGrep._reflags)
2226- self.assertContainsRe(out, b"^dir0/file01.txt~7$", flags=TestGrep._reflags)
2227+ self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
2228+ self.assertContainsRe(out, "^dir0/file00.txt~6$", flags=TestGrep._reflags)
2229+ self.assertContainsRe(out, "^dir0/file01.txt~6$", flags=TestGrep._reflags)
2230+ self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2231+ self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2232 self.assertEqual(len(out.splitlines()), 5)
2233
2234 # regex
2235 out, err = self.run_bzr(['grep', '-r', '6..7', '--files-without-match',
2236 'H.LLO'])
2237
2238- self.assertContainsRe(out, b"^file1.txt~6$", flags=TestGrep._reflags)
2239- self.assertContainsRe(out, b"^dir0/file00.txt~6$", flags=TestGrep._reflags)
2240- self.assertContainsRe(out, b"^dir0/file01.txt~6$", flags=TestGrep._reflags)
2241- self.assertContainsRe(out, b"^file1.txt~7$", flags=TestGrep._reflags)
2242- self.assertContainsRe(out, b"^dir0/file01.txt~7$", flags=TestGrep._reflags)
2243+ self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
2244+ self.assertContainsRe(out, "^dir0/file00.txt~6$", flags=TestGrep._reflags)
2245+ self.assertContainsRe(out, "^dir0/file01.txt~6$", flags=TestGrep._reflags)
2246+ self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2247+ self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2248 self.assertEqual(len(out.splitlines()), 5)
2249
2250 # fixed-string
2251 out, err = self.run_bzr(['grep', '-r', '-1', '-L', 'HELLO'])
2252
2253- self.assertContainsRe(out, b"^file1.txt~7$", flags=TestGrep._reflags)
2254- self.assertContainsRe(out, b"^dir0/file01.txt~7$", flags=TestGrep._reflags)
2255+ self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2256+ self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2257 self.assertEqual(len(out.splitlines()), 2)
2258
2259 # regex
2260 out, err = self.run_bzr(['grep', '-r', '-1', '-L', 'H.LLO'])
2261
2262- self.assertContainsRe(out, b"^file1.txt~7$", flags=TestGrep._reflags)
2263- self.assertContainsRe(out, b"^dir0/file01.txt~7$", flags=TestGrep._reflags)
2264+ self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2265+ self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2266 self.assertEqual(len(out.splitlines()), 2)
2267
2268 # fixed-string
2269 out, err = self.run_bzr(['grep', '-L', 'HELLO', '-r', '-1',
2270 'dir0', 'file1.txt'])
2271
2272- self.assertContainsRe(out, b"^file1.txt~7$", flags=TestGrep._reflags)
2273- self.assertContainsRe(out, b"^dir0/file01.txt~7$", flags=TestGrep._reflags)
2274+ self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2275+ self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2276 self.assertEqual(len(out.splitlines()), 2)
2277
2278 # regex
2279 out, err = self.run_bzr(['grep', '-L', 'H.LLO', '-r', '-1',
2280 'dir0', 'file1.txt'])
2281
2282- self.assertContainsRe(out, b"^file1.txt~7$", flags=TestGrep._reflags)
2283- self.assertContainsRe(out, b"^dir0/file01.txt~7$", flags=TestGrep._reflags)
2284+ self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2285+ self.assertContainsRe(out, "^dir0/file01.txt~7$", flags=TestGrep._reflags)
2286 self.assertEqual(len(out.splitlines()), 2)
2287
2288 # fixed-string
2289 out, err = self.run_bzr(['grep', '-L', 'HELLO',
2290 '-r', '-2', 'file1.txt'])
2291
2292- self.assertContainsRe(out, b"^file1.txt~6$", flags=TestGrep._reflags)
2293+ self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
2294 self.assertEqual(len(out.splitlines()), 1)
2295
2296 # regex
2297 out, err = self.run_bzr(['grep', '-L', 'HE.LO',
2298 '-r', '-2', 'file1.txt'])
2299
2300- self.assertContainsRe(out, b"^file1.txt~6$", flags=TestGrep._reflags)
2301+ self.assertContainsRe(out, "^file1.txt~6$", flags=TestGrep._reflags)
2302 self.assertEqual(len(out.splitlines()), 1)
2303
2304 # fixed-string
2305 out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
2306 '-L', 'HELLO'])
2307
2308- self.assertContainsRe(out, b"^file1.txt~7$", flags=TestGrep._reflags)
2309+ self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2310 self.assertEqual(len(out.splitlines()), 1)
2311
2312 # regex
2313 out, err = self.run_bzr(['grep', '--no-recursive', '-r', '-1',
2314 '-L', '.ELLO'])
2315
2316- self.assertContainsRe(out, b"^file1.txt~7$", flags=TestGrep._reflags)
2317+ self.assertContainsRe(out, "^file1.txt~7$", flags=TestGrep._reflags)
2318 self.assertEqual(len(out.splitlines()), 1)
2319
2320 def test_no_tree(self):
2321@@ -1912,11 +1912,11 @@
2322 os.chdir(wd1)
2323
2324 out, err = self.run_bzr(['grep', 'line1'], 3)
2325- self.assertContainsRe(err, b"Cannot search working tree", flags=TestGrep._reflags)
2326+ self.assertContainsRe(err, "Cannot search working tree", flags=TestGrep._reflags)
2327 self.assertEqual(out, '')
2328
2329 out, err = self.run_bzr(['grep', '-r', '1', 'line1'])
2330- self.assertContainsRe(out, b"file0.txt~1:line1", flags=TestGrep._reflags)
2331+ self.assertContainsRe(out, "file0.txt~1:line1", flags=TestGrep._reflags)
2332 self.assertEqual(len(out.splitlines()), 2) # finds line1 and line10
2333
2334
2335@@ -1969,7 +1969,7 @@
2336 """
2337 out, err = self.run_bzr(['grep', '--color', 'foo', 'bar'], 3)
2338 self.assertEqual(out, '')
2339- self.assertContainsRe(err, b'Valid values for --color are', flags=TestGrep._reflags)
2340+ self.assertContainsRe(err, 'Valid values for --color are', flags=TestGrep._reflags)
2341
2342 def test_ver_matching_files(self):
2343 """(versioned) Search for matches or no matches only"""
2344@@ -2249,5 +2249,5 @@
2345 out, err = self.run_bzr(['init'])
2346 out, err = self.run_bzr(['grep', '--diff', 'foo'], 3)
2347 self.assertEqual(out, b'')
2348- self.assertContainsRe(err, b"ERROR:.*revision.* does not exist in branch")
2349+ self.assertContainsRe(err, "ERROR:.*revision.* does not exist in branch")
2350
2351
2352=== modified file 'breezy/plugins/repodebug/tests/__init__.py'
2353--- breezy/plugins/repodebug/tests/__init__.py 2018-05-27 18:00:21 +0000
2354+++ breezy/plugins/repodebug/tests/__init__.py 2018-07-14 19:37:12 +0000
2355@@ -24,21 +24,21 @@
2356
2357 def test_check_chk(self):
2358 out, err = self.run_bzr('check-chk')
2359- self.assertEqual(out, b'')
2360- self.assertEqual(err, b'')
2361+ self.assertEqual(out, '')
2362+ self.assertEqual(err, '')
2363
2364 def test_chk_used_by(self):
2365 self.make_branch_and_tree('.')
2366 out, err = self.run_bzr('chk-used-by chk')
2367- self.assertEqual(out, b'')
2368- self.assertEqual(err, b'')
2369+ self.assertEqual(out, '')
2370+ self.assertEqual(err, '')
2371
2372 def test_fetch_all_records(self):
2373 self.make_branch_and_tree('source')
2374 self.make_branch_and_tree('dest')
2375 out, err = self.run_bzr('fetch-all-records source -d dest')
2376- self.assertEqual(out, b'Done.\n')
2377- self.assertEqual(err, b'')
2378+ self.assertEqual(out, 'Done.\n')
2379+ self.assertEqual(err, '')
2380
2381 def test_file_refs(self):
2382 tree = self.make_branch_and_tree('.')
2383@@ -47,34 +47,34 @@
2384 revid = tree.commit('a commit')
2385 out, err = self.run_bzr(
2386 'file-refs ' + tree.path2id('foo').decode() + ' ' + revid.decode())
2387- self.assertEqual(out, revid + b'\n')
2388- self.assertEqual(err, b'')
2389+ self.assertEqual(out, revid.decode('utf-8') + '\n')
2390+ self.assertEqual(err, '')
2391
2392 def test_fix_missing_keys_for_stacking(self):
2393 self.make_branch_and_tree('stacked')
2394 self.run_bzr('branch --stacked stacked new')
2395 out, err = self.run_bzr('fix-missing-keys-for-stacking new')
2396- self.assertEqual(out, b'')
2397- self.assertEqual(err, b'')
2398+ self.assertEqual(out, '')
2399+ self.assertEqual(err, '')
2400
2401 def test_mirror_revs_into(self):
2402 self.make_branch_and_tree('source')
2403 self.make_branch_and_tree('dest')
2404 out, err = self.run_bzr('mirror-revs-into source dest')
2405- self.assertEqual(out, b'')
2406- self.assertEqual(err, b'')
2407+ self.assertEqual(out, '')
2408+ self.assertEqual(err, '')
2409
2410 def test_repo_has_key(self):
2411 self.make_branch_and_tree('repo')
2412 out, err = self.run_bzr('repo-has-key repo revisions revid', retcode=1)
2413- self.assertEqual(out, b'False\n')
2414- self.assertEqual(err, b'')
2415+ self.assertEqual(out, 'False\n')
2416+ self.assertEqual(err, '')
2417
2418 def test_repo_keys(self):
2419 self.make_branch_and_tree('a')
2420 out, err = self.run_bzr('repo-keys a texts')
2421- self.assertEqual(out, b'')
2422- self.assertEqual(err, b'')
2423+ self.assertEqual(out, '')
2424+ self.assertEqual(err, '')
2425
2426
2427 def test_suite():
2428
2429=== modified file 'breezy/plugins/weave_fmt/test_bzrdir.py'
2430--- breezy/plugins/weave_fmt/test_bzrdir.py 2018-06-16 23:27:50 +0000
2431+++ breezy/plugins/weave_fmt/test_bzrdir.py 2018-07-14 19:37:12 +0000
2432@@ -124,8 +124,8 @@
2433 # break lock on a format 5 bzrdir should just return
2434 self.make_branch_and_tree('foo', format=BzrDirFormat5())
2435 out, err = self.run_bzr('break-lock foo')
2436- self.assertEqual(b'', out)
2437- self.assertEqual(b'', err)
2438+ self.assertEqual('', out)
2439+ self.assertEqual('', err)
2440
2441
2442 _upgrade1_template = \
2443@@ -455,7 +455,7 @@
2444 # U U U
2445 out, err = self.run_bzr('info -v branch')
2446 self.assertEqualDiff(
2447-b"""Standalone tree (format: weave)
2448+"""Standalone tree (format: weave)
2449 Location:
2450 branch root: %s
2451
2452@@ -480,14 +480,14 @@
2453
2454 Repository:
2455 0 revisions
2456-""" % (b'branch', tree.branch.repository._format.get_format_description().encode(),
2457+""" % ('branch', tree.branch.repository._format.get_format_description(),
2458 ), out)
2459- self.assertEqual(b'', err)
2460+ self.assertEqual('', err)
2461 # L L L
2462 tree.lock_write()
2463 out, err = self.run_bzr('info -v branch')
2464 self.assertEqualDiff(
2465-b"""Standalone tree (format: weave)
2466+"""Standalone tree (format: weave)
2467 Location:
2468 branch root: %s
2469
2470@@ -512,9 +512,9 @@
2471
2472 Repository:
2473 0 revisions
2474-""" % (b'branch', tree.branch.repository._format.get_format_description().encode(),
2475+""" % ('branch', tree.branch.repository._format.get_format_description(),
2476 ), out)
2477- self.assertEqual(b'', err)
2478+ self.assertEqual('', err)
2479 tree.unlock()
2480
2481
2482@@ -552,16 +552,16 @@
2483 # TODO: jam 20060427 Probably something like this really should
2484 # print out the actual path, rather than the URL
2485 cwd = urlutils.local_path_to_url(getcwd())
2486- self.assertEqual(b'brz: ERROR: To use this feature you must '
2487- b'upgrade your branch at %s/.\n' % cwd, err)
2488+ self.assertEqual('brz: ERROR: To use this feature you must '
2489+ 'upgrade your branch at %s/.\n' % cwd, err)
2490
2491 def test_unbind_format_6_bzrdir(self):
2492 # bind on a format 6 bzrdir should error
2493 out, err = self.run_bzr('unbind', retcode=3)
2494 self.assertEqual(b'', out)
2495 cwd = urlutils.local_path_to_url(getcwd())
2496- self.assertEqual(b'brz: ERROR: To use this feature you must '
2497- b'upgrade your branch at %s/.\n' % cwd, err)
2498+ self.assertEqual('brz: ERROR: To use this feature you must '
2499+ 'upgrade your branch at %s/.\n' % cwd, err)
2500
2501
2502 class TestInit(TestCaseWithTransport):
2503@@ -570,9 +570,9 @@
2504 # --format=weave should be accepted to allow interoperation with
2505 # old releases when desired.
2506 out, err = self.run_bzr('init --format=weave')
2507- self.assertEqual(b"""Created a standalone tree (format: weave)\n""",
2508+ self.assertEqual("""Created a standalone tree (format: weave)\n""",
2509 out)
2510- self.assertEqual(b'', err)
2511+ self.assertEqual('', err)
2512
2513
2514 class V4WeaveBundleTester(test_bundle.V4BundleTester):
2515
2516=== modified file 'breezy/plugins/weave_fmt/test_repository.py'
2517--- breezy/plugins/weave_fmt/test_repository.py 2018-06-17 20:17:39 +0000
2518+++ breezy/plugins/weave_fmt/test_repository.py 2018-07-14 19:37:12 +0000
2519@@ -265,11 +265,11 @@
2520 def test_make_repository(self):
2521 out, err = self.run_bzr("init-repository --format=weave a")
2522 self.assertEqual(out,
2523-b"""Standalone tree (format: weave)
2524+"""Standalone tree (format: weave)
2525 Location:
2526 branch root: a
2527 """)
2528- self.assertEqual(err, b"")
2529+ self.assertEqual(err, "")
2530
2531 def test_is_compatible_and_registered(self):
2532 # InterWeaveRepo is compatible when either side
2533
2534=== modified file 'breezy/tests/__init__.py'
2535--- breezy/tests/__init__.py 2018-07-09 20:53:02 +0000
2536+++ breezy/tests/__init__.py 2018-07-14 19:37:12 +0000
2537@@ -1934,9 +1934,14 @@
2538
2539 self.log('run brz: %r', args)
2540
2541- stdout = ui_testing.BytesIOWithEncoding()
2542- stderr = ui_testing.BytesIOWithEncoding()
2543- stdout.encoding = stderr.encoding = encoding
2544+ if sys.version_info[0] == 2:
2545+ stdout = ui_testing.BytesIOWithEncoding()
2546+ stderr = ui_testing.BytesIOWithEncoding()
2547+ stdout.encoding = stderr.encoding = encoding
2548+ else:
2549+ stdout = ui_testing.StringIOWithEncoding()
2550+ stderr = ui_testing.StringIOWithEncoding()
2551+ stdout.encoding = stderr.encoding = encoding
2552
2553 # FIXME: don't call into logging here
2554 handler = trace.EncodedStreamHandler(
2555@@ -2044,12 +2049,12 @@
2556 Examples of use::
2557
2558 # Make sure that commit is failing because there is nothing to do
2559- self.run_bzr_error([b'no changes to commit'],
2560+ self.run_bzr_error(['no changes to commit'],
2561 ['commit', '-m', 'my commit comment'])
2562 # Make sure --strict is handling an unknown file, rather than
2563 # giving us the 'nothing to do' error
2564 self.build_tree(['unknown'])
2565- self.run_bzr_error([b'Commit refused because there are unknown files'],
2566+ self.run_bzr_error(['Commit refused because there are unknown files'],
2567 ['commit', --strict', '-m', 'my commit comment'])
2568 """
2569 kwargs.setdefault('retcode', 3)
2570
2571=== modified file 'breezy/tests/blackbox/test_add.py'
2572--- breezy/tests/blackbox/test_add.py 2018-07-02 23:41:13 +0000
2573+++ breezy/tests/blackbox/test_add.py 2018-07-14 19:37:12 +0000
2574@@ -51,15 +51,15 @@
2575 self.build_tree_contents([('.bzrignore', b'CVS\n')])
2576 out = self.run_bzr('add')[0]
2577 # the ordering is not defined at the moment
2578- results = sorted(out.rstrip(b'\n').split(b'\n'))
2579- self.assertEqual([b'adding .bzrignore',
2580- b'adding dir',
2581- b'adding dir/sub.txt',
2582- b'adding top.txt'],
2583+ results = sorted(out.rstrip('\n').split('\n'))
2584+ self.assertEqual(['adding .bzrignore',
2585+ 'adding dir',
2586+ 'adding dir/sub.txt',
2587+ 'adding top.txt'],
2588 results)
2589 out = self.run_bzr('add -v')[0]
2590- results = sorted(out.rstrip(b'\n').split(b'\n'))
2591- self.assertEqual([b'ignored CVS matching "CVS"'],
2592+ results = sorted(out.rstrip('\n').split('\n'))
2593+ self.assertEqual(['ignored CVS matching "CVS"'],
2594 results)
2595
2596 def test_add_quiet_is(self):
2597@@ -68,8 +68,8 @@
2598 self.build_tree(['top.txt', 'dir/', 'dir/sub.txt'])
2599 out = self.run_bzr('add -q')[0]
2600 # the ordering is not defined at the moment
2601- results = sorted(out.rstrip(b'\n').split(b'\n'))
2602- self.assertEqual([b''], results)
2603+ results = sorted(out.rstrip('\n').split('\n'))
2604+ self.assertEqual([''], results)
2605
2606 def test_add_in_unversioned(self):
2607 """Try to add a file in an unversioned directory.
2608@@ -78,28 +78,28 @@
2609 """
2610 tree = self.make_branch_and_tree('.')
2611 self.build_tree(['inertiatic/', 'inertiatic/esp'])
2612- self.assertEqual(self.run_bzr('unknowns')[0], b'inertiatic\n')
2613+ self.assertEqual(self.run_bzr('unknowns')[0], 'inertiatic\n')
2614 self.run_bzr('add inertiatic/esp')
2615- self.assertEqual(self.run_bzr('unknowns')[0], b'')
2616+ self.assertEqual(self.run_bzr('unknowns')[0], '')
2617
2618 # Multiple unversioned parents
2619 self.build_tree(['veil/', 'veil/cerpin/', 'veil/cerpin/taxt'])
2620- self.assertEqual(self.run_bzr('unknowns')[0], b'veil\n')
2621+ self.assertEqual(self.run_bzr('unknowns')[0], 'veil\n')
2622 self.run_bzr('add veil/cerpin/taxt')
2623- self.assertEqual(self.run_bzr('unknowns')[0], b'')
2624+ self.assertEqual(self.run_bzr('unknowns')[0], '')
2625
2626 # Check whacky paths work
2627 self.build_tree(['cicatriz/', 'cicatriz/esp'])
2628- self.assertEqual(self.run_bzr('unknowns')[0], b'cicatriz\n')
2629+ self.assertEqual(self.run_bzr('unknowns')[0], 'cicatriz\n')
2630 self.run_bzr('add inertiatic/../cicatriz/esp')
2631- self.assertEqual(self.run_bzr('unknowns')[0], b'')
2632+ self.assertEqual(self.run_bzr('unknowns')[0], '')
2633
2634 def test_add_no_recurse(self):
2635 tree = self.make_branch_and_tree('.')
2636 self.build_tree(['inertiatic/', 'inertiatic/esp'])
2637- self.assertEqual(self.run_bzr('unknowns')[0], b'inertiatic\n')
2638+ self.assertEqual(self.run_bzr('unknowns')[0], 'inertiatic\n')
2639 self.run_bzr('add -N inertiatic')
2640- self.assertEqual(self.run_bzr('unknowns')[0], b'inertiatic/esp\n')
2641+ self.assertEqual(self.run_bzr('unknowns')[0], 'inertiatic/esp\n')
2642
2643 def test_add_in_versioned(self):
2644 """Try to add a file in a versioned directory.
2645@@ -108,11 +108,11 @@
2646 """
2647 tree = self.make_branch_and_tree('.')
2648 self.build_tree(['inertiatic/', 'inertiatic/esp'])
2649- self.assertEqual(self.run_bzr('unknowns')[0], b'inertiatic\n')
2650+ self.assertEqual(self.run_bzr('unknowns')[0], 'inertiatic\n')
2651 self.run_bzr('add --no-recurse inertiatic')
2652- self.assertEqual(self.run_bzr('unknowns')[0], b'inertiatic/esp\n')
2653+ self.assertEqual(self.run_bzr('unknowns')[0], 'inertiatic/esp\n')
2654 self.run_bzr('add inertiatic/esp')
2655- self.assertEqual(self.run_bzr('unknowns')[0], b'')
2656+ self.assertEqual(self.run_bzr('unknowns')[0], '')
2657
2658 def test_subdir_add(self):
2659 """Add in subdirectory should add only things from there down"""
2660@@ -133,7 +133,7 @@
2661 # add with no arguments in a subdirectory gets only files below that
2662 # subdirectory
2663 self.run_bzr('add', working_dir='src')
2664- self.assertEqual(b'README\n',
2665+ self.assertEqual('README\n',
2666 self.run_bzr('unknowns', working_dir='src')[0])
2667 # reopen to see the new changes
2668 t = t.controldir.open_workingtree('src')
2669@@ -142,7 +142,7 @@
2670
2671 # add from the parent directory should pick up all file names
2672 self.run_bzr('add')
2673- self.assertEqual(self.run_bzr('unknowns')[0], b'')
2674+ self.assertEqual(self.run_bzr('unknowns')[0], '')
2675 self.run_bzr('check')
2676
2677 def test_add_missing(self):
2678@@ -161,10 +161,10 @@
2679
2680 out, err = self.run_bzr('add --file-ids-from ../base',
2681 working_dir='new')
2682- self.assertEqual(b'', err)
2683- self.assertEqualDiff(b'adding a w/ file id from a\n'
2684- b'adding b w/ file id from b\n'
2685- b'adding b/c w/ file id from b/c\n',
2686+ self.assertEqual('', err)
2687+ self.assertEqualDiff('adding a w/ file id from a\n'
2688+ 'adding b w/ file id from b\n'
2689+ 'adding b/c w/ file id from b/c\n',
2690 out)
2691 new_tree = new_tree.controldir.open_workingtree()
2692 self.assertEqual(base_tree.path2id('a'), new_tree.path2id('a'))
2693@@ -182,9 +182,9 @@
2694
2695 out, err = self.run_bzr('add --file-ids-from ../base/b',
2696 working_dir='new')
2697- self.assertEqual(b'', err)
2698- self.assertEqualDiff(b'adding c w/ file id from b/c\n'
2699- b'adding d w/ file id from b/d\n',
2700+ self.assertEqual('', err)
2701+ self.assertEqualDiff('adding c w/ file id from b/c\n'
2702+ 'adding d w/ file id from b/d\n',
2703 out)
2704
2705 new_tree = new_tree.controldir.open_workingtree('new')
2706@@ -203,12 +203,12 @@
2707 """The control dir and its content should be refused."""
2708 self.make_branch_and_tree('.')
2709 err = self.run_bzr('add .bzr', retcode=3)[1]
2710- self.assertContainsRe(err, br'ERROR:.*\.bzr.*control file')
2711+ self.assertContainsRe(err, r'ERROR:.*\.bzr.*control file')
2712 err = self.run_bzr('add .bzr/README', retcode=3)[1]
2713- self.assertContainsRe(err, br'ERROR:.*\.bzr.*control file')
2714+ self.assertContainsRe(err, r'ERROR:.*\.bzr.*control file')
2715 self.build_tree(['.bzr/crescent'])
2716 err = self.run_bzr('add .bzr/crescent', retcode=3)[1]
2717- self.assertContainsRe(err, br'ERROR:.*\.bzr.*control file')
2718+ self.assertContainsRe(err, r'ERROR:.*\.bzr.*control file')
2719
2720 def test_add_via_symlink(self):
2721 self.requireFeature(features.SymlinkFeature)
2722@@ -216,14 +216,14 @@
2723 self.build_tree(['source/top.txt'])
2724 os.symlink('source', 'link')
2725 out = self.run_bzr(['add', 'link/top.txt'])[0]
2726- self.assertEqual(out, b'adding top.txt\n')
2727+ self.assertEqual(out, 'adding top.txt\n')
2728
2729 def test_add_symlink_to_abspath(self):
2730 self.requireFeature(features.SymlinkFeature)
2731 self.make_branch_and_tree('tree')
2732 os.symlink(osutils.abspath('target'), 'tree/link')
2733 out = self.run_bzr(['add', 'tree/link'])[0]
2734- self.assertEqual(out, b'adding link\n')
2735+ self.assertEqual(out, 'adding link\n')
2736
2737 def test_add_not_child(self):
2738 # https://bugs.launchpad.net/bzr/+bug/98735
2739@@ -242,8 +242,8 @@
2740 self.make_branch_and_tree(u"\xA7")
2741 self.build_tree([u"\xA7/a", u"\xA7/b"])
2742 out, err = self.run_bzr(["add", "a", "b"], working_dir=u"\xA7")
2743- self.assertEqual(out, b"adding a\n" b"adding b\n")
2744- self.assertEqual(err, b"")
2745+ self.assertEqual(out, "adding a\n" "adding b\n")
2746+ self.assertEqual(err, "")
2747
2748 def test_add_skip_large_files(self):
2749 """Test skipping files larger than add.maximum_file_size"""
2750@@ -254,14 +254,14 @@
2751 self.build_tree_contents([('big2.txt', b'01234567890123456789\n')])
2752 tree.branch.get_config_stack().set('add.maximum_file_size', 5)
2753 out = self.run_bzr('add')[0]
2754- results = sorted(out.rstrip(b'\n').split(b'\n'))
2755- self.assertEqual([b'adding small.txt'], results)
2756+ results = sorted(out.rstrip('\n').split('\n'))
2757+ self.assertEqual(['adding small.txt'], results)
2758 # named items never skipped, even if over max
2759 out, err = self.run_bzr(["add", "big2.txt"])
2760- results = sorted(out.rstrip(b'\n').split(b'\n'))
2761- self.assertEqual([b'adding big2.txt'], results)
2762- self.assertEqual(b"", err)
2763+ results = sorted(out.rstrip('\n').split('\n'))
2764+ self.assertEqual(['adding big2.txt'], results)
2765+ self.assertEqual("", err)
2766 tree.branch.get_config_stack().set('add.maximum_file_size', 30)
2767 out = self.run_bzr('add')[0]
2768- results = sorted(out.rstrip(b'\n').split(b'\n'))
2769- self.assertEqual([b'adding big.txt'], results)
2770+ results = sorted(out.rstrip('\n').split('\n'))
2771+ self.assertEqual(['adding big.txt'], results)
2772
2773=== modified file 'breezy/tests/blackbox/test_added.py'
2774--- breezy/tests/blackbox/test_added.py 2018-06-29 15:36:29 +0000
2775+++ breezy/tests/blackbox/test_added.py 2018-07-14 19:37:12 +0000
2776@@ -28,15 +28,15 @@
2777
2778 def test_added(self):
2779 """Test that 'added' command reports added files"""
2780- self._test_added('a', b'a\n')
2781+ self._test_added('a', 'a\n')
2782
2783 def test_added_with_spaces(self):
2784 """Test that 'added' command reports added files with spaces in their names quoted"""
2785- self._test_added('a filename with spaces', b'"a filename with spaces"\n')
2786+ self._test_added('a filename with spaces', '"a filename with spaces"\n')
2787
2788 def test_added_null_separator(self):
2789 """Test that added uses its null operator properly"""
2790- self._test_added('a', b'a\0', null=True)
2791+ self._test_added('a', 'a\0', null=True)
2792
2793 def _test_added(self, name, output, null=False):
2794
2795@@ -48,15 +48,15 @@
2796
2797 out, err = self.run_bzr(command)
2798 self.assertEqual(out, expected)
2799- self.assertEqual(err, b'')
2800+ self.assertEqual(err, '')
2801
2802 # in empty directory, nothing added
2803 tree = self.make_branch_and_tree('.')
2804- check_added(b'')
2805+ check_added('')
2806
2807 # with unknown file, still nothing added
2808 self.build_tree_contents([(name, b'contents of %s\n' % (name.encode('utf-8'),))])
2809- check_added(b'')
2810+ check_added('')
2811
2812 # after add, shows up in list
2813 # bug report 20060119 by Nathan McCallum -- 'brz added' causes
2814@@ -66,7 +66,7 @@
2815
2816 # after commit, now no longer listed
2817 tree.commit(message='add "%s"' % (name))
2818- check_added(b'')
2819+ check_added('')
2820
2821 def test_added_directory(self):
2822 """Test --directory option"""
2823@@ -74,4 +74,4 @@
2824 self.build_tree(['a/README'])
2825 tree.add('README')
2826 out, err = self.run_bzr(['added', '--directory=a'])
2827- self.assertEqual(b'README\n', out)
2828+ self.assertEqual('README\n', out)
2829
2830=== modified file 'breezy/tests/blackbox/test_alias.py'
2831--- breezy/tests/blackbox/test_alias.py 2018-06-29 15:36:29 +0000
2832+++ breezy/tests/blackbox/test_alias.py 2018-07-14 19:37:12 +0000
2833@@ -31,21 +31,21 @@
2834 def test_list_alias_with_none(self):
2835 """Calling alias with no parameters lists existing aliases."""
2836 out, err = self.run_bzr('alias')
2837- self.assertEqual(b'', out)
2838+ self.assertEqual('', out)
2839
2840 def test_list_unknown_alias(self):
2841 out, err = self.run_bzr('alias commit')
2842- self.assertEqual(b'brz alias: commit: not found\n', out)
2843+ self.assertEqual('brz alias: commit: not found\n', out)
2844
2845 def test_add_alias_outputs_nothing(self):
2846 out, err = self.run_bzr('alias commit="commit --strict"')
2847- self.assertEqual(b'', out)
2848+ self.assertEqual('', out)
2849
2850 def test_add_alias_visible(self):
2851 """Adding an alias makes it ..."""
2852 self.run_bzr('alias commit="commit --strict"')
2853 out, err = self.run_bzr('alias commit')
2854- self.assertEqual(b'brz alias commit="commit --strict"\n', out)
2855+ self.assertEqual('brz alias commit="commit --strict"\n', out)
2856
2857 def test_unicode_alias(self):
2858 """Unicode aliases should work (Bug #529930)"""
2859@@ -63,8 +63,8 @@
2860 u'[ALIASES]\nust=st %s\n' % (file_name,), save=True)
2861
2862 out, err = self.run_bzr('ust')
2863- self.assertEqual(err, b'')
2864- self.assertEqual(out, b'')
2865+ self.assertEqual(err, '')
2866+ self.assertEqual(out, '')
2867
2868 def test_alias_listing_alphabetical(self):
2869 self.run_bzr('alias commit="commit --strict"')
2870@@ -73,23 +73,23 @@
2871
2872 out, err = self.run_bzr('alias')
2873 self.assertEqual(
2874- b'brz alias add="add -q"\n'
2875- b'brz alias commit="commit --strict"\n'
2876- b'brz alias ll="log --short"\n',
2877+ 'brz alias add="add -q"\n'
2878+ 'brz alias commit="commit --strict"\n'
2879+ 'brz alias ll="log --short"\n',
2880 out)
2881
2882 def test_remove_unknown_alias(self):
2883 out, err = self.run_bzr('alias --remove fooix', retcode=3)
2884- self.assertEqual(b'brz: ERROR: The alias "fooix" does not exist.\n',
2885- err)
2886+ self.assertEqual('brz: ERROR: The alias "fooix" does not exist.\n',
2887+ err)
2888
2889 def test_remove_known_alias(self):
2890 self.run_bzr('alias commit="commit --strict"')
2891 out, err = self.run_bzr('alias commit')
2892- self.assertEqual(b'brz alias commit="commit --strict"\n', out)
2893+ self.assertEqual('brz alias commit="commit --strict"\n', out)
2894 # No output when removing an existing alias.
2895 out, err = self.run_bzr('alias --remove commit')
2896- self.assertEqual(b'', out)
2897+ self.assertEqual('', out)
2898 # Now its not.
2899 out, err = self.run_bzr('alias commit')
2900- self.assertEqual(b"brz alias: commit: not found\n", out)
2901+ self.assertEqual("brz alias: commit: not found\n", out)
2902
2903=== modified file 'breezy/tests/blackbox/test_aliases.py'
2904--- breezy/tests/blackbox/test_aliases.py 2018-06-29 15:36:29 +0000
2905+++ breezy/tests/blackbox/test_aliases.py 2018-07-14 19:37:12 +0000
2906@@ -41,8 +41,8 @@
2907 c2=cat -r 1 -r2
2908 ''', save=True)
2909
2910- str1 = b'foo\n'
2911- str2 = b'bar\n'
2912+ str1 = 'foo\n'
2913+ str2 = 'bar\n'
2914
2915 tree = self.make_branch_and_tree('.')
2916 self.build_tree_contents([('a', str1)])
2917
2918=== modified file 'breezy/tests/blackbox/test_ancestry.py'
2919--- breezy/tests/blackbox/test_ancestry.py 2018-07-02 23:41:13 +0000
2920+++ breezy/tests/blackbox/test_ancestry.py 2018-07-14 19:37:12 +0000
2921@@ -45,9 +45,9 @@
2922 else:
2923 # A2 and B1 can be in either order, because they are parallel, and
2924 # thus their topological order is not defined
2925- result = b"A1\nB1\nA2\nA3\n"
2926+ result = "A1\nB1\nA2\nA3\n"
2927 if result != out:
2928- result = b"A1\nA2\nB1\nA3\n"
2929+ result = "A1\nA2\nB1\nA3\n"
2930 self.assertEqualDiff(result, out)
2931
2932 def test_ancestry(self):
2933@@ -97,7 +97,7 @@
2934 repo_branch = a_tree.controldir.sprout('repo/A').open_branch()
2935 repo_branch.create_checkout('A-checkout',
2936 revision_id=repo_branch.get_rev_id(2))
2937- self._check_ancestry('A-checkout', b"A1\nA2\n")
2938+ self._check_ancestry('A-checkout', "A1\nA2\n")
2939
2940 def test_ancestry_with_truncated_lightweight_checkout(self):
2941 """Tests 'ancestry' command with a location that is a lightweight
2942@@ -108,4 +108,4 @@
2943 repo_branch.create_checkout('A-checkout',
2944 revision_id=repo_branch.get_rev_id(2),
2945 lightweight=True)
2946- self._check_ancestry('A-checkout', b"A1\nA2\n")
2947+ self._check_ancestry('A-checkout', "A1\nA2\n")
2948
2949=== modified file 'breezy/tests/blackbox/test_annotate.py'
2950--- breezy/tests/blackbox/test_annotate.py 2018-06-30 22:25:16 +0000
2951+++ breezy/tests/blackbox/test_annotate.py 2018-07-14 19:37:12 +0000
2952@@ -69,8 +69,8 @@
2953
2954 def test_annotate_cmd(self):
2955 out, err = self.run_bzr('annotate hello.txt')
2956- self.assertEqual(b'', err)
2957- self.assertEqualDiff(b'''\
2958+ self.assertEqual('', err)
2959+ self.assertEqualDiff('''\
2960 1 test@us | my helicopter
2961 3 user@te | your helicopter
2962 4 user@te | all of
2963@@ -79,8 +79,8 @@
2964
2965 def test_annotate_cmd_full(self):
2966 out, err = self.run_bzr('annotate hello.txt --all')
2967- self.assertEqual(b'', err)
2968- self.assertEqualDiff(b'''\
2969+ self.assertEqual('', err)
2970+ self.assertEqualDiff('''\
2971 1 test@us | my helicopter
2972 3 user@te | your helicopter
2973 4 user@te | all of
2974@@ -89,8 +89,8 @@
2975
2976 def test_annotate_cmd_long(self):
2977 out, err = self.run_bzr('annotate hello.txt --long')
2978- self.assertEqual(b'', err)
2979- self.assertEqualDiff(b'''\
2980+ self.assertEqual('', err)
2981+ self.assertEqualDiff('''\
2982 1 test@user 20061212 | my helicopter
2983 3 user@test 20061213 | your helicopter
2984 4 user@test 20061213 | all of
2985@@ -102,37 +102,37 @@
2986 max_len = max([len(self.revision_id_1),
2987 len(self.revision_id_3),
2988 len(self.revision_id_4)])
2989- self.assertEqual(b'', err)
2990- self.assertEqualDiff(b'''\
2991+ self.assertEqual('', err)
2992+ self.assertEqualDiff('''\
2993 %*s | my helicopter
2994 %*s | your helicopter
2995 %*s | all of
2996 %*s | our helicopters
2997-''' % (max_len, self.revision_id_1,
2998- max_len, self.revision_id_3,
2999- max_len, self.revision_id_4,
3000- max_len, b'',
3001+''' % (max_len, self.revision_id_1.decode('utf-8'),
3002+ max_len, self.revision_id_3.decode('utf-8'),
3003+ max_len, self.revision_id_4.decode('utf-8'),
3004+ max_len, '',
3005 )
3006 , out)
3007
3008 def test_no_mail(self):
3009 out, err = self.run_bzr('annotate nomail.txt')
3010- self.assertEqual(b'', err)
3011- self.assertEqualDiff(b'''\
3012+ self.assertEqual('', err)
3013+ self.assertEqualDiff('''\
3014 2 no mail | nomail
3015 ''', out)
3016
3017 def test_annotate_cmd_revision(self):
3018 out, err = self.run_bzr('annotate hello.txt -r1')
3019- self.assertEqual(b'', err)
3020- self.assertEqualDiff(b'''\
3021+ self.assertEqual('', err)
3022+ self.assertEqualDiff('''\
3023 1 test@us | my helicopter
3024 ''', out)
3025
3026 def test_annotate_cmd_revision3(self):
3027 out, err = self.run_bzr('annotate hello.txt -r3')
3028- self.assertEqual(b'', err)
3029- self.assertEqualDiff(b'''\
3030+ self.assertEqual('', err)
3031+ self.assertEqualDiff('''\
3032 1 test@us | my helicopter
3033 3 user@te | your helicopter
3034 ''', out)
3035@@ -140,15 +140,15 @@
3036 def test_annotate_cmd_unknown_revision(self):
3037 out, err = self.run_bzr('annotate hello.txt -r 10',
3038 retcode=3)
3039- self.assertEqual(b'', out)
3040- self.assertContainsRe(err, b"Requested revision: '10' does not exist")
3041+ self.assertEqual('', out)
3042+ self.assertContainsRe(err, "Requested revision: '10' does not exist")
3043
3044 def test_annotate_cmd_two_revisions(self):
3045 out, err = self.run_bzr('annotate hello.txt -r1..2',
3046 retcode=3)
3047- self.assertEqual(b'', out)
3048- self.assertEqual(b'brz: ERROR: brz annotate --revision takes'
3049- b' exactly one revision identifier\n',
3050+ self.assertEqual('', out)
3051+ self.assertEqual('brz: ERROR: brz annotate --revision takes'
3052+ ' exactly one revision identifier\n',
3053 err)
3054
3055
3056@@ -170,10 +170,10 @@
3057 tree.branch.create_checkout(self.get_url('work'), lightweight=True)
3058 out, err = self.run_bzr(['annotate', 'file', '-r', 'branch:../trunk'],
3059 working_dir='work')
3060- self.assertEqual(b'', err)
3061+ self.assertEqual('', err)
3062 self.assertEqual(
3063- b'1 test@ho | foo\n'
3064- b' | gam\n',
3065+ '1 test@ho | foo\n'
3066+ ' | gam\n',
3067 out)
3068
3069 def test_annotate_edited_file(self):
3070@@ -260,7 +260,7 @@
3071 tree.add('empty')
3072 tree.commit('add empty file')
3073 out, err = self.run_bzr(['annotate', 'empty'])
3074- self.assertEqual(b'', out)
3075+ self.assertEqual('', out)
3076
3077 def test_annotate_removed_file(self):
3078 tree = self.make_branch_and_tree('.')
3079@@ -271,7 +271,7 @@
3080 tree.remove('empty')
3081 tree.commit('remove empty file')
3082 out, err = self.run_bzr(['annotate', '-r1', 'empty'])
3083- self.assertEqual(b'', out)
3084+ self.assertEqual('', out)
3085
3086 def test_annotate_empty_file_show_ids(self):
3087 tree = self.make_branch_and_tree('.')
3088@@ -279,7 +279,7 @@
3089 tree.add('empty')
3090 tree.commit('add empty file')
3091 out, err = self.run_bzr(['annotate', '--show-ids', 'empty'])
3092- self.assertEqual(b'', out)
3093+ self.assertEqual('', out)
3094
3095 def test_annotate_nonexistant_file(self):
3096 tree = self.make_branch_and_tree('.')
3097@@ -287,8 +287,8 @@
3098 tree.add(['file'])
3099 tree.commit('add a file')
3100 out, err = self.run_bzr(['annotate', 'doesnotexist'], retcode=3)
3101- self.assertEqual(b'', out)
3102- self.assertEqual(b"brz: ERROR: doesnotexist is not versioned.\n", err)
3103+ self.assertEqual('', out)
3104+ self.assertEqual("brz: ERROR: doesnotexist is not versioned.\n", err)
3105
3106 def test_annotate_without_workingtree(self):
3107 tree = self.make_branch_and_tree('.')
3108@@ -299,7 +299,7 @@
3109 bzrdir.destroy_workingtree()
3110 self.assertFalse(bzrdir.has_workingtree())
3111 out, err = self.run_bzr(['annotate', 'empty'])
3112- self.assertEqual(b'', out)
3113+ self.assertEqual('', out)
3114
3115 def test_annotate_directory(self):
3116 """Test --directory option"""
3117
3118=== modified file 'breezy/tests/blackbox/test_bound_branches.py'
3119--- breezy/tests/blackbox/test_bound_branches.py 2018-06-29 15:36:29 +0000
3120+++ breezy/tests/blackbox/test_bound_branches.py 2018-07-14 19:37:12 +0000
3121@@ -278,7 +278,7 @@
3122 """We should not be able to bind to a missing branch."""
3123 tree = self.make_branch_and_tree('tree_1')
3124 tree.commit('dummy commit')
3125- self.run_bzr_error([b'Not a branch.*no-such-branch/'],
3126+ self.run_bzr_error(['Not a branch.*no-such-branch/'],
3127 ['bind', '../no-such-branch'],
3128 working_dir='tree_1')
3129 self.assertIs(None, tree.branch.get_bound_location())
3130
3131=== modified file 'breezy/tests/blackbox/test_branch.py'
3132--- breezy/tests/blackbox/test_branch.py 2018-06-30 23:15:13 +0000
3133+++ breezy/tests/blackbox/test_branch.py 2018-07-14 19:37:12 +0000
3134@@ -83,18 +83,18 @@
3135 self.assertEqual(
3136 """Created a standalone tree (format: development-colo)\n""",
3137 out)
3138- self.assertEqual(b'', err)
3139+ self.assertEqual('', err)
3140 out, err = self.run_bzr(
3141 'branch a file:b,branch=thiswasa')
3142- self.assertEqual(b'', out)
3143- self.assertEqual(b'Branched 2 revisions.\n', err)
3144+ self.assertEqual('', out)
3145+ self.assertEqual('Branched 2 revisions.\n', err)
3146 out, err = self.run_bzr('branches b')
3147- self.assertEqual(b" orig\n thiswasa\n", out)
3148- self.assertEqual(b'', err)
3149+ self.assertEqual(" orig\n thiswasa\n", out)
3150+ self.assertEqual('', err)
3151 out, err = self.run_bzr('branch a file:b,branch=orig', retcode=3)
3152- self.assertEqual(b'', out)
3153+ self.assertEqual('', out)
3154 self.assertEqual(
3155- b'brz: ERROR: Already a branch: "file:b,branch=orig".\n', err)
3156+ 'brz: ERROR: Already a branch: "file:b,branch=orig".\n', err)
3157
3158 def test_from_colocated(self):
3159 """Branch from a colocated branch into a regular branch."""
3160@@ -102,8 +102,8 @@
3161 tree.controldir.create_branch(name='somecolo')
3162 out, err = self.run_bzr('branch %s,branch=somecolo' %
3163 local_path_to_url('a'))
3164- self.assertEqual(b'', out)
3165- self.assertEqual(b'Branched 0 revisions.\n', err)
3166+ self.assertEqual('', out)
3167+ self.assertEqual('Branched 0 revisions.\n', err)
3168 self.assertPathExists("somecolo")
3169
3170 def test_branch_broken_pack(self):
3171@@ -124,7 +124,7 @@
3172 else:
3173 corrupt = b'\xFF'
3174 f.write(corrupt) # make sure we corrupt something
3175- self.run_bzr_error([b'Corruption while decompressing repository file'],
3176+ self.run_bzr_error(['Corruption while decompressing repository file'],
3177 'branch a b', retcode=3)
3178
3179 def test_branch_switch_no_branch(self):
3180@@ -132,7 +132,7 @@
3181 # => new branch will be created, but switch fails
3182 self.example_branch('a')
3183 self.make_repository('current')
3184- self.run_bzr_error([b'No WorkingTree exists for'],
3185+ self.run_bzr_error(['No WorkingTree exists for'],
3186 'branch --switch ../a ../b', working_dir='current')
3187 a = branch.Branch.open('a')
3188 b = branch.Branch.open('b')
3189@@ -144,7 +144,7 @@
3190 # branch is unmodified
3191 self.example_branch('a')
3192 self.make_branch('current')
3193- self.run_bzr_error([b'No WorkingTree exists for'],
3194+ self.run_bzr_error(['No WorkingTree exists for'],
3195 'branch --switch ../a ../b', working_dir='current')
3196 a = branch.Branch.open('a')
3197 b = branch.Branch.open('b')
3198@@ -159,7 +159,7 @@
3199 self.example_branch('a')
3200 tree = self.make_branch_and_tree('current')
3201 c1 = tree.commit('some diverged change')
3202- self.run_bzr_error([b'Cannot switch a branch, only a checkout'],
3203+ self.run_bzr_error(['Cannot switch a branch, only a checkout'],
3204 'branch --switch ../a ../b', working_dir='current')
3205 a = branch.Branch.open('a')
3206 b = branch.Branch.open('b')
3207@@ -185,7 +185,7 @@
3208 self.assertEqual(a.last_revision(), b.last_revision())
3209 work = WorkingTree.open('current')
3210 self.assertEndsWith(work.branch.get_bound_location(), '/b/')
3211- self.assertContainsRe(err, b"Switched to branch: .*/b/")
3212+ self.assertContainsRe(err, "Switched to branch: .*/b/")
3213
3214 def test_branch_switch_lightweight_checkout(self):
3215 # Lightweight checkout in the current directory:
3216@@ -200,7 +200,7 @@
3217 self.assertEqual(a.last_revision(), b.last_revision())
3218 work = WorkingTree.open('current')
3219 self.assertEndsWith(work.branch.base, '/b/')
3220- self.assertContainsRe(err, b"Switched to branch: .*/b/")
3221+ self.assertContainsRe(err, "Switched to branch: .*/b/")
3222
3223 def test_branch_only_copies_history(self):
3224 # Knit branches should only push the history for the current revision.
3225@@ -296,8 +296,8 @@
3226 self.build_tree_contents([('b/goodbye', b'baz')])# same content
3227 # fails without --use-existing-dir
3228 out, err = self.run_bzr('branch a b', retcode=3)
3229- self.assertEqual(b'', out)
3230- self.assertEqual(b'brz: ERROR: Target directory "b" already exists.\n',
3231+ self.assertEqual('', out)
3232+ self.assertEqual('brz: ERROR: Target directory "b" already exists.\n',
3233 err)
3234 # force operation
3235 self.run_bzr('branch a b --use-existing-dir')
3236@@ -306,13 +306,13 @@
3237 self.assertPathDoesNotExist('b/godbye.moved')
3238 # we can't branch into branch
3239 out, err = self.run_bzr('branch a b --use-existing-dir', retcode=3)
3240- self.assertEqual(b'', out)
3241- self.assertEqual(b'brz: ERROR: Already a branch: "b".\n', err)
3242+ self.assertEqual('', out)
3243+ self.assertEqual('brz: ERROR: Already a branch: "b".\n', err)
3244
3245 def test_branch_bind(self):
3246 self.example_branch('a')
3247 out, err = self.run_bzr('branch a b --bind')
3248- self.assertEndsWith(err, b"New branch bound to a\n")
3249+ self.assertEndsWith(err, "New branch bound to a\n")
3250 b = branch.Branch.open('b')
3251 self.assertEndsWith(b.get_bound_location(), '/a/')
3252
3253@@ -394,8 +394,8 @@
3254 # branching our local branch gives us a new stacked branch pointing at
3255 # mainline.
3256 out, err = self.run_bzr(['branch', 'branch', 'newbranch'])
3257- self.assertEqual(b'', out)
3258- self.assertEqual(b'Branched 2 revisions.\n',
3259+ self.assertEqual('', out)
3260+ self.assertEqual('Branched 2 revisions.\n',
3261 err)
3262 # it should have preserved the branch format, and so it should be
3263 # capable of supporting stacking, but not actually have a stacked_on
3264@@ -419,9 +419,9 @@
3265 work_tree.branch.push(branch_tree.branch)
3266 # you can chain branches on from there
3267 out, err = self.run_bzr(['branch', 'branch', '--stacked', 'branch2'])
3268- self.assertEqual(b'', out)
3269- self.assertEqual(b'Created new stacked branch referring to %s.\n' %
3270- branch_tree.branch.base.encode('utf-8'), err)
3271+ self.assertEqual('', out)
3272+ self.assertEqual('Created new stacked branch referring to %s.\n' %
3273+ branch_tree.branch.base, err)
3274 self.assertEqual(branch_tree.branch.base,
3275 branch.Branch.open('branch2').get_stacked_on_url())
3276 branch2_tree = WorkingTree.open('branch2')
3277@@ -441,9 +441,9 @@
3278 # and a branch from it which is stacked
3279 out, err = self.run_bzr(['branch', '--stacked', 'mainline',
3280 'newbranch'])
3281- self.assertEqual(b'', out)
3282- self.assertEqual(b'Created new stacked branch referring to %s.\n' %
3283- trunk_tree.branch.base.encode('utf-8'), err)
3284+ self.assertEqual('', out)
3285+ self.assertEqual('Created new stacked branch referring to %s.\n' %
3286+ trunk_tree.branch.base, err)
3287 self.assertRevisionNotInRepository('newbranch', original_revid)
3288 new_branch = branch.Branch.open('newbranch')
3289 self.assertEqual(trunk_tree.branch.base,
3290@@ -463,14 +463,14 @@
3291 ['branch', '--stacked', 'trunk', 'shallow'])
3292 # We should notify the user that we upgraded their format
3293 self.assertEqualDiff(
3294- b'Source repository format does not support stacking, using format:\n'
3295- b' Packs 5 (adds stacking support, requires bzr 1.6)\n'
3296- b'Source branch format does not support stacking, using format:\n'
3297- b' Branch format 7\n'
3298- b'Doing on-the-fly conversion from RepositoryFormatKnitPack1() to RepositoryFormatKnitPack5().\n'
3299- b'This may take some time. Upgrade the repositories to the same format for better performance.\n'
3300- b'Created new stacked branch referring to %s.\n' %
3301- (trunk.base.encode('utf-8'),),
3302+ 'Source repository format does not support stacking, using format:\n'
3303+ ' Packs 5 (adds stacking support, requires bzr 1.6)\n'
3304+ 'Source branch format does not support stacking, using format:\n'
3305+ ' Branch format 7\n'
3306+ 'Doing on-the-fly conversion from RepositoryFormatKnitPack1() to RepositoryFormatKnitPack5().\n'
3307+ 'This may take some time. Upgrade the repositories to the same format for better performance.\n'
3308+ 'Created new stacked branch referring to %s.\n' %
3309+ (trunk.base,),
3310 err)
3311
3312 def test_branch_stacked_from_rich_root_non_stackable(self):
3313@@ -479,13 +479,13 @@
3314 ['branch', '--stacked', 'trunk', 'shallow'])
3315 # We should notify the user that we upgraded their format
3316 self.assertEqualDiff(
3317- b'Source repository format does not support stacking, using format:\n'
3318- b' Packs 5 rich-root (adds stacking support, requires bzr 1.6.1)\n'
3319- b'Source branch format does not support stacking, using format:\n'
3320- b' Branch format 7\n'
3321- b'Doing on-the-fly conversion from RepositoryFormatKnitPack4() to RepositoryFormatKnitPack5RichRoot().\n'
3322- b'This may take some time. Upgrade the repositories to the same format for better performance.\n'
3323- b'Created new stacked branch referring to %s.\n' % (trunk.base.encode('utf-8'),),
3324+ 'Source repository format does not support stacking, using format:\n'
3325+ ' Packs 5 rich-root (adds stacking support, requires bzr 1.6.1)\n'
3326+ 'Source branch format does not support stacking, using format:\n'
3327+ ' Branch format 7\n'
3328+ 'Doing on-the-fly conversion from RepositoryFormatKnitPack4() to RepositoryFormatKnitPack5RichRoot().\n'
3329+ 'This may take some time. Upgrade the repositories to the same format for better performance.\n'
3330+ 'Created new stacked branch referring to %s.\n' % (trunk.base,),
3331 err)
3332
3333
3334
3335=== modified file 'breezy/tests/blackbox/test_branches.py'
3336--- breezy/tests/blackbox/test_branches.py 2018-06-29 15:36:29 +0000
3337+++ breezy/tests/blackbox/test_branches.py 2018-07-14 19:37:12 +0000
3338@@ -28,24 +28,24 @@
3339 # support.
3340 self.run_bzr('init a')
3341 out, err = self.run_bzr('branches a')
3342- self.assertEqual(out, b"* (default)\n")
3343+ self.assertEqual(out, "* (default)\n")
3344
3345 def test_no_branch(self):
3346 # Listing the branches in a control directory without branches.
3347 self.run_bzr('init-repo a')
3348 out, err = self.run_bzr('branches a')
3349- self.assertEqual(out, b"")
3350+ self.assertEqual(out, "")
3351
3352 def test_default_current_dir(self):
3353 # "brz branches" list the branches in the current directory
3354 # if no location was specified.
3355 self.run_bzr('init-repo a')
3356 out, err = self.run_bzr('branches', working_dir='a')
3357- self.assertEqual(out, b"")
3358+ self.assertEqual(out, "")
3359
3360 def test_recursive_current(self):
3361 self.run_bzr('init .')
3362- self.assertEqual(b".\n", self.run_bzr('branches --recursive')[0])
3363+ self.assertEqual(".\n", self.run_bzr('branches --recursive')[0])
3364
3365 def test_recursive(self):
3366 self.run_bzr('init source')
3367@@ -54,20 +54,20 @@
3368 self.run_bzr('init checkout/subcheckout')
3369 self.run_bzr('init checkout/.bzr/subcheckout')
3370 out = self.run_bzr('branches --recursive')[0]
3371- lines = out.split(b'\n')
3372- self.assertIs(True, b'source' in lines, lines)
3373- self.assertIs(True, b'source/subsource' in lines, lines)
3374- self.assertIs(True, b'checkout/subcheckout' in lines, lines)
3375- self.assertIs(True, b'checkout' not in lines, lines)
3376+ lines = out.split('\n')
3377+ self.assertIs(True, 'source' in lines, lines)
3378+ self.assertIs(True, 'source/subsource' in lines, lines)
3379+ self.assertIs(True, 'checkout/subcheckout' in lines, lines)
3380+ self.assertIs(True, 'checkout' not in lines, lines)
3381
3382 def test_indicates_non_branch(self):
3383 t = self.make_branch_and_tree('a', format='development-colo')
3384 t.controldir.create_branch(name='another')
3385 t.controldir.create_branch(name='colocated')
3386 out, err = self.run_bzr('branches a')
3387- self.assertEqual(out, b"* (default)\n"
3388- b" another\n"
3389- b" colocated\n")
3390+ self.assertEqual(out, "* (default)\n"
3391+ " another\n"
3392+ " colocated\n")
3393
3394 def test_indicates_branch(self):
3395 t = self.make_repository('a', format='development-colo')
3396@@ -75,8 +75,8 @@
3397 branch = t.controldir.create_branch(name='colocated')
3398 t.controldir.set_branch_reference(target_branch=branch)
3399 out, err = self.run_bzr('branches a')
3400- self.assertEqual(out, b" another\n"
3401- b"* colocated\n")
3402+ self.assertEqual(out, " another\n"
3403+ "* colocated\n")
3404
3405 def test_shared_repos(self):
3406 self.make_repository('a', shared=True)
3407@@ -84,10 +84,10 @@
3408 b = BzrDir.create_branch_convenience('a/branch2')
3409 b.create_checkout(lightweight=True, to_location='b')
3410 out, err = self.run_bzr('branches b')
3411- self.assertEqual(out, b" branch1\n"
3412- b"* branch2\n")
3413+ self.assertEqual(out, " branch1\n"
3414+ "* branch2\n")
3415
3416 def test_standalone_branch(self):
3417 self.make_branch('a')
3418 out, err = self.run_bzr('branches a')
3419- self.assertEqual(out, b"* (default)\n")
3420+ self.assertEqual(out, "* (default)\n")
3421
3422=== modified file 'breezy/tests/blackbox/test_break_lock.py'
3423--- breezy/tests/blackbox/test_break_lock.py 2018-06-29 15:36:29 +0000
3424+++ breezy/tests/blackbox/test_break_lock.py 2018-07-14 19:37:12 +0000
3425@@ -67,7 +67,7 @@
3426 def test_break_lock_help(self):
3427 out, err = self.run_bzr('break-lock --help')
3428 # shouldn't fail and should not produce error output
3429- self.assertEqual(b'', err)
3430+ self.assertEqual('', err)
3431
3432 def test_break_lock_no_interaction(self):
3433 """With --force, the user isn't asked for confirmation"""
3434
3435=== modified file 'breezy/tests/blackbox/test_bundle_info.py'
3436--- breezy/tests/blackbox/test_bundle_info.py 2018-06-29 17:57:21 +0000
3437+++ breezy/tests/blackbox/test_bundle_info.py 2018-07-14 19:37:12 +0000
3438@@ -37,7 +37,7 @@
3439 self.assertContainsRe(info, b'file: [12] .0 multiparent.')
3440 self.assertContainsRe(info, b'nicks: source')
3441 self.assertNotContainsRe(info, b'foo')
3442- self.run_bzr_error([b'--verbose requires a merge directive'],
3443+ self.run_bzr_error(['--verbose requires a merge directive'],
3444 'bundle-info -v bundle')
3445 target = self.make_branch('target')
3446 md = merge_directive.MergeDirective2.from_objects(
3447
3448=== modified file 'breezy/tests/blackbox/test_cat.py'
3449--- breezy/tests/blackbox/test_cat.py 2018-06-29 15:36:29 +0000
3450+++ breezy/tests/blackbox/test_cat.py 2018-07-14 19:37:12 +0000
3451@@ -93,28 +93,28 @@
3452 tree.add(['e-rev'])
3453
3454 # 'b-tree' is not present in the old tree.
3455- self.run_bzr_error([b"^brz: ERROR: u?'b-tree' "
3456- b"is not present in revision .+$"],
3457+ self.run_bzr_error(["^brz: ERROR: u?'b-tree' "
3458+ "is not present in revision .+$"],
3459 'cat b-tree --name-from-revision')
3460
3461 # get to the old file automatically
3462 out, err = self.run_bzr('cat d-rev')
3463- self.assertEqual(b'', err)
3464- self.assertEqual(b'bar\n', out)
3465+ self.assertEqual('', err)
3466+ self.assertEqual('bar\n', out)
3467
3468 out, err = \
3469 self.run_bzr('cat a-rev-tree --name-from-revision')
3470- self.assertEqual(b'foo\n', out)
3471- self.assertEqual(b'', err)
3472+ self.assertEqual('foo\n', out)
3473+ self.assertEqual('', err)
3474
3475 out, err = self.run_bzr('cat a-rev-tree')
3476- self.assertEqual(b'baz\n', out)
3477- self.assertEqual(b'', err)
3478+ self.assertEqual('baz\n', out)
3479+ self.assertEqual('', err)
3480
3481 # the actual file-id for e-rev doesn't exist in the old tree
3482 out, err = self.run_bzr('cat e-rev -rrevid:first')
3483- self.assertEqual(b'qux\n', out)
3484- self.assertEqual(b'', err)
3485+ self.assertEqual('qux\n', out)
3486+ self.assertEqual('', err)
3487
3488 def test_remote_cat(self):
3489 wt = self.make_branch_and_tree('.')
3490@@ -124,7 +124,7 @@
3491
3492 url = self.get_readonly_url() + '/README'
3493 out, err = self.run_bzr(['cat', url])
3494- self.assertEqual(b'contents of README\n', out)
3495+ self.assertEqual('contents of README\n', out)
3496
3497 def test_cat_branch_revspec(self):
3498 wt = self.make_branch_and_tree('a')
3499@@ -135,7 +135,7 @@
3500
3501 out, err = self.run_bzr(['cat', '-r', 'branch:../a', 'README'],
3502 working_dir='b')
3503- self.assertEqual(b'contents of a/README\n', out)
3504+ self.assertEqual('contents of a/README\n', out)
3505
3506 def test_cat_filters(self):
3507 wt = self.make_branch_and_tree('.')
3508@@ -146,11 +146,11 @@
3509
3510 # Test unfiltered output
3511 out, err = self.run_bzr(['cat', url])
3512- self.assertEqual(b'contents of README\n', out)
3513+ self.assertEqual('contents of README\n', out)
3514
3515 # Test --filters option is legal but has no impact if no filters
3516 out, err = self.run_bzr(['cat', '--filters', url])
3517- self.assertEqual(b'contents of README\n', out)
3518+ self.assertEqual('contents of README\n', out)
3519
3520 def test_cat_filters_applied(self):
3521 # Test filtering applied to output. This is tricky to do in a
3522@@ -173,8 +173,8 @@
3523 try:
3524 out, err = self.run_bzr(['cat', url, '--filters'])
3525 # The filter stack will remove the first line and swapcase the rest
3526- self.assertEqual(b'LINE 1 OF readme\nLINE 2 OF readme\n', out)
3527- self.assertEqual(b'', err)
3528+ self.assertEqual('LINE 1 OF readme\nLINE 2 OF readme\n', out)
3529+ self.assertEqual('', err)
3530 finally:
3531 Tree._content_filter_stack = real_content_filter_stack
3532
3533@@ -187,11 +187,11 @@
3534
3535 url = self.get_readonly_url() + '/README'
3536 out, err = self.run_bzr(['cat', url])
3537- self.assertEqual(b'contents of README\n', out)
3538+ self.assertEqual('contents of README\n', out)
3539
3540 def test_cat_nonexistent_branch(self):
3541 self.vfs_transport_factory = memory.MemoryServer
3542- self.run_bzr_error([b'^brz: ERROR: Not a branch'],
3543+ self.run_bzr_error(['^brz: ERROR: Not a branch'],
3544 ['cat', self.get_url()])
3545
3546 def test_cat_directory(self):
3547@@ -201,7 +201,7 @@
3548 wt.commit('Making sure there is a basis_tree available')
3549
3550 out, err = self.run_bzr(['cat', '--directory=a', 'README'])
3551- self.assertEqual(b'contents of a/README\n', out)
3552+ self.assertEqual('contents of a/README\n', out)
3553
3554 def test_cat_remote_directory(self):
3555 wt = self.make_branch_and_tree('a')
3556@@ -211,7 +211,7 @@
3557
3558 url = self.get_readonly_url() + '/a'
3559 out, err = self.run_bzr(['cat', '-d', url, 'README'])
3560- self.assertEqual(b'contents of a/README\n', out)
3561+ self.assertEqual('contents of a/README\n', out)
3562
3563
3564 class TestSmartServerCat(tests.TestCaseWithTransport):
3565
3566=== modified file 'breezy/tests/blackbox/test_cat_revision.py'
3567--- breezy/tests/blackbox/test_cat_revision.py 2018-07-03 02:40:57 +0000
3568+++ breezy/tests/blackbox/test_cat_revision.py 2018-07-14 19:37:12 +0000
3569@@ -24,8 +24,8 @@
3570 tree = self.make_branch_and_tree('.')
3571 tree.commit('This revision', rev_id=b'abcd')
3572 output, errors = self.run_bzr(['cat-revision', u'abcd'])
3573- self.assertContainsRe(output, b'This revision')
3574- self.assertEqual(b'', errors)
3575+ self.assertContainsRe(output, 'This revision')
3576+ self.assertEqual('', errors)
3577
3578 def test_cat_revision(self):
3579 """Test brz cat-revision.
3580@@ -56,20 +56,20 @@
3581 def test_cat_no_such_revid(self):
3582 tree = self.make_branch_and_tree('.')
3583 err = self.run_bzr('cat-revision abcd', retcode=3)[1]
3584- self.assertContainsRe(err, b'The repository .* contains no revision abcd.')
3585+ self.assertContainsRe(err, 'The repository .* contains no revision abcd.')
3586
3587 def test_cat_revision_directory(self):
3588 """Test --directory option"""
3589 tree = self.make_branch_and_tree('a')
3590 tree.commit('This revision', rev_id=b'abcd')
3591 output, errors = self.run_bzr(['cat-revision', '-d', 'a', u'abcd'])
3592- self.assertContainsRe(output, b'This revision')
3593- self.assertEqual(b'', errors)
3594+ self.assertContainsRe(output, 'This revision')
3595+ self.assertEqual('', errors)
3596
3597 def test_cat_tree_less_branch(self):
3598 tree = self.make_branch_and_tree('.')
3599 tree.commit('This revision', rev_id=b'abcd')
3600 tree.controldir.destroy_workingtree()
3601 output, errors = self.run_bzr(['cat-revision', '-d', 'a', u'abcd'])
3602- self.assertContainsRe(output, b'This revision')
3603- self.assertEqual(b'', errors)
3604+ self.assertContainsRe(output, 'This revision')
3605+ self.assertEqual('', errors)
3606
3607=== modified file 'breezy/tests/blackbox/test_check.py'
3608--- breezy/tests/blackbox/test_check.py 2018-06-29 15:36:29 +0000
3609+++ breezy/tests/blackbox/test_check.py 2018-07-14 19:37:12 +0000
3610@@ -34,46 +34,46 @@
3611 tree = self.make_branch_and_tree('.')
3612 tree.commit('hallelujah')
3613 out, err = self.run_bzr('check')
3614- self.assertContainsRe(err, br"Checking working tree at '.*'\.\n")
3615- self.assertContainsRe(err, br"Checking repository at '.*'\.\n")
3616+ self.assertContainsRe(err, r"Checking working tree at '.*'\.\n")
3617+ self.assertContainsRe(err, r"Checking repository at '.*'\.\n")
3618 # the root directory may be in the texts for rich root formats
3619- self.assertContainsRe(err, br"checked repository.*\n"
3620- br" 1 revisions\n"
3621- br" [01] file-ids\n"
3622+ self.assertContainsRe(err, r"checked repository.*\n"
3623+ r" 1 revisions\n"
3624+ r" [01] file-ids\n"
3625 )
3626- self.assertContainsRe(err, br"Checking branch at '.*'\.\n")
3627- self.assertContainsRe(err, br"checked branch.*")
3628+ self.assertContainsRe(err, r"Checking branch at '.*'\.\n")
3629+ self.assertContainsRe(err, r"checked branch.*")
3630
3631 def test_check_branch(self):
3632 tree = self.make_branch_and_tree('.')
3633 tree.commit('foo')
3634 out, err = self.run_bzr('check --branch')
3635- self.assertContainsRe(err, br"^Checking branch at '.*'\.\n"
3636- br"checked branch.*")
3637+ self.assertContainsRe(err, r"^Checking branch at '.*'\.\n"
3638+ r"checked branch.*")
3639
3640 def test_check_repository(self):
3641 tree = self.make_branch_and_tree('.')
3642 tree.commit('foo')
3643 out, err = self.run_bzr('check --repo')
3644- self.assertContainsRe(err, br"^Checking repository at '.*'\.\n"
3645- br"checked repository.*\n"
3646- br" 1 revisions\n"
3647- br" [01] file-ids\n"
3648+ self.assertContainsRe(err, r"^Checking repository at '.*'\.\n"
3649+ r"checked repository.*\n"
3650+ r" 1 revisions\n"
3651+ r" [01] file-ids\n"
3652 )
3653
3654 def test_check_tree(self):
3655 tree = self.make_branch_and_tree('.')
3656 tree.commit('foo')
3657 out, err = self.run_bzr('check --tree')
3658- self.assertContainsRe(err, br"^Checking working tree at '.*'\.\n$")
3659+ self.assertContainsRe(err, r"^Checking working tree at '.*'\.\n$")
3660
3661 def test_partial_check(self):
3662 tree = self.make_branch_and_tree('.')
3663 tree.commit('foo')
3664 out, err = self.run_bzr('check --tree --branch')
3665- self.assertContainsRe(err, br"^Checking working tree at '.*'\.\n"
3666- br"Checking branch at '.*'\.\n"
3667- br"checked branch.*")
3668+ self.assertContainsRe(err, r"^Checking working tree at '.*'\.\n"
3669+ r"Checking branch at '.*'\.\n"
3670+ r"checked branch.*")
3671
3672 def test_check_missing_tree(self):
3673 branch = self.make_branch('.')
3674@@ -84,14 +84,14 @@
3675 branch = self.make_branch('.')
3676 out, err = self.run_bzr('check --tree --branch')
3677 self.assertContainsRe(err,
3678- br"Checking branch at '.*'\.\n"
3679- br"No working tree found at specified location\.\n"
3680- br"checked branch.*")
3681+ r"Checking branch at '.*'\.\n"
3682+ r"No working tree found at specified location\.\n"
3683+ r"checked branch.*")
3684
3685 def test_check_missing_branch_in_shared_repo(self):
3686 self.make_repository('shared', shared=True)
3687 out, err = self.run_bzr('check --branch shared')
3688- self.assertEqual(err, b"No branch found at specified location.\n")
3689+ self.assertEqual(err, "No branch found at specified location.\n")
3690
3691
3692 class ChrootedCheckTests(ChrootedTestCase):
3693@@ -99,14 +99,14 @@
3694 def test_check_missing_branch(self):
3695 out, err = self.run_bzr(
3696 'check --branch %s' % self.get_readonly_url(''))
3697- self.assertEqual(err, b"No branch found at specified location.\n")
3698+ self.assertEqual(err, "No branch found at specified location.\n")
3699
3700 def test_check_missing_repository(self):
3701 out, err = self.run_bzr('check --repo %s' % self.get_readonly_url(''))
3702- self.assertEqual(err, b"No repository found at specified location.\n")
3703+ self.assertEqual(err, "No repository found at specified location.\n")
3704
3705 def test_check_missing_everything(self):
3706 out, err = self.run_bzr('check %s' % self.get_readonly_url(''))
3707- self.assertEqual(err, b"No working tree found at specified location.\n"
3708- b"No branch found at specified location.\n"
3709- b"No repository found at specified location.\n")
3710+ self.assertEqual(err, "No working tree found at specified location.\n"
3711+ "No branch found at specified location.\n"
3712+ "No repository found at specified location.\n")
3713
3714=== modified file 'breezy/tests/blackbox/test_command_encoding.py'
3715--- breezy/tests/blackbox/test_command_encoding.py 2018-06-29 15:36:29 +0000
3716+++ breezy/tests/blackbox/test_command_encoding.py 2018-07-14 19:37:12 +0000
3717@@ -54,7 +54,7 @@
3718
3719 register_command(cmd_echo_exact)
3720 try:
3721- self.assertEqual(b'foo', bzr('echo-exact foo'))
3722+ self.assertEqual('foo', bzr('echo-exact foo'))
3723 # Exact should fail to decode the string
3724 self.assertRaises(UnicodeEncodeError,
3725 bzr,
3726@@ -71,7 +71,7 @@
3727
3728 register_command(cmd_echo_strict)
3729 try:
3730- self.assertEqual(b'foo', bzr('echo-strict foo'))
3731+ self.assertEqual('foo', bzr('echo-strict foo'))
3732 self.assertEqual(u'foo\xb5'.encode('utf-8'),
3733 bzr(['echo-strict', u'foo\xb5']))
3734 finally:
3735@@ -84,7 +84,7 @@
3736
3737 register_command(cmd_echo_strict)
3738 try:
3739- self.assertEqual(b'foo', bzr('echo-strict foo'))
3740+ self.assertEqual('foo', bzr('echo-strict foo'))
3741 # ascii can't encode \xb5
3742 self.assertRaises(UnicodeEncodeError,
3743 bzr,
3744@@ -99,7 +99,7 @@
3745
3746 register_command(cmd_echo_replace)
3747 try:
3748- self.assertEqual(b'foo', bzr('echo-replace foo'))
3749+ self.assertEqual('foo', bzr('echo-replace foo'))
3750 self.assertEqual(u'foo\xb5'.encode('utf-8'),
3751 bzr(['echo-replace', u'foo\xb5']))
3752 finally:
3753@@ -112,9 +112,9 @@
3754
3755 register_command(cmd_echo_replace)
3756 try:
3757- self.assertEqual(b'foo', bzr('echo-replace foo'))
3758+ self.assertEqual('foo', bzr('echo-replace foo'))
3759 # ascii can't encode \xb5
3760- self.assertEqual(b'foo?', bzr(['echo-replace', u'foo\xb5']))
3761+ self.assertEqual('foo?', bzr(['echo-replace', u'foo\xb5']))
3762 finally:
3763 plugin_cmds.remove('echo-replace')
3764
3765
3766=== modified file 'breezy/tests/blackbox/test_commit.py'
3767--- breezy/tests/blackbox/test_commit.py 2018-07-08 15:47:10 +0000
3768+++ breezy/tests/blackbox/test_commit.py 2018-07-14 19:37:12 +0000
3769@@ -47,7 +47,7 @@
3770 self.make_branch_and_tree('.')
3771 self.build_tree(['hello.txt'])
3772 out, err = self.run_bzr('commit -m empty', retcode=3)
3773- self.assertEqual(b'', out)
3774+ self.assertEqual('', out)
3775 # Two ugly bits here.
3776 # 1) We really don't want 'aborting commit write group' anymore.
3777 # 2) brz: ERROR: is a really long line, so we wrap it with '\'
3778@@ -109,10 +109,10 @@
3779 self.build_tree(['hello.txt'])
3780 tree.add("hello.txt")
3781 out, err = self.run_bzr('commit -m added')
3782- self.assertEqual(b'', out)
3783- self.assertContainsRe(err, b'^Committing to: .*\n'
3784- b'added hello.txt\n'
3785- b'Committed revision 1.\n$',)
3786+ self.assertEqual('', out)
3787+ self.assertContainsRe(err, '^Committing to: .*\n'
3788+ 'added hello.txt\n'
3789+ 'Committed revision 1.\n$',)
3790
3791 def prepare_simple_history(self):
3792 """Prepare and return a working tree with one commit of one file"""
3793@@ -128,10 +128,10 @@
3794 wt = self.prepare_simple_history()
3795 self.build_tree_contents([('hello.txt', b'new contents')])
3796 out, err = self.run_bzr('commit -m modified')
3797- self.assertEqual(b'', out)
3798- self.assertContainsRe(err, b'^Committing to: .*\n'
3799- b'modified hello\\.txt\n'
3800- b'Committed revision 2\\.\n$')
3801+ self.assertEqual('', out)
3802+ self.assertContainsRe(err, '^Committing to: .*\n'
3803+ 'modified hello\\.txt\n'
3804+ 'Committed revision 2\\.\n$')
3805
3806 def test_unicode_commit_message_is_filename(self):
3807 """Unicode commit message same as a filename (Bug #563646).
3808@@ -177,7 +177,7 @@
3809 tree.add(["f"])
3810 out, err = self.run_bzr(["commit", "-m", "Wrong filename", u"\xa7"],
3811 encoding="utf-8", retcode=3)
3812- self.assertContainsRe(err, b"(?m)not versioned: \"\xc2\xa7\"$")
3813+ self.assertContainsRe(err, "(?m)not versioned: \"\xc2\xa7\"$")
3814
3815 def test_non_ascii_file_unversioned_iso_8859_5(self):
3816 self.requireFeature(features.UnicodeFilenameFeature)
3817@@ -188,7 +188,7 @@
3818 encoding="iso-8859-5", retcode=3)
3819 self.expectFailure("Error messages are always written as UTF-8",
3820 self.assertNotContainsString, err, "\xc2\xa7")
3821- self.assertContainsRe(err, b"(?m)not versioned: \"\xfd\"$")
3822+ self.assertContainsRe(err, "(?m)not versioned: \"\xfd\"$")
3823
3824 def test_warn_about_forgotten_commit_message(self):
3825 """Test that the lack of -m parameter is caught"""
3826@@ -196,17 +196,17 @@
3827 self.build_tree(['one', 'two'])
3828 wt.add(['two'])
3829 out, err = self.run_bzr('commit -m one two')
3830- self.assertContainsRe(err, b"The commit message is a file name")
3831+ self.assertContainsRe(err, "The commit message is a file name")
3832
3833 def test_verbose_commit_renamed(self):
3834 # Verbose commit of renamed file should say so
3835 wt = self.prepare_simple_history()
3836 wt.rename_one('hello.txt', 'gutentag.txt')
3837 out, err = self.run_bzr('commit -m renamed')
3838- self.assertEqual(b'', out)
3839- self.assertContainsRe(err, b'^Committing to: .*\n'
3840- b'renamed hello\\.txt => gutentag\\.txt\n'
3841- b'Committed revision 2\\.$\n')
3842+ self.assertEqual('', out)
3843+ self.assertContainsRe(err, '^Committing to: .*\n'
3844+ 'renamed hello\\.txt => gutentag\\.txt\n'
3845+ 'Committed revision 2\\.$\n')
3846
3847 def test_verbose_commit_moved(self):
3848 # Verbose commit of file moved to new directory should say so
3849@@ -215,13 +215,13 @@
3850 wt.add(['subdir'])
3851 wt.rename_one('hello.txt', 'subdir/hello.txt')
3852 out, err = self.run_bzr('commit -m renamed')
3853- self.assertEqual(b'', out)
3854+ self.assertEqual('', out)
3855 self.assertEqual({
3856- b'Committing to: %s/' % osutils.getcwd(),
3857- b'added subdir',
3858- b'renamed hello.txt => subdir/hello.txt',
3859- b'Committed revision 2.',
3860- b'',
3861+ 'Committing to: %s/' % osutils.getcwd(),
3862+ 'added subdir',
3863+ 'renamed hello.txt => subdir/hello.txt',
3864+ 'Committed revision 2.',
3865+ '',
3866 }, set(err.split('\n')))
3867
3868 def test_verbose_commit_with_unknown(self):
3869@@ -231,10 +231,10 @@
3870 self.build_tree(['hello.txt', 'extra.txt'])
3871 wt.add(['hello.txt'])
3872 out, err = self.run_bzr('commit -m added')
3873- self.assertEqual(b'', out)
3874- self.assertContainsRe(err, b'^Committing to: .*\n'
3875- b'added hello\\.txt\n'
3876- b'Committed revision 1\\.\n$')
3877+ self.assertEqual('', out)
3878+ self.assertContainsRe(err, '^Committing to: .*\n'
3879+ 'added hello\\.txt\n'
3880+ 'Committed revision 1\\.\n$')
3881
3882 def test_verbose_commit_with_unchanged(self):
3883 """Unchanged files should not be listed by default in verbose output"""
3884@@ -244,10 +244,10 @@
3885 self.run_bzr('commit -m unchanged unchanged.txt')
3886 tree.add("hello.txt")
3887 out, err = self.run_bzr('commit -m added')
3888- self.assertEqual(b'', out)
3889- self.assertContainsRe(err, b'^Committing to: .*\n'
3890- b'added hello\\.txt\n'
3891- b'Committed revision 2\\.$\n')
3892+ self.assertEqual('', out)
3893+ self.assertContainsRe(err, '^Committing to: .*\n'
3894+ 'added hello\\.txt\n'
3895+ 'Committed revision 2\\.$\n')
3896
3897 def test_verbose_commit_includes_master_location(self):
3898 """Location of master is displayed when committing to bound branch"""
3899@@ -331,21 +331,21 @@
3900 other_tree.unlock()
3901 this_tree.merge_from_branch(other_tree.branch)
3902 out, err = self.run_bzr('commit -m added', working_dir='this')
3903- self.assertEqual(b'', out)
3904+ self.assertEqual('', out)
3905 self.assertEqual({
3906- b'Committing to: %s/' % osutils.pathjoin(osutils.getcwd().encode('utf-8'), 'this'),
3907- b'modified filetomodify',
3908- b'added newdir',
3909- b'added newfile',
3910- b'renamed dirtorename => renameddir',
3911- b'renamed filetorename => renamedfile',
3912- b'renamed dirtoreparent => renameddir/reparenteddir',
3913- b'renamed filetoreparent => renameddir/reparentedfile',
3914- b'deleted dirtoremove',
3915- b'deleted filetoremove',
3916- b'Committed revision 2.',
3917- b''
3918- }, set(err.split(b'\n')))
3919+ 'Committing to: %s/' % osutils.pathjoin(osutils.getcwd(), 'this'),
3920+ 'modified filetomodify',
3921+ 'added newdir',
3922+ 'added newfile',
3923+ 'renamed dirtorename => renameddir',
3924+ 'renamed filetorename => renamedfile',
3925+ 'renamed dirtoreparent => renameddir/reparenteddir',
3926+ 'renamed filetoreparent => renameddir/reparentedfile',
3927+ 'deleted dirtoremove',
3928+ 'deleted filetoremove',
3929+ 'Committed revision 2.',
3930+ ''
3931+ }, set(err.split('\n')))
3932
3933 def test_empty_commit_message(self):
3934 tree = self.make_branch_and_tree('.')
3935@@ -369,7 +369,7 @@
3936 # can commit to branch - records bar.c
3937 self.run_bzr('commit -m newstuff branch')
3938 # No changes left
3939- self.run_bzr_error([b"No changes to commit"], 'commit -m newstuff branch')
3940+ self.run_bzr_error(["No changes to commit"], 'commit -m newstuff branch')
3941
3942 def test_out_of_date_tree_commit(self):
3943 # check we get an error code and a clear message committing with an out
3944@@ -443,12 +443,12 @@
3945 self.build_tree(['a', 'b', 'c'])
3946 tree.smart_add(['.'])
3947 out, err = self.run_bzr(['commit', '-m', 'test', '-x', 'b'])
3948- self.assertFalse(b'added b' in out)
3949- self.assertFalse(b'added b' in err)
3950+ self.assertFalse('added b' in out)
3951+ self.assertFalse('added b' in err)
3952 # If b was excluded it will still be 'added' in status.
3953 out, err = self.run_bzr(['added'])
3954- self.assertEqual(b'b\n', out)
3955- self.assertEqual(b'', err)
3956+ self.assertEqual('b\n', out)
3957+ self.assertEqual('', err)
3958
3959 def test_commit_exclude_twice_uses_both_rules(self):
3960 """Commit -x foo -x bar should ignore changes to foo and bar."""
3961@@ -456,15 +456,15 @@
3962 self.build_tree(['a', 'b', 'c'])
3963 tree.smart_add(['.'])
3964 out, err = self.run_bzr(['commit', '-m', 'test', '-x', 'b', '-x', 'c'])
3965- self.assertFalse(b'added b' in out)
3966- self.assertFalse(b'added c' in out)
3967- self.assertFalse(b'added b' in err)
3968- self.assertFalse(b'added c' in err)
3969+ self.assertFalse('added b' in out)
3970+ self.assertFalse('added c' in out)
3971+ self.assertFalse('added b' in err)
3972+ self.assertFalse('added c' in err)
3973 # If b was excluded it will still be 'added' in status.
3974 out, err = self.run_bzr(['added'])
3975- self.assertTrue(b'b\n' in out)
3976- self.assertTrue(b'c\n' in out)
3977- self.assertEqual(b'', err)
3978+ self.assertTrue('b\n' in out)
3979+ self.assertTrue('c\n' in out)
3980+ self.assertEqual('', err)
3981
3982 def test_commit_respects_spec_for_removals(self):
3983 """Commit with a file spec should only commit removals that match"""
3984@@ -497,7 +497,7 @@
3985
3986 # With no changes, it should just be 'no changes'
3987 # Make sure that commit is failing because there is nothing to do
3988- self.run_bzr_error([b'No changes to commit'],
3989+ self.run_bzr_error(['No changes to commit'],
3990 'commit --strict -m no-changes',
3991 working_dir='tree')
3992
3993@@ -515,7 +515,7 @@
3994 # Add one file so there is a change, but forget the other
3995 self.build_tree(['tree/b', 'tree/c'])
3996 tree.add('b')
3997- self.run_bzr_error([b'Commit refused because there are unknown files'],
3998+ self.run_bzr_error(['Commit refused because there are unknown files'],
3999 'commit --strict -m add-b',
4000 working_dir='tree')
4001
4002@@ -530,10 +530,10 @@
4003 tree.add('hello.txt')
4004 output, err = self.run_bzr(
4005 'commit -m hello --fixes=lp:23452 tree/hello.txt')
4006- self.assertEqual(b'', output)
4007- self.assertContainsRe(err, b'Committing to: .*\n'
4008- b'added hello\\.txt\n'
4009- b'Committed revision 1\\.\n')
4010+ self.assertEqual('', output)
4011+ self.assertContainsRe(err, 'Committing to: .*\n'
4012+ 'added hello\\.txt\n'
4013+ 'Committed revision 1\\.\n')
4014
4015 def test_fixes_bug_unicode(self):
4016 """commit --fixes=lp:unicode succeeds without output."""
4017@@ -544,7 +544,7 @@
4018 ['commit', '-m', 'hello',
4019 u'--fixes=generic:\u20ac', 'tree/hello.txt'],
4020 encoding='utf-8', retcode=3)
4021- self.assertEqual(b'', output)
4022+ self.assertEqual('', output)
4023 self.assertContainsRe(err,
4024 b'brz: ERROR: Unrecognized bug generic:\xe2\x82\xac\\. Commit refused.\n')
4025
4026@@ -764,8 +764,8 @@
4027 self.build_tree_contents([('test', b'changes in test')])
4028 # partial commit
4029 out, err = self.run_bzr('commit test -m "partial commit"')
4030- self.assertEqual(b'', out)
4031- self.assertContainsRe(err, br'modified test\nCommitted revision 2.')
4032+ self.assertEqual('', out)
4033+ self.assertContainsRe(err, r'modified test\nCommitted revision 2.')
4034
4035 def test_commit_readonly_checkout(self):
4036 # https://bugs.launchpad.net/bzr/+bug/129701
4037@@ -820,10 +820,10 @@
4038 def test_commit_hook_template_rejected(self):
4039 tree = self.setup_commit_with_template()
4040 expected = tree.last_revision()
4041- out, err = self.run_bzr_error([b"Empty commit message specified."
4042- b" Please specify a commit message with either"
4043- b" --message or --file or leave a blank message"
4044- b" with --message \"\"."],
4045+ out, err = self.run_bzr_error(["Empty commit message specified."
4046+ " Please specify a commit message with either"
4047+ " --message or --file or leave a blank message"
4048+ " with --message \"\"."],
4049 "commit tree/hello.txt", stdin="n\n")
4050 self.assertEqual(expected, tree.last_revision())
4051
4052
4053=== modified file 'breezy/tests/blackbox/test_config.py'
4054--- breezy/tests/blackbox/test_config.py 2018-06-29 15:36:29 +0000
4055+++ breezy/tests/blackbox/test_config.py 2018-07-14 19:37:12 +0000
4056@@ -32,32 +32,32 @@
4057
4058 def test_config_all(self):
4059 out, err = self.run_bzr(['config'])
4060- self.assertEqual(b'', out)
4061- self.assertEqual(b'', err)
4062+ self.assertEqual('', out)
4063+ self.assertEqual('', err)
4064
4065 def test_remove_unknown_option(self):
4066- self.run_bzr_error([b'The "file" configuration option does not exist',],
4067+ self.run_bzr_error(['The "file" configuration option does not exist',],
4068 ['config', '--remove', 'file'])
4069
4070 def test_all_remove_exclusive(self):
4071- self.run_bzr_error([b'--all and --remove are mutually exclusive.',],
4072+ self.run_bzr_error(['--all and --remove are mutually exclusive.',],
4073 ['config', '--remove', '--all'])
4074
4075 def test_all_set_exclusive(self):
4076- self.run_bzr_error([b'Only one option can be set.',],
4077+ self.run_bzr_error(['Only one option can be set.',],
4078 ['config', '--all', 'hello=world'])
4079
4080 def test_remove_no_option(self):
4081- self.run_bzr_error([b'--remove expects an option to remove.',],
4082+ self.run_bzr_error(['--remove expects an option to remove.',],
4083 ['config', '--remove'])
4084
4085 def test_unknown_option(self):
4086- self.run_bzr_error([b'The "file" configuration option does not exist',],
4087+ self.run_bzr_error(['The "file" configuration option does not exist',],
4088 ['config', 'file'])
4089
4090 def test_unexpected_regexp(self):
4091 self.run_bzr_error(
4092- [b'The "\\*file" configuration option does not exist',],
4093+ ['The "\\*file" configuration option does not exist',],
4094 ['config', '*file'])
4095
4096 def test_wrong_regexp(self):
4097@@ -239,7 +239,7 @@
4098 _t_config.create_configs(self)
4099
4100 def test_unknown_config(self):
4101- self.run_bzr_error([b'The "moon" configuration does not exist'],
4102+ self.run_bzr_error(['The "moon" configuration does not exist'],
4103 ['config', '--scope', 'moon', 'hello=world'])
4104
4105 def test_breezy_config_outside_branch(self):
4106@@ -293,7 +293,7 @@
4107 _t_config.create_configs_with_file_option(self)
4108
4109 def test_unknown_config(self):
4110- self.run_bzr_error([b'The "moon" configuration does not exist'],
4111+ self.run_bzr_error(['The "moon" configuration does not exist'],
4112 ['config', '--scope', 'moon', '--remove', 'file'])
4113
4114 def test_breezy_config_outside_branch(self):
4115@@ -393,4 +393,4 @@
4116 clone.get_config_stack().set('test', 'clone')
4117 out, err = self.run_bzr(['config', '-d', ':parent', 'test'],
4118 working_dir='clone')
4119- self.assertEqual(b'base\n', out)
4120+ self.assertEqual('base\n', out)
4121
4122=== modified file 'breezy/tests/blackbox/test_conflicts.py'
4123--- breezy/tests/blackbox/test_conflicts.py 2018-02-18 15:21:06 +0000
4124+++ breezy/tests/blackbox/test_conflicts.py 2018-07-14 19:37:12 +0000
4125@@ -111,7 +111,7 @@
4126 self.assertEqual(out.decode(self.encoding),
4127 u"\xA7_other_file\n"
4128 u"\xA7file\n")
4129- self.assertEqual(err, "")
4130+ self.assertEqual(err, b"")
4131
4132
4133 class TestUnicodePathsOnAsciiTerminal(TestUnicodePaths):
4134
4135=== modified file 'breezy/tests/blackbox/test_cp.py'
4136--- breezy/tests/blackbox/test_cp.py 2018-06-29 15:36:29 +0000
4137+++ breezy/tests/blackbox/test_cp.py 2018-07-14 19:37:12 +0000
4138@@ -50,7 +50,7 @@
4139 'cp doesnotexist somewhereelse')
4140
4141 def test_cp_unqualified(self):
4142- self.run_bzr_error([b'^brz: ERROR: missing file argument$'], 'cp')
4143+ self.run_bzr_error(['^brz: ERROR: missing file argument$'], 'cp')
4144
4145 def test_cp_invalid(self):
4146 tree = self.make_branch_and_tree('.')
4147
4148=== modified file 'breezy/tests/blackbox/test_debug.py'
4149--- breezy/tests/blackbox/test_debug.py 2018-06-30 14:54:27 +0000
4150+++ breezy/tests/blackbox/test_debug.py 2018-07-14 19:37:12 +0000
4151@@ -33,7 +33,7 @@
4152 # error output should contain a traceback; we used to look for code in
4153 # here but it may be missing if the source is not in sync with the
4154 # pyc file.
4155- self.assertContainsRe(err, b"Traceback \\(most recent call last\\)")
4156+ self.assertContainsRe(err, "Traceback \\(most recent call last\\)")
4157
4158 def test_dash_dlock(self):
4159 # With -Dlock, locking and unlocking is recorded into the log
4160
4161=== modified file 'breezy/tests/blackbox/test_deleted.py'
4162--- breezy/tests/blackbox/test_deleted.py 2018-06-29 15:36:29 +0000
4163+++ breezy/tests/blackbox/test_deleted.py 2018-07-14 19:37:12 +0000
4164@@ -34,4 +34,4 @@
4165 tree.commit('r1')
4166 tree.remove('README')
4167 out, err = self.run_bzr(['deleted', '--directory=a'])
4168- self.assertEqual(b'README\n', out)
4169+ self.assertEqual('README\n', out)
4170
4171=== modified file 'breezy/tests/blackbox/test_diff.py'
4172--- breezy/tests/blackbox/test_diff.py 2018-06-29 18:16:34 +0000
4173+++ breezy/tests/blackbox/test_diff.py 2018-07-14 19:37:12 +0000
4174@@ -163,7 +163,7 @@
4175 self.make_example_branch()
4176 self.build_tree(['unversioned-file'])
4177 out, err = self.run_bzr('diff unversioned-file', retcode=3)
4178- self.assertContainsRe(err, b'not versioned.*unversioned-file')
4179+ self.assertContainsRe(err, 'not versioned.*unversioned-file')
4180
4181 # TODO: What should diff say for a file deleted in working tree?
4182
4183@@ -182,32 +182,32 @@
4184 def check_b2_vs_b1(self, cmd):
4185 # Compare branch2 vs branch1 using cmd and check the result
4186 out, err = self.run_bzr(cmd, retcode=1)
4187- self.assertEqual(b'', err)
4188- self.assertEqual(b"=== modified file 'file'\n"
4189- b"--- old/file\tYYYY-MM-DD HH:MM:SS +ZZZZ\n"
4190- b"+++ new/file\tYYYY-MM-DD HH:MM:SS +ZZZZ\n"
4191- b"@@ -1,1 +1,1 @@\n"
4192- b"-new content\n"
4193- b"+contents of branch1/file\n"
4194- b"\n", subst_dates(out))
4195+ self.assertEqual('', err)
4196+ self.assertEqual("=== modified file 'file'\n"
4197+ "--- old/file\tYYYY-MM-DD HH:MM:SS +ZZZZ\n"
4198+ "+++ new/file\tYYYY-MM-DD HH:MM:SS +ZZZZ\n"
4199+ "@@ -1,1 +1,1 @@\n"
4200+ "-new content\n"
4201+ "+contents of branch1/file\n"
4202+ "\n", subst_dates(out))
4203
4204 def check_b1_vs_b2(self, cmd):
4205 # Compare branch1 vs branch2 using cmd and check the result
4206 out, err = self.run_bzr(cmd, retcode=1)
4207- self.assertEqual(b'', err)
4208- self.assertEqualDiff(b"=== modified file 'file'\n"
4209- b"--- old/file\tYYYY-MM-DD HH:MM:SS +ZZZZ\n"
4210- b"+++ new/file\tYYYY-MM-DD HH:MM:SS +ZZZZ\n"
4211- b"@@ -1,1 +1,1 @@\n"
4212- b"-contents of branch1/file\n"
4213- b"+new content\n"
4214- b"\n", subst_dates(out))
4215+ self.assertEqual('', err)
4216+ self.assertEqualDiff("=== modified file 'file'\n"
4217+ "--- old/file\tYYYY-MM-DD HH:MM:SS +ZZZZ\n"
4218+ "+++ new/file\tYYYY-MM-DD HH:MM:SS +ZZZZ\n"
4219+ "@@ -1,1 +1,1 @@\n"
4220+ "-contents of branch1/file\n"
4221+ "+new content\n"
4222+ "\n", subst_dates(out))
4223
4224 def check_no_diffs(self, cmd):
4225 # Check that running cmd returns an empty diff
4226 out, err = self.run_bzr(cmd, retcode=0)
4227- self.assertEqual(b'', err)
4228- self.assertEqual(b'', out)
4229+ self.assertEqual('', err)
4230+ self.assertEqual('', out)
4231
4232 def test_diff_branches(self):
4233 self.example_branches()
4234@@ -255,18 +255,18 @@
4235
4236 out, err = self.run_bzr('diff -r revno:1:branch2..revno:1:branch1',
4237 )
4238- self.assertEqual(b'', err)
4239- self.assertEqual(b'', out)
4240+ self.assertEqual('', err)
4241+ self.assertEqual('', out)
4242 out, err = self.run_bzr('diff -r revno:2:branch2..revno:1:branch1',
4243 retcode=1)
4244- self.assertEqual(b'', err)
4245- self.assertEqualDiff(b"=== modified file 'file'\n"
4246- b"--- old/file\tYYYY-MM-DD HH:MM:SS +ZZZZ\n"
4247- b"+++ new/file\tYYYY-MM-DD HH:MM:SS +ZZZZ\n"
4248- b"@@ -1,1 +1,1 @@\n"
4249- b"-new content\n"
4250- b"+contents of branch1/file\n"
4251- b"\n", subst_dates(out))
4252+ self.assertEqual('', err)
4253+ self.assertEqualDiff("=== modified file 'file'\n"
4254+ "--- old/file\tYYYY-MM-DD HH:MM:SS +ZZZZ\n"
4255+ "+++ new/file\tYYYY-MM-DD HH:MM:SS +ZZZZ\n"
4256+ "@@ -1,1 +1,1 @@\n"
4257+ "-new content\n"
4258+ "+contents of branch1/file\n"
4259+ "\n", subst_dates(out))
4260
4261 def example_branch2(self):
4262 branch1_tree = self.make_branch_and_tree('branch1')
4263@@ -394,16 +394,16 @@
4264 retcode=None)
4265 if 'Diff is not installed on this machine' in err:
4266 raise tests.TestSkipped("No external 'diff' is available")
4267- self.assertEqual(b'', err)
4268+ self.assertEqual('', err)
4269 # We have to skip the stuff in the middle, because it depends
4270 # on time.time()
4271 self.assertStartsWith(
4272 out,
4273- b"=== added file 'goodbye'\n"
4274- b"--- old/goodbye\t1970-01-01 00:00:00 +0000\n"
4275- b"+++ new/goodbye\t")
4276- self.assertEndsWith(out, b"\n@@ -0,0 +1 @@\n"
4277- b"+baz\n\n")
4278+ "=== added file 'goodbye'\n"
4279+ "--- old/goodbye\t1970-01-01 00:00:00 +0000\n"
4280+ "+++ new/goodbye\t")
4281+ self.assertEndsWith(out, "\n@@ -0,0 +1 @@\n"
4282+ "+baz\n\n")
4283
4284 def test_external_diff_options_and_using(self):
4285 """Test that the options are passed correctly to an external diff process"""
4286@@ -412,8 +412,8 @@
4287 self.build_tree_contents([('hello', b'Foo\n')])
4288 out, err = self.run_bzr('diff --diff-options -i --using diff',
4289 retcode=1)
4290- self.assertEqual(b"=== modified file 'hello'\n", out)
4291- self.assertEqual(b'', err)
4292+ self.assertEqual("=== modified file 'hello'\n", out)
4293+ self.assertEqual('', err)
4294
4295
4296 class TestDiffOutput(DiffBase):
4297
4298=== modified file 'breezy/tests/blackbox/test_exceptions.py'
4299--- breezy/tests/blackbox/test_exceptions.py 2018-06-29 18:16:34 +0000
4300+++ breezy/tests/blackbox/test_exceptions.py 2018-07-14 19:37:12 +0000
4301@@ -40,8 +40,8 @@
4302 universal_newlines=True,
4303 retcode=errors.EXIT_INTERNAL_ERROR)
4304 self.assertEqual(4, errors.EXIT_INTERNAL_ERROR)
4305- self.assertContainsRe(err, br'\nAssertionError: always fails\n')
4306- self.assertContainsRe(err, br'Bazaar has encountered an internal error')
4307+ self.assertContainsRe(err, r'\nAssertionError: always fails\n')
4308+ self.assertContainsRe(err, r'Bazaar has encountered an internal error')
4309
4310 def test_undecodable_argv(self):
4311 """A user error must be reported if argv is not in the locale encoding
4312@@ -55,7 +55,7 @@
4313 env_changes={"LANG": "C", "LC_ALL": "C"},
4314 universal_newlines=True,
4315 retcode=errors.EXIT_ERROR)
4316- self.assertContainsRe(err, br"^brz: ERROR: .*'\\xa0'.* unsupported",
4317+ self.assertContainsRe(err, r"^brz: ERROR: .*'\\xa0'.* unsupported",
4318 flags=re.MULTILINE)
4319 self.assertEqual(out, "")
4320
4321
4322=== modified file 'breezy/tests/blackbox/test_export.py'
4323--- breezy/tests/blackbox/test_export.py 2018-06-19 01:27:34 +0000
4324+++ breezy/tests/blackbox/test_export.py 2018-07-14 19:37:12 +0000
4325@@ -44,31 +44,31 @@
4326 # On Windows, if we fail to set the binary bit, and a '\r' or '\n'
4327 # ends up in the data stream, we will get corruption. Add a fair amount
4328 # of random data, to help ensure there is at least one.
4329- _file_content = ('!\r\n\t\n \r'
4330- + 'r29trp9i1r8k0e24c2o7mcx2isrlaw7toh1hv2mtst3o1udkl36v9xn2z8kt\n'
4331- 'tvjn7e3i9cj1qs1rw9gcye9w72cbdueiufw8nky7bs08lwggir59d62knecp\n'
4332- '7s0537r8sg3e8hdnidji49rswo47c3j8190nh8emef2b6j1mf5kdq45nt3f5\n'
4333- '1sz9u7fuzrm4w8bebre7p62sh5os2nkj2iiyuk9n0w0pjpdulu9k2aajejah\n'
4334- 'ini90ny40qzs12ajuy0ua6l178n93lvy2atqngnntsmtlmqx7yhp0q9a1xr4\n'
4335- '1n69kgbo6qu9osjpqq83446r00jijtcstzybfqwm1lnt9spnri2j07bt7bbh\n'
4336- 'rf3ejatdxta83te2s0pt9rc4hidgy3d2pc53p4wscdt2b1dfxdj9utf5m17f\n'
4337- 'f03oofcau950o090vyx6m72vfkywo7gp3ajzi6uk02dwqwtumq4r44xx6ho7\n'
4338- 'nhynborjdjep5j53f9548msb7gd3x9a1xveb4s8zfo6cbdw2kdngcrbakwu8\n'
4339- 'ql5a8l94gplkwr7oypw5nt1gj5i3xwadyjfr3lb61tfkz31ba7uda9knb294\n'
4340- '1azhfta0q3ry9x36lxyanvhp0g5z0t5a0i4wnoc8p4htexi915y1cnw4nznn\n'
4341- 'aj70dvp88ifiblv2bsp98hz570teinj8g472ddxni9ydmazfzwtznbf3hrg6\n'
4342- '84gigirjt6n2yagf70036m8d73cz0jpcighpjtxsmbgzbxx7nb4ewq6jbgnc\n'
4343- 'hux1b0qtsdi0zfhj6g1otf5jcldmtdvuon8y1ttszkqw3ograwi25yl921hy\n'
4344- 'izgscmfha9xdhxxabs07b40secpw22ah9iwpbmsns6qz0yr6fswto3ft2ez5\n'
4345- 'ngn48pdfxj1pw246drmj1y2ll5af5w7cz849rapzd9ih7qvalw358co0yzrs\n'
4346- 'xan9291d1ivjku4o5gjrsnmllrqwxwy86pcivinbmlnzasa9v3o22lgv4uyd\n'
4347- 'q8kw77bge3hr5rr5kzwjxk223bkmo3z9oju0954undsz8axr3kb3730otrcr\n'
4348- '9cwhu37htnizdwxmpoc5qmobycfm7ubbykfumv6zgkl6b8zlslwl7a8b81vz\n'
4349- '3weqkvv5csfza9xvwypr6lo0t03fwp0ihmci3m1muh0lf2u30ze0hjag691j\n'
4350- '27fjtd3e3zbiin5n2hq21iuo09ukbs73r5rt7vaw6axvoilvdciir9ugjh2c\n'
4351- 'na2b8dr0ptftoyhyxv1iwg661y338e28fhz4xxwgv3hnoe98ydfa1oou45vj\n'
4352- 'ln74oac2keqt0agbylrqhfscin7ireae2bql7z2le823ksy47ud57z8ctomp\n'
4353- '31s1vwbczdjwqp0o2jc7mkrurvzg8mj2zwcn2iily4gcl4sy4fsh4rignlyz\n')
4354+ _file_content = (b'!\r\n\t\n \r'
4355+ + b'r29trp9i1r8k0e24c2o7mcx2isrlaw7toh1hv2mtst3o1udkl36v9xn2z8kt\n'
4356+ b'tvjn7e3i9cj1qs1rw9gcye9w72cbdueiufw8nky7bs08lwggir59d62knecp\n'
4357+ b'7s0537r8sg3e8hdnidji49rswo47c3j8190nh8emef2b6j1mf5kdq45nt3f5\n'
4358+ b'1sz9u7fuzrm4w8bebre7p62sh5os2nkj2iiyuk9n0w0pjpdulu9k2aajejah\n'
4359+ b'ini90ny40qzs12ajuy0ua6l178n93lvy2atqngnntsmtlmqx7yhp0q9a1xr4\n'
4360+ b'1n69kgbo6qu9osjpqq83446r00jijtcstzybfqwm1lnt9spnri2j07bt7bbh\n'
4361+ b'rf3ejatdxta83te2s0pt9rc4hidgy3d2pc53p4wscdt2b1dfxdj9utf5m17f\n'
4362+ b'f03oofcau950o090vyx6m72vfkywo7gp3ajzi6uk02dwqwtumq4r44xx6ho7\n'
4363+ b'nhynborjdjep5j53f9548msb7gd3x9a1xveb4s8zfo6cbdw2kdngcrbakwu8\n'
4364+ b'ql5a8l94gplkwr7oypw5nt1gj5i3xwadyjfr3lb61tfkz31ba7uda9knb294\n'
4365+ b'1azhfta0q3ry9x36lxyanvhp0g5z0t5a0i4wnoc8p4htexi915y1cnw4nznn\n'
4366+ b'aj70dvp88ifiblv2bsp98hz570teinj8g472ddxni9ydmazfzwtznbf3hrg6\n'
4367+ b'84gigirjt6n2yagf70036m8d73cz0jpcighpjtxsmbgzbxx7nb4ewq6jbgnc\n'
4368+ b'hux1b0qtsdi0zfhj6g1otf5jcldmtdvuon8y1ttszkqw3ograwi25yl921hy\n'
4369+ b'izgscmfha9xdhxxabs07b40secpw22ah9iwpbmsns6qz0yr6fswto3ft2ez5\n'
4370+ b'ngn48pdfxj1pw246drmj1y2ll5af5w7cz849rapzd9ih7qvalw358co0yzrs\n'
4371+ b'xan9291d1ivjku4o5gjrsnmllrqwxwy86pcivinbmlnzasa9v3o22lgv4uyd\n'
4372+ b'q8kw77bge3hr5rr5kzwjxk223bkmo3z9oju0954undsz8axr3kb3730otrcr\n'
4373+ b'9cwhu37htnizdwxmpoc5qmobycfm7ubbykfumv6zgkl6b8zlslwl7a8b81vz\n'
4374+ b'3weqkvv5csfza9xvwypr6lo0t03fwp0ihmci3m1muh0lf2u30ze0hjag691j\n'
4375+ b'27fjtd3e3zbiin5n2hq21iuo09ukbs73r5rt7vaw6axvoilvdciir9ugjh2c\n'
4376+ b'na2b8dr0ptftoyhyxv1iwg661y338e28fhz4xxwgv3hnoe98ydfa1oou45vj\n'
4377+ b'ln74oac2keqt0agbylrqhfscin7ireae2bql7z2le823ksy47ud57z8ctomp\n'
4378+ b'31s1vwbczdjwqp0o2jc7mkrurvzg8mj2zwcn2iily4gcl4sy4fsh4rignlyz\n')
4379
4380 def make_basic_tree(self):
4381 tree = self.make_branch_and_tree('tree')
4382@@ -304,7 +304,7 @@
4383 tf = tarfile.open('../first.tar')
4384 try:
4385 self.assertEqual(['first/hello'], sorted(tf.getnames()))
4386- self.assertEqual('foo', tf.extractfile('first/hello').read())
4387+ self.assertEqual(b'foo', tf.extractfile('first/hello').read())
4388 finally:
4389 tf.close()
4390
4391
4392=== modified file 'breezy/tests/blackbox/test_export_pot.py'
4393--- breezy/tests/blackbox/test_export_pot.py 2018-06-29 18:16:34 +0000
4394+++ breezy/tests/blackbox/test_export_pot.py 2018-07-14 19:37:12 +0000
4395@@ -26,17 +26,17 @@
4396
4397 def test_export_pot(self):
4398 out, err = self.run_bzr("export-pot")
4399- self.assertContainsRe(err, b'Exporting messages from builtin command: add')
4400- self.assertContainsRe(out, b"help of 'change' option\n"\
4401- b"msgid \"Select changes introduced by the specified revision.")
4402+ self.assertContainsRe(err, 'Exporting messages from builtin command: add')
4403+ self.assertContainsRe(out, "help of 'change' option\n"\
4404+ "msgid \"Select changes introduced by the specified revision.")
4405
4406 def test_export_pot_plugin_unknown(self):
4407 out, err = self.run_bzr("export-pot --plugin=lalalala", retcode=3)
4408 self.assertContainsRe(
4409- err, b'ERROR: Plugin lalalala is not loaded')
4410+ err, 'ERROR: Plugin lalalala is not loaded')
4411
4412 def test_export_pot_plugin(self):
4413 self.requireFeature(PluginLoadedFeature('launchpad'))
4414 out, err = self.run_bzr("export-pot --plugin=launchpad")
4415- self.assertContainsRe(err, b'Exporting messages from plugin command: launchpad-login in launchpad')
4416- self.assertContainsRe(out, b'msgid "Show or set the Launchpad user ID."')
4417+ self.assertContainsRe(err, 'Exporting messages from plugin command: launchpad-login in launchpad')
4418+ self.assertContainsRe(out, 'msgid "Show or set the Launchpad user ID."')
4419
4420=== modified file 'breezy/tests/blackbox/test_filtered_view_ops.py'
4421--- breezy/tests/blackbox/test_filtered_view_ops.py 2018-06-29 15:36:29 +0000
4422+++ breezy/tests/blackbox/test_filtered_view_ops.py 2018-07-14 19:37:12 +0000
4423@@ -33,63 +33,63 @@
4424 def test_view_on_status(self):
4425 wt = self.make_abc_tree_with_ab_view()
4426 out, err = self.run_bzr('status')
4427- self.assertEqual(b'Ignoring files outside view. View is a, b\n', err)
4428- self.assertEqual(b'unknown:\n a\n b\n', out)
4429+ self.assertEqual('Ignoring files outside view. View is a, b\n', err)
4430+ self.assertEqual('unknown:\n a\n b\n', out)
4431
4432 def test_view_on_status_selected(self):
4433 wt = self.make_abc_tree_with_ab_view()
4434 out, err = self.run_bzr('status a')
4435- self.assertEqual(b'', err)
4436- self.assertEqual(b'unknown:\n a\n', out)
4437+ self.assertEqual('', err)
4438+ self.assertEqual('unknown:\n a\n', out)
4439 out, err = self.run_bzr('status c', retcode=3)
4440- self.assertEqual(b'brz: ERROR: Specified file "c" is outside the '
4441- b'current view: a, b\n', err)
4442- self.assertEqual(b'', out)
4443+ self.assertEqual('brz: ERROR: Specified file "c" is outside the '
4444+ 'current view: a, b\n', err)
4445+ self.assertEqual('', out)
4446
4447 def test_view_on_add(self):
4448 wt = self.make_abc_tree_with_ab_view()
4449 out, err = self.run_bzr('add')
4450- self.assertEqual(b'Ignoring files outside view. View is a, b\n', err)
4451- self.assertEqual(b'adding a\nadding b\n', out)
4452+ self.assertEqual('Ignoring files outside view. View is a, b\n', err)
4453+ self.assertEqual('adding a\nadding b\n', out)
4454
4455 def test_view_on_add_selected(self):
4456 wt = self.make_abc_tree_with_ab_view()
4457 out, err = self.run_bzr('add a')
4458- self.assertEqual(b'', err)
4459- self.assertEqual(b'adding a\n', out)
4460+ self.assertEqual('', err)
4461+ self.assertEqual('adding a\n', out)
4462 out, err = self.run_bzr('add c', retcode=3)
4463- self.assertEqual(b'brz: ERROR: Specified file "c" is outside the '
4464- b'current view: a, b\n', err)
4465- self.assertEqual(b'', out)
4466+ self.assertEqual('brz: ERROR: Specified file "c" is outside the '
4467+ 'current view: a, b\n', err)
4468+ self.assertEqual('', out)
4469
4470 def test_view_on_diff(self):
4471 wt = self.make_abc_tree_with_ab_view()
4472 self.run_bzr('add')
4473 out, err = self.run_bzr('diff', retcode=1)
4474- self.assertEqual(b'*** Ignoring files outside view. View is a, b\n', err)
4475+ self.assertEqual('*** Ignoring files outside view. View is a, b\n', err)
4476
4477 def test_view_on_diff_selected(self):
4478 wt = self.make_abc_tree_with_ab_view()
4479 self.run_bzr('add')
4480 out, err = self.run_bzr('diff a', retcode=1)
4481- self.assertEqual(b'', err)
4482- self.assertStartsWith(out, b"=== added file 'a'\n")
4483+ self.assertEqual('', err)
4484+ self.assertStartsWith(out, "=== added file 'a'\n")
4485 out, err = self.run_bzr('diff c', retcode=3)
4486- self.assertEqual(b'brz: ERROR: Specified file "c" is outside the '
4487- b'current view: a, b\n', err)
4488- self.assertEqual(b'', out)
4489+ self.assertEqual('brz: ERROR: Specified file "c" is outside the '
4490+ 'current view: a, b\n', err)
4491+ self.assertEqual('', out)
4492
4493 def test_view_on_commit(self):
4494 wt = self.make_abc_tree_with_ab_view()
4495 self.run_bzr('add')
4496 out, err = self.run_bzr('commit -m "testing commit"')
4497 err_lines = err.splitlines()
4498- self.assertEqual(b'Ignoring files outside view. View is a, b', err_lines[0])
4499- self.assertStartsWith(err_lines[1], b'Committing to:')
4500- self.assertEqual(b'added a', err_lines[2])
4501- self.assertEqual(b'added b', err_lines[3])
4502- self.assertEqual(b'Committed revision 1.', err_lines[4])
4503- self.assertEqual(b'', out)
4504+ self.assertEqual('Ignoring files outside view. View is a, b', err_lines[0])
4505+ self.assertStartsWith(err_lines[1], 'Committing to:')
4506+ self.assertEqual('added a', err_lines[2])
4507+ self.assertEqual('added b', err_lines[3])
4508+ self.assertEqual('Committed revision 1.', err_lines[4])
4509+ self.assertEqual('', out)
4510
4511 def test_view_on_commit_selected(self):
4512 wt = self.make_abc_tree_with_ab_view()
4513@@ -97,54 +97,54 @@
4514 out, err = self.run_bzr('commit -m "file in view" a')
4515 err_lines = err.splitlines()
4516 self.assertStartsWith(err_lines[0], b'Committing to:')
4517- self.assertEqual(b'added a', err_lines[1])
4518- self.assertEqual(b'Committed revision 1.', err_lines[2])
4519- self.assertEqual(b'', out)
4520+ self.assertEqual('added a', err_lines[1])
4521+ self.assertEqual('Committed revision 1.', err_lines[2])
4522+ self.assertEqual('', out)
4523 out, err = self.run_bzr('commit -m "file out of view" c', retcode=3)
4524- self.assertEqual(b'brz: ERROR: Specified file "c" is outside the '
4525- b'current view: a, b\n', err)
4526- self.assertEqual(b'', out)
4527+ self.assertEqual('brz: ERROR: Specified file "c" is outside the '
4528+ 'current view: a, b\n', err)
4529+ self.assertEqual('', out)
4530
4531 def test_view_on_remove_selected(self):
4532 wt = self.make_abc_tree_with_ab_view()
4533 self.run_bzr('add')
4534 out, err = self.run_bzr('remove --keep a')
4535- self.assertEqual(b'removed a\n', err)
4536- self.assertEqual(b'', out)
4537+ self.assertEqual('removed a\n', err)
4538+ self.assertEqual('', out)
4539 out, err = self.run_bzr('remove --keep c', retcode=3)
4540- self.assertEqual(b'brz: ERROR: Specified file "c" is outside the '
4541- b'current view: a, b\n', err)
4542- self.assertEqual(b'', out)
4543+ self.assertEqual('brz: ERROR: Specified file "c" is outside the '
4544+ 'current view: a, b\n', err)
4545+ self.assertEqual('', out)
4546
4547 def test_view_on_revert(self):
4548 wt = self.make_abc_tree_with_ab_view()
4549 self.run_bzr('add')
4550 out, err = self.run_bzr('revert')
4551 err_lines = err.splitlines()
4552- self.assertEqual(b'Ignoring files outside view. View is a, b', err_lines[0])
4553- self.assertEqual(b'- a', err_lines[1])
4554- self.assertEqual(b'- b', err_lines[2])
4555- self.assertEqual(b'', out)
4556+ self.assertEqual('Ignoring files outside view. View is a, b', err_lines[0])
4557+ self.assertEqual('- a', err_lines[1])
4558+ self.assertEqual('- b', err_lines[2])
4559+ self.assertEqual('', out)
4560
4561 def test_view_on_revert_selected(self):
4562 wt = self.make_abc_tree_with_ab_view()
4563 self.run_bzr('add')
4564 out, err = self.run_bzr('revert a')
4565- self.assertEqual(b'- a\n', err)
4566- self.assertEqual(b'', out)
4567+ self.assertEqual('- a\n', err)
4568+ self.assertEqual('', out)
4569 out, err = self.run_bzr('revert c', retcode=3)
4570- self.assertEqual(b'brz: ERROR: Specified file "c" is outside the '
4571- b'current view: a, b\n', err)
4572- self.assertEqual(b'', out)
4573+ self.assertEqual('brz: ERROR: Specified file "c" is outside the '
4574+ 'current view: a, b\n', err)
4575+ self.assertEqual('', out)
4576
4577 def test_view_on_ls(self):
4578 wt = self.make_abc_tree_with_ab_view()
4579 self.run_bzr('add')
4580 out, err = self.run_bzr('ls')
4581 out_lines = out.splitlines()
4582- self.assertEqual(b'Ignoring files outside view. View is a, b\n', err)
4583- self.assertEqual(b'a', out_lines[0])
4584- self.assertEqual(b'b', out_lines[1])
4585+ self.assertEqual('Ignoring files outside view. View is a, b\n', err)
4586+ self.assertEqual('a', out_lines[0])
4587+ self.assertEqual('b', out_lines[1])
4588
4589
4590 class TestViewTreeOperations(tests.TestCaseWithTransport):
4591
4592=== modified file 'breezy/tests/blackbox/test_help.py'
4593--- breezy/tests/blackbox/test_help.py 2018-05-13 02:18:13 +0000
4594+++ breezy/tests/blackbox/test_help.py 2018-07-14 19:37:12 +0000
4595@@ -78,7 +78,7 @@
4596 out, err = self.run_bzr('help repositories')
4597 from breezy.help_topics import help_as_plain_text, _repositories
4598 expected = help_as_plain_text(_repositories)
4599- self.assertEqual(expected, out)
4600+ self.assertEqual(expected.encode('utf-8'), out)
4601
4602 def test_help_working_trees(self):
4603 """Smoke test for 'brz help working-trees'"""
4604@@ -188,16 +188,16 @@
4605
4606 def test_help_command_utf8(self):
4607 out, err = self.run_bzr(["help", "push"], encoding="utf-8")
4608- self.assertContainsRe(out, "zz\xc3\xa5{{:See also:")
4609+ self.assertContainsRe(out, b"zz\xc3\xa5{{:See also:")
4610
4611 def test_help_switch_utf8(self):
4612 out, err = self.run_bzr(["push", "--help"], encoding="utf-8")
4613- self.assertContainsRe(out, "zz\xc3\xa5{{:See also:")
4614+ self.assertContainsRe(out, b"zz\xc3\xa5{{:See also:")
4615
4616 def test_help_command_ascii(self):
4617 out, err = self.run_bzr(["help", "push"], encoding="ascii")
4618- self.assertContainsRe(out, "zz\\?{{:See also:")
4619+ self.assertContainsRe(out, b"zz\\?{{:See also:")
4620
4621 def test_help_switch_ascii(self):
4622 out, err = self.run_bzr(["push", "--help"], encoding="ascii")
4623- self.assertContainsRe(out, "zz\\?{{:See also:")
4624+ self.assertContainsRe(out, b"zz\\?{{:See also:")
4625
4626=== modified file 'breezy/tests/blackbox/test_ignore.py'
4627--- breezy/tests/blackbox/test_ignore.py 2018-06-29 18:16:34 +0000
4628+++ breezy/tests/blackbox/test_ignore.py 2018-07-14 19:37:12 +0000
4629@@ -112,7 +112,7 @@
4630 reference_set = set(ignores.USER_DEFAULTS)
4631 output_set = set(out.rstrip().split('\n'))
4632 self.assertEqual(reference_set, output_set)
4633- self.assertEqual(b'', err)
4634+ self.assertEqual('', err)
4635
4636 def test_ignore_versioned_file(self):
4637 tree = self.make_branch_and_tree('.')
4638@@ -170,9 +170,9 @@
4639 """
4640 tree = self.make_branch_and_tree('.')
4641 out, err = self.run_bzr(['ignore', 'RE:*.cpp', 'foo', 'RE:['], 3)
4642- self.assertEqual(out, b'')
4643+ self.assertEqual(out, '')
4644 self.assertContainsRe(err,
4645- br'Invalid ignore pattern.*RE:\*\.cpp.*RE:\[', re.DOTALL)
4646- self.assertNotContainsRe(err, b'foo', re.DOTALL)
4647+ r'Invalid ignore pattern.*RE:\*\.cpp.*RE:\[', re.DOTALL)
4648+ self.assertNotContainsRe(err, 'foo', re.DOTALL)
4649 self.assertFalse(os.path.isfile('.bzrignore'))
4650
4651
4652=== modified file 'breezy/tests/blackbox/test_ignored.py'
4653--- breezy/tests/blackbox/test_ignored.py 2018-06-18 20:53:01 +0000
4654+++ breezy/tests/blackbox/test_ignored.py 2018-07-14 19:37:12 +0000
4655@@ -36,8 +36,8 @@
4656 # now add it and check the ui does not show it.
4657 tree.add('foo.pyc')
4658 out, err = self.run_bzr('ignored')
4659- self.assertEqual(b'', out)
4660- self.assertEqual(b'', err)
4661+ self.assertEqual('', out)
4662+ self.assertEqual('', err)
4663
4664 def test_ignored_directory(self):
4665 """Test --directory option"""
4666@@ -45,4 +45,4 @@
4667 self.build_tree_contents([('a/README', b'contents'),
4668 ('a/.bzrignore', b'README')])
4669 out, err = self.run_bzr(['ignored', '--directory=a'])
4670- self.assertStartsWith(out, b'README')
4671+ self.assertStartsWith(out, 'README')
4672
4673=== modified file 'breezy/tests/blackbox/test_info.py'
4674--- breezy/tests/blackbox/test_info.py 2018-06-29 15:36:29 +0000
4675+++ breezy/tests/blackbox/test_info.py 2018-07-14 19:37:12 +0000
4676@@ -54,23 +54,23 @@
4677 self.make_controldir('ctrl')
4678 out, err = self.run_bzr('info ctrl')
4679 self.assertEqual(out,
4680- b'Empty control directory (format: 2a)\n'
4681- b'Location:\n'
4682- b' control directory: ctrl\n')
4683- self.assertEqual(err, b'')
4684+ 'Empty control directory (format: 2a)\n'
4685+ 'Location:\n'
4686+ ' control directory: ctrl\n')
4687+ self.assertEqual(err, '')
4688
4689 def test_info_empty_controldir_verbose(self):
4690 self.make_controldir('ctrl')
4691 out, err = self.run_bzr('info -v ctrl')
4692 self.assertEqualDiff(out,
4693- b'Empty control directory (format: 2a)\n'
4694- b'Location:\n'
4695- b' control directory: ctrl\n\n'
4696- b'Format:\n'
4697- b' control: Meta directory format 1\n\n'
4698- b'Control directory:\n'
4699- b' 0 branches\n')
4700- self.assertEqual(err, b'')
4701+ 'Empty control directory (format: 2a)\n'
4702+ 'Location:\n'
4703+ ' control directory: ctrl\n\n'
4704+ 'Format:\n'
4705+ ' control: Meta directory format 1\n\n'
4706+ 'Control directory:\n'
4707+ ' 0 branches\n')
4708+ self.assertEqual(err, '')
4709
4710 def test_info_dangling_branch_reference(self):
4711 br = self.make_branch('target')
4712@@ -78,11 +78,11 @@
4713 shutil.rmtree('target')
4714 out, err = self.run_bzr('info from')
4715 self.assertEqual(out,
4716- b'Dangling branch reference (format: 2a)\n'
4717- b'Location:\n'
4718- b' control directory: from\n'
4719- b' checkout of branch: target\n')
4720- self.assertEqual(err, b'')
4721+ 'Dangling branch reference (format: 2a)\n'
4722+ 'Location:\n'
4723+ ' control directory: from\n'
4724+ ' checkout of branch: target\n')
4725+ self.assertEqual(err, '')
4726
4727 def test_info_standalone(self):
4728 transport = self.get_transport()
4729@@ -95,16 +95,16 @@
4730
4731 out, err = self.run_bzr('info standalone')
4732 self.assertEqualDiff(
4733-b"""Standalone tree (format: knit)
4734+"""Standalone tree (format: knit)
4735 Location:
4736 branch root: standalone
4737 """, out)
4738- self.assertEqual(b'', err)
4739+ self.assertEqual('', err)
4740
4741 # Standalone branch - verbose mode
4742 out, err = self.run_bzr('info standalone -v')
4743 self.assertEqualDiff(
4744-b"""Standalone tree (format: knit)
4745+"""Standalone tree (format: knit)
4746 Location:
4747 branch root: standalone
4748
4749@@ -133,12 +133,12 @@
4750 Repository:
4751 0 revisions
4752 """, out)
4753- self.assertEqual(b'', err)
4754+ self.assertEqual('', err)
4755
4756 # Standalone branch - really verbose mode
4757 out, err = self.run_bzr('info standalone -vv')
4758 self.assertEqualDiff(
4759-b"""Standalone tree (format: knit)
4760+"""Standalone tree (format: knit)
4761 Location:
4762 branch root: standalone
4763
4764@@ -168,7 +168,7 @@
4765 Repository:
4766 0 revisions
4767 """, out)
4768- self.assertEqual(b'', err)
4769+ self.assertEqual('', err)
4770 tree1.commit('commit one')
4771 rev = branch1.repository.get_revision(branch1.last_revision())
4772 datestring_first = osutils.format_date(rev.timestamp, rev.timezone)
4773@@ -187,11 +187,11 @@
4774 push branch: standalone
4775 parent branch: standalone
4776 """, out)
4777- self.assertEqual(b'', err)
4778+ self.assertEqual('', err)
4779
4780 out, err = self.run_bzr('info branch --verbose')
4781 self.assertEqualDiff(
4782-b"""Standalone tree (format: knit)
4783+"""Standalone tree (format: knit)
4784 Location:
4785 branch root: branch
4786
4787@@ -228,7 +228,7 @@
4788 1 revision
4789 """ % (datestring_first, datestring_first,
4790 ), out)
4791- self.assertEqual(b'', err)
4792+ self.assertEqual('', err)
4793
4794 # Branch and bind to standalone, needs upgrade to metadir
4795 # (creates backup as unknown)
4796@@ -240,7 +240,7 @@
4797 bound_tree = branch3.controldir.open_workingtree()
4798 out, err = self.run_bzr('info -v bound')
4799 self.assertEqualDiff(
4800-b"""Checkout (format: knit)
4801+"""Checkout (format: knit)
4802 Location:
4803 checkout root: bound
4804 checkout of branch: standalone
4805@@ -280,7 +280,7 @@
4806 branch3.repository._format.get_format_description(),
4807 datestring_first, datestring_first,
4808 ), out)
4809- self.assertEqual(b'', err)
4810+ self.assertEqual('', err)
4811
4812 # Checkout standalone (same as above, but does not have parent set)
4813 branch4 = controldir.ControlDir.create_branch_convenience('checkout',
4814@@ -289,7 +289,7 @@
4815 branch4.controldir.open_workingtree().update()
4816 out, err = self.run_bzr('info checkout --verbose')
4817 self.assertEqualDiff(
4818-b"""Checkout (format: knit)
4819+"""Checkout (format: knit)
4820 Location:
4821 checkout root: checkout
4822 checkout of branch: standalone
4823@@ -324,7 +324,7 @@
4824 """ % (branch4.repository._format.get_format_description(),
4825 datestring_first, datestring_first,
4826 ), out)
4827- self.assertEqual(b'', err)
4828+ self.assertEqual('', err)
4829
4830 # Lightweight checkout (same as above, different branch and repository)
4831 tree5 = branch1.create_checkout('lightcheckout', lightweight=True)
4832@@ -368,7 +368,7 @@
4833 Repository:
4834 1 revision
4835 """ % (format_description, datestring_first, datestring_first,), out)
4836- self.assertEqual(b'', err)
4837+ self.assertEqual('', err)
4838
4839 # Update initial standalone branch
4840 self.build_tree(['standalone/b'])
4841@@ -380,7 +380,7 @@
4842 # Out of date branched standalone branch will not be detected
4843 out, err = self.run_bzr('info -v branch')
4844 self.assertEqualDiff(
4845-b"""Standalone tree (format: knit)
4846+"""Standalone tree (format: knit)
4847 Location:
4848 branch root: branch
4849
4850@@ -417,12 +417,12 @@
4851 1 revision
4852 """ % (datestring_first, datestring_first,
4853 ), out)
4854- self.assertEqual(b'', err)
4855+ self.assertEqual('', err)
4856
4857 # Out of date bound branch
4858 out, err = self.run_bzr('info -v bound')
4859 self.assertEqualDiff(
4860-b"""Checkout (format: knit)
4861+"""Checkout (format: knit)
4862 Location:
4863 checkout root: bound
4864 checkout of branch: standalone
4865@@ -462,12 +462,12 @@
4866 """ % (branch3.repository._format.get_format_description(),
4867 datestring_first, datestring_first,
4868 ), out)
4869- self.assertEqual(b'', err)
4870+ self.assertEqual('', err)
4871
4872 # Out of date checkout
4873 out, err = self.run_bzr('info -v checkout')
4874 self.assertEqualDiff(
4875-b"""Checkout (format: knit)
4876+"""Checkout (format: knit)
4877 Location:
4878 checkout root: checkout
4879 checkout of branch: standalone
4880@@ -504,12 +504,12 @@
4881 """ % (branch4.repository._format.get_format_description(),
4882 datestring_first, datestring_first,
4883 ), out)
4884- self.assertEqual(b'', err)
4885+ self.assertEqual('', err)
4886
4887 # Out of date lightweight checkout
4888 out, err = self.run_bzr('info lightcheckout --verbose')
4889 self.assertEqualDiff(
4890-b"""Lightweight checkout (format: %s)
4891+"""Lightweight checkout (format: %s)
4892 Location:
4893 light checkout root: lightcheckout
4894 checkout of branch: standalone
4895@@ -544,7 +544,7 @@
4896 Repository:
4897 2 revisions
4898 """ % (format_description, datestring_first, datestring_last,), out)
4899- self.assertEqual(b'', err)
4900+ self.assertEqual('', err)
4901
4902 def test_info_standalone_no_tree(self):
4903 # create standalone branch without a working tree
4904@@ -553,7 +553,7 @@
4905 repo = branch.repository
4906 out, err = self.run_bzr('info branch -v')
4907 self.assertEqualDiff(
4908-b"""Standalone branch (format: %s)
4909+"""Standalone branch (format: %s)
4910 Location:
4911 branch root: branch
4912
4913@@ -570,11 +570,11 @@
4914
4915 Repository:
4916 0 revisions
4917-""" % (info.describe_format(repo.controldir, repo, branch, None).encode('ascii'),
4918- format.get_branch_format().get_format_description().encode('ascii'),
4919- format.repository_format.get_format_description().encode('ascii'),
4920+""" % (info.describe_format(repo.controldir, repo, branch, None),
4921+ format.get_branch_format().get_format_description(),
4922+ format.repository_format.get_format_description(),
4923 ), out)
4924- self.assertEqual(b'', err)
4925+ self.assertEqual('', err)
4926
4927 def test_info_shared_repository(self):
4928 format = controldir.format_registry.make_controldir('knit')
4929@@ -585,7 +585,7 @@
4930 repo.set_make_working_trees(False)
4931 out, err = self.run_bzr('info -v repo')
4932 self.assertEqualDiff(
4933-b"""Shared repository (format: dirstate or dirstate-tags or knit)
4934+"""Shared repository (format: dirstate or dirstate-tags or knit)
4935 Location:
4936 shared repository: %s
4937
4938@@ -598,9 +598,9 @@
4939
4940 Repository:
4941 0 revisions
4942-""" % (b'repo', format.repository_format.get_format_description().encode('ascii'),
4943+""" % ('repo', format.repository_format.get_format_description(),
4944 ), out)
4945- self.assertEqual(b'', err)
4946+ self.assertEqual('', err)
4947
4948 # Create branch inside shared repository
4949 repo.controldir.root_transport.mkdir('branch')
4950@@ -608,7 +608,7 @@
4951 'repo/branch', format=format)
4952 out, err = self.run_bzr('info -v repo/branch')
4953 self.assertEqualDiff(
4954-b"""Repository branch (format: dirstate or knit)
4955+"""Repository branch (format: dirstate or knit)
4956 Location:
4957 shared repository: repo
4958 repository branch: repo/branch
4959@@ -626,10 +626,10 @@
4960
4961 Repository:
4962 0 revisions
4963-""" % (format.get_branch_format().get_format_description().encode('ascii'),
4964- format.repository_format.get_format_description().encode('ascii'),
4965+""" % (format.get_branch_format().get_format_description(),
4966+ format.repository_format.get_format_description(),
4967 ), out)
4968- self.assertEqual(b'', err)
4969+ self.assertEqual('', err)
4970
4971 # Create lightweight checkout
4972 transport.mkdir('tree')
4973@@ -690,12 +690,12 @@
4974 format.repository_format.get_format_description(),
4975 datestring_first, datestring_first,
4976 ), out)
4977- self.assertEqual(b'', err)
4978+ self.assertEqual('', err)
4979
4980 # Out of date checkout
4981 out, err = self.run_bzr('info -v tree/checkout')
4982 self.assertEqualDiff(
4983-b"""Checkout (format: unnamed)
4984+"""Checkout (format: unnamed)
4985 Location:
4986 checkout root: tree/checkout
4987 checkout of branch: repo/branch
4988@@ -729,7 +729,7 @@
4989 """ % (format.get_branch_format().get_format_description(),
4990 format.repository_format.get_format_description(),
4991 ), out)
4992- self.assertEqual(b'', err)
4993+ self.assertEqual('', err)
4994
4995 # Update checkout
4996 tree3.update()
4997@@ -737,7 +737,7 @@
4998 tree3.add('b')
4999 out, err = self.run_bzr('info tree/checkout --verbose')
5000 self.assertEqualDiff(
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches