Skip to content

Tkinter: Tk 8.7 alphabetizes options in certain error messages #104497

Description

@chrstphrchvz

As done by e.g. https://core.tcl-lang.org/tk/info/b7db31b3a38b and causing this Tkinter test to fail:

======================================================================
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

Linked PRs

Activity

  1. terryjreedy commented on May 15, 2023

    @terryjreedy
    Member

    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.

  2. sunmy2019 commented on May 15, 2023

    @sunmy2019
    Member

    And if you want a little more, you can use

    >>> from collections import Counter
    >>> Counter("1234") == Counter("3412")
    True
  3. terryjreedy commented on May 17, 2023

    @terryjreedy
    Member

    @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.

  4. chrstphrchvz commented on May 20, 2023

    @chrstphrchvz
    ContributorAuthor

    @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.

  5. terryjreedy commented on May 22, 2023

    @terryjreedy
    Member

    Then I made a PR to fix just that test.

  6. added 2 commits that reference this issue on May 23, 2023
  7. added 2 commits that reference this issue on May 27, 2023
  8. added 2 commits that reference this issue on May 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    testsTests in the Lib/test dirtopic-tkintertype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions