Skip to content

Commit 99ba553

Browse files
committed
More bad-settings cases to test.
1 parent c74a007 commit 99ba553

File tree

3 files changed

+46
-16
lines changed

3 files changed

+46
-16
lines changed

django_coverage_plugin/plugin.py

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,18 +37,12 @@ def check_debug():
3737
from django.conf import settings
3838
templates = settings.TEMPLATES
3939
if len(templates) > 1:
40-
raise DjangoTemplatePluginException(
41-
"Can't use multiple template engines, help me add support!"
42-
)
40+
raise DjangoTemplatePluginException("Can't use multiple template engines.")
4341
template_settings = templates[0]
4442
if template_settings['BACKEND'] != 'django.template.backends.django.DjangoTemplates':
45-
raise DjangoTemplatePluginException(
46-
"Can't use non-Django templates!"
47-
)
48-
if not template_settings['OPTIONS']['debug']:
49-
raise DjangoTemplatePluginException(
50-
"Template debugging must be enabled in settings."
51-
)
43+
raise DjangoTemplatePluginException("Can't use non-Django templates.")
44+
if not template_settings.get('OPTIONS', {}).get('debug', False):
45+
raise DjangoTemplatePluginException("Template debugging must be enabled in settings.")
5246
else:
5347
def check_debug():
5448
from django.conf import settings

tests/plugin_test.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,9 @@
99
from coverage.test_helpers import TempDirMixin
1010

1111
import django
12-
13-
# Make Django templates outside of Django.
14-
# Originally taken from: http://stackoverflow.com/a/98178/14343
1512
from django.conf import settings
1613

14+
1715
def test_settings():
1816
"""Create a dict full of default Django settings for the tests."""
1917
the_settings = {

tests/test_settings.py

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,27 @@
88
from .plugin_test import DjangoPluginTestCase, test_settings, django_start_at
99

1010

11+
# Make settings overrides for tests below.
1112
if django.VERSION >= (1, 8):
12-
DEBUG_FALSE_OVERRIDES = {
13-
'TEMPLATES': [test_settings()['TEMPLATES'][0]]
14-
}
13+
NON_DJANGO_BACKEND = 'django.template.backends.dummy.TemplateStrings'
14+
15+
DEBUG_FALSE_OVERRIDES = test_settings()
1516
DEBUG_FALSE_OVERRIDES['TEMPLATES'][0]['OPTIONS']['debug'] = False
17+
18+
NO_OPTIONS_OVERRIDES = test_settings()
19+
del NO_OPTIONS_OVERRIDES['TEMPLATES'][0]['OPTIONS']
20+
21+
MULTIPLE_ENGINE_OVERRIDES = test_settings()
22+
MULTIPLE_ENGINE_OVERRIDES['TEMPLATES'].append({
23+
'BACKEND': NON_DJANGO_BACKEND,
24+
})
25+
26+
OTHER_ENGINE_OVERRIDES = test_settings()
27+
OTHER_ENGINE_OVERRIDES['TEMPLATES'][0]['BACKEND'] = NON_DJANGO_BACKEND
28+
OTHER_ENGINE_OVERRIDES['TEMPLATES'][0]['OPTIONS'] = {}
1629
else:
1730
DEBUG_FALSE_OVERRIDES = {'TEMPLATE_DEBUG': False}
31+
NO_OPTIONS_OVERRIDES = MULTIPLE_ENGINE_OVERRIDES = OTHER_ENGINE_OVERRIDES = {}
1832

1933

2034
class SettingsTest(DjangoPluginTestCase):
@@ -25,3 +39,27 @@ def test_debug_false(self):
2539
msg = "Template debugging must be enabled in settings."
2640
with self.assertRaisesRegexp(DjangoTemplatePluginException, msg):
2741
self.run_django_coverage()
42+
43+
@django_start_at(1, 8)
44+
@override_settings(**NO_OPTIONS_OVERRIDES)
45+
def test_no_options(self):
46+
self.make_template('Hello')
47+
msg = "Template debugging must be enabled in settings."
48+
with self.assertRaisesRegexp(DjangoTemplatePluginException, msg):
49+
self.run_django_coverage()
50+
51+
@django_start_at(1, 8)
52+
@override_settings(**MULTIPLE_ENGINE_OVERRIDES)
53+
def test_multiple_engines(self):
54+
self.make_template('Hello')
55+
msg = "Can't use multiple template engines."
56+
with self.assertRaisesRegexp(DjangoTemplatePluginException, msg):
57+
self.run_django_coverage()
58+
59+
@django_start_at(1, 8)
60+
@override_settings(**OTHER_ENGINE_OVERRIDES)
61+
def test_other_engine(self):
62+
self.make_template('Hello')
63+
msg = "Can't use non-Django templates."
64+
with self.assertRaisesRegexp(DjangoTemplatePluginException, msg):
65+
self.run_django_coverage()

0 commit comments

Comments
 (0)