comparison mercurial/mail.py @ 41427:9b3be572ff0c

mail: document behavior of Python 3 test-notify.t (and possibly other tests) are failing on Python 3 because email.message.Message is now aware of encodings and attempts to roundtrip values with the specified message encoding. Python 2 doesn't perform this roundtripping. We have tests with non-ascii data being serialized to a message that claims to use ascii encoding. I /think/ Mercurial's behavior may be buggy here. But I'm not sure. I'm documenting the behavior so the next person who looks into this doesn't start from scratch like I did. Differential Revision: https://phab.mercurial-scm.org/D5714
author Gregory Szorc <gregory.szorc@gmail.com>
date Sat, 26 Jan 2019 10:40:37 -0800
parents d2d89d31cbb5
children 2cc453284d5c
comparison
equal deleted inserted replaced
41426:43f9b8c0574b 41427:9b3be572ff0c
241 for line in body.splitlines(): 241 for line in body.splitlines():
242 if len(line) > 950: 242 if len(line) > 950:
243 cs.body_encoding = email.charset.QP 243 cs.body_encoding = email.charset.QP
244 break 244 break
245 245
246 # On Python 2, this simply assigns a value. Python 3 inspects
247 # body and does different things depending on whether it has
248 # encode() or decode() attributes. We can get the old behavior
249 # if we pass a str and charset is None and we call set_charset().
250 # But we may get into trouble later due to Python attempting to
251 # encode/decode using the registered charset (or attempting to
252 # use ascii in the absence of a charset).
246 msg.set_payload(body, cs) 253 msg.set_payload(body, cs)
247 254
248 return msg 255 return msg
249 256
250 def _charsets(ui): 257 def _charsets(ui):