Aurélien Bompard has proposed merging
lp:~abompard/mailman/mailman-templates-utf8 into lp:mailman.
Requested reviews:
Mailman Coders (mailman-coders)
For more details, see:
https://code.launchpad.net/~abompard/mailman/mailman-templates-utf8/+merge/249358
As discussed on the mailing-list in October, the templates should be encoded in
UTF-8.
(https://mail.python.org/pipermail/mailman-developers/2013-October/023347.html)
However, the current code does not specify this and relies on
locale.getpreferredencoding() returning UTF-8 to read the templates.
You can verify this by running the test suite with LANG=C.
This branch forces the templates encoding to UTF-8 on read().
--
Your team Mailman Coders is requested to review the proposed merge of
lp:~abompard/mailman/mailman-templates-utf8 into lp:mailman.
=== modified file 'src/mailman/utilities/i18n.py'
--- src/mailman/utilities/i18n.py 2015-01-05 01:40:47 +0000
+++ src/mailman/utilities/i18n.py 2015-02-11 16:56:51 +0000
@@ -150,7 +150,7 @@
try:
if _trace:
print('@@@', path, end='', file=sys.stderr)
- fp = open(path)
+ fp = open(path, encoding="utf-8")
except IOError as error:
if error.errno == errno.ENOENT:
if _trace:
=== modified file 'src/mailman/utilities/tests/test_templates.py'
--- src/mailman/utilities/tests/test_templates.py 2015-01-05 01:22:39 +0000
+++ src/mailman/utilities/tests/test_templates.py 2015-02-11 16:56:51 +0000
@@ -25,6 +25,7 @@
import os
+import locale
import shutil
import tempfile
import unittest
@@ -227,6 +228,20 @@
find('missing.txt', self.mlist)
self.assertEqual(cm.exception.template_file, 'missing.txt')
+ def test_encoding(self):
+ with open(self.xxsite, 'w', encoding="utf-8") as fp:
+ fp.write('Ol\ufffd!')
+ # Settings LC_ALL to 'C' will clear locale.getpreferredencoding() from
+ # references to UTF-8 that it would have caught up reading the
+ # environment.
+ locale.setlocale(locale.LC_ALL, 'C')
+ filename, self.fp = find('site.txt', language='xx')
+ try:
+ content = self.fp.read()
+ except UnicodeDecodeError:
+ self.fail("Templates should be considered UTF-8 by default")
+ self.assertEqual(content, 'Ol\ufffd!')
+
class TestMake(unittest.TestCase):
_______________________________________________
Mailman-coders mailing list
[email protected]
https://mail.python.org/mailman/listinfo/mailman-coders