]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.13] gh-65784: Add support for parametrized resource wantobjects in regrtests ...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Fri, 16 Jan 2026 17:01:53 +0000 (18:01 +0100)
committerGitHub <noreply@github.com>
Fri, 16 Jan 2026 17:01:53 +0000 (17:01 +0000)
This allows to run Tkinter tests with the specified value of
tkinter.wantobjects, for example "-u wantobjects=0".
(cherry picked from commit 21ed1e2a9401a2e96ccc910fcb66f22afc96efbd)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
21 files changed:
Lib/test/libregrtest/cmdline.py
Lib/test/libregrtest/utils.py
Lib/test/test_tcl.py
Lib/test/test_tkinter/__init__.py
Lib/test/test_tkinter/support.py
Lib/test/test_tkinter/test_colorchooser.py
Lib/test/test_tkinter/test_font.py
Lib/test/test_tkinter/test_geometry_managers.py
Lib/test/test_tkinter/test_images.py
Lib/test/test_tkinter/test_loadtk.py
Lib/test/test_tkinter/test_messagebox.py
Lib/test/test_tkinter/test_misc.py
Lib/test/test_tkinter/test_simpledialog.py
Lib/test/test_tkinter/test_text.py
Lib/test/test_tkinter/test_variables.py
Lib/test/test_tkinter/test_widgets.py
Lib/test/test_ttk/__init__.py
Lib/test/test_ttk/test_extensions.py
Lib/test/test_ttk/test_style.py
Lib/test/test_ttk/test_widgets.py
Misc/NEWS.d/next/Tests/2026-01-08-16-56-59.gh-issue-65784.aKNo1U.rst [new file with mode: 0644]

index a1882fa86f7083ca9e3051ce4bb3b0d78105c690..9252bb497dcf82ae0f0195beb929e535be7010f7 100644 (file)
@@ -124,6 +124,9 @@ resources to test.  Currently only the following are defined:
                 and 3.9 to test backwards compatibility. These tests
                 may take very long to complete.
 
+    wantobjects -    Allows to run Tkinter tests with the specified value of
+                     tkinter.wantobjects.
+
 To enable all resources except one, use '-uall,-<resource>'.  For
 example, to run all the tests except for the gui tests, give the
 option '-uall,-gui'.
index 9cf8e9e3e9ab3bc12085e8f602423a8ea26e3f77..4d7e2840c3259693f68c9425861d6c448015d5e3 100644 (file)
@@ -42,7 +42,7 @@ ALL_RESOURCES = ('audio', 'console', 'curses', 'largefile', 'network',
 # - tzdata: while needed to validate fully test_datetime, it makes
 #   test_datetime too slow (15-20 min on some buildbots) and so is disabled by
 #   default (see bpo-30822).
-RESOURCE_NAMES = ALL_RESOURCES + ('extralargefile', 'tzdata', 'xpickle')
+RESOURCE_NAMES = ALL_RESOURCES + ('extralargefile', 'tzdata', 'xpickle', 'wantobjects')
 
 
 # Types for types hints
index ef281f6d1fe53a02e607be0dfd6de6646122bbb6..47450d3fd5976fafb032f5db4bee04365f3632e6 100644 (file)
@@ -817,6 +817,10 @@ class BigmemTclTest(unittest.TestCase):
 
 
 def setUpModule():
+    wantobjects = support.get_resource_value('wantobjects')
+    if wantobjects is not None:
+        unittest.enterModuleContext(
+            support.swap_attr(tkinter, 'wantobjects', int(wantobjects)))
     if support.verbose:
         tcl = Tcl()
         print('patchlevel =', tcl.call('info', 'patchlevel'), flush=True)
index aa196c12c804ac0ddea838b003d283dfda0eb274..62890c705a6ca66d47dbd8ff81e4087511f0c00e 100644 (file)
@@ -22,3 +22,9 @@ requires('gui')
 
 def load_tests(*args):
     return load_package_tests(os.path.dirname(__file__), *args)
+
+def setUpModule():
+    wantobjects = support.get_resource_value('wantobjects')
+    if wantobjects is not None:
+        unittest.enterModuleContext(
+            support.swap_attr(tkinter, 'wantobjects', int(wantobjects)))
index ebb9e00ff91bf0ee97a8af9b1da175b3993267d2..ca4a1b5597c1ca9c57dd5979f49798492e354694 100644 (file)
@@ -1,5 +1,14 @@
 import functools
 import tkinter
+import unittest
+from test import support
+
+
+def setUpModule():
+    wantobjects = support.get_resource_value('wantobjects')
+    if wantobjects is not None:
+        unittest.enterModuleContext(
+            support.swap_attr(tkinter, 'wantobjects', int(wantobjects)))
 
 class AbstractTkTest:
 
@@ -10,6 +19,8 @@ class AbstractTkTest:
         tkinter.NoDefaultRoot()
         cls.root = tkinter.Tk()
         cls.wantobjects = cls.root.wantobjects()
+        if support.is_resource_enabled('wantobjects'):
+            assert cls.wantobjects == int(support.get_resource_value('wantobjects'))
         # De-maximize main window.
         # Some window managers can maximize new windows.
         cls.root.wm_state('normal')
index 9bba21392d8d1453ac9324b59db8d1971771c3f4..8a7e97f207a41fa89863172732df61dcc5fe7e6e 100644 (file)
@@ -1,6 +1,7 @@
 import unittest
 import tkinter
 from test.support import requires, swap_attr
+from test.test_tkinter.support import setUpModule  # noqa: F401
 from test.test_tkinter.support import AbstractDefaultRootTest, AbstractTkTest
 from tkinter import colorchooser
 from tkinter.colorchooser import askcolor
index 563707ddd2fa9b9d5d48cf9e673b2a12d7313cbe..f8b2f438bbc8140455c3adb8eb020e4d6f8a4446 100644 (file)
@@ -2,6 +2,7 @@ import unittest
 import tkinter
 from tkinter import font
 from test.support import requires, gc_collect, ALWAYS_EQ
+from test.test_tkinter.support import setUpModule  # noqa: F401
 from test.test_tkinter.support import AbstractTkTest, AbstractDefaultRootTest
 
 requires('gui')
index d71a634a76731053e348b37bcde55e5405a9a72e..b2ce143ff0948f7f42eca8c116deac1f7894aac9 100644 (file)
@@ -4,6 +4,7 @@ import tkinter
 from tkinter import TclError
 from test.support import requires
 
+from test.test_tkinter.support import setUpModule  # noqa: F401
 from test.test_tkinter.support import pixels_conv
 from test.test_tkinter.widget_tests import AbstractWidgetTest
 
index 38371fe00d6eb5bc1cfe82653f912d803296c05b..758a5e013b747b0c2ae61189c8733c94becf2ced 100644 (file)
@@ -2,6 +2,7 @@ import unittest
 import tkinter
 from test import support
 from test.support import os_helper
+from test.test_tkinter.support import setUpModule  # noqa: F401
 from test.test_tkinter.support import AbstractTkTest, AbstractDefaultRootTest, requires_tk
 
 support.requires('gui')
index 61b0eda2fc750aed9ed39a2dceb09b83eb927b42..7cff654621eb3506dcb45854d46d39034569c9bb 100644 (file)
@@ -3,6 +3,7 @@ import sys
 import unittest
 import test.support as test_support
 from test.support import os_helper
+from test.test_tkinter.support import setUpModule  # noqa: F401
 from tkinter import Tcl, TclError
 
 test_support.requires('gui')
index f41bdc98286283ad5d6389ec6ce2f956d1dfab99..f29f0c7ba5908619c102247e44567220b55929ad 100644 (file)
@@ -1,6 +1,7 @@
 import unittest
 import tkinter
 from test.support import requires, swap_attr
+from test.test_tkinter.support import setUpModule  # noqa: F401
 from test.test_tkinter.support import AbstractDefaultRootTest
 from tkinter.commondialog import Dialog
 from tkinter.messagebox import showinfo
index dbaf970161ce78834fbc17c9d8eff12584e77843..64addf98bc37e84333f1c383c1227b98642c2884 100644 (file)
@@ -4,6 +4,7 @@ import tkinter
 from tkinter import TclError
 import enum
 from test import support
+from test.test_tkinter.support import setUpModule  # noqa: F401
 from test.test_tkinter.support import (AbstractTkTest, AbstractDefaultRootTest,
                                        requires_tk, get_tk_patchlevel)
 
index 502f7f7098a322d37448753845a86c47d27a53bf..313ad82e0a2c0d9792a4b97f245c8d18eb1eb28c 100644 (file)
@@ -1,6 +1,7 @@
 import unittest
 import tkinter
 from test.support import requires, swap_attr
+from test.test_tkinter.support import setUpModule  # noqa: F401
 from test.test_tkinter.support import AbstractDefaultRootTest
 from tkinter.simpledialog import Dialog, askinteger
 
index ed618c739019ccd984a9d57ffbcc2f721358e204..17cf688722042de7f43de7ad574cc1967e0d54b6 100644 (file)
@@ -1,6 +1,7 @@
 import unittest
 import tkinter
 from test.support import requires
+from test.test_tkinter.support import setUpModule  # noqa: F401
 from test.test_tkinter.support import AbstractTkTest
 
 requires('gui')
index def7aec077e80021ebfb654ac4576de9c34744c1..3d50a71285efc283523b5455a7ca9e4594f871a1 100644 (file)
@@ -6,6 +6,7 @@ import tkinter
 from tkinter import (Variable, StringVar, IntVar, DoubleVar, BooleanVar, Tcl,
                      TclError)
 from test.support import ALWAYS_EQ
+from test.test_tkinter.support import setUpModule  # noqa: F401
 from test.test_tkinter.support import AbstractDefaultRootTest, tcl_version
 
 
index 9ea764ca2a39d86b2e6443fb044d53e9c9ba8f30..178fd05fa480780def930084b295a7ebd8ffb4ff 100644 (file)
@@ -4,6 +4,7 @@ from tkinter import TclError
 import os
 from test.support import requires
 
+from test.test_tkinter.support import setUpModule  # noqa: F401
 from test.test_tkinter.support import (requires_tk, tk_version,
                                   get_tk_patchlevel, widget_eq,
                                   AbstractDefaultRootTest)
index 7ee7ffbd6d74086a6ca80df1666bfeeb84493d21..971a5d24f06eb48570670163059e7fa64522a9de 100644 (file)
@@ -20,6 +20,10 @@ from tkinter import ttk
 
 
 def setUpModule():
+    wantobjects = support.get_resource_value('wantobjects')
+    if wantobjects is not None:
+        unittest.enterModuleContext(
+            support.swap_attr(tkinter, 'wantobjects', int(wantobjects)))
     root = None
     try:
         root = tkinter.Tk()
index d5e069716971fe06d13e5915929c58d0799cb1b8..9688d94f07727a4396b7c8c468567744287c0929 100644 (file)
@@ -3,6 +3,7 @@ import unittest
 import tkinter
 from tkinter import ttk
 from test.support import requires, gc_collect
+from test.test_tkinter.support import setUpModule  # noqa: F401
 from test.test_tkinter.support import AbstractTkTest, AbstractDefaultRootTest
 
 requires('gui')
index eeaf5de2e303f6392a25f6f73889c95f506bc819..46365a135149065784b0588d0bf4c9815fa6caeb 100644 (file)
@@ -5,6 +5,7 @@ from tkinter import ttk
 from tkinter import TclError
 from test import support
 from test.support import requires
+from test.test_tkinter.support import setUpModule  # noqa: F401
 from test.test_tkinter.support import AbstractTkTest, get_tk_patchlevel
 
 requires('gui')
index 10bec33be617a1de3acf01d2a7955af5d4dfe8ab..f7c0e2e7c87bc08ad8f2f32d1c63b8ca8324b5a7 100644 (file)
@@ -5,6 +5,7 @@ from test.support import requires, gc_collect
 import sys
 
 from test.test_ttk_textonly import MockTclObj
+from test.test_tkinter.support import setUpModule  # noqa: F401
 from test.test_tkinter.support import (
     AbstractTkTest, requires_tk, tk_version, get_tk_patchlevel,
     simulate_mouse_click, AbstractDefaultRootTest)
diff --git a/Misc/NEWS.d/next/Tests/2026-01-08-16-56-59.gh-issue-65784.aKNo1U.rst b/Misc/NEWS.d/next/Tests/2026-01-08-16-56-59.gh-issue-65784.aKNo1U.rst
new file mode 100644 (file)
index 0000000..7d1a153
--- /dev/null
@@ -0,0 +1,3 @@
+Add support for parametrized resource ``wantobjects`` in regrtests,
+which allows to run Tkinter tests with the specified value of
+:data:`!tkinter.wantobjects`, for example ``-u wantobjects=0``.