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