Changeset 391 for python/trunk/Lib/test/test_mailbox.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_mailbox.py
r2 r391 6 6 import email 7 7 import email.message 8 import rfc8229 8 import re 9 import shutil 10 10 import StringIO 11 import tempfile 11 12 from test import test_support 12 13 import unittest … … 18 19 pass 19 20 20 21 class TestBase(unittest.TestCase): 21 # Silence Py3k warning 22 rfc822 = test_support.import_module('rfc822', deprecated=True) 23 24 class TestBase: 22 25 23 26 def _check_sample(self, msg): 24 27 # Inspect a mailbox.Message representation of the sample message 25 self.assert _(isinstance(msg, email.message.Message))26 self.assert _(isinstance(msg, mailbox.Message))28 self.assertIsInstance(msg, email.message.Message) 29 self.assertIsInstance(msg, mailbox.Message) 27 30 for key, value in _sample_headers.iteritems(): 28 self.assert _(value inmsg.get_all(key))29 self.assert _(msg.is_multipart())30 self.assert _(len(msg.get_payload()) ==len(_sample_payloads))31 self.assertIn(value, msg.get_all(key)) 32 self.assertTrue(msg.is_multipart()) 33 self.assertEqual(len(msg.get_payload()), len(_sample_payloads)) 31 34 for i, payload in enumerate(_sample_payloads): 32 35 part = msg.get_payload(i) 33 self.assert _(isinstance(part, email.message.Message))34 self.assert _(not isinstance(part, mailbox.Message))35 self.assert _(part.get_payload() ==payload)36 self.assertIsInstance(part, email.message.Message) 37 self.assertNotIsInstance(part, mailbox.Message) 38 self.assertEqual(part.get_payload(), payload) 36 39 37 40 def _delete_recursively(self, target): 38 41 # Delete a file or delete a directory recursively 39 42 if os.path.isdir(target): 40 for path, dirs, files in os.walk(target, topdown=False): 41 for name in files: 42 os.remove(os.path.join(path, name)) 43 for name in dirs: 44 os.rmdir(os.path.join(path, name)) 45 os.rmdir(target) 43 test_support.rmtree(target) 46 44 elif os.path.exists(target): 47 os.remove(target)45 test_support.unlink(target) 48 46 49 47 … … 51 49 52 50 _factory = None # Overridden by subclasses to reuse tests 53 _template = 'From: foo\n\n%s '51 _template = 'From: foo\n\n%s\n' 54 52 55 53 def setUp(self): … … 66 64 keys = [] 67 65 keys.append(self._box.add(self._template % 0)) 68 self.assert _(len(self._box) ==1)66 self.assertEqual(len(self._box), 1) 69 67 keys.append(self._box.add(mailbox.Message(_sample_message))) 70 self.assert _(len(self._box) ==2)68 self.assertEqual(len(self._box), 2) 71 69 keys.append(self._box.add(email.message_from_string(_sample_message))) 72 self.assert _(len(self._box) ==3)70 self.assertEqual(len(self._box), 3) 73 71 keys.append(self._box.add(StringIO.StringIO(_sample_message))) 74 self.assert _(len(self._box) ==4)72 self.assertEqual(len(self._box), 4) 75 73 keys.append(self._box.add(_sample_message)) 76 self.assert _(len(self._box) ==5)77 self.assert _(self._box.get_string(keys[0]) ==self._template % 0)74 self.assertEqual(len(self._box), 5) 75 self.assertEqual(self._box.get_string(keys[0]), self._template % 0) 78 76 for i in (1, 2, 3, 4): 79 77 self._check_sample(self._box[keys[i]]) 78 79 def test_add_file(self): 80 with tempfile.TemporaryFile('w+') as f: 81 f.write(_sample_message) 82 f.seek(0) 83 key = self._box.add(f) 84 self.assertEqual(self._box.get_string(key).split('\n'), 85 _sample_message.split('\n')) 86 87 def test_add_StringIO(self): 88 key = self._box.add(StringIO.StringIO(self._template % "0")) 89 self.assertEqual(self._box.get_string(key), self._template % "0") 80 90 81 91 def test_remove(self): … … 91 101 key0 = self._box.add(self._template % 0) 92 102 key1 = self._box.add(self._template % 1) 93 self.assert _(len(self._box) ==2)103 self.assertEqual(len(self._box), 2) 94 104 method(key0) 95 105 l = len(self._box) 96 self.assert _(l == 1, "actual l: %s" % l)106 self.assertEqual(l, 1) 97 107 self.assertRaises(KeyError, lambda: self._box[key0]) 98 108 self.assertRaises(KeyError, lambda: method(key0)) 99 self.assert _(self._box.get_string(key1) ==self._template % 1)109 self.assertEqual(self._box.get_string(key1), self._template % 1) 100 110 key2 = self._box.add(self._template % 2) 101 self.assert _(len(self._box) ==2)111 self.assertEqual(len(self._box), 2) 102 112 method(key2) 103 113 l = len(self._box) 104 self.assert _(l == 1, "actual l: %s" % l)114 self.assertEqual(l, 1) 105 115 self.assertRaises(KeyError, lambda: self._box[key2]) 106 116 self.assertRaises(KeyError, lambda: method(key2)) 107 self.assert _(self._box.get_string(key1) ==self._template % 1)117 self.assertEqual(self._box.get_string(key1), self._template % 1) 108 118 method(key1) 109 self.assert _(len(self._box) ==0)119 self.assertEqual(len(self._box), 0) 110 120 self.assertRaises(KeyError, lambda: self._box[key1]) 111 121 self.assertRaises(KeyError, lambda: method(key1)) … … 115 125 key0 = self._box.add(self._template % 0) 116 126 key1 = self._box.add(self._template % 1) 117 self.assert _(len(self._box) ==2)127 self.assertEqual(len(self._box), 2) 118 128 self._box.discard(key0) 119 self.assert _(len(self._box) ==1)129 self.assertEqual(len(self._box), 1) 120 130 self.assertRaises(KeyError, lambda: self._box[key0]) 121 131 self._box.discard(key0) 122 self.assert _(len(self._box) ==1)132 self.assertEqual(len(self._box), 1) 123 133 self.assertRaises(KeyError, lambda: self._box[key0]) 124 134 … … 127 137 key0 = self._box.add(self._template % 0) 128 138 msg = self._box.get(key0) 129 self.assert _(msg['from'] =='foo')130 self.assert _(msg.get_payload() == '0')131 self.assert _(self._box.get('foo') isNone)132 self.assert _(self._box.get('foo', False) is False)139 self.assertEqual(msg['from'], 'foo') 140 self.assertEqual(msg.get_payload(), '0\n') 141 self.assertIs(self._box.get('foo'), None) 142 self.assertFalse(self._box.get('foo', False)) 133 143 self._box.close() 134 144 self._box = self._factory(self._path, factory=rfc822.Message) 135 145 key1 = self._box.add(self._template % 1) 136 146 msg = self._box.get(key1) 137 self.assert_(msg['from'] == 'foo') 138 self.assert_(msg.fp.read() == '1') 147 self.assertEqual(msg['from'], 'foo') 148 self.assertEqual(msg.fp.read(), '1' + os.linesep) 149 msg.fp.close() 139 150 140 151 def test_getitem(self): … … 142 153 key0 = self._box.add(self._template % 0) 143 154 msg = self._box[key0] 144 self.assert _(msg['from'] =='foo')145 self.assert _(msg.get_payload() == '0')155 self.assertEqual(msg['from'], 'foo') 156 self.assertEqual(msg.get_payload(), '0\n') 146 157 self.assertRaises(KeyError, lambda: self._box['foo']) 147 158 self._box.discard(key0) … … 153 164 key1 = self._box.add(_sample_message) 154 165 msg0 = self._box.get_message(key0) 155 self.assert _(isinstance(msg0, mailbox.Message))156 self.assert _(msg0['from'] =='foo')157 self.assert _(msg0.get_payload() == '0')166 self.assertIsInstance(msg0, mailbox.Message) 167 self.assertEqual(msg0['from'], 'foo') 168 self.assertEqual(msg0.get_payload(), '0\n') 158 169 self._check_sample(self._box.get_message(key1)) 159 170 … … 162 173 key0 = self._box.add(self._template % 0) 163 174 key1 = self._box.add(_sample_message) 164 self.assert _(self._box.get_string(key0) ==self._template % 0)165 self.assert _(self._box.get_string(key1) ==_sample_message)175 self.assertEqual(self._box.get_string(key0), self._template % 0) 176 self.assertEqual(self._box.get_string(key1), _sample_message) 166 177 167 178 def test_get_file(self): … … 169 180 key0 = self._box.add(self._template % 0) 170 181 key1 = self._box.add(_sample_message) 171 self.assert_(self._box.get_file(key0).read().replace(os.linesep, '\n') 172 == self._template % 0) 173 self.assert_(self._box.get_file(key1).read().replace(os.linesep, '\n') 174 == _sample_message) 182 msg0 = self._box.get_file(key0) 183 self.assertEqual(msg0.read().replace(os.linesep, '\n'), 184 self._template % 0) 185 msg1 = self._box.get_file(key1) 186 self.assertEqual(msg1.read().replace(os.linesep, '\n'), 187 _sample_message) 188 msg0.close() 189 msg1.close() 190 191 def test_get_file_can_be_closed_twice(self): 192 # Issue 11700 193 key = self._box.add(_sample_message) 194 f = self._box.get_file(key) 195 f.close() 196 f.close() 175 197 176 198 def test_iterkeys(self): … … 222 244 returned_values.append(value) 223 245 if do_keys: 224 self.assert _(len(keys) ==len(returned_keys))225 self.assert _(set(keys) ==set(returned_keys))246 self.assertEqual(len(keys), len(returned_keys)) 247 self.assertEqual(set(keys), set(returned_keys)) 226 248 if do_values: 227 249 count = 0 228 250 for value in returned_values: 229 self.assert_(value['from'] == 'foo') 230 self.assert_(int(value.get_payload()) < repetitions) 251 self.assertEqual(value['from'], 'foo') 252 self.assertTrue(int(value.get_payload()) < repetitions, 253 (value.get_payload(), repetitions)) 231 254 count += 1 232 self.assert _(len(values) ==count)255 self.assertEqual(len(values), count) 233 256 234 257 def test_has_key(self): … … 242 265 def _test_has_key_or_contains(self, method): 243 266 # (Used by test_has_key() and test_contains().) 244 self.assert _(notmethod('foo'))267 self.assertFalse(method('foo')) 245 268 key0 = self._box.add(self._template % 0) 246 self.assert _(method(key0))247 self.assert _(notmethod('foo'))269 self.assertTrue(method(key0)) 270 self.assertFalse(method('foo')) 248 271 key1 = self._box.add(self._template % 1) 249 self.assert _(method(key1))250 self.assert _(method(key0))251 self.assert _(notmethod('foo'))272 self.assertTrue(method(key1)) 273 self.assertTrue(method(key0)) 274 self.assertFalse(method('foo')) 252 275 self._box.remove(key0) 253 self.assert _(notmethod(key0))254 self.assert _(method(key1))255 self.assert _(notmethod('foo'))276 self.assertFalse(method(key0)) 277 self.assertTrue(method(key1)) 278 self.assertFalse(method('foo')) 256 279 self._box.remove(key1) 257 self.assert _(notmethod(key1))258 self.assert _(notmethod(key0))259 self.assert _(notmethod('foo'))280 self.assertFalse(method(key1)) 281 self.assertFalse(method(key0)) 282 self.assertFalse(method('foo')) 260 283 261 284 def test_len(self, repetitions=10): … … 263 286 keys = [] 264 287 for i in xrange(repetitions): 265 self.assert _(len(self._box) ==i)288 self.assertEqual(len(self._box), i) 266 289 keys.append(self._box.add(self._template % i)) 267 self.assert _(len(self._box) ==i + 1)290 self.assertEqual(len(self._box), i + 1) 268 291 for i in xrange(repetitions): 269 self.assert _(len(self._box) ==repetitions - i)292 self.assertEqual(len(self._box), repetitions - i) 270 293 self._box.remove(keys[i]) 271 self.assert _(len(self._box) ==repetitions - i - 1)294 self.assertEqual(len(self._box), repetitions - i - 1) 272 295 273 296 def test_set_item(self): 274 297 # Modify messages using __setitem__() 275 298 key0 = self._box.add(self._template % 'original 0') 276 self.assert _(self._box.get_string(key0) == \277 self._template % 'original 0')299 self.assertEqual(self._box.get_string(key0), 300 self._template % 'original 0') 278 301 key1 = self._box.add(self._template % 'original 1') 279 self.assert _(self._box.get_string(key1) == \280 self._template % 'original 1')302 self.assertEqual(self._box.get_string(key1), 303 self._template % 'original 1') 281 304 self._box[key0] = self._template % 'changed 0' 282 self.assert _(self._box.get_string(key0) == \283 self._template % 'changed 0')305 self.assertEqual(self._box.get_string(key0), 306 self._template % 'changed 0') 284 307 self._box[key1] = self._template % 'changed 1' 285 self.assert _(self._box.get_string(key1) == \286 self._template % 'changed 1')308 self.assertEqual(self._box.get_string(key1), 309 self._template % 'changed 1') 287 310 self._box[key0] = _sample_message 288 311 self._check_sample(self._box[key0]) … … 290 313 self._check_sample(self._box[key1]) 291 314 self._box[key0] = self._template % 'original 0' 292 self.assert _(self._box.get_string(key0) ==293 self._template % 'original 0')315 self.assertEqual(self._box.get_string(key0), 316 self._template % 'original 0') 294 317 self._check_sample(self._box[key1]) 295 318 self.assertRaises(KeyError, 296 319 lambda: self._box.__setitem__('foo', 'bar')) 297 320 self.assertRaises(KeyError, lambda: self._box['foo']) 298 self.assert _(len(self._box) ==2)321 self.assertEqual(len(self._box), 2) 299 322 300 323 def test_clear(self, iterations=10): … … 304 327 self._box.add(self._template % i) 305 328 for i, key in enumerate(keys): 306 self.assert _(self._box.get_string(key) ==self._template % i)329 self.assertEqual(self._box.get_string(key), self._template % i) 307 330 self._box.clear() 308 self.assert _(len(self._box) ==0)331 self.assertEqual(len(self._box), 0) 309 332 for i, key in enumerate(keys): 310 333 self.assertRaises(KeyError, lambda: self._box.get_string(key)) … … 313 336 # Get and remove a message using pop() 314 337 key0 = self._box.add(self._template % 0) 315 self.assert _(key0 inself._box)338 self.assertIn(key0, self._box) 316 339 key1 = self._box.add(self._template % 1) 317 self.assert _(key1 inself._box)318 self.assert _(self._box.pop(key0).get_payload() == '0')319 self.assert _(key0 not inself._box)320 self.assert _(key1 inself._box)340 self.assertIn(key1, self._box) 341 self.assertEqual(self._box.pop(key0).get_payload(), '0\n') 342 self.assertNotIn(key0, self._box) 343 self.assertIn(key1, self._box) 321 344 key2 = self._box.add(self._template % 2) 322 self.assert _(key2 inself._box)323 self.assert _(self._box.pop(key2).get_payload() == '2')324 self.assert _(key2 not inself._box)325 self.assert _(key1 inself._box)326 self.assert _(self._box.pop(key1).get_payload() == '1')327 self.assert _(key1 not inself._box)328 self.assert _(len(self._box) ==0)345 self.assertIn(key2, self._box) 346 self.assertEqual(self._box.pop(key2).get_payload(), '2\n') 347 self.assertNotIn(key2, self._box) 348 self.assertIn(key1, self._box) 349 self.assertEqual(self._box.pop(key1).get_payload(), '1\n') 350 self.assertNotIn(key1, self._box) 351 self.assertEqual(len(self._box), 0) 329 352 330 353 def test_popitem(self, iterations=10): … … 336 359 for i in xrange(10): 337 360 key, msg = self._box.popitem() 338 self.assert _(key inkeys)339 self.assert _(key not inseen)361 self.assertIn(key, keys) 362 self.assertNotIn(key, seen) 340 363 seen.append(key) 341 self.assert _(int(msg.get_payload()) ==keys.index(key))342 self.assert _(len(self._box) ==0)364 self.assertEqual(int(msg.get_payload()), keys.index(key)) 365 self.assertEqual(len(self._box), 0) 343 366 for key in keys: 344 367 self.assertRaises(KeyError, lambda: self._box[key]) … … 351 374 self._box.update({key0: self._template % 'changed 0', 352 375 key2: _sample_message}) 353 self.assert _(len(self._box) ==3)354 self.assert _(self._box.get_string(key0) ==355 self._template % 'changed 0')356 self.assert _(self._box.get_string(key1) ==357 self._template % 'original 1')376 self.assertEqual(len(self._box), 3) 377 self.assertEqual(self._box.get_string(key0), 378 self._template % 'changed 0') 379 self.assertEqual(self._box.get_string(key1), 380 self._template % 'original 1') 358 381 self._check_sample(self._box[key2]) 359 382 self._box.update([(key2, self._template % 'changed 2'), 360 383 (key1, self._template % 'changed 1'), 361 384 (key0, self._template % 'original 0')]) 362 self.assert _(len(self._box) ==3)363 self.assert _(self._box.get_string(key0) ==364 self._template % 'original 0')365 self.assert _(self._box.get_string(key1) ==366 self._template % 'changed 1')367 self.assert _(self._box.get_string(key2) ==368 self._template % 'changed 2')385 self.assertEqual(len(self._box), 3) 386 self.assertEqual(self._box.get_string(key0), 387 self._template % 'original 0') 388 self.assertEqual(self._box.get_string(key1), 389 self._template % 'changed 1') 390 self.assertEqual(self._box.get_string(key2), 391 self._template % 'changed 2') 369 392 self.assertRaises(KeyError, 370 393 lambda: self._box.update({'foo': 'bar', 371 394 key0: self._template % "changed 0"})) 372 self.assert _(len(self._box) ==3)373 self.assert _(self._box.get_string(key0) ==374 self._template % "changed 0")375 self.assert _(self._box.get_string(key1) ==376 self._template % "changed 1")377 self.assert _(self._box.get_string(key2) ==378 self._template % "changed 2")395 self.assertEqual(len(self._box), 3) 396 self.assertEqual(self._box.get_string(key0), 397 self._template % "changed 0") 398 self.assertEqual(self._box.get_string(key1), 399 self._template % "changed 1") 400 self.assertEqual(self._box.get_string(key2), 401 self._template % "changed 2") 379 402 380 403 def test_flush(self): … … 382 405 self._test_flush_or_close(self._box.flush, True) 383 406 407 def test_popitem_and_flush_twice(self): 408 # See #15036. 409 self._box.add(self._template % 0) 410 self._box.add(self._template % 1) 411 self._box.flush() 412 413 self._box.popitem() 414 self._box.flush() 415 self._box.popitem() 416 self._box.flush() 417 384 418 def test_lock_unlock(self): 385 419 # Lock and unlock the mailbox 386 self.assert _(notos.path.exists(self._get_lock_path()))420 self.assertFalse(os.path.exists(self._get_lock_path())) 387 421 self._box.lock() 388 self.assert _(os.path.exists(self._get_lock_path()))422 self.assertTrue(os.path.exists(self._get_lock_path())) 389 423 self._box.unlock() 390 self.assert _(notos.path.exists(self._get_lock_path()))424 self.assertFalse(os.path.exists(self._get_lock_path())) 391 425 392 426 def test_close(self): … … 399 433 self._box.add(contents[1]) 400 434 self._box.add(contents[2]) 435 oldbox = self._box 401 436 method() 402 437 if should_call_close: … … 404 439 self._box = self._factory(self._path) 405 440 keys = self._box.keys() 406 self.assert _(len(keys) ==3)441 self.assertEqual(len(keys), 3) 407 442 for key in keys: 408 self.assert_(self._box.get_string(key) in contents) 443 self.assertIn(self._box.get_string(key), contents) 444 oldbox.close() 409 445 410 446 def test_dump_message(self): … … 414 450 output = StringIO.StringIO() 415 451 self._box._dump_message(input, output) 416 self.assert _(output.getvalue() ==417 _sample_message.replace('\n', os.linesep))452 self.assertEqual(output.getvalue(), 453 _sample_message.replace('\n', os.linesep)) 418 454 output = StringIO.StringIO() 419 455 self.assertRaises(TypeError, … … 425 461 426 462 427 class TestMailboxSuperclass(TestBase ):463 class TestMailboxSuperclass(TestBase, unittest.TestCase): 428 464 429 465 def test_notimplemented(self): … … 460 496 461 497 462 class TestMaildir(TestMailbox ):498 class TestMaildir(TestMailbox, unittest.TestCase): 463 499 464 500 _factory = lambda self, path, factory=None: mailbox.Maildir(path, factory) … … 475 511 msg.set_info('foo') 476 512 key = self._box.add(msg) 477 self.assert _(os.path.exists(os.path.join(self._path, 'cur', '%s%sfoo' %513 self.assertTrue(os.path.exists(os.path.join(self._path, 'cur', '%s%sfoo' % 478 514 (key, self._box.colon)))) 479 515 … … 485 521 key = self._box.add(msg) 486 522 msg_returned = self._box.get_message(key) 487 self.assert _(isinstance(msg_returned, mailbox.MaildirMessage))488 self.assert _(msg_returned.get_subdir() =='cur')489 self.assert _(msg_returned.get_flags() =='FR')523 self.assertIsInstance(msg_returned, mailbox.MaildirMessage) 524 self.assertEqual(msg_returned.get_subdir(), 'cur') 525 self.assertEqual(msg_returned.get_flags(), 'FR') 490 526 491 527 def test_set_MM(self): … … 495 531 key = self._box.add(msg0) 496 532 msg_returned = self._box.get_message(key) 497 self.assert _(msg_returned.get_subdir() =='new')498 self.assert _(msg_returned.get_flags() =='PT')533 self.assertEqual(msg_returned.get_subdir(), 'new') 534 self.assertEqual(msg_returned.get_flags(), 'PT') 499 535 msg1 = mailbox.MaildirMessage(self._template % 1) 500 536 self._box[key] = msg1 501 537 msg_returned = self._box.get_message(key) 502 self.assert _(msg_returned.get_subdir() =='new')503 self.assert _(msg_returned.get_flags() =='')504 self.assert _(msg_returned.get_payload() == '1')538 self.assertEqual(msg_returned.get_subdir(), 'new') 539 self.assertEqual(msg_returned.get_flags(), '') 540 self.assertEqual(msg_returned.get_payload(), '1\n') 505 541 msg2 = mailbox.MaildirMessage(self._template % 2) 506 542 msg2.set_info('2,S') … … 508 544 self._box[key] = self._template % 3 509 545 msg_returned = self._box.get_message(key) 510 self.assert _(msg_returned.get_subdir() =='new')511 self.assert _(msg_returned.get_flags() =='S')512 self.assert _(msg_returned.get_payload() == '3')546 self.assertEqual(msg_returned.get_subdir(), 'new') 547 self.assertEqual(msg_returned.get_flags(), 'S') 548 self.assertEqual(msg_returned.get_payload(), '3\n') 513 549 514 550 def test_consistent_factory(self): … … 525 561 box.colon = self._box.colon 526 562 msg2 = box.get_message(key) 527 self.assert _(isinstance(msg2, FakeMessage))563 self.assertIsInstance(msg2, FakeMessage) 528 564 529 565 def test_initialize_new(self): … … 553 589 path = os.path.join(self._path, subdir) 554 590 mode = os.stat(path)[stat.ST_MODE] 555 self.assert _(stat.S_ISDIR(mode), "Not a directory: '%s'" % path)591 self.assertTrue(stat.S_ISDIR(mode), "Not a directory: '%s'" % path) 556 592 557 593 def test_list_folders(self): … … 560 596 self._box.add_folder('two') 561 597 self._box.add_folder('three') 562 self.assert _(len(self._box.list_folders()) ==3)563 self.assert _(set(self._box.list_folders()) ==564 set(('one', 'two', 'three')))598 self.assertEqual(len(self._box.list_folders()), 3) 599 self.assertEqual(set(self._box.list_folders()), 600 set(('one', 'two', 'three'))) 565 601 566 602 def test_get_folder(self): … … 569 605 folder0 = self._box.get_folder('foo.bar') 570 606 folder0.add(self._template % 'bar') 571 self.assert _(os.path.isdir(os.path.join(self._path, '.foo.bar')))607 self.assertTrue(os.path.isdir(os.path.join(self._path, '.foo.bar'))) 572 608 folder1 = self._box.get_folder('foo.bar') 573 self.assert _(folder1.get_string(folder1.keys()[0]) == \574 self._template % 'bar')609 self.assertEqual(folder1.get_string(folder1.keys()[0]), 610 self._template % 'bar') 575 611 576 612 def test_add_and_remove_folders(self): … … 578 614 self._box.add_folder('one') 579 615 self._box.add_folder('two') 580 self.assert _(len(self._box.list_folders()) ==2)581 self.assert _(set(self._box.list_folders()) ==set(('one', 'two')))616 self.assertEqual(len(self._box.list_folders()), 2) 617 self.assertEqual(set(self._box.list_folders()), set(('one', 'two'))) 582 618 self._box.remove_folder('one') 583 self.assert _(len(self._box.list_folders()) ==1)584 self.assert _(set(self._box.list_folders()) ==set(('two',)))619 self.assertEqual(len(self._box.list_folders()), 1) 620 self.assertEqual(set(self._box.list_folders()), set(('two',))) 585 621 self._box.add_folder('three') 586 self.assert _(len(self._box.list_folders()) ==2)587 self.assert _(set(self._box.list_folders()) ==set(('two', 'three')))622 self.assertEqual(len(self._box.list_folders()), 2) 623 self.assertEqual(set(self._box.list_folders()), set(('two', 'three'))) 588 624 self._box.remove_folder('three') 589 self.assert _(len(self._box.list_folders()) ==1)590 self.assert _(set(self._box.list_folders()) ==set(('two',)))625 self.assertEqual(len(self._box.list_folders()), 1) 626 self.assertEqual(set(self._box.list_folders()), set(('two',))) 591 627 self._box.remove_folder('two') 592 self.assert _(len(self._box.list_folders()) ==0)593 self.assert _(self._box.list_folders() ==[])628 self.assertEqual(len(self._box.list_folders()), 0) 629 self.assertEqual(self._box.list_folders(), []) 594 630 595 631 def test_clean(self): … … 597 633 foo_path = os.path.join(self._path, 'tmp', 'foo') 598 634 bar_path = os.path.join(self._path, 'tmp', 'bar') 599 f = open(foo_path, 'w') 600 f.write("@") 601 f.close() 602 f = open(bar_path, 'w') 603 f.write("@") 604 f.close() 635 with open(foo_path, 'w') as f: 636 f.write("@") 637 with open(bar_path, 'w') as f: 638 f.write("@") 605 639 self._box.clean() 606 self.assert _(os.path.exists(foo_path))607 self.assert _(os.path.exists(bar_path))640 self.assertTrue(os.path.exists(foo_path)) 641 self.assertTrue(os.path.exists(bar_path)) 608 642 foo_stat = os.stat(foo_path) 609 643 os.utime(foo_path, (time.time() - 129600 - 2, 610 644 foo_stat.st_mtime)) 611 645 self._box.clean() 612 self.assert _(notos.path.exists(foo_path))613 self.assert _(os.path.exists(bar_path))646 self.assertFalse(os.path.exists(foo_path)) 647 self.assertTrue(os.path.exists(bar_path)) 614 648 615 649 def test_create_tmp(self, repetitions=10): … … 631 665 "File in wrong location: '%s'" % head) 632 666 match = pattern.match(tail) 633 self.assert _(match is not None, "Invalid file name: '%s'" % tail)667 self.assertTrue(match is not None, "Invalid file name: '%s'" % tail) 634 668 groups = match.groups() 635 669 if previous_groups is not None: 636 self.assert _(int(groups[0] >=previous_groups[0]),670 self.assertGreaterEqual(int(groups[0]), int(previous_groups[0]), 637 671 "Non-monotonic seconds: '%s' before '%s'" % 638 672 (previous_groups[0], groups[0])) 639 self.assert_(int(groups[1] >= previous_groups[1]) or640 groups[0] != groups[1],641 "Non-monotonic milliseconds: '%s' before '%s'" %642 (previous_groups[1], groups[1]))643 self.assert _(int(groups[2]) == pid,673 if int(groups[0]) == int(previous_groups[0]): 674 self.assertGreaterEqual(int(groups[1]), int(previous_groups[1]), 675 "Non-monotonic milliseconds: '%s' before '%s'" % 676 (previous_groups[1], groups[1])) 677 self.assertTrue(int(groups[2]) == pid, 644 678 "Process ID mismatch: '%s' should be '%s'" % 645 679 (groups[2], pid)) 646 self.assert _(int(groups[3]) == int(previous_groups[3]) + 1,680 self.assertTrue(int(groups[3]) == int(previous_groups[3]) + 1, 647 681 "Non-sequential counter: '%s' before '%s'" % 648 682 (previous_groups[3], groups[3])) 649 self.assert _(groups[4] == hostname,683 self.assertTrue(groups[4] == hostname, 650 684 "Host name mismatch: '%s' should be '%s'" % 651 685 (groups[4], hostname)) … … 653 687 tmp_file.write(_sample_message) 654 688 tmp_file.seek(0) 655 self.assert _(tmp_file.read() == _sample_message)689 self.assertTrue(tmp_file.read() == _sample_message) 656 690 tmp_file.close() 657 691 file_count = len(os.listdir(os.path.join(self._path, "tmp"))) 658 self.assert _(file_count == repetitions,692 self.assertTrue(file_count == repetitions, 659 693 "Wrong file count: '%s' should be '%s'" % 660 694 (file_count, repetitions)) … … 662 696 def test_refresh(self): 663 697 # Update the table of contents 664 self.assert _(self._box._toc =={})698 self.assertEqual(self._box._toc, {}) 665 699 key0 = self._box.add(self._template % 0) 666 700 key1 = self._box.add(self._template % 1) 667 self.assert _(self._box._toc =={})701 self.assertEqual(self._box._toc, {}) 668 702 self._box._refresh() 669 self.assert _(self._box._toc =={key0: os.path.join('new', key0),670 key1: os.path.join('new', key1)})703 self.assertEqual(self._box._toc, {key0: os.path.join('new', key0), 704 key1: os.path.join('new', key1)}) 671 705 key2 = self._box.add(self._template % 2) 672 self.assert _(self._box._toc =={key0: os.path.join('new', key0),673 key1: os.path.join('new', key1)})706 self.assertEqual(self._box._toc, {key0: os.path.join('new', key0), 707 key1: os.path.join('new', key1)}) 674 708 self._box._refresh() 675 self.assert_(self._box._toc == {key0: os.path.join('new', key0), 676 key1: os.path.join('new', key1), 677 key2: os.path.join('new', key2)}) 709 self.assertEqual(self._box._toc, {key0: os.path.join('new', key0), 710 key1: os.path.join('new', key1), 711 key2: os.path.join('new', key2)}) 712 713 def test_refresh_after_safety_period(self): 714 # Issue #13254: Call _refresh after the "file system safety 715 # period" of 2 seconds has passed; _toc should still be 716 # updated because this is the first call to _refresh. 717 key0 = self._box.add(self._template % 0) 718 key1 = self._box.add(self._template % 1) 719 720 self._box = self._factory(self._path) 721 self.assertEqual(self._box._toc, {}) 722 723 # Emulate sleeping. Instead of sleeping for 2 seconds, use the 724 # skew factor to make _refresh think that the filesystem 725 # safety period has passed and re-reading the _toc is only 726 # required if mtimes differ. 727 self._box._skewfactor = -3 728 729 self._box._refresh() 730 self.assertEqual(sorted(self._box._toc.keys()), sorted([key0, key1])) 678 731 679 732 def test_lookup(self): … … 681 734 self.assertRaises(KeyError, lambda: self._box._lookup('foo')) 682 735 key0 = self._box.add(self._template % 0) 683 self.assert _(self._box._lookup(key0) ==os.path.join('new', key0))736 self.assertEqual(self._box._lookup(key0), os.path.join('new', key0)) 684 737 os.remove(os.path.join(self._path, 'new', key0)) 685 self.assert_(self._box._toc == {key0: os.path.join('new', key0)}) 738 self.assertEqual(self._box._toc, {key0: os.path.join('new', key0)}) 739 # Be sure that the TOC is read back from disk (see issue #6896 740 # about bad mtime behaviour on some systems). 741 self._box.flush() 686 742 self.assertRaises(KeyError, lambda: self._box._lookup(key0)) 687 self.assert _(self._box._toc =={})743 self.assertEqual(self._box._toc, {}) 688 744 689 745 def test_lock_unlock(self): … … 699 755 box = self._factory(self._path, factory=dummy_factory) 700 756 folder = box.add_folder('folder1') 701 self.assert _(folder._factory isdummy_factory)757 self.assertIs(folder._factory, dummy_factory) 702 758 703 759 folder1_alias = box.get_folder('folder1') 704 self.assert _(folder1_alias._factory isdummy_factory)760 self.assertIs(folder1_alias._factory, dummy_factory) 705 761 706 762 def test_directory_in_folder (self): … … 729 785 path = os.path.join(self._path, self._box._lookup(key)) 730 786 mode = os.stat(path).st_mode 731 self.assert _(mode & 0111 ==0)787 self.assertEqual(mode & 0111, 0) 732 788 733 789 def test_folder_file_perms(self): … … 748 804 self.assertFalse((perms & 0111)) # Execute bits should all be off. 749 805 750 751 class _TestMboxMMDF(TestMailbox): 806 def test_reread(self): 807 # Do an initial unconditional refresh 808 self._box._refresh() 809 810 # Put the last modified times more than two seconds into the past 811 # (because mtime may have only a two second granularity). 812 for subdir in ('cur', 'new'): 813 os.utime(os.path.join(self._box._path, subdir), 814 (time.time()-5,)*2) 815 816 # Because mtime has a two second granularity in worst case (FAT), a 817 # refresh is done unconditionally if called for within 818 # two-second-plus-a-bit of the last one, just in case the mbox has 819 # changed; so now we have to wait for that interval to expire. 820 # 821 # Because this is a test, emulate sleeping. Instead of 822 # sleeping for 2 seconds, use the skew factor to make _refresh 823 # think that 2 seconds have passed and re-reading the _toc is 824 # only required if mtimes differ. 825 self._box._skewfactor = -3 826 827 # Re-reading causes the ._toc attribute to be assigned a new dictionary 828 # object, so we'll check that the ._toc attribute isn't a different 829 # object. 830 orig_toc = self._box._toc 831 def refreshed(): 832 return self._box._toc is not orig_toc 833 834 self._box._refresh() 835 self.assertFalse(refreshed()) 836 837 # Now, write something into cur and remove it. This changes 838 # the mtime and should cause a re-read. Note that "sleep 839 # emulation" is still in effect, as skewfactor is -3. 840 filename = os.path.join(self._path, 'cur', 'stray-file') 841 f = open(filename, 'w') 842 f.close() 843 os.unlink(filename) 844 self._box._refresh() 845 self.assertTrue(refreshed()) 846 847 848 class _TestSingleFile(TestMailbox): 849 '''Common tests for single-file mailboxes''' 850 851 def test_add_doesnt_rewrite(self): 852 # When only adding messages, flush() should not rewrite the 853 # mailbox file. See issue #9559. 854 855 # Inode number changes if the contents are written to another 856 # file which is then renamed over the original file. So we 857 # must check that the inode number doesn't change. 858 inode_before = os.stat(self._path).st_ino 859 860 self._box.add(self._template % 0) 861 self._box.flush() 862 863 inode_after = os.stat(self._path).st_ino 864 self.assertEqual(inode_before, inode_after) 865 866 # Make sure the message was really added 867 self._box.close() 868 self._box = self._factory(self._path) 869 self.assertEqual(len(self._box), 1) 870 871 def test_permissions_after_flush(self): 872 # See issue #5346 873 874 # Make the mailbox world writable. It's unlikely that the new 875 # mailbox file would have these permissions after flush(), 876 # because umask usually prevents it. 877 mode = os.stat(self._path).st_mode | 0o666 878 os.chmod(self._path, mode) 879 880 self._box.add(self._template % 0) 881 i = self._box.add(self._template % 1) 882 # Need to remove one message to make flush() create a new file 883 self._box.remove(i) 884 self._box.flush() 885 886 self.assertEqual(os.stat(self._path).st_mode, mode) 887 888 889 class _TestMboxMMDF(_TestSingleFile): 752 890 753 891 def tearDown(self): … … 759 897 def test_add_from_string(self): 760 898 # Add a string starting with 'From ' to the mailbox 761 key = self._box.add('From foo@bar blah\nFrom: foo\n\n0 ')762 self.assert _(self._box[key].get_from() =='foo@bar blah')763 self.assert _(self._box[key].get_payload() == '0')899 key = self._box.add('From foo@bar blah\nFrom: foo\n\n0\n') 900 self.assertEqual(self._box[key].get_from(), 'foo@bar blah') 901 self.assertEqual(self._box[key].get_payload(), '0\n') 764 902 765 903 def test_add_mbox_or_mmdf_message(self): 766 904 # Add an mboxMessage or MMDFMessage 767 905 for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage): 768 msg = class_('From foo@bar blah\nFrom: foo\n\n0 ')906 msg = class_('From foo@bar blah\nFrom: foo\n\n0\n') 769 907 key = self._box.add(msg) 770 908 … … 777 915 mtime = os.path.getmtime(self._path) 778 916 self._box = self._factory(self._path) 779 self.assert _(len(self._box) ==3)917 self.assertEqual(len(self._box), 3) 780 918 for key in self._box.iterkeys(): 781 self.assert _(self._box.get_string(key) invalues)919 self.assertIn(self._box.get_string(key), values) 782 920 self._box.close() 783 self.assert _(mtime ==os.path.getmtime(self._path))921 self.assertEqual(mtime, os.path.getmtime(self._path)) 784 922 785 923 def test_add_and_close(self): … … 793 931 contents = self._box._file.read() 794 932 self._box.close() 795 self.assert_(contents == open(self._path, 'rb').read()) 933 with open(self._path, 'rb') as f: 934 self.assertEqual(contents, f.read()) 796 935 self._box = self._factory(self._path) 797 936 937 @unittest.skipUnless(hasattr(os, 'fork'), "Test needs fork().") 938 @unittest.skipUnless(hasattr(socket, 'socketpair'), "Test needs socketpair().") 798 939 def test_lock_conflict(self): 799 # Fork off a subprocess that will lock the file for 2 seconds, 800 # unlock it, and then exit. 801 if not hasattr(os, 'fork'): 802 return 940 # Fork off a child process that will lock the mailbox temporarily, 941 # unlock it and exit. 942 c, p = socket.socketpair() 943 self.addCleanup(c.close) 944 self.addCleanup(p.close) 945 803 946 pid = os.fork() 804 947 if pid == 0: 805 # In the child, lock the mailbox. 806 self._box.lock() 807 time.sleep(2) 808 self._box.unlock() 809 os._exit(0) 810 811 # In the parent, sleep a bit to give the child time to acquire 812 # the lock. 813 time.sleep(0.5) 948 # child 949 try: 950 # lock the mailbox, and signal the parent it can proceed 951 self._box.lock() 952 c.send(b'c') 953 954 # wait until the parent is done, and unlock the mailbox 955 c.recv(1) 956 self._box.unlock() 957 finally: 958 os._exit(0) 959 960 # In the parent, wait until the child signals it locked the mailbox. 961 p.recv(1) 814 962 try: 815 963 self.assertRaises(mailbox.ExternalClashError, 816 964 self._box.lock) 817 965 finally: 966 # Signal the child it can now release the lock and exit. 967 p.send(b'p') 818 968 # Wait for child to exit. Locking should now succeed. 819 969 exited_pid, status = os.waitpid(pid, 0) … … 834 984 key2 = self._box.add(msg) 835 985 self._box.flush() 836 self.assert _(self._box._locked)986 self.assertTrue(self._box._locked) 837 987 self._box.close() 838 988 839 989 840 class TestMbox(_TestMboxMMDF ):990 class TestMbox(_TestMboxMMDF, unittest.TestCase): 841 991 842 992 _factory = lambda self, path, factory=None: mailbox.mbox(path, factory) … … 861 1011 self.assertFalse((perms & 0111)) # Execute bits should all be off. 862 1012 863 class TestMMDF(_TestMboxMMDF): 1013 def test_terminating_newline(self): 1014 message = email.message.Message() 1015 message['From'] = 'john@example.com' 1016 message.set_payload('No newline at the end') 1017 i = self._box.add(message) 1018 1019 # A newline should have been appended to the payload 1020 message = self._box.get(i) 1021 self.assertEqual(message.get_payload(), 'No newline at the end\n') 1022 1023 def test_message_separator(self): 1024 # Check there's always a single blank line after each message 1025 self._box.add('From: foo\n\n0') # No newline at the end 1026 with open(self._path) as f: 1027 data = f.read() 1028 self.assertEqual(data[-3:], '0\n\n') 1029 1030 self._box.add('From: foo\n\n0\n') # Newline at the end 1031 with open(self._path) as f: 1032 data = f.read() 1033 self.assertEqual(data[-3:], '0\n\n') 1034 1035 1036 class TestMMDF(_TestMboxMMDF, unittest.TestCase): 864 1037 865 1038 _factory = lambda self, path, factory=None: mailbox.MMDF(path, factory) 866 1039 867 1040 868 class TestMH(TestMailbox ):1041 class TestMH(TestMailbox, unittest.TestCase): 869 1042 870 1043 _factory = lambda self, path, factory=None: mailbox.MH(path, factory) … … 875 1048 self._box.add_folder('two') 876 1049 self._box.add_folder('three') 877 self.assert _(len(self._box.list_folders()) ==3)878 self.assert _(set(self._box.list_folders()) ==879 set(('one', 'two', 'three')))1050 self.assertEqual(len(self._box.list_folders()), 3) 1051 self.assertEqual(set(self._box.list_folders()), 1052 set(('one', 'two', 'three'))) 880 1053 881 1054 def test_get_folder(self): … … 888 1061 folder0 = self._box.get_folder('foo.bar') 889 1062 folder0.add(self._template % 'bar') 890 self.assert _(os.path.isdir(os.path.join(self._path, 'foo.bar')))1063 self.assertTrue(os.path.isdir(os.path.join(self._path, 'foo.bar'))) 891 1064 folder1 = self._box.get_folder('foo.bar') 892 self.assert _(folder1.get_string(folder1.keys()[0]) == \893 self._template % 'bar')1065 self.assertEqual(folder1.get_string(folder1.keys()[0]), 1066 self._template % 'bar') 894 1067 895 1068 # Test for bug #1569790: verify that folders returned by .get_folder() 896 1069 # use the same factory function. 897 self.assert _(new_folder._factory isself._box._factory)898 self.assert _(folder0._factory isself._box._factory)1070 self.assertIs(new_folder._factory, self._box._factory) 1071 self.assertIs(folder0._factory, self._box._factory) 899 1072 900 1073 def test_add_and_remove_folders(self): … … 902 1075 self._box.add_folder('one') 903 1076 self._box.add_folder('two') 904 self.assert _(len(self._box.list_folders()) ==2)905 self.assert _(set(self._box.list_folders()) ==set(('one', 'two')))1077 self.assertEqual(len(self._box.list_folders()), 2) 1078 self.assertEqual(set(self._box.list_folders()), set(('one', 'two'))) 906 1079 self._box.remove_folder('one') 907 self.assert _(len(self._box.list_folders()) ==1)908 self.assert _(set(self._box.list_folders()) == set(('two',)))1080 self.assertEqual(len(self._box.list_folders()), 1) 1081 self.assertEqual(set(self._box.list_folders()), set(('two', ))) 909 1082 self._box.add_folder('three') 910 self.assert _(len(self._box.list_folders()) ==2)911 self.assert _(set(self._box.list_folders()) ==set(('two', 'three')))1083 self.assertEqual(len(self._box.list_folders()), 2) 1084 self.assertEqual(set(self._box.list_folders()), set(('two', 'three'))) 912 1085 self._box.remove_folder('three') 913 self.assert _(len(self._box.list_folders()) ==1)914 self.assert _(set(self._box.list_folders()) == set(('two',)))1086 self.assertEqual(len(self._box.list_folders()), 1) 1087 self.assertEqual(set(self._box.list_folders()), set(('two', ))) 915 1088 self._box.remove_folder('two') 916 self.assert _(len(self._box.list_folders()) ==0)917 self.assert _(self._box.list_folders() ==[])1089 self.assertEqual(len(self._box.list_folders()), 0) 1090 self.assertEqual(self._box.list_folders(), []) 918 1091 919 1092 def test_sequences(self): 920 1093 # Get and set sequences 921 self.assert _(self._box.get_sequences() =={})1094 self.assertEqual(self._box.get_sequences(), {}) 922 1095 msg0 = mailbox.MHMessage(self._template % 0) 923 1096 msg0.add_sequence('foo') 924 1097 key0 = self._box.add(msg0) 925 self.assert _(self._box.get_sequences() =={'foo':[key0]})1098 self.assertEqual(self._box.get_sequences(), {'foo':[key0]}) 926 1099 msg1 = mailbox.MHMessage(self._template % 1) 927 1100 msg1.set_sequences(['bar', 'replied', 'foo']) 928 1101 key1 = self._box.add(msg1) 929 self.assert _(self._box.get_sequences() ==930 {'foo':[key0, key1], 'bar':[key1], 'replied':[key1]})1102 self.assertEqual(self._box.get_sequences(), 1103 {'foo':[key0, key1], 'bar':[key1], 'replied':[key1]}) 931 1104 msg0.set_sequences(['flagged']) 932 1105 self._box[key0] = msg0 933 self.assert _(self._box.get_sequences() ==934 {'foo':[key1], 'bar':[key1], 'replied':[key1],935 'flagged':[key0]})1106 self.assertEqual(self._box.get_sequences(), 1107 {'foo':[key1], 'bar':[key1], 'replied':[key1], 1108 'flagged':[key0]}) 936 1109 self._box.remove(key1) 937 self.assert _(self._box.get_sequences() =={'flagged':[key0]})1110 self.assertEqual(self._box.get_sequences(), {'flagged':[key0]}) 938 1111 939 1112 def test_issue2625(self): … … 942 1115 key0 = self._box.add(msg0) 943 1116 refmsg0 = self._box.get_message(key0) 1117 1118 def test_issue7627(self): 1119 msg0 = mailbox.MHMessage(self._template % 0) 1120 key0 = self._box.add(msg0) 1121 self._box.lock() 1122 self._box.remove(key0) 1123 self._box.unlock() 944 1124 945 1125 def test_pack(self): … … 957 1137 key2 = self._box.add(msg2) 958 1138 key3 = self._box.add(msg3) 959 self.assert _(self._box.get_sequences() ==960 {'foo':[key0,key1,key2,key3], 'unseen':[key0],961 'flagged':[key2], 'bar':[key3], 'replied':[key3]})1139 self.assertEqual(self._box.get_sequences(), 1140 {'foo':[key0,key1,key2,key3], 'unseen':[key0], 1141 'flagged':[key2], 'bar':[key3], 'replied':[key3]}) 962 1142 self._box.remove(key2) 963 self.assert _(self._box.get_sequences() ==964 {'foo':[key0,key1,key3], 'unseen':[key0], 'bar':[key3],965 'replied':[key3]})1143 self.assertEqual(self._box.get_sequences(), 1144 {'foo':[key0,key1,key3], 'unseen':[key0], 'bar':[key3], 1145 'replied':[key3]}) 966 1146 self._box.pack() 967 self.assert _(self._box.keys() ==[1, 2, 3])1147 self.assertEqual(self._box.keys(), [1, 2, 3]) 968 1148 key0 = key0 969 1149 key1 = key0 + 1 970 1150 key2 = key1 + 1 971 self.assert _(self._box.get_sequences() ==1151 self.assertEqual(self._box.get_sequences(), 972 1152 {'foo':[1, 2, 3], 'unseen':[1], 'bar':[3], 'replied':[3]}) 973 1153 … … 983 1163 self._box.pack() 984 1164 self._box.unlock() 985 self.assert _(self._box.get_sequences() ==986 {'foo':[1, 2, 3, 4, 5],987 'unseen':[1], 'bar':[3], 'replied':[3]})1165 self.assertEqual(self._box.get_sequences(), 1166 {'foo':[1, 2, 3, 4, 5], 1167 'unseen':[1], 'bar':[3], 'replied':[3]}) 988 1168 989 1169 def _get_lock_path(self): … … 991 1171 992 1172 993 class TestBabyl( TestMailbox):1173 class TestBabyl(_TestSingleFile, unittest.TestCase): 994 1174 995 1175 _factory = lambda self, path, factory=None: mailbox.Babyl(path, factory) … … 1003 1183 def test_labels(self): 1004 1184 # Get labels from the mailbox 1005 self.assert _(self._box.get_labels() ==[])1185 self.assertEqual(self._box.get_labels(), []) 1006 1186 msg0 = mailbox.BabylMessage(self._template % 0) 1007 1187 msg0.add_label('foo') 1008 1188 key0 = self._box.add(msg0) 1009 self.assert _(self._box.get_labels() ==['foo'])1189 self.assertEqual(self._box.get_labels(), ['foo']) 1010 1190 msg1 = mailbox.BabylMessage(self._template % 1) 1011 1191 msg1.set_labels(['bar', 'answered', 'foo']) 1012 1192 key1 = self._box.add(msg1) 1013 self.assert _(set(self._box.get_labels()) ==set(['foo', 'bar']))1193 self.assertEqual(set(self._box.get_labels()), set(['foo', 'bar'])) 1014 1194 msg0.set_labels(['blah', 'filed']) 1015 1195 self._box[key0] = msg0 1016 self.assert _(set(self._box.get_labels()) ==1017 set(['foo', 'bar', 'blah']))1196 self.assertEqual(set(self._box.get_labels()), 1197 set(['foo', 'bar', 'blah'])) 1018 1198 self._box.remove(key1) 1019 self.assert _(set(self._box.get_labels()) ==set(['blah']))1020 1021 1022 class TestMessage(TestBase ):1199 self.assertEqual(set(self._box.get_labels()), set(['blah'])) 1200 1201 1202 class TestMessage(TestBase, unittest.TestCase): 1023 1203 1024 1204 _factory = mailbox.Message # Overridden by subclasses to reuse tests … … 1045 1225 def test_initialize_with_file(self): 1046 1226 # Initialize based on contents of file 1047 f = open(self._path, 'w+') 1048 f.write(_sample_message) 1049 f.seek(0) 1050 msg = self._factory(f) 1051 self._post_initialize_hook(msg) 1052 self._check_sample(msg) 1053 f.close() 1227 with open(self._path, 'w+') as f: 1228 f.write(_sample_message) 1229 f.seek(0) 1230 msg = self._factory(f) 1231 self._post_initialize_hook(msg) 1232 self._check_sample(msg) 1054 1233 1055 1234 def test_initialize_with_nothing(self): … … 1057 1236 msg = self._factory() 1058 1237 self._post_initialize_hook(msg) 1059 self.assert _(isinstance(msg, email.message.Message))1060 self.assert _(isinstance(msg, mailbox.Message))1061 self.assert _(isinstance(msg, self._factory))1062 self.assert _(msg.keys() ==[])1063 self.assert _(notmsg.is_multipart())1064 self.assert _(msg.get_payload() ==None)1238 self.assertIsInstance(msg, email.message.Message) 1239 self.assertIsInstance(msg, mailbox.Message) 1240 self.assertIsInstance(msg, self._factory) 1241 self.assertEqual(msg.keys(), []) 1242 self.assertFalse(msg.is_multipart()) 1243 self.assertEqual(msg.get_payload(), None) 1065 1244 1066 1245 def test_initialize_incorrectly(self): … … 1092 1271 1093 1272 1094 class TestMaildirMessage(TestMessage ):1273 class TestMaildirMessage(TestMessage, unittest.TestCase): 1095 1274 1096 1275 _factory = mailbox.MaildirMessage 1097 1276 1098 1277 def _post_initialize_hook(self, msg): 1099 self.assert _(msg._subdir =='new')1100 self.assert _(msg._info =='')1278 self.assertEqual(msg._subdir, 'new') 1279 self.assertEqual(msg._info,'') 1101 1280 1102 1281 def test_subdir(self): 1103 1282 # Use get_subdir() and set_subdir() 1104 1283 msg = mailbox.MaildirMessage(_sample_message) 1105 self.assert _(msg.get_subdir() =='new')1284 self.assertEqual(msg.get_subdir(), 'new') 1106 1285 msg.set_subdir('cur') 1107 self.assert _(msg.get_subdir() =='cur')1286 self.assertEqual(msg.get_subdir(), 'cur') 1108 1287 msg.set_subdir('new') 1109 self.assert _(msg.get_subdir() =='new')1288 self.assertEqual(msg.get_subdir(), 'new') 1110 1289 self.assertRaises(ValueError, lambda: msg.set_subdir('tmp')) 1111 self.assert _(msg.get_subdir() =='new')1290 self.assertEqual(msg.get_subdir(), 'new') 1112 1291 msg.set_subdir('new') 1113 self.assert _(msg.get_subdir() =='new')1292 self.assertEqual(msg.get_subdir(), 'new') 1114 1293 self._check_sample(msg) 1115 1294 … … 1117 1296 # Use get_flags(), set_flags(), add_flag(), remove_flag() 1118 1297 msg = mailbox.MaildirMessage(_sample_message) 1119 self.assert _(msg.get_flags() =='')1120 self.assert _(msg.get_subdir() =='new')1298 self.assertEqual(msg.get_flags(), '') 1299 self.assertEqual(msg.get_subdir(), 'new') 1121 1300 msg.set_flags('F') 1122 self.assert _(msg.get_subdir() =='new')1123 self.assert _(msg.get_flags() =='F')1301 self.assertEqual(msg.get_subdir(), 'new') 1302 self.assertEqual(msg.get_flags(), 'F') 1124 1303 msg.set_flags('SDTP') 1125 self.assert _(msg.get_flags() =='DPST')1304 self.assertEqual(msg.get_flags(), 'DPST') 1126 1305 msg.add_flag('FT') 1127 self.assert _(msg.get_flags() =='DFPST')1306 self.assertEqual(msg.get_flags(), 'DFPST') 1128 1307 msg.remove_flag('TDRP') 1129 self.assert _(msg.get_flags() =='FS')1130 self.assert _(msg.get_subdir() =='new')1308 self.assertEqual(msg.get_flags(), 'FS') 1309 self.assertEqual(msg.get_subdir(), 'new') 1131 1310 self._check_sample(msg) 1132 1311 … … 1134 1313 # Use get_date() and set_date() 1135 1314 msg = mailbox.MaildirMessage(_sample_message) 1136 self.assert_(abs(msg.get_date() - time.time()) < 60) 1315 diff = msg.get_date() - time.time() 1316 self.assertTrue(abs(diff) < 60, diff) 1137 1317 msg.set_date(0.0) 1138 self.assert _(msg.get_date() ==0.0)1318 self.assertEqual(msg.get_date(), 0.0) 1139 1319 1140 1320 def test_info(self): 1141 1321 # Use get_info() and set_info() 1142 1322 msg = mailbox.MaildirMessage(_sample_message) 1143 self.assert _(msg.get_info() =='')1323 self.assertEqual(msg.get_info(), '') 1144 1324 msg.set_info('1,foo=bar') 1145 self.assert _(msg.get_info() =='1,foo=bar')1325 self.assertEqual(msg.get_info(), '1,foo=bar') 1146 1326 self.assertRaises(TypeError, lambda: msg.set_info(None)) 1147 1327 self._check_sample(msg) … … 1150 1330 # Test interaction of info and flag methods 1151 1331 msg = mailbox.MaildirMessage(_sample_message) 1152 self.assert _(msg.get_info() =='')1332 self.assertEqual(msg.get_info(), '') 1153 1333 msg.set_flags('SF') 1154 self.assert _(msg.get_flags() =='FS')1155 self.assert _(msg.get_info() =='2,FS')1334 self.assertEqual(msg.get_flags(), 'FS') 1335 self.assertEqual(msg.get_info(), '2,FS') 1156 1336 msg.set_info('1,') 1157 self.assert _(msg.get_flags() =='')1158 self.assert _(msg.get_info() =='1,')1337 self.assertEqual(msg.get_flags(), '') 1338 self.assertEqual(msg.get_info(), '1,') 1159 1339 msg.remove_flag('RPT') 1160 self.assert _(msg.get_flags() =='')1161 self.assert _(msg.get_info() =='1,')1340 self.assertEqual(msg.get_flags(), '') 1341 self.assertEqual(msg.get_info(), '1,') 1162 1342 msg.add_flag('D') 1163 self.assert _(msg.get_flags() =='D')1164 self.assert _(msg.get_info() =='2,D')1343 self.assertEqual(msg.get_flags(), 'D') 1344 self.assertEqual(msg.get_info(), '2,D') 1165 1345 self._check_sample(msg) 1166 1346 1167 1347 1168 class _TestMboxMMDFMessage (TestMessage):1348 class _TestMboxMMDFMessage: 1169 1349 1170 1350 _factory = mailbox._mboxMMDFMessage … … 1178 1358 msg.set_unixfrom('From foo@bar blah') 1179 1359 msg = mailbox.mboxMessage(msg) 1180 self.assert _(msg.get_from() == 'foo@bar blah', msg.get_from())1360 self.assertEqual(msg.get_from(), 'foo@bar blah') 1181 1361 1182 1362 def test_from(self): … … 1185 1365 self._check_from(msg) 1186 1366 msg.set_from('foo bar') 1187 self.assert _(msg.get_from() =='foo bar')1367 self.assertEqual(msg.get_from(), 'foo bar') 1188 1368 msg.set_from('foo@bar', True) 1189 1369 self._check_from(msg, 'foo@bar') … … 1194 1374 # Use get_flags(), set_flags(), add_flag(), remove_flag() 1195 1375 msg = mailbox.mboxMessage(_sample_message) 1196 self.assert _(msg.get_flags() =='')1376 self.assertEqual(msg.get_flags(), '') 1197 1377 msg.set_flags('F') 1198 self.assert _(msg.get_flags() =='F')1378 self.assertEqual(msg.get_flags(), 'F') 1199 1379 msg.set_flags('XODR') 1200 self.assert _(msg.get_flags() =='RODX')1380 self.assertEqual(msg.get_flags(), 'RODX') 1201 1381 msg.add_flag('FA') 1202 self.assert _(msg.get_flags() =='RODFAX')1382 self.assertEqual(msg.get_flags(), 'RODFAX') 1203 1383 msg.remove_flag('FDXA') 1204 self.assert _(msg.get_flags() =='RO')1384 self.assertEqual(msg.get_flags(), 'RO') 1205 1385 self._check_sample(msg) 1206 1386 … … 1209 1389 if sender is None: 1210 1390 sender = "MAILER-DAEMON" 1211 self.assert _(re.match(sender + r" \w{3} \w{3} [\d ]\d [\d ]\d:\d{2}:"1212 r"\d{2} \d{4}", msg.get_from()) is not None)1213 1214 1215 class TestMboxMessage(_TestMboxMMDFMessage ):1391 self.assertTrue(re.match(sender + r" \w{3} \w{3} [\d ]\d [\d ]\d:\d{2}:" 1392 r"\d{2} \d{4}", msg.get_from())) 1393 1394 1395 class TestMboxMessage(_TestMboxMMDFMessage, TestMessage): 1216 1396 1217 1397 _factory = mailbox.mboxMessage 1218 1398 1219 1399 1220 class TestMHMessage(TestMessage ):1400 class TestMHMessage(TestMessage, unittest.TestCase): 1221 1401 1222 1402 _factory = mailbox.MHMessage 1223 1403 1224 1404 def _post_initialize_hook(self, msg): 1225 self.assert _(msg._sequences ==[])1405 self.assertEqual(msg._sequences, []) 1226 1406 1227 1407 def test_sequences(self): 1228 1408 # Get, set, join, and leave sequences 1229 1409 msg = mailbox.MHMessage(_sample_message) 1230 self.assert _(msg.get_sequences() ==[])1410 self.assertEqual(msg.get_sequences(), []) 1231 1411 msg.set_sequences(['foobar']) 1232 self.assert _(msg.get_sequences() ==['foobar'])1412 self.assertEqual(msg.get_sequences(), ['foobar']) 1233 1413 msg.set_sequences([]) 1234 self.assert _(msg.get_sequences() ==[])1414 self.assertEqual(msg.get_sequences(), []) 1235 1415 msg.add_sequence('unseen') 1236 self.assert _(msg.get_sequences() ==['unseen'])1416 self.assertEqual(msg.get_sequences(), ['unseen']) 1237 1417 msg.add_sequence('flagged') 1238 self.assert _(msg.get_sequences() ==['unseen', 'flagged'])1418 self.assertEqual(msg.get_sequences(), ['unseen', 'flagged']) 1239 1419 msg.add_sequence('flagged') 1240 self.assert _(msg.get_sequences() ==['unseen', 'flagged'])1420 self.assertEqual(msg.get_sequences(), ['unseen', 'flagged']) 1241 1421 msg.remove_sequence('unseen') 1242 self.assert _(msg.get_sequences() ==['flagged'])1422 self.assertEqual(msg.get_sequences(), ['flagged']) 1243 1423 msg.add_sequence('foobar') 1244 self.assert _(msg.get_sequences() ==['flagged', 'foobar'])1424 self.assertEqual(msg.get_sequences(), ['flagged', 'foobar']) 1245 1425 msg.remove_sequence('replied') 1246 self.assert _(msg.get_sequences() ==['flagged', 'foobar'])1426 self.assertEqual(msg.get_sequences(), ['flagged', 'foobar']) 1247 1427 msg.set_sequences(['foobar', 'replied']) 1248 self.assert _(msg.get_sequences() ==['foobar', 'replied'])1249 1250 1251 class TestBabylMessage(TestMessage ):1428 self.assertEqual(msg.get_sequences(), ['foobar', 'replied']) 1429 1430 1431 class TestBabylMessage(TestMessage, unittest.TestCase): 1252 1432 1253 1433 _factory = mailbox.BabylMessage 1254 1434 1255 1435 def _post_initialize_hook(self, msg): 1256 self.assert _(msg._labels ==[])1436 self.assertEqual(msg._labels, []) 1257 1437 1258 1438 def test_labels(self): 1259 1439 # Get, set, join, and leave labels 1260 1440 msg = mailbox.BabylMessage(_sample_message) 1261 self.assert _(msg.get_labels() ==[])1441 self.assertEqual(msg.get_labels(), []) 1262 1442 msg.set_labels(['foobar']) 1263 self.assert _(msg.get_labels() ==['foobar'])1443 self.assertEqual(msg.get_labels(), ['foobar']) 1264 1444 msg.set_labels([]) 1265 self.assert _(msg.get_labels() ==[])1445 self.assertEqual(msg.get_labels(), []) 1266 1446 msg.add_label('filed') 1267 self.assert _(msg.get_labels() ==['filed'])1447 self.assertEqual(msg.get_labels(), ['filed']) 1268 1448 msg.add_label('resent') 1269 self.assert _(msg.get_labels() ==['filed', 'resent'])1449 self.assertEqual(msg.get_labels(), ['filed', 'resent']) 1270 1450 msg.add_label('resent') 1271 self.assert _(msg.get_labels() ==['filed', 'resent'])1451 self.assertEqual(msg.get_labels(), ['filed', 'resent']) 1272 1452 msg.remove_label('filed') 1273 self.assert _(msg.get_labels() ==['resent'])1453 self.assertEqual(msg.get_labels(), ['resent']) 1274 1454 msg.add_label('foobar') 1275 self.assert _(msg.get_labels() ==['resent', 'foobar'])1455 self.assertEqual(msg.get_labels(), ['resent', 'foobar']) 1276 1456 msg.remove_label('unseen') 1277 self.assert _(msg.get_labels() ==['resent', 'foobar'])1457 self.assertEqual(msg.get_labels(), ['resent', 'foobar']) 1278 1458 msg.set_labels(['foobar', 'answered']) 1279 self.assert _(msg.get_labels() ==['foobar', 'answered'])1459 self.assertEqual(msg.get_labels(), ['foobar', 'answered']) 1280 1460 1281 1461 def test_visible(self): … … 1283 1463 msg = mailbox.BabylMessage(_sample_message) 1284 1464 visible = msg.get_visible() 1285 self.assert _(visible.keys() ==[])1286 self.assert _(visible.get_payload() isNone)1465 self.assertEqual(visible.keys(), []) 1466 self.assertIs(visible.get_payload(), None) 1287 1467 visible['User-Agent'] = 'FooBar 1.0' 1288 1468 visible['X-Whatever'] = 'Blah' 1289 self.assert _(msg.get_visible().keys() ==[])1469 self.assertEqual(msg.get_visible().keys(), []) 1290 1470 msg.set_visible(visible) 1291 1471 visible = msg.get_visible() 1292 self.assert _(visible.keys() ==['User-Agent', 'X-Whatever'])1293 self.assert _(visible['User-Agent'] =='FooBar 1.0')1294 self.assert _(visible['X-Whatever'] =='Blah')1295 self.assert _(visible.get_payload() isNone)1472 self.assertEqual(visible.keys(), ['User-Agent', 'X-Whatever']) 1473 self.assertEqual(visible['User-Agent'], 'FooBar 1.0') 1474 self.assertEqual(visible['X-Whatever'], 'Blah') 1475 self.assertIs(visible.get_payload(), None) 1296 1476 msg.update_visible() 1297 self.assert _(visible.keys() ==['User-Agent', 'X-Whatever'])1298 self.assert _(visible.get_payload() isNone)1477 self.assertEqual(visible.keys(), ['User-Agent', 'X-Whatever']) 1478 self.assertIs(visible.get_payload(), None) 1299 1479 visible = msg.get_visible() 1300 self.assert _(visible.keys() ==['User-Agent', 'Date', 'From', 'To',1301 'Subject'])1480 self.assertEqual(visible.keys(), ['User-Agent', 'Date', 'From', 'To', 1481 'Subject']) 1302 1482 for header in ('User-Agent', 'Date', 'From', 'To', 'Subject'): 1303 self.assert _(visible[header] ==msg[header])1304 1305 1306 class TestMMDFMessage(_TestMboxMMDFMessage ):1483 self.assertEqual(visible[header], msg[header]) 1484 1485 1486 class TestMMDFMessage(_TestMboxMMDFMessage, TestMessage): 1307 1487 1308 1488 _factory = mailbox.MMDFMessage 1309 1489 1310 1490 1311 class TestMessageConversion(TestBase ):1491 class TestMessageConversion(TestBase, unittest.TestCase): 1312 1492 1313 1493 def test_plain_to_x(self): … … 1344 1524 msg = mailbox.MaildirMessage(msg_maildir) 1345 1525 self._check_sample(msg) 1346 self.assert _(msg.get_flags() =='DFPRST')1347 self.assert _(msg.get_subdir() =='cur')1348 self.assert _(msg.get_date() ==date)1526 self.assertEqual(msg.get_flags(), 'DFPRST') 1527 self.assertEqual(msg.get_subdir(), 'cur') 1528 self.assertEqual(msg.get_date(), date) 1349 1529 1350 1530 def test_maildir_to_mboxmmdf(self): … … 1358 1538 msg_maildir.set_flags(setting) 1359 1539 msg = class_(msg_maildir) 1360 self.assert _(msg.get_flags() ==result)1361 self.assert _(msg.get_from() =='MAILER-DAEMON %s' %1362 time.asctime(time.gmtime(0.0)))1540 self.assertEqual(msg.get_flags(), result) 1541 self.assertEqual(msg.get_from(), 'MAILER-DAEMON %s' % 1542 time.asctime(time.gmtime(0.0))) 1363 1543 msg_maildir.set_subdir('cur') 1364 self.assert _(class_(msg_maildir).get_flags() =='RODFA')1544 self.assertEqual(class_(msg_maildir).get_flags(), 'RODFA') 1365 1545 1366 1546 def test_maildir_to_mh(self): … … 1372 1552 for setting, result in pairs: 1373 1553 msg_maildir.set_flags(setting) 1374 self.assert _(mailbox.MHMessage(msg_maildir).get_sequences() == \1375 result)1554 self.assertEqual(mailbox.MHMessage(msg_maildir).get_sequences(), 1555 result) 1376 1556 1377 1557 def test_maildir_to_babyl(self): … … 1384 1564 for setting, result in pairs: 1385 1565 msg_maildir.set_flags(setting) 1386 self.assert _(mailbox.BabylMessage(msg_maildir).get_labels() == \1387 result)1566 self.assertEqual(mailbox.BabylMessage(msg_maildir).get_labels(), 1567 result) 1388 1568 1389 1569 def test_mboxmmdf_to_maildir(self): … … 1397 1577 msg_mboxMMDF.set_flags(setting) 1398 1578 msg = mailbox.MaildirMessage(msg_mboxMMDF) 1399 self.assert _(msg.get_flags() ==result)1400 self.assert _(msg.get_date() == 0.0, msg.get_date())1579 self.assertEqual(msg.get_flags(), result) 1580 self.assertEqual(msg.get_date(), 0.0) 1401 1581 msg_mboxMMDF.set_flags('O') 1402 self.assert _(mailbox.MaildirMessage(msg_mboxMMDF).get_subdir() == \1403 'cur')1582 self.assertEqual(mailbox.MaildirMessage(msg_mboxMMDF).get_subdir(), 1583 'cur') 1404 1584 1405 1585 def test_mboxmmdf_to_mboxmmdf(self): … … 1411 1591 for class2_ in (mailbox.mboxMessage, mailbox.MMDFMessage): 1412 1592 msg2 = class2_(msg_mboxMMDF) 1413 self.assert _(msg2.get_flags() =='RODFA')1414 self.assert _(msg2.get_from() =='foo@bar')1593 self.assertEqual(msg2.get_flags(), 'RODFA') 1594 self.assertEqual(msg2.get_from(), 'foo@bar') 1415 1595 1416 1596 def test_mboxmmdf_to_mh(self): … … 1424 1604 for setting, result in pairs: 1425 1605 msg_mboxMMDF.set_flags(setting) 1426 self.assert _(mailbox.MHMessage(msg_mboxMMDF).get_sequences() \1427 ==result)1606 self.assertEqual(mailbox.MHMessage(msg_mboxMMDF).get_sequences(), 1607 result) 1428 1608 1429 1609 def test_mboxmmdf_to_babyl(self): … … 1437 1617 for setting, result in pairs: 1438 1618 msg.set_flags(setting) 1439 self.assert _(mailbox.BabylMessage(msg).get_labels() ==result)1619 self.assertEqual(mailbox.BabylMessage(msg).get_labels(), result) 1440 1620 1441 1621 def test_mh_to_maildir(self): … … 1445 1625 msg = mailbox.MHMessage(_sample_message) 1446 1626 msg.add_sequence(setting) 1447 self.assert _(mailbox.MaildirMessage(msg).get_flags() ==result)1448 self.assert _(mailbox.MaildirMessage(msg).get_subdir() =='cur')1627 self.assertEqual(mailbox.MaildirMessage(msg).get_flags(), result) 1628 self.assertEqual(mailbox.MaildirMessage(msg).get_subdir(), 'cur') 1449 1629 msg = mailbox.MHMessage(_sample_message) 1450 1630 msg.add_sequence('unseen') 1451 1631 msg.add_sequence('replied') 1452 1632 msg.add_sequence('flagged') 1453 self.assert _(mailbox.MaildirMessage(msg).get_flags() =='FR')1454 self.assert _(mailbox.MaildirMessage(msg).get_subdir() =='cur')1633 self.assertEqual(mailbox.MaildirMessage(msg).get_flags(), 'FR') 1634 self.assertEqual(mailbox.MaildirMessage(msg).get_subdir(), 'cur') 1455 1635 1456 1636 def test_mh_to_mboxmmdf(self): … … 1461 1641 msg.add_sequence(setting) 1462 1642 for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage): 1463 self.assert _(class_(msg).get_flags() ==result)1643 self.assertEqual(class_(msg).get_flags(), result) 1464 1644 msg = mailbox.MHMessage(_sample_message) 1465 1645 msg.add_sequence('unseen') … … 1467 1647 msg.add_sequence('flagged') 1468 1648 for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage): 1469 self.assert _(class_(msg).get_flags() =='OFA')1649 self.assertEqual(class_(msg).get_flags(), 'OFA') 1470 1650 1471 1651 def test_mh_to_mh(self): … … 1475 1655 msg.add_sequence('replied') 1476 1656 msg.add_sequence('flagged') 1477 self.assert _(mailbox.MHMessage(msg).get_sequences() == \1478 ['unseen', 'replied', 'flagged'])1657 self.assertEqual(mailbox.MHMessage(msg).get_sequences(), 1658 ['unseen', 'replied', 'flagged']) 1479 1659 1480 1660 def test_mh_to_babyl(self): … … 1485 1665 msg = mailbox.MHMessage(_sample_message) 1486 1666 msg.add_sequence(setting) 1487 self.assert _(mailbox.BabylMessage(msg).get_labels() ==result)1667 self.assertEqual(mailbox.BabylMessage(msg).get_labels(), result) 1488 1668 msg = mailbox.MHMessage(_sample_message) 1489 1669 msg.add_sequence('unseen') 1490 1670 msg.add_sequence('replied') 1491 1671 msg.add_sequence('flagged') 1492 self.assert _(mailbox.BabylMessage(msg).get_labels() == \1493 ['unseen', 'answered'])1672 self.assertEqual(mailbox.BabylMessage(msg).get_labels(), 1673 ['unseen', 'answered']) 1494 1674 1495 1675 def test_babyl_to_maildir(self): … … 1501 1681 msg = mailbox.BabylMessage(_sample_message) 1502 1682 msg.add_label(setting) 1503 self.assert _(mailbox.MaildirMessage(msg).get_flags() ==result)1504 self.assert _(mailbox.MaildirMessage(msg).get_subdir() =='cur')1683 self.assertEqual(mailbox.MaildirMessage(msg).get_flags(), result) 1684 self.assertEqual(mailbox.MaildirMessage(msg).get_subdir(), 'cur') 1505 1685 msg = mailbox.BabylMessage(_sample_message) 1506 1686 for label in ('unseen', 'deleted', 'filed', 'answered', 'forwarded', 1507 1687 'edited', 'resent'): 1508 1688 msg.add_label(label) 1509 self.assert _(mailbox.MaildirMessage(msg).get_flags() =='PRT')1510 self.assert _(mailbox.MaildirMessage(msg).get_subdir() =='cur')1689 self.assertEqual(mailbox.MaildirMessage(msg).get_flags(), 'PRT') 1690 self.assertEqual(mailbox.MaildirMessage(msg).get_subdir(), 'cur') 1511 1691 1512 1692 def test_babyl_to_mboxmmdf(self): … … 1519 1699 msg = mailbox.BabylMessage(_sample_message) 1520 1700 msg.add_label(setting) 1521 self.assert _(class_(msg).get_flags() ==result)1701 self.assertEqual(class_(msg).get_flags(), result) 1522 1702 msg = mailbox.BabylMessage(_sample_message) 1523 1703 for label in ('unseen', 'deleted', 'filed', 'answered', 'forwarded', … … 1525 1705 msg.add_label(label) 1526 1706 for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage): 1527 self.assert _(class_(msg).get_flags() =='ODA')1707 self.assertEqual(class_(msg).get_flags(), 'ODA') 1528 1708 1529 1709 def test_babyl_to_mh(self): … … 1535 1715 msg = mailbox.BabylMessage(_sample_message) 1536 1716 msg.add_label(setting) 1537 self.assert _(mailbox.MHMessage(msg).get_sequences() ==result)1717 self.assertEqual(mailbox.MHMessage(msg).get_sequences(), result) 1538 1718 msg = mailbox.BabylMessage(_sample_message) 1539 1719 for label in ('unseen', 'deleted', 'filed', 'answered', 'forwarded', 1540 1720 'edited', 'resent'): 1541 1721 msg.add_label(label) 1542 self.assert _(mailbox.MHMessage(msg).get_sequences() == \1543 ['unseen', 'replied'])1722 self.assertEqual(mailbox.MHMessage(msg).get_sequences(), 1723 ['unseen', 'replied']) 1544 1724 1545 1725 def test_babyl_to_babyl(self): … … 1551 1731 msg.add_label(label) 1552 1732 msg2 = mailbox.BabylMessage(msg) 1553 self.assert _(msg2.get_labels() ==['unseen', 'deleted', 'filed',1554 'answered', 'forwarded', 'edited',1555 'resent'])1556 self.assert _(msg.get_visible().keys() ==msg2.get_visible().keys())1733 self.assertEqual(msg2.get_labels(), ['unseen', 'deleted', 'filed', 1734 'answered', 'forwarded', 'edited', 1735 'resent']) 1736 self.assertEqual(msg.get_visible().keys(), msg2.get_visible().keys()) 1557 1737 for key in msg.get_visible().keys(): 1558 self.assert _(msg.get_visible()[key] ==msg2.get_visible()[key])1738 self.assertEqual(msg.get_visible()[key], msg2.get_visible()[key]) 1559 1739 1560 1740 … … 1564 1744 # Read by byte 1565 1745 proxy.seek(0) 1566 self.assert _(proxy.read() =='bar')1746 self.assertEqual(proxy.read(), 'bar') 1567 1747 proxy.seek(1) 1568 self.assert _(proxy.read() =='ar')1748 self.assertEqual(proxy.read(), 'ar') 1569 1749 proxy.seek(0) 1570 self.assert _(proxy.read(2) =='ba')1750 self.assertEqual(proxy.read(2), 'ba') 1571 1751 proxy.seek(1) 1572 self.assert _(proxy.read(-1) =='ar')1752 self.assertEqual(proxy.read(-1), 'ar') 1573 1753 proxy.seek(2) 1574 self.assert _(proxy.read(1000) =='r')1754 self.assertEqual(proxy.read(1000), 'r') 1575 1755 1576 1756 def _test_readline(self, proxy): 1577 1757 # Read by line 1578 1758 proxy.seek(0) 1579 self.assert _(proxy.readline() =='foo' + os.linesep)1580 self.assert _(proxy.readline() =='bar' + os.linesep)1581 self.assert _(proxy.readline() =='fred' + os.linesep)1582 self.assert _(proxy.readline() =='bob')1759 self.assertEqual(proxy.readline(), 'foo' + os.linesep) 1760 self.assertEqual(proxy.readline(), 'bar' + os.linesep) 1761 self.assertEqual(proxy.readline(), 'fred' + os.linesep) 1762 self.assertEqual(proxy.readline(), 'bob') 1583 1763 proxy.seek(2) 1584 self.assert _(proxy.readline() =='o' + os.linesep)1764 self.assertEqual(proxy.readline(), 'o' + os.linesep) 1585 1765 proxy.seek(6 + 2 * len(os.linesep)) 1586 self.assert _(proxy.readline() =='fred' + os.linesep)1766 self.assertEqual(proxy.readline(), 'fred' + os.linesep) 1587 1767 proxy.seek(6 + 2 * len(os.linesep)) 1588 self.assert _(proxy.readline(2) =='fr')1589 self.assert _(proxy.readline(-10) =='ed' + os.linesep)1768 self.assertEqual(proxy.readline(2), 'fr') 1769 self.assertEqual(proxy.readline(-10), 'ed' + os.linesep) 1590 1770 1591 1771 def _test_readlines(self, proxy): 1592 1772 # Read multiple lines 1593 1773 proxy.seek(0) 1594 self.assert _(proxy.readlines() ==['foo' + os.linesep,1595 'bar' + os.linesep,1596 'fred' + os.linesep, 'bob'])1774 self.assertEqual(proxy.readlines(), ['foo' + os.linesep, 1775 'bar' + os.linesep, 1776 'fred' + os.linesep, 'bob']) 1597 1777 proxy.seek(0) 1598 self.assert _(proxy.readlines(2) ==['foo' + os.linesep])1778 self.assertEqual(proxy.readlines(2), ['foo' + os.linesep]) 1599 1779 proxy.seek(3 + len(os.linesep)) 1600 self.assert _(proxy.readlines(4 + len(os.linesep)) ==1601 ['bar' + os.linesep, 'fred' + os.linesep])1780 self.assertEqual(proxy.readlines(4 + len(os.linesep)), 1781 ['bar' + os.linesep, 'fred' + os.linesep]) 1602 1782 proxy.seek(3) 1603 self.assert _(proxy.readlines(1000) ==[os.linesep, 'bar' + os.linesep,1604 'fred' + os.linesep, 'bob'])1783 self.assertEqual(proxy.readlines(1000), [os.linesep, 'bar' + os.linesep, 1784 'fred' + os.linesep, 'bob']) 1605 1785 1606 1786 def _test_iteration(self, proxy): … … 1608 1788 proxy.seek(0) 1609 1789 iterator = iter(proxy) 1610 self.assert_(iterator.next() == 'foo' + os.linesep) 1611 self.assert_(iterator.next() == 'bar' + os.linesep) 1612 self.assert_(iterator.next() == 'fred' + os.linesep) 1613 self.assert_(iterator.next() == 'bob') 1614 self.assertRaises(StopIteration, lambda: iterator.next()) 1790 self.assertEqual(list(iterator), 1791 ['foo' + os.linesep, 'bar' + os.linesep, 'fred' + os.linesep, 'bob']) 1615 1792 1616 1793 def _test_seek_and_tell(self, proxy): 1617 1794 # Seek and use tell to check position 1618 1795 proxy.seek(3) 1619 self.assert _(proxy.tell() ==3)1620 self.assert _(proxy.read(len(os.linesep)) ==os.linesep)1796 self.assertEqual(proxy.tell(), 3) 1797 self.assertEqual(proxy.read(len(os.linesep)), os.linesep) 1621 1798 proxy.seek(2, 1) 1622 self.assert _(proxy.read(1 + len(os.linesep)) =='r' + os.linesep)1799 self.assertEqual(proxy.read(1 + len(os.linesep)), 'r' + os.linesep) 1623 1800 proxy.seek(-3 - len(os.linesep), 2) 1624 self.assert _(proxy.read(3) =='bar')1801 self.assertEqual(proxy.read(3), 'bar') 1625 1802 proxy.seek(2, 0) 1626 self.assert _(proxy.read() =='o' + os.linesep + 'bar' + os.linesep)1803 self.assertEqual(proxy.read(), 'o' + os.linesep + 'bar' + os.linesep) 1627 1804 proxy.seek(100) 1628 self.assert _(proxy.read() =='')1805 self.assertEqual(proxy.read(), '') 1629 1806 1630 1807 def _test_close(self, proxy): 1631 1808 # Close a file 1632 1809 proxy.close() 1633 self.assertRaises(AttributeError, lambda: proxy.close()) 1634 1635 1636 class TestProxyFile(TestProxyFileBase): 1810 # Issue 11700 subsequent closes should be a no-op, not an error. 1811 proxy.close() 1812 1813 1814 class TestProxyFile(TestProxyFileBase, unittest.TestCase): 1637 1815 1638 1816 def setUp(self): … … 1649 1827 pos = self._file.tell() 1650 1828 proxy0 = mailbox._ProxyFile(self._file) 1651 self.assert _(proxy0.tell() ==pos)1652 self.assert _(self._file.tell() ==pos)1829 self.assertEqual(proxy0.tell(), pos) 1830 self.assertEqual(self._file.tell(), pos) 1653 1831 proxy1 = mailbox._ProxyFile(self._file, 0) 1654 self.assert _(proxy1.tell() ==0)1655 self.assert _(self._file.tell() ==pos)1832 self.assertEqual(proxy1.tell(), 0) 1833 self.assertEqual(self._file.tell(), pos) 1656 1834 1657 1835 def test_read(self): … … 1683 1861 1684 1862 1685 class TestPartialFile(TestProxyFileBase ):1863 class TestPartialFile(TestProxyFileBase, unittest.TestCase): 1686 1864 1687 1865 def setUp(self): … … 1698 1876 pos = self._file.tell() 1699 1877 proxy = mailbox._PartialFile(self._file, 2, 5) 1700 self.assert _(proxy.tell() ==0)1701 self.assert _(self._file.tell() ==pos)1878 self.assertEqual(proxy.tell(), 0) 1879 self.assertEqual(self._file.tell(), pos) 1702 1880 1703 1881 def test_read(self): … … 1750 1928 # create a new maildir mailbox to work with: 1751 1929 self._dir = test_support.TESTFN 1930 if os.path.isdir(self._dir): 1931 test_support.rmtree(self._dir) 1932 if os.path.isfile(self._dir): 1933 test_support.unlink(self._dir) 1752 1934 os.mkdir(self._dir) 1753 1935 os.mkdir(os.path.join(self._dir, "cur")) … … 1759 1941 def tearDown(self): 1760 1942 map(os.unlink, self._msgfiles) 1761 os.rmdir(os.path.join(self._dir, "cur"))1762 os.rmdir(os.path.join(self._dir, "tmp"))1763 os.rmdir(os.path.join(self._dir, "new"))1764 os.rmdir(self._dir)1943 test_support.rmdir(os.path.join(self._dir, "cur")) 1944 test_support.rmdir(os.path.join(self._dir, "tmp")) 1945 test_support.rmdir(os.path.join(self._dir, "new")) 1946 test_support.rmdir(self._dir) 1765 1947 1766 1948 def createMessage(self, dir, mbox=False): … … 1771 1953 tmpname = os.path.join(self._dir, "tmp", filename) 1772 1954 newname = os.path.join(self._dir, dir, filename) 1773 fp = open(tmpname, "w") 1774 self._msgfiles.append(tmpname) 1775 if mbox: 1776 fp.write(FROM_) 1777 fp.write(DUMMY_MESSAGE) 1778 fp.close() 1955 with open(tmpname, "w") as fp: 1956 self._msgfiles.append(tmpname) 1957 if mbox: 1958 fp.write(FROM_) 1959 fp.write(DUMMY_MESSAGE) 1779 1960 if hasattr(os, "link"): 1780 1961 os.link(tmpname, newname) 1781 1962 else: 1782 fp = open(newname, "w") 1783 fp.write(DUMMY_MESSAGE) 1784 fp.close() 1963 with open(newname, "w") as fp: 1964 fp.write(DUMMY_MESSAGE) 1785 1965 self._msgfiles.append(newname) 1786 1966 return tmpname … … 1791 1971 # Make sure the boxes attribute actually gets set. 1792 1972 self.mbox = mailbox.Maildir(test_support.TESTFN) 1793 #self.assert _(hasattr(self.mbox, "boxes"))1794 #self.assert _(len(self.mbox.boxes) == 0)1795 self.assert _(self.mbox.next() isNone)1796 self.assert _(self.mbox.next() isNone)1973 #self.assertTrue(hasattr(self.mbox, "boxes")) 1974 #self.assertTrue(len(self.mbox.boxes) == 0) 1975 self.assertIs(self.mbox.next(), None) 1976 self.assertIs(self.mbox.next(), None) 1797 1977 1798 1978 def test_nonempty_maildir_cur(self): 1799 1979 self.createMessage("cur") 1800 1980 self.mbox = mailbox.Maildir(test_support.TESTFN) 1801 #self.assert_(len(self.mbox.boxes) == 1) 1802 self.assert_(self.mbox.next() is not None) 1803 self.assert_(self.mbox.next() is None) 1804 self.assert_(self.mbox.next() is None) 1981 #self.assertTrue(len(self.mbox.boxes) == 1) 1982 msg = self.mbox.next() 1983 self.assertIsNot(msg, None) 1984 msg.fp.close() 1985 self.assertIs(self.mbox.next(), None) 1986 self.assertIs(self.mbox.next(), None) 1805 1987 1806 1988 def test_nonempty_maildir_new(self): 1807 1989 self.createMessage("new") 1808 1990 self.mbox = mailbox.Maildir(test_support.TESTFN) 1809 #self.assert_(len(self.mbox.boxes) == 1) 1810 self.assert_(self.mbox.next() is not None) 1811 self.assert_(self.mbox.next() is None) 1812 self.assert_(self.mbox.next() is None) 1991 #self.assertTrue(len(self.mbox.boxes) == 1) 1992 msg = self.mbox.next() 1993 self.assertIsNot(msg, None) 1994 msg.fp.close() 1995 self.assertIs(self.mbox.next(), None) 1996 self.assertIs(self.mbox.next(), None) 1813 1997 1814 1998 def test_nonempty_maildir_both(self): … … 1816 2000 self.createMessage("new") 1817 2001 self.mbox = mailbox.Maildir(test_support.TESTFN) 1818 #self.assert_(len(self.mbox.boxes) == 2) 1819 self.assert_(self.mbox.next() is not None) 1820 self.assert_(self.mbox.next() is not None) 1821 self.assert_(self.mbox.next() is None) 1822 self.assert_(self.mbox.next() is None) 2002 #self.assertTrue(len(self.mbox.boxes) == 2) 2003 msg = self.mbox.next() 2004 self.assertIsNot(msg, None) 2005 msg.fp.close() 2006 msg = self.mbox.next() 2007 self.assertIsNot(msg, None) 2008 msg.fp.close() 2009 self.assertIs(self.mbox.next(), None) 2010 self.assertIs(self.mbox.next(), None) 1823 2011 1824 2012 def test_unix_mbox(self): … … 1827 2015 fname = self.createMessage("cur", True) 1828 2016 n = 0 1829 for msg in mailbox.PortableUnixMailbox(open(fname), 2017 fid = open(fname) 2018 for msg in mailbox.PortableUnixMailbox(fid, 1830 2019 email.parser.Parser().parse): 1831 2020 n += 1 1832 2021 self.assertEqual(msg["subject"], "Simple Test") 1833 2022 self.assertEqual(len(str(msg)), len(FROM_)+len(DUMMY_MESSAGE)) 2023 fid.close() 1834 2024 self.assertEqual(n, 1) 1835 2025
Note:
See TracChangeset
for help on using the changeset viewer.