[Python-checkins] bpo-39663: IDLE: Add additional tests for pyparse (GH-18536)

Miss Islington (bot) webhook-mailer at python.org
Mon Feb 17 22:05:43 EST 2020


https://github.com/python/cpython/commit/7fd752c1bc637aeca2bd122d07c0ebc379d0d8ca
commit: 7fd752c1bc637aeca2bd122d07c0ebc379d0d8ca
branch: 3.8
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: GitHub <noreply at github.com>
date: 2020-02-17T19:05:39-08:00
summary:

bpo-39663: IDLE: Add additional tests for pyparse (GH-18536)


Test when find_good_parse_start should return 0.

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

Co-authored-by: Cheryl Sabella <cheryl.sabella at gmail.com>

files:
A Misc/NEWS.d/next/IDLE/2020-02-17-21-09-03.bpo-39663.wexcsH.rst
M Lib/idlelib/NEWS.txt
M Lib/idlelib/idle_test/test_pyparse.py

diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
index 9cf563401259d..fe1706ed5a8be 100644
--- a/Lib/idlelib/NEWS.txt
+++ b/Lib/idlelib/NEWS.txt
@@ -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`
diff --git a/Lib/idlelib/idle_test/test_pyparse.py b/Lib/idlelib/idle_test/test_pyparse.py
index a2b13c38d80d5..f21baf7534420 100644
--- a/Lib/idlelib/idle_test/test_pyparse.py
+++ b/Lib/idlelib/idle_test/test_pyparse.py
@@ -58,6 +58,18 @@ def test_find_good_parse_start(self):
         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 @@ def test_find_good_parse_start(self):
 
         # 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 @@ def test_find_good_parse_start(self):
                 '    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
index 0000000000000..19e16329ce0a0
--- /dev/null
+++ b/Misc/NEWS.d/next/IDLE/2020-02-17-21-09-03.bpo-39663.wexcsH.rst
@@ -0,0 +1 @@
+Add tests for pyparse find_good_parse_start().



More information about the Python-checkins mailing list