Ejemplo n.º 1
0
 def test_filesystem_loader(self):
     env = Environment(loader=filesystem_loader)
     tmpl = env.get_template('test.html')
     assert tmpl.render().strip() == 'BAR'
     tmpl = env.get_template('foo/test.html')
     assert tmpl.render().strip() == 'FOO'
     self.assert_raises(TemplateNotFound, env.get_template, 'missing.html')
Ejemplo n.º 2
0
 def test_preserve_blocks(self):
     env = Environment(loader=DictLoader({
         'a': '{% if false %}{% block x %}A{% endblock %}{% endif %}{{ self.x() }}',
         'b': '{% extends "a" %}{% block x %}B{{ super() }}{% endblock %}'
     }))
     tmpl = env.get_template('b')
     assert tmpl.render() == 'BA'
Ejemplo n.º 3
0
 def test_choice_loader(self):
     env = Environment(loader=choice_loader)
     tmpl = env.get_template('justdict.html')
     assert tmpl.render().strip() == 'FOO'
     tmpl = env.get_template('test.html')
     assert tmpl.render().strip() == 'BAR'
     self.assert_raises(TemplateNotFound, env.get_template, 'missing.html')
Ejemplo n.º 4
0
 def test_prefix_loader(self):
     env = Environment(loader=prefix_loader)
     tmpl = env.get_template('a/test.html')
     assert tmpl.render().strip() == 'BAR'
     tmpl = env.get_template('b/justdict.html')
     assert tmpl.render().strip() == 'FOO'
     self.assert_raises(TemplateNotFound, env.get_template, 'missing')
Ejemplo n.º 5
0
 def test_volatile(self):
     env = Environment(extensions=['ambari_jinja2.ext.autoescape'],
                       autoescape=True)
     tmpl = env.from_string('{% autoescape foo %}{{ {"foo": "<test>"}'
                            '|xmlattr|escape }}{% endautoescape %}')
     assert tmpl.render(foo=False) == ' foo=&#34;&amp;lt;test&amp;gt;&#34;'
     assert tmpl.render(foo=True) == ' foo="&lt;test&gt;"'
Ejemplo n.º 6
0
    def test_php_syntax(self):
        env = Environment('<?', '?>', '<?=', '?>', '<!--', '-->')
        tmpl = env.from_string('''\
<!-- I'm a comment, I'm not interesting -->\
<? for item in seq -?>
    <?= item ?>
<?- endfor ?>''')
        assert tmpl.render(seq=range(5)) == '01234'
Ejemplo n.º 7
0
    def test_comment_syntax(self):
        env = Environment('<!--', '-->', '${', '}', '<!--#', '-->')
        tmpl = env.from_string('''\
<!--# I'm a comment, I'm not interesting -->\
<!-- for item in seq --->
    ${item}
<!--- endfor -->''')
        assert tmpl.render(seq=range(5)) == '01234'
Ejemplo n.º 8
0
    def test_erb_syntax(self):
        env = Environment('<%', '%>', '<%=', '%>', '<%#', '%>')
        tmpl = env.from_string('''\
<%# I'm a comment, I'm not interesting %>\
<% for item in seq -%>
    <%= item %>
<%- endfor %>''')
        assert tmpl.render(seq=range(5)) == '01234'
Ejemplo n.º 9
0
 def test_do(self):
     env = Environment(extensions=['ambari_jinja2.ext.do'])
     tmpl = env.from_string('''
         {%- set items = [] %}
         {%- for char in "foo" %}
             {%- do items.append(loop.index0 ~ char) %}
         {%- endfor %}{{ items|join(', ') }}''')
     assert tmpl.render() == '0f, 1o, 2o'
Ejemplo n.º 10
0
    def test_comment_syntax(self):
        env = Environment('<!--', '-->', '${', '}', '<!--#', '-->')
        tmpl = env.from_string('''\
<!--# I'm a comment, I'm not interesting -->\
<!-- for item in seq --->
    ${item}
<!--- endfor -->''')
        assert tmpl.render(seq=range(5)) == '01234'
