@@ -1994,9 +1994,9 @@ def test_rfc2047_multiline(self):
19941994 foo bar =?mac-iceland?q?r=8Aksm=9Arg=8Cs?="""
19951995 dh = decode_header (s )
19961996 eq (dh , [
1997- (b'Re:' , None ),
1997+ (b'Re: ' , None ),
19981998 (b'r\x8a ksm\x9a rg\x8c s' , 'mac-iceland' ),
1999- (b'baz foo bar' , None ),
1999+ (b' baz foo bar ' , None ),
20002000 (b'r\x8a ksm\x9a rg\x8c s' , 'mac-iceland' )])
20012001 header = make_header (dh )
20022002 eq (str (header ),
@@ -2005,35 +2005,37 @@ def test_rfc2047_multiline(self):
20052005 Re: =?mac-iceland?q?r=8Aksm=9Arg=8Cs?= baz foo bar =?mac-iceland?q?r=8Aksm?=
20062006 =?mac-iceland?q?=9Arg=8Cs?=""" )
20072007
2008- def test_whitespace_eater_unicode (self ):
2008+ def test_whitespace_keeper_unicode (self ):
20092009 eq = self .assertEqual
20102010 s = '=?ISO-8859-1?Q?Andr=E9?= Pirard <[email protected] >' 20112011 dh = decode_header (s )
20122012 eq (dh , [(b'Andr\xe9 ' , 'iso-8859-1' ),
2013- (
b'Pirard <[email protected] >' ,
None )])
2013+ (
b' Pirard <[email protected] >' ,
None )])
20142014 header = str (make_header (dh ))
20152015 eq (
header ,
'Andr\xe9 Pirard <[email protected] >' )
20162016
2017- def test_whitespace_eater_unicode_2 (self ):
2017+ def test_whitespace_keeper_unicode_2 (self ):
20182018 eq = self .assertEqual
20192019 s = 'The =?iso-8859-1?b?cXVpY2sgYnJvd24gZm94?= jumped over the =?iso-8859-1?b?bGF6eSBkb2c=?='
20202020 dh = decode_header (s )
2021- eq (dh , [(b'The' , None ), (b'quick brown fox' , 'iso-8859-1' ),
2022- (b'jumped over the' , None ), (b'lazy dog' , 'iso-8859-1' )])
2021+ eq (dh , [(b'The ' , None ), (b'quick brown fox' , 'iso-8859-1' ),
2022+ (b' jumped over the ' , None ), (b'lazy dog' , 'iso-8859-1' )])
20232023 hu = str (make_header (dh ))
20242024 eq (hu , 'The quick brown fox jumped over the lazy dog' )
20252025
20262026 def test_rfc2047_missing_whitespace (self ):
20272027 s = 'Sm=?ISO-8859-1?B?9g==?=rg=?ISO-8859-1?B?5Q==?=sbord'
20282028 dh = decode_header (s )
2029- self .assertEqual (dh , [(s , None )])
2029+ self .assertEqual (dh , [(b'Sm' , None ), (b'\xf6 ' , 'iso-8859-1' ),
2030+ (b'rg' , None ), (b'\xe5 ' , 'iso-8859-1' ),
2031+ (b'sbord' , None )])
20302032
20312033 def test_rfc2047_with_whitespace (self ):
20322034 s = 'Sm =?ISO-8859-1?B?9g==?= rg =?ISO-8859-1?B?5Q==?= sbord'
20332035 dh = decode_header (s )
2034- self .assertEqual (dh , [(b'Sm' , None ), (b'\xf6 ' , 'iso-8859-1' ),
2035- (b'rg ' , None ), (b'\xe5 ' , 'iso-8859-1' ),
2036- (b'sbord' , None )])
2036+ self .assertEqual (dh , [(b'Sm ' , None ), (b'\xf6 ' , 'iso-8859-1' ),
2037+ (b' rg ' , None ), (b'\xe5 ' , 'iso-8859-1' ),
2038+ (b' sbord' , None )])
20372039
20382040 def test_rfc2047_B_bad_padding (self ):
20392041 s = '=?iso-8859-1?B?%s?='
@@ -2051,6 +2053,57 @@ def test_rfc2047_Q_invalid_digits(self):
20512053 self .assertEqual (decode_header (s ),
20522054 [(b'andr\xe9 =zz' , 'iso-8659-1' )])
20532055
2056+ def test_rfc2047_rfc2047_1 (self ):
2057+ # 1st testcase at end of rfc2047
2058+ s = '(=?ISO-8859-1?Q?a?=)'
2059+ self .assertEqual (decode_header (s ),
2060+ [(b'(' , None ), (b'a' , 'iso-8859-1' ), (b')' , None )])
2061+
2062+ def test_rfc2047_rfc2047_2 (self ):
2063+ # 2nd testcase at end of rfc2047
2064+ s = '(=?ISO-8859-1?Q?a?= b)'
2065+ self .assertEqual (decode_header (s ),
2066+ [(b'(' , None ), (b'a' , 'iso-8859-1' ), (b' b)' , None )])
2067+
2068+ def test_rfc2047_rfc2047_3 (self ):
2069+ # 3rd testcase at end of rfc2047
2070+ s = '(=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)'
2071+ self .assertEqual (decode_header (s ),
2072+ [(b'(' , None ), (b'ab' , 'iso-8859-1' ), (b')' , None )])
2073+
2074+ def test_rfc2047_rfc2047_4 (self ):
2075+ # 4th testcase at end of rfc2047
2076+ s = '(=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)'
2077+ self .assertEqual (decode_header (s ),
2078+ [(b'(' , None ), (b'ab' , 'iso-8859-1' ), (b')' , None )])
2079+
2080+ def test_rfc2047_rfc2047_5a (self ):
2081+ # 5th testcase at end of rfc2047 newline is \r\n
2082+ s = '(=?ISO-8859-1?Q?a?=\r \n =?ISO-8859-1?Q?b?=)'
2083+ self .assertEqual (decode_header (s ),
2084+ [(b'(' , None ), (b'ab' , 'iso-8859-1' ), (b')' , None )])
2085+
2086+ def test_rfc2047_rfc2047_5b (self ):
2087+ # 5th testcase at end of rfc2047 newline is \n
2088+ s = '(=?ISO-8859-1?Q?a?=\n =?ISO-8859-1?Q?b?=)'
2089+ self .assertEqual (decode_header (s ),
2090+ [(b'(' , None ), (b'ab' , 'iso-8859-1' ), (b')' , None )])
2091+
2092+ def test_rfc2047_rfc2047_6 (self ):
2093+ # 6th testcase at end of rfc2047
2094+ s = '(=?ISO-8859-1?Q?a_b?=)'
2095+ self .assertEqual (decode_header (s ),
2096+ [(b'(' , None ), (b'a b' , 'iso-8859-1' ), (b')' , None )])
2097+
2098+ def test_rfc2047_rfc2047_7 (self ):
2099+ # 7th testcase at end of rfc2047
2100+ s = '(=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)'
2101+ self .assertEqual (decode_header (s ),
2102+ [(b'(' , None ), (b'a' , 'iso-8859-1' ), (b' b' , 'iso-8859-2' ),
2103+ (b')' , None )])
2104+ self .assertEqual (make_header (decode_header (s )).encode (), s .lower ())
2105+ self .assertEqual (str (make_header (decode_header (s ))), '(a b)' )
2106+
20542107
20552108# Test the MIMEMessage class
20562109class TestMIMEMessage (TestEmailBase ):
@@ -4388,11 +4441,11 @@ def test_encoded_adjacent_nonencoded(self):
43884441 h = make_header (decode_header (s ))
43894442 eq (h .encode (), s )
43904443
4391- def test_whitespace_eater (self ):
4444+ def test_whitespace_keeper (self ):
43924445 eq = self .assertEqual
43934446 s = 'Subject: =?koi8-r?b?8NLP18XSy8EgzsEgxsnOwczYztk=?= =?koi8-r?q?=CA?= zz.'
43944447 parts = decode_header (s )
4395- eq (parts , [(b'Subject:' , None ), (b'\xf0 \xd2 \xcf \xd7 \xc5 \xd2 \xcb \xc1 \xce \xc1 \xc6 \xc9 \xce \xc1 \xcc \xd8 \xce \xd9 \xca ' , 'koi8-r' ), (b'zz.' , None )])
4448+ eq (parts , [(b'Subject: ' , None ), (b'\xf0 \xd2 \xcf \xd7 \xc5 \xd2 \xcb \xc1 \xce \xc1 \xc6 \xc9 \xce \xc1 \xcc \xd8 \xce \xd9 \xca ' , 'koi8-r' ), (b' zz.' , None )])
43964449 hdr = make_header (parts )
43974450 eq (hdr .encode (),
43984451 'Subject: =?koi8-r?b?8NLP18XSy8EgzsEgxsnOwczYztnK?= zz.' )
0 commit comments