Commit b785a80d authored by Ramiro Morales's avatar Ramiro Morales
Browse files

Added further fixes, tests for #19949/f33db5a0.

Thanks Susan Tan. Refs #19949.
parent 51a9a598
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -37,6 +37,9 @@ class Loader(BaseLoader):
            return template_name

    def find_template(self, name, dirs=None):
        """
        Helper method. Lookup the template :param name: in all the configured loaders
        """
        key = self.cache_key(name, dirs)
        try:
            result = self.find_template_cache[key]
@@ -53,12 +56,13 @@ class Loader(BaseLoader):
        if result:
            return result
        else:
            self.template_cache[key] = TemplateDoesNotExist
            raise TemplateDoesNotExist(name)

    def load_template(self, template_name, template_dirs=None):
        key = self.cache_key(template_name, template_dirs)
        template_tuple = self.template_cache.get(key)
        # cached a previous failure:
        # A cached previous failure:
        if template_tuple is TemplateDoesNotExist:
            raise TemplateDoesNotExist
        elif template_tuple is None:
+8 −2
Original line number Diff line number Diff line
@@ -129,13 +129,19 @@ class CachedLoader(unittest.TestCase):
        self.assertNotEqual(t1.render(Context({})), t2.render(Context({})))

    def test_missing_template_is_cached(self):
        "Check that the missing template is cached."
        "#19949 -- Check that the missing template is cached."
        template_loader = loader.find_template_loader(settings.TEMPLATE_LOADERS[0])
        # Empty cache, which may be filled from previous tests.
        template_loader.reset()
        # Check that 'missing.html' isn't already in cache before 'missing.html' is loaed
        # Check that 'missing.html' isn't already in cache before 'missing.html' is loaded
        self.assertRaises(KeyError, lambda: template_loader.template_cache["missing.html"])
        # Try to load it, it should fail
        self.assertRaises(TemplateDoesNotExist, template_loader.load_template, "missing.html")
        # Verify that the fact that the missing template, which hasn't been found, has actually
        # been cached:
        self.assertEqual(template_loader.template_cache.get("missing.html"),
                         TemplateDoesNotExist,
                         "Cached template loader doesn't cache file lookup misses. It should.")


class RenderToStringTest(unittest.TestCase):