Mailing List Archive

bpo-45436: Fix tkinter tests with Tcl/Tk 8.6.11+ (GH-29077)
https://github.com/python/cpython/commit/4fe454c6f54b0948af67b53af6c2f35af6377e69
commit: 4fe454c6f54b0948af67b53af6c2f35af6377e69
branch: main
author: Zachary Ware <zach@python.org>
committer: zware <zachary.ware@gmail.com>
date: 2021-10-19T21:54:19-05:00
summary:

bpo-45436: Fix tkinter tests with Tcl/Tk 8.6.11+ (GH-29077)

Since v8.6.11, a few configuration options seem to accept an empty value
where they did not previously; particularly the `type` of a `Menu`
widget, and the `compound` of any ttk widget with a label. Providing an
explicit expected error message to `checkEnumParam` bypasses the check
of an empty value, which no longer raises `TclError`.

files:
M Lib/tkinter/test/test_tkinter/test_widgets.py
M Lib/tkinter/test/test_ttk/test_widgets.py

diff --git a/Lib/tkinter/test/test_tkinter/test_widgets.py b/Lib/tkinter/test/test_tkinter/test_widgets.py
index 39334de8cf41c..cc227e579679b 100644
--- a/Lib/tkinter/test/test_tkinter/test_widgets.py
+++ b/Lib/tkinter/test/test_tkinter/test_widgets.py
@@ -1241,8 +1241,11 @@ def test_configure_title(self):

def test_configure_type(self):
widget = self.create()
- self.checkEnumParam(widget, 'type',
- 'normal', 'tearoff', 'menubar')
+ self.checkEnumParam(
+ widget, 'type',
+ 'normal', 'tearoff', 'menubar',
+ errmsg='bad type "{}": must be normal, tearoff, or menubar',
+ )

def test_entryconfigure(self):
m1 = self.create()
diff --git a/Lib/tkinter/test/test_ttk/test_widgets.py b/Lib/tkinter/test/test_ttk/test_widgets.py
index a2a4de2e5cc41..904aed0ac2df6 100644
--- a/Lib/tkinter/test/test_ttk/test_widgets.py
+++ b/Lib/tkinter/test/test_ttk/test_widgets.py
@@ -169,10 +169,13 @@ def checkImageParam(self, widget, name):
errmsg='image "spam" doesn\'t exist')

def test_configure_compound(self):
+ options = 'none text image center top bottom left right'.split()
+ errmsg = (
+ 'bad compound "{}": must be'
+ f' {", ".join(options[:-1])}, or {options[-1]}'
+ )
widget = self.create()
- self.checkEnumParam(widget, 'compound',
- 'none', 'text', 'image', 'center',
- 'top', 'bottom', 'left', 'right')
+ self.checkEnumParam(widget, 'compound', *options, errmsg=errmsg)

def test_configure_state(self):
widget = self.create()

_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
https://mail.python.org/mailman/listinfo/python-checkins