https://github.com/python/cpython/commit/ce0eaa67032389d64fd2d7fb510e34372082eef8
commit: ce0eaa67032389d64fd2d7fb510e34372082eef8
branch: 3.13
author: Miss Islington (bot) <[email protected]>
committer: Yhg1s <[email protected]>
date: 2024-09-29T21:18:24-07:00
summary:

[3.13] gh-124722: Fix leak in `test_detach_materialized_dict_no_memory` 
(GH-124769) (#124777)

gh-124722: Fix leak in `test_detach_materialized_dict_no_memory` (GH-124769)
(cherry picked from commit 6f4d64b048133c60d40705fb5ef776f78c7dd710)

Co-authored-by: sobolevn <[email protected]>

files:
M Lib/test/test_class.py

diff --git a/Lib/test/test_class.py b/Lib/test/test_class.py
index 6002ea757f1f33..00c32254f7001d 100644
--- a/Lib/test/test_class.py
+++ b/Lib/test/test_class.py
@@ -1,7 +1,7 @@
 "Test the functionality of Python classes implementing operators."
 
 import unittest
-import test.support
+from test.support import cpython_only, import_helper, script_helper
 
 testmeths = [
 
@@ -920,20 +920,36 @@ class C:
         C.a = X()
         C.a = X()
 
+    @cpython_only
     def test_detach_materialized_dict_no_memory(self):
-        import _testcapi
-        class A:
-            def __init__(self):
-                self.a = 1
-                self.b = 2
-        a = A()
-        d = a.__dict__
-        with test.support.catch_unraisable_exception() as ex:
-            _testcapi.set_nomemory(0, 1)
-            del a
-            self.assertEqual(ex.unraisable.exc_type, MemoryError)
-        with self.assertRaises(KeyError):
-            d["a"]
+        # Skip test if _testcapi is not available:
+        import_helper.import_module('_testcapi')
+
+        code = """if 1:
+            import test.support
+            import _testcapi
+
+            class A:
+                def __init__(self):
+                    self.a = 1
+                    self.b = 2
+            a = A()
+            d = a.__dict__
+            with test.support.catch_unraisable_exception() as ex:
+                _testcapi.set_nomemory(0, 1)
+                del a
+                assert ex.unraisable.exc_type is MemoryError
+            try:
+                d["a"]
+            except KeyError:
+                pass
+            else:
+                assert False, "KeyError not raised"
+        """
+        rc, out, err = script_helper.assert_python_ok("-c", code)
+        self.assertEqual(rc, 0)
+        self.assertFalse(out, msg=out.decode('utf-8'))
+        self.assertFalse(err, msg=err.decode('utf-8'))
 
 if __name__ == '__main__':
     unittest.main()

_______________________________________________
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