[pypy-svn] r77773 - in pypy/branch/jitffi/pypy/module/_ffi: . test

antocuni at codespeak.net antocuni at codespeak.net
Mon Oct 11 10:58:29 CEST 2010


Author: antocuni
Date: Mon Oct 11 10:58:22 2010
New Revision: 77773

Modified:
   pypy/branch/jitffi/pypy/module/_ffi/interp_ffi.py
   pypy/branch/jitffi/pypy/module/_ffi/test/test__ffi.py
Log:
raise TypeError if the number of actual arguments is not the expected one


Modified: pypy/branch/jitffi/pypy/module/_ffi/interp_ffi.py
==============================================================================
--- pypy/branch/jitffi/pypy/module/_ffi/interp_ffi.py	(original)
+++ pypy/branch/jitffi/pypy/module/_ffi/interp_ffi.py	Mon Oct 11 10:58:22 2010
@@ -55,7 +55,14 @@
 
     @jit.unroll_safe
     def build_argchain(self, space, argtypes, args_w):
-        assert len(args_w) == len(argtypes) # XXX: raise OperationError
+        if len(args_w) != len(argtypes):
+            arg = 'arguments'
+            if len(argtypes) == 1:
+                arg = 'argument'
+            raise operationerrfmt(space.w_TypeError,
+                                  '%s() takes exactly %d %s (%d given)',
+                                  self.func.name, len(argtypes), arg, len(args_w))
+        #
         argchain = libffi.ArgChain()
         for i in range(len(args_w)):
             argtype = argtypes[i]

Modified: pypy/branch/jitffi/pypy/module/_ffi/test/test__ffi.py
==============================================================================
--- pypy/branch/jitffi/pypy/module/_ffi/test/test__ffi.py	(original)
+++ pypy/branch/jitffi/pypy/module/_ffi/test/test__ffi.py	Mon Oct 11 10:58:22 2010
@@ -84,3 +84,10 @@
         assert get_dummy() == 0
         assert set_dummy(42) is None
         assert get_dummy() == 42
+
+    def test_TypeError_numargs(self):
+        from _ffi import CDLL, types
+        libfoo = CDLL(self.libfoo_name)
+        sum_xy = libfoo.getfunc('sum_xy', [types.sint, types.sint], types.sint)
+        raises(TypeError, "sum_xy(1, 2, 3)")
+        raises(TypeError, "sum_xy(1)")



More information about the Pypy-commit mailing list