mirror of
https://github.com/python/cpython.git
synced 2025-11-01 14:11:41 +00:00
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.
57 lines
1.6 KiB
Python
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()
|