Kaydet (Commit) e96ac3a3 authored tarafından Martin v. Löwis's avatar Martin v. Löwis

Merged revisions 78991-78992,78994 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r78991 | martin.v.loewis | 2010-03-16 12:03:13 +0100 (Di, 16 Mär 2010) | 9 lines

  Merged revisions 78976 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r78976 | martin.v.loewis | 2010-03-15 14:00:17 +0100 (Mo, 15 Mär 2010) | 1 line

    Issue #6716: Quote -x arguments of compileall in MSI installer.
  ........
................
  r78992 | martin.v.loewis | 2010-03-16 14:19:21 +0100 (Di, 16 Mär 2010) | 2 lines

  Issue #6716/2: Backslash-replace error output in compilall.
................
  r78994 | martin.v.loewis | 2010-03-16 17:19:47 +0100 (Di, 16 Mär 2010) | 1 line

  Issue #6716/3: Exclude 2to3 tests from compileall.
................
üst 1d6af707
...@@ -77,7 +77,10 @@ def compile_dir(dir, maxlevels=10, ddir=None, ...@@ -77,7 +77,10 @@ def compile_dir(dir, maxlevels=10, ddir=None,
print('*** Error compiling', fullname, '...') print('*** Error compiling', fullname, '...')
else: else:
print('*** ', end='') print('*** ', end='')
print(err.msg) # escape non-printable characters in msg
msg = err.msg.encode(sys.stdout.encoding, 'backslashreplace')
msg = msg.decode(sys.stdout.encoding)
print(msg)
success = 0 success = 0
except (SyntaxError, UnicodeError, IOError) as e: except (SyntaxError, UnicodeError, IOError) as e:
if quiet: if quiet:
......
import sys
import compileall import compileall
import imp import imp
import os import os
...@@ -9,6 +10,7 @@ import tempfile ...@@ -9,6 +10,7 @@ import tempfile
import time import time
from test import support from test import support
import unittest import unittest
import io
class CompileallTests(unittest.TestCase): class CompileallTests(unittest.TestCase):
...@@ -55,8 +57,30 @@ class CompileallTests(unittest.TestCase): ...@@ -55,8 +57,30 @@ class CompileallTests(unittest.TestCase):
self.recreation_check(b'\0\0\0\0') self.recreation_check(b'\0\0\0\0')
class EncodingTest(unittest.TestCase):
'Issue 6716: compileall should escape source code when printing errors to stdout.'
def setUp(self):
self.directory = tempfile.mkdtemp()
self.source_path = os.path.join(self.directory, '_test.py')
with open(self.source_path, 'w', encoding='utf-8') as file:
file.write('# -*- coding: utf-8 -*-\n')
file.write('print u"\u20ac"\n')
def tearDown(self):
shutil.rmtree(self.directory)
def test_error(self):
try:
orig_stdout = sys.stdout
sys.stdout = io.TextIOWrapper(io.BytesIO(),encoding='ascii')
compileall.compile_dir(self.directory)
finally:
sys.stdout = orig_stdout
def test_main(): def test_main():
support.run_unittest(CompileallTests) support.run_unittest(CompileallTests,
EncodingTest)
if __name__ == "__main__": if __name__ == "__main__":
......
...@@ -9,9 +9,17 @@ What's New in Python 3.1.3? ...@@ -9,9 +9,17 @@ What's New in Python 3.1.3?
*Release date: 20XX-XX-XX* *Release date: 20XX-XX-XX*
Library
-------
- Issue #6716/2: Backslash-replace error output in compilall.
Build Build
----- -----
- Issue #6716: Quote -x arguments of compileall in MSI installer.
Exclude 2to3 tests from compileall.
- Issue #1628484: The Makefile doesn't ignore the CFLAGS environment - Issue #1628484: The Makefile doesn't ignore the CFLAGS environment
variable anymore. It also forwards the LDFLAGS settings to the linker variable anymore. It also forwards the LDFLAGS settings to the linker
when building a shared library. when building a shared library.
......
...@@ -403,7 +403,7 @@ def add_ui(db): ...@@ -403,7 +403,7 @@ def add_ui(db):
("VerdanaRed9", "Verdana", 9, 255, 0), ("VerdanaRed9", "Verdana", 9, 255, 0),
]) ])
compileargs = r'-Wi "[TARGETDIR]Lib\compileall.py" -f -x bad_coding|badsyntax|site-packages|py2_ "[TARGETDIR]Lib"' compileargs = r'-Wi "[TARGETDIR]Lib\compileall.py" -f -x "bad_coding|badsyntax|site-packages|py2_|lib2to3\\tests" "[TARGETDIR]Lib"'
lib2to3args = r'-c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()"' lib2to3args = r'-c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()"'
# See "CustomAction Table" # See "CustomAction Table"
add_data(db, "CustomAction", [ add_data(db, "CustomAction", [
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment