A 'PyObject *' parameter in PyErr_Format must use %S parameter, not %s.
Added unittest for calling a function with paramflags.
This commit is contained in:
parent
bd1c68c94f
commit
39013cd4c0
|
@ -48,6 +48,24 @@ class CharPointersTestCase(unittest.TestCase):
|
||||||
func.restype = c_long
|
func.restype = c_long
|
||||||
func.argtypes = None
|
func.argtypes = None
|
||||||
|
|
||||||
|
def test_paramflags(self):
|
||||||
|
# function returns c_void_p result,
|
||||||
|
# and has a required parameter named 'input'
|
||||||
|
prototype = CFUNCTYPE(c_void_p, c_void_p)
|
||||||
|
func = prototype(("_testfunc_p_p", testdll),
|
||||||
|
((1, "input"),))
|
||||||
|
|
||||||
|
try:
|
||||||
|
func()
|
||||||
|
except TypeError as details:
|
||||||
|
self.failUnlessEqual(str(details), "required argument 'input' missing")
|
||||||
|
else:
|
||||||
|
self.fail("TypeError not raised")
|
||||||
|
|
||||||
|
self.failUnlessEqual(func(None), None)
|
||||||
|
self.failUnlessEqual(func(input=None), None)
|
||||||
|
|
||||||
|
|
||||||
def test_int_pointer_arg(self):
|
def test_int_pointer_arg(self):
|
||||||
func = testdll._testfunc_p_p
|
func = testdll._testfunc_p_p
|
||||||
func.restype = c_long
|
func.restype = c_long
|
||||||
|
|
|
@ -2992,7 +2992,7 @@ _get_arg(int *pindex, PyObject *name, PyObject *defval, PyObject *inargs, PyObje
|
||||||
/* we can't currently emit a better error message */
|
/* we can't currently emit a better error message */
|
||||||
if (name)
|
if (name)
|
||||||
PyErr_Format(PyExc_TypeError,
|
PyErr_Format(PyExc_TypeError,
|
||||||
"required argument '%s' missing", name);
|
"required argument '%S' missing", name);
|
||||||
else
|
else
|
||||||
PyErr_Format(PyExc_TypeError,
|
PyErr_Format(PyExc_TypeError,
|
||||||
"not enough arguments");
|
"not enough arguments");
|
||||||
|
|
Loading…
Reference in New Issue