#26645 closed Bug (fixed)
Errors when running i18n makemessages tests on Windows
| Reported by: | Ramiro Morales | Owned by: | Ramiro Morales |
|---|---|---|---|
| Component: | Internationalization | Version: | 1.10 |
| Severity: | Normal | Keywords: | windows makemessages |
| Cc: | Triage Stage: | Ready for checkin | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description (last modified by )
Follow-up to report makemessages (literal translation extraction functionality) problems made visible after #25677 / fa08d27fb714534670b431fde0cd04a17d637585 but which aren't actually related to the issue reported there and probably nor with the commit either.
Example output whe running tests with Python 2.7 (outcome when using 3.4 and 3.5 is similar).
gettext version is 0.19.6.
Edited to show only errors relevant to this ticket:
======================================================================
ERROR: test_blocktrans_trimmed (i18n.test_extraction.BasicExtractorTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 223, in test_blocktrans_trimmed
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_comments_extractor (i18n.test_extraction.BasicExtractorTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 181, in test_comments_extractor
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_context_in_single_quotes (i18n.test_extraction.BasicExtractorTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 306, in test_context_in_single_quotes
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_extraction_warning (i18n.test_extraction.BasicExtractorTests)
test xgettext warning about multiple bare interpolation placeholders
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 265, in test_extraction_warning
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_special_char_extracted (i18n.test_extraction.BasicExtractorTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 215, in test_special_char_extracted
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_template_comments (i18n.test_extraction.BasicExtractorTests)
Template comment tags on the same line of other constructs (#19552)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 325, in test_template_comments
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_template_message_context_extractor (i18n.test_extraction.BasicExtractorTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 275, in test_template_message_context_extractor
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_unicode_decode_error (i18n.test_extraction.BasicExtractorTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 255, in test_unicode_decode_error
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_copy_plural_forms (i18n.test_extraction.CopyPluralFormsExtractorTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 575, in test_copy_plural_forms
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_override_plural_forms (i18n.test_extraction.CopyPluralFormsExtractorTests)
Ticket #20311.
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 584, in test_override_plural_forms
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\es\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_trans_and_plural_blocktrans_collision (i18n.test_extraction.CopyPluralFormsExtractorTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 598, in test_trans_and_plural_blocktrans_collision
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_ignore_directory (i18n.test_extraction.IgnoredExtractorTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 491, in test_ignore_directory
File "C:\django\upstream\tests\i18n\test_extraction.py", line 69, in _run_makemessages
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_ignore_file_patterns (i18n.test_extraction.IgnoredExtractorTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 507, in test_ignore_file_patterns
File "C:\django\upstream\tests\i18n\test_extraction.py", line 69, in _run_makemessages
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_ignore_subdirectory (i18n.test_extraction.IgnoredExtractorTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 500, in test_ignore_subdirectory
File "C:\django\upstream\tests\i18n\test_extraction.py", line 69, in _run_makemessages
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_media_static_dirs_ignored (i18n.test_extraction.IgnoredExtractorTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\django\test\utils.py", line 208, in inner
return func(*args, **kwargs)
File "C:\django\upstream\tests\i18n\test_extraction.py", line 516, in test_media_static_dirs_ignored
File "C:\django\upstream\tests\i18n\test_extraction.py", line 69, in _run_makemessages
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_default_root_settings (i18n.test_extraction.JavascriptExtractorTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\django\test\utils.py", line 208, in inner
return func(*args, **kwargs)
File "C:\django\upstream\tests\i18n\test_extraction.py", line 483, in test_default_root_settings
File "C:\django\upstream\tests\i18n\test_extraction.py", line 69, in _run_makemessages
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\djangojs.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_javascript_literals (i18n.test_extraction.JavascriptExtractorTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 451, in test_javascript_literals
File "C:\django\upstream\tests\i18n\test_extraction.py", line 69, in _run_makemessages
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\djangojs.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_media_static_dirs_ignored (i18n.test_extraction.JavascriptExtractorTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\django\test\utils.py", line 208, in inner
return func(*args, **kwargs)
File "C:\django\upstream\tests\i18n\test_extraction.py", line 474, in test_media_static_dirs_ignored
File "C:\django\upstream\tests\i18n\test_extraction.py", line 69, in _run_makemessages
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\djangojs.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_keep_pot_disabled_by_default (i18n.test_extraction.KeepPotFileExtractorTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 682, in test_keep_pot_disabled_by_default
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_keep_pot_enabled (i18n.test_extraction.KeepPotFileExtractorTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 694, in test_keep_pot_enabled
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_keep_pot_explicitly_disabled (i18n.test_extraction.KeepPotFileExtractorTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 688, in test_keep_pot_explicitly_disabled
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_location_comments_for_templatized_files (i18n.test_extraction.LocationCommentsTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 658, in test_location_comments_for_templatized_files
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_no_location_disabled (i18n.test_extraction.LocationCommentsTests)
Behavior is correct if --no-location switch isn't specified.
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 647, in test_no_location_disabled
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_no_location_enabled (i18n.test_extraction.LocationCommentsTests)
Behavior is correct if --no-location switch is specified. See #16903.
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 640, in test_no_location_enabled
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_multiple_locales (i18n.test_extraction.MultipleLocaleExtractionTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 715, in test_multiple_locales
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_no_wrap_disabled (i18n.test_extraction.NoWrapExtractorTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 623, in test_no_wrap_disabled
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
======================================================================
ERROR: test_no_wrap_enabled (i18n.test_extraction.NoWrapExtractorTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\django\upstream\tests\i18n\test_extraction.py", line 611, in test_no_wrap_enabled
File "C:\django\upstream\django\core\management\__init__.py", line 130, in call_command
return command.execute(*args, **defaults)
File "C:\django\upstream\django\core\management\base.py", line 356, in execute
output = self.handle(*args, **options)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 343, in handle
self.write_po_file(potfile, locale)
File "C:\django\upstream\django\core\management\commands\makemessages.py", line 577, in write_po_file
"errors happened while running msgmerge\n%s" % errors)
CommandError: errors happened while running msgmerge
C:\django\upstream\tests\i18n\commands\locale\de\LC_MESSAGES\django.po:2:47: syntax error
msgmerge: found 1 fatal error
Change History (8)
comment:1 by , 9 years ago
| Triage Stage: | Unreviewed → Accepted |
|---|
comment:2 by , 9 years ago
| Description: | modified (diff) |
|---|---|
| Status: | new → assigned |
comment:3 by , 9 years ago
AFAICS what happens on Windows is that by not passing universal_newlines to subprocess.Popen() as we are doing since fa08d27fb714534670b431fde0cd04a17d637585 the in -memory representation of text content we capture from the standard output of xgettext(1), msgmerge(1), etc. on this platform contains native line ending sequences and not simply \n.
(All examples below are running the i18n.test_extraction.BasicExtractorTests.test_blocktrans_trimmed test case)
Blob of text that reaches django.core.management.commands.makemessages.write_pot_file():
(Pdb) msgs u'# SOME DESCRIPTIVE TITLE.\r\n# Copyright (C) YEAR THE PACKAGE\'S COPYRIGHT HOLDER\r\n# This file is distributed under the same license as the PACKAGE package.\r\n# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\r\n#\r\n#, fuzzy\r\nmsgid ""\r\nmsgstr ""\r\n
Note the native \r\n line ending sequences.
Then, the temporary .pot file (test\i18n\test_extraction\commands\locale\django.pot) is written. As we open it in text mode (we can't open it in either binary or universal newlines modes because we are passing the encoding parameter to io.open()) the \n sequences are replaced with \r\n ones resulting in lines separated by \r\r\n, e.g. (output of hd(1) on Linux, django.pot transferred from the Windows system):
$ hd -n 240 django.pot 00000000 23 20 53 4f 4d 45 20 44 45 53 43 52 49 50 54 49 |# SOME DESCRIPTI| 00000010 56 45 20 54 49 54 4c 45 2e 0d 0d 0a 23 20 43 6f |VE TITLE....# Co| 00000020 70 79 72 69 67 68 74 20 28 43 29 20 59 45 41 52 |pyright (C) YEAR| 00000030 20 54 48 45 20 50 41 43 4b 41 47 45 27 53 20 43 | THE PACKAGE'S C| 00000040 4f 50 59 52 49 47 48 54 20 48 4f 4c 44 45 52 0d |OPYRIGHT HOLDER.| 00000050 0d 0a 23 20 54 68 69 73 20 66 69 6c 65 20 69 73 |..# This file is| 00000060 20 64 69 73 74 72 69 62 75 74 65 64 20 75 6e 64 | distributed und| 00000070 65 72 20 74 68 65 20 73 61 6d 65 20 6c 69 63 65 |er the same lice| 00000080 6e 73 65 20 61 73 20 74 68 65 20 50 41 43 4b 41 |nse as the PACKA| 00000090 47 45 20 70 61 63 6b 61 67 65 2e 0d 0d 0a 23 20 |GE package....# | 000000a0 46 49 52 53 54 20 41 55 54 48 4f 52 20 3c 45 4d |FIRST AUTHOR <EM| 000000b0 41 49 4c 40 41 44 44 52 45 53 53 3e 2c 20 59 45 |AIL@ADDRESS>, YE| 000000c0 41 52 2e 0d 0d 0a 23 0d 0d 0a 23 2c 20 66 75 7a |AR....#...#, fuz| 000000d0 7a 79 0d 0d 0a 6d 73 67 69 64 20 22 22 0d 0d 0a |zy...msgid ""...| 000000e0 6d 73 67 73 74 72 20 22 22 0d 0d 0a 22 50 72 6f |msgstr ""..."Pro|
From this stage of the message extraction process onwards:
- With each update of the on-disk ancillary temporary POT file additional
\rchars are accumulated. In the mentioned test case it ends with\r\r\r\r\nline separators. - As further
popen_wrappercalls are performed (i.e. to callmsgmerge(1)ormsguniq(1)), problem 1 above gets carried to the final.pofile(s) and somehow results in multiple\r\ninserted:
This is the final test\i18n\test_extraction\commands\locale\de\LC_MESSAGES\django.po:
$ hd -n 312 django.po 00000000 23 20 53 4f 4d 45 20 44 45 53 43 52 49 50 54 49 |# SOME DESCRIPTI| 00000010 56 45 20 54 49 54 4c 45 2e 0d 0a 22 50 6c 75 72 |VE TITLE..."Plur| 00000020 61 6c 2d 46 6f 72 6d 73 3a 20 6e 70 6c 75 72 61 |al-Forms: nplura| 00000030 6c 73 3d 32 3b 20 70 6c 75 72 61 6c 3d 28 6e 20 |ls=2; plural=(n | 00000040 21 3d 20 31 29 3b 5c 6e 22 0d 0a 0d 0a 0d 0a 0d |!= 1);\n".......| 00000050 0a 23 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 |.# Copyright (C)| 00000060 20 59 45 41 52 20 54 48 45 20 50 41 43 4b 41 47 | YEAR THE PACKAG| 00000070 45 27 53 20 43 4f 50 59 52 49 47 48 54 20 48 4f |E'S COPYRIGHT HO| 00000080 4c 44 45 52 0d 0a 0d 0a 0d 0a 0d 0a 23 20 54 68 |LDER........# Th| 00000090 69 73 20 66 69 6c 65 20 69 73 20 64 69 73 74 72 |is file is distr| 000000a0 69 62 75 74 65 64 20 75 6e 64 65 72 20 74 68 65 |ibuted under the| 000000b0 20 73 61 6d 65 20 6c 69 63 65 6e 73 65 20 61 73 | same license as| 000000c0 20 74 68 65 20 50 41 43 4b 41 47 45 20 70 61 63 | the PACKAGE pac| 000000d0 6b 61 67 65 2e 0d 0a 0d 0a 0d 0a 0d 0a 23 20 46 |kage.........# F| 000000e0 49 52 53 54 20 41 55 54 48 4f 52 20 3c 45 4d 41 |IRST AUTHOR <EMA| 000000f0 49 4c 40 41 44 44 52 45 53 53 3e 2c 20 59 45 41 |IL@ADDRESS>, YEA| 00000100 52 2e 0d 0a 0d 0a 0d 0a 0d 0a 23 20 0d 0a 0d 0a |R.........# ....| 00000110 0d 0a 0d 0a 23 2c 20 66 75 7a 7a 79 0d 0a 0d 0a |....#, fuzzy....| 00000120 6d 73 67 69 64 20 22 22 0d 0a 0d 0a 6d 73 67 73 |msgid ""....msgs| 00000130 74 72 20 22 22 0d 0a 0d |tr ""...|
- The newly added newlines confuse
copy_plural_forms()(see above) and the code in charge setting of thecharsetvalue on the PO header toutf-8. This is what causes the symptom reported by this ticket:django.po:2:47: syntax error -- msgmerge: found 1 fatal error
#25667 was about the inability to handle error output of msgfmt(1) which is actually invoked from compilemessages buf the removal of the gettext_popen_wrapper function (which was the one passing universal_newlines to subprocess.Popen()) introduced this unintended effect.
One possible path would be to re-introduce universal_newlines only for the handling of the gettext tools used by makemessages which, unlike the compilemenssages/msgmft(1), do actually spew POT and PO content in-band; but I'm afraid to do that given the difficulties we've experienced on this front, see #20271, 6fb9dee470d57882e378247fd2706d5f9867b5f9 and 57202a112a966593857725071ecd652a87c157fb for some examples.
I'm working on an alternate approach. Will update this ticket with the link to a PR.
comment:5 by , 9 years ago
| Has patch: | set |
|---|---|
| Patch needs improvement: | set |
comment:6 by , 9 years ago
| Patch needs improvement: | unset |
|---|---|
| Triage Stage: | Accepted → Ready for checkin |
| Version: | master → 1.10 |
Would be nice to know what's the reported syntax error. With a well-placed breakpoint, you should be able to inspect the po file (and maybe manually run the msgmerge command) to find out the syntax issue.