blob: 3542ddbf5f0e3df3f9acc20508df05ed3377879d [file] [log] [blame]
Guido van Rossumd8faa362007-04-27 19:54:29 +00001import socket
2import threading
3import smtplib
4import time
5
6from unittest import TestCase
7from test import test_support
8
9
10def server(evt):
11 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)
16 try:
17 conn, addr = serv.accept()
18 except socket.timeout:
19 pass
20 else:
21 conn.send("220 Hola mundo\n")
22 conn.close()
23 finally:
24 serv.close()
25 evt.set()
26
27class GeneralTests(TestCase):
28
29 def setUp(self):
30 self.evt = threading.Event()
31 threading.Thread(target=server, args=(self.evt,)).start()
32 time.sleep(.1)
33
34 def tearDown(self):
35 self.evt.wait()
36
37 def testBasic(self):
38 # connects
39 smtp = smtplib.SMTP("localhost", 9091)
40 smtp.sock.close()
41
42 def testTimeoutDefault(self):
43 # default
44 smtp = smtplib.SMTP("localhost", 9091)
45 self.assertTrue(smtp.sock.gettimeout() is None)
46 smtp.sock.close()
47
48 def testTimeoutValue(self):
49 # a value
50 smtp = smtplib.SMTP("localhost", 9091, timeout=30)
51 self.assertEqual(smtp.sock.gettimeout(), 30)
52 smtp.sock.close()
53
54 def testTimeoutNone(self):
55 # None, having other default
56 previous = socket.getdefaulttimeout()
57 socket.setdefaulttimeout(30)
58 try:
59 smtp = smtplib.SMTP("localhost", 9091, timeout=None)
60 finally:
61 socket.setdefaulttimeout(previous)
62 self.assertEqual(smtp.sock.gettimeout(), 30)
63 smtp.sock.close()
64
65
66
67def test_main(verbose=None):
68 test_support.run_unittest(GeneralTests)
69
70if __name__ == '__main__':
71 test_main()