mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Issue #28572: Add 10% to coverage of IDLE's test_configdialog.
Update and augment description of the configuration system.
This commit is contained in:
parent
f5df73025d
commit
f46b7823e6
4 changed files with 179 additions and 73 deletions
|
@ -1,30 +1,123 @@
|
|||
'''Test idlelib.configdialog.
|
||||
"""Test idlelib.configdialog.
|
||||
|
||||
Coverage: 46% just by creating dialog.
|
||||
The other half is code for working with user customizations.
|
||||
'''
|
||||
from idlelib.configdialog import ConfigDialog # always test import
|
||||
Half the class creates dialog, half works with user customizations.
|
||||
Coverage: 46% just by creating dialog, 56% with current tests.
|
||||
"""
|
||||
from idlelib.configdialog import ConfigDialog, idleConf # test import
|
||||
from test.support import requires
|
||||
requires('gui')
|
||||
from tkinter import Tk
|
||||
import unittest
|
||||
import idlelib.config as config
|
||||
|
||||
class ConfigDialogTest(unittest.TestCase):
|
||||
# Tests should not depend on fortuitous user configurations.
|
||||
# They must not affect actual user .cfg files.
|
||||
# Use solution from test_config: empty parsers with no filename.
|
||||
usercfg = idleConf.userCfg
|
||||
testcfg = {
|
||||
'main': config.IdleUserConfParser(''),
|
||||
'highlight': config.IdleUserConfParser(''),
|
||||
'keys': config.IdleUserConfParser(''),
|
||||
'extensions': config.IdleUserConfParser(''),
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls.root = Tk()
|
||||
cls.root.withdraw()
|
||||
# ConfigDialog.changedItems is a 3-level hierarchical dictionary of
|
||||
# pending changes that mirrors the multilevel user config dict.
|
||||
# For testing, record args in a list for comparison with expected.
|
||||
changes = []
|
||||
class TestDialog(ConfigDialog):
|
||||
def AddChangedItem(self, *args):
|
||||
changes.append(args)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
cls.root.update_idletasks()
|
||||
cls.root.destroy()
|
||||
del cls.root
|
||||
def setUpModule():
|
||||
global root, configure
|
||||
idleConf.userCfg = testcfg
|
||||
root = Tk()
|
||||
root.withdraw()
|
||||
configure = TestDialog(root, 'Test', _utest=True)
|
||||
|
||||
def test_configdialog(self):
|
||||
d = ConfigDialog(self.root, 'Test', _utest=True)
|
||||
d.remove_var_callbacks()
|
||||
|
||||
def tearDownModule():
|
||||
global root, configure
|
||||
idleConf.userCfg = testcfg
|
||||
configure.remove_var_callbacks()
|
||||
del configure
|
||||
root.update_idletasks()
|
||||
root.destroy()
|
||||
del root
|
||||
|
||||
|
||||
class FontTabTest(unittest.TestCase):
|
||||
|
||||
|
||||
def setUp(self):
|
||||
changes.clear()
|
||||
|
||||
def test_font(self):
|
||||
configure.fontName.set('Test Font')
|
||||
expected = [
|
||||
('main', 'EditorWindow', 'font', 'Test Font'),
|
||||
('main', 'EditorWindow', 'font-size', '10'),
|
||||
('main', 'EditorWindow', 'font-bold', False)]
|
||||
self.assertEqual(changes, expected)
|
||||
changes.clear()
|
||||
configure.fontSize.set(12)
|
||||
expected = [
|
||||
('main', 'EditorWindow', 'font', 'Test Font'),
|
||||
('main', 'EditorWindow', 'font-size', '12'),
|
||||
('main', 'EditorWindow', 'font-bold', False)]
|
||||
self.assertEqual(changes, expected)
|
||||
changes.clear()
|
||||
configure.fontBold.set(True)
|
||||
expected = [
|
||||
('main', 'EditorWindow', 'font', 'Test Font'),
|
||||
('main', 'EditorWindow', 'font-size', '12'),
|
||||
('main', 'EditorWindow', 'font-bold', True)]
|
||||
self.assertEqual(changes, expected)
|
||||
|
||||
#def test_sample(self): pass # TODO
|
||||
|
||||
def test_tabspace(self):
|
||||
configure.spaceNum.set(6)
|
||||
self.assertEqual(changes, [('main', 'Indent', 'num-spaces', 6)])
|
||||
|
||||
|
||||
class HighlightTest(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
changes.clear()
|
||||
|
||||
#def test_colorchoose(self): pass # TODO
|
||||
|
||||
|
||||
class KeysTest(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
changes.clear()
|
||||
|
||||
|
||||
class GeneralTest(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
changes.clear()
|
||||
|
||||
def test_startup(self):
|
||||
configure.radioStartupEdit.invoke()
|
||||
self.assertEqual(changes,
|
||||
[('main', 'General', 'editor-on-startup', 1)])
|
||||
|
||||
def test_autosave(self):
|
||||
configure.radioSaveAuto.invoke()
|
||||
self.assertEqual(changes, [('main', 'General', 'autosave', 1)])
|
||||
|
||||
def test_editor_size(self):
|
||||
configure.entryWinHeight.insert(0, '1')
|
||||
self.assertEqual(changes, [('main', 'EditorWindow', 'height', '140')])
|
||||
changes.clear()
|
||||
configure.entryWinWidth.insert(0, '1')
|
||||
self.assertEqual(changes, [('main', 'EditorWindow', 'width', '180')])
|
||||
|
||||
#def test_help_sources(self): pass # TODO
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue