,Qc@sdZddlZddlmZddlmZmZmZmZm Z m Z ddl m Z eZ defdYZdefd YZd ZdS( s jinja2.testsuite.regression ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Tests corner cases and bugs. :copyright: (c) 2010 by the Jinja Team. :license: BSD, see LICENSE for more details. iN(t JinjaTestCase(tTemplatet Environmentt DictLoadertTemplateSyntaxErrortTemplateNotFoundt PrefixLoader(t text_typetCornerTestCasecBseZdZdZRS(cCstjd}|jdddks-ttjd}|jdksTttjd}|jdks{tdS(Nsv {%- for item in (1, 2, 3, 4) -%} [{{ item }}] {%- endfor %} {{- item -}} titemi*s[1][2][3][4]42s {%- for item in (1, 2, 3, 4) -%} [{{ item }}] {%- endfor %} {%- set item = 42 %} {{- item -}} s {%- set item = 42 %} {%- for item in (1, 2, 3, 4) -%} [{{ item }}] {%- endfor %} {{- item -}} (tenvt from_stringtrendertAssertionError(tselftt((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyttest_assigned_scopings   cCstjd}|jdks'ttjd}|jdksNttjd}|jdddks{tdS(Ns {%- set wrapper = "" %} {%- for item in (1, 2, 3, 4) %} {%- macro wrapper() %}[{{ item }}]{% endmacro %} {{- wrapper() }} {%- endfor %} {{- wrapper -}} s[1][2][3][4]s {%- for item in (1, 2, 3, 4) %} {%- macro wrapper() %}[{{ item }}]{% endmacro %} {{- wrapper() }} {%- endfor %} {%- set wrapper = "" %} {{- wrapper -}} s {%- for item in (1, 2, 3, 4) %} {%- macro wrapper() %}[{{ item }}]{% endmacro %} {{- wrapper() }} {%- endfor %} {{- wrapper -}} twrapperis[1][2][3][4]23(R R R R (RR((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyttest_closure_scoping3s   (t__name__t __module__RR(((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyRs t BugTestCasecBseZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZRS(cCs>t}d|jd<|jdjdks:tdS(NcSs||S(N((tvaluetsome((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pytVsttestings"{{ 'test'|testing(some='stuff') }}t teststuff(RtfiltersR R R (RR ((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyttest_keyword_foldingTs cCsktdtidd6}|jd}|jdtdksIt|jdtdksgtdS(Ntloaders#(({% block title %}{% endblock %}))s parent.htmls{% if expr %}{% extends "parent.html" %}{% endif %}[[{% block title %}title{% endblock %}]]{% for item in [1, 2, 3] %}({{ item }}){% endfor %}texprs[[title]](1)(2)(3)s ((title))(RRR R tFalseR tTrue(RR R((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyttest_extends_output_bugsZs  cCs+tjd}|jdks'tdS(Ns*{{ "http://www.example.org/http://www.example.org/<foo(R R R R (Rttmpl((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyttest_urlize_filter_escapingescCsWtjd}|jjgtddD]}t|^q.dksStdS(Ns7 {% macro test() %} {{ caller() }} {% endmacro %} {% for num1 in range(5) %} {% call test() %} {% for num2 in range(10) %} {{ loop.index }} {% endfor %} {% endcall %} {% endfor %} ii i(R R R tsplittrangeRR (RR"tx((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyttest_loop_call_loopis cCs)tdd}|jt|jddS(Ntline_statement_prefixt%s+% for item in seq {# missing #} ...% endfor(Rt assert_raisesRR (RR ((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyttest_weird_inline_comment|scCs+tjd}|jdks'tdS(NsO{% for i in (1, 2) %}{{ i }}{% endfor %}{% macro i() %}3{% endmacro %}{{ i() }}t123(R R R R (RR"((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyttest_old_macro_loop_scoping_bugscCsOtjd}|jdddks-t|jdtdksKtdS(Ns,{% if b %}{% set a = 42 %}{% endif %}{{ a }}tait23tbt42(R R R R R (RR"((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyt$test_partial_conditional_assignmentssc CsRtdd}|jd}|jdddtddd d d ksNtdS( NR(t#s# 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 R.iR0tci*tdgE@t1111C(RR R RR (RR R((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyttest_stacked_locals_scoping_bugs cCs=td}|jddgj}|dks9tdS(Ns {% set x = 1 %} {% for item in foo %} {% if item == 1 %} {% set x = 2 %} {% endif %} {% endfor %} {{ x }} tfooiu1(RR tstripR (RRtrv((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyt(test_stacked_locals_scoping_bug_twoframes cCsztd}g|jdidd6dd6dd6gjD]}|j^q=d d d d d ddgksvtdS(Ns{% macro dump_users(users) -%}
    {%- for user in users -%}
  • {{ user.username|e }}

    {{ caller(user) }}
  • {%- endfor -%}
{%- endmacro -%} {% call(user) dump_users(list_of_user) -%}
Realname
{{ user.realname|e }}
Description
{{ user.description }}
{% endcall %}t list_of_usertapotusernamessomething elsetrealnamettestt descriptionu
  • apo

    u
    Realname
    u
    something else
    u
    Description
    u
    test
    u
    u
(RR t splitlinesR9R (RRR&((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyttest_call_with_argss )cCs=|jttd|jttd|jttddS(Ns{% if %}....{% endif %}s'{% if foo %}...{% elif %}...{% endif %}s{% for x in %}..{% endfor %}(R*RR(R((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyttest_empty_if_condition_failsscCstd}td}dS(Ns3 {% for p in foo recursive%} {{p.bar}} {% for f in p.fields recursive%} {{f.baz}} {{p.bar}} {% if f.rec %} {{ loop(f.sub) }} {% endif %} {% endfor %} {% endfor %} s) {% for p in foo%} {{p.bar}} {% for f in p.fields recursive%} {{f.baz}} {{p.bar}} {% if f.rec %} {{ loop(f.sub) }} {% endif %} {% endfor %} {% endfor %} (R(Rttpl1ttpl2((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyttest_recursive_loop_bugs  cCs2td}|j|jdgjddS(Ns {% for x in y %} {{ loop.index0 }} {% else %} {% for i in range(3) %}{{ i }}{% endfor %} {% endfor %} tyt012(Rt assertEqualR R9(RR((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyttest_else_loop_bugs cCsttdtitid6}y|jdWn(tk r]}|jdksptnXtsptddS(NRR8s foo/bar.htmlsexpected error here(RRRt get_templateRtnameR R(RR te((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyttest_correct_prefix_loader_names csmddlmdtffdY}td}|jd|dd}d}|j||dS( Ni(tcontextfunctiont CallableClasscseZdZRS(cSs |jdS(Nthello(tresolve(Rtctx((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyt__call__s(RRRU((RP(s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyRQss{{ callableclass() }}t callableclassRRtTEST(t jinja2.utilsRPtobjectRR t assert_equal(RRQttpltoutputtexpected((RPs?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyt%test_contextfunction_callable_classess  (RRRR!R#R'R+R-R2R7R;RCRDRGRKROR^(((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyRRs          cCs<tj}|jtjt|jtjt|S(N(tunittestt TestSuitetaddTestt makeSuiteRR(tsuite((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyRcs (t__doc__R_tjinja2.testsuiteRtjinja2RRRRRRtjinja2._compatRR RRRc(((s?/usr/lib/python2.7/site-packages/jinja2/testsuite/regression.pyt s . <