示例#1
0
    def test_errors(self):
        import codecs
        assert (codecs.replace_errors(
            UnicodeEncodeError("ascii", u"\u3042", 0, 1,
                               "ouch"))) == ((u"?", 1))
        assert (codecs.replace_errors(
            UnicodeDecodeError("ascii", "\xff", 0, 1,
                               "ouch"))) == ((u"\ufffd", 1))
        assert (codecs.replace_errors(
            UnicodeTranslateError(u"\u3042", 0, 1,
                                  "ouch"))) == ((u"\ufffd", 1))

        class BadStartUnicodeEncodeError(UnicodeEncodeError):
            def __init__(self):
                UnicodeEncodeError.__init__(self, "ascii", u"", 0, 1, "bad")
                self.start = []

        # A UnicodeEncodeError object with a bad object attribute
        class BadObjectUnicodeEncodeError(UnicodeEncodeError):
            def __init__(self):
                UnicodeEncodeError.__init__(self, "ascii", u"", 0, 1, "bad")
                self.object = []

        # A UnicodeDecodeError object without an end attribute
        class NoEndUnicodeDecodeError(UnicodeDecodeError):
            def __init__(self):
                UnicodeDecodeError.__init__(self, "ascii", "", 0, 1, "bad")
                del self.end

        # A UnicodeDecodeError object with a bad object attribute
        class BadObjectUnicodeDecodeError(UnicodeDecodeError):
            def __init__(self):
                UnicodeDecodeError.__init__(self, "ascii", "", 0, 1, "bad")
                self.object = []

        # A UnicodeTranslateError object without a start attribute
        class NoStartUnicodeTranslateError(UnicodeTranslateError):
            def __init__(self):
                UnicodeTranslateError.__init__(self, u"", 0, 1, "bad")
                del self.start

        # A UnicodeTranslateError object without an end attribute
        class NoEndUnicodeTranslateError(UnicodeTranslateError):
            def __init__(self):
                UnicodeTranslateError.__init__(self, u"", 0, 1, "bad")
                del self.end

        # A UnicodeTranslateError object without an object attribute
        class NoObjectUnicodeTranslateError(UnicodeTranslateError):
            def __init__(self):
                UnicodeTranslateError.__init__(self, u"", 0, 1, "bad")
                del self.object

        import codecs
        raises(TypeError, codecs.replace_errors, BadObjectUnicodeEncodeError())
        raises(TypeError, codecs.replace_errors, 42)
        # "replace" complains about the wrong exception type
        raises(TypeError, codecs.replace_errors, UnicodeError("ouch"))
        raises(TypeError, codecs.replace_errors, BadObjectUnicodeEncodeError())
        raises(TypeError, codecs.replace_errors, BadObjectUnicodeDecodeError())
示例#2
0
 def test_badandgoodreplaceexceptions(self):
     # "replace" complains about a non-exception passed in
     self.assertRaises(
        TypeError,
        codecs.replace_errors,
        42
     )
     # "replace" complains about the wrong exception type
     self.assertRaises(
        TypeError,
        codecs.replace_errors,
        UnicodeError("ouch")
     )
     # With the correct exception, "replace" returns an "?" or u"\ufffd" replacement
     self.assertEquals(
         codecs.replace_errors(UnicodeEncodeError("ascii", u"\u3042", 0, 1, "ouch")),
         (u"?", 1)
     )
     self.assertEquals(
         codecs.replace_errors(UnicodeDecodeError("ascii", "\xff", 0, 1, "ouch")),
         (u"\ufffd", 1)
     )
     self.assertEquals(
         codecs.replace_errors(UnicodeTranslateError(u"\u3042", 0, 1, "ouch")),
         (u"\ufffd", 1)
     )
 def test_badandgoodreplaceexceptions(self):
     # "replace" complains about a non-exception passed in
     self.assertRaises(TypeError, codecs.replace_errors, 42)
     # "replace" complains about the wrong exception type
     self.assertRaises(TypeError, codecs.replace_errors,
                       UnicodeError("ouch"))
     self.assertRaises(TypeError, codecs.replace_errors,
                       BadObjectUnicodeEncodeError())
     self.assertRaises(TypeError, codecs.replace_errors,
                       BadObjectUnicodeDecodeError())
     if test_support.due_to_ironpython_bug(
             "http://tkbgitvstfat01:8080/WorkItemTracking/WorkItem.aspx?artifactMoniker=303935"
     ):
         return
     # With the correct exception, "replace" returns an "?" or u"\ufffd" replacement
     self.assertEquals(
         codecs.replace_errors(
             UnicodeEncodeError("ascii", u"\u3042", 0, 1, "ouch")),
         (u"?", 1))
     self.assertEquals(
         codecs.replace_errors(
             UnicodeDecodeError("ascii", "\xff", 0, 1, "ouch")),
         (u"\ufffd", 1))
     self.assertEquals(
         codecs.replace_errors(
             UnicodeTranslateError(u"\u3042", 0, 1, "ouch")),
         (u"\ufffd", 1))
