blob: 18ed224f7a9a093f579322b557f02438d2620e2d [file] [log] [blame]
Facundo Batistab20c5002007-03-27 18:50:29 +00001import socket
2import threading
3import poplib
4import time
5
6from unittest import TestCase
7from test import test_support
8
Trent Nelsone41b0062008-04-08 23:47:30 +00009HOST = test_support.HOST
Facundo Batistab20c5002007-03-27 18:50:29 +000010
Trent Nelsone41b0062008-04-08 23:47:30 +000011def server(evt, serv):
Facundo Batistab20c5002007-03-27 18:50:29 +000012 serv.listen(5)
13 try:
14 conn, addr = serv.accept()
15 except socket.timeout:
16 pass
17 else:
18 conn.send("+ Hola mundo\n")
19 conn.close()
20 finally:
21 serv.close()
22 evt.set()
23
24class GeneralTests(TestCase):
Neal Norwitz0d4c06e2007-04-25 06:30:05 +000025
Facundo Batistab20c5002007-03-27 18:50:29 +000026 def setUp(self):
27 self.evt = threading.Event()
Trent Nelsone41b0062008-04-08 23:47:30 +000028 self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
29 self.sock.settimeout(3)
30 self.port = test_support.bind_port(self.sock)
31 threading.Thread(target=server, args=(self.evt,self.sock)).start()
Facundo Batistab20c5002007-03-27 18:50:29 +000032 time.sleep(.1)
33
34 def tearDown(self):
35 self.evt.wait()
36
37 def testBasic(self):
38 # connects
Trent Nelsone41b0062008-04-08 23:47:30 +000039 pop = poplib.POP3(HOST, self.port)
Facundo Batistab20c5002007-03-27 18:50:29 +000040 pop.sock.close()
Neal Norwitz0d4c06e2007-04-25 06:30:05 +000041
Facundo Batistab20c5002007-03-27 18:50:29 +000042 def testTimeoutDefault(self):
Facundo Batista4f1b1ed2008-05-29 16:39:26 +000043 self.assertTrue(socket.getdefaulttimeout() is None)
44 socket.setdefaulttimeout(30)
45 try:
46 pop = poplib.POP3("localhost", self.port)
47 finally:
48 socket.setdefaulttimeout(None)
Facundo Batistab20c5002007-03-27 18:50:29 +000049 self.assertEqual(pop.sock.gettimeout(), 30)
50 pop.sock.close()
51
52 def testTimeoutNone(self):
Facundo Batista4f1b1ed2008-05-29 16:39:26 +000053 self.assertTrue(socket.getdefaulttimeout() is None)
Facundo Batistab20c5002007-03-27 18:50:29 +000054 socket.setdefaulttimeout(30)
55 try:
Trent Nelsone41b0062008-04-08 23:47:30 +000056 pop = poplib.POP3(HOST, self.port, timeout=None)
Facundo Batistab20c5002007-03-27 18:50:29 +000057 finally:
Facundo Batista4f1b1ed2008-05-29 16:39:26 +000058 socket.setdefaulttimeout(None)
59 self.assertTrue(pop.sock.gettimeout() is None)
Facundo Batistab20c5002007-03-27 18:50:29 +000060 pop.sock.close()
61
Facundo Batista4f1b1ed2008-05-29 16:39:26 +000062 def testTimeoutValue(self):
63 pop = poplib.POP3("localhost", self.port, timeout=30)
64 self.assertEqual(pop.sock.gettimeout(), 30)
65 pop.sock.close()
Facundo Batistab20c5002007-03-27 18:50:29 +000066
67
68def test_main(verbose=None):
69 test_support.run_unittest(GeneralTests)
70
71if __name__ == '__main__':
72 test_main()