[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 1499f66c4c)
Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
This commit is contained in:
Miss Islington (bot) 2025-01-26 11:33:44 +01:00 committed by GitHub
parent 53204a11f1
commit 0d53d7afd5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 28 additions and 22 deletions

View file

@ -5,6 +5,7 @@ Half the class creates dialog, half works with user customizations.
from idlelib import configdialog from idlelib import configdialog
from test.support import requires from test.support import requires
requires('gui') requires('gui')
from test.support.testcase import ExtraAssertions
import unittest import unittest
from unittest import mock from unittest import mock
from idlelib.idle_test.mock_idle import Func from idlelib.idle_test.mock_idle import Func
@ -59,7 +60,7 @@ class ConfigDialogTest(unittest.TestCase):
pass pass
class ButtonTest(unittest.TestCase): class ButtonTest(unittest.TestCase, ExtraAssertions):
def test_click_ok(self): def test_click_ok(self):
d = dialog d = dialog
@ -98,8 +99,8 @@ class ButtonTest(unittest.TestCase):
dialog.buttons['Help'].invoke() dialog.buttons['Help'].invoke()
title, contents = view.kwds['title'], view.kwds['contents'] title, contents = view.kwds['title'], view.kwds['contents']
self.assertEqual(title, 'Help for IDLE preferences') self.assertEqual(title, 'Help for IDLE preferences')
self.assertTrue(contents.startswith('When you click') and self.assertStartsWith(contents, 'When you click')
contents.endswith('a different name.\n')) self.assertEndsWith(contents,'a different name.\n')
class FontPageTest(unittest.TestCase): class FontPageTest(unittest.TestCase):

View file

@ -9,6 +9,7 @@ from textwrap import dedent
from tkinter import Tk from tkinter import Tk
from test.support import requires from test.support import requires
from test.support.testcase import ExtraAssertions
import unittest import unittest
from unittest import mock from unittest import mock
from unittest.mock import Mock, patch from unittest.mock import Mock, patch
@ -227,7 +228,7 @@ class DebuggerGuiTest(unittest.TestCase):
self.idb.get_stack.assert_called_once_with(test_frame, None) self.idb.get_stack.assert_called_once_with(test_frame, None)
class StackViewerTest(unittest.TestCase): class StackViewerTest(unittest.TestCase, ExtraAssertions):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
@ -256,7 +257,7 @@ class StackViewerTest(unittest.TestCase):
flist = None flist = None
master_window = self.root master_window = self.root
sv = debugger.StackViewer(master_window, flist, gui) sv = debugger.StackViewer(master_window, flist, gui)
self.assertTrue(hasattr(sv, 'stack')) self.assertHasAttr(sv, 'stack')
def test_load_stack(self): def test_load_stack(self):
# Test the .load_stack() method against a fixed test stack. # Test the .load_stack() method against a fixed test stack.

View file

@ -8,6 +8,7 @@ Currently only test grep_it, coverage 51%.
from idlelib import grep from idlelib import grep
import unittest import unittest
from test.support import captured_stdout from test.support import captured_stdout
from test.support.testcase import ExtraAssertions
from idlelib.idle_test.mock_tk import Var from idlelib.idle_test.mock_tk import Var
import os import os
import re import re
@ -115,7 +116,7 @@ class FindfilesTest(unittest.TestCase):
self.assertIn(self.realpath, filelist) self.assertIn(self.realpath, filelist)
class Grep_itTest(unittest.TestCase): class Grep_itTest(unittest.TestCase, ExtraAssertions):
# Test captured reports with 0 and some hits. # Test captured reports with 0 and some hits.
# Should test file names, but Windows reports have mixed / and \ separators # Should test file names, but Windows reports have mixed / and \ separators
# from incomplete replacement, so 'later'. # from incomplete replacement, so 'later'.
@ -143,7 +144,7 @@ class Grep_itTest(unittest.TestCase):
self.assertIn(pat, lines[0]) self.assertIn(pat, lines[0])
self.assertIn('py: 1:', lines[1]) # line number 1 self.assertIn('py: 1:', lines[1]) # line number 1
self.assertIn('2', lines[3]) # hits found 2 self.assertIn('2', lines[3]) # hits found 2
self.assertTrue(lines[4].startswith('(Hint:')) self.assertStartsWith(lines[4], '(Hint:')
class Default_commandTest(unittest.TestCase): class Default_commandTest(unittest.TestCase):

