summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_email
diff options
context:
space:
mode:
authorR David Murray <rdmurray@bitdance.com>2014-01-13 18:19:21 (GMT)
committerR David Murray <rdmurray@bitdance.com>2014-01-13 18:19:21 (GMT)
commit2313e15578aa864c7b995de996e4787169f7ca8d (patch)
tree93e512a1dd86f538cbd29b78086029c867364fac /Lib/test/test_email
parent2a3d7d1af7ff00748f25bbd49a928f8af1a9990d (diff)
downloadcpython-2313e15578aa864c7b995de996e4787169f7ca8d.zip
cpython-2313e15578aa864c7b995de996e4787169f7ca8d.tar.gz
cpython-2313e15578aa864c7b995de996e4787169f7ca8d.tar.bz2
#20206, #5803: more efficient algorithm that doesn't truncate output.
This fixes an edge case (20206) where if the input ended in a character needing encoding but there was no newline on the string, the last byte of the encoded character would be dropped. The fix is to use a more efficient algorithm, provided by Serhiy Storchaka (5803), that does not have the bug.
Diffstat (limited to 'Lib/test/test_email')
-rw-r--r--Lib/test/test_email/test_email.py5
1 files changed, 5 insertions, 0 deletions
diff --git a/Lib/test/test_email/test_email.py b/Lib/test/test_email/test_email.py
index 6af6278..c787695 100644
--- a/Lib/test/test_email/test_email.py
+++ b/Lib/test/test_email/test_email.py
@@ -4216,6 +4216,11 @@ class TestQuopri(unittest.TestCase):
def test_encode_one_line_eol(self):
self._test_encode('hello\n', 'hello\r\n', eol='\r\n')
+ def test_encode_one_line_eol_after_non_ascii(self):
+ # issue 20206; see changeset 0cf700464177 for why the encode/decode.
+ self._test_encode('hello\u03c5\n'.encode('utf-8').decode('latin1'),
+ 'hello=CF=85\r\n', eol='\r\n')
+
def test_encode_one_space(self):
self._test_encode(' ', '=20')