Ejemplo n.º 11
0
    def test_erb_syntax(self):
        env = Environment('<%', '%>', '<%=', '%>', '<%#', '%>')
        tmpl = env.from_string('''\
<%# I'm a comment, I'm not interesting %>\
<% for item in seq -%>
    <%= item %>
<%- endfor %>''')
        assert tmpl.render(seq=range(5)) == '01234'
Ejemplo n.º 12
0
 def test_super_in_scoped_block(self):
     env = Environment(loader=DictLoader({
         'master.html': '{% for item in seq %}[{% block item scoped %}'
                        '{{ item }}{% endblock %}]{% endfor %}'
     }))
     t = env.from_string('{% extends "master.html" %}{% block item %}'
                         '{{ super() }}|{{ item * 2 }}{% endblock %}')
     assert t.render(seq=range(5)) == '[0|0][1|2][2|4][3|6][4|8]'
Ejemplo n.º 13
0
    def test_join(self):
        tmpl = env.from_string('{{ [1, 2, 3]|join("|") }}')
        out = tmpl.render()
        assert out == '1|2|3'

        env2 = Environment(autoescape=True)
        tmpl = env2.from_string('{{ ["<foo>", "<span>foo</span>"|safe]|join }}')
        assert tmpl.render() == '&lt;foo&gt;<span>foo</span>'
Ejemplo n.º 14
0
    def test_php_syntax(self):
        env = Environment('<?', '?>', '<?=', '?>', '<!--', '-->')
        tmpl = env.from_string('''\
<!-- I'm a comment, I'm not interesting -->\
<? for item in seq -?>
    <?= item ?>
<?- endfor ?>''')
        assert tmpl.render(seq=range(5)) == '01234'
Ejemplo n.º 15
0
 def test_correct_prefix_loader_name(self):
     env = Environment(loader=PrefixLoader({
         'foo':  DictLoader({})
     }))
     try:
         env.get_template('foo/bar.html')
     except TemplateNotFound, e:
         assert e.name == 'foo/bar.html'
Ejemplo n.º 16
0
    def test_join(self):
        tmpl = env.from_string('{{ [1, 2, 3]|join("|") }}')
        out = tmpl.render()
        assert out == '1|2|3'

        env2 = Environment(autoescape=True)
        tmpl = env2.from_string(
            '{{ ["<foo>", "<span>foo</span>"|safe]|join }}')
        assert tmpl.render() == '&lt;foo&gt;<span>foo</span>'
Ejemplo n.º 17
0
 def test_extension_ordering(self):
     class T1(Extension):
         priority = 1
     class T2(Extension):
         priority = 2
     env = Environment(extensions=[T1, T2])
     ext = list(env.iter_extensions())
     assert ext[0].__class__ is T1
     assert ext[1].__class__ is T2
Ejemplo n.º 18
0
 def test_autoescape_support(self):
     env = Environment(extensions=['ambari_jinja2.ext.autoescape',
                                   'ambari_jinja2.ext.i18n'])
     env.install_gettext_callables(lambda x: u'<strong>Wert: %(name)s</strong>',
                                   lambda s, p, n: s, newstyle=True)
     t = env.from_string('{% autoescape ae %}{{ gettext("foo", name='
                         '"<test>") }}{% endautoescape %}')
     assert t.render(ae=True) == '<strong>Wert: &lt;test&gt;</strong>'
     assert t.render(ae=False) == '<strong>Wert: <test></strong>'
Ejemplo n.º 19
0
 def test_super_in_scoped_block(self):
     env = Environment(loader=DictLoader({
         'master.html':
         '{% for item in seq %}[{% block item scoped %}'
         '{{ item }}{% endblock %}]{% endfor %}'
     }))
     t = env.from_string('{% extends "master.html" %}{% block item %}'
                         '{{ super() }}|{{ item * 2 }}{% endblock %}')
     assert t.render(seq=range(5)) == '[0|0][1|2][2|4][3|6][4|8]'
Ejemplo n.º 20
0
 def test_preserve_blocks(self):
     env = Environment(loader=DictLoader({
         'a':
         '{% if false %}{% block x %}A{% endblock %}{% endif %}{{ self.x() }}',
         'b':
         '{% extends "a" %}{% block x %}B{{ super() }}{% endblock %}'
     }))
     tmpl = env.get_template('b')
     assert tmpl.render() == 'BA'
