From 586fd6c10e28a2b3f0e7c998a378632058d7170c Mon Sep 17 00:00:00 2001 From: Zachary Ware Date: Tue, 11 Aug 2026 14:01:39 -0500 Subject: [PATCH] Revert test changes from "gh-89520: Load extension settings and keybindings from user config (GH-28713)" This reverts part of commit 208195dff4cd19dfd4aeb0eed8a133f2b1a66ec1. --- Lib/idlelib/idle_test/test_zzdummy.py | 107 +++++++------------- Lib/idlelib/idle_test/test_zzdummy_user.py | 108 --------------------- 2 files changed, 33 insertions(+), 182 deletions(-) delete mode 100644 Lib/idlelib/idle_test/test_zzdummy_user.py diff --git a/Lib/idlelib/idle_test/test_zzdummy.py b/Lib/idlelib/idle_test/test_zzdummy.py index c8e7dd6941b5899..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.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"), - {'<>': ['']}) - - 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"), - {'<>': ['']}) - self.assertEqual( - conf.GetExtensionBindings("ZzDummy"), - {'<>': [''], - '<>': ['']}) - # 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 a3476bf52bc5882..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': ''}, - "ZzDummy_bindings": { - 'z-out': ''}, -}) -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.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"), - {'<>': ['']}) - self.assertEqual( - zzdummy.idleConf.GetExtensionBindings("ZzDummy"), - {'<>': [''], - '<>': ['']}) - - -if __name__ == '__main__': - unittest.main(verbosity=2)