Exemple #1
0
    def test_format_with_unicode_traceback_content_trailing_msg_newline(self):
        # The point of this is to cover the case of *not* adding a
        # newline to the message before appending the formatted
        # traceback.
        try:
            raise RuntimeError('we made this up')
        except RuntimeError:
            self.record.exc_info = sys.exc_info()
        formatter = ZConfig.components.logger.formatter.Py2Formatter(
            '%(name)s %(message)s')
        # For formatMessage to return unicode:
        self.record.msg += u'\n'
        formatter.format(self.record)
        assert isinstance(self.record.exc_text, bytes)
        assert isinstance(formatter.formatMessage(self.record),
                          unicode)  # NOQA
        # We're now certain self.record.exc_text has been properly formatted.
        # Convert to unicode and add some interesting bits.
        encoded_text = self.text.encode(sys.getfilesystemencoding())
        self.record.exc_text = (self.record.exc_text + encoded_text)
        self.record.message = self.record.message.decode('utf-8')

        msg = formatter.format(self.record)

        self.assertIsInstance(msg, unicode)  # NOQA
Exemple #2
0
    def test_classic_arbitrary_field_missing(self):
        formatter = self.get_formatter(
            style='classic',
            format='%(levelno)s %(levelname)s %(undefined_field)s',
            arbitrary_fields=True)

        # The formatter still breaks when it references an undefined field:
        with self.assertRaises(KeyError) as cm:
            formatter.format(self.record)
        self.assertEqual(str(cm.exception), "'undefined_field'")
Exemple #3
0
    def test_template_arbitrary_field_missing(self):
        formatter = self.get_formatter(
            style='template',
            format='$${levelno} $${levelname} $${undefined_field}',
            arbitrary_fields=True)

        # The formatter still breaks when it references an undefined field:
        with self.assertRaises(KeyError) as cm:
            formatter.format(self.record)
        self.assertEqual(str(cm.exception), "'undefined_field'")
Exemple #4
0
 def test_relative_created_float_classic(self):
     formatter = self.get_formatter(
         style='classic',
         format='%(relativeCreated)+.3f %(levelname)s %(message)s')
     self.record.relativeCreated = 406.7840576171875
     output = formatter.format(self.record)
     self.assertIn('+406.784 WARNING my message', output)
Exemple #5
0
 def test_relative_created_float_format(self):
     formatter = self.get_formatter(
         style='format',
         format='{relativeCreated:+.3f} {levelname} {message}')
     self.record.relativeCreated = 406.7840576171875
     output = formatter.format(self.record)
     self.assertIn('+406.784 WARNING my message', output)
Exemple #6
0
 def test_safe_template_without_braces(self):
     formatter = self.get_formatter(
         style='safe-template',
         format='$$levelname $$levelno $$message %(stuff) {extra}')
     content = formatter.format(self.record)
     self.assertEqual(content, ("WARNING 30 my message, 'with' 'some args'"
                                " %(stuff) {extra}"))
Exemple #7
0
 def test_template_with_braces(self):
     formatter = self.get_formatter(
         style='template',
         format='$${levelname} $${levelno} $${message} %(stuff) {extra}')
     content = formatter.format(self.record)
     self.assertEqual(content, ("WARNING 30 my message, 'with' 'some args'"
                                " %(stuff) {extra}"))
Exemple #8
0
 def test_msecs_float_format(self):
     formatter = self.get_formatter(
         style='format',
         format='{asctime}.{msecs:03.0f} {levelname} {message}')
     self.record.msecs = 619.041919708252
     output = formatter.format(self.record)
     expected = '%s.619 WARNING my message' % self.record.asctime
     self.assertIn(expected, output)
Exemple #9
0
 def test_msecs_float_classic(self):
     formatter = self.get_formatter(
         style='classic',
         format='%(asctime)s.%(msecs)03.0f %(levelname)s %(message)s')
     self.record.msecs = 619.041919708252
     output = formatter.format(self.record)
     expected = '%s.619 WARNING my message' % self.record.asctime
     self.assertIn(expected, output)
