8000 add test · python/cpython@322eab9 · GitHub
[go: up one dir, main page]

Skip to content

Commit 322eab9

Browse files
committed
add test
1 parent 17d60d1 commit 322eab9

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

Lib/test/test_capi/test_list.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,18 @@ def test_list_check_exact(self):
3333

3434
def test_list_new(self):
3535
list_new = _testcapi.list_new
36-
lst = list_new()
36+
lst = list_new(0)
3737
self.assertEqual(lst, [])
3838
self.assertIs(type(lst), list)
39-
lst2 = list_new()
39+
lst2 = list_new(0)
4040
self.assertIsNot(lst2, lst)
41+
42+
def test_list_size(self):
43+
size = _testcapi.list_size
44+
self.assertEqual(size([1, 2]), 2)
45+
self.assertEqual(size(ListSubclass([1, 2])), 2)
46+
self.assertRaises(SystemError, size, UserList())
47+
self.assertRaises(SystemError, size, {})
48+
self.assertRaises(SystemError, size, 23)
49+
self.assertRaises(SystemError, size, object())
50+
# CRASHES size(NULL)

Modules/_testcapi/list.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,22 @@ list_check_exact(PyObject* Py_UNUSED(module), PyObject *obj)
1818
static PyObject *
1919
list_new(PyObject *self, PyObject *obj)
2020
{
21-
return PyList_New(obj);
21+
return PyList_New(PyLong_AsSsize_t(obj));
2222
}
2323

24+
static PyObject *
25+
list_size(PyObject *Py_UNUSED(module), PyObject *obj)
26+
{
27+
NULLABLE(obj);
28+
RETURN_SIZE(PyList_Size(obj));
29+
}
2430

2531
static PyMethodDef test_methods[] = {
2632
{"list_check", list_check, METH_O},
2733
{"list_check_exact", list_check_exact, METH_O},
28-
{"list_new", list_new, METH_NOARGS},
34+
{"list_new", list_new, METH_O},
35+
{"list_size", list_size, METH_O},
36+
2937
};
3038

3139
int

0 commit comments

Comments
 (0)
0