]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Merged revisions 73079 via svnmerge from
authorR. David Murray <rdmurray@bitdance.com>
Sun, 31 May 2009 20:03:27 +0000 (20:03 +0000)
committerR. David Murray <rdmurray@bitdance.com>
Sun, 31 May 2009 20:03:27 +0000 (20:03 +0000)
svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r73079 | r.david.murray | 2009-05-31 15:44:27 -0400 (Sun, 31 May 2009) | 11 lines

  Merged revisions 73077 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r73077 | r.david.murray | 2009-05-31 15:15:57 -0400 (Sun, 31 May 2009) | 4 lines

    Issue 3848: document the fact that epoll register raises an IOError if
    an fd is registered twice, and add some additional epoll tests.  Patch
    by Christian Heimes.
  ........
................

Doc/library/select.rst
Lib/test/test_epoll.py

index 48e289af7d2fd6bb9f61ec716fc01d4d1c67d3b7..6dbf16f83472f10b29f744f5d6977ae7327fe46d 100644 (file)
@@ -154,6 +154,11 @@ Edge and Level Trigger Polling (epoll) Objects
 
    Register a fd descriptor with the epoll object.
 
+   .. note::
+
+     Registering a file descriptor that's already registered raises an
+     IOError -- contrary to :ref:`poll-objects`'s register.
+
 
 .. method:: epoll.modify(fd, eventmask)
 
index b1ca322669888a0f3e110ae694f2943f159503ef..1bab6325ec56fa93bd7d32a082c9b6151b6b2691 100644 (file)
@@ -95,6 +95,34 @@ class TestEPoll(unittest.TestCase):
         finally:
             ep.close()
 
+        # adding by object w/ fileno works, too.
+        ep = select.epoll(2)
+        try:
+            ep.register(server, select.EPOLLIN | select.EPOLLOUT)
+            ep.register(client, select.EPOLLIN | select.EPOLLOUT)
+        finally:
+            ep.close()
+
+        ep = select.epoll(2)
+        try:
+            # TypeError: argument must be an int, or have a fileno() method.
+            self.assertRaises(TypeError, ep.register, object(),
+                select.EPOLLIN | select.EPOLLOUT)
+            self.assertRaises(TypeError, ep.register, None,
+                select.EPOLLIN | select.EPOLLOUT)
+            # ValueError: file descriptor cannot be a negative integer (-1)
+            self.assertRaises(ValueError, ep.register, -1,
+                select.EPOLLIN | select.EPOLLOUT)
+            # IOError: [Errno 9] Bad file descriptor
+            self.assertRaises(IOError, ep.register, 10000,
+                select.EPOLLIN | select.EPOLLOUT)
+            # registering twice also raises an exception
+            ep.register(server, select.EPOLLIN | select.EPOLLOUT)
+            self.assertRaises(IOError, ep.register, server,
+                select.EPOLLIN | select.EPOLLOUT)
+        finally:
+            ep.close()
+
     def test_fromfd(self):
         server, client = self._connected_pair()