summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMariatta <Mariatta@users.noreply.github.com>2017-04-20 14:12:37 (GMT)
committerGitHub <noreply@github.com>2017-04-20 14:12:37 (GMT)
commit430020500c56259d31e07d32771f017952bad4e0 (patch)
tree83388dff5aeb5b1aa04011193cdcec41843f3aca
parentdf5df13fdc3a71bcf2295acc2cba7f22cfe2d669 (diff)
downloadcpython-430020500c56259d31e07d32771f017952bad4e0.zip
cpython-430020500c56259d31e07d32771f017952bad4e0.tar.gz
cpython-430020500c56259d31e07d32771f017952bad4e0.tar.bz2
[3.6] bpo-30109: Fix reindent.py (GH-1207) (GH-1208)
Skip the file if it has bad encoding. (cherry picked from commit 58f3c9dc8f5626abe09ac9738c34f6ba99ce2972)
-rw-r--r--Lib/test/test_tools/test_reindent.py7
-rwxr-xr-xTools/scripts/reindent.py6
2 files changed, 12 insertions, 1 deletions
diff --git a/Lib/test/test_tools/test_reindent.py b/Lib/test/test_tools/test_reindent.py
index d7c20e1..34df0c5 100644
--- a/Lib/test/test_tools/test_reindent.py
+++ b/Lib/test/test_tools/test_reindent.py
@@ -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()
diff --git a/Tools/scripts/reindent.py b/Tools/scripts/reindent.py
index 18424de..f6dadaa 100755
--- a/Tools/scripts/reindent.py
+++ b/Tools/scripts/reindent.py
@@ -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)