summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 d7c20e1e5c..34df0c5d51 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 18424dea14..f6dadaac5a 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)