Skip to content

Commit 5b949b1

Browse files
committed
Prevent tests from running twice and move is_immortal()
1 parent 0448daf commit 5b949b1

File tree

3 files changed

+22
-28
lines changed

3 files changed

+22
-28
lines changed

Lib/test/test_capi/test_immortal.py

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,22 @@
55
_testinternalcapi = import_helper.import_module('_testinternalcapi')
66

77

8-
class TestCAPI(unittest.TestCase):
9-
def test_immortal_builtins(self):
10-
_testcapi.test_immortal_builtins()
8+
class TestUnstableCAPI(unittest.TestCase):
9+
def test_immortal(self):
10+
# Not extensive
11+
known_immortals = (True, False, None, 0, ())
12+
for immortal in known_immortals:
13+
with self.subTest(immortal=immortal):
14+
self.assertTrue(_testcapi.is_immortal(immortal))
15+
16+
# Some arbitrary mutable objects
17+
non_immortals = (object(), self, [object()])
18+
for non_immortal in non_immortals:
19+
with self.subTest(non_immortal=non_immortal):
20+
self.assertFalse(_testcapi.is_immortal(non_immortal))
21+
22+
# CRASHES _testcapi.is_immortal(NULL)
1123

12-
def test_immortal_small_ints(self):
13-
_testcapi.test_immortal_small_ints()
1424

1525
class TestInternalCAPI(unittest.TestCase):
1626

@@ -27,21 +37,6 @@ def test_immortal_builtins(self):
2737
for obj in ([], {}, set()):
2838
self.assertFalse(_testinternalcapi.is_static_immortal(obj))
2939

30-
def test_immortal(self):
31-
# Not extensive
32-
known_immortals = (True, False, None, 0, ())
33-
for immortal in known_immortals:
34-
with self.subTest(immortal=immortal):
35-
self.assertTrue(_testcapi.is_immortal(immortal))
36-
37-
# Some arbitrary mutable objects
38-
non_immortals = (object(), self, [object()])
39-
for non_immortal in non_immortals:
40-
with self.subTest(non_immortal=non_immortal):
41-
self.assertFalse(_testcapi.is_immortal(non_immortal))
42-
43-
# CRASHES _testcapi.is_immortal(NULL)
44-
4540

4641
if __name__ == "__main__":
4742
unittest.main()

Modules/_testcapi/immortal.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,16 @@ test_immortal_small_ints(PyObject *self, PyObject *Py_UNUSED(ignored))
3131
Py_RETURN_NONE;
3232
}
3333

34+
static PyObject *
35+
is_immortal(PyObject *self, PyObject *op)
36+
{
37+
return PyBool_FromLong(PyUnstable_IsImmortal(op));
38+
}
39+
3440
static PyMethodDef test_methods[] = {
3541
{"test_immortal_builtins", test_immortal_builtins, METH_NOARGS},
3642
{"test_immortal_small_ints", test_immortal_small_ints, METH_NOARGS},
43+
{"is_immortal", is_immortal, METH_O}
3744
{NULL},
3845
};
3946

Modules/_testcapi/object.c

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -132,21 +132,13 @@ pyobject_enable_deferred_refcount(PyObject *self, PyObject *obj)
132132
}
133133

134134

135-
static PyObject *
136-
is_immortal(PyObject *self, PyObject *op)
137-
{
138-
return PyBool_FromLong(PyUnstable_IsImmortal(op));
139-
}
140-
141-
142135
static PyMethodDef test_methods[] = {
143136
{"call_pyobject_print", call_pyobject_print, METH_VARARGS},
144137
{"pyobject_print_null", pyobject_print_null, METH_VARARGS},
145138
{"pyobject_print_noref_object", pyobject_print_noref_object, METH_VARARGS},
146139
{"pyobject_print_os_error", pyobject_print_os_error, METH_VARARGS},
147140
{"pyobject_clear_weakrefs_no_callbacks", pyobject_clear_weakrefs_no_callbacks, METH_O},
148141
{"pyobject_enable_deferred_refcount", pyobject_enable_deferred_refcount, METH_O},
149-
{"is_immortal", is_immortal, METH_O},
150142
{NULL},
151143
};
152144

0 commit comments

Comments
 (0)