mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
gh-113903: Fix an IDLE configdialog test (#113973)
test_configdialog.HighPageTest.test_highlight_target_text_mouse fails if a line of the Highlight tab text sample is not visible. If so, bbox() in click_char() returns None and the unpacking iteration fails. This occurred on a Devuan Linux system. Fix by moving the 'see character' call inside click_char, just before the bbox call. Also, reduce the click_char calls to just one per tag name and replace the other nested function with a dict comprehension.
This commit is contained in:
parent
efa738e862
commit
c4992f4106
3 changed files with 16 additions and 16 deletions
|
@ -4,6 +4,8 @@ Released on 2024-10-xx
|
||||||
=========================
|
=========================
|
||||||
|
|
||||||
|
|
||||||
|
gh-113903: Fix rare failure of test.test_idle, in test_configdialog.
|
||||||
|
|
||||||
gh-113729: Fix the "Help -> IDLE Doc" menu bug in 3.11.7 and 3.12.1.
|
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
|
gh-57795: Enter selected text into the Find box when opening
|
||||||
|
|
|
@ -420,20 +420,14 @@ class HighPageTest(unittest.TestCase):
|
||||||
# Set highlight_target through clicking highlight_sample.
|
# Set highlight_target through clicking highlight_sample.
|
||||||
eq = self.assertEqual
|
eq = self.assertEqual
|
||||||
d = self.page
|
d = self.page
|
||||||
|
|
||||||
elem = {}
|
|
||||||
count = 0
|
|
||||||
hs = d.highlight_sample
|
hs = d.highlight_sample
|
||||||
hs.focus_force()
|
hs.focus_force()
|
||||||
hs.see(1.0)
|
|
||||||
|
def click_char(index):
|
||||||
|
"Simulate click on character at *index*."
|
||||||
|
hs.see(index)
|
||||||
hs.update_idletasks()
|
hs.update_idletasks()
|
||||||
|
x, y, dx, dy = hs.bbox(index)
|
||||||
def tag_to_element(elem):
|
|
||||||
for element, tag in d.theme_elements.items():
|
|
||||||
elem[tag] = element
|
|
||||||
|
|
||||||
def click_it(start):
|
|
||||||
x, y, dx, dy = hs.bbox(start)
|
|
||||||
x += dx // 2
|
x += dx // 2
|
||||||
y += dy // 2
|
y += dy // 2
|
||||||
hs.event_generate('<Enter>', x=0, y=0)
|
hs.event_generate('<Enter>', x=0, y=0)
|
||||||
|
@ -441,17 +435,20 @@ class HighPageTest(unittest.TestCase):
|
||||||
hs.event_generate('<ButtonPress-1>', x=x, y=y)
|
hs.event_generate('<ButtonPress-1>', x=x, y=y)
|
||||||
hs.event_generate('<ButtonRelease-1>', x=x, y=y)
|
hs.event_generate('<ButtonRelease-1>', x=x, y=y)
|
||||||
|
|
||||||
# Flip theme_elements to make the tag the key.
|
# Reverse theme_elements to make the tag the key.
|
||||||
tag_to_element(elem)
|
elem = {tag: element for element, tag in d.theme_elements.items()}
|
||||||
|
|
||||||
# If highlight_sample has a tag that isn't in theme_elements, there
|
# If highlight_sample has a tag that isn't in theme_elements, there
|
||||||
# will be a KeyError in the test run.
|
# will be a KeyError in the test run.
|
||||||
|
count = 0
|
||||||
for tag in hs.tag_names():
|
for tag in hs.tag_names():
|
||||||
for start_index in hs.tag_ranges(tag)[0::2]:
|
try:
|
||||||
count += 1
|
click_char(hs.tag_nextrange(tag, "1.0")[0])
|
||||||
click_it(start_index)
|
|
||||||
eq(d.highlight_target.get(), elem[tag])
|
eq(d.highlight_target.get(), elem[tag])
|
||||||
|
count += 1
|
||||||
eq(d.set_highlight_target.called, count)
|
eq(d.set_highlight_target.called, count)
|
||||||
|
except IndexError:
|
||||||
|
pass # Skip unused theme_elements tag, like 'sel'.
|
||||||
|
|
||||||
def test_highlight_sample_double_click(self):
|
def test_highlight_sample_double_click(self):
|
||||||
# Test double click on highlight_sample.
|
# Test double click on highlight_sample.
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Fix rare failure of test.test_idle, in test_configdialog.
|
Loading…
Add table
Add a link
Reference in a new issue