]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-107178: Remove _testcapi.test_dict_capi() (#108436)
authorVictor Stinner <vstinner@python.org>
Thu, 24 Aug 2023 17:43:29 +0000 (19:43 +0200)
committerGitHub <noreply@github.com>
Thu, 24 Aug 2023 17:43:29 +0000 (17:43 +0000)
The new _testcapi.test_dict tests are more complete,
_testcapi.test_dict_capi() became redundant.

Modules/_testcapimodule.c

index 7086d321d4aaa24f91f284a09113da80d6ee6d1a..6a1eba3a0de217220e4a9d82256608258951942a 100644 (file)
@@ -3318,196 +3318,6 @@ test_weakref_capi(PyObject *Py_UNUSED(module), PyObject *Py_UNUSED(args))
 }
 
 
-static PyObject *
-test_dict_capi(PyObject *Py_UNUSED(module), PyObject *Py_UNUSED(args))
-{
-    assert(!PyErr_Occurred());
-
-    PyObject *dict= NULL, *key = NULL, *missing_key = NULL, *value = NULL;
-    PyObject *invalid_key = NULL;
-    int res;
-
-    // test PyDict_New()
-    dict = PyDict_New();
-    if (dict == NULL) {
-        goto error;
-    }
-
-    key = PyUnicode_FromString("key");
-    if (key == NULL) {
-        goto error;
-    }
-
-    missing_key = PyUnicode_FromString("missing_key");
-    if (missing_key == NULL) {
-        goto error;
-    }
-
-    value = PyUnicode_FromString("value");
-    if (value == NULL) {
-        goto error;
-    }
-
-    // test PyDict_SetItem()
-    Py_ssize_t key_refcnt = Py_REFCNT(key);
-    Py_ssize_t value_refcnt = Py_REFCNT(value);
-    res = PyDict_SetItem(dict, key, value);
-    if (res < 0) {
-        goto error;
-    }
-    assert(res == 0);
-    assert(Py_REFCNT(key) == (key_refcnt + 1));
-    assert(Py_REFCNT(value) == (value_refcnt + 1));
-
-    // test PyDict_SetItemString()
-    res = PyDict_SetItemString(dict, "key", value);
-    if (res < 0) {
-        goto error;
-    }
-    assert(res == 0);
-    assert(Py_REFCNT(key) == (key_refcnt + 1));
-    assert(Py_REFCNT(value) == (value_refcnt + 1));
-
-    // test PyDict_Size()
-    assert(PyDict_Size(dict) == 1);
-
-    // test PyDict_Contains(), key is present
-    assert(PyDict_Contains(dict, key) == 1);
-
-    // test PyDict_GetItem(), key is present
-    assert(PyDict_GetItem(dict, key) == value);
-
-    // test PyDict_GetItemString(), key is present
-    assert(PyDict_GetItemString(dict, "key") == value);
-
-    // test PyDict_GetItemWithError(), key is present
-    assert(PyDict_GetItemWithError(dict, key) == value);
-    assert(!PyErr_Occurred());
-
-    // test PyDict_GetItemRef(), key is present
-    PyObject *get_value = Py_Ellipsis;  // marker value
-    assert(PyDict_GetItemRef(dict, key, &get_value) == 1);
-    assert(get_value == value);
-    Py_DECREF(get_value);
-
-    // test PyDict_GetItemStringRef(), key is present
-    get_value = Py_Ellipsis;  // marker value
-    assert(PyDict_GetItemStringRef(dict, "key", &get_value) == 1);
-    assert(get_value == value);
-    Py_DECREF(get_value);
-
-    // test PyDict_Contains(), missing key
-    assert(PyDict_Contains(dict, missing_key) == 0);
-
-    // test PyDict_GetItem(), missing key
-    assert(PyDict_GetItem(dict, missing_key) == NULL);
-    assert(!PyErr_Occurred());
-
-    // test PyDict_GetItemString(), missing key
-    assert(PyDict_GetItemString(dict, "missing_key") == NULL);
-    assert(!PyErr_Occurred());
-
-    // test PyDict_GetItemWithError(), missing key
-    assert(PyDict_GetItem(dict, missing_key) == NULL);
-    assert(!PyErr_Occurred());
-
-    // test PyDict_GetItemRef(), missing key
-    get_value = Py_Ellipsis;  // marker value
-    assert(PyDict_GetItemRef(dict, missing_key, &get_value) == 0);
-    assert(!PyErr_Occurred());
-    assert(get_value == NULL);
-
-    // test PyDict_GetItemStringRef(), missing key
-    get_value = Py_Ellipsis;  // marker value
-    assert(PyDict_GetItemStringRef(dict, "missing_key", &get_value) == 0);
-    assert(!PyErr_Occurred());
-    assert(get_value == NULL);
-
-    // test PyDict_GetItem(), invalid dict
-    PyObject *invalid_dict = key;  // borrowed reference
-    assert(PyDict_GetItem(invalid_dict, key) == NULL);
-    assert(!PyErr_Occurred());
-
-    // test PyDict_GetItemWithError(), invalid dict
-    assert(PyDict_GetItemWithError(invalid_dict, key) == NULL);
-    assert(PyErr_ExceptionMatches(PyExc_SystemError));
-    PyErr_Clear();
-
-    // test PyDict_GetItemRef(), invalid dict
-    get_value = Py_Ellipsis;  // marker value
-    assert(PyDict_GetItemRef(invalid_dict, key, &get_value) == -1);
-    assert(PyErr_ExceptionMatches(PyExc_SystemError));
-    PyErr_Clear();
-    assert(get_value == NULL);
-
-    // test PyDict_GetItemStringRef(), invalid dict
-    get_value = Py_Ellipsis;  // marker value
-    assert(PyDict_GetItemStringRef(invalid_dict, "key", &get_value) == -1);
-    assert(PyErr_ExceptionMatches(PyExc_SystemError));
-    PyErr_Clear();
-    assert(get_value == NULL);
-
-    invalid_key = PyList_New(0);
-    if (invalid_key == NULL) {
-        goto error;
-    }
-
-    // test PyDict_Contains(), invalid key
-    assert(PyDict_Contains(dict, invalid_key) == -1);
-    assert(PyErr_ExceptionMatches(PyExc_TypeError));
-    PyErr_Clear();
-
-    // test PyDict_GetItem(), invalid key
-    assert(PyDict_GetItem(dict, invalid_key) == NULL);
-    assert(!PyErr_Occurred());
-
-    // test PyDict_GetItemWithError(), invalid key
-    assert(PyDict_GetItemWithError(dict, invalid_key) == NULL);
-    assert(PyErr_ExceptionMatches(PyExc_TypeError));
-    PyErr_Clear();
-
-    // test PyDict_GetItemRef(), invalid key
-    get_value = Py_Ellipsis;  // marker value
-    assert(PyDict_GetItemRef(dict, invalid_key, &get_value) == -1);
-    assert(PyErr_ExceptionMatches(PyExc_TypeError));
-    PyErr_Clear();
-    assert(get_value == NULL);
-
-    // test PyDict_DelItem(), key is present
-    assert(PyDict_DelItem(dict, key) == 0);
-    assert(PyDict_Size(dict) == 0);
-
-    // test PyDict_DelItem(), missing key
-    assert(PyDict_DelItem(dict, missing_key) == -1);
-    assert(PyErr_ExceptionMatches(PyExc_KeyError));
-    PyErr_Clear();
-
-    // test PyDict_DelItem(), invalid key
-    assert(PyDict_DelItem(dict, invalid_key) == -1);
-    assert(PyErr_ExceptionMatches(PyExc_TypeError));
-    PyErr_Clear();
-
-    // test PyDict_Clear()
-    PyDict_Clear(dict);
-
-    Py_DECREF(dict);
-    Py_DECREF(key);
-    Py_DECREF(missing_key);
-    Py_DECREF(value);
-    Py_DECREF(invalid_key);
-
-    Py_RETURN_NONE;
-
-error:
-    Py_XDECREF(dict);
-    Py_XDECREF(key);
-    Py_XDECREF(missing_key);
-    Py_XDECREF(value);
-    Py_XDECREF(invalid_key);
-    return NULL;
-}
-
-
 static PyObject *
 sys_getobject(PyObject *Py_UNUSED(module), PyObject *arg)
 {
@@ -3670,7 +3480,6 @@ static PyMethodDef TestMethods[] = {
     {"function_set_kw_defaults", function_set_kw_defaults, METH_VARARGS, NULL},
     {"check_pyimport_addmodule", check_pyimport_addmodule, METH_VARARGS},
     {"test_weakref_capi", test_weakref_capi, METH_NOARGS},
-    {"test_dict_capi", test_dict_capi, METH_NOARGS},
     {"sys_getobject", sys_getobject, METH_O},
     {"sys_setobject", sys_setobject, METH_VARARGS},
     {NULL, NULL} /* sentinel */