Ejemplo n.º 21
0
 def test_dynamic_inheritance(self):
     env = Environment(loader=DictLoader({
         'master1': 'MASTER1{% block x %}{% endblock %}',
         'master2': 'MASTER2{% block x %}{% endblock %}',
         'child': '{% extends master %}{% block x %}CHILD{% endblock %}'
     }))
     tmpl = env.get_template('child')
     for m in range(1, 3):
         assert tmpl.render(master='master%d' % m) == 'MASTER%dCHILD' % m
Ejemplo n.º 22
0
 def test_with(self):
     env = Environment(extensions=['ambari_jinja2.ext.with_'])
     tmpl = env.from_string('''\
     {% with a=42, b=23 -%}
         {{ a }} = {{ b }}
     {% endwith -%}
         {{ a }} = {{ b }}\
     ''')
     assert [x.strip() for x in tmpl.render(a=1, b=2).splitlines()] \
         == ['42 = 23', '1 = 2']
Ejemplo n.º 23
0
    def test_comments(self):
        env = Environment('<!--', '-->', '{', '}')
        tmpl = env.from_string('''\
<ul>
<!--- for item in seq -->
  <li>{item}</li>
<!--- endfor -->
</ul>''')
        assert tmpl.render(seq=range(3)) == ("<ul>\n  <li>0</li>\n  "
                                             "<li>1</li>\n  <li>2</li>\n</ul>")
Ejemplo n.º 24
0
    def test_comments(self):
        env = Environment('<!--', '-->', '{', '}')
        tmpl = env.from_string('''\
<ul>
<!--- for item in seq -->
  <li>{item}</li>
<!--- endfor -->
</ul>''')
        assert tmpl.render(seq=range(3)) == ("<ul>\n  <li>0</li>\n  "
                                             "<li>1</li>\n  <li>2</li>\n</ul>")
Ejemplo n.º 25
0
 def test_dynamic_inheritance(self):
     env = Environment(loader=DictLoader(
         {
             'master1': 'MASTER1{% block x %}{% endblock %}',
             'master2': 'MASTER2{% block x %}{% endblock %}',
             'child': '{% extends master %}{% block x %}CHILD{% endblock %}'
         }))
     tmpl = env.get_template('child')
     for m in range(1, 3):
         assert tmpl.render(master='master%d' % m) == 'MASTER%dCHILD' % m
Ejemplo n.º 26
0
    def test_extends_output_bugs(self):
        env = Environment(loader=DictLoader({
            'parent.html': '(({% block title %}{% endblock %}))'
        }))

        t = env.from_string('{% if expr %}{% extends "parent.html" %}{% endif %}'
                            '[[{% block title %}title{% endblock %}]]'
                            '{% for item in [1, 2, 3] %}({{ item }}){% endfor %}')
        assert t.render(expr=False) == '[[title]](1)(2)(3)'
        assert t.render(expr=True) == '((title))'
Ejemplo n.º 27
0
    def test_extends_output_bugs(self):
        env = Environment(loader=DictLoader(
            {'parent.html': '(({% block title %}{% endblock %}))'}))

        t = env.from_string(
            '{% if expr %}{% extends "parent.html" %}{% endif %}'
            '[[{% block title %}title{% endblock %}]]'
            '{% for item in [1, 2, 3] %}({{ item }}){% endfor %}')
        assert t.render(expr=False) == '[[title]](1)(2)(3)'
        assert t.render(expr=True) == '((title))'
Ejemplo n.º 28
0
 def test_finalizer(self):
     def finalize_none_empty(value):
         if value is None:
             value = u''
         return value
     env = Environment(finalize=finalize_none_empty)
     tmpl = env.from_string('{% for item in seq %}|{{ item }}{% endfor %}')
     assert tmpl.render(seq=(None, 1, "foo")) == '||1|foo'
     tmpl = env.from_string('<{{ none }}>')
     assert tmpl.render() == '<>'
