Skip to content

Commit 9c1279d

Browse files
hugovkned-deily
andauthored
pythongh-124111: test macOS CI with Tk 9 (python#137424)
Co-authored-by: Ned Deily <nad@python.org>
1 parent be60e4b commit 9c1279d

File tree

3 files changed

+82
-26
lines changed

3 files changed

+82
-26
lines changed

.github/workflows/reusable-macos.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ jobs:
4343
key: ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ inputs.config_hash }}
4444
- name: Install Homebrew dependencies
4545
run: |
46-
brew install pkg-config openssl@3.0 xz gdbm tcl-tk@8 make
46+
brew install pkg-config openssl@3.0 xz gdbm tcl-tk@9 make
4747
# Because alternate versions are not symlinked into place by default:
48-
brew link --overwrite tcl-tk@8
48+
brew link --overwrite tcl-tk@9
4949
- name: Configure CPython
5050
run: |
5151
MACOSX_DEPLOYMENT_TARGET=10.15 \

Lib/test/test_tkinter/test_widgets.py

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,10 @@ def test_configure_direction(self):
315315

316316
def test_configure_height(self):
317317
widget = self.create()
318-
self.checkIntegerParam(widget, 'height', 100, -100, 0, conv=str)
318+
if tk_version < (9, 0):
319+
self.checkIntegerParam(widget, 'height', 100, -100, 0, conv=str)
320+
else:
321+
self.checkIntegerParam(widget, 'height', 0, -100, 0)
319322

320323
def test_configure_image(self):
321324
widget = self.create()
@@ -342,7 +345,10 @@ def test_configure_menu(self):
342345

343346
def test_configure_width(self):
344347
widget = self.create()
345-
self.checkIntegerParam(widget, 'width', 402, -402, 0, conv=str)
348+
if tk_version < (9, 0):
349+
self.checkIntegerParam(widget, 'width', 402, -402, 0, conv=str)
350+
else:
351+
self.checkIntegerParam(widget, 'width', 402, 0, 0)
346352

347353

348354
class OptionMenuTest(MenubuttonTest, unittest.TestCase):
@@ -391,8 +397,12 @@ def test_configure_disabledbackground(self):
391397

392398
def test_configure_insertborderwidth(self):
393399
widget = self.create(insertwidth=100)
394-
self.checkPixelsParam(widget, 'insertborderwidth',
395-
0, 1.3, 2.6, 6, '10p')
400+
if tk_version < (9, 0):
401+
self.checkPixelsParam(widget, 'insertborderwidth',
402+
0, 1.3, 2.6, 6, '10p')
403+
else:
404+
self.checkPixelsParam(widget, 'insertborderwidth',
405+
0, 1.3, 3, 6, '10p')
396406
self.checkParam(widget, 'insertborderwidth', -2)
397407
# insertborderwidth is bounded above by a half of insertwidth.
398408
expected = 100 // 2 if tk_version < (9, 0) else 60
@@ -551,11 +561,22 @@ def test_configure_values(self):
551561
# XXX
552562
widget = self.create()
553563
self.assertEqual(widget['values'], '')
554-
self.checkParam(widget, 'values', 'mon tue wed thur')
564+
if tk_version < (9, 0):
565+
expected = 'mon tue wed thur'
566+
else:
567+
expected = ('mon', 'tue', 'wed', 'thur')
568+
self.checkParam(widget, 'values', 'mon tue wed thur',
569+
expected=expected)
555570
self.checkParam(widget, 'values', ('mon', 'tue', 'wed', 'thur'),
556-
expected='mon tue wed thur')
571+
expected=expected)
572+
573+
if tk_version < (9, 0):
574+
expected = '42 3.14 {} {any string}'
575+
else:
576+
expected = (42, 3.14, '', 'any string')
557577
self.checkParam(widget, 'values', (42, 3.14, '', 'any string'),
558-
expected='42 3.14 {} {any string}')
578+
expected=expected)
579+
559580
self.checkParam(widget, 'values', '')
560581

561582
def test_configure_wrap(self):
@@ -649,10 +670,9 @@ def test_configure_endline(self):
649670
def test_configure_height(self):
650671
widget = self.create()
651672
self.checkPixelsParam(widget, 'height', 100, 101.2, 102.6, '3c')
652-
self.checkParam(widget, 'height', -100,
653-
expected=1 if tk_version < (9, 0) else -100)
654-
self.checkParam(widget, 'height', 0,
655-
expected=1 if tk_version < (9, 0) else 0 )
673+
expected = 1 if tk_version < (9, 0) else 0
674+
self.checkParam(widget, 'height', -100, expected=expected)
675+
self.checkParam(widget, 'height', 0, expected=expected)
656676

657677
def test_configure_maxundo(self):
658678
widget = self.create()
@@ -670,8 +690,9 @@ def test_configure_insertunfocussed(self):
670690

671691
def test_configure_selectborderwidth(self):
672692
widget = self.create()
693+
value = -2 if tk_version < (9, 0) else 0
673694
self.checkPixelsParam(widget, 'selectborderwidth',
674-
1.3, 2.6, -2, '10p', conv=False)
695+
1.3, 2.6, value, '10p', conv=False)
675696

