summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2016-07-14 18:24:40 +0200
committerClaude Paroz <claude@2xlibre.net>2016-07-14 20:39:58 +0200
commita74adb4c35a90f41e56bb97166a784e56835a56a (patch)
tree3b8d3b091e0bcd5d03cd979d67906da066fbfd61
parent5316ae7d4f03ceed268422cc9adcedbba0d6d7f4 (diff)
[1.9.x] Fixed #26897 -- Fixed makemessages crash on Python 2 with non-ASCII file names
Thanks Tim Graham for the review. Backport of 3e71f6544feca490211e88db4f449dfdb7acce39 from master.
-rw-r--r--django/core/management/commands/makemessages.py2
-rw-r--r--docs/releases/1.9.8.txt3
-rw-r--r--tests/i18n/test_extraction.py4
3 files changed, 8 insertions, 1 deletions
diff --git a/django/core/management/commands/makemessages.py b/django/core/management/commands/makemessages.py
index 0df47d306e..0e75c7e99c 100644
--- a/django/core/management/commands/makemessages.py
+++ b/django/core/management/commands/makemessages.py
@@ -511,7 +511,7 @@ class Command(BaseCommand):
input_files = [bf.work_path for bf in build_files]
with NamedTemporaryFile(mode='w+') as input_files_list:
- input_files_list.write('\n'.join(input_files))
+ input_files_list.write(force_str('\n'.join(input_files), encoding=DEFAULT_LOCALE_ENCODING))
input_files_list.flush()
args.extend(['--files-from', input_files_list.name])
args.extend(self.xgettext_options)
diff --git a/docs/releases/1.9.8.txt b/docs/releases/1.9.8.txt
index 7265e166b8..8db5c3d01f 100644
--- a/docs/releases/1.9.8.txt
+++ b/docs/releases/1.9.8.txt
@@ -12,3 +12,6 @@ Bugfixes
* Fixed missing ``varchar/text_pattern_ops`` index on ``CharField`` and
``TextField`` respectively when using ``AddField`` on PostgreSQL
(:ticket:`26889`).
+
+* Fixed ``makemessages`` crash on Python 2 with non-ASCII file names
+ (:ticket:`26897`).
diff --git a/tests/i18n/test_extraction.py b/tests/i18n/test_extraction.py
index 8ca9bdd779..98e8e074cc 100644
--- a/tests/i18n/test_extraction.py
+++ b/tests/i18n/test_extraction.py
@@ -242,6 +242,10 @@ class BasicExtractorTests(ExtractorTests):
self.assertIn("UnicodeDecodeError: skipped file not_utf8.txt in .",
force_text(out.getvalue()))
+ def test_unicode_file_name(self):
+ open(os.path.join(self.test_dir, 'vidéo.txt'), 'a').close()
+ management.call_command('makemessages', locale=[LOCALE], verbosity=0)
+
def test_extraction_warning(self):
"""test xgettext warning about multiple bare interpolation placeholders"""
os.chdir(self.test_dir)