From 45e3dff5ac697f16829697bc2a899eaeac8986ea Mon Sep 17 00:00:00 2001 From: Julien Phalip Date: Wed, 21 Dec 2011 15:35:58 +0000 Subject: [PATCH] Ensured that `makemessages` doesn't leave any temporary file over if the parsing of a template file fails. Refs #8536. git-svn-id: http://code.djangoproject.com/svn/django/trunk@17240 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/core/management/commands/makemessages.py | 3 ++- tests/regressiontests/i18n/commands/extraction.py | 12 +++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/django/core/management/commands/makemessages.py b/django/core/management/commands/makemessages.py index a903c3c211e..e31c6c8d316 100644 --- a/django/core/management/commands/makemessages.py +++ b/django/core/management/commands/makemessages.py @@ -229,9 +229,10 @@ def make_messages(locale=None, domain='django', verbosity='1', all=False, if file_ext in extensions: src = open(orig_file, "rU").read() thefile = '%s.py' % file + content = templatize(src, orig_file[2:]) f = open(os.path.join(dirpath, thefile), "w") try: - f.write(templatize(src, orig_file[2:])) + f.write(content) finally: f.close() if verbosity > 1: diff --git a/tests/regressiontests/i18n/commands/extraction.py b/tests/regressiontests/i18n/commands/extraction.py index 6566ef4808b..b1fc0025c7c 100644 --- a/tests/regressiontests/i18n/commands/extraction.py +++ b/tests/regressiontests/i18n/commands/extraction.py @@ -108,16 +108,14 @@ class BasicExtractorTests(ExtractorTests): os.chdir(self.test_dir) shutil.copyfile('./templates/template_with_error.tpl', './templates/template_with_error.html') self.assertRaises(SyntaxError, management.call_command, 'makemessages', locale=LOCALE, verbosity=0) - try: + with self.assertRaises(SyntaxError) as context_manager: management.call_command('makemessages', locale=LOCALE, verbosity=0) - except SyntaxError, e: - self.assertRegexpMatches( - str(e), + self.assertRegexpMatches(str(context_manager.exception), r'Translation blocks must not include other block tags: blocktrans \(file templates[/\\]template_with_error\.html, line 3\)' ) - finally: - os.remove('./templates/template_with_error.html') - os.remove('./templates/template_with_error.html.py') # Waiting for #8536 to be fixed + os.remove('./templates/template_with_error.html') + # Check that the temporary file was cleaned up + self.assertFalse(os.path.exists('./templates/template_with_error.html.py')) def test_template_message_context_extractor(self): """