Exemple #10
0
    def test_safe_template_arbitrary_field_missing(self):
        formatter = self.get_formatter(
            style='safe-template',
            format='$${levelno} $${levelname} $${undefined_field}',
            arbitrary_fields=True)

        # The formatter still breaks when it references an undefined field:
        logentry = formatter.format(self.record)
        self.assertIn(' ${undefined_field}', logentry)
Exemple #11
0
 def test_safe_template_with_junk(self):
     formatter = self.get_formatter(
         style='safe-template',
         format=('$${levelname} $${levelno} $${message} %(stuff) {extra}'
                 ' $$} $${levelno  $${bad-mojo}'))
     content = formatter.format(self.record)
     self.assertEqual(content,
                      ("WARNING 30 my message, 'with' 'some args'"
                       " %(stuff) {extra} $} ${levelno  ${bad-mojo}"))
Exemple #12
0
    def test_safe_template_arbitrary_field_present(self):
        formatter = self.get_formatter(
            style='safe-template',
            format='$${levelno} $${levelname} $${undefined_field}',
            arbitrary_fields=True)

        # Given the field, it formats just fine:
        self.record.undefined_field = 'surprise!'
        logentry = formatter.format(self.record)
        self.assertIn('surprise!', logentry)
Exemple #13
0
    def test_classic_arbitrary_field_present(self):
        formatter = self.get_formatter(
            style='classic',
            format='%(levelno)s %(levelname)s %(undefined_field)s',
            arbitrary_fields=True)

        # Given the field, it formats just fine:
        self.record.undefined_field = 'surprise!'
        logentry = formatter.format(self.record)
        self.assertIn('surprise!', logentry)
Exemple #14
0
 def test_format(self):
     #
     # The last item here isn't a format string placeholder; it
     # almost looks like a classic format operation, but would cause
     # an error.  We're just expecting it to show up in the result as
     # a literal.
     #
     # It would not be allowed in older versions of ZConfig, or for
     # classic style.
     #
     formatter = self.get_formatter(
         style='format', format='{levelname} {levelno} {message} %(stuff)')
     content = formatter.format(self.record)
     self.assertEqual(content,
                      "WARNING 30 my message, 'with' 'some args' %(stuff)")
Exemple #15
0
    def test_format_with_traceback_info(self):
        formatter = self.get_formatter(
            style='format', format='{levelname} {levelno} {message}')

        def fail():
            raise RuntimeError('foo')

        def something():
            __traceback_info__ = 42
            fail()

        try:
            something()
        except RuntimeError:
            self.record.exc_info = sys.exc_info()

        content = formatter.format(self.record)
        self.assertIn(' - __traceback_info__: 42', content)
        self.assertIn("WARNING 30 my message, 'with' 'some args'", content)
Exemple #16
0
 def test_func_name_template(self):
     formatter = self.get_formatter(
         style='template', format='$$levelname $$levelno $$funcName')
     output = formatter.format(self.record)
     self.assertIn('WARNING 30 faux_func', output)
Exemple #17
0
 def test_func_name_classic(self):
     formatter = self.get_formatter(
         style='classic', format='%(levelname)s %(levelno)2d %(funcName)s')
     output = formatter.format(self.record)
     self.assertIn('WARNING 30 faux_func', output)
Exemple #18
0
 def test_func_name_format(self):
     formatter = self.get_formatter(
         style='format', format='{levelname} {levelno:02d} {funcName}')
     output = formatter.format(self.record)
     self.assertIn('WARNING 30 faux_func', output)
Exemple #19
0
 def test_levelno_integer_format(self):
     formatter = self.get_formatter(
         style='format', format='{levelname} {levelno:02d} {message}')
     output = formatter.format(self.record)
     self.assertIn('WARNING 30 my message', output)
Exemple #20
0
 def test_levelno_integer_classic(self):
     formatter = self.get_formatter(
         style='classic', format='%(levelname)s %(levelno)2d %(message)s')
     output = formatter.format(self.record)
     self.assertIn('WARNING 30 my message', output)
Exemple #21
0
 def test_classic_implicit(self):
     formatter = self.get_formatter(
         format='%(levelname)s %(levelno)s %(message)s')
     content = formatter.format(self.record)
     self.assertEqual(content, "WARNING 30 my message, 'with' 'some args'")