| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
Signed-off-by: kalyanr <kalyan.ben10@live.com>
…o kalyan/test-capi-list Signed-off-by: kalyanr <kalyan.ben10@live.com>
…i-list Signed-off-by: kalyanr <kalyan.ben10@live.com>
|
@serhiy-storchaka , Is adding {NULL}, to test_methods[] necessary? yesterday, i was able to run make without any issues. Today, after taking the pull from main, its been failing. below are the details static PyMethodDef test_methods[] = {
{"list_check", list_check, METH_O},
{"list_check_exact", list_check_exact, METH_O},
{"list_new", list_new, METH_O},
{"list_size", list_size, METH_O},
};
Fails with (base) kalyan@rawwar:~/oss/python-projects/cpython$ make
gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I./Include/internal/mimalloc -I. -I./Include -fPIC -c ./Modules/_testcapi/list.c -o Modules/_testcapi/list.o
gcc -shared Modules/_testcapimodule.o Modules/_testcapi/vectorcall.o Modules/_testcapi/vectorcall_limited.o Modules/_testcapi/heaptype.o Modules/_testcapi/abstract.o Modules/_testcapi/bytearray.o Modules/_testcapi/bytes.o Modules/_testcapi/unicode.o Modules/_testcapi/dict.o Modules/_testcapi/set.o Modules/_testcapi/list.o Modules/_testcapi/tuple.o Modules/_testcapi/getargs.o Modules/_testcapi/datetime.o Modules/_testcapi/docstring.o Modules/_testcapi/mem.o Modules/_testcapi/watchers.o Modules/_testcapi/long.o Modules/_testcapi/float.o Modules/_testcapi/complex.o Modules/_testcapi/numbers.o Modules/_testcapi/structmember.o Modules/_testcapi/exceptions.o Modules/_testcapi/code.o Modules/_testcapi/buffer.o Modules/_testcapi/pyatomic.o Modules/_testcapi/pyos.o Modules/_testcapi/file.o Modules/_testcapi/codec.o Modules/_testcapi/immortal.o Modules/_testcapi/heaptype_relative.o Modules/_testcapi/gc.o Modules/_testcapi/sys.o -o Modules/_testcapi.cpython-313-x86_64-linux-gnu.so
[ERROR] Importing extension '_testcapi' failed!
Traceback (most recent call last):
File "/home/kalyan/oss/python-projects/cpython/./Tools/build/check_extension_modules.py", line 412, in check_module_import
bootstrap_load(spec)
File "<frozen importlib._bootstrap>", line 960, in _load
File "<frozen importlib._bootstrap>", line 915, in _load_unlocked
File "<frozen importlib._bootstrap>", line 813, in module_from_spec
File "<frozen importlib._bootstrap_external>", line 1302, in create_module
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
ValueError: module functions cannot set METH_CLASS or METH_STATIC
Traceback (most recent call last):
File "/home/kalyan/oss/python-projects/cpython/./Tools/build/check_extension_modules.py", line 483, in <module>
main()
File "/home/kalyan/oss/python-projects/cpython/./Tools/build/check_extension_modules.py", line 474, in main
checker.check()
File "/home/kalyan/oss/python-projects/cpython/./Tools/build/check_extension_modules.py", line 171, in check
self.check_module_import(modinfo)
File "/home/kalyan/oss/python-projects/cpython/./Tools/build/check_extension_modules.py", line 412, in check_module_import
bootstrap_load(spec)
File "<frozen importlib._bootstrap>", line 960, in _load
File "<frozen importlib._bootstrap>", line 915, in _load_unlocked
File "<frozen importlib._bootstrap>", line 813, in module_from_spec
File "<frozen importlib._bootstrap_external>", line 1302, in create_module
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
ValueError: module functions cannot set METH_CLASS or METH_STATIC
make: *** [Makefile:1177: checksharedmods] Error 1
But, when I include {NULL} like below, I am able to run make without any issues: static PyMethodDef test_methods[] = {
{"list_check", list_check, METH_O},
{"list_check_exact", list_check_exact, METH_O},
{"list_new", list_new, METH_O},
{"list_size", list_size, METH_O},
{NULL},
};
|
Sorry, something went wrong.
There was a problem hiding this comment.
Oh! I wrote a very similar PR yesterday! I have a few more tests.
Sorry, something went wrong.
There was a problem hiding this comment.
Sorry, something went wrong.
| 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.
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.
Sorry, something went wrong.
There was a problem hiding this comment.
For methods like slice, they accept multiple Py_ssize_t parameters. Should each of these parameters be tested with the values you mentioned?
Sorry, something went wrong.
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
|
@vstinner , What can we do now? I'm not sure If I should continue working on this PR? Although, I also added tests for Py_LIMITED_API ones as well. |
Sorry, something went wrong.
Signed-off-by: kalyanr <kalyan.ben10@live.com>
| } | ||
| NULLABLE(obj); | ||
| NULLABLE(value); | ||
| RETURN_INT(PyList_SetSlice(obj, ilow, ihigh, Py_XNewRef(value))); |
There was a problem hiding this comment.
Py_XNewRef() is wrong and causes a reference leak.
Sorry, something went wrong.
| } | ||
| NULLABLE(obj); | ||
| NULLABLE(value); | ||
| RETURN_INT(PyList_Append(obj, Py_XNewRef(value))); |
There was a problem hiding this comment.
Py_XNewRef() is wrong and causes a reference leak.
Sorry, something went wrong.
There was a problem hiding this comment.
Sorry, something went wrong.
| self.assertRaises(TypeError, setitem, lst, 1.5, 10) | ||
| self.assertRaises(TypeError, setitem, 23, 'a', 5) |
There was a problem hiding this comment.
It only tests the wrapper, not the C API function.
Sorry, something went wrong.
|
I merged your PR @rawwar, thanks for adding tests for the PyList API! |
Sorry, something went wrong.
(cherry picked from commit a3903c8) Co-authored-by: Kalyan <kalyan.ben10@live.com> Signed-off-by: kalyanr <kalyan.ben10@live.com> Co-authored-by: Serhiy Storchaka <storchaka@gmail.com> Co-authored-by: Victor Stinner <vstinner@python.org>
|
GH-111861 is a backport of this pull request to the 3.12 branch. |
Sorry, something went wrong.
(cherry picked from commit a3903c8) Signed-off-by: kalyanr <kalyan.ben10@live.com> Co-authored-by: Kalyan <kalyan.ben10@live.com> Co-authored-by: Serhiy Storchaka <storchaka@gmail.com> Co-authored-by: Victor Stinner <vstinner@python.org>
Signed-off-by: kalyanr <kalyan.ben10@live.com> Co-authored-by: Serhiy Storchaka <storchaka@gmail.com> Co-authored-by: Victor Stinner <vstinner@python.org>
Signed-off-by: kalyanr <kalyan.ben10@live.com> Co-authored-by: Serhiy Storchaka <storchaka@gmail.com> Co-authored-by: Victor Stinner <vstinner@python.org>
| Back | FazBrowse Home | New Git URL |
Adding tests for PyList C API - Issue #111495