Skip to content

Commit 3788c60

Browse files
committed
Add test
1 parent 2fd9d34 commit 3788c60

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

Lib/test/test_capi/test_immortal.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from test.support import import_helper
33

44
_testcapi = import_helper.import_module('_testcapi')
5+
_testinternalcapi = import_helper.import_module('_testinternalcapi')
56

67

78
class TestCAPI(unittest.TestCase):
@@ -11,6 +12,18 @@ def test_immortal_builtins(self):
1112
def test_immortal_small_ints(self):
1213
_testcapi.test_immortal_small_ints()
1314

15+
class TestInternalCAPI(unittest.TestCase):
16+
17+
def test_immortal_builtins(self):
18+
for obj in range(-5, 256):
19+
self.assertTrue(_testinternalcapi.is_static_immortal(obj))
20+
for obj in (None, True, False, ..., NotImplemented, ()):
21+
self.assertTrue(_testinternalcapi.is_static_immortal(obj))
22+
for obj in range(300, 400):
23+
self.assertFalse(_testinternalcapi.is_static_immortal(obj))
24+
for obj in ([], {}, set()):
25+
self.assertFalse(_testinternalcapi.is_static_immortal(obj))
26+
1427

1528
if __name__ == "__main__":
1629
unittest.main()

Modules/_testinternalcapi.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2082,6 +2082,15 @@ get_tracked_heap_size(PyObject *self, PyObject *Py_UNUSED(ignored))
20822082
return PyLong_FromInt64(PyInterpreterState_Get()->gc.heap_size);
20832083
}
20842084

2085+
static PyObject *
2086+
is_static_immortal(PyObject *self, PyObject *op)
2087+
{
2088+
if (_Py_IsStaticImmortal(op)) {
2089+
Py_RETURN_TRUE;
2090+
}
2091+
Py_RETURN_FALSE;
2092+
}
2093+
20852094
static PyMethodDef module_functions[] = {
20862095
{"get_configs", get_configs, METH_NOARGS},
20872096
{"get_recursion_depth", get_recursion_depth, METH_NOARGS},
@@ -2180,6 +2189,7 @@ static PyMethodDef module_functions[] = {
21802189
{"identify_type_slot_wrappers", identify_type_slot_wrappers, METH_NOARGS},
21812190
{"has_deferred_refcount", has_deferred_refcount, METH_O},
21822191
{"get_tracked_heap_size", get_tracked_heap_size, METH_NOARGS},
2192+
{"is_static_immortal", is_static_immortal, METH_O},
21832193
{NULL, NULL} /* sentinel */
21842194
};
21852195

0 commit comments

Comments
 (0)