]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-39663: IDLE: Add additional tests for pyparse (GH-18536)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Tue, 18 Feb 2020 03:05:14 +0000 (19:05 -0800)
committerGitHub <noreply@github.com>
Tue, 18 Feb 2020 03:05:14 +0000 (19:05 -0800)
Test when find_good_parse_start should return 0.

Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
(cherry picked from commit ffda25f6b825f3dee493b6f0746266a4dd6989f0)

Co-authored-by: Cheryl Sabella <cheryl.sabella@gmail.com>
Lib/idlelib/NEWS.txt
Lib/idlelib/idle_test/test_pyparse.py
Misc/NEWS.d/next/IDLE/2020-02-17-21-09-03.bpo-39663.wexcsH.rst [new file with mode: 0644]

index 3b1168693c4b5123bc9b13c725a18a0c7be25f82..3c3367244852acb38a27d124c7552fa052d29685 100644 (file)
@@ -3,6 +3,8 @@ Released on 2019-12-16?
 ======================================
 
 
+bpo-39663: Add tests for pyparse find_good_parse_start().
+
 bpo-39600: Remove duplicate font names from configuration list.
 
 bpo-38792: Close a shell calltip if a :exc:`KeyboardInterrupt`
index a2b13c38d80d5f9eece7ff3a85e8406f9965bf20..f21baf7534420a9d014c9dde3920339e1ff14066 100644 (file)
@@ -58,6 +58,18 @@ class PyParseTest(unittest.TestCase):
         p = self.parser
         setcode = p.set_code
         start = p.find_good_parse_start
+        def char_in_string_false(index): return False
+
+        # First line starts with 'def' and ends with ':', then 0 is the pos.
+        setcode('def spam():\n')
+        eq(start(char_in_string_false), 0)
+
+        # First line begins with a keyword in the list and ends
+        # with an open brace, then 0 is the pos.  This is how
+        # hyperparser calls this function as the newline is not added
+        # in the editor, but rather on the call to setcode.
+        setcode('class spam( ' + ' \n')
+        eq(start(char_in_string_false), 0)
 
         # Split def across lines.
         setcode('"""This is a module docstring"""\n'
@@ -79,7 +91,7 @@ class PyParseTest(unittest.TestCase):
 
         # Make all text look like it's not in a string.  This means that it
         # found a good start position.
-        eq(start(is_char_in_string=lambda index: False), 44)
+        eq(start(char_in_string_false), 44)
 
         # If the beginning of the def line is not in a string, then it
         # returns that as the index.
@@ -98,7 +110,7 @@ class PyParseTest(unittest.TestCase):
                 '    def __init__(self, a, b=True):\n'
                 '        pass\n'
                 )
-        eq(start(is_char_in_string=lambda index: False), 44)
+        eq(start(char_in_string_false), 44)
         eq(start(is_char_in_string=lambda index: index > 44), 44)
         eq(start(is_char_in_string=lambda index: index >= 44), 33)
         # When the def line isn't split, this returns which doesn't match the
diff --git a/Misc/NEWS.d/next/IDLE/2020-02-17-21-09-03.bpo-39663.wexcsH.rst b/Misc/NEWS.d/next/IDLE/2020-02-17-21-09-03.bpo-39663.wexcsH.rst
new file mode 100644 (file)
index 0000000..19e1632
--- /dev/null
@@ -0,0 +1 @@
+Add tests for pyparse find_good_parse_start().