summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_capi.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_capi.py')
-rw-r--r--Lib/test/test_capi.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py
index 49cd821..95930ba 100644
--- a/Lib/test/test_capi.py
+++ b/Lib/test/test_capi.py
@@ -605,6 +605,19 @@ class CAPITest(unittest.TestCase):
del obj.value
self.assertEqual(obj.pvalue, 0)
+ def test_heaptype_with_custom_metaclass(self):
+ self.assertTrue(issubclass(_testcapi.HeapCTypeMetaclass, type))
+ self.assertTrue(issubclass(_testcapi.HeapCTypeMetaclassCustomNew, type))
+
+ t = _testcapi.pytype_fromspec_meta(_testcapi.HeapCTypeMetaclass)
+ self.assertIsInstance(t, type)
+ self.assertEqual(t.__name__, "HeapCTypeViaMetaclass")
+ self.assertIs(type(t), _testcapi.HeapCTypeMetaclass)
+
+ msg = "Metaclasses with custom tp_new are not supported."
+ with self.assertRaisesRegex(TypeError, msg):
+ t = _testcapi.pytype_fromspec_meta(_testcapi.HeapCTypeMetaclassCustomNew)
+
def test_pynumber_tobase(self):
from _testcapi import pynumber_tobase
self.assertEqual(pynumber_tobase(123, 2), '0b1111011')