示例#4
0
 def __call__(self, err):
     global _warned_decoding_error
     if self.msg_type not in _warned_decoding_error:
         _warned_decoding_error.add(self.msg_type)
         # Lazy import to avoid this cost in the non-error case.
         import logging
         logger = logging.getLogger('rosout')
         extra = "message %s" % self.msg_type if self.msg_type else "unknown message"
         logger.error(
             "Characters replaced when decoding %s (will print only once): %s",
             extra, err)
     return codecs.replace_errors(err)
示例#5
0
    def test_errors(self):
        import codecs

        assert codecs.replace_errors(UnicodeEncodeError("ascii", u"\u3042", 0, 1, "ouch")) == (u"?", 1)
        assert codecs.replace_errors(UnicodeDecodeError("ascii", "\xff", 0, 1, "ouch")) == (u"\ufffd", 1)
        assert codecs.replace_errors(UnicodeTranslateError(u"\u3042", 0, 1, "ouch")) == (u"\ufffd", 1)

        assert codecs.replace_errors(UnicodeEncodeError("ascii", u"\u3042\u3042", 0, 2, "ouch")) == (u"??", 2)
        assert codecs.replace_errors(UnicodeDecodeError("ascii", "\xff\xff", 0, 2, "ouch")) == (u"\ufffd", 2)
        assert codecs.replace_errors(UnicodeTranslateError(u"\u3042\u3042", 0, 2, "ouch")) == (u"\ufffd\ufffd", 2)

        class BadStartUnicodeEncodeError(UnicodeEncodeError):
            def __init__(self):
                UnicodeEncodeError.__init__(self, "ascii", u"", 0, 1, "bad")
                self.start = []

        # A UnicodeEncodeError object with a bad object attribute
        class BadObjectUnicodeEncodeError(UnicodeEncodeError):
            def __init__(self):
                UnicodeEncodeError.__init__(self, "ascii", u"", 0, 1, "bad")
                self.object = []

        # A UnicodeDecodeError object without an end attribute
        class NoEndUnicodeDecodeError(UnicodeDecodeError):
            def __init__(self):
                UnicodeDecodeError.__init__(self, "ascii", "", 0, 1, "bad")
                del self.end

        # A UnicodeDecodeError object with a bad object attribute
        class BadObjectUnicodeDecodeError(UnicodeDecodeError):
            def __init__(self):
                UnicodeDecodeError.__init__(self, "ascii", "", 0, 1, "bad")
                self.object = []

        # A UnicodeTranslateError object without a start attribute
        class NoStartUnicodeTranslateError(UnicodeTranslateError):
            def __init__(self):
                UnicodeTranslateError.__init__(self, u"", 0, 1, "bad")
                del self.start

        # A UnicodeTranslateError object without an end attribute
        class NoEndUnicodeTranslateError(UnicodeTranslateError):
            def __init__(self):
                UnicodeTranslateError.__init__(self, u"", 0, 1, "bad")
                del self.end

        # A UnicodeTranslateError object without an object attribute
        class NoObjectUnicodeTranslateError(UnicodeTranslateError):
            def __init__(self):
                UnicodeTranslateError.__init__(self, u"", 0, 1, "bad")
                del self.object

        import codecs

        raises(TypeError, codecs.replace_errors, BadObjectUnicodeEncodeError())
        raises(TypeError, codecs.replace_errors, 42)
        # "replace" complains about the wrong exception type
        raises(TypeError, codecs.replace_errors, UnicodeError("ouch"))
        raises(TypeError, codecs.replace_errors, BadObjectUnicodeEncodeError())
        raises(TypeError, codecs.replace_errors, BadObjectUnicodeDecodeError())
示例#6
0
    def _decoding_error_handler(self, error):
        """ Error handler that is used with the byte.decode() method.

        Does the same as the built-in 'replace' error handler, but logs an
        error message before.

        Args:
            error (UnicodeDecodeError): The error that was raised during decode.
        """
        self._logger.error(
            'Invalid character encoding: {}'.format(error.reason))
        self._logger.error('Replacing the malformed character.')
        return codecs.replace_errors(error)
