Merge lp:~jelmer/brz/run-brz-bytes into lp:brz

Proposed by Jelmer Vernooij
Status: Merged
Merged at revision: 7078
Proposed branch: lp:~jelmer/brz/run-brz-bytes
Merge into: lp:brz
Diff against target: 1762 lines (+693/-196)
22 files modified
breezy/builtins.py (+2/-0)
breezy/cache_utf8.py (+1/-1)
breezy/osutils.py (+1/-1)
breezy/plugins/grep/test_grep.py (+11/-12)
breezy/tests/__init__.py (+122/-37)
breezy/tests/blackbox/test_command_encoding.py (+12/-13)
breezy/tests/blackbox/test_commit.py (+12/-9)
breezy/tests/blackbox/test_export.py (+2/-2)
breezy/tests/blackbox/test_help.py (+4/-4)
breezy/tests/blackbox/test_log.py (+3/-3)
breezy/tests/blackbox/test_non_ascii.py (+13/-17)
breezy/tests/blackbox/test_shelve.py (+3/-2)
breezy/tests/blackbox/test_tags.py (+12/-13)
breezy/tests/blackbox/test_version.py (+9/-6)
breezy/tests/blackbox/test_version_info.py (+2/-3)
breezy/tests/script.py (+30/-3)
breezy/tests/test_errors.py (+6/-2)
breezy/tests/test_nonascii.py (+1/-1)
breezy/tests/test_osutils.py (+35/-16)
breezy/tests/test_remote.py (+7/-3)
breezy/tests/test_selftest.py (+16/-44)
python3.passing (+389/-4)
To merge this branch: bzr merge lp:~jelmer/brz/run-brz-bytes
Reviewer Review Type Date Requested Status
Breezy developers Pending
Review via email: mp+352944@code.launchpad.net

Description of the change

Add run_bzr_raw

