From dbc03c8be072cfc700ea472263a02aee0db4407b Mon Sep 17 00:00:00 2001 From: Cheryl Sabella Date: Fri, 21 Jul 2017 13:03:13 -0400 Subject: [PATCH 1/4] bpo-30981: IDLE: Add more configdialog font page tests. --- Lib/idlelib/idle_test/test_configdialog.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py index d3002a99161201e..1b0b7dd4c0ef605 100644 --- a/Lib/idlelib/idle_test/test_configdialog.py +++ b/Lib/idlelib/idle_test/test_configdialog.py @@ -6,8 +6,9 @@ from idlelib.configdialog import ConfigDialog, idleConf, changes from test.support import requires requires('gui') -from tkinter import Tk +from tkinter import Tk, BooleanVar import unittest +from unittest import mock import idlelib.config as config from idlelib.idle_test.mock_idle import Func @@ -45,7 +46,6 @@ def tearDownModule(): del root -@unittest.skip("skip failing tests until fixed") class FontTabTest(unittest.TestCase): def setUp(self): @@ -75,11 +75,16 @@ def test_font_set(self): self.assertEqual(mainpage, expected) def test_bold_toggle(self): - d = dialog - d.set_samples = Func() - d.bold_toggle.toggle() - self.assertEqual(d.set_samples.called, 1) - del d.set_samples + bt = dialog.bold_toggle + mock_bold = bt['variable'] = BooleanVar() + mock_command = bt['command'] = Func() + bt.invoke() + self.assertEqual(mock_command.called, 1) + self.assertEqual(bt['onvalue'], mock_bold.get()) + bt.invoke() + self.assertEqual(mock_command.called, 2) + self.assertEqual(bt['offvalue'], mock_bold.get()) + del mock_command, mock_bold def test_set_samples(self): d = dialog From 307c641b974410918a5ac8ca906f3e5ba965cae0 Mon Sep 17 00:00:00 2001 From: Cheryl Sabella Date: Fri, 21 Jul 2017 13:40:37 -0400 Subject: [PATCH 2/4] bpo-30981: IDLE: Add more configdialog font page tests. --- Lib/idlelib/idle_test/test_configdialog.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py index 1b0b7dd4c0ef605..b6d71bed396149f 100644 --- a/Lib/idlelib/idle_test/test_configdialog.py +++ b/Lib/idlelib/idle_test/test_configdialog.py @@ -8,7 +8,6 @@ requires('gui') from tkinter import Tk, BooleanVar import unittest -from unittest import mock import idlelib.config as config from idlelib.idle_test.mock_idle import Func @@ -76,7 +75,7 @@ def test_font_set(self): def test_bold_toggle(self): bt = dialog.bold_toggle - mock_bold = bt['variable'] = BooleanVar() + mock_bold = bt['variable'] = BooleanVar(root) mock_command = bt['command'] = Func() bt.invoke() self.assertEqual(mock_command.called, 1) From 3dbeba4b2dcadca1c6cd2e59f26d1bfb775e656b Mon Sep 17 00:00:00 2001 From: Terry Jan Reedy Date: Sat, 22 Jul 2017 00:05:21 -0400 Subject: [PATCH 3/4] Redo test for bold_toggle --- Lib/idlelib/idle_test/test_configdialog.py | 42 ++++++++++++---------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py index b6d71bed396149f..171fa3d309c44f4 100644 --- a/Lib/idlelib/idle_test/test_configdialog.py +++ b/Lib/idlelib/idle_test/test_configdialog.py @@ -6,7 +6,7 @@ from idlelib.configdialog import ConfigDialog, idleConf, changes from test.support import requires requires('gui') -from tkinter import Tk, BooleanVar +from tkinter import Tk import unittest import idlelib.config as config from idlelib.idle_test.mock_idle import Func @@ -46,12 +46,16 @@ def tearDownModule(): class FontTabTest(unittest.TestCase): + "Test that font widget enable users to make font changes." + def setUp(self): changes.clear() def test_font_set(self): - # Set values guaranteed not to be defaults. + # Test that setting a font Variable results in 3 provisional + # change entries. Use values sure to not be defaults. + # Other font tests verify that user actions set Variables. default_font = idleConf.GetFont(root, 'main', 'EditorWindow') default_size = str(default_font[1]) default_bold = default_font[2] == 'bold' @@ -73,27 +77,29 @@ def test_font_set(self): 'font-bold': str(not default_bold)}} self.assertEqual(mainpage, expected) - def test_bold_toggle(self): - bt = dialog.bold_toggle - mock_bold = bt['variable'] = BooleanVar(root) - mock_command = bt['command'] = Func() - bt.invoke() - self.assertEqual(mock_command.called, 1) - self.assertEqual(bt['onvalue'], mock_bold.get()) - bt.invoke() - self.assertEqual(mock_command.called, 2) - self.assertEqual(bt['offvalue'], mock_bold.get()) - del mock_command, mock_bold - - def test_set_samples(self): + def test_set_samples_bold_toggle(self): + # Set up. d = dialog - d.font_sample, d.highlight_sample = {}, {} + d.font_sample, d.highlight_sample = {}, {} # Must undo this. d.font_name.set('test') d.font_size.set('5') d.font_bold.set(1) + expected0 = {'font': ('test', '5', 'normal')} + expected1 = {'font': ('test', '5', 'bold')} + + # Test set_samples. d.set_samples() - expected = {'font': ('test', '5', 'bold')} - self.assertTrue(d.font_sample == d.highlight_sample == expected) + self.assertTrue(d.font_sample == d.highlight_sample == expected1) + + # Test bold_toggle. + d.bold_toggle.invoke() + self.assertFalse(d.font_bold.get()) + self.assertTrue(d.font_sample == d.highlight_sample == expected0) + d.bold_toggle.invoke() + self.assertTrue(d.font_bold.get()) + self.assertTrue(d.font_sample == d.highlight_sample == expected1) + + # Clean up. del d.font_sample, d.highlight_sample def test_tabspace(self): From 69dd2c329814d469dc58c480a5616d02fe7add78 Mon Sep 17 00:00:00 2001 From: Terry Jan Reedy Date: Sat, 22 Jul 2017 00:07:12 -0400 Subject: [PATCH 4/4] Modify configdialog docstring. --- Lib/idlelib/configdialog.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index 59822fc8b37254b..c1db76817c17c71 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -153,6 +153,14 @@ def create_action_buttons(self): def create_page_font_tab(self): """Return frame of widgets for Font/Tabs tab. + Enable users to provisionally change font face, size, or + boldness and to see the consequence of proposed choices. Each + action set 3 options in changes structuree and changes the + corresponding aspect of the font sample on this page and + highlight sample on highlight page. + + Enable users to change spaces entered for indent tabs. + Tk Variables: font_name: Font face. font_size: Font size. @@ -161,7 +169,7 @@ def create_page_font_tab(self): space_num: Indentation width. Data Attribute: - edit_font: Font widget with default font name, size, and weight. + edit_font: Font with default font name, size, and weight. Methods: load_font_cfg: Set vars and fontlist.