Fixed test by checking string argument properly.

pull/13171/head
Joshua Haberman 3 years ago
parent 3e55eea0e1
commit e613af9e87
  1. 18
      python/descriptor_pool.c
  2. 1
      python/pb_unit_tests/descriptor_pool_test_wrapper.py
  3. 7
      python/protobuf.c
  4. 1
      python/protobuf.h

@ -310,7 +310,7 @@ static PyObject* PyUpb_DescriptorPool_FindFileByName(PyObject* _self,
PyObject* arg) {
PyUpb_DescriptorPool* self = (PyUpb_DescriptorPool*)_self;
const char* name = PyUpb_GetStrData(arg);
const char* name = PyUpb_CheckStrData(arg);
if (!name) return NULL;
const upb_FileDef* file = upb_DefPool_FindFileByName(self->symtab, name);
@ -335,7 +335,7 @@ static PyObject* PyUpb_DescriptorPool_FindExtensionByName(PyObject* _self,
PyObject* arg) {
PyUpb_DescriptorPool* self = (PyUpb_DescriptorPool*)_self;
const char* name = PyUpb_GetStrData(arg);
const char* name = PyUpb_CheckStrData(arg);
if (!name) return NULL;
const upb_FieldDef* field =
@ -361,7 +361,7 @@ static PyObject* PyUpb_DescriptorPool_FindMessageTypeByName(PyObject* _self,
PyObject* arg) {
PyUpb_DescriptorPool* self = (PyUpb_DescriptorPool*)_self;
const char* name = PyUpb_GetStrData(arg);
const char* name = PyUpb_CheckStrData(arg);
if (!name) return NULL;
const upb_MessageDef* m = upb_DefPool_FindMessageByName(self->symtab, name);
@ -397,7 +397,7 @@ static PyObject* PyUpb_DescriptorPool_FindFieldByName(PyObject* _self,
PyObject* arg) {
PyUpb_DescriptorPool* self = (PyUpb_DescriptorPool*)_self;
const char* name = PyUpb_GetStrData(arg);
const char* name = PyUpb_CheckStrData(arg);
if (!name) return NULL;
size_t parent_size;
@ -433,7 +433,7 @@ static PyObject* PyUpb_DescriptorPool_FindEnumTypeByName(PyObject* _self,
PyObject* arg) {
PyUpb_DescriptorPool* self = (PyUpb_DescriptorPool*)_self;
const char* name = PyUpb_GetStrData(arg);
const char* name = PyUpb_CheckStrData(arg);
if (!name) return NULL;
const upb_EnumDef* e = upb_DefPool_FindEnumByName(self->symtab, name);
@ -458,7 +458,7 @@ static PyObject* PyUpb_DescriptorPool_FindOneofByName(PyObject* _self,
PyObject* arg) {
PyUpb_DescriptorPool* self = (PyUpb_DescriptorPool*)_self;
const char* name = PyUpb_GetStrData(arg);
const char* name = PyUpb_CheckStrData(arg);
if (!name) return NULL;
size_t parent_size;
@ -485,7 +485,7 @@ static PyObject* PyUpb_DescriptorPool_FindServiceByName(PyObject* _self,
PyObject* arg) {
PyUpb_DescriptorPool* self = (PyUpb_DescriptorPool*)_self;
const char* name = PyUpb_GetStrData(arg);
const char* name = PyUpb_CheckStrData(arg);
if (!name) return NULL;
const upb_ServiceDef* s = upb_DefPool_FindServiceByName(self->symtab, name);
@ -504,7 +504,7 @@ static PyObject* PyUpb_DescriptorPool_FindMethodByName(PyObject* _self,
PyObject* arg) {
PyUpb_DescriptorPool* self = (PyUpb_DescriptorPool*)_self;
const char* name = PyUpb_GetStrData(arg);
const char* name = PyUpb_CheckStrData(arg);
if (!name) return NULL;
size_t parent_size;
const char* child = PyUpb_DescriptorPool_SplitSymbolName(name, &parent_size);
@ -530,7 +530,7 @@ static PyObject* PyUpb_DescriptorPool_FindFileContainingSymbol(PyObject* _self,
PyObject* arg) {
PyUpb_DescriptorPool* self = (PyUpb_DescriptorPool*)_self;
const char* name = PyUpb_GetStrData(arg);
const char* name = PyUpb_CheckStrData(arg);
if (!name) return NULL;
const upb_FileDef* f =

@ -31,7 +31,6 @@ import copy
# In the new extension we simply don't define them at all.
descriptor_pool_test.AddDescriptorTest.testAddTypeError.__unittest_expecting_failure__ = True
descriptor_pool_test.CreateDescriptorPoolTest.testFindTypeErrors.__unittest_expecting_failure__ = True
descriptor_pool_test.SecondaryDescriptorFromDescriptorDB.testErrorCollector.__unittest_expecting_failure__ = True
if __name__ == '__main__':

@ -302,6 +302,13 @@ const char* PyUpb_GetStrData(PyObject* obj) {
}
}
const char* PyUpb_CheckStrData(PyObject* obj) {
const char* ret = PyUpb_GetStrData(obj);
if (ret) return ret;
PyErr_Format(PyExc_TypeError, "Expected string: %S", obj);
return NULL;
}
PyObject* PyUpb_Forbidden_New(PyObject* cls, PyObject* args, PyObject* kwds) {
PyObject* name = PyObject_GetAttrString(cls, "__name__");
PyErr_Format(PyExc_RuntimeError,

@ -207,5 +207,6 @@ static inline PyObject* PyUpb_NewRef(PyObject* obj) {
}
const char* PyUpb_GetStrData(PyObject* obj);
const char* PyUpb_CheckStrData(PyObject* obj);
#endif // PYUPB_PROTOBUF_H__

Loading…
Cancel
Save