Author: Philip Jenvey <[email protected]>
Branch: py3k
Changeset: r64786:e7eccdeaa126
Date: 2013-06-04 18:31 -0700
http://bitbucket.org/pypy/pypy/changeset/e7eccdeaa126/
Log: properly decode SyntaxError source text
diff --git a/pypy/interpreter/pyparser/error.py
b/pypy/interpreter/pyparser/error.py
--- a/pypy/interpreter/pyparser/error.py
+++ b/pypy/interpreter/pyparser/error.py
@@ -12,15 +12,19 @@
self.lastlineno = lastlineno
def wrap_info(self, space):
- if self.filename is None:
- w_filename = space.w_None
- else:
+ w_text = w_filename = space.w_None
+ if self.text is not None:
+ from rpython.rlib.runicode import str_decode_utf_8
+ # self.text may not be UTF-8 in case of decoding errors
+ w_text = space.wrap(str_decode_utf_8(self.text, len(self.text),
+ 'replace')[0])
+ if self.filename is not None:
w_filename = space.fsdecode(space.wrapbytes(self.filename))
return space.newtuple([space.wrap(self.msg),
space.newtuple([w_filename,
space.wrap(self.lineno),
space.wrap(self.offset),
- space.wrap(self.text),
+ space.wrap(w_text),
space.wrap(self.lastlineno)])])
def __str__(self):
diff --git a/pypy/interpreter/test/test_compiler.py
b/pypy/interpreter/test/test_compiler.py
--- a/pypy/interpreter/test/test_compiler.py
+++ b/pypy/interpreter/test/test_compiler.py
@@ -853,7 +853,6 @@
"""
def test_cpython_issue2301(self):
- skip('XXX')
try:
compile(b"# coding: utf7\nprint '+XnQ-'", "dummy", "exec")
except SyntaxError as v:
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit