]> granicus.if.org Git - python/commitdiff
SF patch #760257: add socket.timeout exception
authorRaymond Hettinger <python@rcn.com>
Sun, 29 Jun 2003 04:40:22 +0000 (04:40 +0000)
committerRaymond Hettinger <python@rcn.com>
Sun, 29 Jun 2003 04:40:22 +0000 (04:40 +0000)
(Contributed by Bob Halley)

Add unittests for the new socket.timeout exception.

Lib/test/test_socket.py

index ab1e7664001717681ef0fcc8c325399cff329c67..b2db601599ca25c02d96b82295c1e288e068a62b 100644 (file)
@@ -682,10 +682,65 @@ class SmallBufferedFileObjectClassTestCase(FileObjectClassTestCase):
 
     bufsize = 2 # Exercise the buffering code
 
+class TCPTimeoutTest(SocketTCPTest):
+
+    def testTCPTimeout(self):
+        def raise_timeout(*args, **kwargs):
+            self.serv.settimeout(1.0)
+            self.serv.accept()
+        self.failUnlessRaises(socket.timeout, raise_timeout,
+                              "Error generating a timeout exception (TCP)")
+
+    def testTimeoutZero(self):
+        ok = False
+        try:
+            self.serv.settimeout(0.0)
+            foo = self.serv.accept()
+        except socket.timeout:
+            self.fail("caught timeout instead of error (TCP)")
+        except socket.error:
+            ok = True
+        except:
+            self.fail("caught unexpected exception (TCP)")
+        if not ok:
+            self.fail("accept() returned success when we did not expect it")
+
+class UDPTimeoutTest(SocketTCPTest):
+
+    def testUDPTimeout(self):
+        def raise_timeout(*args, **kwargs):
+            self.serv.settimeout(1.0)
+            self.serv.recv(1024)
+        self.failUnlessRaises(socket.timeout, raise_timeout,
+                              "Error generating a timeout exception (UDP)")
+
+    def testTimeoutZero(self):
+        ok = False
+        try:
+            self.serv.settimeout(0.0)
+            foo = self.serv.recv(1024)
+        except socket.timeout:
+            self.fail("caught timeout instead of error (UDP)")
+        except socket.error:
+            ok = True
+        except:
+            self.fail("caught unexpected exception (UDP)")
+        if not ok:
+            self.fail("recv() returned success when we did not expect it")
+
+class TestExceptions(unittest.TestCase):
+
+    def testExceptionTree(self):
+        self.assert_(issubclass(socket.error, Exception))
+        self.assert_(issubclass(socket.herror, socket.error))
+        self.assert_(issubclass(socket.gaierror, socket.error))
+        self.assert_(issubclass(socket.timeout, socket.error))
+
+
 def test_main():
-    tests = [ GeneralModuleTests, BasicTCPTest ]
+    tests = [GeneralModuleTests, BasicTCPTest, TCPTimeoutTest, TestExceptions]
     if sys.platform != 'mac':
-        tests.append(BasicUDPTest)
+        tests.extend([ BasicUDPTest, UDPTimeoutTest ])
 
     tests.extend([
         NonBlockingTCPTests,