summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_class.py44
1 files changed, 30 insertions, 14 deletions
diff --git a/Lib/test/test_class.py b/Lib/test/test_class.py
index d2b6a23..b88c4d1 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 = [
@@ -933,20 +933,36 @@ class TestInlineValues(unittest.TestCase):
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()