示例#7
0
 def test_badandgoodreplaceexceptions(self):
     # "replace" complains about a non-exception passed in
     self.assertRaises(
        TypeError,
        codecs.replace_errors,
        42
     )
     # "replace" complains about the wrong exception type
     self.assertRaises(
        TypeError,
        codecs.replace_errors,
        UnicodeError("ouch")
     )
     self.assertRaises(
         TypeError,
         codecs.replace_errors,
         BadObjectUnicodeEncodeError()
     )
     self.assertRaises(
         TypeError,
         codecs.replace_errors,
         BadObjectUnicodeDecodeError()
     )
     # With the correct exception, "replace" returns an "?" or "\ufffd" replacement
     self.assertEqual(
         codecs.replace_errors(
             UnicodeEncodeError("ascii", "a\u3042b", 1, 2, "ouch")),
         ("?", 2)
     )
     self.assertEqual(
         codecs.replace_errors(
             UnicodeDecodeError("ascii", bytearray(b"a\xffb"), 1, 2, "ouch")),
         ("\ufffd", 2)
     )
     self.assertEqual(
         codecs.replace_errors(
             UnicodeTranslateError("a\u3042b", 1, 2, "ouch")),
         ("\ufffd", 2)
     )
示例#8
0
 def test_badandgoodreplaceexceptions(self):
     # "replace" complains about a non-exception passed in
     self.assertRaises(
        TypeError,
        codecs.replace_errors,
        42
     )
     # "replace" complains about the wrong exception type
     self.assertRaises(
        TypeError,
        codecs.replace_errors,
        UnicodeError("ouch")
     )
     self.assertRaises(
         TypeError,
         codecs.replace_errors,
         BadObjectUnicodeEncodeError()
     )
     self.assertRaises(
         TypeError,
         codecs.replace_errors,
         BadObjectUnicodeDecodeError()
     )
     # With the correct exception, "replace" returns an "?" or "\ufffd" replacement
     self.assertEqual(
         codecs.replace_errors(
             UnicodeEncodeError("ascii", "a\u3042b", 1, 2, "ouch")),
         ("?", 2)
     )
     self.assertEqual(
         codecs.replace_errors(
             UnicodeDecodeError("ascii", bytearray(b"a\xffb"), 1, 2, "ouch")),
         ("\ufffd", 2)
     )
     self.assertEqual(
         codecs.replace_errors(
             UnicodeTranslateError("a\u3042b", 1, 2, "ouch")),
         ("\ufffd", 2)
     )
示例#9
0
    def _decoding_error_handler(self, error):
        """ Error handler that is used with the byte.decode() method.

        Does the same as the built-in 'replace' error handler, but logs an
        error message before.

        Args:
            error (UnicodeDecodeError): The error that was raised during decode.
        """
        self._logger.error(
            'Invalid character encoding: {}'.format(error.reason))
        self._logger.error('Replacing the malformed character.')
        return codecs.replace_errors(error)
示例#10
0
 def test_badandgoodreplaceexceptions(self):
     # "replace" complains about a non-exception passed in
     self.assertRaises(
        TypeError,
        codecs.replace_errors,
        42
     )
     # "replace" complains about the wrong exception type
     self.assertRaises(
        TypeError,
        codecs.replace_errors,
        UnicodeError("ouch")
     )
     self.assertRaises(
         TypeError,
         codecs.replace_errors,
         BadObjectUnicodeEncodeError()
     )
     self.assertRaises(
         TypeError,
         codecs.replace_errors,
         BadObjectUnicodeDecodeError()
     )
     if test_support.due_to_ironpython_bug("http://tkbgitvstfat01:8080/WorkItemTracking/WorkItem.aspx?artifactMoniker=303935"):
         return
     # With the correct exception, "replace" returns an "?" or u"\ufffd" replacement
     self.assertEquals(
         codecs.replace_errors(UnicodeEncodeError("ascii", u"\u3042", 0, 1, "ouch")),
         (u"?", 1)
     )
     self.assertEquals(
         codecs.replace_errors(UnicodeDecodeError("ascii", "\xff", 0, 1, "ouch")),
         (u"\ufffd", 1)
     )
     self.assertEquals(
         codecs.replace_errors(UnicodeTranslateError(u"\u3042", 0, 1, "ouch")),
         (u"\ufffd", 1)
     )
示例#11
0
def on_codecs_error(exc):
    L.warning('decode error: %s', exc)
    return codecs.replace_errors(exc)
示例#12
0
文件: core.py 项目: axujen/gentoo-bot
def strict_handler(exception):
	return codecs.replace_errors(exception)
示例#13
0
def strict_handler(exception):
    return codecs.replace_errors(exception)