From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Fri, 29 Mar 2024 11:21:56 +0000 (+0100) Subject: [3.11] [3.12] gh-117347: Fix test_clinic side effects (GH-117363) (GH-117365) (#117366) X-Git-Tag: v3.11.9~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=54ee0386151139de9e65ac247ae980d599703458;p=thirdparty%2FPython%2Fcpython.git [3.11] [3.12] gh-117347: Fix test_clinic side effects (GH-117363) (GH-117365) (#117366) [3.12] gh-117347: Fix test_clinic side effects (GH-117363) (GH-117365) gh-117347: Fix test_clinic side effects (GH-117363) Save/restore converters in ClinicWholeFileTest and ClinicExternalTest. (cherry picked from commit c80d13838dbcfe239eeabfd950bc524d797e6db1) Co-authored-by: Victor Stinner (cherry picked from commit 35b6c4a4da201a947b2ceb96ae4c0d83d4d2df4f) Co-authored-by: Victor Stinner --- diff --git a/Lib/test/test_clinic.py b/Lib/test/test_clinic.py index 748a63e5348f..902d43cb1d67 100644 --- a/Lib/test/test_clinic.py +++ b/Lib/test/test_clinic.py @@ -22,6 +22,20 @@ with test_tools.imports_under_tool('clinic'): from clinic import DSLParser +def restore_dict(converters, old_converters): + converters.clear() + converters.update(old_converters) + + +def save_restore_converters(testcase): + testcase.addCleanup(restore_dict, clinic.converters, + clinic.converters.copy()) + testcase.addCleanup(restore_dict, clinic.legacy_converters, + clinic.legacy_converters.copy()) + testcase.addCleanup(restore_dict, clinic.return_converters, + clinic.return_converters.copy()) + + class _ParserBase(TestCase): maxDiff = None @@ -108,6 +122,7 @@ class FakeClinic: class ClinicWholeFileTest(_ParserBase): def setUp(self): + save_restore_converters(self) self.clinic = clinic.Clinic(clinic.CLanguage(None), filename="test.c") def expect_failure(self, raw): @@ -1317,6 +1332,9 @@ class ClinicExternalTest(TestCase): maxDiff = None clinic_py = os.path.join(test_tools.toolsdir, "clinic", "clinic.py") + def setUp(self): + save_restore_converters(self) + def _do_test(self, *args, expect_success=True): with subprocess.Popen( [sys.executable, "-Xutf8", self.clinic_py, *args],