View file

@ -3,10 +3,11 @@
from idlelib import multicall from idlelib import multicall
import unittest import unittest
from test.support import requires from test.support import requires
from test.support.testcase import ExtraAssertions
from tkinter import Tk, Text from tkinter import Tk, Text
class MultiCallTest(unittest.TestCase): class MultiCallTest(unittest.TestCase, ExtraAssertions):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
@ -27,7 +28,7 @@ class MultiCallTest(unittest.TestCase):
def test_creator(self): def test_creator(self):
mc = self.mc mc = self.mc
self.assertIs(multicall._multicall_dict[Text], mc) self.assertIs(multicall._multicall_dict[Text], mc)
self.assertTrue(issubclass(mc, Text)) self.assertIsSubclass(mc, Text)
mc2 = multicall.MultiCallCreator(Text) mc2 = multicall.MultiCallCreator(Text)
self.assertIs(mc, mc2) self.assertIs(mc, mc2)

View file

@ -12,6 +12,7 @@ HelpSource htests. These are run by running query.py.
from idlelib import query from idlelib import query
import unittest import unittest
from test.support import requires from test.support import requires
from test.support.testcase import ExtraAssertions
from tkinter import Tk, END from tkinter import Tk, END
import sys import sys
@ -105,7 +106,7 @@ class SectionNameTest(unittest.TestCase):
self.assertEqual(dialog.entry_error['text'], '') self.assertEqual(dialog.entry_error['text'], '')
class ModuleNameTest(unittest.TestCase): class ModuleNameTest(unittest.TestCase, ExtraAssertions):
"Test ModuleName subclass of Query." "Test ModuleName subclass of Query."
class Dummy_ModuleName: class Dummy_ModuleName:
@ -134,10 +135,10 @@ class ModuleNameTest(unittest.TestCase):
def test_good_module_name(self): def test_good_module_name(self):
dialog = self.Dummy_ModuleName('idlelib') dialog = self.Dummy_ModuleName('idlelib')
self.assertTrue(dialog.entry_ok().endswith('__init__.py')) self.assertEndsWith(dialog.entry_ok(), '__init__.py')
self.assertEqual(dialog.entry_error['text'], '') self.assertEqual(dialog.entry_error['text'], '')
dialog = self.Dummy_ModuleName('idlelib.idle') dialog = self.Dummy_ModuleName('idlelib.idle')
self.assertTrue(dialog.entry_ok().endswith('idle.py')) self.assertEndsWith(dialog.entry_ok(), 'idle.py')
self.assertEqual(dialog.entry_error['text'], '') self.assertEqual(dialog.entry_error['text'], '')
@ -376,7 +377,7 @@ class SectionnameGuiTest(unittest.TestCase):
root.destroy() root.destroy()
class ModulenameGuiTest(unittest.TestCase): class ModulenameGuiTest(unittest.TestCase, ExtraAssertions):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
@ -389,7 +390,7 @@ class ModulenameGuiTest(unittest.TestCase):
self.assertEqual(dialog.text0, 'idlelib') self.assertEqual(dialog.text0, 'idlelib')
self.assertEqual(dialog.entry.get(), 'idlelib') self.assertEqual(dialog.entry.get(), 'idlelib')
dialog.button_ok.invoke() dialog.button_ok.invoke()
self.assertTrue(dialog.result.endswith('__init__.py')) self.assertEndsWith(dialog.result, '__init__.py')
root.destroy() root.destroy()

