summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Phalip <jphalip@gmail.com>2011-12-21 15:35:58 +0000
committerJulien Phalip <jphalip@gmail.com>2011-12-21 15:35:58 +0000
commit45e3dff5ac697f16829697bc2a899eaeac8986ea (patch)
tree4ec581efd5e97756f6162a0de04a74a3950ac7ce
parent39109b0e44c77d0acf1c48c9f48e3631eff5f122 (diff)
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
-rw-r--r--django/core/management/commands/makemessages.py3
-rw-r--r--tests/regressiontests/i18n/commands/extraction.py12
2 files changed, 7 insertions, 8 deletions
diff --git a/django/core/management/commands/makemessages.py b/django/core/management/commands/makemessages.py
index a903c3c211..e31c6c8d31 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 6566ef4808..b1fc0025c7 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):
"""