blob: 983cf2163472d74d4b3951459afa8177c987467a [file] [log] [blame]
Guido van Rossumd8faa362007-04-27 19:54:29 +00001import socket
2import threading
3import poplib
4import time
5
6from unittest import TestCase
7from test import test_support
8
9
Guido van Rossumaccecdf2007-07-23 01:49:28 +000010def server(ready, evt):
Guido van Rossumd8faa362007-04-27 19:54:29 +000011 serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
12 serv.settimeout(3)
13 serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
14 serv.bind(("", 9091))
15 serv.listen(5)
Guido van Rossumaccecdf2007-07-23 01:49:28 +000016 ready.set()
Guido van Rossumd8faa362007-04-27 19:54:29 +000017 try:
18 conn, addr = serv.accept()
19 except socket.timeout:
20 pass
21 else:
Guido van Rossum8a392d72007-11-21 22:09:45 +000022 conn.send(b"+ Hola mundo\n")
Guido van Rossumd8faa362007-04-27 19:54:29 +000023 conn.close()
24 finally:
25 serv.close()
26 evt.set()
27
28class GeneralTests(TestCase):
29
30 def setUp(self):
31 self.evt = threading.Event()
Guido van Rossumaccecdf2007-07-23 01:49:28 +000032 self.ready = threading.Event()
33 threading.Thread(target=server, args=(self.ready, self.evt,)).start()
34 self.ready.wait()
Guido van Rossumd8faa362007-04-27 19:54:29 +000035
36 def tearDown(self):
37 self.evt.wait()
38
39 def testBasic(self):
40 # connects
41 pop = poplib.POP3("localhost", 9091)
42 pop.sock.close()
43
44 def testTimeoutDefault(self):
45 # default
46 pop = poplib.POP3("localhost", 9091)
47 self.assertTrue(pop.sock.gettimeout() is None)
48 pop.sock.close()
49
50 def testTimeoutValue(self):
51 # a value
52 pop = poplib.POP3("localhost", 9091, timeout=30)
53 self.assertEqual(pop.sock.gettimeout(), 30)
54 pop.sock.close()
55
56 def testTimeoutNone(self):
57 # None, having other default
58 previous = socket.getdefaulttimeout()
59 socket.setdefaulttimeout(30)
60 try:
61 pop = poplib.POP3("localhost", 9091, timeout=None)
62 finally:
63 socket.setdefaulttimeout(previous)
64 self.assertEqual(pop.sock.gettimeout(), 30)
65 pop.sock.close()
66
67
68
69def test_main(verbose=None):
70 test_support.run_unittest(GeneralTests)
71
72if __name__ == '__main__':
73 test_main()