View file

@ -3,11 +3,12 @@
from idlelib.redirector import WidgetRedirector from idlelib.redirector import WidgetRedirector
import unittest import unittest
from test.support import requires from test.support import requires
from test.support.testcase import ExtraAssertions
from tkinter import Tk, Text, TclError from tkinter import Tk, Text, TclError
from idlelib.idle_test.mock_idle import Func from idlelib.idle_test.mock_idle import Func
class InitCloseTest(unittest.TestCase): class InitCloseTest(unittest.TestCase, ExtraAssertions):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
@ -34,7 +35,7 @@ class InitCloseTest(unittest.TestCase):
redir.register('insert', Func) redir.register('insert', Func)
redir.close() redir.close()
self.assertEqual(redir._operations, {}) self.assertEqual(redir._operations, {})
self.assertFalse(hasattr(self.text, 'widget')) self.assertNotHasAttr(self.text, 'widget')
class WidgetRedirectorTest(unittest.TestCase): class WidgetRedirectorTest(unittest.TestCase):

View file

@ -5,8 +5,8 @@ import sys
from itertools import chain from itertools import chain
import unittest import unittest
import unittest.mock import unittest.mock
from test.support import requires, swap_attr from test.support import adjust_int_max_str_digits, requires, swap_attr
from test import support from test.support.testcase import ExtraAssertions
import tkinter as tk import tkinter as tk
from idlelib.idle_test.tkinter_testing_utils import run_in_tk_mainloop from idlelib.idle_test.tkinter_testing_utils import run_in_tk_mainloop
@ -391,7 +391,7 @@ class LineNumbersTest(unittest.TestCase):
assert_colors_are_equal(orig_colors) assert_colors_are_equal(orig_colors)
class ShellSidebarTest(unittest.TestCase): class ShellSidebarTest(unittest.TestCase, ExtraAssertions):
root: tk.Tk = None root: tk.Tk = None
shell: PyShell = None shell: PyShell = None
@ -613,7 +613,7 @@ class ShellSidebarTest(unittest.TestCase):
@run_in_tk_mainloop() @run_in_tk_mainloop()
def test_very_long_wrapped_line(self): def test_very_long_wrapped_line(self):
with support.adjust_int_max_str_digits(11_111), \ with adjust_int_max_str_digits(11_111), \
swap_attr(self.shell, 'squeezer', None): swap_attr(self.shell, 'squeezer', None):
self.do_input('x = ' + '1'*10_000 + '\n') self.do_input('x = ' + '1'*10_000 + '\n')
yield yield
@ -725,7 +725,7 @@ class ShellSidebarTest(unittest.TestCase):
text.tag_add('sel', f'{first_line}.0', 'end-1c') text.tag_add('sel', f'{first_line}.0', 'end-1c')
selected_text = text.get('sel.first', 'sel.last') selected_text = text.get('sel.first', 'sel.last')
self.assertTrue(selected_text.startswith('if True:\n')) self.assertStartsWith(selected_text, 'if True:\n')
self.assertIn('\n1\n', selected_text) self.assertIn('\n1\n', selected_text)
text.event_generate('<<copy>>') text.event_generate('<<copy>>')
@ -749,7 +749,7 @@ class ShellSidebarTest(unittest.TestCase):
text.tag_add('sel', f'{first_line}.3', 'end-1c') text.tag_add('sel', f'{first_line}.3', 'end-1c')
selected_text = text.get('sel.first', 'sel.last') selected_text = text.get('sel.first', 'sel.last')
self.assertTrue(selected_text.startswith('True:\n')) self.assertStartsWith(selected_text, 'True:\n')
selected_lines_text = text.get('sel.first linestart', 'sel.last') selected_lines_text = text.get('sel.first linestart', 'sel.last')
selected_lines = selected_lines_text.split('\n') selected_lines = selected_lines_text.split('\n')