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 unittest
from test.support.script_helper import assert_python_ok
from test.support import findfile
from test.test_tools import scriptsdir, skip_if_missing
@ -23,6 +24,12 @@ class ReindentTests(unittest.TestCase):
self.assertEqual(out, 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__':
unittest.main()

View File

@ -118,7 +118,11 @@ def check(file):
if verbose:
print("checking", file, "...", end=' ')
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:
with open(file, encoding=encoding) as f:
r = Reindenter(f)