summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_cppext/extension.cpp
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2024-12-13 13:23:20 (GMT)
committerGitHub <noreply@github.com>2024-12-13 13:23:20 (GMT)
commitd05a4e6a0d366b854a3103cae0c941811fd48c4c (patch)
treecddad0a0673df66f39b2283889d0705c99117120 /Lib/test/test_cppext/extension.cpp
parent6ff38fc4e2af8e795dc791be6ea596d2146d4119 (diff)
downloadcpython-d05a4e6a0d366b854a3103cae0c941811fd48c4c.zip
cpython-d05a4e6a0d366b854a3103cae0c941811fd48c4c.tar.gz
cpython-d05a4e6a0d366b854a3103cae0c941811fd48c4c.tar.bz2
gh-127906: Test the limited C API in test_cppext (#127916)
Diffstat (limited to 'Lib/test/test_cppext/extension.cpp')
-rw-r--r--Lib/test/test_cppext/extension.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/Lib/test/test_cppext/extension.cpp b/Lib/test/test_cppext/extension.cpp
index ab485b6..500d591 100644
--- a/Lib/test/test_cppext/extension.cpp
+++ b/Lib/test/test_cppext/extension.cpp
@@ -62,6 +62,7 @@ test_api_casts(PyObject *Py_UNUSED(module), PyObject *Py_UNUSED(args))
Py_ssize_t refcnt = Py_REFCNT(obj);
assert(refcnt >= 1);
+#ifndef Py_LIMITED_API
// gh-92138: For backward compatibility, functions of Python C API accepts
// "const PyObject*". Check that using it does not emit C++ compiler
// warnings.
@@ -74,6 +75,7 @@ test_api_casts(PyObject *Py_UNUSED(module), PyObject *Py_UNUSED(args))
assert(PyTuple_GET_SIZE(const_obj) == 2);
PyObject *one = PyTuple_GET_ITEM(const_obj, 0);
assert(PyLong_AsLong(one) == 1);
+#endif
// gh-92898: StrongRef doesn't inherit from PyObject but has an operator to
// cast to PyObject*.
@@ -106,6 +108,12 @@ test_unicode(PyObject *Py_UNUSED(module), PyObject *Py_UNUSED(args))
}
assert(PyUnicode_Check(str));
+
+ assert(PyUnicode_GetLength(str) == 3);
+ assert(PyUnicode_ReadChar(str, 0) == 'a');
+ assert(PyUnicode_ReadChar(str, 1) == 'b');
+
+#ifndef Py_LIMITED_API
assert(PyUnicode_GET_LENGTH(str) == 3);
// gh-92800: test PyUnicode_READ()
@@ -121,6 +129,7 @@ test_unicode(PyObject *Py_UNUSED(module), PyObject *Py_UNUSED(args))
assert(PyUnicode_READ(ukind, const_data, 2) == 'c');
assert(PyUnicode_READ_CHAR(str, 1) == 'b');
+#endif
Py_DECREF(str);
Py_RETURN_NONE;