Ejemplo n.º 29
0
    def test_volatile_scoping(self):
        env = Environment(extensions=['ambari_jinja2.ext.autoescape'])
        tmplsource = '''
        {% autoescape val %}
            {% macro foo(x) %}
                [{{ x }}]
            {% endmacro %}
            {{ foo().__class__.__name__ }}
        {% endautoescape %}
        {{ '<testing>' }}
        '''
        tmpl = env.from_string(tmplsource)
        assert tmpl.render(val=True).split()[0] == 'Markup'
        assert tmpl.render(val=False).split()[0] == unicode.__name__

        # looking at the source we should see <testing> there in raw
        # (and then escaped as well)
        env = Environment(extensions=['ambari_jinja2.ext.autoescape'])
        pysource = env.compile(tmplsource, raw=True)
        assert '<testing>\\n' in pysource

        env = Environment(extensions=['ambari_jinja2.ext.autoescape'],
                          autoescape=True)
        pysource = env.compile(tmplsource, raw=True)
        assert '&lt;testing&gt;\\n' in pysource
Ejemplo n.º 30
0
def setup_solr_client(config,
                      custom_log4j=True,
                      custom_log_location=None,
                      log4jcontent=None):
    solr_client_dir = '/usr/lib/ambari-infra-solr-client'
    solr_client_log_dir = default_config(
        config,
        '/configurations/infra-solr-client-log4j/infra_solr_client_log_dir',
        '/var/log/ambari-infra-solr-client'
    ) if custom_log_location is None else custom_log_location
    solr_client_log = format("{solr_client_log_dir}/solr-client.log")
    solr_client_log_maxfilesize = default_config(
        config,
        'configurations/infra-solr-client-log4j/infra_client_log_maxfilesize',
        80)
    solr_client_log_maxbackupindex = default_config(
        config,
        'configurations/infra-solr-client-log4j/infra_client_log_maxbackupindex',
        60)

    Directory(solr_client_log_dir,
              mode=0755,
              cd_access='a',
              create_parents=True)
    Directory(solr_client_dir,
              mode=0755,
              cd_access='a',
              create_parents=True,
              recursive_ownership=True)
    solrCliFilename = format("{solr_client_dir}/solrCloudCli.sh")
    File(solrCliFilename, mode=0755, content=StaticFile(solrCliFilename))
    if custom_log4j:
        # use custom log4j content only, when infra is not installed on the cluster
        solr_client_log4j_content = config['configurations'][
            'infra-solr-client-log4j'][
                'content'] if log4jcontent is None else log4jcontent
        context = {
            'solr_client_log': solr_client_log,
            'solr_client_log_maxfilesize': solr_client_log_maxfilesize,
            'solr_client_log_maxbackupindex': solr_client_log_maxbackupindex
        }
        template = JinjaEnvironment(
          line_statement_prefix='%',
          variable_start_string="{{",
          variable_end_string="}}")\
          .from_string(solr_client_log4j_content)

        File(format("{solr_client_dir}/log4j.properties"),
             content=template.render(context),
             mode=0644)
    else:
        File(format("{solr_client_dir}/log4j.properties"), mode=0644)

    File(solr_client_log, mode=0664, content='')
Ejemplo n.º 31
0
 def test_multi_inheritance(self):
     env = Environment(loader=DictLoader({
         'master1': 'MASTER1{% block x %}{% endblock %}',
         'master2': 'MASTER2{% block x %}{% endblock %}',
         'child': '''{% if master %}{% extends master %}{% else %}{% extends
                     'master1' %}{% endif %}{% block x %}CHILD{% endblock %}'''
     }))
     tmpl = env.get_template('child')
     assert tmpl.render(master='master2') == 'MASTER2CHILD'
     assert tmpl.render(master='master1') == 'MASTER1CHILD'
     assert tmpl.render() == 'MASTER1CHILD'
Ejemplo n.º 32
0
 def test_template_data(self):
     env = Environment(autoescape=True)
     t = env.from_string('{% macro say_hello(name) %}'
                         '<p>Hello {{ name }}!</p>{% endmacro %}'
                         '{{ say_hello("<blink>foo</blink>") }}')
     escaped_out = '<p>Hello &lt;blink&gt;foo&lt;/blink&gt;!</p>'
     assert t.render() == escaped_out
     assert unicode(t.module) == escaped_out
     assert escape(t.module) == escaped_out
     assert t.module.say_hello('<blink>foo</blink>') == escaped_out
     assert escape(t.module.say_hello('<blink>foo</blink>')) == escaped_out
