music / rpms / pyflakes

Forked from rpms/pyflakes 3 years ago
Clone
Blob Blame History Raw
From 3735b217a7bc167fd0fbf9bec9f240603e9f6a25 Mon Sep 17 00:00:00 2001
From: Anthony Sottile <asottile@umich.edu>
Date: Thu, 20 May 2021 07:23:19 -0700
Subject: [PATCH] fix syntax error offsets for python 3.10 (#635)

---
 pyflakes/test/test_api.py | 45 ++++++++++++++++++++++++++-------------
 1 file changed, 30 insertions(+), 15 deletions(-)

diff --git a/pyflakes/test/test_api.py b/pyflakes/test/test_api.py
index 128aa69..1639c92 100644
--- a/pyflakes/test/test_api.py
+++ b/pyflakes/test/test_api.py
@@ -441,7 +441,7 @@ def baz():
             evaluate(source)
         except SyntaxError:
             e = sys.exc_info()[1]
-            if not PYPY:
+            if not PYPY and sys.version_info < (3, 10):
                 self.assertTrue(e.text.count('\n') > 1)
         else:
             self.fail()
@@ -449,10 +449,17 @@ def baz():
         with self.makeTempFile(source) as sourcePath:
             if PYPY:
                 message = 'end of file (EOF) while scanning triple-quoted string literal'
+            elif sys.version_info >= (3, 10):
+                message = 'unterminated triple-quoted string literal (detected at line 8)'  # noqa: E501
             else:
                 message = 'invalid syntax'
 
-            column = 8 if sys.version_info >= (3, 8) else 11
+            if sys.version_info >= (3, 10):
+                column = 12
+            elif sys.version_info >= (3, 8):
+                column = 8
+            else:
+                column = 11
             self.assertHasErrors(
                 sourcePath,
                 ["""\
@@ -468,21 +475,25 @@ def baz():
         """
         with self.makeTempFile("def foo(") as sourcePath:
             if PYPY:
-                result = """\
-%s:1:7: parenthesis is never closed
-def foo(
-      ^
-""" % (sourcePath,)
+                msg = 'parenthesis is never closed'
+            elif sys.version_info >= (3, 10):
+                msg = "'(' was never closed"
             else:
-                result = """\
-%s:1:9: unexpected EOF while parsing
-def foo(
-        ^
-""" % (sourcePath,)
+                msg = 'unexpected EOF while parsing'
 
-            self.assertHasErrors(
-                sourcePath,
-                [result])
+            if PYPY:
+                column = 7
+            elif sys.version_info >= (3, 10):
+                column = 8
+            else:
+                column = 9
+
+            spaces = ' ' * (column - 1)
+            expected = '{}:1:{}: {}\ndef foo(\n{}^\n'.format(
+                sourcePath, column, msg, spaces
+            )
+
+            self.assertHasErrors(sourcePath, [expected])
 
     def test_eofSyntaxErrorWithTab(self):
         """
@@ -515,6 +526,10 @@ def foo(bar=baz, bax):
             if ERROR_HAS_LAST_LINE:
                 if PYPY and sys.version_info >= (3,):
                     column = 7
+                elif sys.version_info >= (3, 10):
+                    column = 18
+                elif sys.version_info >= (3, 9):
+                    column = 21
                 elif sys.version_info >= (3, 8):
                     column = 9
                 else:
-- 
2.31.1