Changeset 391 for python/trunk/Lib/test/test_smtplib.py
- Timestamp:
- Mar 19, 2014, 11:31:01 PM (11 years ago)
- Location:
- python/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
python/trunk
-
Property svn:mergeinfo
set to
/python/vendor/Python-2.7.6 merged eligible /python/vendor/current merged eligible
-
Property svn:mergeinfo
set to
-
python/trunk/Lib/test/test_smtplib.py
r2 r391 2 2 import email.utils 3 3 import socket 4 import threading5 4 import smtpd 6 5 import smtplib … … 10 9 import select 11 10 12 from unittest import TestCase 11 import unittest 13 12 from test import test_support 13 14 try: 15 import threading 16 except ImportError: 17 threading = None 14 18 15 19 HOST = test_support.HOST … … 37 41 evt.set() 38 42 39 class GeneralTests(TestCase): 43 @unittest.skipUnless(threading, 'Threading required for this test.') 44 class GeneralTests(unittest.TestCase): 40 45 41 46 def setUp(self): 47 self._threads = test_support.threading_setup() 42 48 self.evt = threading.Event() 43 49 self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) … … 45 51 self.port = test_support.bind_port(self.sock) 46 52 servargs = (self.evt, "220 Hola mundo\n", self.sock) 47 threading.Thread(target=server, args=servargs).start() 53 self.thread = threading.Thread(target=server, args=servargs) 54 self.thread.start() 48 55 self.evt.wait() 49 56 self.evt.clear() … … 51 58 def tearDown(self): 52 59 self.evt.wait() 60 self.thread.join() 61 test_support.threading_cleanup(*self._threads) 53 62 54 63 def testBasic1(self): … … 135 144 136 145 # Test behavior of smtpd.DebuggingServer 137 class DebuggingServerTests(TestCase): 146 @unittest.skipUnless(threading, 'Threading required for this test.') 147 class DebuggingServerTests(unittest.TestCase): 138 148 139 149 def setUp(self): … … 143 153 sys.stdout = self.output 144 154 155 self._threads = test_support.threading_setup() 145 156 self.serv_evt = threading.Event() 146 157 self.client_evt = threading.Event() 147 self.port = test_support.find_unused_port() 148 self.serv = smtpd.DebuggingServer((HOST, self.port), ('nowhere', -1)) 158 # Pick a random unused port by passing 0 for the port number 159 self.serv = smtpd.DebuggingServer((HOST, 0), ('nowhere', -1)) 160 # Keep a note of what port was assigned 161 self.port = self.serv.socket.getsockname()[1] 149 162 serv_args = (self.serv, self.serv_evt, self.client_evt) 150 threading.Thread(target=debugging_server, args=serv_args).start() 163 self.thread = threading.Thread(target=debugging_server, args=serv_args) 164 self.thread.start() 151 165 152 166 # wait until server thread has assigned a port number … … 159 173 # wait for the server thread to terminate 160 174 self.serv_evt.wait() 175 self.thread.join() 176 test_support.threading_cleanup(*self._threads) 161 177 # restore sys.stdout 162 178 sys.stdout = self.old_stdout … … 226 242 227 243 228 class NonConnectingTests( TestCase):244 class NonConnectingTests(unittest.TestCase): 229 245 230 246 def testNotConnected(self): … … 247 263 248 264 # test response of client to a non-successful HELO message 249 class BadHELOServerTests(TestCase): 265 @unittest.skipUnless(threading, 'Threading required for this test.') 266 class BadHELOServerTests(unittest.TestCase): 250 267 251 268 def setUp(self): … … 254 271 sys.stdout = self.output 255 272 273 self._threads = test_support.threading_setup() 256 274 self.evt = threading.Event() 257 275 self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) … … 259 277 self.port = test_support.bind_port(self.sock) 260 278 servargs = (self.evt, "199 no hello for you!\n", self.sock) 261 threading.Thread(target=server, args=servargs).start() 279 self.thread = threading.Thread(target=server, args=servargs) 280 self.thread.start() 262 281 self.evt.wait() 263 282 self.evt.clear() … … 265 284 def tearDown(self): 266 285 self.evt.wait() 286 self.thread.join() 287 test_support.threading_cleanup(*self._threads) 267 288 sys.stdout = self.old_stdout 268 289 … … 310 331 311 332 def smtp_VRFY(self, arg): 312 raw_addr = email.utils.parseaddr(arg)[1] 313 quoted_addr = smtplib.quoteaddr(arg) 314 if raw_addr in sim_users: 315 self.push('250 %s %s' % (sim_users[raw_addr], quoted_addr)) 333 # For max compatibility smtplib should be sending the raw address. 334 if arg in sim_users: 335 self.push('250 %s %s' % (sim_users[arg], smtplib.quoteaddr(arg))) 316 336 else: 317 337 self.push('550 No such user: %s' % arg) 318 338 319 339 def smtp_EXPN(self, arg): 320 list_name = email.utils.parseaddr(arg)[1].lower()340 list_name = arg.lower() 321 341 if list_name in sim_lists: 322 342 user_list = sim_lists[list_name] … … 346 366 self.push('550 No access for you!') 347 367 368 def handle_error(self): 369 raise 370 348 371 349 372 class SimSMTPServer(smtpd.SMTPServer): … … 364 387 self._extra_features.append(feature) 365 388 389 def handle_error(self): 390 raise 391 366 392 367 393 # Test various SMTP & ESMTP commands/behaviors that require a simulated server 368 394 # (i.e., something with more features than DebuggingServer) 369 class SMTPSimTests(TestCase): 395 @unittest.skipUnless(threading, 'Threading required for this test.') 396 class SMTPSimTests(unittest.TestCase): 370 397 371 398 def setUp(self): 399 self._threads = test_support.threading_setup() 372 400 self.serv_evt = threading.Event() 373 401 self.client_evt = threading.Event() 374 self.port = test_support.find_unused_port() 375 self.serv = SimSMTPServer((HOST, self.port), ('nowhere', -1)) 402 # Pick a random unused port by passing 0 for the port number 403 self.serv = SimSMTPServer((HOST, 0), ('nowhere', -1)) 404 # Keep a note of what port was assigned 405 self.port = self.serv.socket.getsockname()[1] 376 406 serv_args = (self.serv, self.serv_evt, self.client_evt) 377 threading.Thread(target=debugging_server, args=serv_args).start() 407 self.thread = threading.Thread(target=debugging_server, args=serv_args) 408 self.thread.start() 378 409 379 410 # wait until server thread has assigned a port number … … 386 417 # wait for the server thread to terminate 387 418 self.serv_evt.wait() 419 self.thread.join() 420 test_support.threading_cleanup(*self._threads) 388 421 389 422 def testBasic(self): … … 421 454 422 455 u = 'nobody@nowhere.com' 423 expected_unknown = (550, 'No such user: %s' % smtplib.quoteaddr(u))456 expected_unknown = (550, 'No such user: %s' % u) 424 457 self.assertEqual(smtp.vrfy(u), expected_unknown) 425 458 smtp.quit()
Note:
See TracChangeset
for help on using the changeset viewer.