Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r84100:bf4e328270ce Date: 2016-05-01 15:38 +0200 http://bitbucket.org/pypy/pypy/changeset/bf4e328270ce/
Log: merge heads diff --git a/pypy/module/unicodedata/interp_ucd.py b/pypy/module/unicodedata/interp_ucd.py --- a/pypy/module/unicodedata/interp_ucd.py +++ b/pypy/module/unicodedata/interp_ucd.py @@ -4,7 +4,7 @@ from pypy.interpreter.gateway import interp2app, unwrap_spec from pypy.interpreter.baseobjspace import W_Root -from pypy.interpreter.error import OperationError +from pypy.interpreter.error import OperationError, oefmt from pypy.interpreter.typedef import TypeDef, interp_attrproperty from rpython.rlib.rarithmetic import r_longlong from rpython.rlib.objectmodel import we_are_translated @@ -34,8 +34,9 @@ # Target is wide build def unichr_to_code_w(space, w_unichr): if not space.isinstance_w(w_unichr, space.w_unicode): - raise OperationError(space.w_TypeError, space.wrap( - 'argument 1 must be unicode')) + raise oefmt( + space.w_TypeError, 'argument 1 must be unicode, not %T', + w_unichr) if not we_are_translated() and sys.maxunicode == 0xFFFF: # Host CPython is narrow build, accept surrogates @@ -54,8 +55,9 @@ # Target is narrow build def unichr_to_code_w(space, w_unichr): if not space.isinstance_w(w_unichr, space.w_unicode): - raise OperationError(space.w_TypeError, space.wrap( - 'argument 1 must be unicode')) + raise oefmt( + space.w_TypeError, 'argument 1 must be unicode, not %T', + w_unichr) if not we_are_translated() and sys.maxunicode > 0xFFFF: # Host CPython is wide build, forbid surrogates @@ -179,7 +181,9 @@ @unwrap_spec(form=str) def normalize(self, space, form, w_unistr): if not space.isinstance_w(w_unistr, space.w_unicode): - raise OperationError(space.w_TypeError, space.wrap('argument 2 must be unicode')) + raise oefmt( + space.w_TypeError, 'argument 2 must be unicode, not %T', + w_unistr) if form == 'NFC': composed = True decomposition = self._canon_decomposition diff --git a/pypy/module/unicodedata/test/test_unicodedata.py b/pypy/module/unicodedata/test/test_unicodedata.py --- a/pypy/module/unicodedata/test/test_unicodedata.py +++ b/pypy/module/unicodedata/test/test_unicodedata.py @@ -78,10 +78,15 @@ import unicodedata assert unicodedata.lookup("GOTHIC LETTER FAIHU") == u'\U00010346' - def test_normalize(self): + def test_normalize_bad_argcount(self): import unicodedata raises(TypeError, unicodedata.normalize, 'x') + def test_normalize_nonunicode(self): + import unicodedata + exc_info = raises(TypeError, unicodedata.normalize, 'NFC', 'x') + assert str(exc_info.value).endswith('must be unicode, not str') + @py.test.mark.skipif("sys.maxunicode < 0x10ffff") def test_normalize_wide(self): import unicodedata @@ -103,6 +108,12 @@ # For no reason, unicodedata.mirrored() returns an int, not a bool assert repr(unicodedata.mirrored(u' ')) == '0' - def test_bidirectional(self): + def test_bidirectional_not_one_character(self): import unicodedata - raises(TypeError, unicodedata.bidirectional, u'xx') + exc_info = raises(TypeError, unicodedata.bidirectional, u'xx') + assert str(exc_info.value) == 'need a single Unicode character as parameter' + + def test_bidirectional_not_one_character(self): + import unicodedata + exc_info = raises(TypeError, unicodedata.bidirectional, 'x') + assert str(exc_info.value).endswith('must be unicode, not str') _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit