blob: 14b46e31626d1e4845433587e66a2a6aedcd59a7 [file] [log] [blame]
Guido van Rossumd8faa362007-04-27 19:54:29 +00001import socket
2import threading
3import poplib
4import time
5
6from unittest import TestCase
Benjamin Petersonee8712c2008-05-20 21:35:26 +00007from test import support
Guido van Rossumd8faa362007-04-27 19:54:29 +00008
Benjamin Petersonee8712c2008-05-20 21:35:26 +00009HOST = support.HOST
Guido van Rossumd8faa362007-04-27 19:54:29 +000010
Christian Heimes5e696852008-04-09 08:37:03 +000011def server(evt, serv):
Guido van Rossumd8faa362007-04-27 19:54:29 +000012 serv.listen(5)
13 try:
14 conn, addr = serv.accept()
15 except socket.timeout:
16 pass
17 else:
Guido van Rossum8a392d72007-11-21 22:09:45 +000018 conn.send(b"+ Hola mundo\n")
Guido van Rossumd8faa362007-04-27 19:54:29 +000019 conn.close()
20 finally:
21 serv.close()
22 evt.set()
23
24class GeneralTests(TestCase):
25
26 def setUp(self):
27 self.evt = threading.Event()
Christian Heimes5e696852008-04-09 08:37:03 +000028 self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
29 self.sock.settimeout(3)
Benjamin Petersonee8712c2008-05-20 21:35:26 +000030 self.port = support.bind_port(self.sock)
Christian Heimes5e696852008-04-09 08:37:03 +000031 threading.Thread(target=server, args=(self.evt,self.sock)).start()
32 time.sleep(.1)
Guido van Rossumd8faa362007-04-27 19:54:29 +000033
34 def tearDown(self):
35 self.evt.wait()
36
37 def testBasic(self):
38 # connects
Christian Heimes5e696852008-04-09 08:37:03 +000039 pop = poplib.POP3(HOST, self.port)
Guido van Rossumd8faa362007-04-27 19:54:29 +000040 pop.sock.close()
41
42 def testTimeoutDefault(self):
43 # default
Christian Heimes5e696852008-04-09 08:37:03 +000044 pop = poplib.POP3(HOST, self.port)
Guido van Rossumd8faa362007-04-27 19:54:29 +000045 self.assertTrue(pop.sock.gettimeout() is None)
46 pop.sock.close()
47
48 def testTimeoutValue(self):
49 # a value
Christian Heimes5e696852008-04-09 08:37:03 +000050 pop = poplib.POP3(HOST, self.port, timeout=30)
Guido van Rossumd8faa362007-04-27 19:54:29 +000051 self.assertEqual(pop.sock.gettimeout(), 30)
52 pop.sock.close()
53
54 def testTimeoutNone(self):
55 # None, having other default
56 previous = socket.getdefaulttimeout()
57 socket.setdefaulttimeout(30)
58 try:
Christian Heimes5e696852008-04-09 08:37:03 +000059 pop = poplib.POP3(HOST, self.port, timeout=None)
Guido van Rossumd8faa362007-04-27 19:54:29 +000060 finally:
61 socket.setdefaulttimeout(previous)
62 self.assertEqual(pop.sock.gettimeout(), 30)
63 pop.sock.close()
64
65
66
67def test_main(verbose=None):
Benjamin Petersonee8712c2008-05-20 21:35:26 +000068 support.run_unittest(GeneralTests)
Guido van Rossumd8faa362007-04-27 19:54:29 +000069
70if __name__ == '__main__':
71 test_main()