def test_django_statement_safety(self): content = (u"""<b {% if search.quarter == 'summer' %} """ """selected="selected"{% endif %} />""") result = process_template_content(content, is_html=True) expected = (u"<b {% if search.quarter == 'summer' %} " u"selected=selected {% endif %} />") self.assertEquals(result, expected) content = u"""<input type="text" value="{{ foo.bar }}">""" result = process_template_content(content, is_html=True) self.assertEquals(result, '<input type=text value="{{ foo.bar }}">') content = u"""<input type="text" value='{{ foo.bar }}'>""" result = process_template_content(content, is_html=True) self.assertEquals(result, "<input type=text value='{{ foo.bar }}'>")
def test_multiline_block(self): content = '{% include "extends/multiline.html" %}' result = process_template_content(content) correct = 'Before {%block ok%}Line 1 Line 2{%endblock%} ' self.assertEquals(result, correct)
def test_inline(self): content = (u'{% compress css inline %}<link rel="stylesheet" ' u'href="/static/foo.css">{% endcompress %}') result = process_template_content(content, is_html=True) self.assertEquals( '<style type=text/css>#foo { color: red; }\n</style>', result)
def test_load_tag_outside_of_block(self): content = '{% include "extends/load_tag_out_of_block.html" %}' result = process_template_content(content) correct = ('{% load another more from app.templatetags %}' '{% load i18n %}Before {% block content %}' 'The content{% endblock %} After ') self.assertEquals(result, correct)
def test_basic_block(self): content = '{% include "extends/sub_template1.html" %}' result = process_template_content(content) correct = ('Before {% block inserted_content %}The Block' '{%endblock inserted_content%} {% block block2 %}' 'Block 2{%endblock block2 %} {% block notreplaced %}' 'In wrapper{%endblock%} After ') self.assertEquals(result, correct)
def test_basic(self): content = (u'{% compress css %}<link rel="stylesheet" ' u'href="/static/foo.css">{% endcompress %}') result = process_template_content(content, is_html=True) self.assertTrue( re.match( r'<link rel=stylesheet href=/static/CACHE/css/[a-z0-9]+.css', result))
def test_handlebars_safety(self): content = (u'<div {{#if has_6_days}}class="six-day"{{else}}' u'class="five-day"{{/if}}></div>' u'<div {{#if has_6_days}}class="six-day"{{else}}' u'class="five-day"{{ /if }}></div>') result = process_template_content(content, is_html=True) correct = (u'<div {{#if has_6_days}}class=six-day {{else}}' u'class=five-day {{/if}}></div>' u'<div {{#if has_6_days}}class=six-day {{else}}' u'class=five-day {{ /if }}></div>') self.assertEquals(result, correct)
def handle(self, *args, **options): templates = get_templates() ldr = Loader() for template in templates: destination_path = os.path.join(settings.COMPILED_TEMPLATE_PATH, template) try: os.makedirs(os.path.dirname(destination_path)) except OSError: pass if True or template == "index.html": content = ldr.get_template_content(template) is_html = filename_is_html(template) content = process_template_content(content, is_html=is_html) with codecs.open(destination_path, mode="w", encoding='utf-8') as destination_handle: destination_handle.write(content)
def test_error_include(self): content = '{%include "includes/DOESNT_EXIST.html"%}' result = process_template_content(content) self.assertEquals(result, content)
def test_extends_missing_template(self): content = '{% include "extends/parent_is_missing.html" %}' result = process_template_content(content) self.assertEquals(result, content)
def test_nested(self): content = '{%include "includes/nested_1.html"%}' result = process_template_content(content) self.assertEquals(result, "1 2 ")
def test_recursion(self): content = '{%include "includes/include_recursion.html"%}' result = process_template_content(content) self.assertEquals(result, content)
def test_include(self): content = '{%include "includes/include1.html"%}' result = process_template_content(content) self.assertEquals(result, "included template ")
def test_single_quotes(self): content = "{%include 'includes/include1.html'%}" result = process_template_content(content) self.assertEquals(result, "included template ")
def test_nested_statement_safety(self): content = u"""<div class="{{#if a}}a{{else}}b{{/if}}">""" result = process_template_content(content, is_html=True) self.assertEquals(result, '<div class="{{#if a}}a{{else}}b{{/if}}">')
def test_recursive_extends(self): content = '{% include "extends/recursive.html" %}' result = process_template_content(content) self.assertEquals(result, content)
def test_nested_blocks(self): content = '{% include "extends/nested.html" %}' result = process_template_content(content) self.assertEquals( result, '{% block a %}{% block b %}{% endblock b %}{% endblock %} ')
def test_minify_fragment(self): # Needs to be unicode content from htmlmin content = u"<b> <i ></i> \n</b>" result = process_template_content(content, is_html=True) self.assertEquals(result, "<b> <i></i> </b>")
def test_static_tag(self): content = '{% static "some/file.css" %}' result = process_template_content(content, is_html=True) correct = "/non-standard/path/some/file.css" self.assertEquals(result, correct)