diff options
| author | Aymeric Augustin <aymeric.augustin@m4x.org> | 2014-12-07 09:43:10 +0100 |
|---|---|---|
| committer | Aymeric Augustin <aymeric.augustin@m4x.org> | 2014-12-28 16:23:01 +0100 |
| commit | 92a2d049a253fb499db88efb6cf6c9209f6f251c (patch) | |
| tree | bd3c913883b36f918f3c8ae7af942a8c8f50a23f /tests/template_tests/utils.py | |
| parent | b34b8a12b7f657f379c9e0e5ee7688bf36e242d2 (diff) | |
Isolated template tests from Django settings.
Diffstat (limited to 'tests/template_tests/utils.py')
| -rw-r--r-- | tests/template_tests/utils.py | 57 |
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 |
