summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMariatta <Mariatta@users.noreply.github.com>2017-04-20 05:59:20 (GMT)
committerGitHub <noreply@github.com>2017-04-20 05:59:20 (GMT)
commit58f3c9dc8f5626abe09ac9738c34f6ba99ce2972 (patch)
tree290697b9a9bedc1bd5bcf14334a7798d716d09df
parent6dbdedb0b18a5ca850ab8ce512fda24d5a9d0688 (diff)
downloadcpython-58f3c9dc8f5626abe09ac9738c34f6ba99ce2972.zip
cpython-58f3c9dc8f5626abe09ac9738c34f6ba99ce2972.tar.gz
cpython-58f3c9dc8f5626abe09ac9738c34f6ba99ce2972.tar.bz2
bpo-30109: Fix reindent.py (GH-1207)
Skip the file if it has bad encoding.
-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)