self.refold_source == 'long' and
(lines and len(lines[0])+len(name)+2 > maxlen or
any(len(x) > maxlen for x in lines[1:])))
- if refold or refold_binary and _has_surrogates(value):
+
+ if not refold:
+ if not self.utf8:
+ refold = not value.isascii()
+ elif refold_binary:
+ refold = _has_surrogates(value)
+ if refold:
return self.header_factory(name, ''.join(lines)).fold(policy=self)
+
return name + ': ' + self.linesep.join(lines) + self.linesep
for attr, value in expected.items():
self.assertEqual(getattr(added, attr), value)
+ def test_fold_utf8(self):
+ expected_ascii = 'Subject: =?utf-8?q?=C3=A1?=\n'
+ expected_utf8 = 'Subject: á\n'
+
+ msg = email.message.EmailMessage()
+ s = 'á'
+ msg['Subject'] = s
+
+ p_ascii = email.policy.default.clone()
+ p_utf8 = email.policy.default.clone(utf8=True)
+
+ self.assertEqual(p_ascii.fold('Subject', msg['Subject']), expected_ascii)
+ self.assertEqual(p_utf8.fold('Subject', msg['Subject']), expected_utf8)
+
+ self.assertEqual(p_ascii.fold('Subject', s), expected_ascii)
+ self.assertEqual(p_utf8.fold('Subject', s), expected_utf8)
+
def test_fold_zero_max_line_length(self):
expected = 'Subject: =?utf-8?q?=C3=A1?=\n'