]> granicus.if.org Git - python/commitdiff
bpo-30109: Fix reindent.py (GH-1207)
authorMariatta <Mariatta@users.noreply.github.com>
Thu, 20 Apr 2017 05:59:20 +0000 (22:59 -0700)
committerGitHub <noreply@github.com>
Thu, 20 Apr 2017 05:59:20 +0000 (22:59 -0700)
Skip the file if it has bad encoding.

Lib/test/test_tools/test_reindent.py
Tools/scripts/reindent.py

index d7c20e1e5c7206239639940a5ea606f704f1f40c..34df0c5d5119047dee35300b746144618f33572d 100644 (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()
index 18424dea1437acab186112a36ab31d47d79208a2..f6dadaac5a52060d7f76fafddd4c4d1448ba4246 100755 (executable)
@@ -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)