https://github.com/python/cpython/commit/85977c8e885eeae22d4373810164929b5b04590c
commit: 85977c8e885eeae22d4373810164929b5b04590c
branch: 3.13
author: Zachary Ware <[email protected]>
committer: zware <[email protected]>
date: 2026-08-13T15:27:36Z
summary:

[3.13] idlelib tests: Fix refleak testing of test_zzdummy (GH-155721)

Revert test changes from commit 208195dff4cd19dfd4aeb0eed8a133f2b1a66ec1 by 
request of IDLE maintainer Terry Reedy.
(cherry picked from commit fa90680a1ddabd0dcc2901ea16fd04354d8bfc3c)

files:
D Lib/idlelib/idle_test/test_zzdummy_user.py
M Lib/idlelib/idle_test/test_zzdummy.py

diff --git a/Lib/idlelib/idle_test/test_zzdummy.py 
b/Lib/idlelib/idle_test/test_zzdummy.py
index 14c343cf9b30872..209d8564da06641 100644
--- a/Lib/idlelib/idle_test/test_zzdummy.py
+++ b/Lib/idlelib/idle_test/test_zzdummy.py
@@ -38,8 +38,38 @@ def __init__(self, root, text):
         self.text.undo_block_stop = mock.Mock()
 
 
-class ZZDummyMixin:
-    """Shared tests for ZzDummy with default and user configs."""
+class ZZDummyTest(unittest.TestCase):
+
+    @classmethod
+    def setUpClass(cls):
+        requires('gui')
+        root = cls.root = Tk()
+        root.withdraw()
+        text = cls.text = Text(cls.root)
+        cls.editor = DummyEditwin(root, text)
+        zzdummy.idleConf.userCfg = testcfg
+
+    @classmethod
+    def tearDownClass(cls):
+        zzdummy.idleConf.userCfg = usercfg
+        del cls.editor, cls.text
+        cls.root.update_idletasks()
+        for id in cls.root.tk.call('after', 'info'):
+            cls.root.after_cancel(id)  # Need for EditorWindow.
+        cls.root.destroy()
+        del cls.root
+
+    def setUp(self):
+        text = self.text
+        text.insert('1.0', code_sample)
+        text.undo_block_start.reset_mock()
+        text.undo_block_stop.reset_mock()
+        zz = self.zz = zzdummy.ZzDummy(self.editor)
+        zzdummy.ZzDummy.ztext = '# ignore #'
+
+    def tearDown(self):
+        self.text.delete('1.0', 'end')
+        del self.zz
 
     def checklines(self, text, value):
         # Verify that there are lines being checked.
@@ -59,8 +89,7 @@ def test_init(self):
 
     def test_reload(self):
         self.assertEqual(self.zz.ztext, '# ignore #')
-        zzdummy.idleConf.userCfg['extensions'].SetOption(
-            'ZzDummy', 'z-text', 'spam')
+        testcfg['extensions'].SetOption('ZzDummy', 'z-text', 'spam')
         zzdummy.ZzDummy.reload()
         self.assertEqual(self.zz.ztext, 'spam')
 
@@ -119,75 +148,5 @@ def test_roundtrip(self):
         self.assertEqual(text.get('1.0', 'end-1c'), code_sample)
 
 
-class ZZDummyTest(ZZDummyMixin, unittest.TestCase):
-
-    @classmethod
-    def setUpClass(cls):
-        requires('gui')
-        root = cls.root = Tk()
-        root.withdraw()
-        text = cls.text = Text(cls.root)
-        cls.editor = DummyEditwin(root, text)
-        zzdummy.idleConf.userCfg = testcfg
-
-    @classmethod
-    def tearDownClass(cls):
-        zzdummy.idleConf.userCfg = usercfg
-        del cls.editor, cls.text
-        cls.root.update_idletasks()
-        for id in cls.root.tk.call('after', 'info'):
-            cls.root.after_cancel(id)  # Need for EditorWindow.
-        cls.root.destroy()
-        del cls.root
-
-    def setUp(self):
-        text = self.text
-        text.insert('1.0', code_sample)
-        text.undo_block_start.reset_mock()
-        text.undo_block_stop.reset_mock()
-        zz = self.zz = zzdummy.ZzDummy(self.editor)
-        zzdummy.ZzDummy.ztext = '# ignore #'
-
-    def tearDown(self):
-        self.text.delete('1.0', 'end')
-        del self.zz
-
-    def test_exists(self):
-        conf = zzdummy.idleConf
-        self.assertEqual(
-            conf.GetSectionList('user', 'extensions'), [])
-        self.assertEqual(
-            conf.GetSectionList('default', 'extensions'),
-            ['AutoComplete', 'CodeContext', 'FormatParagraph',
-             'ParenMatch', 'ZzDummy', 'ZzDummy_cfgBindings',
-             'ZzDummy_bindings'])
-        self.assertIn("ZzDummy", conf.GetExtensions(False))
-        self.assertNotIn("ZzDummy", conf.GetExtensions())
-        self.assertEqual(
-            conf.GetExtensionKeys("ZzDummy"), {})
-        self.assertEqual(
-            conf.GetExtensionBindings("ZzDummy"),
-            {'<<z-out>>': ['<Control-Shift-KeyRelease-Delete>']})
-
-    def test_exists_user(self):
-        conf = zzdummy.idleConf
-        conf.userCfg["extensions"].read_dict({
-            "ZzDummy": {'enable': 'True'}
-        })
-        self.assertEqual(
-            conf.GetSectionList('user', 'extensions'),
-            ["ZzDummy"])
-        self.assertIn("ZzDummy", conf.GetExtensions())
-        self.assertEqual(
-            conf.GetExtensionKeys("ZzDummy"),
-            {'<<z-in>>': ['<Control-Shift-KeyRelease-Insert>']})
-        self.assertEqual(
-            conf.GetExtensionBindings("ZzDummy"),
-            {'<<z-in>>': ['<Control-Shift-KeyRelease-Insert>'],
-             '<<z-out>>': ['<Control-Shift-KeyRelease-Delete>']})
-        # Restore
-        conf.userCfg["extensions"].remove_section("ZzDummy")
-
-
 if __name__ == '__main__':
     unittest.main(verbosity=2)
