https://github.com/python/cpython/commit/9c1279d5de573926acd72ca70c085d016470fd07
commit: 9c1279d5de573926acd72ca70c085d016470fd07
branch: main
author: Hugo van Kemenade <[email protected]>
committer: ned-deily <[email protected]>
date: 2025-10-14T00:00:58-04:00
summary:

gh-124111: test macOS CI with Tk 9 (#137424)

Co-authored-by: Ned Deily <[email protected]>

files:
M .github/workflows/reusable-macos.yml
M Lib/test/test_tkinter/test_widgets.py
M Lib/test/test_tkinter/widget_tests.py

diff --git a/.github/workflows/reusable-macos.yml 
b/.github/workflows/reusable-macos.yml
index 87bcd5786e7a88..3d310ae695bfe0 100644
--- a/.github/workflows/reusable-macos.yml
+++ b/.github/workflows/reusable-macos.yml
@@ -43,9 +43,9 @@ jobs:
         key: ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ 
inputs.config_hash }}
     - name: Install Homebrew dependencies
       run: |
-        brew install pkg-config [email protected] xz gdbm tcl-tk@8 make
+        brew install pkg-config [email protected] xz gdbm tcl-tk@9 make
         # Because alternate versions are not symlinked into place by default:
-        brew link --overwrite tcl-tk@8
+        brew link --overwrite tcl-tk@9
     - name: Configure CPython
       run: |
         MACOSX_DEPLOYMENT_TARGET=10.15 \
diff --git a/Lib/test/test_tkinter/test_widgets.py 
b/Lib/test/test_tkinter/test_widgets.py
index ff3f92e9b5ef83..20e385ad0b660c 100644
--- a/Lib/test/test_tkinter/test_widgets.py
+++ b/Lib/test/test_tkinter/test_widgets.py
@@ -315,7 +315,10 @@ def test_configure_direction(self):
 
     def test_configure_height(self):
         widget = self.create()
-        self.checkIntegerParam(widget, 'height', 100, -100, 0, conv=str)
+        if tk_version < (9, 0):
+            self.checkIntegerParam(widget, 'height', 100, -100, 0, conv=str)
+        else:
+            self.checkIntegerParam(widget, 'height', 0, -100, 0)
 
     def test_configure_image(self):
         widget = self.create()
@@ -342,7 +345,10 @@ def test_configure_menu(self):
 
     def test_configure_width(self):
         widget = self.create()
-        self.checkIntegerParam(widget, 'width', 402, -402, 0, conv=str)
+        if tk_version < (9, 0):
+            self.checkIntegerParam(widget, 'width', 402, -402, 0, conv=str)
+        else:
+            self.checkIntegerParam(widget, 'width', 402, 0, 0)
 
 
 class OptionMenuTest(MenubuttonTest, unittest.TestCase):
@@ -391,8 +397,12 @@ def test_configure_disabledbackground(self):
 
     def test_configure_insertborderwidth(self):
         widget = self.create(insertwidth=100)
-        self.checkPixelsParam(widget, 'insertborderwidth',
-                              0, 1.3, 2.6, 6, '10p')
+        if tk_version < (9, 0):
+            self.checkPixelsParam(widget, 'insertborderwidth',
+                                  0, 1.3, 2.6, 6, '10p')
+        else:
+            self.checkPixelsParam(widget, 'insertborderwidth',
+                                  0, 1.3, 3, 6, '10p')
         self.checkParam(widget, 'insertborderwidth', -2)
         # insertborderwidth is bounded above by a half of insertwidth.
         expected =  100 // 2 if tk_version < (9, 0) else 60
@@ -551,11 +561,22 @@ def test_configure_values(self):
         # XXX
         widget = self.create()
         self.assertEqual(widget['values'], '')
-        self.checkParam(widget, 'values', 'mon tue wed thur')
+        if tk_version < (9, 0):
+            expected = 'mon tue wed thur'
+        else:
+            expected = ('mon', 'tue', 'wed', 'thur')
+        self.checkParam(widget, 'values', 'mon tue wed thur',
+                        expected=expected)
         self.checkParam(widget, 'values', ('mon', 'tue', 'wed', 'thur'),
-                        expected='mon tue wed thur')
+                        expected=expected)
+
+        if tk_version < (9, 0):
+            expected = '42 3.14 {} {any string}'
+        else:
+            expected = (42, 3.14, '', 'any string')
         self.checkParam(widget, 'values', (42, 3.14, '', 'any string'),
-                        expected='42 3.14 {} {any string}')
+                        expected=expected)
+
         self.checkParam(widget, 'values', '')
 
     def test_configure_wrap(self):
@@ -649,10 +670,9 @@ def test_configure_endline(self):
     def test_configure_height(self):
         widget = self.create()
         self.checkPixelsParam(widget, 'height', 100, 101.2, 102.6, '3c')
-        self.checkParam(widget, 'height', -100,
-                            expected=1 if tk_version < (9, 0) else -100)
-        self.checkParam(widget, 'height', 0,
-                            expected=1 if tk_version < (9, 0) else 0 )
+        expected = 1 if tk_version < (9, 0) else 0
+        self.checkParam(widget, 'height', -100, expected=expected)
+        self.checkParam(widget, 'height', 0, expected=expected)
 
     def test_configure_maxundo(self):
         widget = self.create()
@@ -670,8 +690,9 @@ def test_configure_insertunfocussed(self):
 
     def test_configure_selectborderwidth(self):
         widget = self.create()
+        value = -2 if tk_version < (9, 0) else 0
         self.checkPixelsParam(widget, 'selectborderwidth',
-                              1.3, 2.6, -2, '10p', conv=False)
+                              1.3, 2.6, value, '10p', conv=False)
 
     def test_configure_spacing1(self):
         widget = self.create()
diff --git a/Lib/test/test_tkinter/widget_tests.py 
b/Lib/test/test_tkinter/widget_tests.py
index f518925e994e90..dd2d7c4da459ab 100644
--- a/Lib/test/test_tkinter/widget_tests.py
+++ b/Lib/test/test_tkinter/widget_tests.py
@@ -247,7 +247,11 @@ def test_configure_borderwidth(self):
         widget = self.create()
         self.checkPixelsParam(widget, 'borderwidth',
                               0, 1.3, 2.6, 6, '10p')
-        self.checkParam(widget, 'borderwidth', -2)
+        if tk_version < (9, 0):
+            self.checkParam(widget, 'borderwidth', -2)
+        else:
+            self.checkParam(widget, 'borderwidth', 0)
+
         if 'bd' in self.OPTIONS:
             self.checkPixelsParam(widget, 'bd', 0, 1.3, 2.6, 6, '10p')
             self.checkParam(widget, 'bd', -2, expected=expected)
@@ -260,27 +264,46 @@ def test_configure_highlightthickness(self):
 
     def test_configure_insertborderwidth(self):
         widget = self.create()
-        self.checkPixelsParam(widget, 'insertborderwidth',
-                              0, 1.3, 2.6, 6, '10p')
-        self.checkParam(widget, 'insertborderwidth', -2)
+        if tk_version < (9, 0):
+            values = (0, 1.3, 2.6, 6, -2, '10p')
+            value = -2
+        else:
+            values = (0, 1, 3, 6, 13)
+            value = 0
+        self.checkPixelsParam(widget, 'insertborderwidth', *values)
+        self.checkParam(widget, 'insertborderwidth', value)
 
     def test_configure_insertwidth(self):
         widget = self.create()
-        self.checkPixelsParam(widget, 'insertwidth', 1.3, 2.6, -2, '10p')
+        if tk_version < (9, 0):
+            self.checkPixelsParam(widget, 'insertwidth', 1.3, 2.6, -2, '10p')
+        else:
+            self.checkPixelsParam(widget, 'insertwidth', 1, 3, 0, 13)
 
     def test_configure_padx(self):
         widget = self.create()
         self.checkPixelsParam(widget, 'padx', 3, 4.4, 5.6, '12m')
-        self.checkParam(widget, 'padx', -2)
+        if tk_version < (9, 0):
+            self.checkParam(widget, 'padx', -2)
+        else:
+            self.checkParam(widget, 'padx', 0)
 
     def test_configure_pady(self):
         widget = self.create()
         self.checkPixelsParam(widget, 'pady', 3, 4.4, 5.6, '12m')
-        self.checkParam(widget, 'pady', -2)
+        if tk_version < (9, 0):
+            self.checkParam(widget, 'pady', -2)
+        else:
+            self.checkParam(widget, 'pady', 0)
 
     def test_configure_selectborderwidth(self):
         widget = self.create()
-        self.checkPixelsParam(widget, 'selectborderwidth', 1.3, 2.6, -2, '10p')
+        if tk_version < (9, 0):
+            values = (1.3, 2.6, -2, '10p')
+        else:
+            values = (1, 3, 0, 13)
+        self.checkPixelsParam(widget, 'selectborderwidth', *values)
+
 
 class StandardOptionsTests(PixelOptionsTests):
 
@@ -546,22 +569,34 @@ class IntegerSizeTests:
     """ Tests widgets which only accept integral width and height."""
     def test_configure_height(self):
         widget = self.create()
-        self.checkIntegerParam(widget, 'height', 100, -100, 0)
+        if tk_version < (9, 0):
+            self.checkIntegerParam(widget, 'height', 100, -100, 0)
+        else:
+            self.checkIntegerParam(widget, 'height', 100, 0, 0)
 
     def test_configure_width(self):
         widget = self.create()
-        self.checkIntegerParam(widget, 'width', 402, -402, 0)
+        if tk_version < (9, 0):
+            self.checkIntegerParam(widget, 'width', 402, -402, 0)
+        else:
+            self.checkIntegerParam(widget, 'width', 402, 0, 0)
 
 
 class PixelSizeTests:
     """ Tests widgets which accept screen distances for width and height."""
     def test_configure_height(self):
         widget = self.create()
-        self.checkPixelsParam(widget, 'height', 100, 101.2, 102.6, -100, 0, 
'3c')
+        value = -100 if tk_version < (9, 0) else 0
+        self.checkPixelsParam(
+            widget, 'height', 100, 101.2, 102.6, value, 0, '3c'
+        )
 
     def test_configure_width(self):
         widget = self.create()
-        self.checkPixelsParam(widget, 'width', 402, 403.4, 404.6, -402, 0, 
'5i')
+        value = -402 if tk_version < (9, 0) else 0
+        self.checkPixelsParam(
+            widget, 'width', 402, 403.4, 404.6, value, 0, '5i'
+        )
 
 
 def add_configure_tests(*source_classes):

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to