Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Certain Tkinter tests fail on Tk 8.7 due to TIP 577 #104855

Copy link
Copy link
Closed
@chrstphrchvz

Description

@chrstphrchvz
Issue body actions

One of the broader effects of TIP 577 on Tk 8.7 (and to a greater degree under Tcl 9.0 than Tcl 8.7) is that it makes widget commands/options/etc. more consistent about using empty string as the reserved “none” value, rather than e.g. "none" or -1. #103685 was one instance of this.

Several options already accepted the empty string under Tk 8.6, but this was not reflected in the bad option… error messages. Tk 8.7 corrects this, which breaks several Tkinter tests with hardcoded error messages:

======================================================================
FAIL: test_place_configure_relheight (test.test_tkinter.test_geometry_managers.PlaceTest.test_place_configure_relheight)
----------------------------------------------------------------------
_tkinter.TclError: expected floating-point number or "" but got "abcd"

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/user/git/cpython/Lib/test/test_tkinter/test_geometry_managers.py", line 426, in test_place_configure_relheight
    with self.assertRaisesRegex(TclError, 'expected floating-point number '
AssertionError: "expected floating-point number but got "abcd"" does not match "expected floating-point number or "" but got "abcd""

======================================================================
FAIL: test_place_configure_relwidth (test.test_tkinter.test_geometry_managers.PlaceTest.test_place_configure_relwidth)
----------------------------------------------------------------------
_tkinter.TclError: expected floating-point number or "" but got "abcd"

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/user/git/cpython/Lib/test/test_tkinter/test_geometry_managers.py", line 414, in test_place_configure_relwidth
    with self.assertRaisesRegex(TclError, 'expected floating-point number '
AssertionError: "expected floating-point number but got "abcd"" does not match "expected floating-point number or "" but got "abcd""

======================================================================
FAIL: test_configure_overrelief (test.test_tkinter.test_widgets.ButtonTest.test_configure_overrelief)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 448, in test_configure_overrelief
    self.checkReliefParam(widget, 'overrelief')
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 161, in checkReliefParam
    self.checkInvalidParam(widget, name, 'spam',
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 63, in checkInvalidParam
    self.assertEqual(str(cm.exception), errmsg)
AssertionError: 'bad relief "spam": must be flat, groove, raised, ridge, solid, sunken, or ""' != 'bad relief "spam": must be flat, groove, raised, ridge, solid, or sunken'
- bad relief "spam": must be flat, groove, raised, ridge, solid, sunken, or ""
?                                                                      -------
+ bad relief "spam": must be flat, groove, raised, ridge, solid, or sunken
?                                                                +++

======================================================================
FAIL: test_configure_overrelief (test.test_tkinter.test_widgets.CheckbuttonTest.test_configure_overrelief)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 448, in test_configure_overrelief
    self.checkReliefParam(widget, 'overrelief')
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 161, in checkReliefParam
    self.checkInvalidParam(widget, name, 'spam',
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 63, in checkInvalidParam
    self.assertEqual(str(cm.exception), errmsg)
AssertionError: 'bad relief "spam": must be flat, groove, raised, ridge, solid, sunken, or ""' != 'bad relief "spam": must be flat, groove, raised, ridge, solid, or sunken'
- bad relief "spam": must be flat, groove, raised, ridge, solid, sunken, or ""
?                                                                      -------
+ bad relief "spam": must be flat, groove, raised, ridge, solid, or sunken
?                                                                +++

======================================================================
FAIL: test_configure_proxyrelief (test.test_tkinter.test_widgets.PanedWindowTest.test_configure_proxyrelief)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/user/git/cpython/Lib/test/test_tkinter/support.py", line 94, in newtest
    test(self)
  File "/Users/user/git/cpython/Lib/test/test_tkinter/test_widgets.py", line 1245, in test_configure_proxyrelief
    self.checkReliefParam(widget, 'proxyrelief')
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 161, in checkReliefParam
    self.checkInvalidParam(widget, name, 'spam',
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 63, in checkInvalidParam
    self.assertEqual(str(cm.exception), errmsg)
AssertionError: 'bad relief "spam": must be flat, groove, raised, ridge, solid, sunken, or ""' != 'bad relief "spam": must be flat, groove, raised, ridge, solid, or sunken'
- bad relief "spam": must be flat, groove, raised, ridge, solid, sunken, or ""
?                                                                      -------
+ bad relief "spam": must be flat, groove, raised, ridge, solid, or sunken
?                                                                +++

======================================================================
FAIL: test_configure_overrelief (test.test_tkinter.test_widgets.RadiobuttonTest.test_configure_overrelief)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 448, in test_configure_overrelief
    self.checkReliefParam(widget, 'overrelief')
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 161, in checkReliefParam
    self.checkInvalidParam(widget, name, 'spam',
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 63, in checkInvalidParam
    self.assertEqual(str(cm.exception), errmsg)
AssertionError: 'bad relief "spam": must be flat, groove, raised, ridge, solid, sunken, or ""' != 'bad relief "spam": must be flat, groove, raised, ridge, solid, or sunken'
- bad relief "spam": must be flat, groove, raised, ridge, solid, sunken, or ""
?                                                                      -------
+ bad relief "spam": must be flat, groove, raised, ridge, solid, or sunken
?                                                                +++

In a few other cases, empty string has become a valid input, so tests which expect an exception to be raised now fail instead:

======================================================================
FAIL: test_configure_underline (test.test_tkinter.test_widgets.ButtonTest.test_configure_underline)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 418, in test_configure_underline
    self.checkIntegerParam(widget, 'underline', 0, 1, 10)
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 77, in checkIntegerParam
    self.checkInvalidParam(widget, name, '',
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 60, in checkInvalidParam
    with self.assertRaises(tkinter.TclError) as cm:
AssertionError: TclError not raised

======================================================================
FAIL: test_configure_underline (test.test_tkinter.test_widgets.CheckbuttonTest.test_configure_underline)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 418, in test_configure_underline
    self.checkIntegerParam(widget, 'underline', 0, 1, 10)
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 77, in checkIntegerParam
    self.checkInvalidParam(widget, name, '',
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 60, in checkInvalidParam
    with self.assertRaises(tkinter.TclError) as cm:
AssertionError: TclError not raised

======================================================================
FAIL: test_configure_underline (test.test_tkinter.test_widgets.LabelTest.test_configure_underline)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 418, in test_configure_underline
    self.checkIntegerParam(widget, 'underline', 0, 1, 10)
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 77, in checkIntegerParam
    self.checkInvalidParam(widget, name, '',
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 60, in checkInvalidParam
    with self.assertRaises(tkinter.TclError) as cm:
AssertionError: TclError not raised

======================================================================
FAIL: test_configure_underline (test.test_tkinter.test_widgets.MenubuttonTest.test_configure_underline)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 418, in test_configure_underline
    self.checkIntegerParam(widget, 'underline', 0, 1, 10)
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 77, in checkIntegerParam
    self.checkInvalidParam(widget, name, '',
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 60, in checkInvalidParam
    with self.assertRaises(tkinter.TclError) as cm:
AssertionError: TclError not raised

======================================================================
FAIL: test_configure_underline (test.test_tkinter.test_widgets.OptionMenuTest.test_configure_underline)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 418, in test_configure_underline
    self.checkIntegerParam(widget, 'underline', 0, 1, 10)
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 77, in checkIntegerParam
    self.checkInvalidParam(widget, name, '',
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 60, in checkInvalidParam
    with self.assertRaises(tkinter.TclError) as cm:
AssertionError: TclError not raised

======================================================================
FAIL: test_configure_underline (test.test_tkinter.test_widgets.RadiobuttonTest.test_configure_underline)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 418, in test_configure_underline
    self.checkIntegerParam(widget, 'underline', 0, 1, 10)
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 77, in checkIntegerParam
    self.checkInvalidParam(widget, name, '',
  File "/Users/user/git/cpython/Lib/test/test_tkinter/widget_tests.py", line 60, in checkInvalidParam
    with self.assertRaises(tkinter.TclError) as cm:
AssertionError: TclError not raised

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Morty Proxy This is a proxified and sanitized view of the page, visit original site.