summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_email/test_pickleable.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_email/test_pickleable.py')
-rw-r--r--Lib/test/test_email/test_pickleable.py69
1 files changed, 26 insertions, 43 deletions
diff --git a/Lib/test/test_email/test_pickleable.py b/Lib/test/test_email/test_pickleable.py
index 3a5bd11..09477e0 100644
--- a/Lib/test/test_email/test_pickleable.py
+++ b/Lib/test/test_email/test_pickleable.py
@@ -6,83 +6,66 @@ import email
import email.message
from email import policy
from email.headerregistry import HeaderRegistry
-from test.test_email import TestEmailBase
+from test.test_email import TestEmailBase, Parameterized
-class TestPickleCopyHeader(TestEmailBase):
+class TestPickleCopyHeader(TestEmailBase, metaclass=Parameterized):
header_factory = HeaderRegistry()
unstructured = header_factory('subject', 'this is a test')
- def _test_deepcopy(self, name, value):
+ header_params = {
+ 'subject': ('subject', 'this is a test'),
+ 'from': ('from', 'frodo@mordor.net'),
+ 'to': ('to', 'a: k@b.com, y@z.com;, j@f.com'),
+ 'date': ('date', 'Tue, 29 May 2012 09:24:26 +1000'),
+ }
+
+ def header_as_deepcopy(self, name, value):
header = self.header_factory(name, value)
h = copy.deepcopy(header)
self.assertEqual(str(h), str(header))
- def _test_pickle(self, name, value):
+ def header_as_pickle(self, name, value):
header = self.header_factory(name, value)
p = pickle.dumps(header)
h = pickle.loads(p)
self.assertEqual(str(h), str(header))
- headers = (
- ('subject', 'this is a test'),
- ('from', 'frodo@mordor.net'),
- ('to', 'a: k@b.com, y@z.com;, j@f.com'),
- ('date', 'Tue, 29 May 2012 09:24:26 +1000'),
- )
-
- for header in headers:
- locals()['test_deepcopy_'+header[0]] = (
- lambda self, header=header:
- self._test_deepcopy(*header))
-
- for header in headers:
- locals()['test_pickle_'+header[0]] = (
- lambda self, header=header:
- self._test_pickle(*header))
+class TestPickleCopyMessage(TestEmailBase, metaclass=Parameterized):
-class TestPickleCopyMessage(TestEmailBase):
-
- msgs = {}
+ # Message objects are a sequence, so we have to make them a one-tuple in
+ # msg_params so they get passed to the parameterized test method as a
+ # single argument instead of as a list of headers.
+ msg_params = {}
# Note: there will be no custom header objects in the parsed message.
- msgs['parsed'] = email.message_from_string(textwrap.dedent("""\
+ msg_params['parsed'] = (email.message_from_string(textwrap.dedent("""\
Date: Tue, 29 May 2012 09:24:26 +1000
From: frodo@mordor.net
To: bilbo@underhill.org
Subject: help
I think I forgot the ring.
- """), policy=policy.default)
+ """), policy=policy.default),)
- msgs['created'] = email.message.Message(policy=policy.default)
- msgs['created']['Date'] = 'Tue, 29 May 2012 09:24:26 +1000'
- msgs['created']['From'] = 'frodo@mordor.net'
- msgs['created']['To'] = 'bilbo@underhill.org'
- msgs['created']['Subject'] = 'help'
- msgs['created'].set_payload('I think I forgot the ring.')
+ msg_params['created'] = (email.message.Message(policy=policy.default),)
+ msg_params['created'][0]['Date'] = 'Tue, 29 May 2012 09:24:26 +1000'
+ msg_params['created'][0]['From'] = 'frodo@mordor.net'
+ msg_params['created'][0]['To'] = 'bilbo@underhill.org'
+ msg_params['created'][0]['Subject'] = 'help'
+ msg_params['created'][0].set_payload('I think I forgot the ring.')
- def _test_deepcopy(self, msg):
+ def msg_as_deepcopy(self, msg):
msg2 = copy.deepcopy(msg)
self.assertEqual(msg2.as_string(), msg.as_string())
- def _test_pickle(self, msg):
+ def msg_as_pickle(self, msg):
p = pickle.dumps(msg)
msg2 = pickle.loads(p)
self.assertEqual(msg2.as_string(), msg.as_string())
- for name, msg in msgs.items():
- locals()['test_deepcopy_'+name] = (
- lambda self, msg=msg:
- self._test_deepcopy(msg))
-
- for name, msg in msgs.items():
- locals()['test_pickle_'+name] = (
- lambda self, msg=msg:
- self._test_pickle(msg))
-
if __name__ == '__main__':
unittest.main()