/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/test_trace.py

  • Committer: Jelmer Vernooij
  • Date: 2019-03-05 07:32:38 UTC
  • mto: (7290.1.21 work)
  • mto: This revision was merged to the branch mainline in revision 7311.
  • Revision ID: jelmer@jelmer.uk-20190305073238-zlqn981opwnqsmzi
Add appveyor configuration.

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
"""Tests for trace library"""
20
20
 
21
21
import errno
22
 
from io import StringIO
23
22
import logging
24
23
import os
25
24
import re
31
30
    errors,
32
31
    trace,
33
32
    )
34
 
from . import features, TestCaseInTempDir, TestCase, TestSkipped
 
33
from ..sixish import (
 
34
    PY3,
 
35
    StringIO,
 
36
    )
 
37
from . import features, TestCaseInTempDir, TestCase
35
38
from ..trace import (
36
39
    mutter, mutter_callsite, report_exception,
37
40
    set_verbosity_level, get_verbosity_level, is_quiet, is_verbose, be_quiet,
140
143
 
141
144
    def test_format_unicode_error(self):
142
145
        try:
143
 
            raise errors.CommandError(u'argument foo\xb5 does not exist')
144
 
        except errors.CommandError:
 
146
            raise errors.BzrCommandError(u'argument foo\xb5 does not exist')
 
147
        except errors.BzrCommandError:
145
148
            msg = _format_exception()
146
 
        expected = 'brz: ERROR: argument foo\xb5 does not exist\n'
 
149
        if PY3:
 
150
            expected = 'brz: ERROR: argument foo\xb5 does not exist\n'
 
151
        else:
 
152
            # GZ 2017-06-10: Pretty bogus, should encode per the output stream
 
153
            expected = 'brz: ERROR: argument foo\xc2\xb5 does not exist\n'
147
154
        self.assertEqual(msg, expected)
148
155
 
149
156
    def test_format_exception(self):
320
327
        self.overrideEnv('BRZ_LOG', '/no-such-dir/brz.log')
321
328
        self.overrideAttr(trace, '_brz_log_filename')
322
329
        logf = trace._open_brz_log()
323
 
        if os.path.isdir('/no-such-dir'):
324
 
            raise TestSkipped('directory creation succeeded')
325
330
        self.assertIs(None, logf)
326
331
        self.assertContainsRe(
327
332
            sys.stderr.getvalue(),
328
333
            "failed to open trace file: .* '/no-such-dir/brz.log'$")
329
334
 
330
 
    def test__open_brz_log_ignores_cache_dir_error(self):
331
 
        # If the cache directory can not be created and _open_brz_log can thus
332
 
        # not open the file, then we should write the warning to stderr. Since
333
 
        # this is normally happening before logging is set up.
334
 
        self.overrideAttr(sys, 'stderr', StringIO())
335
 
        # Set the cache directory to something that cannot exist
336
 
        self.overrideEnv('BRZ_LOG', None)
337
 
        self.overrideEnv('BRZ_HOME', '/no-such-dir')
338
 
        self.overrideEnv('XDG_CACHE_HOME', '/no-such-dir')
339
 
        self.overrideAttr(trace, '_brz_log_filename')
340
 
        logf = trace._open_brz_log()
341
 
        if os.path.isdir('/no-such-dir'):
342
 
            raise TestSkipped('directory creation succeeded')
343
 
        self.assertIs(None, logf)
344
 
        self.assertContainsRe(
345
 
            sys.stderr.getvalue(),
346
 
            "failed to open trace file: .* '/no-such-dir'$")
347
 
 
348
335
 
349
336
class TestVerbosityLevel(TestCase):
350
337
 
403
390
 
404
391
    def test_log_utf8_arg(self):
405
392
        logging.getLogger("brz").debug(b"%s", b"\xc2\xa7")
406
 
        expected = u"   DEBUG  b'\\xc2\\xa7'\n"
 
393
        if PY3:
 
394
            expected = u"   DEBUG  b'\\xc2\\xa7'\n"
 
395
        else:
 
396
            expected = u"   DEBUG  \xa7\n"
407
397
        self.assertEqual(expected, self.get_log())
408
398
 
409
399
    def test_log_bytes_msg(self):
416
406
    def test_log_bytes_arg(self):
417
407
        logging.getLogger("brz").debug(b"%s", b"\xa7")
418
408
        log = self.get_log()
419
 
        self.assertEqual(u"   DEBUG  b'\\xa7'\n", self.get_log())
 
409
        if PY3:
 
410
            self.assertEqual(u"   DEBUG  b'\\xa7'\n", self.get_log())
 
411
        else:
 
412
            self.assertContainsString(log, "UnicodeDecodeError: ")
 
413
            self.assertContainsRe(
 
414
                log,
 
415
                "Logging record unformattable: ?'%s' % \\(b?'\\\\xa7',\\)\n")
420
416
 
421
417
    def test_log_mixed_strings(self):
422
418
        logging.getLogger("brz").debug(u"%s", b"\xa7")
423
419
        log = self.get_log()
424
 
        self.assertEqual(u"   DEBUG  b'\\xa7'\n", self.get_log())
 
420
        if PY3:
 
421
            self.assertEqual(u"   DEBUG  b'\\xa7'\n", self.get_log())
 
422
        else:
 
423
            self.assertContainsString(log, "UnicodeDecodeError: ")
 
424
            self.assertContainsRe(
 
425
                log,
 
426
                "Logging record unformattable: u'%s' % \\('\\\\xa7',\\)\n")
425
427
 
426
428
    def test_log_repr_broken(self):
427
429
        class BadRepr(object):