Ejemplo n.º 33
0
 def test_super(self):
     env = Environment(loader=DictLoader({
         'a': '{% block intro %}INTRO{% endblock %}|'
              'BEFORE|{% block data %}INNER{% endblock %}|AFTER',
         'b': '{% extends "a" %}{% block data %}({{ '
              'super() }}){% endblock %}',
         'c': '{% extends "b" %}{% block intro %}--{{ '
              'super() }}--{% endblock %}\n{% block data '
              '%}[{{ super() }}]{% endblock %}'
     }))
     tmpl = env.get_template('c')
     assert tmpl.render() == '--INTRO--|BEFORE|[(INNER)]|AFTER'
Ejemplo n.º 34
0
 def compile_down(self, zip='deflated', py_compile=False):
     super(ModuleLoaderTestCase, self).setup()
     log = []
     self.reg_env = Environment(loader=prefix_loader)
     if zip is not None:
         self.archive = tempfile.mkstemp(suffix='.zip')[1]
     else:
         self.archive = tempfile.mkdtemp()
     self.reg_env.compile_templates(self.archive, zip=zip,
                                    log_function=log.append,
                                    py_compile=py_compile)
     self.mod_env = Environment(loader=loaders.ModuleLoader(self.archive))
     return ''.join(log)
Ejemplo n.º 35
0
 def test_template_data(self):
     env = Environment(autoescape=True)
     t = env.from_string(
         "{% macro say_hello(name) %}"
         "<p>Hello {{ name }}!</p>{% endmacro %}"
         '{{ say_hello("<blink>foo</blink>") }}'
     )
     escaped_out = "<p>Hello &lt;blink&gt;foo&lt;/blink&gt;!</p>"
     assert t.render() == escaped_out
     assert unicode(t.module) == escaped_out
     assert escape(t.module) == escaped_out
     assert t.module.say_hello("<blink>foo</blink>") == escaped_out
     assert escape(t.module.say_hello("<blink>foo</blink>")) == escaped_out
Ejemplo n.º 36
0
 def test_multi_inheritance(self):
     env = Environment(loader=DictLoader({
         'master1':
         'MASTER1{% block x %}{% endblock %}',
         'master2':
         'MASTER2{% block x %}{% endblock %}',
         'child':
         '''{% if master %}{% extends master %}{% else %}{% extends
                     'master1' %}{% endif %}{% block x %}CHILD{% endblock %}'''
     }))
     tmpl = env.get_template('child')
     assert tmpl.render(master='master2') == 'MASTER2CHILD'
     assert tmpl.render(master='master1') == 'MASTER1CHILD'
     assert tmpl.render() == 'MASTER1CHILD'
Ejemplo n.º 37
0
 def test_super(self):
     env = Environment(loader=DictLoader({
         'a':
         '{% block intro %}INTRO{% endblock %}|'
         'BEFORE|{% block data %}INNER{% endblock %}|AFTER',
         'b':
         '{% extends "a" %}{% block data %}({{ '
         'super() }}){% endblock %}',
         'c':
         '{% extends "b" %}{% block intro %}--{{ '
         'super() }}--{% endblock %}\n{% block data '
         '%}[{{ super() }}]{% endblock %}'
     }))
     tmpl = env.get_template('c')
     assert tmpl.render() == '--INTRO--|BEFORE|[(INNER)]|AFTER'
Ejemplo n.º 38
0
    def test_loop_controls(self):
        env = Environment(extensions=['ambari_jinja2.ext.loopcontrols'])

        tmpl = env.from_string('''
            {%- for item in [1, 2, 3, 4] %}
                {%- if item % 2 == 0 %}{% continue %}{% endif -%}
                {{ item }}
            {%- endfor %}''')
        assert tmpl.render() == '13'

        tmpl = env.from_string('''
            {%- for item in [1, 2, 3, 4] %}
                {%- if item > 2 %}{% break %}{% endif -%}
                {{ item }}
            {%- endfor %}''')
        assert tmpl.render() == '12'