To post a comment you must log in.

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-08-04 17:32:58 +0000
3+++ breezy/builtins.py 2018-08-14 20:37:51 +0000
4@@ -6074,6 +6074,8 @@
5 # which are not in this branch. Fail gracefully ...
6 revno = '?'
7 tags[index] = (tag, revno)
8+ else:
9+ tags = [(tag, revid.decode('utf-8')) for (tag, revid) in tags]
10 self.cleanup_now()
11 for tag, revspec in tags:
12 self.outf.write('%-20s %s\n' % (tag, revspec))
13
14=== modified file 'breezy/cache_utf8.py'
15--- breezy/cache_utf8.py 2011-12-19 13:23:58 +0000
16+++ breezy/cache_utf8.py 2018-08-14 20:37:51 +0000
17@@ -109,7 +109,7 @@
18 # same hash, so we can just use it as the key in _uni_to_utf8, but we need
19 # the return value to be different in _utf8_to_uni
20 ascii_str = _uni_to_utf8.setdefault(ascii_str, ascii_str)
21- _utf8_to_uni.setdefault(ascii_str, unicode(ascii_str))
22+ _utf8_to_uni.setdefault(ascii_str, ascii_str.decode('ascii'))
23 return ascii_str
24
25
26
27=== modified file 'breezy/osutils.py'
28--- breezy/osutils.py 2018-07-24 22:51:28 +0000
29+++ breezy/osutils.py 2018-08-14 20:37:51 +0000
30@@ -1992,7 +1992,7 @@
31 """Compare path_a and path_b to generate the same order walkdirs uses."""
32 key_a = path_prefix_key(path_a)
33 key_b = path_prefix_key(path_b)
34- return cmp(key_a, key_b)
35+ return (key_a > key_b) - (key_a < key_b)
36
37
38 _cached_user_encoding = None
39
40=== modified file 'breezy/plugins/grep/test_grep.py'
41--- breezy/plugins/grep/test_grep.py 2018-07-22 17:06:14 +0000
42+++ breezy/plugins/grep/test_grep.py 2018-08-14 20:37:51 +0000
43@@ -1943,28 +1943,27 @@
44
45 # GZ 2010-06-07: Note we can't actually grep for \u1234 as the pattern
46 # is mangled according to the user encoding.
47- streams = self.run_bzr(["grep", "--files-with-matches",
48+ streams = self.run_bzr_raw(["grep", "--files-with-matches",
49 u"contents"], encoding="UTF-8")
50- if not PY3:
51- as_utf8 = as_utf8.encode("UTF-8")
52- self.assertEqual(streams, (as_utf8 + "\n", ""))
53+ as_utf8 = as_utf8.encode("UTF-8")
54+ self.assertEqual(streams, (as_utf8 + b"\n", b""))
55
56- streams = self.run_bzr(["grep", "-r", "1", "--files-with-matches",
57+ streams = self.run_bzr_raw(["grep", "-r", "1", "--files-with-matches",
58 u"contents"], encoding="UTF-8")
59- self.assertEqual(streams, (as_utf8 + "~1\n", ""))
60+ self.assertEqual(streams, (as_utf8 + b"~1\n", b""))
61
62 fileencoding = osutils.get_user_encoding()
63 as_mangled = as_utf8.decode(fileencoding, "replace").encode("UTF-8")
64
65- streams = self.run_bzr(["grep", "-n",
66+ streams = self.run_bzr_raw(["grep", "-n",
67 u"contents"], encoding="UTF-8")
68- self.assertEqual(streams, ("%s:1:contents of %s\n" %
69- (as_utf8, as_mangled), ""))
70+ self.assertEqual(streams, (b"%s:1:contents of %s\n" %
71+ (as_utf8, as_mangled), b""))
72
73- streams = self.run_bzr(["grep", "-n", "-r", "1",
74+ streams = self.run_bzr_raw(["grep", "-n", "-r", "1",
75 u"contents"], encoding="UTF-8")
76- self.assertEqual(streams, ("%s~1:1:contents of %s\n" %
77- (as_utf8, as_mangled), ""))
78+ self.assertEqual(streams, (b"%s~1:1:contents of %s\n" %
79+ (as_utf8, as_mangled), b""))
80
81
82 class TestColorGrep(GrepTestBase):
83
84=== modified file 'breezy/tests/__init__.py'
85--- breezy/tests/__init__.py 2018-08-08 02:14:32 +0000
86+++ breezy/tests/__init__.py 2018-08-14 20:37:51 +0000
87@@ -33,6 +33,7 @@
88 from io import (
89 BytesIO,
90 StringIO,
91+ TextIOWrapper,
92 )
93 import itertools
94 import logging
95@@ -1916,42 +1917,20 @@
96 if not feature.available():
97 raise UnavailableFeature(feature)
98
99- def _run_bzr_autosplit(self, args, retcode, encoding, stdin,
100- working_dir):
101- """Run bazaar command line, splitting up a string command line."""
102- if isinstance(args, string_types):
103- args = shlex.split(args)
104- return self._run_bzr_core(args, retcode=retcode,
105- encoding=encoding, stdin=stdin, working_dir=working_dir,
106- )
107-
108- def _run_bzr_core(self, args, retcode, encoding, stdin,
109+ def _run_bzr_core(self, args, encoding, stdin, stdout, stderr,
110 working_dir):
111 # Clear chk_map page cache, because the contents are likely to mask
112 # locking errors.
113 chk_map.clear_cache()
114- if encoding is None:
115- encoding = osutils.get_user_encoding()
116
117 self.log('run brz: %r', args)
118
119- if sys.version_info[0] == 2:
120- stdout = ui_testing.BytesIOWithEncoding()
121- stderr = ui_testing.BytesIOWithEncoding()
122- stdout.encoding = stderr.encoding = encoding
123+ if PY3:
124+ self._last_cmd_stdout = stdout
125+ self._last_cmd_stderr = stderr
126 else:
127- stdout = ui_testing.StringIOWithEncoding()
128- stderr = ui_testing.StringIOWithEncoding()
129- stdout.encoding = stderr.encoding = encoding
130-
131- # FIXME: don't call into logging here
132- handler = trace.EncodedStreamHandler(
133- stderr, errors="replace", level=logging.INFO)
134- logger = logging.getLogger('')
135- logger.addHandler(handler)
136-
137- self._last_cmd_stdout = codecs.getwriter(encoding)(stdout)
138- self._last_cmd_stderr = codecs.getwriter(encoding)(stderr)
139+ self._last_cmd_stdout = codecs.getwriter(encoding)(stdout)
140+ self._last_cmd_stderr = codecs.getwriter(encoding)(stderr)
141
142 old_ui_factory = ui.ui_factory
143 ui.ui_factory = ui_testing.TestUIFactory(
144@@ -1972,11 +1951,81 @@
145 _mod_commands.run_bzr_catch_user_errors,
146 args)
147 finally:
148- logger.removeHandler(handler)
149 ui.ui_factory = old_ui_factory
150 if cwd is not None:
151 os.chdir(cwd)
152
153+ return result
154+
155+ def run_bzr_raw(self, args, retcode=0, stdin=None, encoding=None,
156+ working_dir=None, error_regexes=[]):
157+ """Invoke brz, as if it were run from the command line.
158+
159+ The argument list should not include the brz program name - the
160+ first argument is normally the brz command. Arguments may be
161+ passed in three ways:
162+
163+ 1- A list of strings, eg ["commit", "a"]. This is recommended
164+ when the command contains whitespace or metacharacters, or
165+ is built up at run time.
166+
167+ 2- A single string, eg "add a". This is the most convenient
168+ for hardcoded commands.
169+
170+ This runs brz through the interface that catches and reports
171+ errors, and with logging set to something approximating the
172+ default, so that error reporting can be checked.
173+
174+ This should be the main method for tests that want to exercise the
175+ overall behavior of the brz application (rather than a unit test
176+ or a functional test of the library.)
177+
178+ This sends the stdout/stderr results into the test's log,
179+ where it may be useful for debugging. See also run_captured.
180+
181+ :keyword stdin: A string to be used as stdin for the command.
182+ :keyword retcode: The status code the command should return;
183+ default 0.
184+ :keyword working_dir: The directory to run the command in
185+ :keyword error_regexes: A list of expected error messages. If
186+ specified they must be seen in the error output of the command.
187+ """
188+ if isinstance(args, string_types):
189+ args = shlex.split(args)
190+
191+ if encoding is None:
192+ encoding = osutils.get_user_encoding()
193+
194+ if sys.version_info[0] == 2:
195+ wrapped_stdout = stdout = ui_testing.BytesIOWithEncoding()
196+ wrapped_stderr = stderr = ui_testing.BytesIOWithEncoding()
197+ stdout.encoding = stderr.encoding = encoding
198+
199+ # FIXME: don't call into logging here
200+ handler = trace.EncodedStreamHandler(
201+ stderr, errors="replace")
202+ else:
203+ stdout = BytesIO()
204+ stderr = BytesIO()
205+ wrapped_stdout = TextIOWrapper(stdout, encoding)
206+ wrapped_stderr = TextIOWrapper(stderr, encoding)
207+ handler = logging.StreamHandler(wrapped_stderr)
208+ handler.setLevel(logging.INFO)
209+
210+ logger = logging.getLogger('')
211+ logger.addHandler(handler)
212+ try:
213+ result = self._run_bzr_core(
214+ args, encoding=encoding, stdin=stdin, stdout=wrapped_stdout,
215+ stderr=wrapped_stderr, working_dir=working_dir,
216+ )
217+ finally:
218+ logger.removeHandler(handler)
219+
220+ if PY3:
221+ wrapped_stdout.flush()
222+ wrapped_stderr.flush()
223+
224 out = stdout.getvalue()
225 err = stderr.getvalue()
226 if out:
227@@ -1986,7 +2035,10 @@
228 if retcode is not None:
229 self.assertEqual(retcode, result,
230 message='Unexpected return code')
231- return result, out, err
232+ self.assertIsInstance(error_regexes, (list, tuple))
233+ for regex in error_regexes:
234+ self.assertContainsRe(err, regex)
235+ return out, err
236
237 def run_bzr(self, args, retcode=0, stdin=None, encoding=None,
238 working_dir=None, error_regexes=[]):
239@@ -2021,13 +2073,46 @@
240 :keyword error_regexes: A list of expected error messages. If
241 specified they must be seen in the error output of the command.
242 """
243- retcode, out, err = self._run_bzr_autosplit(
244- args=args,
245- retcode=retcode,
246- encoding=encoding,
247- stdin=stdin,
248- working_dir=working_dir,
249- )
250+ if isinstance(args, string_types):
251+ args = shlex.split(args)
252+
253+ if encoding is None:
254+ encoding = osutils.get_user_encoding()
255+
256+ if sys.version_info[0] == 2:
257+ stdout = ui_testing.BytesIOWithEncoding()
258+ stderr = ui_testing.BytesIOWithEncoding()
259+ stdout.encoding = stderr.encoding = encoding
260+ # FIXME: don't call into logging here
261+ handler = trace.EncodedStreamHandler(
262+ stderr, errors="replace")
263+ else:
264+ stdout = ui_testing.StringIOWithEncoding()
265+ stderr = ui_testing.StringIOWithEncoding()
266+ stdout.encoding = stderr.encoding = encoding
267+ handler = logging.StreamHandler(stream=stderr)
268+ handler.setLevel(logging.INFO)
269+
270+ logger = logging.getLogger('')
271+ logger.addHandler(handler)
272+
273+ try:
274+ result = self._run_bzr_core(args,
275+ encoding=encoding, stdin=stdin, stdout=stdout,
276+ stderr=stderr, working_dir=working_dir,
277+ )
278+ finally:
279+ logger.removeHandler(handler)
280+
281+ out = stdout.getvalue()
282+ err = stderr.getvalue()
283+ if out:
284+ self.log('output:\n%r', out)
285+ if err:
286+ self.log('errors:\n%r', err)
287+ if retcode is not None:
288+ self.assertEqual(retcode, result,
289+ message='Unexpected return code')
290 self.assertIsInstance(error_regexes, (list, tuple))
291 for regex in error_regexes:
292 self.assertContainsRe(err, regex)
293
294=== modified file 'breezy/tests/blackbox/test_command_encoding.py'
295--- breezy/tests/blackbox/test_command_encoding.py 2018-07-15 19:09:26 +0000
296+++ breezy/tests/blackbox/test_command_encoding.py 2018-08-14 20:37:51 +0000
297@@ -51,11 +51,11 @@
298 def test_exact(self):
299 def bzr(*args, **kwargs):
300 kwargs['encoding'] = 'ascii'
301- return self.run_bzr(*args, **kwargs)[0]
302+ return self.run_bzr_raw(*args, **kwargs)[0]
303
304 register_command(cmd_echo_exact)
305 try:
306- self.assertEqual('foo', bzr('echo-exact foo'))
307+ self.assertEqual(b'foo', bzr('echo-exact foo'))
308 # Exact should fail to decode the string
309 self.assertRaises(UnicodeEncodeError,
310 bzr,
311@@ -68,14 +68,13 @@
312 def test_strict_utf8(self):
313 def bzr(*args, **kwargs):
314 kwargs['encoding'] = 'utf-8'
315- return self.run_bzr(*args, **kwargs)[0]
316+ return self.run_bzr_raw(*args, **kwargs)[0]
317
318 register_command(cmd_echo_strict)
319 try:
320- self.assertEqual('foo', bzr('echo-strict foo'))
321+ self.assertEqual(b'foo', bzr('echo-strict foo'))
322 expected = u'foo\xb5'
323- if not PY3:
324- expected = expected.encode('utf-8')
325+ expected = expected.encode('utf-8')
326 self.assertEqual(expected,
327 bzr(['echo-strict', u'foo\xb5']))
328 finally:
329@@ -84,11 +83,11 @@
330 def test_strict_ascii(self):
331 def bzr(*args, **kwargs):
332 kwargs['encoding'] = 'ascii'
333- return self.run_bzr(*args, **kwargs)[0]
334+ return self.run_bzr_raw(*args, **kwargs)[0]
335
336 register_command(cmd_echo_strict)
337 try:
338- self.assertEqual('foo', bzr('echo-strict foo'))
339+ self.assertEqual(b'foo', bzr('echo-strict foo'))
340 # ascii can't encode \xb5
341 self.assertRaises(UnicodeEncodeError,
342 bzr,
343@@ -99,11 +98,11 @@
344 def test_replace_utf8(self):
345 def bzr(*args, **kwargs):
346 kwargs['encoding'] = 'utf-8'
347- return self.run_bzr(*args, **kwargs)[0]
348+ return self.run_bzr_raw(*args, **kwargs)[0]
349
350 register_command(cmd_echo_replace)
351 try:
352- self.assertEqual('foo', bzr('echo-replace foo'))
353+ self.assertEqual(b'foo', bzr('echo-replace foo'))
354 self.assertEqual(u'foo\xb5'.encode('utf-8'),
355 bzr(['echo-replace', u'foo\xb5']))
356 finally:
357@@ -112,13 +111,13 @@
358 def test_replace_ascii(self):
359 def bzr(*args, **kwargs):
360 kwargs['encoding'] = 'ascii'
361- return self.run_bzr(*args, **kwargs)[0]
362+ return self.run_bzr_raw(*args, **kwargs)[0]
363
364 register_command(cmd_echo_replace)
365 try:
366- self.assertEqual('foo', bzr('echo-replace foo'))
367+ self.assertEqual(b'foo', bzr('echo-replace foo'))
368 # ascii can't encode \xb5
369- self.assertEqual('foo?', bzr(['echo-replace', u'foo\xb5']))
370+ self.assertEqual(b'foo?', bzr(['echo-replace', u'foo\xb5']))
371 finally:
372 plugin_cmds.remove('echo-replace')
373
374
375=== modified file 'breezy/tests/blackbox/test_commit.py'
376--- breezy/tests/blackbox/test_commit.py 2018-07-27 01:17:23 +0000
377+++ breezy/tests/blackbox/test_commit.py 2018-08-14 20:37:51 +0000
378@@ -176,20 +176,23 @@
379 tree = self.make_branch_and_tree(".")
380 self.build_tree(["f"])
381 tree.add(["f"])
382- out, err = self.run_bzr(["commit", "-m", "Wrong filename", u"\xa7"],
383+ out, err = self.run_bzr_raw(["commit", "-m", "Wrong filename", u"\xa7"],
384 encoding="utf-8", retcode=3)
385- self.assertContainsRe(err, "(?m)not versioned: \"\xc2\xa7\"$")
386+ self.assertContainsRe(err, b"(?m)not versioned: \"\xc2\xa7\"$")
387
388 def test_non_ascii_file_unversioned_iso_8859_5(self):
389 self.requireFeature(features.UnicodeFilenameFeature)
390 tree = self.make_branch_and_tree(".")
391 self.build_tree(["f"])
392 tree.add(["f"])
393- out, err = self.run_bzr(["commit", "-m", "Wrong filename", u"\xa7"],
394+ out, err = self.run_bzr_raw(["commit", "-m", "Wrong filename", u"\xa7"],
395 encoding="iso-8859-5", retcode=3)
396- self.expectFailure("Error messages are always written as UTF-8",
397- self.assertNotContainsString, err, "\xc2\xa7")
398- self.assertContainsRe(err, "(?m)not versioned: \"\xfd\"$")
399+ if not PY3:
400+ self.expectFailure("Error messages are always written as UTF-8",
401+ self.assertNotContainsString, err, b"\xc2\xa7")
402+ else:
403+ self.assertNotContainsString(err, b"\xc2\xa7")
404+ self.assertContainsRe(err, b"(?m)not versioned: \"\xfd\"$")
405
406 def test_warn_about_forgotten_commit_message(self):
407 """Test that the lack of -m parameter is caught"""
408@@ -541,13 +544,13 @@
409 tree = self.make_branch_and_tree('tree')
410 self.build_tree(['tree/hello.txt'])
411 tree.add('hello.txt')
412- output, err = self.run_bzr(
413+ output, err = self.run_bzr_raw(
414 ['commit', '-m', 'hello',
415 u'--fixes=generic:\u20ac', 'tree/hello.txt'],
416 encoding='utf-8', retcode=3)
417- self.assertEqual('', output)
418+ self.assertEqual(b'', output)
419 self.assertContainsRe(err,
420- 'brz: ERROR: Unrecognized bug generic:\xe2\x82\xac\\. Commit refused.\n')
421+ b'brz: ERROR: Unrecognized bug generic:\xe2\x82\xac\\. Commit refused.\n')
422
423 def test_no_bugs_no_properties(self):
424 """If no bugs are fixed, the bugs property is not set.
425
426=== modified file 'breezy/tests/blackbox/test_export.py'
427--- breezy/tests/blackbox/test_export.py 2018-07-24 19:02:16 +0000
428+++ breezy/tests/blackbox/test_export.py 2018-08-14 20:37:51 +0000
429@@ -154,7 +154,7 @@
430
431 def test_zip_export_stdout(self):
432 tree = self.make_basic_tree()
433- contents = self.run_bzr('export -d tree --format=zip -')[0]
434+ contents = self.run_bzr_raw('export -d tree --format=zip -')[0]
435 self.assertZipANameAndContent(zipfile.ZipFile(BytesIO(contents)))
436
437 def test_zip_export_file(self):
438@@ -184,7 +184,7 @@
439 mode = 'r|%s' % (tarfile_flags,)
440 ball = tarfile.open(fname, mode=mode)
441 self.assertTarANameAndContent(ball, root='test/')
442- content = self.run_bzr('export -d tree --format=%s -' % (extension,))[0]
443+ content = self.run_bzr_raw('export -d tree --format=%s -' % (extension,))[0]
444 ball = tarfile.open(mode=mode, fileobj=BytesIO(content))
445 self.assertTarANameAndContent(ball, root='')
446
447
448=== modified file 'breezy/tests/blackbox/test_help.py'
449--- breezy/tests/blackbox/test_help.py 2018-07-15 18:45:17 +0000
450+++ breezy/tests/blackbox/test_help.py 2018-08-14 20:37:51 +0000
451@@ -187,17 +187,17 @@
452 self.overrideAttr(i18n, '_translations', ZzzTranslations())
453
454 def test_help_command_utf8(self):
455- out, err = self.run_bzr(["help", "push"], encoding="utf-8")
456+ out, err = self.run_bzr_raw(["help", "push"], encoding="utf-8")
457 self.assertContainsRe(out, b"zz\xc3\xa5{{:See also:")
458
459 def test_help_switch_utf8(self):
460- out, err = self.run_bzr(["push", "--help"], encoding="utf-8")
461+ out, err = self.run_bzr_raw(["push", "--help"], encoding="utf-8")
462 self.assertContainsRe(out, b"zz\xc3\xa5{{:See also:")
463
464 def test_help_command_ascii(self):
465- out, err = self.run_bzr(["help", "push"], encoding="ascii")
466+ out, err = self.run_bzr_raw(["help", "push"], encoding="ascii")
467 self.assertContainsRe(out, b"zz\\?{{:See also:")
468
469 def test_help_switch_ascii(self):
470- out, err = self.run_bzr(["push", "--help"], encoding="ascii")
471+ out, err = self.run_bzr_raw(["push", "--help"], encoding="ascii")
472 self.assertContainsRe(out, b"zz\\?{{:See also:")
473
474=== modified file 'breezy/tests/blackbox/test_log.py'
475--- breezy/tests/blackbox/test_log.py 2018-07-27 01:17:23 +0000
476+++ breezy/tests/blackbox/test_log.py 2018-08-14 20:37:51 +0000
477@@ -814,7 +814,7 @@
478 self.build_tree(['a'])
479 brz('add a')
480 brz(['commit', '-m', u'\u0422\u0435\u0441\u0442'])
481- stdout, stderr = self.run_bzr('log', encoding='cp866')
482+ stdout, stderr = self.run_bzr_raw('log', encoding='cp866')
483
484 message = stdout.splitlines()[-1]
485
486@@ -824,8 +824,8 @@
487 # in cp1251 encoding this is string '\xd2\xe5\xf1\xf2'
488 # This test should check that output of log command
489 # encoded to sys.stdout.encoding
490- test_in_cp866 = '\x92\xa5\xe1\xe2'
491- test_in_cp1251 = '\xd2\xe5\xf1\xf2'
492+ test_in_cp866 = b'\x92\xa5\xe1\xe2'
493+ test_in_cp1251 = b'\xd2\xe5\xf1\xf2'
494 # Make sure the log string is encoded in cp866
495 self.assertEqual(test_in_cp866, message[2:])
496 # Make sure the cp1251 string is not found anywhere
497
498=== modified file 'breezy/tests/blackbox/test_non_ascii.py'
499--- breezy/tests/blackbox/test_non_ascii.py 2018-07-17 21:20:55 +0000
500+++ breezy/tests/blackbox/test_non_ascii.py 2018-08-14 20:37:51 +0000
501@@ -61,12 +61,9 @@
502 if encoding is None:
503 encoding = osutils.get_user_encoding()
504 try:
505- out = self.run_bzr(args, encoding=encoding,
506+ out = self.run_bzr_raw(args, encoding=encoding,
507 retcode=retcode, working_dir=working_dir)[0]
508- if PY3:
509- return out.encode(encoding, 'replace').decode(encoding)
510- else:
511- return out.decode(encoding)
512+ return out.decode(encoding)
513 except UnicodeError as e:
514 if not fail:
515 raise
516@@ -157,12 +154,12 @@
517 def test_cat(self):
518 # brz cat shouldn't change the contents
519 # using run_brz since that doesn't decode
520- txt = self.run_bzr('cat b')[0]
521- self.assertEqual('non-ascii \xFF\xFF\xFC\xFB\x00 in b\n', txt)
522+ txt = self.run_bzr_raw('cat b')[0]
523+ self.assertEqual(b'non-ascii \xFF\xFF\xFC\xFB\x00 in b\n', txt)
524
525 self._check_OSX_can_roundtrip(self.info['filename'])
526- txt = self.run_bzr(['cat', self.info['filename']])[0]
527- self.assertEqual('unicode filename\n', txt)
528+ txt = self.run_bzr_raw(['cat', self.info['filename']])[0]
529+ self.assertEqual(b'unicode filename\n', txt)
530
531 def test_cat_revision(self):
532 committer = self.info['committer']
533@@ -179,8 +176,8 @@
534 self.assertEqual(u'added %s\n' % self.info['directory'], txt)
535
536 # The text should be garbled, but the command should succeed
537- txt = self.run_bzr_decode(['mkdir', self.info['directory'] + '2'],
538- encoding='ascii')
539+ txt = self.run_bzr_raw(['mkdir', self.info['directory'] + '2'],
540+ encoding='ascii')[0]
541 expected = u'added %s2\n' % (self.info['directory'],)
542 expected = expected.encode('ascii', 'replace')
543 self.assertEqual(expected, txt)
544@@ -245,9 +242,9 @@
545
546 # The rename should still succeed
547 newpath = u'%s/%s' % (dirname, fname2)
548- txt = self.run_bzr_decode(['mv', newpath, 'a'], encoding='ascii')
549+ txt = self.run_bzr_raw(['mv', newpath, 'a'], encoding='ascii')[0]
550 self.assertPathExists('a')
551- self.assertEqual(newpath.encode('ascii', 'replace') + ' => a\n', txt)
552+ self.assertEqual(newpath.encode('ascii', 'replace') + b' => a\n', txt)
553
554 def test_branch(self):
555 # We should be able to branch into a directory that
556@@ -445,8 +442,7 @@
557 self.assertNotEqual(-1, txt.find(fname))
558
559 # Make sure log doesn't fail even if we can't write out
560- txt = self.run_bzr_decode('log --verbose', encoding='ascii')
561- self.assertEqual(-1, txt.find(fname))
562+ txt = self.run_bzr_raw('log --verbose', encoding='ascii')[0]
563 self.assertNotEqual(-1, txt.find(fname.encode('ascii', 'replace')))
564
565 def test_touching_revisions(self):
566@@ -536,8 +532,8 @@
567 self.assertNotEqual(-1, txt.find(msg))
568
569 # Make sure missing doesn't fail even if we can't write out
570- txt = self.run_bzr_decode('missing empty-tree', encoding='ascii')
571- self.assertEqual(-1, txt.find(msg))
572+ txt = self.run_bzr_raw('missing empty-tree', encoding='ascii',
573+ retcode=1)[0]
574 self.assertNotEqual(-1, txt.find(msg.encode('ascii', 'replace')))
575
576 def test_info(self):
577
578=== modified file 'breezy/tests/blackbox/test_shelve.py'
579--- breezy/tests/blackbox/test_shelve.py 2018-07-22 17:06:14 +0000
580+++ breezy/tests/blackbox/test_shelve.py 2018-08-14 20:37:51 +0000
581@@ -103,6 +103,7 @@
582 contents of file
583 ''')
584
585+
586 class TestUnshelvePreview(TestCaseWithTransport):
587
588 def test_non_ascii(self):
589@@ -111,7 +112,7 @@
590 init_content = u'Initial: \u0418\u0437\u043d\u0430\u0447\n'.encode('utf-8')
591 more_content = u'More: \u0415\u0449\u0451\n'.encode('utf-8')
592 next_content = init_content + more_content
593- diff_part = '@@ -1,1 +1,2 @@\n %s+%s' % (init_content, more_content)
594+ diff_part = b'@@ -1,1 +1,2 @@\n %s+%s' % (init_content, more_content)
595
596 tree = self.make_branch_and_tree('.')
597 self.build_tree_contents([('a_file', init_content)])
598@@ -119,7 +120,7 @@
599 tree.commit(message='committed')
600 self.build_tree_contents([('a_file', next_content)])
601 self.run_bzr(['shelve', '--all'])
602- out, err = self.run_bzr(['unshelve', '--preview'], encoding='latin-1')
603+ out, err = self.run_bzr_raw(['unshelve', '--preview'], encoding='latin-1')
604
605 self.assertContainsString(out, diff_part)
606
607
608=== modified file 'breezy/tests/blackbox/test_tags.py'
609--- breezy/tests/blackbox/test_tags.py 2018-07-13 00:16:39 +0000
610+++ breezy/tests/blackbox/test_tags.py 2018-08-14 20:37:51 +0000
611@@ -42,7 +42,7 @@
612 def test_cannot_tag_range(self):
613 out, err = self.run_bzr('tag -r1..10 name', retcode=3)
614 self.assertContainsRe(err,
615- b"Tags can only be placed on a single revision")
616+ "Tags can only be placed on a single revision")
617
618 def test_no_tag_name(self):
619 out, err = self.run_bzr('tag -d branch', retcode=3)
620@@ -220,35 +220,34 @@
621 b1.tags.set_tag(u'tag2\u30d0', b'revid-1')
622
623 # natural order
624- out, err = self.run_bzr('tags -d branch1',
625- encoding='utf-8')
626- self.assertEqual(err, '')
627+ out, err = self.run_bzr_raw('tags -d branch1', encoding='utf-8')
628+ self.assertEqual(err, b'')
629 self.assertContainsRe(out, (u'^tag1\u30d0 *2\ntag2\u30d0 *1\n' +
630 u'tag10\u30d0 *\\?\n').encode('utf-8'))
631
632 # lexicographical order
633- out, err = self.run_bzr('tags --sort=alpha -d branch1',
634- encoding='utf-8')
635- self.assertEqual(err, '')
636+ out, err = self.run_bzr_raw('tags --sort=alpha -d branch1',
637+ encoding='utf-8')
638+ self.assertEqual(err, b'')
639 self.assertContainsRe(out, (u'^tag10\u30d0 *\\?\ntag1\u30d0 *2\n' +
640 u'tag2\u30d0 *1\n').encode('utf-8'))
641
642- out, err = self.run_bzr('tags --sort=alpha --show-ids -d branch1',
643+ out, err = self.run_bzr_raw('tags --sort=alpha --show-ids -d branch1',
644 encoding='utf-8')
645- self.assertEqual(err, '')
646+ self.assertEqual(err, b'')
647 self.assertContainsRe(out, (u'^tag10\u30d0 *missing\n' +
648 u'tag1\u30d0 *revid-2\ntag2\u30d0 *revid-1\n').encode('utf-8'))
649
650 # chronological order
651- out, err = self.run_bzr('tags --sort=time -d branch1',
652+ out, err = self.run_bzr_raw('tags --sort=time -d branch1',
653 encoding='utf-8')
654- self.assertEqual(err, '')
655+ self.assertEqual(err, b'')
656 self.assertContainsRe(out, (u'^tag2\u30d0 *1\ntag1\u30d0 *2\n' +
657 u'tag10\u30d0 *\\?\n').encode('utf-8'))
658
659- out, err = self.run_bzr('tags --sort=time --show-ids -d branch1',
660+ out, err = self.run_bzr_raw('tags --sort=time --show-ids -d branch1',
661 encoding='utf-8')
662- self.assertEqual(err, '')
663+ self.assertEqual(err, b'')
664 self.assertContainsRe(out, (u'^tag2\u30d0 *revid-1\n' +
665 u'tag1\u30d0 *revid-2\ntag10\u30d0 *missing\n').encode('utf-8'))
666
667
668=== modified file 'breezy/tests/blackbox/test_version.py'
669--- breezy/tests/blackbox/test_version.py 2018-07-27 01:17:23 +0000
670+++ breezy/tests/blackbox/test_version.py 2018-08-14 20:37:51 +0000
671@@ -101,9 +101,9 @@
672 else:
673 self.overrideEnv('BRZ_HOME', str_val)
674 self.permit_source_tree_branch_repo()
675- out = self.run_bzr("version")[0]
676+ out = self.run_bzr_raw("version")[0]
677 self.assertTrue(len(out) > 0)
678- self.assertContainsRe(out, r"(?m)^ Breezy configuration: " + str_val)
679+ self.assertContainsRe(out, br"(?m)^ Breezy configuration: " + str_val)
680
681
682 class TestVersionBzrLogLocation(TestCaseInTempDir):
683@@ -115,7 +115,7 @@
684 self.assertPathDoesNotExist([default_log, brz_log])
685 out = self.run_bzr_subprocess('version')[0]
686 self.assertTrue(len(out) > 0)
687- self.assertContainsRe(out, br"(?m)^ Breezy log file: " + brz_log)
688+ self.assertContainsRe(out, br"(?m)^ Breezy log file: " + brz_log.encode('ascii'))
689 self.assertPathDoesNotExist(default_log)
690 self.assertPathExists(brz_log)
691
692@@ -131,7 +131,7 @@
693 self.assertPathDoesNotExist(default_log)
694 out = self.run_bzr_subprocess('version')[0]
695 self.assertTrue(len(out) > 0)
696- self.assertContainsRe(out, br"(?m)^ Breezy log file: " + brz_log)
697+ self.assertContainsRe(out, br"(?m)^ Breezy log file: " + brz_log.encode('ascii'))
698 self.assertPathDoesNotExist(default_log)
699
700 def test_unicode_brz_log(self):
701@@ -144,8 +144,11 @@
702 "Test string %r unrepresentable in user encoding %s" % (
703 uni_val, enc))
704 self.overrideEnv('BRZ_HOME', self.test_base_dir)
705- self.overrideEnv("BRZ_LOG",
706- os.path.join(self.test_base_dir, uni_val).encode(enc))
707+ brz_log = os.path.join(self.test_base_dir, uni_val)
708+ if PY3:
709+ self.overrideEnv("BRZ_LOG", brz_log)
710+ else:
711+ self.overrideEnv("BRZ_LOG", brz_log.encode(enc))
712 out, err = self.run_bzr_subprocess("version")
713 uni_out = out.decode(enc)
714 self.assertContainsRe(uni_out, u"(?m)^ Breezy log file: .*/\xa7$")
715
716=== modified file 'breezy/tests/blackbox/test_version_info.py'
717--- breezy/tests/blackbox/test_version_info.py 2018-07-25 01:23:15 +0000
718+++ breezy/tests/blackbox/test_version_info.py 2018-08-14 20:37:51 +0000
719@@ -171,11 +171,10 @@
720 self.build_tree(['a_file'])
721 tree.add('a_file')
722 tree.commit(commit_message)
723- out, err = self.run_bzr(
724+ out, err = self.run_bzr_raw(
725 ['version-info', '--include-history'], encoding='latin-1')
726
727- if not PY3:
728- commit_message = commit_message.encode('latin-1', 'replace')
729+ commit_message = commit_message.encode('latin-1', 'replace')
730 self.assertContainsString(out, commit_message)
731
732 def test_revision(self):
733
734=== modified file 'breezy/tests/script.py'
735--- breezy/tests/script.py 2018-07-15 18:45:17 +0000
736+++ breezy/tests/script.py 2018-08-14 20:37:51 +0000
737@@ -22,14 +22,18 @@
738 import doctest
739 import errno
740 import glob
741+import logging
742 import os
743 import shlex
744+import sys
745 import textwrap
746
747 from .. import (
748 osutils,
749 tests,
750+ trace,
751 )
752+from ..tests import ui_testing
753
754
755 def split(s):
756@@ -315,9 +319,32 @@
757 return output
758
759 def do_brz(self, test_case, input, args):
760- retcode, out, err = test_case._run_bzr_core(
761- args, retcode=None, encoding=None, stdin=input, working_dir=None)
762- return retcode, out, err
763+ encoding = osutils.get_user_encoding()
764+ if sys.version_info[0] == 2:
765+ stdout = ui_testing.BytesIOWithEncoding()
766+ stderr = ui_testing.BytesIOWithEncoding()
767+ stdout.encoding = stderr.encoding = encoding
768+
769+ # FIXME: don't call into logging here
770+ handler = trace.EncodedStreamHandler(
771+ stderr, errors="replace")
772+ else:
773+ stdout = ui_testing.StringIOWithEncoding()
774+ stderr = ui_testing.StringIOWithEncoding()
775+ stdout.encoding = stderr.encoding = encoding
776+ handler = logging.StreamHandler(stderr)
777+ handler.setLevel(logging.INFO)
778+
779+ logger = logging.getLogger('')
780+ logger.addHandler(handler)
781+ try:
782+ retcode = test_case._run_bzr_core(
783+ args, encoding=encoding, stdin=input, stdout=stdout,
784+ stderr=stderr, working_dir=None)
785+ finally:
786+ logger.removeHandler(handler)
787+
788+ return retcode, stdout.getvalue(), stderr.getvalue()
789
790 def do_cat(self, test_case, input, args):
791 (in_name, out_name, out_mode, args) = _scan_redirection_options(args)
792
793=== modified file 'breezy/tests/test_errors.py'
794--- breezy/tests/test_errors.py 2017-10-27 00:18:42 +0000
795+++ breezy/tests/test_errors.py 2018-08-14 20:37:51 +0000
796@@ -29,6 +29,7 @@
797 urlutils,
798 )
799 from ..sixish import (
800+ PY3,
801 text_type,
802 )
803
804@@ -511,12 +512,15 @@
805 def test_always_str(self):
806 e = PassThroughError(u'\xb5', 'bar')
807 self.assertIsInstance(e.__str__(), str)
808- # In Python str(foo) *must* return a real byte string
809+ # In Python 2 str(foo) *must* return a real byte string
810 # not a Unicode string. The following line would raise a
811 # Unicode error, because it tries to call str() on the string
812 # returned from e.__str__(), and it has non ascii characters
813 s = str(e)
814- self.assertEqual('Pass through \xc2\xb5 and bar', s)
815+ if PY3:
816+ self.assertEqual('Pass through \xb5 and bar', s)
817+ else:
818+ self.assertEqual('Pass through \xc2\xb5 and bar', s)
819
820 def test_missing_format_string(self):
821 e = ErrorWithNoFormat(param='randomvalue')
822
823=== modified file 'breezy/tests/test_nonascii.py'
824--- breezy/tests/test_nonascii.py 2018-07-24 21:44:05 +0000
825+++ breezy/tests/test_nonascii.py 2018-08-14 20:37:51 +0000
826@@ -154,7 +154,7 @@
827 with open(path, 'rb') as f:
828 # Check the contents
829 shouldbe = b'contents of %s%s' % (path.encode('utf8'),
830- os.linesep)
831+ os.linesep.encode('utf-8'))
832 actual = f.read()
833 self.assertEqual(shouldbe, actual,
834 'contents of %r is incorrect: %r != %r'
835
836=== modified file 'breezy/tests/test_osutils.py'
837--- breezy/tests/test_osutils.py 2018-07-24 22:51:28 +0000
838+++ breezy/tests/test_osutils.py 2018-08-14 20:37:51 +0000
839@@ -1202,8 +1202,8 @@
840 self.build_tree(tree)
841
842 # rename the 1file to a latin-1 filename
843- os.rename("./1file", "\xe8file")
844- if "\xe8file" not in os.listdir("."):
845+ os.rename(b"./1file", b"\xe8file")
846+ if b"\xe8file" not in os.listdir("."):
847 self.skipTest("Lack filesystem that preserves arbitrary bytes")
848
849 self._save_platform_info()
850@@ -1211,7 +1211,7 @@
851
852 # this should raise on error
853 def attempt():
854- for dirdetail, dirblock in osutils.walkdirs('.'):
855+ for dirdetail, dirblock in osutils.walkdirs(b'.'):
856 pass
857
858 self.assertRaises(errors.BadFilenameEncoding, attempt)
859@@ -1245,11 +1245,15 @@
860 ]
861 result = []
862 found_bzrdir = False
863- for dirdetail, dirblock in osutils._walkdirs_utf8('.'):
864- if len(dirblock) and dirblock[0][1] == '.bzr':
865+ for dirdetail, dirblock in osutils._walkdirs_utf8(b'.'):
866+ if len(dirblock) and dirblock[0][1] == b'.bzr':
867 # this tests the filtering of selected paths
868 found_bzrdir = True
869 del dirblock[0]
870+ dirdetail = (dirdetail[0].decode('utf-8'), dirdetail[1])
871+ dirblock = [
872+ (entry[0].decode('utf-8'), entry[1].decode('utf-8'), entry[2])
873+ for entry in dirblock]
874 result.append((dirdetail, dirblock))
875
876 self.assertTrue(found_bzrdir)
877@@ -1720,7 +1724,10 @@
878 % (osutils.get_user_encoding(),))
879
880 old = osutils.set_or_unset_env('BRZ_TEST_ENV_VAR', uni_val)
881- self.assertEqual(env_val, os.environ.get('BRZ_TEST_ENV_VAR'))
882+ if PY3:
883+ self.assertEqual(uni_val, os.environ.get('BRZ_TEST_ENV_VAR'))
884+ else:
885+ self.assertEqual(env_val, os.environ.get('BRZ_TEST_ENV_VAR'))
886
887 def test_unset(self):
888 """Test that passing None will remove the env var"""
889@@ -2150,11 +2157,16 @@
890 self.assertEqual(u'/home/\xa7test',
891 osutils._posix_path_from_environ('BRZ_TEST_PATH'))
892 osutils._fs_enc = "iso8859-5"
893- self.assertEqual(u'/home/\u0407test',
894- osutils._posix_path_from_environ('BRZ_TEST_PATH'))
895- osutils._fs_enc = "utf-8"
896- self.assertRaises(errors.BadFilenameEncoding,
897- osutils._posix_path_from_environ, 'BRZ_TEST_PATH')
898+ if PY3:
899+ # In Python 3, os.environ returns unicode.
900+ self.assertEqual(u'/home/\xa7test',
901+ osutils._posix_path_from_environ('BRZ_TEST_PATH'))
902+ else:
903+ self.assertEqual(u'/home/\u0407test',
904+ osutils._posix_path_from_environ('BRZ_TEST_PATH'))
905+ osutils._fs_enc = "utf-8"
906+ self.assertRaises(errors.BadFilenameEncoding,
907+ osutils._posix_path_from_environ, 'BRZ_TEST_PATH')
908
909
910 class TestGetHomeDir(tests.TestCase):
911@@ -2180,10 +2192,14 @@
912 self.overrideAttr(osutils, "_fs_enc", "iso8859-1")
913 self.assertEqual(u'/home/\xa7test', osutils._posix_get_home_dir())
914 osutils._fs_enc = "iso8859-5"
915- self.assertEqual(u'/home/\u0407test', osutils._posix_get_home_dir())
916- osutils._fs_enc = "utf-8"
917- self.assertRaises(errors.BadFilenameEncoding,
918- osutils._posix_get_home_dir)
919+ if PY3:
920+ # In python 3, os.environ returns unicode
921+ self.assertEqual(u'/home/\xa7test', osutils._posix_get_home_dir())
922+ else:
923+ self.assertEqual(u'/home/\u0407test', osutils._posix_get_home_dir())
924+ osutils._fs_enc = "utf-8"
925+ self.assertRaises(errors.BadFilenameEncoding,
926+ osutils._posix_get_home_dir)
927
928
929 class TestGetuserUnicode(tests.TestCase):
930@@ -2212,7 +2228,10 @@
931 % (osutils.get_user_encoding(),))
932 uni_username = u'jrandom' + uni_val
933 encoded_username = uni_username.encode(ue)
934- self.overrideEnv(self.envvar_to_override(), encoded_username)
935+ if PY3:
936+ self.overrideEnv(self.envvar_to_override(), uni_username)
937+ else:
938+ self.overrideEnv(self.envvar_to_override(), encoded_username)
939 self.assertEqual(uni_username, osutils.getuser_unicode())
940
941
942
943=== modified file 'breezy/tests/test_remote.py'
944--- breezy/tests/test_remote.py 2018-08-02 01:10:26 +0000
945+++ breezy/tests/test_remote.py 2018-08-14 20:37:51 +0000
946@@ -71,6 +71,7 @@
947 )
948 from ..sixish import (
949 BytesIO,
950+ PY3,
951 text_type,
952 )
953 from ..bzr.smart import medium, request
954@@ -337,10 +338,13 @@
955 client = FakeClient('/')
956 client.add_success_response(b'yes',)
957 transport = RemoteTransport('bzr://localhost/', _client=client)
958- filename = u'/hell\u00d8'.encode('utf-8')
959- result = transport.has(filename)
960+ filename = u'/hell\u00d8'
961+ if PY3:
962+ result = transport.has(filename)
963+ else:
964+ result = transport.has(filename.encode('utf-8'))
965 self.assertEqual(
966- [('call', b'has', (filename,))],
967+ [('call', b'has', (filename.encode('utf-8'),))],
968 client._calls)
969 self.assertTrue(result)
970
971
972=== modified file 'breezy/tests/test_selftest.py'
973--- breezy/tests/test_selftest.py 2018-08-02 23:52:07 +0000
974+++ breezy/tests/test_selftest.py 2018-08-14 20:37:51 +0000
975@@ -1778,11 +1778,6 @@
976 return ExampleTests(name)
977
978
979-def _get_skip_reasons(result):
980- # GZ 2017-06-06: Newer testtools doesn't have this, uses detail instead
981- return result.skip_reasons
982-
983-
984 class TestTestCaseLogDetails(tests.TestCase):
985
986 def _run_test(self, test_name):
987@@ -1809,7 +1804,7 @@
988
989 def test_skip_has_no_log(self):
990 result = self._run_test('test_skip')
991- reasons = _get_skip_reasons(result)
992+ reasons = result.skip_reasons
993 self.assertEqual({'reason'}, set(reasons))
994 skips = reasons['reason']
995 self.assertEqual(1, len(skips))
996@@ -1820,7 +1815,7 @@
997 # testtools doesn't know about addNotSupported, so it just gets
998 # considered as a skip
999 result = self._run_test('test_missing_feature')
1000- reasons = _get_skip_reasons(result)
1001+ reasons = result.skip_reasons
1002 self.assertEqual({str(missing_feature)}, set(reasons))
1003 skips = reasons[str(missing_feature)]
1004 self.assertEqual(1, len(skips))
1005@@ -2231,7 +2226,7 @@
1006 content, result = self.run_subunit_stream('test_skip')
1007 self.assertNotContainsRe(content, '(?m)^log$')
1008 self.assertNotContainsRe(content, 'this test will be skipped')
1009- reasons = _get_skip_reasons(result)
1010+ reasons = result.skip_reasons
1011 self.assertEqual({'reason'}, set(reasons))
1012 skips = reasons['reason']
1013 self.assertEqual(1, len(skips))
1014@@ -2243,7 +2238,7 @@
1015 content, result = self.run_subunit_stream('test_missing_feature')
1016 self.assertNotContainsRe(content, '(?m)^log$')
1017 self.assertNotContainsRe(content, 'missing the feature')
1018- reasons = _get_skip_reasons(result)
1019+ reasons = result.skip_reasons
1020 self.assertEqual({'_MissingFeature\n'}, set(reasons))
1021 skips = reasons['_MissingFeature\n']
1022 self.assertEqual(1, len(skips))
1023@@ -2265,13 +2260,6 @@
1024 content, result = self.run_subunit_stream('test_unexpected_success')
1025 self.assertContainsRe(content, '(?m)^log$')
1026 self.assertContainsRe(content, 'test with unexpected success')
1027- # GZ 2011-05-18: Old versions of subunit treat unexpected success as a
1028- # success, if a min version check is added remove this
1029- from subunit import TestProtocolClient as _Client
1030- if _Client.addUnexpectedSuccess.__func__ is _Client.addSuccess.__func__:
1031- self.expectFailure('subunit treats "unexpectedSuccess"'
1032- ' as a plain success',
1033- self.assertEqual, 1, len(result.unexpectedSuccesses))
1034 self.assertEqual(1, len(result.unexpectedSuccesses))
1035 test = result.unexpectedSuccesses[0]
1036 # RemotedTestCase doesn't preserve the "details"
1037@@ -2286,11 +2274,12 @@
1038
1039 class TestRunBzr(tests.TestCase):
1040
1041+ result = 0
1042 out = ''
1043 err = ''
1044
1045- def _run_bzr_core(self, argv, retcode=0, encoding=None, stdin=None,
1046- working_dir=None):
1047+ def _run_bzr_core(self, argv, encoding=None, stdin=None,
1048+ stdout=None, stderr=None, working_dir=None):
1049 """Override _run_bzr_core to test how it is invoked by run_bzr.
1050
1051 Attempts to run bzr from inside this class don't actually run it.
1052@@ -2299,58 +2288,41 @@
1053 only need to test that it passes the right parameters to run_bzr.
1054 """
1055 self.argv = list(argv)
1056- self.retcode = retcode
1057 self.encoding = encoding
1058 self.stdin = stdin
1059 self.working_dir = working_dir
1060- return self.retcode, self.out, self.err
1061+ stdout.write(self.out)
1062+ stderr.write(self.err)
1063+ return self.result
1064
1065 def test_run_bzr_error(self):
1066 self.out = "It sure does!\n"
1067+ self.result = 34
1068 out, err = self.run_bzr_error(['^$'], ['rocks'], retcode=34)
1069 self.assertEqual(['rocks'], self.argv)
1070- self.assertEqual(34, self.retcode)
1071 self.assertEqual('It sure does!\n', out)
1072 self.assertEqual(out, self.out)
1073 self.assertEqual('', err)
1074 self.assertEqual(err, self.err)
1075
1076 def test_run_bzr_error_regexes(self):
1077- self.out = b''
1078- self.err = b"bzr: ERROR: foobarbaz is not versioned"
1079+ self.out = ''
1080+ self.err = "bzr: ERROR: foobarbaz is not versioned"
1081+ self.result = 3
1082 out, err = self.run_bzr_error(
1083- [b"bzr: ERROR: foobarbaz is not versioned"],
1084+ ["bzr: ERROR: foobarbaz is not versioned"],
1085 ['file-id', 'foobarbaz'])
1086
1087 def test_encoding(self):
1088 """Test that run_bzr passes encoding to _run_bzr_core"""
1089 self.run_bzr('foo bar')
1090- self.assertEqual(None, self.encoding)
1091+ self.assertEqual(osutils.get_user_encoding(), self.encoding)
1092 self.assertEqual(['foo', 'bar'], self.argv)
1093
1094 self.run_bzr('foo bar', encoding='baz')
1095 self.assertEqual('baz', self.encoding)
1096 self.assertEqual(['foo', 'bar'], self.argv)
1097
1098- def test_retcode(self):
1099- """Test that run_bzr passes retcode to _run_bzr_core"""
1100- # Default is retcode == 0
1101- self.run_bzr('foo bar')
1102- self.assertEqual(0, self.retcode)
1103- self.assertEqual(['foo', 'bar'], self.argv)
1104-
1105- self.run_bzr('foo bar', retcode=1)
1106- self.assertEqual(1, self.retcode)
1107- self.assertEqual(['foo', 'bar'], self.argv)
1108-
1109- self.run_bzr('foo bar', retcode=None)
1110- self.assertEqual(None, self.retcode)
1111- self.assertEqual(['foo', 'bar'], self.argv)
1112-
1113- self.run_bzr(['foo', 'bar'], retcode=3)
1114- self.assertEqual(3, self.retcode)
1115- self.assertEqual(['foo', 'bar'], self.argv)
1116-
1117 def test_stdin(self):
1118 # test that the stdin keyword to run_bzr is passed through to
1119 # _run_bzr_core as-is. We do this by overriding
1120
1121=== modified file 'python3.passing'
1122--- python3.passing 2018-08-08 02:10:06 +0000
1123+++ python3.passing 2018-08-14 20:37:51 +0000
1124@@ -1,5 +1,320 @@
1125 # This is the list of tests that are known to pass with Python3.
1126 # "make check-nodocs3" verifies that these pass.
1127+breezy.git.tests.test_blackbox.ShallowTests.test_log_shallow
1128+breezy.git.tests.test_blackbox.ShallowTests.test_version_info_custom_without_revno
1129+breezy.git.tests.test_blackbox.ShallowTests.test_version_info_custom_with_revno
1130+breezy.git.tests.test_blackbox.ShallowTests.test_version_info_python
1131+breezy.git.tests.test_blackbox.ShallowTests.test_version_info_rio
1132+breezy.git.tests.test_blackbox.TestGitBlackBox.test_branch
1133+breezy.git.tests.test_blackbox.TestGitBlackBox.test_branches
1134+breezy.git.tests.test_blackbox.TestGitBlackBox.test_branch_ls
1135+breezy.git.tests.test_blackbox.TestGitBlackBox.test_check
1136+breezy.git.tests.test_blackbox.TestGitBlackBox.test_checkout
1137+breezy.git.tests.test_blackbox.TestGitBlackBox.test_diff_format
1138+breezy.git.tests.test_blackbox.TestGitBlackBox.test_git_import
1139+breezy.git.tests.test_blackbox.TestGitBlackBox.test_git_import_colo
1140+breezy.git.tests.test_blackbox.TestGitBlackBox.test_git_import_incremental
1141+breezy.git.tests.test_blackbox.TestGitBlackBox.test_git_import_tags
1142+breezy.git.tests.test_blackbox.TestGitBlackBox.test_git_import_uncolocated
1143+breezy.git.tests.test_blackbox.TestGitBlackBox.test_git_refs_from_bzr
1144+breezy.git.tests.test_blackbox.TestGitBlackBox.test_git_refs_from_git
1145+breezy.git.tests.test_blackbox.TestGitBlackBox.test_info
1146+breezy.git.tests.test_blackbox.TestGitBlackBox.test_info_verbose
1147+breezy.git.tests.test_blackbox.TestGitBlackBox.test_init
1148+breezy.git.tests.test_blackbox.TestGitBlackBox.test_init_repo
1149+breezy.git.tests.test_blackbox.TestGitBlackBox.test_log
1150+breezy.git.tests.test_blackbox.TestGitBlackBox.test_log_verbose
1151+breezy.git.tests.test_blackbox.TestGitBlackBox.test_nick
1152+breezy.git.tests.test_blackbox.TestGitBlackBox.test_tag
1153+breezy.git.tests.test_blackbox.TestGitBlackBox.test_tags
1154+breezy.git.tests.test_branch.BranchTests.test_interbranch_pull
1155+breezy.git.tests.test_branch.BranchTests.test_interbranch_pull_noop
1156+breezy.git.tests.test_branch.BranchTests.test_interbranch_pull_stop_revision
1157+breezy.git.tests.test_branch.BranchTests.test_interbranch_pull_with_tags
1158+breezy.git.tests.test_branch.BranchTests.test_single_rev
1159+breezy.git.tests.test_branch.BranchTests.test_sprouted_tags
1160+breezy.git.tests.test_branch.TestGitBranch.test_last_revision_info
1161+breezy.git.tests.test_branch.TestGitBranch.test_last_revision_is_null
1162+breezy.git.tests.test_branch.TestGitBranch.test_last_revision_is_valid
1163+breezy.git.tests.test_branch.TestGitBranch.test_open_by_ref
1164+breezy.git.tests.test_branch.TestGitBranch.test_open_existing
1165+breezy.git.tests.test_branch.TestGitBranch.test_repr
1166+breezy.git.tests.test_branch.TestGitBranch.test_tag
1167+breezy.git.tests.test_branch.TestGitBranch.test_tag_annotated
1168+breezy.git.tests.test_branch.TestLocalGitBranchFormat.test_get_format_description
1169+breezy.git.tests.test_branch.TestLocalGitBranchFormat.test_get_network_name
1170+breezy.git.tests.test_branch.TestLocalGitBranchFormat.test_supports_tags
1171+breezy.git.tests.test_branch.TestWithGitBranch.test_get_parent
1172+breezy.git.tests.test_branch.TestWithGitBranch.test_get_physical_lock_status
1173+breezy.git.tests.test_branch.TestWithGitBranch.test_get_stacked_on_url
1174+breezy.git.tests.test_builder.TestGitBranchBuilderReal.test_create_real_branch
1175+breezy.git.tests.test_builder.TestGitBranchBuilder.test_add_and_commit
1176+breezy.git.tests.test_builder.TestGitBranchBuilder.test_auto_timestamp
1177+breezy.git.tests.test_builder.TestGitBranchBuilder.test_commit_base
1178+breezy.git.tests.test_builder.TestGitBranchBuilder.test_commit_merge
1179+breezy.git.tests.test_builder.TestGitBranchBuilder.test__create_blob
1180+breezy.git.tests.test_builder.TestGitBranchBuilder.test_delete_entry
1181+breezy.git.tests.test_builder.TestGitBranchBuilder.test_delete_entry_newline
1182+breezy.git.tests.test_builder.TestGitBranchBuilder.test_encode_path
1183+breezy.git.tests.test_builder.TestGitBranchBuilder.test_reset
1184+breezy.git.tests.test_builder.TestGitBranchBuilder.test_reset_named_ref
1185+breezy.git.tests.test_builder.TestGitBranchBuilder.test_reset_revision
1186+breezy.git.tests.test_builder.TestGitBranchBuilder.test_set_file
1187+breezy.git.tests.test_builder.TestGitBranchBuilder.test_set_file_executable
1188+breezy.git.tests.test_builder.TestGitBranchBuilder.test_set_file_newline
1189+breezy.git.tests.test_builder.TestGitBranchBuilder.test_set_file_unicode
1190+breezy.git.tests.test_builder.TestGitBranchBuilder.test_set_symlink
1191+breezy.git.tests.test_builder.TestGitBranchBuilder.test_set_symlink_newline
1192+breezy.git.tests.test_cache.DictGitShaMapTests.test_blob
1193+breezy.git.tests.test_cache.DictGitShaMapTests.test_commit
1194+breezy.git.tests.test_cache.DictGitShaMapTests.test_lookup_notfound
1195+breezy.git.tests.test_cache.DictGitShaMapTests.test_missing_revisions
1196+breezy.git.tests.test_cache.DictGitShaMapTests.test_revids
1197+breezy.git.tests.test_cache.DictGitShaMapTests.test_tree
1198+breezy.git.tests.test_cache.IndexGitShaMapTests.test_blob
1199+breezy.git.tests.test_cache.IndexGitShaMapTests.test_commit
1200+breezy.git.tests.test_cache.IndexGitShaMapTests.test_lookup_notfound
1201+breezy.git.tests.test_cache.IndexGitShaMapTests.test_missing_revisions
1202+breezy.git.tests.test_cache.IndexGitShaMapTests.test_revids
1203+breezy.git.tests.test_cache.IndexGitShaMapTests.test_tree
1204+breezy.git.tests.test_cache.SqliteGitShaMapTests.test_blob
1205+breezy.git.tests.test_cache.SqliteGitShaMapTests.test_commit
1206+breezy.git.tests.test_cache.SqliteGitShaMapTests.test_lookup_notfound
1207+breezy.git.tests.test_cache.SqliteGitShaMapTests.test_missing_revisions
1208+breezy.git.tests.test_cache.SqliteGitShaMapTests.test_revids
1209+breezy.git.tests.test_cache.SqliteGitShaMapTests.test_tree
1210+breezy.git.tests.test_cache.TdbGitShaMapTests.test_blob
1211+breezy.git.tests.test_cache.TdbGitShaMapTests.test_commit
1212+breezy.git.tests.test_cache.TdbGitShaMapTests.test_lookup_notfound
1213+breezy.git.tests.test_cache.TdbGitShaMapTests.test_missing_revisions
1214+breezy.git.tests.test_cache.TdbGitShaMapTests.test_revids
1215+breezy.git.tests.test_cache.TdbGitShaMapTests.test_tree
1216+breezy.git.tests.test_dir.TestGitDirFormat.test_eq
1217+breezy.git.tests.test_dir.TestGitDirFormat.test_get_format_description
1218+breezy.git.tests.test_dir.TestGitDir.test_get_head_branch_reference
1219+breezy.git.tests.test_dir.TestGitDir.test_git_file
1220+breezy.git.tests.test_dir.TestGitDir.test_open_existing
1221+breezy.git.tests.test_dir.TestGitDir.test_open_workingtree
1222+breezy.git.tests.test_dir.TestGitDir.test_open_workingtree_bare
1223+breezy.git.tests.test_fetch.ImportObjects.test_directory_converted_to_submodule
1224+breezy.git.tests.test_fetch.ImportObjects.test_import_blob_simple
1225+breezy.git.tests.test_fetch.ImportObjects.test_import_tree_empty
1226+breezy.git.tests.test_fetch.ImportObjects.test_import_tree_empty_root
1227+breezy.git.tests.test_fetch.ImportObjects.test_import_tree_with_file
1228+breezy.git.tests.test_fetch.ImportObjects.test_import_tree_with_file_exe
1229+breezy.git.tests.test_fetch.ImportObjects.test_import_tree_with_unusual_mode_file
1230+breezy.git.tests.test_fetch.LocalRepositoryFetchTests.test_becomes_executable
1231+breezy.git.tests.test_fetch.LocalRepositoryFetchTests.test_changing_symlink
1232+breezy.git.tests.test_fetch.LocalRepositoryFetchTests.test_dir_becomes_symlink
1233+breezy.git.tests.test_fetch.LocalRepositoryFetchTests.test_empty
1234+breezy.git.tests.test_fetch.LocalRepositoryFetchTests.test_executable
1235+breezy.git.tests.test_fetch.LocalRepositoryFetchTests.test_incremental
1236+breezy.git.tests.test_fetch.LocalRepositoryFetchTests.test_into_stacked_on
1237+breezy.git.tests.test_fetch.LocalRepositoryFetchTests.test_non_ascii_characters
1238+breezy.git.tests.test_fetch.LocalRepositoryFetchTests.test_single_rev
1239+breezy.git.tests.test_fetch.LocalRepositoryFetchTests.test_single_rev_specific
1240+breezy.git.tests.test_fetch.LocalRepositoryFetchTests.test_symlink_becomes_dir
1241+breezy.git.tests.test_fetch.LocalRepositoryFetchTests.test_tagged_tree
1242+breezy.git.tests.test_git_remote_helper.FetchTests.test_no_wants
1243+breezy.git.tests.test_git_remote_helper.FetchTests.test_simple
1244+breezy.git.tests.test_git_remote_helper.OpenLocalDirTests.test_from_dir
1245+breezy.git.tests.test_git_remote_helper.OpenLocalDirTests.test_from_env_dir
1246+breezy.git.tests.test_git_remote_helper.RemoteHelperTests.test_capabilities
1247+breezy.git.tests.test_git_remote_helper.RemoteHelperTests.test_import
1248+breezy.git.tests.test_git_remote_helper.RemoteHelperTests.test_list_basic
1249+breezy.git.tests.test_git_remote_helper.RemoteHelperTests.test_option
1250+breezy.git.tests.test_mapping.FileidTests.test_escape_control_l
1251+breezy.git.tests.test_mapping.FileidTests.test_escape_space
1252+breezy.git.tests.test_mapping.FileidTests.test_escape_underscore
1253+breezy.git.tests.test_mapping.FileidTests.test_escape_underscore_space
1254+breezy.git.tests.test_mapping.FileidTests.test_unescape_control_l
1255+breezy.git.tests.test_mapping.FileidTests.test_unescape_underscore
1256+breezy.git.tests.test_mapping.FileidTests.test_unescape_underscore_space
1257+breezy.git.tests.test_mapping.FixPersonIdentifierTests.test_fix
1258+breezy.git.tests.test_mapping.FixPersonIdentifierTests.test_valid
1259+breezy.git.tests.test_mapping.RoundtripRevisionsFromBazaar.test_custom_property
1260+breezy.git.tests.test_mapping.RoundtripRevisionsFromBazaar.test_ghost_parent
1261+breezy.git.tests.test_mapping.RoundtripRevisionsFromBazaar.test_revision_id
1262+breezy.git.tests.test_mapping.RoundtripRevisionsFromBazaar.test_simple_commit
1263+breezy.git.tests.test_mapping.RoundtripRevisionsFromGit.test_commit
1264+breezy.git.tests.test_mapping.RoundtripRevisionsFromGit.test_commit_double_negative_timezone
1265+breezy.git.tests.test_mapping.RoundtripRevisionsFromGit.test_commit_encoding
1266+breezy.git.tests.test_mapping.RoundtripRevisionsFromGit.test_commit_extra
1267+breezy.git.tests.test_mapping.RoundtripRevisionsFromGit.test_commit_mergetag
1268+breezy.git.tests.test_mapping.RoundtripRevisionsFromGit.test_commit_zero_utc_timezone
1269+breezy.git.tests.test_mapping.TestImportCommit.test_commit
1270+breezy.git.tests.test_mapping.TestImportCommit.test_explicit_encoding
1271+breezy.git.tests.test_mapping.TestImportCommit.test_implicit_encoding_fallback
1272+breezy.git.tests.test_mapping.TestImportCommit.test_implicit_encoding_utf8
1273+breezy.git.tests.test_mapping.TestImportCommit.test_mergetag
1274+breezy.git.tests.test_mapping.TestImportCommit.test_unknown_extra
1275+breezy.git.tests.test_mapping.TestRevidConversionV1.test_generate_file_id
1276+breezy.git.tests.test_mapping.TestRevidConversionV1.test_is_control_file
1277+breezy.git.tests.test_mapping.TestRevidConversionV1.test_simple_bzr_to_git_revision_id
1278+breezy.git.tests.test_mapping.TestRevidConversionV1.test_simple_git_to_bzr_revision_id
1279+breezy.git.tests.test_memorytree.TestMemoryTree.test_add_in_subdir
1280+breezy.git.tests.test_memorytree.TestMemoryTree.test_add_with_kind
1281+breezy.git.tests.test_memorytree.TestMemoryTree.test_commit_trivial
1282+breezy.git.tests.test_memorytree.TestMemoryTree.test_create_on_branch
1283+breezy.git.tests.test_memorytree.TestMemoryTree.test_create_on_branch_with_content
1284+breezy.git.tests.test_memorytree.TestMemoryTree.test_last_revision
1285+breezy.git.tests.test_memorytree.TestMemoryTree.test_lock_tree_write
1286+breezy.git.tests.test_memorytree.TestMemoryTree.test_lock_tree_write_after_read_fails
1287+breezy.git.tests.test_memorytree.TestMemoryTree.test_lock_write
1288+breezy.git.tests.test_memorytree.TestMemoryTree.test_lock_write_after_read_fails
1289+breezy.git.tests.test_memorytree.TestMemoryTree.test_put_existing_file
1290+breezy.git.tests.test_memorytree.TestMemoryTree.test_put_new_file
1291+breezy.git.tests.test_memorytree.TestMemoryTree.test_rename_file
1292+breezy.git.tests.test_memorytree.TestMemoryTree.test_rename_file_to_subdir
1293+breezy.git.tests.test_memorytree.TestMemoryTree.test_unversion
1294+breezy.git.tests.test_object_store.BazaarObjectStoreTests.test_contains
1295+breezy.git.tests.test_object_store.BazaarObjectStoreTests.test_get_blob
1296+breezy.git.tests.test_object_store.BazaarObjectStoreTests.test_get_raw
1297+breezy.git.tests.test_object_store.DirectoryToTreeTests.test_empty
1298+breezy.git.tests.test_object_store.DirectoryToTreeTests.test_empty_dir
1299+breezy.git.tests.test_object_store.DirectoryToTreeTests.test_empty_dir_dummy_files
1300+breezy.git.tests.test_object_store.DirectoryToTreeTests.test_empty_root
1301+breezy.git.tests.test_object_store.DirectoryToTreeTests.test_with_file
1302+breezy.git.tests.test_object_store.DirectoryToTreeTests.test_with_gitdir
1303+breezy.git.tests.test_object_store.ExpectedShaTests.test_binary
1304+breezy.git.tests.test_object_store.ExpectedShaTests.test_hex
1305+breezy.git.tests.test_object_store.ExpectedShaTests.test_none
1306+breezy.git.tests.test_object_store.FindMissingBzrRevidsTests.test_one_missing
1307+breezy.git.tests.test_object_store.FindMissingBzrRevidsTests.test_simple
1308+breezy.git.tests.test_object_store.FindMissingBzrRevidsTests.test_two_missing
1309+breezy.git.tests.test_object_store.FindMissingBzrRevidsTests.test_two_missing_history
1310+breezy.git.tests.test_object_store.FindMissingBzrRevidsTests.test_up_to_date
1311+breezy.git.tests.test_object_store.LRUTreeCacheTests.test_get
1312+breezy.git.tests.test_object_store.LRUTreeCacheTests.test_get_not_present
1313+breezy.git.tests.test_object_store.LRUTreeCacheTests.test_iter_revision_trees
1314+breezy.git.tests.test_object_store.LRUTreeCacheTests.test_revision_trees
1315+breezy.git.tests.test_object_store.TreeToObjectsTests.test_no_changes
1316+breezy.git.tests.test_object_store.TreeToObjectsTests.test_with_gitdir
1317+breezy.git.tests.test_pristine_tar.ReadPristineTarData.test_read_pristine_tar_data
1318+breezy.git.tests.test_pristine_tar.ReadPristineTarData.test_read_pristine_tar_data_no_branch
1319+breezy.git.tests.test_pristine_tar.ReadPristineTarData.test_read_pristine_tar_data_no_file
1320+breezy.git.tests.test_pristine_tar.RevisionPristineTarDataTests.test_pristine_tar_delta_gz
1321+breezy.git.tests.test_pristine_tar.RevisionPristineTarDataTests.test_pristine_tar_delta_unknown
1322+breezy.git.tests.test_pristine_tar.StoreGitPristineTarData.test_store_new
1323+breezy.git.tests.test_push.InterToGitRepositoryTests.test_instance
1324+breezy.git.tests.test_push.InterToGitRepositoryTests.test_missing_revisions_unknown_stop_rev
1325+breezy.git.tests.test_push.InterToGitRepositoryTests.test_odd_rename
1326+breezy.git.tests.test_push.InterToGitRepositoryTests.test_pointless_fetch_refs
1327+breezy.git.tests.test_push.InterToGitRepositoryTests.test_pointless_fetch_refs_old_mapping
1328+breezy.git.tests.test_push.InterToGitRepositoryTests.test_pointless_lossy_fetch_refs
1329+breezy.git.tests.test_push.InterToGitRepositoryTests.test_pointless_missing_revisions
1330+breezy.git.tests.test_refs.BazaarRefsContainerTests.test_empty
1331+breezy.git.tests.test_refs.BazaarRefsContainerTests.test_some_branch
1332+breezy.git.tests.test_refs.BazaarRefsContainerTests.test_some_commit
1333+breezy.git.tests.test_refs.BazaarRefsContainerTests.test_some_tag
1334+breezy.git.tests.test_refs.BranchNameRefConversionTests.test_branch
1335+breezy.git.tests.test_refs.BranchNameRefConversionTests.test_head
1336+breezy.git.tests.test_refs.BranchNameRefConversionTests.test_tag
1337+breezy.git.tests.test_remote.FetchFromRemoteToBzrTests.test_sprout_simple
1338+breezy.git.tests.test_remote.FetchFromRemoteToBzrTests.test_sprout_with_annotated_tag
1339+breezy.git.tests.test_remote.FetchFromRemoteToBzrTests.test_sprout_with_tags
1340+breezy.git.tests.test_remote.FetchFromRemoteToGitTests.test_sprout_simple
1341+breezy.git.tests.test_remote.FetchFromRemoteToGitTests.test_sprout_with_annotated_tag
1342+breezy.git.tests.test_remote.FetchFromRemoteToGitTests.test_sprout_with_tags
1343+breezy.git.tests.test_remote.ParseGitErrorTests.test_notbrancherror
1344+breezy.git.tests.test_remote.ParseGitErrorTests.test_unknown
1345+breezy.git.tests.test_remote.PushToRemoteFromBzrTests.test_push
1346+breezy.git.tests.test_remote.PushToRemoteFromBzrTests.test_push_branch_new
1347+breezy.git.tests.test_remote.PushToRemoteFromBzrTests.test_push_diverged
1348+breezy.git.tests.test_remote.PushToRemoteFromGitTests.test_push
1349+breezy.git.tests.test_remote.PushToRemoteFromGitTests.test_push_branch_new
1350+breezy.git.tests.test_remote.PushToRemoteFromGitTests.test_push_diverged
1351+breezy.git.tests.test_remote.RemoteControlDirTests.test_annotated_tag
1352+breezy.git.tests.test_remote.RemoteControlDirTests.test_get_branches
1353+breezy.git.tests.test_remote.RemoteControlDirTests.test_list_branches
1354+breezy.git.tests.test_remote.RemoteControlDirTests.test_remove_branch
1355+breezy.git.tests.test_remote.RemoteControlDirTests.test_remove_tag
1356+breezy.git.tests.test_remote.RemoteControlDirTests.test_set_tag
1357+breezy.git.tests.test_remote.SplitUrlTests.test_homedir
1358+breezy.git.tests.test_remote.SplitUrlTests.test_nopath
1359+breezy.git.tests.test_remote.SplitUrlTests.test_port
1360+breezy.git.tests.test_remote.SplitUrlTests.test_simple
1361+breezy.git.tests.test_remote.SplitUrlTests.test_slashpath
1362+breezy.git.tests.test_remote.SplitUrlTests.test_username
1363+breezy.git.tests.test_remote.TestRemoteGitBranchFormat.test_get_format_description
1364+breezy.git.tests.test_remote.TestRemoteGitBranchFormat.test_get_network_name
1365+breezy.git.tests.test_remote.TestRemoteGitBranchFormat.test_supports_tags
1366+breezy.git.tests.test_repository.GitRepositoryFormat.test_get_format_description
1367+breezy.git.tests.test_repository.RevisionGistImportTests.test_pointless
1368+breezy.git.tests.test_repository.SigningGitRepository.test_signed_commit
1369+breezy.git.tests.test_repository.TestGitRepositoryFeatures.test_get_revision
1370+breezy.git.tests.test_repository.TestGitRepositoryFeatures.test_get_revision_unknown
1371+breezy.git.tests.test_repository.TestGitRepositoryFeatures.test_has_git_repo
1372+breezy.git.tests.test_repository.TestGitRepositoryFeatures.test_has_revision
1373+breezy.git.tests.test_repository.TestGitRepositoryFeatures.test_has_revisions
1374+breezy.git.tests.test_repository.TestGitRepositoryFeatures.test_open_existing
1375+breezy.git.tests.test_repository.TestGitRepositoryFeatures.test_pack
1376+breezy.git.tests.test_repository.TestGitRepositoryFeatures.test_revision_tree
1377+breezy.git.tests.test_repository.TestGitRepository.test_all_revision_ids
1378+breezy.git.tests.test_repository.TestGitRepository.test_all_revision_ids_none
1379+breezy.git.tests.test_repository.TestGitRepository.test_get_known_graph_ancestry
1380+breezy.git.tests.test_repository.TestGitRepository.test_get_parent_map_null
1381+breezy.git.tests.test_repository.TestGitRepository.test_get_signature_text
1382+breezy.git.tests.test_repository.TestGitRepository.test_has_signature_for_revision_id
1383+breezy.git.tests.test_repository.TestGitRepository.test_revision_tree_none
1384+breezy.git.tests.test_repository.TestGitRepository.test_supports_rich_root
1385+breezy.git.tests.test_revspec.Sha1ValidTests.test_invalid
1386+breezy.git.tests.test_revspec.Sha1ValidTests.test_valid
1387+breezy.git.tests.test_roundtrip.ExtractMetadataTests.test_roundtrip
1388+breezy.git.tests.test_roundtrip.FileIdRoundTripTests.test_deserialize
1389+breezy.git.tests.test_roundtrip.FileIdRoundTripTests.test_serialize
1390+breezy.git.tests.test_roundtrip.FormatTests.test_empty
1391+breezy.git.tests.test_roundtrip.FormatTests.test_parent_ids
1392+breezy.git.tests.test_roundtrip.FormatTests.test_properties
1393+breezy.git.tests.test_roundtrip.FormatTests.test_revid
1394+breezy.git.tests.test_roundtrip.GenerateMetadataTests.test_no_metadata
1395+breezy.git.tests.test_roundtrip.GenerateMetadataTests.test_roundtrip
1396+breezy.git.tests.test_roundtrip.RoundtripTests.test_parent_ids
1397+breezy.git.tests.test_roundtrip.RoundtripTests.test_properties
1398+breezy.git.tests.test_roundtrip.RoundtripTests.test_revid
1399+breezy.git.tests.test_server.TestPlainFetch.test_fetch_from_native_git
1400+breezy.git.tests.test_server.TestPlainFetch.test_fetch_from_non_git
1401+breezy.git.tests.test_server.TestPlainFetch.test_fetch_nothing
1402+breezy.git.tests.test_server.TestPresent.test_present
1403+breezy.git.tests.test_transportgit.TransportObjectStoreTests.test_add_commit
1404+breezy.git.tests.test_transportgit.TransportObjectStoreTests.test_add_object
1405+breezy.git.tests.test_transportgit.TransportObjectStoreTests.test_add_objects
1406+breezy.git.tests.test_transportgit.TransportObjectStoreTests.test_add_objects_empty
1407+breezy.git.tests.test_transportgit.TransportObjectStoreTests.test_close
1408+breezy.git.tests.test_transportgit.TransportObjectStoreTests.test_contains_nonexistant
1409+breezy.git.tests.test_transportgit.TransportObjectStoreTests.test_determine_wants_all
1410+breezy.git.tests.test_transportgit.TransportObjectStoreTests.test_determine_wants_all_zero
1411+breezy.git.tests.test_transportgit.TransportObjectStoreTests.test_empty_packs
1412+breezy.git.tests.test_transportgit.TransportObjectStoreTests.test_get_nonexistant
1413+breezy.git.tests.test_transportgit.TransportObjectStoreTests.test_get_raw
1414+breezy.git.tests.test_transportgit.TransportObjectStoreTests.test_iter
1415+breezy.git.tests.test_transportgit.TransportObjectStoreTests.test_iter_tree_contents
1416+breezy.git.tests.test_transportgit.TransportObjectStoreTests.test_iter_tree_contents_include_trees
1417+breezy.git.tests.test_transportgit.TransportObjectStoreTests.test_pack_loose_objects
1418+breezy.git.tests.test_transportgit.TransportObjectStoreTests.test_peel_sha
1419+breezy.git.tests.test_transportgit.TransportObjectStoreTests.test_remembers_packs
1420+breezy.git.tests.test_transportgit.TransportObjectStoreTests.test_repack
1421+breezy.git.tests.test_transportgit.TransportObjectStoreTests.test_repack_existing
1422+breezy.git.tests.test_transportgit.TransportObjectStoreTests.test_store_resilience
1423+breezy.git.tests.test_transportgit.TransportObjectStoreTests.test_tree_changes
1424+breezy.git.tests.test_unpeel_map.TestUnpeelMap.test_load
1425+breezy.git.tests.test_unpeel_map.TestUnpeelMap.test_new
1426+breezy.git.tests.test_unpeel_map.TestUnpeelMap.test_update
1427+breezy.git.tests.test_urls.TestConvertURL.test_path
1428+breezy.git.tests.test_urls.TestConvertURL.test_regular
1429+breezy.git.tests.test_urls.TestConvertURL.test_simple
1430+breezy.git.tests.test_workingtree.ChangesBetweenGitTreeAndWorkingCopyTests.test_added_file
1431+breezy.git.tests.test_workingtree.ChangesBetweenGitTreeAndWorkingCopyTests.test_added_unknown_file
1432+breezy.git.tests.test_workingtree.ChangesBetweenGitTreeAndWorkingCopyTests.test_empty
1433+breezy.git.tests.test_workingtree.ChangesBetweenGitTreeAndWorkingCopyTests.test_extra
1434+breezy.git.tests.test_workingtree.ChangesBetweenGitTreeAndWorkingCopyTests.test_missing_added_file
1435+breezy.git.tests.test_workingtree.ChangesBetweenGitTreeAndWorkingCopyTests.test_missing_versioned_file
1436+breezy.git.tests.test_workingtree.ChangesBetweenGitTreeAndWorkingCopyTests.test_versioned_replace_by_dir
1437+breezy.git.tests.test_workingtree.GitWorkingTreeTests.test_add_conflict
1438+breezy.git.tests.test_workingtree.GitWorkingTreeTests.test_conflict_list
1439+breezy.git.tests.test_workingtree.GitWorkingTreeTests.test_revert_empty
1440+breezy.git.tests.test_workingtree.TreeDeltaFromGitChangesTests.test_empty
1441+breezy.git.tests.test_workingtree.TreeDeltaFromGitChangesTests.test_missing
1442 breezy.plugins.bash_completion.tests.test_bashcomp.BlackboxTests.test_bash_completion
1443 breezy.plugins.bash_completion.tests.test_bashcomp.TestBashCodeGen.test_brz_version
1444 breezy.plugins.bash_completion.tests.test_bashcomp.TestBashCodeGen.test_command_case
1445@@ -762,6 +1077,7 @@
1446 breezy.plugins.grep.test_grep.TestGrep.test_wtree_include_from_outside_dir
1447 breezy.plugins.grep.test_grep.TestGrep.test_wtree_null_option
1448 breezy.plugins.grep.test_grep.TestGrep.test_wtree_with_line_number
1449+breezy.plugins.grep.test_grep.TestNonAscii.test_unicode_only_file
1450 breezy.plugins.launchpad.test_account.CheckAccountTests.test_check_lp_login_no_ssh_keys
1451 breezy.plugins.launchpad.test_account.CheckAccountTests.test_check_lp_login_no_user
1452 breezy.plugins.launchpad.test_account.CheckAccountTests.test_check_lp_login_valid_user
1453@@ -1525,6 +1841,7 @@
1454 breezy.tests.blackbox.test_clean_tree.TestBzrTools.test_clean_tree_nested_bzrdir
1455 breezy.tests.blackbox.test_command_encoding.TestCommandEncoding.test_exact
1456 breezy.tests.blackbox.test_command_encoding.TestCommandEncoding.test_replace_ascii
1457+breezy.tests.blackbox.test_command_encoding.TestCommandEncoding.test_replace_utf8
1458 breezy.tests.blackbox.test_command_encoding.TestCommandEncoding.test_strict_ascii
1459 breezy.tests.blackbox.test_command_encoding.TestCommandEncoding.test_strict_utf8
1460 breezy.tests.blackbox.test_commit.TestCommit.test_05_empty_commit
1461@@ -1553,6 +1870,7 @@
1462 breezy.tests.blackbox.test_commit.TestCommit.test_empty_commit_message
1463 breezy.tests.blackbox.test_commit.TestCommit.test_fixes_bug_output
1464 breezy.tests.blackbox.test_commit.TestCommit.test_fixes_bug_sets_property
1465+breezy.tests.blackbox.test_commit.TestCommit.test_fixes_bug_unicode
1466 breezy.tests.blackbox.test_commit.TestCommit.test_fixes_bug_with_alternate_trackers
1467 breezy.tests.blackbox.test_commit.TestCommit.test_fixes_bug_with_default_tracker
1468 breezy.tests.blackbox.test_commit.TestCommit.test_fixes_invalid_argument
1469@@ -1565,6 +1883,7 @@
1470 breezy.tests.blackbox.test_commit.TestCommit.test_no_author
1471 breezy.tests.blackbox.test_commit.TestCommit.test_no_bugs_no_properties
1472 breezy.tests.blackbox.test_commit.TestCommit.test_non_ascii_file_unversioned_iso_8859_5
1473+breezy.tests.blackbox.test_commit.TestCommit.test_non_ascii_file_unversioned_utf8
1474 breezy.tests.blackbox.test_commit.TestCommit.test_other_branch_commit
1475 breezy.tests.blackbox.test_commit.TestCommit.test_out_of_date_tree_commit
1476 breezy.tests.blackbox.test_commit.TestCommit.test_partial_commit_with_renames_in_tree
1477@@ -1708,13 +2027,17 @@
1478 breezy.tests.blackbox.test_export.TestExport.test_export_partial_tree
1479 breezy.tests.blackbox.test_export.TestExport.test_export_uncommitted
1480 breezy.tests.blackbox.test_export.TestExport.test_export_uncommitted_no_tree
1481+breezy.tests.blackbox.test_export.TestExport.test_tar_export
1482 breezy.tests.blackbox.test_export.TestExport.test_tar_export_ignores_bzr
1483 breezy.tests.blackbox.test_export.TestExport.test_tar_export_unicode_basedir
1484 breezy.tests.blackbox.test_export.TestExport.test_tar_export_unicode_filename
1485+breezy.tests.blackbox.test_export.TestExport.test_tbz2_export
1486+breezy.tests.blackbox.test_export.TestExport.test_tgz_export
1487 breezy.tests.blackbox.test_export.TestExport.test_zip_export_directories
1488 breezy.tests.blackbox.test_export.TestExport.test_zip_export_file
1489 breezy.tests.blackbox.test_export.TestExport.test_zip_export_ignores_bzr
1490 breezy.tests.blackbox.test_export.TestExport.test_zip_export_per_file_timestamps
1491+breezy.tests.blackbox.test_export.TestExport.test_zip_export_stdout
1492 breezy.tests.blackbox.test_export.TestExport.test_zip_export_unicode
1493 breezy.tests.blackbox.test_export.TestSmartServerExport.test_simple_export
1494 breezy.tests.blackbox.test_fetch_ghosts.TestFetchGhosts.test_fetch_ghosts
1495@@ -1770,6 +2093,10 @@
1496 breezy.tests.blackbox.test_help.TestHelp.test_help_with_aliases
1497 breezy.tests.blackbox.test_help.TestHelp.test_help_working_trees
1498 breezy.tests.blackbox.test_help.TestHelp.test_hidden
1499+breezy.tests.blackbox.test_help.TestTranslatedHelp.test_help_command_ascii
1500+breezy.tests.blackbox.test_help.TestTranslatedHelp.test_help_command_utf8
1501+breezy.tests.blackbox.test_help.TestTranslatedHelp.test_help_switch_ascii
1502+breezy.tests.blackbox.test_help.TestTranslatedHelp.test_help_switch_utf8
1503 breezy.tests.blackbox.test_hooks.TestHooks.test_hooks_lazy_with_named_hook
1504 breezy.tests.blackbox.test_hooks.TestHooks.test_hooks_lazy_with_unnamed_hook
1505 breezy.tests.blackbox.test_hooks.TestHooks.test_hooks_no_branch
1506@@ -1855,6 +2182,7 @@
1507 breezy.tests.blackbox.test_log.Test_GenerateAllRevisions.test_wrong_order
1508 breezy.tests.blackbox.test_log.TestLogEncodings.test_log_handles_bad_encoding
1509 breezy.tests.blackbox.test_log.TestLogEncodings.test_log_handles_encoding
1510+breezy.tests.blackbox.test_log.TestLogEncodings.test_stdout_encoding
1511 breezy.tests.blackbox.test_log.TestLogErrors.test_log_bad_message_re
1512 breezy.tests.blackbox.test_log.TestLogErrors.test_log_change_incompatible_with_revision
1513 breezy.tests.blackbox.test_log.TestLogErrors.test_log_change_nonexistent_dotted_revno
1514@@ -1985,6 +2313,7 @@
1515 breezy.tests.blackbox.test_merge.TestMerge.test_merge_criss_cross
1516 breezy.tests.blackbox.test_merge.TestMerge.test_merge_defaults_to_reprocess
1517 breezy.tests.blackbox.test_merge.TestMerge.test_merge_explicit_reprocess_show_base
1518+breezy.tests.blackbox.test_merge.TestMerge.test_merge_fetches_tags
1519 breezy.tests.blackbox.test_merge.TestMerge.test_merge_from_submit
1520 breezy.tests.blackbox.test_merge.TestMerge.test_merge_interactive_unlocks_branch
1521 breezy.tests.blackbox.test_merge.TestMerge.test_merge_kind_change
1522@@ -2074,12 +2403,16 @@
1523 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_branch(iso-8859-2)
1524 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_branch(utf-8,1)
1525 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_branch(utf-8,2)
1526+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_cat(cp1251)
1527 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_cat(iso-8859-1)
1528+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_cat(iso-8859-2)
1529 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_cat_revision(cp1251)
1530 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_cat_revision(iso-8859-1)
1531 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_cat_revision(iso-8859-2)
1532 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_cat_revision(utf-8,1)
1533 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_cat_revision(utf-8,2)
1534+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_cat(utf-8,1)
1535+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_cat(utf-8,2)
1536 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_deleted(cp1251)
1537 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_deleted(iso-8859-1)
1538 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_deleted(iso-8859-2)
1539@@ -2120,16 +2453,36 @@
1540 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_inventory(iso-8859-2)
1541 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_inventory(utf-8,1)
1542 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_inventory(utf-8,2)
1543+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_log(cp1251)
1544+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_log(iso-8859-1)
1545+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_log(iso-8859-2)
1546+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_log(utf-8,1)
1547+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_log(utf-8,2)
1548 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_ls(cp1251)
1549 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_ls(iso-8859-1)
1550 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_ls(iso-8859-2)
1551 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_ls(utf-8,1)
1552 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_ls(utf-8,2)
1553+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_missing(cp1251)
1554+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_missing(iso-8859-1)
1555+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_missing(iso-8859-2)
1556+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_missing(utf-8,1)
1557+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_missing(utf-8,2)
1558+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_mkdir(cp1251)
1559+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_mkdir(iso-8859-1)
1560+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_mkdir(iso-8859-2)
1561+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_mkdir(utf-8,1)
1562+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_mkdir(utf-8,2)
1563 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_modified(cp1251)
1564 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_modified(iso-8859-1)
1565 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_modified(iso-8859-2)
1566 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_modified(utf-8,1)
1567 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_modified(utf-8,2)
1568+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_mv(cp1251)
1569+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_mv(iso-8859-1)
1570+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_mv(iso-8859-2)
1571+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_mv(utf-8,1)
1572+breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_mv(utf-8,2)
1573 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_pull(cp1251)
1574 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_pull(iso-8859-1)
1575 breezy.tests.blackbox.test_non_ascii.TestNonAscii.test_pull(iso-8859-2)
1576@@ -2523,6 +2876,7 @@
1577 breezy.tests.blackbox.test_send.TestSend.test_uses_submit
1578 breezy.tests.blackbox.test_send.TestSmartServerSend.test_send
1579 breezy.tests.blackbox.test_serve.TestBzrServe.test_bzr_serve_dhpss
1580+breezy.tests.blackbox.test_serve.TestBzrServe.test_bzr_serve_graceful_shutdown
1581 breezy.tests.blackbox.test_serve.TestBzrServe.test_bzr_serve_inet_readonly
1582 breezy.tests.blackbox.test_serve.TestBzrServe.test_bzr_serve_inet_readwrite
1583 breezy.tests.blackbox.test_serve.TestBzrServe.test_bzr_serve_port_readonly
1584@@ -2561,6 +2915,7 @@
1585 breezy.tests.blackbox.test_shelve.TestShelveRelpath.test_shelve_in_subdir
1586 breezy.tests.blackbox.test_shelve.TestShelveRelpath.test_shelve_via_directory
1587 breezy.tests.blackbox.test_shelve.TestShelveUnshelve.test_directory
1588+breezy.tests.blackbox.test_shelve.TestUnshelvePreview.test_non_ascii
1589 breezy.tests.blackbox.test_sign_my_commits.SignMyCommits.test_sign_diff_committer
1590 breezy.tests.blackbox.test_sign_my_commits.SignMyCommits.test_sign_dry_run
1591 breezy.tests.blackbox.test_sign_my_commits.SignMyCommits.test_sign_my_commits
1592@@ -2648,9 +3003,11 @@
1593 breezy.tests.blackbox.test_tags.TestSmartServerCat.test_show_tags
1594 breezy.tests.blackbox.test_tags.TestTagging.test_automatic_tag_name
1595 breezy.tests.blackbox.test_tags.TestTagging.test_branch_push_pull_merge_copies_tags
1596+breezy.tests.blackbox.test_tags.TestTagging.test_cannot_tag_range
1597 breezy.tests.blackbox.test_tags.TestTagging.test_commit_in_heavyweight_checkout_copies_tags_to_master
1598 breezy.tests.blackbox.test_tags.TestTagging.test_commit_in_heavyweight_checkout_reports_tag_conflict
1599 breezy.tests.blackbox.test_tags.TestTagging.test_conflicting_tags
1600+breezy.tests.blackbox.test_tags.TestTagging.test_list_tags
1601 breezy.tests.blackbox.test_tags.TestTagging.test_list_tags_dotted_revnos_unsupported
1602 breezy.tests.blackbox.test_tags.TestTagging.test_list_tags_revision_filtering
1603 breezy.tests.blackbox.test_tags.TestTagging.test_merge_without_commit_does_not_propagate_tags_to_master
1604@@ -2762,6 +3119,7 @@
1605 breezy.tests.blackbox.test_version_info.TestVersionInfo.test_custom_without_template
1606 breezy.tests.blackbox.test_version_info.TestVersionInfo.test_invalid_format
1607 breezy.tests.blackbox.test_version_info.TestVersionInfo.test_no_branch
1608+breezy.tests.blackbox.test_version_info.TestVersionInfo.test_non_ascii
1609 breezy.tests.blackbox.test_version_info.TestVersionInfo.test_no_working_tree
1610 breezy.tests.blackbox.test_version_info.TestVersionInfo.test_python
1611 breezy.tests.blackbox.test_version_info.TestVersionInfo.test_revision
1612@@ -2772,11 +3130,15 @@
1613 breezy.tests.blackbox.test_versioning.TestMkdir.test_mkdir_in_subdir
1614 breezy.tests.blackbox.test_versioning.TestMkdir.test_mkdir_quiet
1615 breezy.tests.blackbox.test_versioning.TestMkdir.test_mkdir_w_nested_trees
1616+breezy.tests.blackbox.test_version.TestVersionBzrLogLocation.test_dev_null
1617+breezy.tests.blackbox.test_version.TestVersionBzrLogLocation.test_simple
1618+breezy.tests.blackbox.test_version.TestVersionBzrLogLocation.test_unicode_brz_log
1619 breezy.tests.blackbox.test_version.TestVersion.test_main_version
1620 breezy.tests.blackbox.test_version.TestVersion.test_version
1621 breezy.tests.blackbox.test_version.TestVersion.test_version_short
1622 breezy.tests.blackbox.test_version.TestVersionUnicodeOutput.test_command
1623 breezy.tests.blackbox.test_version.TestVersionUnicodeOutput.test_flag
1624+breezy.tests.blackbox.test_version.TestVersionUnicodeOutput.test_unicode_bzr_home
1625 breezy.tests.blackbox.test_view.TestViewUI.test_define_view
1626 breezy.tests.blackbox.test_view.TestViewUI.test_delete_view
1627 breezy.tests.blackbox.test_view.TestViewUI.test_list_view
1628@@ -9130,16 +9492,16 @@
1629 breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_no_closure(RemoteRepositoryFormat-v2)
1630 breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_no_closure(RepositoryFormat2a)
1631 breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_no_closure(RepositoryFormat2aSubtree)
1632-breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_unordered_fetch_complex_split(RemoteRepositoryFormat-default)
1633-breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_unordered_fetch_complex_split(RemoteRepositoryFormat-v2)
1634-breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_unordered_fetch_complex_split(RepositoryFormat2a)
1635-breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_unordered_fetch_complex_split(RepositoryFormat2aSubtree)
1636 breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_no_closure(RepositoryFormatKnitPack5)
1637 breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_no_closure(RepositoryFormatKnitPack5RichRoot)
1638 breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_no_closure(RepositoryFormatKnitPack5RichRootBroken)
1639 breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_no_closure(RepositoryFormatKnitPack6)
1640 breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_no_closure(RepositoryFormatKnitPack6RichRoot)
1641 breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_ordered_no_closure(RepositoryFormatPackDevelopment2Subtree)
1642+breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_unordered_fetch_complex_split(RemoteRepositoryFormat-default)
1643+breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_unordered_fetch_complex_split(RemoteRepositoryFormat-v2)
1644+breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_unordered_fetch_complex_split(RepositoryFormat2a)
1645+breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_unordered_fetch_complex_split(RepositoryFormat2aSubtree)
1646 breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_unordered_fetch_complex_split(RepositoryFormatKnitPack5)
1647 breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_unordered_fetch_complex_split(RepositoryFormatKnitPack5RichRoot)
1648 breezy.tests.per_repository_reference.test_get_record_stream.TestGetRecordStream.test_unordered_fetch_complex_split(RepositoryFormatKnitPack5RichRootBroken)
1649@@ -19344,10 +19706,16 @@
1650 breezy.tests.per_workingtree.test_content_filters.TestWorkingTreeWithContentFilters.test_content_filtering_applied_on_merge(WorkingTreeFormat2)
1651 breezy.tests.per_workingtree.test_content_filters.TestWorkingTreeWithContentFilters.test_content_filtering_applied_on_merge(WorkingTreeFormat3)
1652 breezy.tests.per_workingtree.test_content_filters.TestWorkingTreeWithContentFilters.test_content_filtering_applied_on_merge(WorkingTreeFormat4)
1653+breezy.tests.per_workingtree.test_content_filters.TestWorkingTreeWithContentFilters.test_content_filtering_applied_on_merge(WorkingTreeFormat5)
1654+breezy.tests.per_workingtree.test_content_filters.TestWorkingTreeWithContentFilters.test_content_filtering_applied_on_merge(WorkingTreeFormat6)
1655+breezy.tests.per_workingtree.test_content_filters.TestWorkingTreeWithContentFilters.test_content_filtering_applied_on_merge(WorkingTreeFormat6,remote)
1656 breezy.tests.per_workingtree.test_content_filters.TestWorkingTreeWithContentFilters.test_content_filtering_applied_on_pull(GitWorkingTreeFormat)
1657 breezy.tests.per_workingtree.test_content_filters.TestWorkingTreeWithContentFilters.test_content_filtering_applied_on_pull(WorkingTreeFormat2)
1658 breezy.tests.per_workingtree.test_content_filters.TestWorkingTreeWithContentFilters.test_content_filtering_applied_on_pull(WorkingTreeFormat3)
1659 breezy.tests.per_workingtree.test_content_filters.TestWorkingTreeWithContentFilters.test_content_filtering_applied_on_pull(WorkingTreeFormat4)
1660+breezy.tests.per_workingtree.test_content_filters.TestWorkingTreeWithContentFilters.test_content_filtering_applied_on_pull(WorkingTreeFormat5)
1661+breezy.tests.per_workingtree.test_content_filters.TestWorkingTreeWithContentFilters.test_content_filtering_applied_on_pull(WorkingTreeFormat6)
1662+breezy.tests.per_workingtree.test_content_filters.TestWorkingTreeWithContentFilters.test_content_filtering_applied_on_pull(WorkingTreeFormat6,remote)
1663 breezy.tests.per_workingtree.test_content_filters.TestWorkingTreeWithContentFilters.test_content_filtering_applied_on_revert_delete(GitWorkingTreeFormat)
1664 breezy.tests.per_workingtree.test_content_filters.TestWorkingTreeWithContentFilters.test_content_filtering_applied_on_revert_delete(WorkingTreeFormat2)
1665 breezy.tests.per_workingtree.test_content_filters.TestWorkingTreeWithContentFilters.test_content_filtering_applied_on_revert_delete(WorkingTreeFormat3)
1666@@ -23729,6 +24097,10 @@
1667 breezy.tests.test_conflicts.TestResolveMissingParent.test_kill_them_all
1668 breezy.tests.test_conflicts.TestResolveMissingParent.test_resolve_taking_other
1669 breezy.tests.test_conflicts.TestResolveMissingParent.test_resolve_taking_this
1670+breezy.tests.test_conflicts.TestResolveNonDirectoryParent.test_resolve_taking_other
1671+breezy.tests.test_conflicts.TestResolveNonDirectoryParent.test_resolve_taking_this
1672+breezy.tests.test_conflicts.TestResolveNonDirectoryParent.test_take_other
1673+breezy.tests.test_conflicts.TestResolveNonDirectoryParent.test_take_this
1674 breezy.tests.test_conflicts.TestResolveParentLoop.test_resolve_taking_other(dir1_into_dir2,dir2_into_dir1)
1675 breezy.tests.test_conflicts.TestResolveParentLoop.test_resolve_taking_other(dir2_into_dir1,dir1_into_dir2)
1676 breezy.tests.test_conflicts.TestResolveParentLoop.test_resolve_taking_this(dir1_into_dir2,dir2_into_dir1)
1677@@ -24151,6 +24523,8 @@
1678 breezy.tests.test_email_message.TestEmailMessage.test_multiple_destinations
1679 breezy.tests.test_email_message.TestEmailMessage.test_retrieving_headers
1680 breezy.tests.test_email_message.TestEmailMessage.test_setting_headers
1681+breezy.tests.test_email_message.TestEmailMessage.test_simple_message
1682+breezy.tests.test_email_message.TestEmailMessage.test_string_with_encoding
1683 breezy.tests.test_email_message.TestSend.test_send_patch
1684 breezy.tests.test_email_message.TestSend.test_send_plain
1685 breezy.tests.test_email_message.TestSend.test_send_simple
1686@@ -24160,6 +24534,7 @@
1687 breezy.tests.test_eol_filters.TestEolRulesSpecifications.test_exact_value
1688 breezy.tests.test_eol_filters.TestEolRulesSpecifications.test_other_known_values
1689 breezy.tests.test_eol_filters.TestEolRulesSpecifications.test_unknown_value
1690+breezy.tests.test_errors.TestErrorFormatting.test_always_str
1691 breezy.tests.test_errors.TestErrorFormatting.test_cannot_bind_address
1692 breezy.tests.test_errors.TestErrorFormatting.test_mismatched_format_args
1693 breezy.tests.test_errors.TestErrorFormatting.test_missing_format_string
1694@@ -25107,6 +25482,7 @@
1695 breezy.tests.test_import_tariff.TestImportTariffs.test_help_commands
1696 breezy.tests.test_import_tariff.TestImportTariffs.test_import_tariffs_working
1697 breezy.tests.test_import_tariff.TestImportTariffs.test_simple_local
1698+breezy.tests.test_import_tariff.TestImportTariffs.test_simple_serve
1699 breezy.tests.test_index.ErrorTests.test_bad_index_data
1700 breezy.tests.test_index.ErrorTests.test_bad_index_duplicate_key
1701 breezy.tests.test_index.ErrorTests.test_bad_index_format_signature
1702@@ -27009,6 +27385,7 @@
1703 breezy.tests.test_nonascii.NonAsciiTest.test_add_in_nonascii_branch
1704 breezy.tests.test_nonascii.NormalizedFilename.test__accessible_normalized_filename
1705 breezy.tests.test_nonascii.NormalizedFilename.test_access_non_normalized
1706+breezy.tests.test_nonascii.NormalizedFilename.test_access_normalized
1707 breezy.tests.test_nonascii.NormalizedFilename.test_functions
1708 breezy.tests.test_nonascii.NormalizedFilename.test__inaccessible_normalized_filename
1709 breezy.tests.test_nonascii.NormalizedFilename.test_platform
1710@@ -27106,8 +27483,10 @@
1711 breezy.tests.test_osutils.TestGetHomeDir.test_is_unicode
1712 breezy.tests.test_osutils.TestGetHomeDir.test_posix_home_ascii
1713 breezy.tests.test_osutils.TestGetHomeDir.test_posix_homeless
1714+breezy.tests.test_osutils.TestGetHomeDir.test_posix_home_unicode
1715 breezy.tests.test_osutils.TestGetuserUnicode.test_ascii_user
1716 breezy.tests.test_osutils.TestGetuserUnicode.test_is_unicode
1717+breezy.tests.test_osutils.TestGetuserUnicode.test_unicode_user
1718 breezy.tests.test_osutils.TestIsInside.test_is_inside
1719 breezy.tests.test_osutils.TestIsInside.test_is_inside_any
1720 breezy.tests.test_osutils.TestIsInside.test_is_inside_or_parent_of_any
1721@@ -27122,6 +27501,7 @@
1722 breezy.tests.test_osutils.TestParentDirectories.test_parent_directories
1723 breezy.tests.test_osutils.TestPathFromEnviron.test_is_unicode
1724 breezy.tests.test_osutils.TestPathFromEnviron.test_posix_path_env_ascii
1725+breezy.tests.test_osutils.TestPathFromEnviron.test_posix_path_env_unicode
1726 breezy.tests.test_osutils.TestPosixFuncs.test_normpath
1727 breezy.tests.test_osutils.TestPumpFile.test_bracket_block_size
1728 breezy.tests.test_osutils.TestPumpFile.test_defaults
1729@@ -27171,6 +27551,7 @@
1730 breezy.tests.test_osutils.TestSendAll.test_send_with_no_progress
1731 breezy.tests.test_osutils.TestSetUnsetEnv.test_double_set
1732 breezy.tests.test_osutils.TestSetUnsetEnv.test_set
1733+breezy.tests.test_osutils.TestSetUnsetEnv.test_unicode
1734 breezy.tests.test_osutils.TestSetUnsetEnv.test_unset
1735 breezy.tests.test_osutils.TestShaFileByName.test_sha_empty
1736 breezy.tests.test_osutils.TestShaFileByName.test_sha_mixed_endings
1737@@ -27186,6 +27567,7 @@
1738 breezy.tests.test_osutils.TestTerminalWidth.test_no_TIOCGWINSZ
1739 breezy.tests.test_osutils.TestTerminalWidth.test_tty_default_without_columns
1740 breezy.tests.test_osutils.TestUmask.test_get_umask
1741+breezy.tests.test_osutils.TestWalkDirs.test_compare_paths_prefix_order
1742 breezy.tests.test_osutils.TestWalkDirs.test_force_walkdirs_utf8_fs_ascii
1743 breezy.tests.test_osutils.TestWalkDirs.test_force_walkdirs_utf8_fs_latin1
1744 breezy.tests.test_osutils.TestWalkDirs.test_force_walkdirs_utf8_fs_utf8
1745@@ -27194,7 +27576,9 @@
1746 breezy.tests.test_osutils.TestWalkDirs.test_unicode_walkdirs
1747 breezy.tests.test_osutils.TestWalkDirs.test_unicode__walkdirs_utf8
1748 breezy.tests.test_osutils.TestWalkDirs.test_walkdirs
1749+breezy.tests.test_osutils.TestWalkDirs.test_walkdirs_encoding_error
1750 breezy.tests.test_osutils.TestWalkDirs.test_walkdirs_os_error
1751+breezy.tests.test_osutils.TestWalkDirs.test__walkdirs_utf8
1752 breezy.tests.test_osutils.TestWalkDirs.test__walkdirs_utf8_win32readdir
1753 breezy.tests.test_osutils.TestWalkDirs.test__walkdirs_utf8_with_unicode_fs
1754 breezy.tests.test_osutils.TestWalkDirs.test__walkdirs_utf_win32_find_file_stat_directory
1755@@ -27758,6 +28142,7 @@
1756 breezy.tests.test_remote.TestUpdateBoundBranchWithModifiedBoundLocation.test_plus_sign
1757 breezy.tests.test_remote.TestUpdateBoundBranchWithModifiedBoundLocation.test_tilda
1758 breezy.tests.test_remote.TestUpdateBoundBranchWithModifiedBoundLocation.test_without_final_slash
1759+breezy.tests.test_remote.TestVfsHas.test_unicode_path
1760 breezy.tests.test_remote.TestWithCustomErrorHandler.test_no_context
1761 breezy.tests.test_remote.TestWithCustomErrorHandler.test_with_context
1762 breezy.tests.test_rename_map.TestRenameMap.test_add_edge_hashes

Subscribers

People subscribed via source and target branches