/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/tests/script.py

  • Committer: Jelmer Vernooij
  • Date: 2018-08-21 07:56:36 UTC
  • mfrom: (7078 work)
  • mto: This revision was merged to the branch mainline in revision 7093.
  • Revision ID: jelmer@jelmer.uk-20180821075636-ranyu9myp6er1d8z
Merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
import doctest
23
23
import errno
24
24
import glob
 
25
import logging
25
26
import os
26
27
import shlex
 
28
import sys
27
29
import textwrap
28
30
 
29
31
from .. import (
30
32
    osutils,
31
33
    tests,
 
34
    trace,
32
35
    )
 
36
from ..tests import ui_testing
33
37
 
34
38
 
35
39
def split(s):
315
319
        return output
316
320
 
317
321
    def do_brz(self, test_case, input, args):
318
 
        retcode, out, err = test_case._run_bzr_core(
319
 
            args, retcode=None, encoding=None, stdin=input, working_dir=None)
320
 
        return retcode, out, err
 
322
        encoding = osutils.get_user_encoding()
 
323
        if sys.version_info[0] == 2:
 
324
            stdout = ui_testing.BytesIOWithEncoding()
 
325
            stderr = ui_testing.BytesIOWithEncoding()
 
326
            stdout.encoding = stderr.encoding = encoding
 
327
 
 
328
            # FIXME: don't call into logging here
 
329
            handler = trace.EncodedStreamHandler(
 
330
                stderr, errors="replace")
 
331
        else:
 
332
            stdout = ui_testing.StringIOWithEncoding()
 
333
            stderr = ui_testing.StringIOWithEncoding()
 
334
            stdout.encoding = stderr.encoding = encoding
 
335
            handler = logging.StreamHandler(stderr)
 
336
        handler.setLevel(logging.INFO)
 
337
 
 
338
        logger = logging.getLogger('')
 
339
        logger.addHandler(handler)
 
340
        try:
 
341
            retcode = test_case._run_bzr_core(
 
342
                args, encoding=encoding, stdin=input, stdout=stdout,
 
343
                stderr=stderr, working_dir=None)
 
344
        finally:
 
345
            logger.removeHandler(handler)
 
346
 
 
347
        return retcode, stdout.getvalue(), stderr.getvalue()
321
348
 
322
349
    def do_cat(self, test_case, input, args):
323
350
        (in_name, out_name, out_mode, args) = _scan_redirection_options(args)