Ejemplo n.º 39
0
 def test_autoescape_autoselect(self):
     def select_autoescape(name):
         if name is None or '.' not in name:
             return False
         return name.endswith('.html')
     env = Environment(autoescape=select_autoescape,
                       loader=DictLoader({
         'test.txt':     '{{ foo }}',
         'test.html':    '{{ foo }}'
     }))
     t = env.get_template('test.txt')
     assert t.render(foo='<foo>') == '<foo>'
     t = env.get_template('test.html')
     assert t.render(foo='<foo>') == '&lt;foo&gt;'
     t = env.from_string('{{ foo }}')
     assert t.render(foo='<foo>') == '<foo>'
Ejemplo n.º 40
0
    class Template(Source):
        def __init__(self, name, extra_imports=[], **kwargs):
            """
      @param kwargs: Additional variables passed to template
      """
            super(Template, self).__init__(name)
            params = self.env.config.params
            variables = checked_unite(params, kwargs)
            self.imports_dict = dict(
                (module.__name__, module) for module in extra_imports)
            self.context = variables.copy() if variables else {}
            if not hasattr(self, 'template_env'):
                self.template_env = JinjaEnvironment(loader=TemplateLoader(
                    self.env),
                                                     autoescape=False,
                                                     undefined=StrictUndefined,
                                                     trim_blocks=True)

            self.template = self.template_env.get_template(self.name)

        def get_content(self):
            default_variables = {
                'env': self.env,
                'repr': repr,
                'str': str,
                'bool': bool
            }
            variables = checked_unite(default_variables, self.imports_dict)
            self.context.update(variables)

            rendered = self.template.render(self.context)
            return rendered
Ejemplo n.º 41
0
 def test_default_undefined(self):
     env = Environment(undefined=Undefined)
     self.assert_equal(env.from_string('{{ missing }}').render(), u'')
     self.assert_raises(UndefinedError,
                        env.from_string('{{ missing.attribute }}').render)
     self.assert_equal(env.from_string('{{ missing|list }}').render(), '[]')
     self.assert_equal(env.from_string('{{ missing is not defined }}').render(), 'True')
     self.assert_equal(env.from_string('{{ foo.missing }}').render(foo=42), '')
     self.assert_equal(env.from_string('{{ not missing }}').render(), 'True')
Ejemplo n.º 42
0
 def test_debug_undefined(self):
     env = Environment(undefined=DebugUndefined)
     self.assert_equal(env.from_string('{{ missing }}').render(), '{{ missing }}')
     self.assert_raises(UndefinedError,
                        env.from_string('{{ missing.attribute }}').render)
     self.assert_equal(env.from_string('{{ missing|list }}').render(), '[]')
     self.assert_equal(env.from_string('{{ missing is not defined }}').render(), 'True')
     self.assert_equal(env.from_string('{{ foo.missing }}').render(foo=42),
                       u"{{ no such element: int object['missing'] }}")
     self.assert_equal(env.from_string('{{ not missing }}').render(), 'True')
Ejemplo n.º 43
0
    def test_line_syntax(self):
        env = Environment('<%', '%>', '${', '}', '<%#', '%>', '%')
        tmpl = env.from_string('''\
<%# regular comment %>
% for item in seq:
    ${item}
% endfor''')
        assert [int(x.strip()) for x in tmpl.render(seq=range(5)).split()] == \
               range(5)

        env = Environment('<%', '%>', '${', '}', '<%#', '%>', '%', '##')
        tmpl = env.from_string('''\
<%# regular comment %>
% for item in seq:
    ${item} ## the rest of the stuff
% endfor''')
        assert [int(x.strip()) for x in tmpl.render(seq=range(5)).split()] == \
                range(5)
Ejemplo n.º 44
0
 def test_replace(self):
     env = Environment()
     tmpl = env.from_string('{{ string|replace("o", 42) }}')
     assert tmpl.render(string='<foo>') == '<f4242>'
     env = Environment(autoescape=True)
     tmpl = env.from_string('{{ string|replace("o", 42) }}')
     assert tmpl.render(string='<foo>') == '&lt;f4242&gt;'
     tmpl = env.from_string('{{ string|replace("<", 42) }}')
     assert tmpl.render(string='<foo>') == '42foo&gt;'
     tmpl = env.from_string('{{ string|replace("o", ">x<") }}')
     assert tmpl.render(string=Markup('foo')) == 'f&gt;x&lt;&gt;x&lt;'
