ยปCore Development>Code coverage>Lib/idlelib/idle_test/test_config_help.py

Python code coverage for Lib/idlelib/idle_test/test_config_help.py

#countcontent
1n/a"""Unittests for idlelib.config_help.py"""
2n/aimport unittest
3n/afrom idlelib.idle_test.mock_tk import Var, Mbox, Entry
4n/afrom idlelib import config_help as help_dialog_module
5n/a
6n/ahelp_dialog = help_dialog_module.GetHelpSourceDialog
7n/a
8n/a
9n/aclass Dummy_help_dialog:
10n/a # Mock for testing the following methods of help_dialog
11n/a menu_ok = help_dialog.menu_ok
12n/a path_ok = help_dialog.path_ok
13n/a ok = help_dialog.ok
14n/a cancel = help_dialog.cancel
15n/a # Attributes, constant or variable, needed for tests
16n/a menu = Var()
17n/a entryMenu = Entry()
18n/a path = Var()
19n/a entryPath = Entry()
20n/a result = None
21n/a destroyed = False
22n/a
23n/a def destroy(self):
24n/a self.destroyed = True
25n/a
26n/a
27n/a# menu_ok and path_ok call Mbox.showerror if menu and path are not ok.
28n/aorig_mbox = help_dialog_module.tkMessageBox
29n/ashowerror = Mbox.showerror
30n/a
31n/a
32n/aclass ConfigHelpTest(unittest.TestCase):
33n/a dialog = Dummy_help_dialog()
34n/a
35n/a @classmethod
36n/a def setUpClass(cls):
37n/a help_dialog_module.tkMessageBox = Mbox
38n/a
39n/a @classmethod
40n/a def tearDownClass(cls):
41n/a help_dialog_module.tkMessageBox = orig_mbox
42n/a
43n/a def test_blank_menu(self):
44n/a self.dialog.menu.set('')
45n/a self.assertFalse(self.dialog.menu_ok())
46n/a self.assertEqual(showerror.title, 'Menu Item Error')
47n/a self.assertIn('No', showerror.message)
48n/a
49n/a def test_long_menu(self):
50n/a self.dialog.menu.set('hello' * 10)
51n/a self.assertFalse(self.dialog.menu_ok())
52n/a self.assertEqual(showerror.title, 'Menu Item Error')
53n/a self.assertIn('long', showerror.message)
54n/a
55n/a def test_good_menu(self):
56n/a self.dialog.menu.set('help')
57n/a showerror.title = 'No Error' # should not be called
58n/a self.assertTrue(self.dialog.menu_ok())
59n/a self.assertEqual(showerror.title, 'No Error')
60n/a
61n/a def test_blank_path(self):
62n/a self.dialog.path.set('')
63n/a self.assertFalse(self.dialog.path_ok())
64n/a self.assertEqual(showerror.title, 'File Path Error')
65n/a self.assertIn('No', showerror.message)
66n/a
67n/a def test_invalid_file_path(self):
68n/a self.dialog.path.set('foobar' * 100)
69n/a self.assertFalse(self.dialog.path_ok())
70n/a self.assertEqual(showerror.title, 'File Path Error')
71n/a self.assertIn('not exist', showerror.message)
72n/a
73n/a def test_invalid_url_path(self):
74n/a self.dialog.path.set('ww.foobar.com')
75n/a self.assertFalse(self.dialog.path_ok())
76n/a self.assertEqual(showerror.title, 'File Path Error')
77n/a self.assertIn('not exist', showerror.message)
78n/a
79n/a self.dialog.path.set('htt.foobar.com')
80n/a self.assertFalse(self.dialog.path_ok())
81n/a self.assertEqual(showerror.title, 'File Path Error')
82n/a self.assertIn('not exist', showerror.message)
83n/a
84n/a def test_good_path(self):
85n/a self.dialog.path.set('https://docs.python.org')
86n/a showerror.title = 'No Error' # should not be called
87n/a self.assertTrue(self.dialog.path_ok())
88n/a self.assertEqual(showerror.title, 'No Error')
89n/a
90n/a def test_ok(self):
91n/a self.dialog.destroyed = False
92n/a self.dialog.menu.set('help')
93n/a self.dialog.path.set('https://docs.python.org')
94n/a self.dialog.ok()
95n/a self.assertEqual(self.dialog.result, ('help',
96n/a 'https://docs.python.org'))
97n/a self.assertTrue(self.dialog.destroyed)
98n/a
99n/a def test_cancel(self):
100n/a self.dialog.destroyed = False
101n/a self.dialog.cancel()
102n/a self.assertEqual(self.dialog.result, None)
103n/a self.assertTrue(self.dialog.destroyed)
104n/a
105n/aif __name__ == '__main__':
106n/a unittest.main(verbosity=2, exit=False)