Issue #11169: compileall module uses repr() to format filenames and paths to

escape surrogate characters and show spaces.
This commit is contained in:
Victor Stinner 2011-05-11 00:36:28 +02:00
parent 1eb4f28c6d
commit 530712625b
3 changed files with 9 additions and 6 deletions

View File

@ -35,11 +35,11 @@ def compile_dir(dir, maxlevels=10, ddir=None, force=False, rx=None,
optimize: optimization level or -1 for level of the interpreter optimize: optimization level or -1 for level of the interpreter
""" """
if not quiet: if not quiet:
print('Listing', dir, '...') print('Listing {!r}...'.format(dir))
try: try:
names = os.listdir(dir) names = os.listdir(dir)
except os.error: except os.error:
print("Can't list", dir) print("Can't list {!r}".format(dir))
names = [] names = []
names.sort() names.sort()
success = 1 success = 1
@ -109,13 +109,13 @@ def compile_file(fullname, ddir=None, force=False, rx=None, quiet=False,
except IOError: except IOError:
pass pass
if not quiet: if not quiet:
print('Compiling', fullname, '...') print('Compiling {!r}...'.format(fullname))
try: try:
ok = py_compile.compile(fullname, cfile, dfile, True, ok = py_compile.compile(fullname, cfile, dfile, True,
optimize=optimize) optimize=optimize)
except py_compile.PyCompileError as err: except py_compile.PyCompileError as err:
if quiet: if quiet:
print('*** Error compiling', fullname, '...') print('*** Error compiling {!r}...'.format(fullname))
else: else:
print('*** ', end='') print('*** ', end='')
# escape non-printable characters in msg # escape non-printable characters in msg
@ -126,7 +126,7 @@ def compile_file(fullname, ddir=None, force=False, rx=None, quiet=False,
success = 0 success = 0
except (SyntaxError, UnicodeError, IOError) as e: except (SyntaxError, UnicodeError, IOError) as e:
if quiet: if quiet:
print('*** Error compiling', fullname, '...') print('*** Error compiling {!r}...'.format(fullname))
else: else:
print('*** ', end='') print('*** ', end='')
print(e.__class__.__name__ + ':', e) print(e.__class__.__name__ + ':', e)

View File

@ -345,7 +345,7 @@ class CommandLineTests(unittest.TestCase):
def test_invalid_arg_produces_message(self): def test_invalid_arg_produces_message(self):
out = self.assertRunOK('badfilename') out = self.assertRunOK('badfilename')
self.assertRegex(out, b"Can't list badfilename") self.assertRegex(out, b"Can't list 'badfilename'")
def test_main(): def test_main():

View File

@ -86,6 +86,9 @@ Core and Builtins
Library Library
------- -------
- Issue #11169: compileall module uses repr() to format filenames and paths to
escape surrogate characters and show spaces.
- Issue #10419, #6011: build_scripts command of distutils handles correctly - Issue #10419, #6011: build_scripts command of distutils handles correctly
non-ASCII path (path to the Python executable). Open and write the script in non-ASCII path (path to the Python executable). Open and write the script in
binary mode, but ensure that the shebang is decodable from UTF-8 and from the binary mode, but ensure that the shebang is decodable from UTF-8 and from the