~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_trace.py

  • Committer: Richard Wilbur
  • Date: 2016-02-04 19:07:28 UTC
  • mto: This revision was merged to the branch mainline in revision 6618.
  • Revision ID: richard.wilbur@gmail.com-20160204190728-p0zvfii6zase0fw7
Update COPYING.txt from the original http://www.gnu.org/licenses/gpl-2.0.txt  (Only differences were in whitespace.)  Thanks to Petr Stodulka for pointing out the discrepancy.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
 
21
21
from cStringIO import StringIO
22
22
import errno
 
23
import logging
23
24
import os
24
25
import re
25
26
import sys
113
114
        msg = _format_exception()
114
115
        # Even though Windows and Linux differ for 'os.rmdir', they both give
115
116
        # 'No such file' for open()
 
117
        # However it now gets translated so we can not test for a specific message
116
118
        self.assertContainsRe(msg,
117
 
            r'^bzr: ERROR: \[Errno .*\] No such file.*nosuchfile')
 
119
            r'^bzr: ERROR: \[Errno .*\] .*nosuchfile')
118
120
 
119
121
    def test_format_pywintypes_error(self):
120
122
        self.requireFeature(features.pywintypes)
128
130
        #                with errno, function name, and locale error message
129
131
        self.assertContainsRe(msg,
130
132
            r"^bzr: ERROR: \(2, 'RemoveDirectory[AW]?', .*\)")
 
133
            
 
134
    def test_format_sockets_error(self):
 
135
        try:
 
136
            import socket
 
137
            sock = socket.socket()
 
138
            sock.send("This should fail.")
 
139
        except socket.error:
 
140
            pass
 
141
        msg = _format_exception()
 
142
        
 
143
        self.assertNotContainsRe(msg,
 
144
            r"Traceback (most recent call last):")
131
145
 
132
146
    def test_format_unicode_error(self):
133
147
        try:
241
255
        # have to do a replaceent here as well.
242
256
        self.assertContainsRe(log, "ascii argument: \xb5".decode('utf8',
243
257
            'replace'))
244
 
        
 
258
 
245
259
    def test_show_error(self):
246
260
        show_error('error1')
247
261
        show_error(u'error2 \xb5 blah')
333
347
        self.assertEqual(0, get_verbosity_level())
334
348
 
335
349
 
 
350
class TestLogging(TestCase):
 
351
    """Check logging functionality robustly records information"""
 
352
 
 
353
    def test_note(self):
 
354
        trace.note("Noted")
 
355
        self.assertEqual("    INFO  Noted\n", self.get_log())
 
356
 
 
357
    def test_warning(self):
 
358
        trace.warning("Warned")
 
359
        self.assertEqual(" WARNING  Warned\n", self.get_log())
 
360
 
 
361
    def test_log(self):
 
362
        logging.getLogger("bzr").error("Errored")
 
363
        self.assertEqual("   ERROR  Errored\n", self.get_log())
 
364
 
 
365
    def test_log_sub(self):
 
366
        logging.getLogger("bzr.test_log_sub").debug("Whispered")
 
367
        self.assertEqual("   DEBUG  Whispered\n", self.get_log())
 
368
 
 
369
    def test_log_unicode_msg(self):
 
370
        logging.getLogger("bzr").debug(u"\xa7")
 
371
        self.assertEqual(u"   DEBUG  \xa7\n", self.get_log())
 
372
 
 
373
    def test_log_unicode_arg(self):
 
374
        logging.getLogger("bzr").debug("%s", u"\xa7")
 
375
        self.assertEqual(u"   DEBUG  \xa7\n", self.get_log())
 
376
 
 
377
    def test_log_utf8_msg(self):
 
378
        logging.getLogger("bzr").debug("\xc2\xa7")
 
379
        self.assertEqual(u"   DEBUG  \xa7\n", self.get_log())
 
380
 
 
381
    def test_log_utf8_arg(self):
 
382
        logging.getLogger("bzr").debug("%s", "\xc2\xa7")
 
383
        self.assertEqual(u"   DEBUG  \xa7\n", self.get_log())
 
384
 
 
385
    def test_log_bytes_msg(self):
 
386
        logging.getLogger("bzr").debug("\xa7")
 
387
        log = self.get_log()
 
388
        self.assertContainsString(log, "UnicodeDecodeError: ")
 
389
        self.assertContainsString(log,
 
390
            "Logging record unformattable: '\\xa7' % ()\n")
 
391
 
 
392
    def test_log_bytes_arg(self):
 
393
        logging.getLogger("bzr").debug("%s", "\xa7")
 
394
        log = self.get_log()
 
395
        self.assertContainsString(log, "UnicodeDecodeError: ")
 
396
        self.assertContainsString(log,
 
397
            "Logging record unformattable: '%s' % ('\\xa7',)\n")
 
398
 
 
399
    def test_log_mixed_strings(self):
 
400
        logging.getLogger("bzr").debug(u"%s", "\xa7")
 
401
        log = self.get_log()
 
402
        self.assertContainsString(log, "UnicodeDecodeError: ")
 
403
        self.assertContainsString(log,
 
404
            "Logging record unformattable: u'%s' % ('\\xa7',)\n")
 
405
 
 
406
    def test_log_repr_broken(self):
 
407
        class BadRepr(object):
 
408
            def __repr__(self):
 
409
                raise ValueError("Broken object")
 
410
        logging.getLogger("bzr").debug("%s", BadRepr())
 
411
        log = self.get_log()
 
412
        self.assertContainsRe(log, "ValueError: Broken object\n")
 
413
        self.assertContainsRe(log, "Logging record unformattable: '%s' % .*\n")
 
414
 
 
415
 
336
416
class TestBzrLog(TestCaseInTempDir):
337
417
 
338
418
    def test_log_rollover(self):