Author: Matti Picus <matti.pi...@gmail.com> Branch: unicode-utf8-py3 Changeset: r95062:b6ec3298a53a Date: 2018-08-31 14:31 +0200 http://bitbucket.org/pypy/pypy/changeset/b6ec3298a53a/
Log: fix test_ztranslation by creatng FakeObjSpace W_UnicodeObject diff --git a/pypy/interpreter/baseobjspace.py b/pypy/interpreter/baseobjspace.py --- a/pypy/interpreter/baseobjspace.py +++ b/pypy/interpreter/baseobjspace.py @@ -1774,7 +1774,8 @@ def convert_arg_to_w_unicode(self, w_obj, strict=None): # XXX why convert_to_w_unicode does something slightly different? from pypy.objspace.std.unicodeobject import W_UnicodeObject - assert not hasattr(self, 'is_fake_objspace') + # for z_translation tests + if hasattr(self, 'is_fake_objspace'): return self.newtext("foobar") return W_UnicodeObject.convert_arg_to_w_unicode(self, w_obj, strict) def utf8_len_w(self, w_obj): @@ -1785,6 +1786,8 @@ # Like utf8_w(), but only works if w_obj is really of type # 'unicode'. On Python 3 this is the same as utf8_w(). from pypy.objspace.std.unicodeobject import W_UnicodeObject + # for z_translation tests + if hasattr(self, 'is_fake_objspace'): return self.newtext("foobar") if not isinstance(w_obj, W_UnicodeObject): raise oefmt(self.w_TypeError, "argument must be a unicode") return self.utf8_w(w_obj) diff --git a/pypy/interpreter/unicodehelper.py b/pypy/interpreter/unicodehelper.py --- a/pypy/interpreter/unicodehelper.py +++ b/pypy/interpreter/unicodehelper.py @@ -60,9 +60,6 @@ return '', endingpos raise ValueError -def convert_arg_to_w_unicode(space, w_arg, strict=None): - return space.convert_arg_to_w_unicode(w_arg) - # ____________________________________________________________ def fsdecode(space, w_string): diff --git a/pypy/module/_codecs/interp_codecs.py b/pypy/module/_codecs/interp_codecs.py --- a/pypy/module/_codecs/interp_codecs.py +++ b/pypy/module/_codecs/interp_codecs.py @@ -249,7 +249,7 @@ if space.isinstance_w(w_exc, space.w_UnicodeEncodeError): w_obj = space.getattr(w_exc, space.newtext('object')) space.realutf8_w(w_obj) # weeoes - w_obj = unicodehelper.convert_arg_to_w_unicode(space, w_obj) + w_obj = space.convert_arg_to_w_unicode(w_obj) start = space.int_w(space.getattr(w_exc, space.newtext('start'))) w_end = space.getattr(w_exc, space.newtext('end')) end = space.int_w(w_end) @@ -308,7 +308,7 @@ if space.isinstance_w(w_exc, space.w_UnicodeEncodeError): w_obj = space.getattr(w_exc, space.newtext('object')) space.realutf8_w(w_obj) # for errors - w_obj = unicodehelper.convert_arg_to_w_unicode(space, w_obj) + w_obj = space.convert_arg_to_w_unicode(w_obj) start = space.int_w(space.getattr(w_exc, space.newtext('start'))) w_end = space.getattr(w_exc, space.newtext('end')) end = space.int_w(w_end) @@ -646,7 +646,7 @@ @unwrap_spec(errors='text_or_none') def wrap_encoder(space, w_arg, errors="strict"): # w_arg is a W_Unicode or W_Bytes? - w_arg = unicodehelper.convert_arg_to_w_unicode(space, w_arg, rname) + w_arg = space.convert_arg_to_w_unicode(w_arg, errors) if errors is None: errors = 'strict' state = space.fromcache(CodecState) @@ -912,7 +912,7 @@ mapping = Charmap_Encode(space, w_mapping) state = space.fromcache(CodecState) - w_uni = unicodehelper.convert_arg_to_w_unicode(space, w_unicode) + w_uni = space.convert_arg_to_w_unicode(w_unicode) result = unicodehelper.utf8_encode_charmap( space.utf8_w(w_uni), errors, state.encode_error_handler, mapping) return space.newtuple([space.newbytes(result), space.newint(w_uni._len())]) diff --git a/pypy/objspace/fake/objspace.py b/pypy/objspace/fake/objspace.py --- a/pypy/objspace/fake/objspace.py +++ b/pypy/objspace/fake/objspace.py @@ -68,6 +68,15 @@ def append(self, w_other): pass +class W_UnicodeOjbect(W_MyObject): + _length = 21 + _utf8 = 'foobar' + def _index_to_byte(self, at): + return NonConstant(42) + def _len(self): + return self._length + + class W_MyType(W_MyObject): name = "foobar" flag_map_or_seq = '?' @@ -220,7 +229,7 @@ @specialize.argtype(1) def newtext(self, x, lgt=-1): - return w_some_obj() + return W_UnicodeOjbect() newtext_or_none = newtext newfilename = newtext _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit