,Qc@sdZddlZddlmZddlmZmZmZmZeZ defdYZ defdYZ d efd YZ d Z dS( s jinja2.testsuite.core_tags ~~~~~~~~~~~~~~~~~~~~~~~~~~ Test the core tags like for and if. :copyright: (c) 2010 by the Jinja Team. :license: BSD, see LICENSE for more details. iN(t JinjaTestCase(t EnvironmenttTemplateSyntaxErrortUndefinedErrort DictLoadertForLoopTestCasecBseZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZRS(cCstjd}dS(Ns+{% for item in seq %}{{ item }}{% endfor %}(tenvt from_string(tselfttmpl((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyt test_simplescCstjd}dS(Ns1{% for item in seq %}XXX{% else %}...{% endfor %}(RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyt test_elsescCstjd}dS(Ns-<{% for item in seq %}{% else %}{% endfor %}>(RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyttest_empty_blocksscCstjd}|jdddgjd\}}}|jd\}}}}} } } |jd\} } }}}}}dS(Ns{% for item in seq -%} {{ loop.index }}|{{ loop.index0 }}|{{ loop.revindex }}|{{ loop.revindex0 }}|{{ loop.first }}|{{ loop.last }}|{{ loop.length }}###{% endfor %}tseqiis###t|(RRtrendertsplit(RR tonettwot_t one_indext one_index0t one_revindext one_revindex0t one_firsttone_lastt one_lengtht two_indext two_index0t two_revindext two_revindex0t two_firstttwo_lastt two_length((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyttest_context_vars#s  *$$cCs7tjd}|jdttddd}dS(Ns{% for item in seq %}{{ loop.cycle('<1>', '<2>') }}{% endfor %}{% for item in seq %}{{ loop.cycle(*through) }}{% endfor %}R itthroughs<1>s<2>(s<1>s<2>(RRRtlisttrange(RR toutput((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyt test_cycling6s $cCs1tjd}|jdttd}dS(Ns+{% for item in seq %}{% endfor %}{{ item }}R i (RRRR$R%(RR R&((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyt test_scope=scCs1d}tjd}|jd|}dS(Ncss xtdD] }|Vq WdS(Ni(R%(titem((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pytinnerCss,{% for item in iter %}{{ item }}{% endfor %}titer(RRR(RR*R R&((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyt test_varlenBs cCs&tjd}|jt|jdS(Ns%{% for item in none %}...{% endfor %}(RRt assert_raisest TypeErrorR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyt test_noniterJscCstjd}dS(Ns{% for item in seq recursive -%} [{{ item.a }}{% if item.b %}<{{ loop(item.b) }}>{% endif %}] {%- endfor %}(RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyttest_recursiveNs c Cstjd}|j|jdtdddtddtddgtdddtddtddgtdddtddggddS( Ns{% for item in seq recursive -%} [{{ loop.depth0 }}:{{ item.a }}{% if item.b %}<{{ loop(item.b) }}>{% endif %}] {%- endfor %}R taitbiis.[0:1<[1:1][1:2]>][0:2<[1:1][1:2]>][0:3<[1:a]>](RRt assertEqualRtdict(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyttest_recursive_depth0Xs **$c Cstjd}|j|jdtdddtddtddgtdddtddtddgtdddtddggddS( Ns{% for item in seq recursive -%} [{{ loop.depth }}:{{ item.a }}{% if item.b %}<{{ loop(item.b) }}>{% endif %}] {%- endfor %}R R1iR2iis.[1:1<[2:1][2:2]>][1:2<[2:1][2:2]>][1:3<[2:a]>](RRR3RR4(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyttest_recursive_depthbs **$cCstjd}dS(Ns{% for row in table %} {%- set rowloop = loop -%} {% for cell in row -%} [{{ rowloop.index }}|{{ loop.index }}] {%- endfor %} {%- endfor %}(RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyt test_looploopls cCstjd}dS(NsI{% for i in items %}{{ i }}{% if not loop.last %},{% endif %}{% endfor %}(RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyttest_reversed_buguscCs5tjd}|jt|jtjd}dS(Ns]{% for item in [1] if loop.index == 0 %}...{% endfor %}sC{% for item in [] %}...{% else %}{{ loop }}{% endfor %}(RRR-RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyttest_loop_errors{s   cCs"tjd}tjd}dS(NsC{% for item in range(10) if item is even %}[{{ item }}]{% endfor %}sr {%- for item in range(10) if item is even %}[{{ loop.index }}:{{ item }}]{% endfor %}(RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyttest_loop_filters cCs|jttjddS(Ns${% for loop in seq %}...{% endfor %}(R-RRR(R((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyttest_loop_unassignablescCstjd}dS(Ns]{% for s in seq %}[{{ loop.first }}{% for c in s %}|{{ loop.first }}{% endfor %}]{% endfor %}(RR(Rtt((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyttest_scoped_special_varscCs"tjd}tjd}dS(NsL{% for x in seq %}{{ loop.first }}{% for y in seq %}{% endfor %}{% endfor %}sL{% for x in seq %}{% for y in seq %}{{ loop.first }}{% endfor %}{% endfor %}(RR(RR<((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyttest_scoped_loop_varscCstjd}dS(NsA {%- for item in foo recursive -%}{%- endfor -%} (RR(RR<((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyttest_recursive_empty_loop_iters cCstjd}dS(Ns {%- macro do_something() -%} [{{ caller() }}] {%- endmacro %} {%- for i in [1, 2, 3] %} {%- call do_something() -%} {{ i }} {%- endcall %} {%- endfor -%} (RR(RR<((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyttest_call_in_loops cCstjd}dS(Ns {%- for item in foo %}...{{ item }}...{% endfor %} {%- macro item(a) %}...{{ a }}...{% endmacro %} {{- item(2) -}} (RR(RR<((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyttest_scoping_bugs cCstjd}dS(NsC{% for a, b, c in [[1, 2, 3]] %}{{ a }}|{{ b }}|{{ c }}{% endfor %}(RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyttest_unpackings(t__name__t __module__R R R R"R'R(R,R/R0R5R6R7R8R9R:R;R=R>R?R@RARB(((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyRs,                tIfConditionTestCasecBs>eZdZdZdZdZdZdZRS(cCstjd}dS(Ns{% if true %}...{% endif %}(RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyR scCstjd}dS(NsG{% if false %}XXX{% elif true %}...{% else %}XXX{% endif %}(RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyt test_elifs cCstjd}dS(Ns){% if false %}XXX{% else %}...{% endif %}(RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyR scCstjd}dS(Ns$[{% if true %}{% else %}{% endif %}](RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyt test_emptyscCstjd}dS(Ns@{% if a %}A{% elif b %}B{% elif c == d %}C{% else %}D{% endif %}(RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyt test_completescCs"tjd}tjd}dS(Ns/{% if a %}{% set foo = 1 %}{% endif %}{{ foo }}s2{% if true %}{% set foo = 1 %}{% endif %}{{ foo }}(RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyt test_no_scopes(RCRDR RFR RGRHRI(((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyREs      tMacrosTestCasecBsqeZedeZdZdZdZdZdZ dZ dZ dZ d Z d ZRS( t trim_blockscCs|jjd}dS(NsS{% macro say_hello(name) %}Hello {{ name }}!{% endmacro %} {{ say_hello('Peter') }}(RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyR s  cCs|jjd}dS(Ns{% macro level1(data1) %} {% macro level2(data2) %}{{ data1 }}|{{ data2 }}{% endmacro %} {{ level2('bar') }}{% endmacro %} {{ level1('foo') }}(RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyt test_scopings  cCs|jjd}dS(Ns{% macro m(a, b, c='c', d='d') %}{{ a }}|{{ b }}|{{ c }}|{{ d }}{% endmacro %} {{ m() }}|{{ m('a') }}|{{ m('a', 'b') }}|{{ m(1, 2, 3) }}(RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyttest_argumentss  cCs|jjd}dS(NsJ{% macro test() %}{{ varargs|join('|') }}{% endmacro %}{{ test(1, 2, 3) }}(RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyt test_varargss  cCs|jjd}dS(NsT{% macro test() %}[[{{ caller() }}]]{% endmacro %}{% call test() %}data{% endcall %}(RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyttest_simple_calls  cCs|jjd}dS(Nsf{% macro test() %}[[{{ caller('data') }}]]{% endmacro %}{% call(data) test() %}{{ data }}{% endcall %}(RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyttest_complex_calls  cCs|jjd}dS(Ns\{% set caller = 42 %}{% macro test() %}{{ caller is not defined }}{% endmacro %}{{ test() }}(RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyttest_caller_undefineds  cCs5tdtidd6|_|jjd}dS(Ntloaders.{% macro test(foo) %}[{{ foo }}]{% endmacro %}tincludes1{% from "include" import test %}{{ test("foo") }}(RRRR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyt test_includes cCs|jjd}dS(Ns{% macro foo(a, b) %}{% endmacro %}{% macro bar() %}{{ varargs }}{{ kwargs }}{% endmacro %}{% macro baz() %}{{ caller() }}{% endmacro %}(RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyttest_macro_apiscCs|jjd}dS(Ns]{% macro foo(x) %}{{ x }}{% if x > 1 %}|{{ foo(x - 1) }}{% endif %}{% endmacro %}{{ foo(5) }}(RR(RR ((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyt test_callself%s(RCRDRtTrueRR RLRMRNRORPRQRTRURV(((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyRJs         cCsRtj}|jtjt|jtjt|jtjt|S(N(tunittestt TestSuitetaddTestt makeSuiteRRERJ(tsuite((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyR\,s  (t__doc__RXtjinja2.testsuiteRtjinja2RRRRRRRERJR\(((s>/usr/lib/python2.7/site-packages/jinja2/testsuite/core_tags.pyt s " N