summaryrefslogtreecommitdiffstats
path: root/Lib/email/test/test_email.py
diff options
context:
space:
mode:
authorR. David Murray <rdmurray@bitdance.com>2010-10-02 16:26:05 (GMT)
committerR. David Murray <rdmurray@bitdance.com>2010-10-02 16:26:05 (GMT)
commit10a867669193c942e5ad3da9da0b6bcc5b493c17 (patch)
treef36a1826df7d416cad49dc4f1db3048f4d3aadfd /Lib/email/test/test_email.py
parent452b0ce586582d9368e56fab96f686ce775995ae (diff)
downloadcpython-10a867669193c942e5ad3da9da0b6bcc5b493c17.zip
cpython-10a867669193c942e5ad3da9da0b6bcc5b493c17.tar.gz
cpython-10a867669193c942e5ad3da9da0b6bcc5b493c17.tar.bz2
Merged revisions 85179 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r85179 | r.david.murray | 2010-10-02 11:58:26 -0400 (Sat, 02 Oct 2010) | 6 lines #1050268: make parseaddr 'quote' the contents of quoted strings in addresses. Also made the doc string for email._parseaddr's 'quote' function more accurate; I'd love to make the function match the old docstring instead, but other code uses it according the existing semantics. ........
Diffstat (limited to 'Lib/email/test/test_email.py')
-rw-r--r--Lib/email/test/test_email.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/Lib/email/test/test_email.py b/Lib/email/test/test_email.py
index c3610bf..58edd0c 100644
--- a/Lib/email/test/test_email.py
+++ b/Lib/email/test/test_email.py
@@ -2287,6 +2287,24 @@ class TestMiscellaneous(TestEmailBase):
# formataddr() quotes the name if there's a dot in it
self.assertEqual(Utils.formataddr((a, b)), y)
+ def test_parseaddr_preserves_quoted_pairs_in_addresses(self):
+ # issue 10005. Note that in the third test the second pair of
+ # backslashes is not actually a quoted pair because it is not inside a
+ # comment or quoted string: the address being parsed has a quoted
+ # string containing a quoted backslash, followed by 'example' and two
+ # backslashes, followed by another quoted string containing a space and
+ # the word 'example'. parseaddr copies those two backslashes
+ # literally. Per rfc5322 this is not technically correct since a \ may
+ # not appear in an address outside of a quoted string. It is probably
+ # a sensible Postel interpretation, though.
+ eq = self.assertEqual
+ eq(Utils.parseaddr('""example" example"@example.com'),
+ ('', '""example" example"@example.com'))
+ eq(Utils.parseaddr('"\\"example\\" example"@example.com'),
+ ('', '"\\"example\\" example"@example.com'))
+ eq(Utils.parseaddr('"\\\\"example\\\\" example"@example.com'),
+ ('', '"\\\\"example\\\\" example"@example.com'))
+
def test_multiline_from_comment(self):
x = """\
Foo