You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Tkinter: Tk 8.7 alphabetizes options in certain error messages #104497
======================================================================
FAIL: test_configure_type (test.test_tkinter.test_widgets.MenuTest.test_configure_type)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/user/git/cpython/Lib/test/test_tkinter/test_widgets.py", line 1403, in test_configure_type
self.checkEnumParam(
File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 134, in checkEnumParam
self.checkInvalidParam(widget, name, 'spam', errmsg=errmsg)
File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 63, in checkInvalidParam
self.assertEqual(str(cm.exception), errmsg)
AssertionError: 'bad type "spam": must be menubar, normal, or tearoff' != 'bad type "spam": must be normal, tearoff, or menubar'
- bad type "spam": must be menubar, normal, or tearoff
+ bad type "spam": must be normal, tearoff, or menubar
Easy fix would be to change errmsg = ... to errprefix = 'bad type "spam": must be ' and add [:25] to str(...). I am keeping equality check instead of using .startswith to for helpful error message.
@sunmy2019 As near as I can tell from from searching _tkinter.c and tkinter/init.py, the actual error message is from tcl/tk. If so, all that needs testing is that as error is raised with 'spam' in the message. The options in the expected message come from the test itself, so a mismatch would indicate an error in tcl/tk, which we are not trying to test, or in the test, from being overy specific.
@chrstphrchvz The title and linked tcl issue suggest that multiple messages have been revised. If so, a special case fix for one test would be insufficient.
@chrstphrchvz The title and linked tcl issue suggest that multiple messages have been revised. If so, a special case fix for one test would be insufficient.
Understood, however this is currently the only test I have found to be affected by alphabetizing changes.
Activity
terryjreedy commentedon May 15, 2023
Easy fix would be to change
errmsg = ...toerrprefix = 'bad type "spam": must be 'and add[:25]to str(...). I am keeping equality check instead of using.startswithto for helpful error message.sunmy2019 commentedon May 15, 2023
And if you want a little more, you can use
terryjreedy commentedon May 17, 2023
@sunmy2019 As near as I can tell from from searching _tkinter.c and tkinter/init.py, the actual error message is from tcl/tk. If so, all that needs testing is that as error is raised with 'spam' in the message. The options in the expected message come from the test itself, so a mismatch would indicate an error in tcl/tk, which we are not trying to test, or in the test, from being overy specific.
@chrstphrchvz The title and linked tcl issue suggest that multiple messages have been revised. If so, a special case fix for one test would be insufficient.
chrstphrchvz commentedon May 20, 2023
Understood, however this is currently the only test I have found to be affected by alphabetizing changes.
terryjreedy commentedon May 22, 2023
Then I made a PR to fix just that test.
pythongh-104497: Make tkinter test pass with tk 8.7
gh-104497: Make tkinter test pass with tk 8.7 (#104789)
pythongh-104497: Make tkinter test pass with tk 8.7 (pythonGH-104789)
pythongh-104497: Make tkinter test pass with tk 8.7 (pythonGH-104789)
[3.12] gh-104497: Make tkinter test pass with tk 8.7 (GH-104789) (#10…
[3.11] gh-104497: Make tkinter test pass with tk 8.7 (GH-104789) (#10…