summaryrefslogtreecommitdiff
path: root/tests/template_tests/utils.py
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2014-12-07 09:43:10 +0100
committerAymeric Augustin <aymeric.augustin@m4x.org>2014-12-28 16:23:01 +0100
commit92a2d049a253fb499db88efb6cf6c9209f6f251c (patch)
treebd3c913883b36f918f3c8ae7af942a8c8f50a23f /tests/template_tests/utils.py
parentb34b8a12b7f657f379c9e0e5ee7688bf36e242d2 (diff)
Isolated template tests from Django settings.
Diffstat (limited to 'tests/template_tests/utils.py')
-rw-r--r--tests/template_tests/utils.py57
1 files changed, 32 insertions, 25 deletions
diff --git a/tests/template_tests/utils.py b/tests/template_tests/utils.py
index ba8dcdd46f..864cd7d044 100644
--- a/tests/template_tests/utils.py
+++ b/tests/template_tests/utils.py
@@ -2,26 +2,20 @@
from __future__ import unicode_literals
+import os
import functools
from django import template
from django.template import Library
-from django.template.base import Context, libraries
+from django.template.base import libraries
from django.template.engine import Engine
-from django.template.loader import get_template
from django.test.utils import override_settings
-from django.utils import translation
+from django.utils._os import upath
from django.utils.encoding import python_2_unicode_compatible
from django.utils.safestring import mark_safe
-def render(template_name, context=None):
- if context is None:
- context = {}
-
- t = get_template(template_name)
- with translation.override(context.get('LANGUAGE_CODE', 'en-us')):
- return t.render(Context(context))
+ROOT = os.path.dirname(os.path.abspath(upath(__file__)))
def setup(templates, *args):
@@ -45,31 +39,44 @@ def setup(templates, *args):
# add this in here for simplicity
templates["inclusion.html"] = "{{ result }}"
+ loaders = [
+ ('django.template.loaders.cached.Loader', [
+ ('django.template.loaders.locmem.Loader', templates),
+ ]),
+ ]
+
def decorator(func):
@register_test_tags
- @override_settings(TEMPLATE_LOADERS=[
- ('django.template.loaders.cached.Loader', [
- ('django.template.loaders.locmem.Loader', templates),
- ]),
- ])
+ # Make Engine.get_default() raise an exception to ensure that tests
+ # are properly isolated from Django's global settings.
+ @override_settings(TEMPLATES=None)
@functools.wraps(func)
def inner(self):
- loader = Engine.get_default().template_loaders[0]
+ self.engine = Engine(
+ allowed_include_roots=[ROOT],
+ loaders=loaders,
+ )
+ func(self)
+ func(self)
+ self.engine = Engine(
+ allowed_include_roots=[ROOT],
+ loaders=loaders,
+ string_if_invalid='INVALID',
+ )
func(self)
func(self)
- loader.reset()
- with override_settings(TEMPLATE_STRING_IF_INVALID='INVALID'):
- func(self)
- func(self)
- loader.reset()
+ self.engine = Engine(
+ allowed_include_roots=[ROOT],
+ debug=True,
+ loaders=loaders,
+ )
+ func(self)
+ func(self)
- with override_settings(TEMPLATE_DEBUG=True):
- func(self)
- func(self)
- loader.reset()
return inner
+
return decorator