Skip to content

Commit 0d53d7a

Browse files
[3.12] gh-71339: Use new assertion methods in test_idle (GH-129314) (#129315)
Revise 10 tests in 7 files, with 1 test split into 2. (cherry picked from commit 1499f66) Co-authored-by: Terry Jan Reedy <[email protected]>
1 parent 53204a1 commit 0d53d7a

File tree

7 files changed

+28
-22
lines changed

7 files changed

+28
-22
lines changed

Lib/idlelib/idle_test/test_configdialog.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from idlelib import configdialog
66
from test.support import requires
77
requires('gui')
8+
from test.support.testcase import ExtraAssertions
89
import unittest
910
from unittest import mock
1011
from idlelib.idle_test.mock_idle import Func
@@ -59,7 +60,7 @@ def activate_config_changes(self):
5960
pass
6061

6162

62-
class ButtonTest(unittest.TestCase):
63+
class ButtonTest(unittest.TestCase, ExtraAssertions):
6364

6465
def test_click_ok(self):
6566
d = dialog
@@ -98,8 +99,8 @@ def test_click_help(self):
9899
dialog.buttons['Help'].invoke()
99100
title, contents = view.kwds['title'], view.kwds['contents']
100101
self.assertEqual(title, 'Help for IDLE preferences')
101-
self.assertTrue(contents.startswith('When you click') and
102-
contents.endswith('a different name.\n'))
102+
self.assertStartsWith(contents, 'When you click')
103+
self.assertEndsWith(contents,'a different name.\n')
103104

104105

105106
class FontPageTest(unittest.TestCase):

Lib/idlelib/idle_test/test_debugger.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from tkinter import Tk
1010

1111
from test.support import requires
12+
from test.support.testcase import ExtraAssertions
1213
import unittest
1314
from unittest import mock
1415
from unittest.mock import Mock, patch
@@ -227,7 +228,7 @@ def test_show_stack_with_frame(self):
227228
self.idb.get_stack.assert_called_once_with(test_frame, None)
228229

229230

230-
class StackViewerTest(unittest.TestCase):
231+
class StackViewerTest(unittest.TestCase, ExtraAssertions):
231232

232233
@classmethod
233234
def setUpClass(cls):
@@ -256,7 +257,7 @@ def test_init(self):
256257
flist = None
257258
master_window = self.root
258259
sv = debugger.StackViewer(master_window, flist, gui)
259-
self.assertTrue(hasattr(sv, 'stack'))
260+
self.assertHasAttr(sv, 'stack')
260261

261262
def test_load_stack(self):
262263
# Test the .load_stack() method against a fixed test stack.

Lib/idlelib/idle_test/test_grep.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from idlelib import grep
99
import unittest
1010
from test.support import captured_stdout
11+
from test.support.testcase import ExtraAssertions
1112
from idlelib.idle_test.mock_tk import Var
1213
import os
1314
import re
@@ -115,7 +116,7 @@ def test_recurse(self):
115116
self.assertIn(self.realpath, filelist)
116117

117118

118-
class Grep_itTest(unittest.TestCase):
119+
class Grep_itTest(unittest.TestCase, ExtraAssertions):
119120
# Test captured reports with 0 and some hits.
120121
# Should test file names, but Windows reports have mixed / and \ separators
121122
# from incomplete replacement, so 'later'.
@@ -143,7 +144,7 @@ def test_found(self):
143144
self.assertIn(pat, lines[0])
144145
self.assertIn('py: 1:', lines[1]) # line number 1
145146
self.assertIn('2', lines[3]) # hits found 2
146-
self.assertTrue(lines[4].startswith('(Hint:'))
147+
self.assertStartsWith(lines[4], '(Hint:')
147148

148149

149150
class Default_commandTest(unittest.TestCase):

Lib/idlelib/idle_test/test_multicall.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
from idlelib import multicall
44
import unittest
55
from test.support import requires
6+
from test.support.testcase import ExtraAssertions
67
from tkinter import Tk, Text
78

89

9-
class MultiCallTest(unittest.TestCase):
10+
class MultiCallTest(unittest.TestCase, ExtraAssertions):
1011

1112
@classmethod
1213
def setUpClass(cls):
@@ -27,7 +28,7 @@ def tearDownClass(cls):
2728
def test_creator(self):
2829
mc = self.mc
2930
self.assertIs(multicall._multicall_dict[Text], mc)
30-
self.assertTrue(issubclass(mc, Text))
31+
self.assertIsSubclass(mc, Text)
3132
mc2 = multicall.MultiCallCreator(Text)
3233
self.assertIs(mc, mc2)
3334

Lib/idlelib/idle_test/test_query.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from idlelib import query
1313
import unittest
1414
from test.support import requires
15+
from test.support.testcase import ExtraAssertions
1516
from tkinter import Tk, END
1617

1718
import sys
@@ -105,7 +106,7 @@ def test_good_section_name(self):
105106
self.assertEqual(dialog.entry_error['text'], '')
106107

107108

108-
class ModuleNameTest(unittest.TestCase):
109+
class ModuleNameTest(unittest.TestCase, ExtraAssertions):
109110
"Test ModuleName subclass of Query."
110111

111112
class Dummy_ModuleName:
@@ -134,10 +135,10 @@ def test_c_source_name(self):
134135

135136
def test_good_module_name(self):
136137
dialog = self.Dummy_ModuleName('idlelib')
137-
self.assertTrue(dialog.entry_ok().endswith('__init__.py'))
138+
self.assertEndsWith(dialog.entry_ok(), '__init__.py')
138139
self.assertEqual(dialog.entry_error['text'], '')
139140
dialog = self.Dummy_ModuleName('idlelib.idle')
140-
self.assertTrue(dialog.entry_ok().endswith('idle.py'))
141+
self.assertEndsWith(dialog.entry_ok(), 'idle.py')
141142
self.assertEqual(dialog.entry_error['text'], '')
142143

143144

@@ -376,7 +377,7 @@ def test_click_section_name(self):
376377
root.destroy()
377378

378379

379-
class ModulenameGuiTest(unittest.TestCase):
380+
class ModulenameGuiTest(unittest.TestCase, ExtraAssertions):
380381

381382
@classmethod
382383
def setUpClass(cls):
@@ -389,7 +390,7 @@ def test_click_module_name(self):
389390
self.assertEqual(dialog.text0, 'idlelib')
390391
self.assertEqual(dialog.entry.get(), 'idlelib')
391392
dialog.button_ok.invoke()
392-
self.assertTrue(dialog.result.endswith('__init__.py'))
393+
self.assertEndsWith(dialog.result, '__init__.py')
393394
root.destroy()
394395

395396

Lib/idlelib/idle_test/test_redirector.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
from idlelib.redirector import WidgetRedirector
44
import unittest
55
from test.support import requires
6+
from test.support.testcase import ExtraAssertions
67
from tkinter import Tk, Text, TclError
78
from idlelib.idle_test.mock_idle import Func
89

910

10-
class InitCloseTest(unittest.TestCase):
11+
class InitCloseTest(unittest.TestCase, ExtraAssertions):
1112

1213
@classmethod
1314
def setUpClass(cls):
@@ -34,7 +35,7 @@ def test_close(self):
3435
redir.register('insert', Func)
3536
redir.close()
3637
self.assertEqual(redir._operations, {})
37-
self.assertFalse(hasattr(self.text, 'widget'))
38+
self.assertNotHasAttr(self.text, 'widget')
3839

3940

4041
class WidgetRedirectorTest(unittest.TestCase):

Lib/idlelib/idle_test/test_sidebar.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
from itertools import chain
66
import unittest
77
import unittest.mock
8-
from test.support import requires, swap_attr
9-
from test import support
8+
from test.support import adjust_int_max_str_digits, requires, swap_attr
9+
from test.support.testcase import ExtraAssertions
1010
import tkinter as tk
1111
from idlelib.idle_test.tkinter_testing_utils import run_in_tk_mainloop
1212

@@ -391,7 +391,7 @@ def assert_colors_are_equal(colors):
391391
assert_colors_are_equal(orig_colors)
392392

393393

394-
class ShellSidebarTest(unittest.TestCase):
394+
class ShellSidebarTest(unittest.TestCase, ExtraAssertions):
395395
root: tk.Tk = None
396396
shell: PyShell = None
397397

@@ -613,7 +613,7 @@ def test_interrupt_recall_undo_redo(self):
613613

614614
@run_in_tk_mainloop()
615615
def test_very_long_wrapped_line(self):
616-
with support.adjust_int_max_str_digits(11_111), \
616+
with adjust_int_max_str_digits(11_111), \
617617
swap_attr(self.shell, 'squeezer', None):
618618
self.do_input('x = ' + '1'*10_000 + '\n')
619619
yield
@@ -725,7 +725,7 @@ def test_copy(self):
725725

726726
text.tag_add('sel', f'{first_line}.0', 'end-1c')
727727
selected_text = text.get('sel.first', 'sel.last')
728-
self.assertTrue(selected_text.startswith('if True:\n'))
728+
self.assertStartsWith(selected_text, 'if True:\n')
729729
self.assertIn('\n1\n', selected_text)
730730

731731
text.event_generate('<<copy>>')
@@ -749,7 +749,7 @@ def test_copy_with_prompts(self):
749749

750750
text.tag_add('sel', f'{first_line}.3', 'end-1c')
751751
selected_text = text.get('sel.first', 'sel.last')
752-
self.assertTrue(selected_text.startswith('True:\n'))
752+
self.assertStartsWith(selected_text, 'True:\n')
753753

754754
selected_lines_text = text.get('sel.first linestart', 'sel.last')
755755
selected_lines = selected_lines_text.split('\n')

0 commit comments

Comments
 (0)