[pypy-commit] pypy kqueue: Make all unit tests pass.

oberstet noreply at buildbot.pypy.org
Sun Mar 4 20:39:30 CET 2012


Author: Tobias Oberstein <tobias.oberstein at gmail.com>
Branch: kqueue
Changeset: r53196:a701fa0e939b
Date: 2012-03-03 21:12 +0100
http://bitbucket.org/pypy/pypy/changeset/a701fa0e939b/

Log:	Make all unit tests pass.

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
@@ -184,16 +184,17 @@
                 rffi.setintfield(timeout, 'c_tv_sec', sec)
                 rffi.setintfield(timeout, 'c_tv_nsec', nsec)
 
-            i = 0
-            for w_ev in space.listview(w_changelist):
-                ev = space.interp_w(W_Kevent, w_ev)
-                changelist[i].c_ident = ev.event.c_ident
-                changelist[i].c_filter = ev.event.c_filter
-                changelist[i].c_flags = ev.event.c_flags
-                changelist[i].c_fflags = ev.event.c_fflags
-                changelist[i].c_data = ev.event.c_data
-                changelist[i].c_udata = ev.event.c_udata
-                i += 1
+            if not space.is_w(w_changelist, space.w_None):
+                i = 0
+                for w_ev in space.listview(w_changelist):
+                    ev = space.interp_w(W_Kevent, w_ev)
+                    changelist[i].c_ident = ev.event.c_ident
+                    changelist[i].c_filter = ev.event.c_filter
+                    changelist[i].c_flags = ev.event.c_flags
+                    changelist[i].c_fflags = ev.event.c_fflags
+                    changelist[i].c_data = ev.event.c_data
+                    changelist[i].c_udata = ev.event.c_udata
+                    i += 1
 
             nfds = syscall_kevent(self.kqfd,
                                   changelist,
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
@@ -1,3 +1,5 @@
+# adapted from CPython: Lib/test/test_kqueue.py
+
 import py
 import sys
 
@@ -84,8 +86,16 @@
         server_socket.listen(1)
         client = socket.socket()
         client.setblocking(False)
-        exc = raises(socket.error, client.connect, ("127.0.0.1", server_socket.getsockname()[1]))
-        assert exc.value.args[0] == errno.EINPROGRESS
+        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
+            else:
+                assert False, "EINPROGRESS not raised"
         server, addr = server_socket.accept()
 
         if sys.platform.startswith("darwin"):
@@ -119,7 +129,7 @@
             events = kq1.control(None, 4, 1)
             if len(events) == 4:
                 break
-            time.sleep(.1)
+            time.sleep(1.0)
         else:
             assert False, "timeout waiting for event notification"
 


More information about the pypy-commit mailing list