X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/596ad981f61660468f9135255048754ccd7627fb..b8334054d908e8c49bdbd8ac28ab2c9e7b37a937:/tests.py diff --git a/tests.py b/tests.py index b0f40d5..a0e0184 100644 --- a/tests.py +++ b/tests.py @@ -1,13 +1,17 @@ -from django.test import TestCase +import sys +import traceback + from django import template from django.conf import settings from django.db import connection from django.template import loader from django.template.loaders import cached +from django.test import TestCase +from django.test.utils import setup_test_template_loader + +from philo.contrib.penfield.models import Blog, BlogView, BlogEntry from philo.exceptions import AncestorDoesNotExist from philo.models import Node, Page, Template -from philo.contrib.penfield.models import Blog, BlogView, BlogEntry -import sys, traceback class TemplateTestCase(TestCase): @@ -17,19 +21,15 @@ class TemplateTestCase(TestCase): "Tests to make sure that embed behaves with complex includes and extends" template_tests = self.get_template_tests() - # Register our custom template loader. Shamelessly cribbed from django core regressiontests. - def test_template_loader(template_name, template_dirs=None): - "A custom template loader that loads the unit-test templates." - try: - return (template_tests[template_name][0] , "test:%s" % template_name) - except KeyError: - raise template.TemplateDoesNotExist, template_name - - cache_loader = cached.Loader(('test_template_loader',)) - cache_loader._cached_loaders = (test_template_loader,) + # Register our custom template loader. Shamelessly cribbed from django/tests/regressiontests/templates/tests.py:384. + cache_loader = setup_test_template_loader( + dict([(name, t[0]) for name, t in template_tests.iteritems()]), + use_cached_loader=True, + ) - old_template_loaders = loader.template_source_loaders - loader.template_source_loaders = [cache_loader] + failures = [] + tests = template_tests.items() + tests.sort() # Turn TEMPLATE_DEBUG off, because tests assume that. old_td, settings.TEMPLATE_DEBUG = settings.TEMPLATE_DEBUG, False @@ -38,10 +38,8 @@ class TemplateTestCase(TestCase): old_invalid = settings.TEMPLATE_STRING_IF_INVALID expected_invalid_str = 'INVALID' - failures = [] - # Run tests - for name, vals in template_tests.items(): + for name, vals in tests: xx, context, result = vals try: test_template = loader.get_template(name) @@ -96,6 +94,13 @@ class TemplateTestCase(TestCase): # Blocks and includes 'block-include01': ('{% extends "simple01" %}{% embed penfield.blog with "embed03" %}{% block one %}{% include "simple01" %}{% embed penfield.blog 1 %}{% endblock %}', {}, "%sSimple%sSimple%s is a lie!" % (blog.title, blog.title, blog.title)), 'block-include02': ('{% extends "simple01" %}{% block one %}{% include "simple04" %}{% embed penfield.blog with "embed03" %}{% include "simple04" %}{% embed penfield.blog 1 %}{% endblock %}', {}, "%sSimple%s%s is a lie!%s is a lie!" % (blog.title, blog.title, blog.title, blog.title)), + + # Tests for more complex situations... + 'complex01': ('{% block one %}{% endblock %}complex{% block two %}{% endblock %}', {}, 'complex'), + 'complex02': ('{% extends "complex01" %}', {}, 'complex'), + 'complex03': ('{% extends "complex02" %}{% embed penfield.blog with "embed01" %}', {}, 'complex'), + 'complex04': ('{% extends "complex03" %}{% block one %}{% embed penfield.blog 1 %}{% endblock %}', {}, '%scomplex' % blog.title), + 'complex05': ('{% extends "complex03" %}{% block one %}{% include "simple04" %}{% endblock %}', {}, '%scomplex' % blog.title), }