summaryrefslogtreecommitdiffstats
path: root/Lib/idlelib
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2024-01-06 06:53:34 (GMT)
committerGitHub <noreply@github.com>2024-01-06 06:53:34 (GMT)
commit4d5328cbebc441ed2539ad3b2ea30a01eb059ef7 (patch)
treee6d404839f60c87fe3831bd5fa79caf5ac21056e /Lib/idlelib
parent6d9af666165a3a69618ee940631ca6600d2a2027 (diff)
downloadcpython-4d5328cbebc441ed2539ad3b2ea30a01eb059ef7.zip
cpython-4d5328cbebc441ed2539ad3b2ea30a01eb059ef7.tar.gz
cpython-4d5328cbebc441ed2539ad3b2ea30a01eb059ef7.tar.bz2
[3.12] gh-113729: Fix IDLE's Help -> "IDLE Help" menu bug in 3.12.1 and 3.11.7 (GH-113731) (#113765)
(cherry picked from commit 66f39648154214621d388f519210442d5fce738f) Co-authored-by: Ronald Oussoren <ronaldoussoren@mac.com> Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
Diffstat (limited to 'Lib/idlelib')
-rw-r--r--Lib/idlelib/News3.txt2
-rw-r--r--Lib/idlelib/help.py13
-rw-r--r--Lib/idlelib/idle_test/htest.py14
-rw-r--r--Lib/idlelib/idle_test/test_help.py16
4 files changed, 25 insertions, 20 deletions
diff --git a/Lib/idlelib/News3.txt b/Lib/idlelib/News3.txt
index a0624ab..dd2a30d 100644
--- a/Lib/idlelib/News3.txt
+++ b/Lib/idlelib/News3.txt
@@ -4,6 +4,8 @@ Released after 2023-10-02
=========================
+gh-113729: Fix the "Help -> IDLE Doc" menu bug in 3.11.7 and 3.12.1.
+
gh-57795: Enter selected text into the Find box when opening
a Replace dialog. Patch by Roger Serwy and Zackery Spytz.
diff --git a/Lib/idlelib/help.py b/Lib/idlelib/help.py
index 3cc7e36..dfccfcb 100644
--- a/Lib/idlelib/help.py
+++ b/Lib/idlelib/help.py
@@ -241,12 +241,13 @@ class HelpWindow(Toplevel):
Toplevel.__init__(self, parent)
self.wm_title(title)
self.protocol("WM_DELETE_WINDOW", self.destroy)
- HelpFrame(self, filename).grid(column=0, row=0, sticky='nsew')
+ self.frame = HelpFrame(self, filename)
+ self.frame.grid(column=0, row=0, sticky='nsew')
self.grid_columnconfigure(0, weight=1)
self.grid_rowconfigure(0, weight=1)
-def copy_strip():
+def copy_strip(): # pragma: no cover
"""Copy idle.html to idlelib/help.html, stripping trailing whitespace.
Files with trailing whitespace cannot be pushed to the git cpython
@@ -279,13 +280,13 @@ def copy_strip():
print(f'{src} copied to {dst}')
-def _helpwindow(parent):
+def show_idlehelp(parent):
"Create HelpWindow; called from Idle Help event handler."
filename = join(abspath(dirname(__file__)), 'help.html')
- if not isfile(filename):
+ if not isfile(filename): # pragma: no cover
# Try copy_strip, present message.
return
- HelpWindow(parent, filename, 'IDLE Help (%s)' % python_version())
+ return HelpWindow(parent, filename, 'IDLE Doc (%s)' % python_version())
if __name__ == '__main__':
@@ -293,4 +294,4 @@ if __name__ == '__main__':
main('idlelib.idle_test.test_help', verbosity=2, exit=False)
from idlelib.idle_test.htest import run
- run(_helpwindow)
+ run(show_idlehelp)
diff --git a/Lib/idlelib/idle_test/htest.py b/Lib/idlelib/idle_test/htest.py
index 997f85f..a729377 100644
--- a/Lib/idlelib/idle_test/htest.py
+++ b/Lib/idlelib/idle_test/htest.py
@@ -190,13 +190,6 @@ HelpSource_spec = {
"<Escape>, [Cancel], or [X] prints None to shell"
}
-_helpwindow_spec = {
- 'file': 'help',
- 'kwds': {},
- 'msg': "If the help text displays, this works.\n"
- "Text is selectable. Window is scrollable."
- }
-
_io_binding_spec = {
'file': 'iomenu',
'kwds': {},
@@ -299,6 +292,13 @@ _searchbase_spec = {
"Its only action is to close."
}
+show_idlehelp_spec = {
+ 'file': 'help',
+ 'kwds': {},
+ 'msg': "If the help text displays, this works.\n"
+ "Text is selectable. Window is scrollable."
+ }
+
_sidebar_number_scrolling_spec = {
'file': 'sidebar',
'kwds': {},
diff --git a/Lib/idlelib/idle_test/test_help.py b/Lib/idlelib/idle_test/test_help.py
index b542659..c528d4e 100644
--- a/Lib/idlelib/idle_test/test_help.py
+++ b/Lib/idlelib/idle_test/test_help.py
@@ -1,4 +1,4 @@
-"Test help, coverage 87%."
+"Test help, coverage 94%."
from idlelib import help
import unittest
@@ -8,25 +8,27 @@ from os.path import abspath, dirname, join
from tkinter import Tk
-class HelpFrameTest(unittest.TestCase):
+class IdleDocTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
"By itself, this tests that file parsed without exception."
cls.root = root = Tk()
root.withdraw()
- helpfile = join(dirname(dirname(abspath(__file__))), 'help.html')
- cls.frame = help.HelpFrame(root, helpfile)
+ cls.window = help.show_idlehelp(root)
@classmethod
def tearDownClass(cls):
- del cls.frame
+ del cls.window
cls.root.update_idletasks()
cls.root.destroy()
del cls.root
- def test_line1(self):
- text = self.frame.text
+ def test_1window(self):
+ self.assertIn('IDLE Doc', self.window.wm_title())
+
+ def test_4text(self):
+ text = self.window.frame.text
self.assertEqual(text.get('1.0', '1.end'), ' IDLE ')