-
-
Notifications
You must be signed in to change notification settings - Fork 30.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
gh-111495: Add tests for PyList C API #111562
Conversation
Signed-off-by: kalyanr <[email protected]>
…o kalyan/test-capi-list Signed-off-by: kalyanr <[email protected]>
…i-list Signed-off-by: kalyanr <[email protected]>
@serhiy-storchaka , Is adding
Fails with
But, when I include
|
Signed-off-by: kalyanr <[email protected]>
Signed-off-by: kalyanr <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh! I wrote a very similar PR yesterday! I have a few more tests.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lib/test/test_capi/test_list.py
Outdated
lst = [1, 2, NULL] | ||
self.assertEqual(getitem(lst, 0), 1) | ||
self.assertRaises(IndexError, getitem, lst, -1) | ||
self.assertRaises(IndexError, getitem, lst, 10) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add tests for index equal to the size of the list, PY_SSIZE_T_MIN
, PY_SSIZE_T_MAX
(imported from _testcapi
).
All functions that have Py_ssize_t parameter should be tested with the following values: 0, size-1, -1, size, PY_SSIZE_T_MIN
, PY_SSIZE_T_MAX
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For methods like slice
, they accept multiple Py_ssize_t
parameters. Should each of these parameters be tested with the values you mentioned?
Signed-off-by: kalyanr <[email protected]>
Co-authored-by: Serhiy Storchaka <[email protected]>
Co-authored-by: Serhiy Storchaka <[email protected]>
Co-authored-by: Serhiy Storchaka <[email protected]>
Co-authored-by: Serhiy Storchaka <[email protected]>
@vstinner , What can we do now? I'm not sure If I should continue working on this PR? Although, I also added tests for |
Signed-off-by: kalyanr <[email protected]>
Modules/_testcapi/list.c
Outdated
} | ||
NULLABLE(obj); | ||
NULLABLE(value); | ||
RETURN_INT(PyList_SetSlice(obj, ilow, ihigh, Py_XNewRef(value))); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Py_XNewRef() is wrong and causes a reference leak.
Modules/_testcapi/list.c
Outdated
} | ||
NULLABLE(obj); | ||
NULLABLE(value); | ||
RETURN_INT(PyList_Append(obj, Py_XNewRef(value))); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Py_XNewRef() is wrong and causes a reference leak.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lib/test/test_capi/test_list.py
Outdated
self.assertRaises(TypeError, setitem, lst, 1.5, 10) | ||
self.assertRaises(TypeError, setitem, 23, 'a', 5) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It only tests the wrapper, not the C API function.
I merged your PR @rawwar, thanks for adding tests for the PyList API! |
(cherry picked from commit a3903c8) Co-authored-by: Kalyan <[email protected]> Signed-off-by: kalyanr <[email protected]> Co-authored-by: Serhiy Storchaka <[email protected]> Co-authored-by: Victor Stinner <[email protected]>
GH-111861 is a backport of this pull request to the 3.12 branch. |
(cherry picked from commit a3903c8) Signed-off-by: kalyanr <[email protected]> Co-authored-by: Kalyan <[email protected]> Co-authored-by: Serhiy Storchaka <[email protected]> Co-authored-by: Victor Stinner <[email protected]>
Signed-off-by: kalyanr <[email protected]> Co-authored-by: Serhiy Storchaka <[email protected]> Co-authored-by: Victor Stinner <[email protected]>
Signed-off-by: kalyanr <[email protected]> Co-authored-by: Serhiy Storchaka <[email protected]> Co-authored-by: Victor Stinner <[email protected]>
Adding tests for PyList C API - Issue #111495