Ejemplo n.º 45
0
    def test_line_syntax_priority(self):
        # XXX: why is the whitespace there in front of the newline?
        env = Environment('{%', '%}', '${', '}', '/*', '*/', '##', '#')
        tmpl = env.from_string('''\
/* ignore me.
   I'm a multiline comment */
## for item in seq:
* ${item}          # this is just extra stuff
## endfor''')
        assert tmpl.render(seq=[1, 2]).strip() == '* 1\n* 2'
        env = Environment('{%', '%}', '${', '}', '/*', '*/', '#', '##')
        tmpl = env.from_string('''\
/* ignore me.
   I'm a multiline comment */
# for item in seq:
* ${item}          ## this is just extra stuff
    ## extra stuff i just want to ignore
# endfor''')
        assert tmpl.render(seq=[1, 2]).strip() == '* 1\n\n* 2'
Ejemplo n.º 46
0
    def test_stacked_locals_scoping_bug(self):
        env = Environment(line_statement_prefix='#')
        t = env.from_string('''\
# for j in [1, 2]:
#   set x = 1
#   for i in [1, 2]:
#     print x
#     if i % 2 == 0:
#       set x = x + 1
#     endif
#   endfor
# endfor
# if a
#   print 'A'
# elif b
#   print 'B'
# elif c == d
#   print 'C'
# else
#   print 'D'
# endif
    ''')
        assert t.render(a=0, b=False, c=42, d=42.0) == '1111C'
Ejemplo n.º 47
0
 def __init__(self, name, extra_imports=[], **kwargs):
   """
   @param kwargs: Additional variables passed to template
   """
   super(Template, self).__init__(name)
   params = self.env.config.params
   variables = checked_unite(params, kwargs)
   self.imports_dict = dict((module.__name__, module) for module in extra_imports)
   self.context = variables.copy() if variables else {}
   if not hasattr(self, 'template_env'):
     self.template_env = JinjaEnvironment(loader=TemplateLoader(self.env),
                                     autoescape=False, undefined=StrictUndefined, trim_blocks=True)
     
   self.template = self.template_env.get_template(self.name)     
Ejemplo n.º 48
0
    def test_scoped_setting(self):
        env = Environment(extensions=['ambari_jinja2.ext.autoescape'],
                          autoescape=True)
        tmpl = env.from_string('''
            {{ "<HelloWorld>" }}
            {% autoescape false %}
                {{ "<HelloWorld>" }}
            {% endautoescape %}
            {{ "<HelloWorld>" }}
        ''')
        assert tmpl.render().split() == \
            [u'&lt;HelloWorld&gt;', u'<HelloWorld>', u'&lt;HelloWorld&gt;']

        env = Environment(extensions=['ambari_jinja2.ext.autoescape'],
                          autoescape=False)
        tmpl = env.from_string('''
            {{ "<HelloWorld>" }}
            {% autoescape true %}
                {{ "<HelloWorld>" }}
            {% endautoescape %}
            {{ "<HelloWorld>" }}
        ''')
        assert tmpl.render().split() == \
            [u'<HelloWorld>', u'&lt;HelloWorld&gt;', u'<HelloWorld>']
Ejemplo n.º 49
0
 def test_replace(self):
     env = Environment()
     tmpl = env.from_string('{{ string|replace("o", 42) }}')
     assert tmpl.render(string='<foo>') == '<f4242>'
     env = Environment(autoescape=True)
     tmpl = env.from_string('{{ string|replace("o", 42) }}')
     assert tmpl.render(string='<foo>') == '&lt;f4242&gt;'
     tmpl = env.from_string('{{ string|replace("<", 42) }}')
     assert tmpl.render(string='<foo>') == '42foo&gt;'
     tmpl = env.from_string('{{ string|replace("o", ">x<") }}')
     assert tmpl.render(string=Markup('foo')) == 'f&gt;x&lt;&gt;x&lt;'