diff options
author | R David Murray <rdmurray@bitdance.com> | 2014-01-13 18:19:21 (GMT) |
---|---|---|
committer | R David Murray <rdmurray@bitdance.com> | 2014-01-13 18:19:21 (GMT) |
commit | 2313e15578aa864c7b995de996e4787169f7ca8d (patch) | |
tree | 93e512a1dd86f538cbd29b78086029c867364fac /Lib/test/test_email | |
parent | 2a3d7d1af7ff00748f25bbd49a928f8af1a9990d (diff) | |
download | cpython-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.py | 5 |
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') |