Commit 45e3dff5 authored by Julien Phalip's avatar Julien Phalip
Browse files

Ensured that `makemessages` doesn't leave any temporary file over if the...

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
parent 39109b0e
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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:
+5 −7
Original line number Diff line number Diff line
@@ -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
        # 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):
        """