[pypy-commit] pypy py3k: default stderr to backslashreplace
pjenvey
noreply at buildbot.pypy.org
Mon Feb 11 22:45:20 CET 2013
Author: Philip Jenvey <pjenvey at underboss.org>
Branch: py3k
Changeset: r61104:b745bd223983
Date: 2013-02-11 13:43 -0800
http://bitbucket.org/pypy/pypy/changeset/b745bd223983/
Log: default stderr to backslashreplace
diff --git a/pypy/interpreter/app_main.py b/pypy/interpreter/app_main.py
--- a/pypy/interpreter/app_main.py
+++ b/pypy/interpreter/app_main.py
@@ -251,7 +251,7 @@
sys.stdout = sys.__stdout__ = create_stdio(
1, True, "<stdout>", encoding, errors, unbuffered)
sys.stderr = sys.__stderr__ = create_stdio(
- 2, True, "<stderr>", encoding, errors, unbuffered)
+ 2, True, "<stderr>", encoding, 'backslashreplace', unbuffered)
def create_stdio(fd, writing, name, encoding, errors, unbuffered):
diff --git a/pypy/interpreter/test2/test_app_main.py b/pypy/interpreter/test2/test_app_main.py
--- a/pypy/interpreter/test2/test_app_main.py
+++ b/pypy/interpreter/test2/test_app_main.py
@@ -880,6 +880,19 @@
assert status == 1
assert data.startswith("15\xe2\x82\xac")
+ def test_stderr_backslashreplace(self):
+ if sys.version_info < (2, 7):
+ skip("test required Python >= 2.7")
+ p = getscript_in_dir("""
+ import sys
+ sys.exit('15\u20ac {}'.format((sys.stdout.errors, sys.stderr.errors)))
+ """)
+ env = os.environ.copy()
+ env["PYTHONIOENCODING"] = 'ascii'
+ data, status = self.run_with_status_code(p, env=env)
+ assert status == 1
+ assert data.startswith("15\\u20ac ('strict', 'backslashreplace')")
+
class TestAppMain:
def test_print_info(self):
diff --git a/pypy/module/sys/__init__.py b/pypy/module/sys/__init__.py
--- a/pypy/module/sys/__init__.py
+++ b/pypy/module/sys/__init__.py
@@ -121,6 +121,7 @@
closefd=False)
sys.stdout.buffer.raw.name = "<stdout>"
sys.stderr = sys.__stderr__ = io.open(2, "w", encoding="ascii",
+ errors="backslashreplace",
closefd=False)
sys.stderr.buffer.raw.name = "<stderr>"
""")
diff --git a/pypy/module/sys/test/test_sysmodule.py b/pypy/module/sys/test/test_sysmodule.py
--- a/pypy/module/sys/test/test_sysmodule.py
+++ b/pypy/module/sys/test/test_sysmodule.py
@@ -96,6 +96,7 @@
assert isinstance(sys.__stdout__, io.IOBase)
assert isinstance(sys.__stderr__, io.IOBase)
assert isinstance(sys.__stdin__, io.IOBase)
+ assert sys.__stderr__.errors == 'backslashreplace'
if self.appdirect and not isinstance(sys.stdin, io.IOBase):
return
@@ -103,6 +104,7 @@
assert isinstance(sys.stdout, io.IOBase)
assert isinstance(sys.stderr, io.IOBase)
assert isinstance(sys.stdin, io.IOBase)
+ assert sys.stderr.errors == 'backslashreplace'
def test_getfilesystemencoding(self):
import sys
More information about the pypy-commit
mailing list