Author: Matti Picus <[email protected]>
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
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit