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) | ||||
|     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
	 Lucas Tan
					Lucas Tan