]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-117347: Fix test_clinic side effects (#117363)
authorVictor Stinner <vstinner@python.org>
Fri, 29 Mar 2024 10:25:17 +0000 (11:25 +0100)
committerGitHub <noreply@github.com>
Fri, 29 Mar 2024 10:25:17 +0000 (10:25 +0000)
Save/restore converters in ClinicWholeFileTest and
ClinicExternalTest.

Lib/test/test_clinic.py

index 52cb4d6e18785542304e3b92c68b5d07e76efe4f..f95bf858100be6898d00291dd7e2ea80a245671a 100644 (file)
@@ -52,6 +52,20 @@ def _expect_failure(tc, parser, code, errmsg, *, filename=None, lineno=None,
     return cm.exception
 
 
+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 ClinicWholeFileTest(TestCase):
     maxDiff = None
 
@@ -60,6 +74,7 @@ class ClinicWholeFileTest(TestCase):
                         filename=filename, lineno=lineno)
 
     def setUp(self):
+        save_restore_converters(self)
         self.clinic = _make_clinic(filename="test.c")
 
     def test_eol(self):
@@ -2431,6 +2446,9 @@ class ClinicParserTest(TestCase):
 class ClinicExternalTest(TestCase):
     maxDiff = None
 
+    def setUp(self):
+        save_restore_converters(self)
+
     def run_clinic(self, *args):
         with (
             support.captured_stdout() as out,