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`.
This commit is contained in:
Zachary Ware 2021-10-19 21:54:19 -05:00 committed by GitHub
parent 3163e68c34
commit 4fe454c6f5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 5 deletions

View File

@ -1241,8 +1241,11 @@ class MenuTest(AbstractWidgetTest, unittest.TestCase):
def test_configure_type(self): def test_configure_type(self):
widget = self.create() widget = self.create()
self.checkEnumParam(widget, 'type', self.checkEnumParam(
'normal', 'tearoff', 'menubar') widget, 'type',
'normal', 'tearoff', 'menubar',
errmsg='bad type "{}": must be normal, tearoff, or menubar',
)
def test_entryconfigure(self): def test_entryconfigure(self):
m1 = self.create() m1 = self.create()

View File

@ -169,10 +169,13 @@ class AbstractLabelTest(AbstractWidgetTest):
errmsg='image "spam" doesn\'t exist') errmsg='image "spam" doesn\'t exist')
def test_configure_compound(self): 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() widget = self.create()
self.checkEnumParam(widget, 'compound', self.checkEnumParam(widget, 'compound', *options, errmsg=errmsg)
'none', 'text', 'image', 'center',
'top', 'bottom', 'left', 'right')
def test_configure_state(self): def test_configure_state(self):
widget = self.create() widget = self.create()