676697
def test_configure_spacing1(self):
677698
widget = self.create()

Lib/test/test_tkinter/widget_tests.py

Lines changed: 47 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,11 @@ def test_configure_borderwidth(self):
247247
widget = self.create()
248248
self.checkPixelsParam(widget, 'borderwidth',
249249
0, 1.3, 2.6, 6, '10p')
250-
self.checkParam(widget, 'borderwidth', -2)
250+
if tk_version < (9, 0):
251+
self.checkParam(widget, 'borderwidth', -2)
252+
else:
253+
self.checkParam(widget, 'borderwidth', 0)
254+
251255
if 'bd' in self.OPTIONS:
252256
self.checkPixelsParam(widget, 'bd', 0, 1.3, 2.6, 6, '10p')
253257
self.checkParam(widget, 'bd', -2, expected=expected)
@@ -260,27 +264,46 @@ def test_configure_highlightthickness(self):
260264

261265
def test_configure_insertborderwidth(self):
262266
widget = self.create()
263-
self.checkPixelsParam(widget, 'insertborderwidth',
264-
0, 1.3, 2.6, 6, '10p')
265-
self.checkParam(widget, 'insertborderwidth', -2)
267+
if tk_version < (9, 0):
268+
values = (0, 1.3, 2.6, 6, -2, '10p')
269+
value = -2
270+
else:
271+
values = (0, 1, 3, 6, 13)
272+
value = 0
273+
self.checkPixelsParam(widget, 'insertborderwidth', *values)
274+
self.checkParam(widget, 'insertborderwidth', value)
266275

267276
def test_configure_insertwidth(self):
268277
widget = self.create()
269-
self.checkPixelsParam(widget, 'insertwidth', 1.3, 2.6, -2, '10p')
278+
if tk_version < (9, 0):
279+
self.checkPixelsParam(widget, 'insertwidth', 1.3, 2.6, -2, '10p')
280+
else:
281+
self.checkPixelsParam(widget, 'insertwidth', 1, 3, 0, 13)
270282

271283
def test_configure_padx(self):
272284
widget = self.create()
273285
self.checkPixelsParam(widget, 'padx', 3, 4.4, 5.6, '12m')
274-
self.checkParam(widget, 'padx', -2)
286+
if tk_version < (9, 0):
287+
self.checkParam(widget, 'padx', -2)
288+
else:
289+
self.checkParam(widget, 'padx', 0)
275290

276291
def test_configure_pady(self):
277292
widget = self.create()
278293
self.checkPixelsParam(widget, 'pady', 3, 4.4, 5.6, '12m')
279-
self.checkParam(widget, 'pady', -2)
294+
if tk_version < (9, 0):
295+
self.checkParam(widget, 'pady', -2)
296+
else:
297+
self.checkParam(widget, 'pady', 0)
280298

281299
def test_configure_selectborderwidth(self):
282300
widget = self.create()
283-
self.checkPixelsParam(widget, 'selectborderwidth', 1.3, 2.6, -2, '10p')
301+
if tk_version < (9, 0):
302+
values = (1.3, 2.6, -2, '10p')
303+
else:
304+
values = (1, 3, 0, 13)
305+
self.checkPixelsParam(widget, 'selectborderwidth', *values)
306+
284307

285308
class StandardOptionsTests(PixelOptionsTests):
286309

@@ -546,22 +569,34 @@ class IntegerSizeTests:
546569
""" Tests widgets which only accept integral width and height."""
547570
def test_configure_height(self):
548571
widget = self.create()
549-
self.checkIntegerParam(widget, 'height', 100, -100, 0)
572+
if tk_version < (9, 0):
573+
self.checkIntegerParam(widget, 'height', 100, -100, 0)
574+
else:
575+
self.checkIntegerParam(widget, 'height', 100, 0, 0)
550576

551577
def test_configure_width(self):
552578
widget = self.create()
553-
self.checkIntegerParam(widget, 'width', 402, -402, 0)
579+
if tk_version < (9, 0):
580+
self.checkIntegerParam(widget, 'width', 402, -402, 0)
581+
else:
582+
self.checkIntegerParam(widget, 'width', 402, 0, 0)
554583

555584

556585
class PixelSizeTests:
557586
""" Tests widgets which accept screen distances for width and height."""
558587
def test_configure_height(self):
559588
widget = self.create()
560-
self.checkPixelsParam(widget, 'height', 100, 101.2, 102.6, -100, 0, '3c')
589+
value = -100 if tk_version < (9, 0) else 0
590+
self.checkPixelsParam(
591+
widget, 'height', 100, 101.2, 102.6, value, 0, '3c'
592+
)
561593

562594
def test_configure_width(self):
563595
widget = self.create()
564-
self.checkPixelsParam(widget, 'width', 402, 403.4, 404.6, -402, 0, '5i')
596+
value = -402 if tk_version < (9, 0) else 0
597+
self.checkPixelsParam(
598+
widget, 'width', 402, 403.4, 404.6, value, 0, '5i'
599+
)
565600

566601

567602
def add_configure_tests(*source_classes):

0 commit comments

Comments
 (0)