Author: Tobias Oberstein <[email protected]>
Branch: kqueue
Changeset: r53200:58b8b3f12824
Date: 2012-03-04 15:21 +0100
http://bitbucket.org/pypy/pypy/changeset/58b8b3f12824/

Log:    Add missing test from CPy, fix types.

diff --git a/pypy/module/select/interp_kqueue.py 
b/pypy/module/select/interp_kqueue.py
--- a/pypy/module/select/interp_kqueue.py
+++ b/pypy/module/select/interp_kqueue.py
@@ -20,11 +20,11 @@
 
 
 CConfig.kevent = rffi_platform.Struct("struct kevent", [
-    ("ident", rffi.UINT),
+    ("ident", rffi.SIZE_T), # uintptr_t
     ("filter", rffi.SHORT),
     ("flags", rffi.USHORT),
     ("fflags", rffi.UINT),
-    ("data", rffi.INT),
+    ("data", rffi.SSIZE_T), # intptr_t
     ("udata", rffi.VOIDP),
 ])
 
@@ -78,9 +78,12 @@
 syscall_kevent = rffi.llexternal(
     "kevent",
     [rffi.INT,
-     lltype.Ptr(rffi.CArray(kevent)), rffi.INT,
-     lltype.Ptr(rffi.CArray(kevent)), rffi.INT,
-     lltype.Ptr(timespec)],
+     lltype.Ptr(rffi.CArray(kevent)),
+     rffi.INT,
+     lltype.Ptr(rffi.CArray(kevent)),
+     rffi.INT,
+     lltype.Ptr(timespec)
+    ],
     rffi.INT,
     compilation_info=eci
 )
@@ -220,7 +223,7 @@
         if self.event:
             lltype.free(self.event, flavor="raw")
 
-    @unwrap_spec(filter=int, flags=int, fflags=int, data=int, udata=int)
+    @unwrap_spec(filter=int, flags=int, fflags=rffi.r_uint, data=int, 
udata=rffi.r_uint)
     def descr__init__(self, space, w_ident, filter=KQ_FILTER_READ, 
flags=KQ_EV_ADD, fflags=0, data=0, udata=0):
         ident = space.c_filedescriptor_w(w_ident)
 
@@ -299,7 +302,7 @@
         return space.wrap(self.event.c_data)
 
     def descr_get_udata(self, space):
-        return space.wrap(rffi.cast(rffi.INT, self.event.c_udata))
+        return space.wrap(rffi.cast(rffi.SIZE_T, self.event.c_udata))
 
 
 W_Kevent.typedef = TypeDef("select.kevent",
diff --git a/pypy/module/select/test/test_kqueue.py 
b/pypy/module/select/test/test_kqueue.py
--- a/pypy/module/select/test/test_kqueue.py
+++ b/pypy/module/select/test/test_kqueue.py
@@ -75,6 +75,18 @@
         assert ev == ev
         assert ev != other
 
+        bignum = sys.maxsize * 2 + 1
+        fd = sys.maxsize
+        ev = select.kevent(fd, 1, 2, bignum, sys.maxsize, bignum)
+        assert ev.ident == fd
+        assert ev.filter == 1
+        assert ev.flags == 2
+        assert ev.fflags == bignum
+        assert ev.data == sys.maxsize
+        assert ev.udata == bignum
+        assert ev == ev
+        assert ev != other
+
     def test_queue_event(self):
         import errno
         import select
@@ -89,13 +101,10 @@
         try:
             client.connect(("127.0.0.1", server_socket.getsockname()[1]))
         except socket.error as e:
-            assert e.args[0] == errno.EINPROGRESS
-        else:
-            if sys.platform.startswith('freebsd'):
-                # FreeBSD doesn't raise an exception here
-                pass
+            if 'bsd' in sys.platform:
+                assert e.args[0] == errno.ENOENT
             else:
-                assert False, "EINPROGRESS not raised"
+                assert e.args[0] == errno.EINPROGRESS
         server, addr = server_socket.accept()
 
         if sys.platform.startswith("darwin"):
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to