From 22c90ca609eb22d87d432581918879a4028b1d96 Mon Sep 17 00:00:00 2001 From: James De Bias Date: Tue, 21 May 2024 21:38:48 +1000 Subject: [PATCH 1/3] Fix tkinter widget tests for tk 8.6.14 --- Lib/test/test_tkinter/test_widgets.py | 15 ++++++++------- Lib/test/test_ttk/test_widgets.py | 23 ++++++++++++++++------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/Lib/test/test_tkinter/test_widgets.py b/Lib/test/test_tkinter/test_widgets.py index 85bf5ff7652b69..27e1e56596d9f0 100644 --- a/Lib/test/test_tkinter/test_widgets.py +++ b/Lib/test/test_tkinter/test_widgets.py @@ -660,7 +660,7 @@ def test_configure_tabs(self): widget = self.create() self.checkParam(widget, 'tabs', (10.2, 20.7, '1i', '2i')) self.checkParam(widget, 'tabs', '10.2 20.7 1i 2i', - expected=('10.2', '20.7', '1i', '2i')) + expected=((10.2, 20.7, '1i', '2i') or ('10.2', '20.7', '1i', '2i'))) self.checkParam(widget, 'tabs', '2c left 4c 6c center', expected=('2c', 'left', '4c', '6c', 'center')) self.checkInvalidParam(widget, 'tabs', 'spam', @@ -999,12 +999,13 @@ def test_itemconfigure(self): widget.itemconfigure() with self.assertRaisesRegex(TclError, 'bad listbox index "red"'): widget.itemconfigure('red') - self.assertEqual(widget.itemconfigure(0, 'background'), - ('background', 'background', 'Background', '', 'red')) - self.assertEqual(widget.itemconfigure('end', 'background'), - ('background', 'background', 'Background', '', 'violet')) - self.assertEqual(widget.itemconfigure('@0,0', 'background'), - ('background', 'background', 'Background', '', 'red')) + if get_tk_patchlevel(self.root) >= (8, 6, 14): + self.assertEqual(widget.itemconfigure(0, 'background'), + ('background', '', '', '', 'red')) + self.assertEqual(widget.itemconfigure('end', 'background'), + ('background', '', '', '', 'violet')) + self.assertEqual(widget.itemconfigure('@0,0', 'background'), + ('background', '', '', '', 'red')) d = widget.itemconfigure(0) self.assertIsInstance(d, dict) diff --git a/Lib/test/test_ttk/test_widgets.py b/Lib/test/test_ttk/test_widgets.py index ca7402b276013d..5d8c26cf8b6654 100644 --- a/Lib/test/test_ttk/test_widgets.py +++ b/Lib/test/test_ttk/test_widgets.py @@ -27,13 +27,14 @@ def test_configure_class(self): def test_configure_padding(self): widget = self.create() - self.checkParam(widget, 'padding', 0, expected=('0',)) - self.checkParam(widget, 'padding', 5, expected=('5',)) - self.checkParam(widget, 'padding', (5, 6), expected=('5', '6')) - self.checkParam(widget, 'padding', (5, 6, 7), - expected=('5', '6', '7')) - self.checkParam(widget, 'padding', (5, 6, 7, 8), - expected=('5', '6', '7', '8')) + if get_tk_patchlevel(self.root) >= (8, 6, 14): + self.checkParam(widget, 'padding', 0, expected=(0,)) + self.checkParam(widget, 'padding', 5, expected=(5,)) + self.checkParam(widget, 'padding', (5, 6), expected=(5, 6)) + self.checkParam(widget, 'padding', (5, 6, 7), + expected=(5, 6, 7)) + self.checkParam(widget, 'padding', (5, 6, 7, 8), + expected=(5, 6, 7, 8)) self.checkParam(widget, 'padding', ('5p', '6p', '7p', '8p')) self.checkParam(widget, 'padding', (), expected='') @@ -1879,5 +1880,13 @@ def test_label(self): self._test_widget(ttk.Label) +tests_gui = ( + ButtonTest, CheckbuttonTest, ComboboxTest, EntryTest, + FrameTest, LabelFrameTest, LabelTest, MenubuttonTest, + NotebookTest, PanedWindowTest, ProgressbarTest, + RadiobuttonTest, ScaleTest, ScrollbarTest, SeparatorTest, + SizegripTest, SpinboxTest, TreeviewTest, WidgetTest, DefaultRootTest, + ) + if __name__ == "__main__": unittest.main() From e0fa6611145f83223c67452ab78b362d532a82ee Mon Sep 17 00:00:00 2001 From: James De Bias Date: Wed, 22 May 2024 01:57:10 +1000 Subject: [PATCH 2/3] test only new behaviour --- Lib/test/test_tkinter/test_widgets.py | 5 +++-- Lib/test/test_ttk/test_widgets.py | 8 -------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/Lib/test/test_tkinter/test_widgets.py b/Lib/test/test_tkinter/test_widgets.py index 27e1e56596d9f0..a34b62223cda00 100644 --- a/Lib/test/test_tkinter/test_widgets.py +++ b/Lib/test/test_tkinter/test_widgets.py @@ -659,8 +659,9 @@ def test_configure_state(self): def test_configure_tabs(self): widget = self.create() self.checkParam(widget, 'tabs', (10.2, 20.7, '1i', '2i')) - self.checkParam(widget, 'tabs', '10.2 20.7 1i 2i', - expected=((10.2, 20.7, '1i', '2i') or ('10.2', '20.7', '1i', '2i'))) + if get_tk_patchlevel(self.root) >= (8, 6, 14): + self.checkParam(widget, 'tabs', '10.2 20.7 1i 2i', + expected=(10.2, 20.7, '1i', '2i')) self.checkParam(widget, 'tabs', '2c left 4c 6c center', expected=('2c', 'left', '4c', '6c', 'center')) self.checkInvalidParam(widget, 'tabs', 'spam', diff --git a/Lib/test/test_ttk/test_widgets.py b/Lib/test/test_ttk/test_widgets.py index 5d8c26cf8b6654..844c4bf3c93c29 100644 --- a/Lib/test/test_ttk/test_widgets.py +++ b/Lib/test/test_ttk/test_widgets.py @@ -1880,13 +1880,5 @@ def test_label(self): self._test_widget(ttk.Label) -tests_gui = ( - ButtonTest, CheckbuttonTest, ComboboxTest, EntryTest, - FrameTest, LabelFrameTest, LabelTest, MenubuttonTest, - NotebookTest, PanedWindowTest, ProgressbarTest, - RadiobuttonTest, ScaleTest, ScrollbarTest, SeparatorTest, - SizegripTest, SpinboxTest, TreeviewTest, WidgetTest, DefaultRootTest, - ) - if __name__ == "__main__": unittest.main() From 056c5a5936203efaff5e18c14e192ef3185073d5 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Thu, 30 May 2024 21:26:59 +0300 Subject: [PATCH 3/3] Preserve the tests for older Tcl/Tk. --- Lib/test/test_tkinter/test_widgets.py | 22 +++++++++++++--------- Lib/test/test_ttk/test_widgets.py | 22 ++++++++++++++-------- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/Lib/test/test_tkinter/test_widgets.py b/Lib/test/test_tkinter/test_widgets.py index a34b62223cda00..f5f2fd2ee37b84 100644 --- a/Lib/test/test_tkinter/test_widgets.py +++ b/Lib/test/test_tkinter/test_widgets.py @@ -659,9 +659,10 @@ def test_configure_state(self): def test_configure_tabs(self): widget = self.create() self.checkParam(widget, 'tabs', (10.2, 20.7, '1i', '2i')) - if get_tk_patchlevel(self.root) >= (8, 6, 14): - self.checkParam(widget, 'tabs', '10.2 20.7 1i 2i', - expected=(10.2, 20.7, '1i', '2i')) + self.checkParam(widget, 'tabs', '10.2 20.7 1i 2i', + expected=(10.2, 20.7, '1i', '2i') + if get_tk_patchlevel(self.root) >= (8, 6, 14) + else ('10.2', '20.7', '1i', '2i')) self.checkParam(widget, 'tabs', '2c left 4c 6c center', expected=('2c', 'left', '4c', '6c', 'center')) self.checkInvalidParam(widget, 'tabs', 'spam', @@ -1001,12 +1002,15 @@ def test_itemconfigure(self): with self.assertRaisesRegex(TclError, 'bad listbox index "red"'): widget.itemconfigure('red') if get_tk_patchlevel(self.root) >= (8, 6, 14): - self.assertEqual(widget.itemconfigure(0, 'background'), - ('background', '', '', '', 'red')) - self.assertEqual(widget.itemconfigure('end', 'background'), - ('background', '', '', '', 'violet')) - self.assertEqual(widget.itemconfigure('@0,0', 'background'), - ('background', '', '', '', 'red')) + prefix = ('background', '', '', '') + else: + prefix = ('background', 'background', 'Background', '') + self.assertEqual(widget.itemconfigure(0, 'background'), + (*prefix, 'red')) + self.assertEqual(widget.itemconfigure('end', 'background'), + (*prefix, 'violet')) + self.assertEqual(widget.itemconfigure('@0,0', 'background'), + (*prefix, 'red')) d = widget.itemconfigure(0) self.assertIsInstance(d, dict) diff --git a/Lib/test/test_ttk/test_widgets.py b/Lib/test/test_ttk/test_widgets.py index 844c4bf3c93c29..2e0702da5448a8 100644 --- a/Lib/test/test_ttk/test_widgets.py +++ b/Lib/test/test_ttk/test_widgets.py @@ -27,14 +27,20 @@ def test_configure_class(self): def test_configure_padding(self): widget = self.create() - if get_tk_patchlevel(self.root) >= (8, 6, 14): - self.checkParam(widget, 'padding', 0, expected=(0,)) - self.checkParam(widget, 'padding', 5, expected=(5,)) - self.checkParam(widget, 'padding', (5, 6), expected=(5, 6)) - self.checkParam(widget, 'padding', (5, 6, 7), - expected=(5, 6, 7)) - self.checkParam(widget, 'padding', (5, 6, 7, 8), - expected=(5, 6, 7, 8)) + if get_tk_patchlevel(self.root) < (8, 6, 14): + def padding_conv(value): + self.assertIsInstance(value, tuple) + return tuple(map(str, value)) + else: + padding_conv = None + self.checkParam(widget, 'padding', 0, expected=(0,), conv=padding_conv) + self.checkParam(widget, 'padding', 5, expected=(5,), conv=padding_conv) + self.checkParam(widget, 'padding', (5, 6), + expected=(5, 6), conv=padding_conv) + self.checkParam(widget, 'padding', (5, 6, 7), + expected=(5, 6, 7), conv=padding_conv) + self.checkParam(widget, 'padding', (5, 6, 7, 8), + expected=(5, 6, 7, 8), conv=padding_conv) self.checkParam(widget, 'padding', ('5p', '6p', '7p', '8p')) self.checkParam(widget, 'padding', (), expected='')