bpo-30109: Fix reindent.py (GH-1207)

Skip the file if it has bad encoding.
This commit is contained in:
Mariatta 2017-04-19 22:59:20 -07:00 committed by GitHub
parent 6dbdedb0b1
commit 58f3c9dc8f
2 changed files with 12 additions and 1 deletions

View File

@ -7,6 +7,7 @@ Tools directory of a Python checkout or tarball, such as reindent.py.
import os import os
import unittest import unittest
from test.support.script_helper import assert_python_ok from test.support.script_helper import assert_python_ok
from test.support import findfile
from test.test_tools import scriptsdir, skip_if_missing from test.test_tools import scriptsdir, skip_if_missing
@ -23,6 +24,12 @@ class ReindentTests(unittest.TestCase):
self.assertEqual(out, b'') self.assertEqual(out, b'')
self.assertGreater(err, b'') self.assertGreater(err, b'')
def test_reindent_file_with_bad_encoding(self):
bad_coding_path = findfile('bad_coding.py')
rc, out, err = assert_python_ok(self.script, '-r', bad_coding_path)
self.assertEqual(out, b'')
self.assertNotEqual(err, b'')
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()

View File

@ -118,7 +118,11 @@ def check(file):
if verbose: if verbose:
print("checking", file, "...", end=' ') print("checking", file, "...", end=' ')
with open(file, 'rb') as f: with open(file, 'rb') as f:
encoding, _ = tokenize.detect_encoding(f.readline) try:
encoding, _ = tokenize.detect_encoding(f.readline)
except SyntaxError as se:
errprint("%s: SyntaxError: %s" % (file, str(se)))
return
try: try:
with open(file, encoding=encoding) as f: with open(file, encoding=encoding) as f:
r = Reindenter(f) r = Reindenter(f)