[pypy-svn] r49884 - in pypy/dist/pypy/module/_codecs: . test
cfbolz at codespeak.net
cfbolz at codespeak.net
Tue Dec 18 12:20:57 CET 2007
Author: cfbolz
Date: Tue Dec 18 12:20:57 2007
New Revision: 49884
Modified:
pypy/dist/pypy/module/_codecs/interp_codecs.py
pypy/dist/pypy/module/_codecs/test/test_codecs.py
Log:
fix an rpython assertion error
Modified: pypy/dist/pypy/module/_codecs/interp_codecs.py
==============================================================================
--- pypy/dist/pypy/module/_codecs/interp_codecs.py (original)
+++ pypy/dist/pypy/module/_codecs/interp_codecs.py Tue Dec 18 12:20:57 2007
@@ -28,16 +28,14 @@
space.wrap(endpos),
space.wrap(reason))
w_res = space.call_function(w_errorhandler, w_exc)
- try:
- w_replace, w_newpos = space.unpacktuple(w_res, 2)
- except OperationError, e:
- if not e.match(space, space.w_TypeError):
- raise
+ if (not space.is_true(space.isinstance(w_res, space.w_tuple))
+ or space.int_w(space.len(w_res)) != 2):
raise OperationError(
space.w_TypeError,
space.wrap("encoding error handler must return "
"(unicode, int) tuple, not %s" % (
space.str_w(space.repr(w_res)))))
+ w_replace, w_newpos = space.unpacktuple(w_res, 2)
newpos = space.int_w(w_newpos)
if (newpos < 0):
newpos = len(input) + newpos
Modified: pypy/dist/pypy/module/_codecs/test/test_codecs.py
==============================================================================
--- pypy/dist/pypy/module/_codecs/test/test_codecs.py (original)
+++ pypy/dist/pypy/module/_codecs/test/test_codecs.py Tue Dec 18 12:20:57 2007
@@ -281,13 +281,19 @@
def test_cpytest_decode(self):
import codecs
- print 1
assert codecs.decode('\xe4\xf6\xfc', 'latin-1') == u'\xe4\xf6\xfc'
- print 2
raises(TypeError, codecs.decode)
- print 3
assert codecs.decode('abc') == u'abc'
- print 4
raises(UnicodeDecodeError, codecs.decode, '\xff', 'ascii')
-
+ def test_bad_errorhandler_return(self):
+ import codecs
+ def baddecodereturn1(exc):
+ return 42
+ codecs.register_error("test.baddecodereturn1", baddecodereturn1)
+ raises(TypeError, "\xff".decode, "ascii", "test.baddecodereturn1")
+ raises(TypeError, "\\".decode, "unicode-escape", "test.baddecodereturn1")
+ raises(TypeError, "\\x0".decode, "unicode-escape", "test.baddecodereturn1")
+ raises(TypeError, "\\x0y".decode, "unicode-escape", "test.baddecodereturn1")
+ raises(TypeError, "\\Uffffeeee".decode, "unicode-escape", "test.baddecodereturn1")
+ raises(TypeError, "\\uyyyy".decode, "raw-unicode-escape", "test.baddecodereturn1")
More information about the Pypy-commit
mailing list