Commit 9f2881de authored by Pindi Albert's avatar Pindi Albert Committed by Tim Graham
Browse files

Fixed #25423 -- Made error message for unknown template tag more helpful.

parent 28753258
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -553,13 +553,18 @@ class Parser(object):
        if parse_until:
            raise self.error(
                token,
                "Invalid block tag on line %d: '%s', expected %s" % (
                "Invalid block tag on line %d: '%s', expected %s. Did you "
                "forget to register or load this tag?" % (
                    token.lineno,
                    command,
                    get_text_list(["'%s'" % p for p in parse_until]),
                ),
            )
        raise self.error(token, "Invalid block tag on line %d: '%s'" % (token.lineno, command))
        raise self.error(
            token,
            "Invalid block tag on line %d: '%s'. Did you forget to register "
            "or load this tag?" % (token.lineno, command)
        )

    def unclosed_block_tag(self, parse_until):
        command, token = self.command_stack.pop()
+12 −5
Original line number Diff line number Diff line
@@ -68,14 +68,21 @@ class TemplateTests(SimpleTestCase):
        #7876 -- Error messages should include the unexpected block name.
        """
        engine = Engine()

        with self.assertRaises(TemplateSyntaxError) as e:
        msg = (
            "Invalid block tag on line 1: 'endblock', expected 'elif', 'else' "
            "or 'endif'. Did you forget to register or load this tag?"
        )
        with self.assertRaisesMessage(TemplateSyntaxError, msg):
            engine.from_string("{% if 1 %}lala{% endblock %}{% endif %}")

        self.assertEqual(
            e.exception.args[0],
            "Invalid block tag on line 1: 'endblock', expected 'elif', 'else' or 'endif'",
    def test_unknown_block_tag(self):
        engine = Engine()
        msg = (
            "Invalid block tag on line 1: 'foobar'. Did you forget to "
            "register or load this tag?"
        )
        with self.assertRaisesMessage(TemplateSyntaxError, msg):
            engine.from_string("lala{% foobar %}")

    def test_compile_filter_expression_error(self):
        """