Skip to content

Commit deef967

Browse files
committed
gh-104855: Update more tk tests for 8.7
Where applicable: * Add '' to the valid options in error messages. * Test that '' is valid. * Test that 'to' < 'from' is valid instead of invalid. This PR also fixes gh-104856.
1 parent 3821b92 commit deef967

File tree

4 files changed

+34
-14
lines changed

4 files changed

+34
-14
lines changed

Lib/test/test_tkinter/test_geometry_managers.py

+7-4
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,11 @@ def test_place_configure_height(self):
405405
with self.assertRaisesRegex(TclError, 'bad screen distance "abcd"'):
406406
f2.place_configure(height='abcd')
407407

408+
def place_err(self, root):
409+
tk86 = root.info_patchlevel() < (8, 7)
410+
return ('expected floating-point number '
411+
f'''{'' if tk86 else 'or "" '}but got "abcd"''')
412+
408413
def test_place_configure_relwidth(self):
409414
t, f, f2 = self.create2()
410415
f2.place_configure(in_=f, relwidth=0.5)
@@ -413,8 +418,7 @@ def test_place_configure_relwidth(self):
413418
f2.place_configure(relwidth='')
414419
self.root.update()
415420
self.assertEqual(f2.winfo_width(), 30)
416-
with self.assertRaisesRegex(TclError, 'expected floating-point number '
417-
'but got "abcd"'):
421+
with self.assertRaisesRegex(TclError, self.place_err(self.root)):
418422
f2.place_configure(relwidth='abcd')
419423

420424
def test_place_configure_relheight(self):
@@ -425,8 +429,7 @@ def test_place_configure_relheight(self):
425429
f2.place_configure(relheight='')
426430
self.root.update()
427431
self.assertEqual(f2.winfo_height(), 60)
428-
with self.assertRaisesRegex(TclError, 'expected floating-point number '
429-
'but got "abcd"'):
432+
with self.assertRaisesRegex(TclError, self.place_err(self.root)):
430433
f2.place_configure(relheight='abcd')
431434

432435
def test_place_configure_bordermode(self):

Lib/test/test_tkinter/test_widgets.py

+12-4
Original file line numberDiff line numberDiff line change
@@ -489,8 +489,12 @@ def test_configure_from(self):
489489
widget = self.create()
490490
self.checkParam(widget, 'to', 100.0)
491491
self.checkFloatParam(widget, 'from', -10, 10.2, 11.7)
492-
self.checkInvalidParam(widget, 'from', 200,
493-
errmsg='-to value must be greater than -from value')
492+
if widget.info_patchlevel() < (8, 7):
493+
self.checkInvalidParam(
494+
widget, 'from', 200,
495+
errmsg='-to value must be greater than -from value')
496+
else:
497+
self.checkFloatParam(widget, 'from', 200)
494498

495499
def test_configure_increment(self):
496500
widget = self.create()
@@ -500,8 +504,12 @@ def test_configure_to(self):
500504
widget = self.create()
501505
self.checkParam(widget, 'from', -100.0)
502506
self.checkFloatParam(widget, 'to', -10, 10.2, 11.7)
503-
self.checkInvalidParam(widget, 'to', -200,
504-
errmsg='-to value must be greater than -from value')
507+
if widget.info_patchlevel() < (8, 7):
508+
self.checkInvalidParam(
509+
widget, 'to', -200,
510+
errmsg='-to value must be greater than -from value')
511+
else:
512+
self.checkFloatParam(widget, 'to', -200)
505513

506514
def test_configure_values(self):
507515
# XXX

Lib/test/test_tkinter/widget_tests.py

+12-6
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,11 @@ def checkParams(self, widget, name, *values, **kwargs):
7474

7575
def checkIntegerParam(self, widget, name, *values, **kwargs):
7676
self.checkParams(widget, name, *values, **kwargs)
77-
self.checkInvalidParam(widget, name, '',
78-
errmsg='expected integer but got ""')
77+
if tcl_version < (8, 7) or name == 'underline':
78+
self.checkInvalidParam(widget, name, '',
79+
errmsg='expected integer but got ""')
80+
else:
81+
self.checkParams(widget, 'underline', '')
7982
self.checkInvalidParam(widget, name, '10p',
8083
errmsg='expected integer but got "10p"')
8184
self.checkInvalidParam(widget, name, 3.2,
@@ -152,10 +155,13 @@ def checkPixelsParam(self, widget, name, *values,
152155
errmsg='bad screen distance "spam"')
153156

154157
def checkReliefParam(self, widget, name):
155-
self.checkParams(widget, name,
156-
'flat', 'groove', 'raised', 'ridge', 'solid', 'sunken')
157-
errmsg='bad relief "spam": must be '\
158-
'flat, groove, raised, ridge, solid, or sunken'
158+
options = ['flat', 'groove', 'raised', 'ridge', 'solid', 'sunken']
159+
if tcl_version >= (8, 7) and name in ('overrelief', 'proxyrelief'):
160+
options.append('')
161+
self.checkParams(widget, name, *options)
162+
lastop = options.pop()
163+
opstring = ', '.join(options)
164+
errmsg=f'bad relief "spam": must be {opstring}, or {lastop}'
159165
if tcl_version < (8, 6):
160166
errmsg = None
161167
self.checkInvalidParam(widget, name, 'spam',
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Where applicable update tkinter tests for 8.7 by adding '' to options in
2+
error messages, testing '' for validity, and testing acceptance of 'to'
3+
value < 'from' value in a spinbox (which switches the values).

0 commit comments

Comments
 (0)