cpython/Lib/test/test_email/test_pickleable.py
R David Murray ea9766897b Make headerregistry fully part of the provisional api.
When I made the checkin of the provisional email policy, I knew that
Address and Group needed to be made accessible from somewhere.  The more
I looked at it, though, the more it became clear that since this is a
provisional API anyway, there's no good reason to hide headerregistry as
a private API.  It was designed to ultimately be part of the public API,
and so it should be part of the provisional API.

This patch fully documents the headerregistry API, and deletes the
abbreviated version of those docs I had added to the provisional policy
docs.
2012-05-27 15:03:38 -04:00

57 lines
1.6 KiB
Python

import unittest
import textwrap
import copy
import pickle
from email import policy
from email import message_from_string
from email.headerregistry import HeaderRegistry
from test.test_email import TestEmailBase
class TestPickleCopyHeader(TestEmailBase):
unstructured = HeaderRegistry()('subject', 'this is a test')
def test_deepcopy_unstructured(self):
h = copy.deepcopy(self.unstructured)
self.assertEqual(str(h), str(self.unstructured))
def test_pickle_unstructured(self):
p = pickle.dumps(self.unstructured)
h = pickle.loads(p)
self.assertEqual(str(h), str(self.unstructured))
address = HeaderRegistry()('from', 'frodo@mordor.net')
def test_deepcopy_address(self):
h = copy.deepcopy(self.address)
self.assertEqual(str(h), str(self.address))
def test_pickle_address(self):
p = pickle.dumps(self.address)
h = pickle.loads(p)
self.assertEqual(str(h), str(self.address))
class TestPickleCopyMessage(TestEmailBase):
testmsg = message_from_string(textwrap.dedent("""\
From: frodo@mordor.net
To: bilbo@underhill.org
Subject: help
I think I forgot the ring.
"""), policy=policy.default)
def test_deepcopy(self):
msg2 = copy.deepcopy(self.testmsg)
self.assertEqual(msg2.as_string(), self.testmsg.as_string())
def test_pickle(self):
p = pickle.dumps(self.testmsg)
msg2 = pickle.loads(p)
self.assertEqual(msg2.as_string(), self.testmsg.as_string())
if __name__ == '__main__':
unittest.main()