/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: Breezy landing bot
  • Author(s): Jelmer Vernooij
  • Date: 2018-11-16 18:59:44 UTC
  • mfrom: (7143.15.15 more-cleanups)
  • Revision ID: breezy.the.bot@gmail.com-20181116185944-biefv1sub37qfybm
Sprinkle some PEP8iness.

Merged from https://code.launchpad.net/~jelmer/brz/more-cleanups/+merge/358611

Show diffs side-by-side

added added

removed removed

Lines of Context:
64
64
        except NotImplementedError:
65
65
            err = _format_exception()
66
66
        self.assertContainsRe(err,
67
 
                '^brz: ERROR: NotImplementedError: time travel')
 
67
                              '^brz: ERROR: NotImplementedError: time travel')
68
68
        self.assertContainsRe(err,
69
 
            'Bazaar has encountered an internal error.')
 
69
                              'Bazaar has encountered an internal error.')
70
70
 
71
71
    def test_format_interrupt_exception(self):
72
72
        try:
81
81
            raise MemoryError()
82
82
        except MemoryError:
83
83
            msg = _format_exception()
84
 
        self.assertEqual(msg,
 
84
        self.assertEqual(
 
85
            msg,
85
86
            "brz: out of memory\nUse -Dmem_dump to dump memory to a file.\n")
86
87
 
87
88
    def test_format_mem_dump(self):
92
93
        except MemoryError:
93
94
            msg = _format_exception()
94
95
        self.assertStartsWith(msg,
95
 
            "brz: out of memory\nMemory dumped to ")
 
96
                              "brz: out of memory\nMemory dumped to ")
96
97
 
97
98
    def test_format_os_error(self):
98
99
        try:
111
112
            msg = _format_exception()
112
113
        # Even though Windows and Linux differ for 'os.rmdir', they both give
113
114
        # 'No such file' for open()
114
 
        # However it now gets translated so we can not test for a specific message
 
115
        # However it now gets translated so we can not test for a specific
 
116
        # message
115
117
        self.assertContainsRe(msg,
116
 
            '^brz: ERROR: \\[Errno .*\\] .*nosuchfile')
 
118
                              '^brz: ERROR: \\[Errno .*\\] .*nosuchfile')
117
119
 
118
120
    def test_format_pywintypes_error(self):
119
121
        self.requireFeature(features.pywintypes)
120
 
        import pywintypes, win32file
 
122
        import pywintypes
 
123
        import win32file
121
124
        try:
122
125
            win32file.RemoveDirectory('nosuchfile22222')
123
126
        except pywintypes.error:
124
127
            msg = _format_exception()
125
128
        # GZ 2010-05-03: Formatting for pywintypes.error is basic, a 3-tuple
126
129
        #                with errno, function name, and locale error message
127
 
        self.assertContainsRe(msg,
128
 
            "^brz: ERROR: \\(2, 'RemoveDirectory[AW]?', .*\\)")
 
130
        self.assertContainsRe(
 
131
            msg, "^brz: ERROR: \\(2, 'RemoveDirectory[AW]?', .*\\)")
129
132
 
130
133
    def test_format_sockets_error(self):
131
134
        try:
136
139
            msg = _format_exception()
137
140
 
138
141
        self.assertNotContainsRe(msg,
139
 
            "Traceback \\(most recent call last\\):")
 
142
                                 "Traceback \\(most recent call last\\):")
140
143
 
141
144
    def test_format_unicode_error(self):
142
145
        try:
162
165
        """Short friendly message for missing system modules."""
163
166
        try:
164
167
            import ImaginaryModule
165
 
        except ImportError as e:
 
168
        except ImportError:
166
169
            msg = _format_exception()
167
170
        else:
168
171
            self.fail("somehow succeeded in importing %r" % ImaginaryModule)
169
 
        self.assertContainsRe(msg,
 
172
        self.assertContainsRe(
 
173
            msg,
170
174
            "^brz: ERROR: No module named '?ImaginaryModule'?\n"
171
175
            "You may need to install this Python library separately.\n$")
172
176
 
173
177
    def test_report_import_syntax_error(self):
174
178
        try:
175
179
            raise ImportError("syntax error")
176
 
        except ImportError as e:
 
180
        except ImportError:
177
181
            msg = _format_exception()
178
182
        self.assertContainsRe(msg,
179
 
            'Bazaar has encountered an internal error')
 
183
                              'Bazaar has encountered an internal error')
180
184
 
181
185
    def test_trace_unicode(self):
182
186
        """Write Unicode to trace log"""
206
210
    def test_report_broken_pipe(self):
207
211
        try:
208
212
            raise IOError(errno.EPIPE, 'broken pipe foofofo')
209
 
        except IOError as e:
 
213
        except IOError:
210
214
            msg = _format_exception()
211
215
            self.assertEqual(msg, "brz: broken pipe\n")
212
216
        else:
216
220
        """Assert log contains a line including log timestamp."""
217
221
        # Does not check absolute position in log as there may be kipple.
218
222
        self.assertContainsRe(log,
219
 
            '(?m)^\\d+\\.\\d+  ' + re.escape(string))
 
223
                              '(?m)^\\d+\\.\\d+  ' + re.escape(string))
220
224
 
221
225
    def test_mutter_callsite_1(self):
222
226
        """mutter_callsite can capture 1 level of stack frame."""
225
229
        # begin with the message
226
230
        self.assertLogContainsLine(log, 'foo a string\nCalled from:\n')
227
231
        # should show two frame: this frame and the one above
228
 
        self.assertContainsRe(log,
229
 
            'test_trace\\.py", line \\d+, in test_mutter_callsite_1\n')
 
232
        self.assertContainsRe(
 
233
            log, 'test_trace\\.py", line \\d+, in test_mutter_callsite_1\n')
230
234
        # this frame should be the final one
231
235
        self.assertEndsWith(log, ' "a string")\n')
232
236
 
237
241
        # begin with the message
238
242
        self.assertLogContainsLine(log, 'foo a string\nCalled from:\n')
239
243
        # should show two frame: this frame and the one above
240
 
        self.assertContainsRe(log,
241
 
            'test_trace.py", line \\d+, in test_mutter_callsite_2\n')
 
244
        self.assertContainsRe(
 
245
            log, 'test_trace.py", line \\d+, in test_mutter_callsite_2\n')
242
246
        # this frame should be the final one
243
247
        self.assertEndsWith(log, ' "a string")\n')
244
248
 
263
267
        show_error('error1')
264
268
        show_error(u'error2 \xb5 blah')
265
269
        show_error('arg: %s', 'blah')
266
 
        show_error('arg2: %(key)s', {'key':'stuff'})
 
270
        show_error('arg2: %(key)s', {'key': 'stuff'})
267
271
        try:
268
272
            raise Exception("oops")
269
 
        except:
 
273
        except BaseException:
270
274
            show_error('kwarg', exc_info=True)
271
275
        log = self.get_log()
272
276
        self.assertContainsRe(log, 'error1')
275
279
        self.assertContainsRe(log, 'arg2: stuff')
276
280
        self.assertContainsRe(log, 'kwarg')
277
281
        self.assertContainsRe(log, 'Traceback \\(most recent call last\\):')
278
 
        self.assertContainsRe(log, 'File ".*test_trace.py", line .*, in test_show_error')
 
282
        self.assertContainsRe(
 
283
            log, 'File ".*test_trace.py", line .*, in test_show_error')
279
284
        self.assertContainsRe(log, 'raise Exception\\("oops"\\)')
280
285
        self.assertContainsRe(log, 'Exception: oops')
281
286
 
304
309
            # as there's a timestamp at the front.
305
310
            tmp1.seek(0)
306
311
            self.assertContainsRe(tmp1.read(),
307
 
                b"\\d+\\.\\d+  comment to file1\n"
308
 
                b"\\d+\\.\\d+  again to file1\n")
 
312
                                  b"\\d+\\.\\d+  comment to file1\n"
 
313
                                  b"\\d+\\.\\d+  again to file1\n")
309
314
            tmp2.seek(0)
310
315
            self.assertContainsRe(tmp2.read(),
311
 
                b"\\d+\\.\\d+  comment to file2\n")
 
316
                                  b"\\d+\\.\\d+  comment to file2\n")
312
317
        finally:
313
318
            tmp1.close()
314
319
            tmp2.close()
395
400
        logging.getLogger("brz").debug(b"\xa7")
396
401
        log = self.get_log()
397
402
        self.assertContainsString(log, "UnicodeDecodeError: ")
398
 
        self.assertContainsRe(log,
399
 
            "Logging record unformattable: b?'\\\\xa7' % \\(\\)\n")
 
403
        self.assertContainsRe(
 
404
            log, "Logging record unformattable: b?'\\\\xa7' % \\(\\)\n")
400
405
 
401
406
    def test_log_bytes_arg(self):
402
407
        logging.getLogger("brz").debug(b"%s", b"\xa7")
405
410
            self.assertEqual(u"   DEBUG  b'\\xa7'\n", self.get_log())
406
411
        else:
407
412
            self.assertContainsString(log, "UnicodeDecodeError: ")
408
 
            self.assertContainsRe(log,
 
413
            self.assertContainsRe(
 
414
                log,
409
415
                "Logging record unformattable: ?'%s' % \\(b?'\\\\xa7',\\)\n")
410
416
 
411
417
    def test_log_mixed_strings(self):
415
421
            self.assertEqual(u"   DEBUG  b'\\xa7'\n", self.get_log())
416
422
        else:
417
423
            self.assertContainsString(log, "UnicodeDecodeError: ")
418
 
            self.assertContainsRe(log,
 
424
            self.assertContainsRe(
 
425
                log,
419
426
                "Logging record unformattable: u'%s' % \\('\\\\xa7',\\)\n")
420
427
 
421
428
    def test_log_repr_broken(self):