raise exception for invalid template name raise exception for invalid variable template name raise exception for extra extends tags raise exception for custom tags used in child with load tag in parent not in child raise exception for block super used in base template raise exception for invalid template name raise exception for invalid variable template name raise exception for extra extends tags raise exception for custom tags used in child with load tag in parent not in child raise exception for block super used in base template
from django.template import TemplateDoesNotExist, TemplateSyntaxError
from django.test import SimpleTestCase

from ..utils import setup
from .test_extends import inheritance_templates


class ExceptionsTests(SimpleTestCase):
    @setup({"exception01": "{% extends 'nonexistent' %}"})
    def test_exception01(self):
        
        with self.assertRaises(TemplateDoesNotExist):
            self.engine.render_to_string("exception01")

    @setup({"exception02": "{% extends nonexistent %}"})
    def test_exception02(self):
        
        if self.engine.string_if_invalid:
            with self.assertRaises(TemplateDoesNotExist):
                self.engine.render_to_string("exception02")
        else:
            with self.assertRaises(TemplateSyntaxError):
                self.engine.render_to_string("exception02")

    @setup(
        {
            "exception03": "{% extends 'inheritance01' %}"
            "{% block first %}2{% endblock %}{% extends 'inheritance16' %}"
        },
        inheritance_templates,
    )
    def test_exception03(self):
        
        with self.assertRaises(TemplateSyntaxError):
            self.engine.get_template("exception03")

    @setup(
        {
            "exception04": (
                "{% extends 'inheritance17' %}{% block first %}{% echo 400 %}5678"
                "{% endblock %}"
            )
        },
        inheritance_templates,
    )
    def test_exception04(self):
        
        with self.assertRaises(TemplateSyntaxError):
            self.engine.get_template("exception04")

    @setup({"exception05": "{% block first %}{{ block.super }}{% endblock %}"})
    def test_exception05(self):
        
        with self.assertRaises(TemplateSyntaxError):
            self.engine.render_to_string("exception05")