Commit 9ad6a563 authored by Petri Lehtinen's avatar Petri Lehtinen

#15040: Close files in mailbox tests for PyPy compatibility

Original patch by Matti Picus.
parent e3d47128
...@@ -146,6 +146,7 @@ class TestMailbox(TestBase): ...@@ -146,6 +146,7 @@ class TestMailbox(TestBase):
msg = self._box.get(key1) msg = self._box.get(key1)
self.assertEqual(msg['from'], 'foo') self.assertEqual(msg['from'], 'foo')
self.assertEqual(msg.fp.read(), '1' + os.linesep) self.assertEqual(msg.fp.read(), '1' + os.linesep)
msg.fp.close()
def test_getitem(self): def test_getitem(self):
# Retrieve message using __getitem__() # Retrieve message using __getitem__()
...@@ -178,10 +179,14 @@ class TestMailbox(TestBase): ...@@ -178,10 +179,14 @@ class TestMailbox(TestBase):
# Get file representations of messages # Get file representations of messages
key0 = self._box.add(self._template % 0) key0 = self._box.add(self._template % 0)
key1 = self._box.add(_sample_message) key1 = self._box.add(_sample_message)
self.assertEqual(self._box.get_file(key0).read().replace(os.linesep, '\n'), msg0 = self._box.get_file(key0)
self.assertEqual(msg0.read().replace(os.linesep, '\n'),
self._template % 0) self._template % 0)
self.assertEqual(self._box.get_file(key1).read().replace(os.linesep, '\n'), msg1 = self._box.get_file(key1)
self.assertEqual(msg1.read().replace(os.linesep, '\n'),
_sample_message) _sample_message)
msg0.close()
msg1.close()
def test_get_file_can_be_closed_twice(self): def test_get_file_can_be_closed_twice(self):
# Issue 11700 # Issue 11700
...@@ -427,6 +432,7 @@ class TestMailbox(TestBase): ...@@ -427,6 +432,7 @@ class TestMailbox(TestBase):
self._box.add(contents[0]) self._box.add(contents[0])
self._box.add(contents[1]) self._box.add(contents[1])
self._box.add(contents[2]) self._box.add(contents[2])
oldbox = self._box
method() method()
if should_call_close: if should_call_close:
self._box.close() self._box.close()
...@@ -435,6 +441,7 @@ class TestMailbox(TestBase): ...@@ -435,6 +441,7 @@ class TestMailbox(TestBase):
self.assertEqual(len(keys), 3) self.assertEqual(len(keys), 3)
for key in keys: for key in keys:
self.assertIn(self._box.get_string(key), contents) self.assertIn(self._box.get_string(key), contents)
oldbox.close()
def test_dump_message(self): def test_dump_message(self):
# Write message representations to disk # Write message representations to disk
...@@ -1968,7 +1975,9 @@ class MaildirTestCase(unittest.TestCase): ...@@ -1968,7 +1975,9 @@ class MaildirTestCase(unittest.TestCase):
self.createMessage("cur") self.createMessage("cur")
self.mbox = mailbox.Maildir(test_support.TESTFN) self.mbox = mailbox.Maildir(test_support.TESTFN)
#self.assertTrue(len(self.mbox.boxes) == 1) #self.assertTrue(len(self.mbox.boxes) == 1)
self.assertIsNot(self.mbox.next(), None) msg = self.mbox.next()
self.assertIsNot(msg, None)
msg.fp.close()
self.assertIs(self.mbox.next(), None) self.assertIs(self.mbox.next(), None)
self.assertIs(self.mbox.next(), None) self.assertIs(self.mbox.next(), None)
...@@ -1976,7 +1985,9 @@ class MaildirTestCase(unittest.TestCase): ...@@ -1976,7 +1985,9 @@ class MaildirTestCase(unittest.TestCase):
self.createMessage("new") self.createMessage("new")
self.mbox = mailbox.Maildir(test_support.TESTFN) self.mbox = mailbox.Maildir(test_support.TESTFN)
#self.assertTrue(len(self.mbox.boxes) == 1) #self.assertTrue(len(self.mbox.boxes) == 1)
self.assertIsNot(self.mbox.next(), None) msg = self.mbox.next()
self.assertIsNot(msg, None)
msg.fp.close()
self.assertIs(self.mbox.next(), None) self.assertIs(self.mbox.next(), None)
self.assertIs(self.mbox.next(), None) self.assertIs(self.mbox.next(), None)
...@@ -1985,8 +1996,12 @@ class MaildirTestCase(unittest.TestCase): ...@@ -1985,8 +1996,12 @@ class MaildirTestCase(unittest.TestCase):
self.createMessage("new") self.createMessage("new")
self.mbox = mailbox.Maildir(test_support.TESTFN) self.mbox = mailbox.Maildir(test_support.TESTFN)
#self.assertTrue(len(self.mbox.boxes) == 2) #self.assertTrue(len(self.mbox.boxes) == 2)
self.assertIsNot(self.mbox.next(), None) msg = self.mbox.next()
self.assertIsNot(self.mbox.next(), None) self.assertIsNot(msg, None)
msg.fp.close()
msg = self.mbox.next()
self.assertIsNot(msg, None)
msg.fp.close()
self.assertIs(self.mbox.next(), None) self.assertIs(self.mbox.next(), None)
self.assertIs(self.mbox.next(), None) self.assertIs(self.mbox.next(), None)
...@@ -1995,11 +2010,13 @@ class MaildirTestCase(unittest.TestCase): ...@@ -1995,11 +2010,13 @@ class MaildirTestCase(unittest.TestCase):
import email.parser import email.parser
fname = self.createMessage("cur", True) fname = self.createMessage("cur", True)
n = 0 n = 0
for msg in mailbox.PortableUnixMailbox(open(fname), fid = open(fname)
for msg in mailbox.PortableUnixMailbox(fid,
email.parser.Parser().parse): email.parser.Parser().parse):
n += 1 n += 1
self.assertEqual(msg["subject"], "Simple Test") self.assertEqual(msg["subject"], "Simple Test")
self.assertEqual(len(str(msg)), len(FROM_)+len(DUMMY_MESSAGE)) self.assertEqual(len(str(msg)), len(FROM_)+len(DUMMY_MESSAGE))
fid.close()
self.assertEqual(n, 1) self.assertEqual(n, 1)
## End: classes from the original module (for backward compatibility). ## End: classes from the original module (for backward compatibility).
......
...@@ -73,7 +73,9 @@ class MaildirTestCase(unittest.TestCase): ...@@ -73,7 +73,9 @@ class MaildirTestCase(unittest.TestCase):
self.createMessage("cur") self.createMessage("cur")
self.mbox = mailbox.Maildir(test_support.TESTFN) self.mbox = mailbox.Maildir(test_support.TESTFN)
self.assertTrue(len(self.mbox) == 1) self.assertTrue(len(self.mbox) == 1)
self.assertTrue(self.mbox.next() is not None) msg = self.mbox.next()
self.assertTrue(msg is not None)
msg.fp.close()
self.assertTrue(self.mbox.next() is None) self.assertTrue(self.mbox.next() is None)
self.assertTrue(self.mbox.next() is None) self.assertTrue(self.mbox.next() is None)
...@@ -81,7 +83,9 @@ class MaildirTestCase(unittest.TestCase): ...@@ -81,7 +83,9 @@ class MaildirTestCase(unittest.TestCase):
self.createMessage("new") self.createMessage("new")
self.mbox = mailbox.Maildir(test_support.TESTFN) self.mbox = mailbox.Maildir(test_support.TESTFN)
self.assertTrue(len(self.mbox) == 1) self.assertTrue(len(self.mbox) == 1)
self.assertTrue(self.mbox.next() is not None) msg = self.mbox.next()
self.assertTrue(msg is not None)
msg.fp.close()
self.assertTrue(self.mbox.next() is None) self.assertTrue(self.mbox.next() is None)
self.assertTrue(self.mbox.next() is None) self.assertTrue(self.mbox.next() is None)
...@@ -90,8 +94,12 @@ class MaildirTestCase(unittest.TestCase): ...@@ -90,8 +94,12 @@ class MaildirTestCase(unittest.TestCase):
self.createMessage("new") self.createMessage("new")
self.mbox = mailbox.Maildir(test_support.TESTFN) self.mbox = mailbox.Maildir(test_support.TESTFN)
self.assertTrue(len(self.mbox) == 2) self.assertTrue(len(self.mbox) == 2)
self.assertTrue(self.mbox.next() is not None) msg = self.mbox.next()
self.assertTrue(self.mbox.next() is not None) self.assertTrue(msg is not None)
msg.fp.close()
msg = self.mbox.next()
self.assertTrue(msg is not None)
msg.fp.close()
self.assertTrue(self.mbox.next() is None) self.assertTrue(self.mbox.next() is None)
self.assertTrue(self.mbox.next() is None) self.assertTrue(self.mbox.next() is None)
......
...@@ -762,6 +762,7 @@ Gavrie Philipson ...@@ -762,6 +762,7 @@ Gavrie Philipson
Adrian Phillips Adrian Phillips
Christopher J. Phoenix Christopher J. Phoenix
Neale Pickett Neale Pickett
Matti Picus
Jim St. Pierre Jim St. Pierre
Dan Pierson Dan Pierson
Martijn Pieters Martijn Pieters
......
...@@ -435,6 +435,9 @@ Extension Modules ...@@ -435,6 +435,9 @@ Extension Modules
Tests Tests
----- -----
- Issue #15040: Close files in mailbox tests for PyPy compatibility.
Original patch by Matti Picus.
- Issue #15802: Fix test logic in TestMaildir.test_create_tmp. Patch - Issue #15802: Fix test logic in TestMaildir.test_create_tmp. Patch
by Serhiy Storchaka. by Serhiy Storchaka.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment