8889841có ,òQc@s¢dZddlZddlmZddlmZmZmZmZm Z m Z ddl m Z eƒZ defd„ƒYZdefd „ƒ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. iÿÿÿÿN(t JinjaTestCase(tTemplatet Environmentt DictLoadertTemplateSyntaxErrortTemplateNotFoundt PrefixLoader(t text_typetCornerTestCasecBseZd„Zd„ZRS(cCstjdƒ}|jddƒdks-t‚tjdƒ}|jƒdksTt‚tjdƒ}|jƒdks{t‚dS(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ƒ}|jƒdks't‚tjdƒ}|jƒdksNt‚tjdƒ}|jddƒdks{t‚dS(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 BugTestCasecBseZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„ZRS(cCs>tƒ}d„|jd<|jdƒjƒdks:t‚dS(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ƒ}|jdtƒdksIt‚|jdtƒdksgt‚dS(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ƒ}|jƒdks't‚dS(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ƒ}|jƒjƒgtddƒD]}t|ƒ^q.dksSt‚dS(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|jdƒdS(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ƒ}|jƒdks't‚dS(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ƒ}|jddƒdks-t‚|jdtƒdksKt‚dS(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_assignments†sc CsRtddƒ}|jdƒ}|jdddtddd d ƒd ksNt‚dS( 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_bug‹s cCs=tdƒ}|jddgƒjƒ}|dks9t‚dS(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_twoframe£s cCsztdƒ}g|jdidd6dd6dd6gƒjƒD]}|jƒ^q=d d d d d ddgksvt‚dS(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_args°s )cCs=|jttdƒ|jttdƒ|jttdƒdS(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_failsÐscCstdƒ}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_bugÕs  cCs2tdƒ}|j|jdgƒjƒdƒdS(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_bugðs cCsttdtitiƒd6ƒƒ}y|jdƒWn(tk r]}|jdkspt‚nXtsptdƒ‚dS(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_nameús csmddlm‰dtf‡fd†ƒY}tdƒ}|jd|ƒddƒ}d}|j||ƒdS( Niÿÿÿÿ(tcontextfunctiont CallableClasscseZˆd„ƒZRS(cSs |jdƒS(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 . <Á