[Python-checkins] [3.9] bpo-44984: Rewrite test_null_strings in _testcapi (GH-27904) (GH-27910)
ambv
webhook-mailer at python.org
Mon Aug 23 14:48:13 EDT 2021
https://github.com/python/cpython/commit/b0df288c946143352237f28c78481d935ba1502c
commit: b0df288c946143352237f28c78481d935ba1502c
branch: 3.9
author: Łukasz Langa <lukasz at langa.pl>
committer: ambv <lukasz at langa.pl>
date: 2021-08-23T20:48:04+02:00
summary:
[3.9] bpo-44984: Rewrite test_null_strings in _testcapi (GH-27904) (GH-27910)
Test also PyObject_Repr(NULL) and PyObject_Bytes(NULL)..
(cherry picked from commit 4d689173861257c69adc6dc1dca4171946ddb57f)
Co-authored-by: Serhiy Storchaka <storchaka at gmail.com>
files:
M Lib/test/test_capi.py
M Modules/_testcapimodule.c
diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py
index b21c3acf39b245..0cbe839665e3f6 100644
--- a/Lib/test/test_capi.py
+++ b/Lib/test/test_capi.py
@@ -537,6 +537,18 @@ def test_pynumber_tobase(self):
self.assertRaises(TypeError, pynumber_tobase, '123', 10)
self.assertRaises(SystemError, pynumber_tobase, 123, 0)
+ def test_pyobject_repr_from_null(self):
+ s = _testcapi.pyobject_repr_from_null()
+ self.assertEqual(s, '<NULL>')
+
+ def test_pyobject_str_from_null(self):
+ s = _testcapi.pyobject_str_from_null()
+ self.assertEqual(s, '<NULL>')
+
+ def test_pyobject_bytes_from_null(self):
+ s = _testcapi.pyobject_bytes_from_null()
+ self.assertEqual(s, b'<NULL>')
+
class TestPendingCalls(unittest.TestCase):
diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c
index 53a6752d5fb2b1..f6558caee9e346 100644
--- a/Modules/_testcapimodule.c
+++ b/Modules/_testcapimodule.c
@@ -2215,16 +2215,22 @@ test_long_numbits(PyObject *self, PyObject *Py_UNUSED(ignored))
Py_RETURN_NONE;
}
-/* Example passing NULLs to PyObject_Str(NULL). */
+static PyObject *
+pyobject_repr_from_null(PyObject *self, PyObject *Py_UNUSED(ignored))
+{
+ return PyObject_Repr(NULL);
+}
static PyObject *
-test_null_strings(PyObject *self, PyObject *Py_UNUSED(ignored))
+pyobject_str_from_null(PyObject *self, PyObject *Py_UNUSED(ignored))
{
- PyObject *o1 = PyObject_Str(NULL), *o2 = PyObject_Str(NULL);
- PyObject *tuple = PyTuple_Pack(2, o1, o2);
- Py_XDECREF(o1);
- Py_XDECREF(o2);
- return tuple;
+ return PyObject_Str(NULL);
+}
+
+static PyObject *
+pyobject_bytes_from_null(PyObject *self, PyObject *Py_UNUSED(ignored))
+{
+ return PyObject_Bytes(NULL);
}
static PyObject *
@@ -5371,7 +5377,9 @@ static PyMethodDef TestMethods[] = {
{"test_k_code", test_k_code, METH_NOARGS},
{"test_empty_argparse", test_empty_argparse, METH_NOARGS},
{"parse_tuple_and_keywords", parse_tuple_and_keywords, METH_VARARGS},
- {"test_null_strings", test_null_strings, METH_NOARGS},
+ {"pyobject_repr_from_null", pyobject_repr_from_null, METH_NOARGS},
+ {"pyobject_str_from_null", pyobject_str_from_null, METH_NOARGS},
+ {"pyobject_bytes_from_null", pyobject_bytes_from_null, METH_NOARGS},
{"test_string_from_format", (PyCFunction)test_string_from_format, METH_NOARGS},
{"test_with_docstring", test_with_docstring, METH_NOARGS,
PyDoc_STR("This is a pretty normal docstring.")},
More information about the Python-checkins
mailing list