Fixed #26232 -- Fixed Popen mocking environment in i18n tests

Refs #25925. Thanks Jeroen Pulles for the report.
This commit is contained in:
Claude Paroz 2016-02-20 09:36:01 +01:00
parent c30086159d
commit eda306f1ce
1 changed files with 17 additions and 16 deletions

View File

@ -165,26 +165,27 @@ class CompilationErrorHandling(MessageCompilationTests):
with self.assertRaises(CommandError):
call_command('compilemessages', locale=['ja'], verbosity=0)
# We will check the output of msgfmt, so we need to make sure its output
# is unaffected by the current locale.
@mock.patch('django.core.management.utils.Popen',
lambda *args, **kwargs: Popen(*args, env={'LANG': 'C'}, **kwargs))
def test_msgfmt_error_including_non_ascii(self):
# po file contains invalid msgstr content (triggers non-ascii error content).
mo_file = 'locale/ko/LC_MESSAGES/django.mo'
self.addCleanup(self.rmfile, os.path.join(self.test_dir, mo_file))
if six.PY2:
# Various assertRaises on PY2 don't support unicode error messages.
try:
call_command('compilemessages', locale=['ko'], verbosity=0)
except CommandError as err:
self.assertIn("'<EFBFBD>' cannot start a field name", six.text_type(err))
else:
cmd = MakeMessagesCommand()
if cmd.gettext_version < (0, 18, 3):
raise unittest.SkipTest("python-brace-format is a recent gettext addition.")
with self.assertRaisesMessage(CommandError, "'<EFBFBD>' cannot start a field name"):
call_command('compilemessages', locale=['ko'], verbosity=0)
# Make sure the output of msgfmt is unaffected by the current locale.
env = os.environ.copy()
env.update({'LANG': 'C'})
with mock.patch('django.core.management.utils.Popen',
lambda *args, **kwargs: Popen(*args, env=env, **kwargs)):
if six.PY2:
# Various assertRaises on PY2 don't support unicode error messages.
try:
call_command('compilemessages', locale=['ko'], verbosity=0)
except CommandError as err:
self.assertIn("'<EFBFBD>' cannot start a field name", six.text_type(err))
else:
cmd = MakeMessagesCommand()
if cmd.gettext_version < (0, 18, 3):
raise unittest.SkipTest("python-brace-format is a recent gettext addition.")
with self.assertRaisesMessage(CommandError, "'<EFBFBD>' cannot start a field name"):
call_command('compilemessages', locale=['ko'], verbosity=0)
class ProjectAndAppTests(MessageCompilationTests):