Download lib/python3.9/idlelib/idle_test/test_help_about.py from camenduru/slahmr-test: direct link, hf CLI and curl.
- Browser
- Download file 5.92 kB
-
https://huggingface.co/camenduru/slahmr-test/resolve/main/lib/python3.9/idlelib/idle_test/test_help_about.py
- Command line
-
hf download hf://camenduru/slahmr-test/lib/python3.9/idlelib/idle_test/test_help_about.py
-
curl -L -o test_help_about.py https://huggingface.co/camenduru/slahmr-test/resolve/main/lib/python3.9/idlelib/idle_test/test_help_about.py
5.92 kB
| """Test help_about, coverage 100%. | |
| help_about.build_bits branches on sys.platform='darwin'. | |
| '100% combines coverage on Mac and others. | |
| """ | |
| from idlelib import help_about | |
| import unittest | |
| from test.support import requires, findfile | |
| from tkinter import Tk, TclError | |
| from idlelib.idle_test.mock_idle import Func | |
| from idlelib.idle_test.mock_tk import Mbox_func | |
| from idlelib import textview | |
| import os.path | |
| from platform import python_version | |
| About = help_about.AboutDialog | |
| class LiveDialogTest(unittest.TestCase): | |
| """Simulate user clicking buttons other than [Close]. | |
| Test that invoked textview has text from source. | |
| """ | |
| def setUpClass(cls): | |
| requires('gui') | |
| cls.root = Tk() | |
| cls.root.withdraw() | |
| cls.dialog = About(cls.root, 'About IDLE', _utest=True) | |
| def tearDownClass(cls): | |
| del cls.dialog | |
| cls.root.update_idletasks() | |
| cls.root.destroy() | |
| del cls.root | |
| def test_build_bits(self): | |
| self.assertIn(help_about.build_bits(), ('32', '64')) | |
| def test_dialog_title(self): | |
| """Test about dialog title""" | |
| self.assertEqual(self.dialog.title(), 'About IDLE') | |
| def test_dialog_logo(self): | |
| """Test about dialog logo.""" | |
| path, file = os.path.split(self.dialog.icon_image['file']) | |
| fn, ext = os.path.splitext(file) | |
| self.assertEqual(fn, 'idle_48') | |
| def test_printer_buttons(self): | |
| """Test buttons whose commands use printer function.""" | |
| dialog = self.dialog | |
| button_sources = [(dialog.py_license, license, 'license'), | |
| (dialog.py_copyright, copyright, 'copyright'), | |
| (dialog.py_credits, credits, 'credits')] | |
| for button, printer, name in button_sources: | |
| with self.subTest(name=name): | |
| printer._Printer__setup() | |
| button.invoke() | |
| get = dialog._current_textview.viewframe.textframe.text.get | |
| lines = printer._Printer__lines | |
| if len(lines) < 2: | |
| self.fail(name + ' full text was not found') | |
| self.assertEqual(lines[0], get('1.0', '1.end')) | |
| self.assertEqual(lines[1], get('2.0', '2.end')) | |
| dialog._current_textview.destroy() | |
| def test_file_buttons(self): | |
| """Test buttons that display files.""" | |
| dialog = self.dialog | |
| button_sources = [(self.dialog.readme, 'README.txt', 'readme'), | |
| (self.dialog.idle_news, 'NEWS.txt', 'news'), | |
| (self.dialog.idle_credits, 'CREDITS.txt', 'credits')] | |
| for button, filename, name in button_sources: | |
| with self.subTest(name=name): | |
| button.invoke() | |
| fn = findfile(filename, subdir='idlelib') | |
| get = dialog._current_textview.viewframe.textframe.text.get | |
| with open(fn, encoding='utf-8') as f: | |
| self.assertEqual(f.readline().strip(), get('1.0', '1.end')) | |
| f.readline() | |
| self.assertEqual(f.readline().strip(), get('3.0', '3.end')) | |
| dialog._current_textview.destroy() | |
| class DefaultTitleTest(unittest.TestCase): | |
| "Test default title." | |
| def setUpClass(cls): | |
| requires('gui') | |
| cls.root = Tk() | |
| cls.root.withdraw() | |
| cls.dialog = About(cls.root, _utest=True) | |
| def tearDownClass(cls): | |
| del cls.dialog | |
| cls.root.update_idletasks() | |
| cls.root.destroy() | |
| del cls.root | |
| def test_dialog_title(self): | |
| """Test about dialog title""" | |
| self.assertEqual(self.dialog.title(), | |
| f'About IDLE {python_version()}' | |
| f' ({help_about.build_bits()} bit)') | |
| class CloseTest(unittest.TestCase): | |
| """Simulate user clicking [Close] button""" | |
| def setUpClass(cls): | |
| requires('gui') | |
| cls.root = Tk() | |
| cls.root.withdraw() | |
| cls.dialog = About(cls.root, 'About IDLE', _utest=True) | |
| def tearDownClass(cls): | |
| del cls.dialog | |
| cls.root.update_idletasks() | |
| cls.root.destroy() | |
| del cls.root | |
| def test_close(self): | |
| self.assertEqual(self.dialog.winfo_class(), 'Toplevel') | |
| self.dialog.button_ok.invoke() | |
| with self.assertRaises(TclError): | |
| self.dialog.winfo_class() | |
| class Dummy_about_dialog: | |
| # Dummy class for testing file display functions. | |
| idle_credits = About.show_idle_credits | |
| idle_readme = About.show_readme | |
| idle_news = About.show_idle_news | |
| # Called by the above | |
| display_file_text = About.display_file_text | |
| _utest = True | |
| class DisplayFileTest(unittest.TestCase): | |
| """Test functions that display files. | |
| While somewhat redundant with gui-based test_file_dialog, | |
| these unit tests run on all buildbots, not just a few. | |
| """ | |
| dialog = Dummy_about_dialog() | |
| def setUpClass(cls): | |
| cls.orig_error = textview.showerror | |
| cls.orig_view = textview.view_text | |
| cls.error = Mbox_func() | |
| cls.view = Func() | |
| textview.showerror = cls.error | |
| textview.view_text = cls.view | |
| def tearDownClass(cls): | |
| textview.showerror = cls.orig_error | |
| textview.view_text = cls.orig_view | |
| def test_file_display(self): | |
| for handler in (self.dialog.idle_credits, | |
| self.dialog.idle_readme, | |
| self.dialog.idle_news): | |
| self.error.message = '' | |
| self.view.called = False | |
| with self.subTest(handler=handler): | |
| handler() | |
| self.assertEqual(self.error.message, '') | |
| self.assertEqual(self.view.called, True) | |
| if __name__ == '__main__': | |
| unittest.main(verbosity=2) | |