Rc@sdZddlZddlZddlmZddlmZmZmZm Z ddl m Z ddl m Z ddlmZmZddlmZmZmZmZd Zejd Zid d 6d d6dd6dd6dd6Zi d d 6d d6dd6dd6dd6dd6dd6dd6dd6d d!6d"d#6d$d%6Ziid&d'6d(d)6d*d+6d,d-6d.d/6d0d16d2d36d4d56d66Zed7Zed8Zed9eed:d;gZejj ied<6ed=6ed>6ed9eed:d;gZ!e!j"eed?e#d@e fdAYZ$dBe fdCYZ%dDe fdEYZ&dFefdGYZ'dHefdIYZ(dJefdKYZ)dLefdMYZ*dNZ+dS(Os jinja2.testsuite.ext ~~~~~~~~~~~~~~~~~~~~ Tests for the extensions. :copyright: (c) 2010 by the Jinja Team. :license: BSD, see LICENSE for more details. iN(t JinjaTestCase(t Environmentt DictLoadertcontextfunctiontnodes(tTemplateAssertionError(t Extension(tTokentcount_newlines(tnexttBytesIOt itervaluest text_typeis_\((.*?)\)(?s)sS{{ page_title|default(_("missing")) }}{% block body %}{% endblock %}s master.htmls[{% extends "master.html" %}{% block body %}{% trans %}watch out{% endtrans %}{% endblock %}s child.htmls_{% trans user_count %}One user online{% pluralize %}{{ user_count }} users online{% endtrans %}s plural.htmlsf{% trans user_count=get_user_count() %}{{ user_count }}s{% pluralize %}{{ user_count }}p{% endtrans %}s plural2.htmls/{{ _("User: %(num)s")|format(num=user_count) }}sstringformat.htmls({{ _("User: %(num)s", num=user_count) }}s9{{ ngettext("%(num)s apple", "%(num)s apples", apples) }}s ngettext.htmlsR{% trans num=apples %}{{ num }} apple{% pluralize %}{{ num }} apples{% endtrans %}sngettext_long.htmls({% trans %}User: {{ num }}{% endtrans %}stransvars1.htmls2{% trans num=count %}User: {{ num }}{% endtrans %}stransvars2.htmls4{% trans count=num %}User: {{ count }}{% endtrans %}stransvars3.htmls"{% trans %}%(hello)s{% endtrans %}s novars.htmls){% trans %}{{ foo }}%(foo)s{% endtrans %}s vars.htmls){% trans foo="42" %}%(foo)s{% endtrans %}sexplicitvars.htmlufehlendtmissingupass aufs watch outuEin Benutzer onlinesOne user onlineu%(user_count)s Benutzer onlines%(user_count)s users onlineuBenutzer: %(num)ss User: %(num)suBenutzer: %(count)ssUser: %(count)su %(num)s Apfels %(num)s appleu%(num)s Äpfels%(num)s applestdecCs.|jdd}tj|ij||S(NtLANGUAGEten(tgett languages(tcontexttstringtlanguage((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pytgettextIscCsV|jdd}|dkr:tj|ij||Stj|ij||S(NRRi(RR(RtstptnR((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pytngettextOs tloadert extensionssjinja2.ext.i18nt_RRtnewstylet TestExtensioncBs/eZedgZdZdZdZRS(ttesti*cCsbtj|jdtjd|jdtjtdtjggjt |j j S(Nt_dumpt sandboxedtext_attrs.importable_object( RtOutputt call_methodtEnvironmentAttributetattrt ImportedNamet__name__tContextReferencet set_linenoR tstreamtlineno(tselftparser((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pytparseks   cCsd||||jfS(Ns %s|%s|%s|%s(tblocks(R.R"R#timported_objectR((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyR!ss (R)t __module__tsetttagsR#R0R!(((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyRgs tPreprocessorExtensioncBseZddZRS(cCs|jddS(Ns[[TEST]]s ({{ foo }})(treplace(R.tsourcetnametfilename((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyt preprocess~sN(R)R3tNoneR;(((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyR6|stStreamFilterExtensioncBseZdZdZRS(ccsKxD|D]<}|jdkr>x$|j|D] }|Vq,Wq|VqWdS(Ntdata(ttypet interpolate(R.R,ttokentt((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyt filter_streams   ccs2d}t|j}|j}xtj|j|}|dkrFPn|j||j!}|rvt|d|Vn|t|j7}t|ddVt|ddVt|ddVt|d|j dVt|d dVt|d dV|j }q!||kr.t|d|j|VndS( NiR>tvariable_beginR9RtlparenRitrparent variable_end( tlentvalueR-t _gettext_retsearchR<tstartRRtgrouptend(R.RAtposRNR-tmatchRI((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyR@s(   (R)R3RCR@(((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyR=s tExtensionsTestCasecBsbeZdZdZdZdZdZdZdZdZ dZ d Z RS( cCs)t}|jd|jd}dS(Nsjinja2.ext.autoescapes6{% autoescape true %}{{ "" }}{% endautoescape %}(Rt add_extensiont from_string(R.tenvRB((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_extend_lates  cCs4tddg}|jd}|jd}dS(NRsjinja2.ext.loopcontrolss {%- for item in [1, 2, 3, 4] %} {%- if item % 2 == 0 %}{% continue %}{% endif -%} {{ item }} {%- endfor %}s {%- for item in [1, 2, 3, 4] %} {%- if item > 2 %}{% break %}{% endif -%} {{ item }} {%- endfor %}(RRS(R.RTttmpl((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_loop_controlss   cCs%tddg}|jd}dS(NRs jinja2.ext.dos {%- set items = [] %} {%- for char in "foo" %} {%- do items.append(loop.index0 ~ char) %} {%- endfor %}{{ items|join(', ') }}(RRS(R.RTRV((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_dos cCs%tddg}|jd}dS(NRsjinja2.ext.with_sy {% with a=42, b=23 -%} {{ a }} = {{ b }} {% endwith -%} {{ a }} = {{ b }} (RRS(R.RTRV((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyt test_withs cCs%tdtg}|jd}dS(NRs {% test %}(RRRS(R.RTRV((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_extension_nodesscCsdS(N((R.((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_identifierscCsStdtg}|j}x.||fD] }xt|jD]}qAWq+WdS(NR(RRtoverlayR R(R.toriginalR\RTtext((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_rebindings  cCs%tdtg}|jd}dS(NRs {[[TEST]]}(RR6RS(R.RTRV((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_preprocessor_extensionscCsAtdtg}d|jd<|jd}|j}dS(NRcSs |jS(N(tupper(tx((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pytsRsFoo _(bar) Baz(RR=tglobalsRStrender(R.RTRVtout((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_streamfilter_extensions  cCsWdtfdY}dtfdY}td||g}t|j}dS(NtT1cBseZdZRS(i(R)R3tpriority(((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyRhstT2cBseZdZRS(i(R)R3Ri(((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyRjsR(RRtlisttiter_extensions(R.RhRjRTR^((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_extension_orderings ( R)R3RURWRXRYRZR[R_R`RgRm(((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyRQs       tInternationalizationTestCasecBsGeZdZdZdZdZdZdZdZRS(cCstjd}dS(Ns child.html(ti18n_envt get_template(R.RV((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyt test_transscCstjd}dS(Ns plural.html(RoRp(R.RV((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_trans_pluralscs+tjd}fdd_dS(Ns plural2.htmlcsjd7_dS(Ni(tcalled((tget_user_count(s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyRtsi(RoRpRs(R.RV((Rts8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyt test_trans_plural_with_functionss cCs)tjd}|jttjddS(Ns_{% trans foo=42, count=2 %}{{ count }} item{% pluralize count %}{{ count }} items{% endtrans %}s6{% trans foo %}...{% pluralize bar %}...{% endtrans %}(RoRSt assert_raisesR(R.RV((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_complex_plural scCstjd}dS(Nsstringformat.html(RoRp(R.RV((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_trans_stringformattingscCs)ddlm}tdjd}dS(Ni(t babel_extracts {{ gettext('Hello World') }} {% trans %}Hello World{% endtrans %} {% trans %}{{ users }} user{% pluralize %}{{ users }} users{% endtrans %} tascii(t jinja2.extRyR tencode(R.RyR8((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyt test_extractscCs)ddlm}tdjd}dS(Ni(Rys {# trans first #} {{ gettext('Hello World') }} {% trans %}Hello World{% endtrans %}{# trans second #} {#: third #} {% trans %}{{ users }} user{% pluralize %}{{ users }} users{% endtrans %} sutf-8(R{RyR R|(R.RyR8((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_comment_extract"s( R)R3RqRrRuRwRxR}R~(((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyRns     t$NewstyleInternationalizationTestCasecBsbeZdZdZdZdZdZdZdZdZ dZ d Z RS( cCstjd}dS(Ns child.html(tnewstyle_i18n_envRp(R.RV((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyRq4scCstjd}dS(Ns plural.html(RRp(R.RV((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyRr8scCs)tjd}|jttjddS(Ns_{% trans foo=42, count=2 %}{{ count }} item{% pluralize count %}{{ count }} items{% endtrans %}s6{% trans foo %}...{% pluralize bar %}...{% endtrans %}(RRSRvRRo(R.RV((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyRw=scCstjd}dS(Nsstringformat.html(RRp(R.RV((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyRxDscCstjd}dS(Ns ngettext.html(RRp(R.RV((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_newstyle_pluralHscCsDtdddg}|jdddt|jd}dS(NRsjinja2.ext.autoescapesjinja2.ext.i18ncSsdS(NuWert: %(name)s((Rb((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyRcPscSs|S(N((RRR((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyRcQsRsI{% autoescape ae %}{{ gettext("foo", name="") }}{% endautoescape %}(Rtinstall_gettext_callablestTrueRS(R.RTRB((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_autoescape_supportMs    cCstjd}dS(Nsngettext_long.html(RRp(R.RV((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_num_used_twiceWscCstjddt}dS(Nso {% trans num=3 %}{{ num }} apple{% pluralize %}{{ num }} apples{% endtrans %} traw(RtcompileR(R.R8((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_num_called_num[scCs1tjd}tjd}tjd}dS(Nstransvars1.htmlstransvars2.htmlstransvars3.html(RRp(R.tt1tt2tt3((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_trans_varsgscCs1tjd}tjd}tjd}dS(Ns novars.htmls vars.htmlsexplicitvars.html(RRp(R.RB((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_novars_vars_escapingos( R)R3RqRrRwRxRRRRRR(((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyR2s       tAutoEscapeTestCasecBs5eZdZdZdZdZdZRS(cCsRtddgdt}|jd}tddgdt}|jd}dS(NRsjinja2.ext.autoescapet autoescapes {{ "" }} {% autoescape false %} {{ "" }} {% endautoescape %} {{ "" }} s {{ "" }} {% autoescape true %} {{ "" }} {% endautoescape %} {{ "" }} (RRRStFalse(R.RTRV((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_scoped_settingzs    cCs:tddgdt}|jd}|jd}dS(NRsjinja2.ext.autoescapeRs&{{ {"foo": ""}|xmlattr|escape }}sO{% autoescape false %}{{ {"foo": ""}|xmlattr|escape }}{% endautoescape %}(RRRS(R.RTRV((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_nonvolatiles  cCs+tddgdt}|jd}dS(NRsjinja2.ext.autoescapeRsM{% autoescape foo %}{{ {"foo": ""}|xmlattr|escape }}{% endautoescape %}(RRRS(R.RTRV((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyt test_volatiles cCs%tddg}|jd}dS(NRsjinja2.ext.autoescapesT{% autoescape true %}{% set x = "" %}{{ x }}{% endautoescape %}{{ x }}{{ "" }}(RRS(R.RTRV((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyt test_scopingscCstddg}d}|j|}tddg}|j|dt}tddgdt}|j|dt}dS(NRsjinja2.ext.autoescapes {% autoescape val %} {% macro foo(x) %} [{{ x }}] {% endmacro %} {{ foo().__class__.__name__ }} {% endautoescape %} {{ '' }} RR(RRSRR(R.RTt tmplsourceRVtpysource((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyttest_volatile_scopings  (R)R3RRRRR(((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyRxs    cCshtj}|jtjt|jtjt|jtjt|jtjt|S(N(tunittestt TestSuitetaddTestt makeSuiteRQRnRR(tsuite((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyRs  (,t__doc__treRtjinja2.testsuiteRtjinja2RRRRtjinja2.exceptionsRR{Rt jinja2.lexerRRtjinja2._compatR R R R timportable_objectRRJti18n_templatestnewstyle_i18n_templatesRRRRoRdtupdateRRRRR6R=RQRnRRR(((s8/usr/lib/python2.7/site-packages/jinja2/testsuite/ext.pyt sx  ""        !S<FM