diff options
author | Mariatta <Mariatta@users.noreply.github.com> | 2017-04-20 14:12:37 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-20 14:12:37 (GMT) |
commit | 430020500c56259d31e07d32771f017952bad4e0 (patch) | |
tree | 83388dff5aeb5b1aa04011193cdcec41843f3aca | |
parent | df5df13fdc3a71bcf2295acc2cba7f22cfe2d669 (diff) | |
download | cpython-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.py | 7 | ||||
-rwxr-xr-x | Tools/scripts/reindent.py | 6 |
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) |