/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-11-06 01:18:08 UTC
  • mfrom: (7143 work)
  • mto: This revision was merged to the branch mainline in revision 7151.
  • Revision ID: jelmer@jelmer.uk-20181106011808-y870f4vq0ork3ahu
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):
163
167
            in_name = redirected_file_name('<', arg[1:], args)
164
168
        elif arg.startswith('>>'):
165
169
            out_name = redirected_file_name('>>', arg[2:], args)
166
 
            out_mode = 'ab+'
 
170
            out_mode = 'a+'
167
171
        elif arg.startswith('>',):
168
172
            out_name = redirected_file_name('>', arg[1:], args)
169
 
            out_mode = 'wb+'
 
173
            out_mode = 'w+'
170
174
        else:
171
175
            remaining.append(arg)
172
176
    return in_name, out_name, out_mode, remaining
296
300
 
297
301
    def _read_input(self, input, in_name):
298
302
        if in_name is not None:
299
 
            infile = open(in_name, 'rb')
 
303
            infile = open(in_name, 'r')
300
304
            try:
301
305
                # Command redirection takes precedence over provided input
302
306
                input = infile.read()
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)