diff options
| author | Claude Paroz <claude@2xlibre.net> | 2016-07-14 18:24:40 +0200 |
|---|---|---|
| committer | Claude Paroz <claude@2xlibre.net> | 2016-07-14 20:37:56 +0200 |
| commit | 3e71f6544feca490211e88db4f449dfdb7acce39 (patch) | |
| tree | 064e7c6c5628776ed736d3610ce707520f805ec3 | |
| parent | 8ef78b81654ebcf19a1fc241e2b1ede35100096b (diff) | |
Fixed #26897 -- Fixed makemessages crash on Python 2 with non-ASCII file names
Thanks Tim Graham for the review.
| -rw-r--r-- | django/core/management/commands/makemessages.py | 2 | ||||
| -rw-r--r-- | docs/releases/1.9.8.txt | 3 | ||||
| -rw-r--r-- | tests/i18n/test_extraction.py | 4 |
3 files changed, 8 insertions, 1 deletions
diff --git a/django/core/management/commands/makemessages.py b/django/core/management/commands/makemessages.py index c0f9d58f9d..8e00c51dc3 100644 --- a/django/core/management/commands/makemessages.py +++ b/django/core/management/commands/makemessages.py @@ -549,7 +549,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 811edc15f5..6312456e50 100644 --- a/tests/i18n/test_extraction.py +++ b/tests/i18n/test_extraction.py @@ -209,6 +209,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""" shutil.copyfile('./code.sample', './code_sample.py') |
