|
1 | 1 | import os |
| 2 | +import posixpath |
2 | 3 | import unittest |
3 | 4 |
|
4 | 5 | from django.forms.renderers import ( |
5 | 6 | BaseRenderer, DjangoTemplates, Jinja2, TemplatesSetting, |
6 | 7 | ) |
7 | 8 | from django.test import SimpleTestCase |
| 9 | +from django.utils.version import get_version_tuple |
8 | 10 |
|
9 | 11 | try: |
10 | 12 | import jinja2 |
@@ -46,6 +48,28 @@ class Jinja2Tests(SharedTests, SimpleTestCase): |
46 | 48 | renderer = Jinja2 |
47 | 49 | expected_widget_dir = 'jinja2' |
48 | 50 |
|
| 51 | + @property |
| 52 | + def jinja2_version(self): |
| 53 | + return get_version_tuple(jinja2.__version__) |
| 54 | + |
| 55 | + def test_installed_apps_template_found(self): |
| 56 | + """Can find a custom template in INSTALLED_APPS.""" |
| 57 | + renderer = self.renderer() |
| 58 | + # Found because forms_tests is . |
| 59 | + tpl = renderer.get_template("forms_tests/custom_widget.html") |
| 60 | + expected_path = os.path.abspath( |
| 61 | + os.path.join(os.path.dirname(__file__), "..", self.expected_widget_dir) |
| 62 | + ) |
| 63 | + if self.jinja2_version < (3, 1): |
| 64 | + expected_path = os.path.join( |
| 65 | + expected_path, "forms_tests", "custom_widget.html" |
| 66 | + ) |
| 67 | + else: |
| 68 | + expected_path = posixpath.join( |
| 69 | + expected_path, "forms_tests", "custom_widget.html" |
| 70 | + ) |
| 71 | + self.assertEqual(tpl.origin.name, expected_path) |
| 72 | + |
49 | 73 |
|
50 | 74 | class TemplatesSettingTests(SharedTests, SimpleTestCase): |
51 | 75 | renderer = TemplatesSetting |
0 commit comments