Author: fijal
Branch: unicode-utf8
Changeset: r93096:d17afc06eedf
Date: 2017-11-20 15:15 +0100
http://bitbucket.org/pypy/pypy/changeset/d17afc06eedf/

Log:    fixes

diff --git a/pypy/interpreter/test/test_unicodehelper.py 
b/pypy/interpreter/test/test_unicodehelper.py
--- a/pypy/interpreter/test/test_unicodehelper.py
+++ b/pypy/interpreter/test/test_unicodehelper.py
@@ -63,3 +63,8 @@
 def test_unicode_raw_escape(u):
     r = uh.utf8_encode_raw_unicode_escape(u.encode("utf8"), 'strict')
     assert r == u.encode("raw-unicode-escape")
+
+@given(strategies.text())
+def test_unicode_escape(u):
+    r = uh.utf8_encode_unicode_escape(u.encode("utf8"), "strict")
+    assert r == u.encode("unicode-escape")
diff --git a/pypy/interpreter/unicodehelper.py 
b/pypy/interpreter/unicodehelper.py
--- a/pypy/interpreter/unicodehelper.py
+++ b/pypy/interpreter/unicodehelper.py
@@ -23,13 +23,12 @@
 @specialize.memo()
 def encode_error_handler(space):
     # Fast version of the "strict" errors handler.
-    def raise_unicode_exception_encode(errors, encoding, msg, u, u_len,
+    def raise_unicode_exception_encode(errors, encoding, msg, utf8,
                                        startingpos, endingpos):
-        # XXX fix once we stop using runicode.py
-        flag = _get_flag(u.decode('utf8'))
+        u_len, flag = rutf8.check_utf8(utf8)
         raise OperationError(space.w_UnicodeEncodeError,
                              space.newtuple([space.newtext(encoding),
-                                             space.newutf8(u, u_len, flag),
+                                             space.newutf8(utf8, u_len, flag),
                                              space.newint(startingpos),
                                              space.newint(endingpos),
                                              space.newtext(msg)]))
@@ -578,13 +577,15 @@
         digits = 4 if s[pos] == 'u' else 8
         message = "truncated \\uXXXX"
         pos += 1
-        pos = hexescape(result, s, pos, digits,
+        pos, _, _ = hexescape(result, s, pos, digits,
                         "rawunicodeescape", errorhandler, message, errors)
 
     r = result.build()
     lgt, flag = rutf8.check_utf8(r, True)
     return r, pos, lgt, flag
 
+_utf8_encode_unicode_escape = rutf8.make_utf8_escape_function()
+
 
 TABLE = '0123456789abcdef'
 
@@ -620,6 +621,9 @@
     return result.build()
 
 
+def utf8_encode_unicode_escape(s, errors):
+    return _utf8_encode_unicode_escape(s)
+
 # ____________________________________________________________
 # utf-7
 
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to