diff --git a/Lib/idlelib/idle_test/test_zzdummy_user.py 
b/Lib/idlelib/idle_test/test_zzdummy_user.py
deleted file mode 100644
index 1d3f2ac3096fb0e..000000000000000
--- a/Lib/idlelib/idle_test/test_zzdummy_user.py
+++ /dev/null
@@ -1,108 +0,0 @@
-"Test zzdummy with user config, coverage 100%."
-
-from idlelib import zzdummy
-import unittest
-from test.support import requires
-from tkinter import Tk, Text
-from idlelib import config
-
-from idlelib.idle_test.test_zzdummy import (
-    ZZDummyMixin, DummyEditwin, code_sample,
-)
-
-
-real_usercfg = zzdummy.idleConf.userCfg
-test_usercfg = {
-    'main': config.IdleUserConfParser(''),
-    'highlight': config.IdleUserConfParser(''),
-    'keys': config.IdleUserConfParser(''),
-    'extensions': config.IdleUserConfParser(''),
-}
-test_usercfg["extensions"].read_dict({
-    "ZzDummy": {'enable': 'True', 'enable_shell': 'False',
-                'enable_editor': 'True', 'z-text': 'Z'},
-    "ZzDummy_cfgBindings": {
-        'z-in': '<Control-Shift-KeyRelease-Insert>'},
-    "ZzDummy_bindings": {
-        'z-out': '<Control-Shift-KeyRelease-Delete>'},
-})
-real_defaultcfg = zzdummy.idleConf.defaultCfg
-test_defaultcfg = {
-    'main': config.IdleUserConfParser(''),
-    'highlight': config.IdleUserConfParser(''),
-    'keys': config.IdleUserConfParser(''),
-    'extensions': config.IdleUserConfParser(''),
-}
-test_defaultcfg["extensions"].read_dict({
-    "AutoComplete": {'popupwait': '2000'},
-    "CodeContext": {'maxlines': '15'},
-    "FormatParagraph": {'max-width': '72'},
-    "ParenMatch": {'style': 'expression',
-                   'flash-delay': '500', 'bell': 'True'},
-})
-test_defaultcfg["main"].read_dict({
-    "Theme": {"default": 1, "name": "IDLE Classic", "name2": ""},
-    "Keys": {"default": 1, "name": "IDLE Classic", "name2": ""},
-})
-for key in ("keys",):
-    real_default = real_defaultcfg[key]
-    value = {name: dict(real_default[name]) for name in real_default}
-    test_defaultcfg[key].read_dict(value)
-
-
-class ZZDummyTest(ZZDummyMixin, unittest.TestCase):
-
-    @classmethod
-    def setUpClass(cls):
-        requires('gui')
-        root = cls.root = Tk()
-        root.withdraw()
-        text = cls.text = Text(cls.root)
-        cls.editor = DummyEditwin(root, text)
-        zzdummy.idleConf.userCfg = test_usercfg
-        zzdummy.idleConf.defaultCfg = test_defaultcfg
-
-    @classmethod
-    def tearDownClass(cls):
-        zzdummy.idleConf.defaultCfg = real_defaultcfg
-        zzdummy.idleConf.userCfg = real_usercfg
-        del cls.editor, cls.text
-        cls.root.update_idletasks()
-        for id in cls.root.tk.call('after', 'info'):
-            cls.root.after_cancel(id)  # Need for EditorWindow.
-        cls.root.destroy()
-        del cls.root
-
-    def setUp(self):
-        text = self.text
-        text.insert('1.0', code_sample)
-        text.undo_block_start.reset_mock()
-        text.undo_block_stop.reset_mock()
-        zz = self.zz = zzdummy.ZzDummy(self.editor)
-        zzdummy.ZzDummy.ztext = '# ignore #'
-
-    def tearDown(self):
-        self.text.delete('1.0', 'end')
-        del self.zz
-
-    def test_exists(self):
-        self.assertEqual(
-            zzdummy.idleConf.GetSectionList('user', 'extensions'),
-            ['ZzDummy', 'ZzDummy_cfgBindings', 'ZzDummy_bindings'])
-        self.assertEqual(
-            zzdummy.idleConf.GetSectionList('default', 'extensions'),
-            ['AutoComplete', 'CodeContext', 'FormatParagraph',
-             'ParenMatch'])
-        self.assertIn("ZzDummy",
-                       zzdummy.idleConf.GetExtensions())
-        self.assertEqual(
-            zzdummy.idleConf.GetExtensionKeys("ZzDummy"),
-            {'<<z-in>>': ['<Control-Shift-KeyRelease-Insert>']})
-        self.assertEqual(
-            zzdummy.idleConf.GetExtensionBindings("ZzDummy"),
-            {'<<z-in>>': ['<Control-Shift-KeyRelease-Insert>'],
-             '<<z-out>>': ['<Control-Shift-KeyRelease-Delete>']})
-
-
-if __name__ == '__main__':
-    unittest.main(verbosity=2)

_______________________________________________
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