added jinja2 tests
This commit is contained in:
@@ -60,8 +60,8 @@ class OfflineTestCaseMixin(object):
|
||||
if default_storage.exists(manifest_path):
|
||||
default_storage.delete(manifest_path)
|
||||
|
||||
def test_offline(self):
|
||||
count, result = CompressCommand().compress(log=self.log, verbosity=self.verbosity)
|
||||
def _test_offline(self, engine):
|
||||
count, result = CompressCommand().compress(log=self.log, verbosity=self.verbosity, engine=engine)
|
||||
self.assertEqual(1, count)
|
||||
self.assertEqual([
|
||||
'<script type="text/javascript" src="/static/CACHE/js/%s.js"></script>' % (self.expected_hash, ),
|
||||
@@ -69,16 +69,36 @@ class OfflineTestCaseMixin(object):
|
||||
rendered_template = self.template.render(Context(settings.COMPRESS_OFFLINE_CONTEXT))
|
||||
self.assertEqual(rendered_template, "".join(result) + "\n")
|
||||
|
||||
def test_offline_django(self):
|
||||
settings.TEMPLATE_DIRS = (
|
||||
os.path.join(settings.TEST_DIR, 'test_templates', self.templates_dir),
|
||||
)
|
||||
self._test_offline(engine="django")
|
||||
|
||||
def test_offline_jinja2(self):
|
||||
settings.TEMPLATE_DIRS = (
|
||||
os.path.join(settings.TEST_DIR, 'test_templates_jinja2', self.templates_dir),
|
||||
)
|
||||
self._test_offline(engine="jinja2")
|
||||
|
||||
|
||||
class OfflineGenerationBlockSuperTestCase(OfflineTestCaseMixin, TestCase):
|
||||
templates_dir = "test_block_super"
|
||||
expected_hash = "7c02d201f69d"
|
||||
|
||||
def test_offline_jinja2(self):
|
||||
# Block.super not supported for Jinja2 yet.
|
||||
pass
|
||||
|
||||
|
||||
class OfflineGenerationBlockSuperMultipleTestCase(OfflineTestCaseMixin, TestCase):
|
||||
templates_dir = "test_block_super_multiple"
|
||||
expected_hash = "2f6ef61c488e"
|
||||
|
||||
def test_offline_jinja2(self):
|
||||
# Block.super not supported for Jinja2 yet.
|
||||
pass
|
||||
|
||||
|
||||
class OfflineGenerationBlockSuperMultipleWithCachedLoaderTestCase(OfflineTestCaseMixin, TestCase):
|
||||
templates_dir = "test_block_super_multiple_cached"
|
||||
@@ -98,12 +118,16 @@ class OfflineGenerationBlockSuperMultipleWithCachedLoaderTestCase(OfflineTestCas
|
||||
super(OfflineGenerationBlockSuperMultipleWithCachedLoaderTestCase, self).tearDown()
|
||||
settings.TEMPLATE_LOADERS = self._old_template_loaders
|
||||
|
||||
def test_offline_jinja2(self):
|
||||
# Block.super not supported for Jinja2 yet.
|
||||
pass
|
||||
|
||||
|
||||
class OfflineGenerationBlockSuperTestCaseWithExtraContent(OfflineTestCaseMixin, TestCase):
|
||||
templates_dir = "test_block_super_extra"
|
||||
|
||||
def test_offline(self):
|
||||
count, result = CompressCommand().compress(log=self.log, verbosity=self.verbosity)
|
||||
def _test_offline(self, engine):
|
||||
count, result = CompressCommand().compress(log=self.log, verbosity=self.verbosity, engine=engine)
|
||||
self.assertEqual(2, count)
|
||||
self.assertEqual([
|
||||
'<script type="text/javascript" src="/static/CACHE/js/ced14aec5856.js"></script>',
|
||||
@@ -112,6 +136,10 @@ class OfflineGenerationBlockSuperTestCaseWithExtraContent(OfflineTestCaseMixin,
|
||||
rendered_template = self.template.render(Context(settings.COMPRESS_OFFLINE_CONTEXT))
|
||||
self.assertEqual(rendered_template, "".join(result) + "\n")
|
||||
|
||||
def test_offline_jinja2(self):
|
||||
# Block.super not supported for Jinja2 yet.
|
||||
pass
|
||||
|
||||
|
||||
class OfflineGenerationConditionTestCase(OfflineTestCaseMixin, TestCase):
|
||||
templates_dir = "test_condition"
|
||||
@@ -158,9 +186,21 @@ class OfflineGenerationTestCaseWithContext(OfflineTestCaseMixin, TestCase):
|
||||
class OfflineGenerationTestCaseErrors(OfflineTestCaseMixin, TestCase):
|
||||
templates_dir = "test_error_handling"
|
||||
|
||||
def test_offline(self):
|
||||
count, result = CompressCommand().compress(log=self.log, verbosity=self.verbosity)
|
||||
self.assertEqual(2, count)
|
||||
def _test_offline(self, engine):
|
||||
count, result = CompressCommand().compress(log=self.log, verbosity=self.verbosity, engine=engine)
|
||||
|
||||
if engine == "django":
|
||||
self.assertEqual(2, count)
|
||||
else:
|
||||
# Because we use env.parse in Jinja2Parser, the engine does not
|
||||
# actually load the "extends" and "includes" templates, and so
|
||||
# it is unable to detect that they are missing. So all the "compress"
|
||||
# nodes are processed correctly.
|
||||
self.assertEqual(4, count)
|
||||
self.assertEqual(engine, "jinja2")
|
||||
self.assertIn('<link rel="stylesheet" href="/static/CACHE/css/78bd7a762e2d.css" type="text/css" />', result)
|
||||
self.assertIn('<link rel="stylesheet" href="/static/CACHE/css/e31030430724.css" type="text/css" />', result)
|
||||
|
||||
self.assertIn('<script type="text/javascript" src="/static/CACHE/js/3872c9ae3f42.js"></script>', result)
|
||||
self.assertIn('<script type="text/javascript" src="/static/CACHE/js/cd8870829421.js"></script>', result)
|
||||
|
||||
@@ -173,7 +213,7 @@ class OfflineGenerationTestCaseWithError(OfflineTestCaseMixin, TestCase):
|
||||
settings.COMPRESS_PRECOMPILERS = (('text/coffeescript', 'non-existing-binary'),)
|
||||
super(OfflineGenerationTestCaseWithError, self).setUp()
|
||||
|
||||
def test_offline(self):
|
||||
def _test_offline(self, engine):
|
||||
"""
|
||||
Test that a CommandError is raised with DEBUG being False as well as
|
||||
True, as otherwise errors in configuration will never show in
|
||||
@@ -183,10 +223,10 @@ class OfflineGenerationTestCaseWithError(OfflineTestCaseMixin, TestCase):
|
||||
|
||||
try:
|
||||
settings.DEBUG = True
|
||||
self.assertRaises(CommandError, CompressCommand().compress)
|
||||
self.assertRaises(CommandError, CompressCommand().compress, engine=engine)
|
||||
|
||||
settings.DEBUG = False
|
||||
self.assertRaises(CommandError, CompressCommand().compress)
|
||||
self.assertRaises(CommandError, CompressCommand().compress, engine=engine)
|
||||
|
||||
finally:
|
||||
settings.DEBUG = self._old_debug
|
||||
@@ -257,7 +297,26 @@ class OfflineGenerationInlineNonAsciiTestCase(OfflineTestCaseMixin, TestCase):
|
||||
self.COMPRESS_OFFLINE_CONTEXT = self.old_offline_context
|
||||
super(OfflineGenerationInlineNonAsciiTestCase, self).tearDown()
|
||||
|
||||
def test_offline(self):
|
||||
count, result = CompressCommand().compress(log=self.log, verbosity=self.verbosity)
|
||||
def _test_offline(self, engine):
|
||||
count, result = CompressCommand().compress(log=self.log, verbosity=self.verbosity, engine=engine)
|
||||
rendered_template = self.template.render(Context(settings.COMPRESS_OFFLINE_CONTEXT))
|
||||
self.assertEqual(rendered_template, "".join(result) + "\n")
|
||||
|
||||
|
||||
class OfflineGenerationComplexTestCase(OfflineTestCaseMixin, TestCase):
|
||||
templates_dir = "test_complex"
|
||||
expected_hash = "0e8807bebcee"
|
||||
|
||||
def setUp(self):
|
||||
self.old_offline_context = settings.COMPRESS_OFFLINE_CONTEXT
|
||||
settings.COMPRESS_OFFLINE_CONTEXT = {
|
||||
'condition': 'OK!',
|
||||
# Django templating does not allow definition of tuples in the
|
||||
# templates. Make sure this is same as test_templates_jinja2/test_complex.
|
||||
'my_names': ("js/one.js", "js/nonasc.js"),
|
||||
}
|
||||
super(OfflineGenerationComplexTestCase, self).setUp()
|
||||
|
||||
def tearDown(self):
|
||||
self.COMPRESS_OFFLINE_CONTEXT = self.old_offline_context
|
||||
super(OfflineGenerationComplexTestCase, self).tearDown()
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
{% load compress static %}{% spaceless %}
|
||||
|
||||
{% if condition %}
|
||||
{% compress js%}
|
||||
<script type="text/javascript">alert("{{ condition|default:"yellow" }}");</script>
|
||||
{% with names=my_names %}
|
||||
{% for name in names %}
|
||||
<script type="text/javascript" src="{% static name %}"></script>
|
||||
{% endfor %}
|
||||
{% endwith %}
|
||||
{% endcompress %}
|
||||
{% endif %}{% endspaceless %}
|
||||
@@ -0,0 +1,8 @@
|
||||
{% spaceless %}
|
||||
|
||||
{% compress js %}
|
||||
<script type="text/javascript">
|
||||
alert("Basic test");
|
||||
</script>
|
||||
{% endcompress %}
|
||||
{% endspaceless %}
|
||||
@@ -0,0 +1,15 @@
|
||||
{% spaceless %}
|
||||
{% block js %}
|
||||
<script type="text/javascript">
|
||||
alert("test using block.super");
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
{% block css %}
|
||||
<style type="text/css">
|
||||
body {
|
||||
background: red;
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
{% endspaceless %}
|
||||
@@ -0,0 +1,12 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block js %}{% spaceless %}
|
||||
{% compress js %}
|
||||
{{ super() }}
|
||||
<script type="text/javascript">
|
||||
alert("this alert shouldn't be alone!");
|
||||
</script>
|
||||
{% endcompress %}
|
||||
{% endspaceless %}{% endblock %}
|
||||
|
||||
{% block css %}{% endblock %}
|
||||
@@ -0,0 +1,15 @@
|
||||
{% spaceless %}
|
||||
{% block js %}
|
||||
<script type="text/javascript">
|
||||
alert("test using block.super");
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
{% block css %}
|
||||
<style type="text/css">
|
||||
body {
|
||||
background: red;
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
{% endspaceless %}
|
||||
@@ -0,0 +1,18 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block js %}{% spaceless %}
|
||||
{% compress js %}
|
||||
<script type="text/javascript">
|
||||
alert("this alert should be alone.");
|
||||
</script>
|
||||
{% endcompress %}
|
||||
|
||||
{% compress js %}
|
||||
{{ super() }}
|
||||
<script type="text/javascript">
|
||||
alert("this alert shouldn't be alone!");
|
||||
</script>
|
||||
{% endcompress %}
|
||||
{% endspaceless %}{% endblock %}
|
||||
|
||||
{% block css %}{% endblock %}
|
||||
@@ -0,0 +1,15 @@
|
||||
{% spaceless %}
|
||||
{% block js %}
|
||||
<script type="text/javascript">
|
||||
alert("test using multiple inheritance and block.super");
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
{% block css %}
|
||||
<style type="text/css">
|
||||
body {
|
||||
background: red;
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
{% endspaceless %}
|
||||
@@ -0,0 +1,3 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block css %}{% endblock %}
|
||||
@@ -0,0 +1,10 @@
|
||||
{% extends "base2.html" %}
|
||||
|
||||
{% block js %}{% spaceless %}
|
||||
{% compress js %}
|
||||
{{ super() }}
|
||||
<script type="text/javascript">
|
||||
alert("this alert shouldn't be alone!");
|
||||
</script>
|
||||
{% endcompress %}
|
||||
{% endspaceless %}{% endblock %}
|
||||
@@ -0,0 +1,15 @@
|
||||
{% spaceless %}
|
||||
{% block js %}
|
||||
<script type="text/javascript">
|
||||
alert("test using multiple inheritance and block.super");
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
{% block css %}
|
||||
<style type="text/css">
|
||||
body {
|
||||
background: red;
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
{% endspaceless %}
|
||||
@@ -0,0 +1,3 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block css %}{% endblock %}
|
||||
@@ -0,0 +1,10 @@
|
||||
{% extends "base2.html" %}
|
||||
|
||||
{% block js %}{% spaceless %}
|
||||
{% compress js %}
|
||||
{{ super() }}
|
||||
<script type="text/javascript">
|
||||
alert("this alert shouldn't be alone!");
|
||||
</script>
|
||||
{% endcompress %}
|
||||
{% endspaceless %}{% endblock %}
|
||||
@@ -0,0 +1,14 @@
|
||||
{% spaceless %}
|
||||
|
||||
{% if condition %}
|
||||
{% compress js%}
|
||||
<script type="text/javascript">alert("{{ condition|default("yellow") }}");</script>
|
||||
{% with names=[] %}
|
||||
{% do names.append("js/one.js") %}
|
||||
{% do names.append("js/nonasc.js") %}
|
||||
{% for name in names %}
|
||||
<script type="text/javascript" src="{{url_for('static', filename=name)}}"></script>
|
||||
{% endfor %}
|
||||
{% endwith %}
|
||||
{% endcompress %}
|
||||
{% endif %}{% endspaceless %}
|
||||
@@ -0,0 +1,7 @@
|
||||
{% spaceless %}
|
||||
|
||||
{% if condition %}
|
||||
{% compress js%}
|
||||
<script type="text/javascript">alert("{{ condition|default("yellow") }}");</script>
|
||||
{% endcompress %}
|
||||
{% endif %}{% endspaceless %}
|
||||
@@ -0,0 +1,9 @@
|
||||
{% extends "buggy_template.html" %}
|
||||
|
||||
{% compress css %}
|
||||
<style type="text/css">
|
||||
body {
|
||||
background: orange;
|
||||
}
|
||||
</style>
|
||||
{% endcompress %}
|
||||
@@ -0,0 +1,10 @@
|
||||
{% compress css %}
|
||||
<style type="text/css">
|
||||
body {
|
||||
background: pink;
|
||||
}
|
||||
</style>
|
||||
{% endcompress %}
|
||||
|
||||
|
||||
{% fail %}
|
||||
@@ -0,0 +1,9 @@
|
||||
{% extends "missing.html" %}
|
||||
|
||||
{% compress css %}
|
||||
<style type="text/css">
|
||||
body {
|
||||
background: purple;
|
||||
}
|
||||
</style>
|
||||
{% endcompress %}
|
||||
@@ -0,0 +1,8 @@
|
||||
{% spaceless %}
|
||||
|
||||
{% compress js %}
|
||||
<script type="text/javascript">
|
||||
alert("Basic test, should pass in spite of errors in other templates");
|
||||
</script>
|
||||
{% endcompress %}
|
||||
{% endspaceless %}
|
||||
@@ -0,0 +1,5 @@
|
||||
{% compress js %}
|
||||
<script type="text/coffeescript" charset="utf-8">
|
||||
a = 1
|
||||
</script>
|
||||
{% endcompress %}
|
||||
@@ -0,0 +1,7 @@
|
||||
{% spaceless %}
|
||||
|
||||
{% compress js, inline %}
|
||||
<script type="text/javascript">
|
||||
var value = '{{ test_non_ascii_value }}';
|
||||
</script>
|
||||
{% endcompress %}{% endspaceless %}
|
||||
@@ -0,0 +1,6 @@
|
||||
{% spaceless %}
|
||||
|
||||
{% compress js %}
|
||||
<script>alert('amazing');</script>
|
||||
<script type="text/javascript" src="{{ url_for('static', filename="js/one.js") }}"></script>
|
||||
{% endcompress %}{% endspaceless %}
|
||||
@@ -0,0 +1,7 @@
|
||||
{% spaceless %}
|
||||
|
||||
{% compress js %}
|
||||
<script type="text/javascript">
|
||||
alert("{{ lower("testtemplatetag") }}");
|
||||
</script>
|
||||
{% endcompress %}{% endspaceless %}
|
||||
@@ -0,0 +1,7 @@
|
||||
{% spaceless %}
|
||||
|
||||
{% compress js %}
|
||||
<script type="text/javascript">
|
||||
alert("{{ content|default("Ooops!") }}");
|
||||
</script>
|
||||
{% endcompress %}{% endspaceless %}
|
||||
Reference in New Issue
Block a user