o !ÔbSIã@s‚ddlZddlZddlZddlZddlZddlmZddlmZddl m Z Gdd„dej ƒZ dd„Z ed kr?ejdd dSdS) éN)ÚTEXT)ÚTemplateLoader)ÚMarkupTemplatec@sÀeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.S)/ÚTemplateLoaderTestCasezTests for the template loader.cCstjdd|_dS)NÚ markup_test)Úsuffix)ÚtempfileÚmkdtempÚdirname©Úself©r ú>/usr/lib/python3/dist-packages/genshi/template/tests/loader.pyÚsetUpszTemplateLoaderTestCase.setUpcCst |j¡dS©N)ÚshutilÚrmtreer r r r rÚtearDownszTemplateLoaderTestCase.tearDowncCstƒ}| g|j¡dSr)rÚ assertEqualÚ search_path©r Úloaderr r rÚtest_search_path_empty"sz-TemplateLoaderTestCase.test_search_path_emptycCs t|jƒ}| |jg|j¡dSr)rr rrrr r rÚtest_search_path_as_string&s z1TemplateLoaderTestCase.test_search_path_as_stringcCs¢ttj |jd¡dƒ}z | d¡W| ¡n| ¡wttj |jd¡dƒ}z | d¡W| ¡n| ¡wt|jgƒ}| d¡}|  d|  ¡j dd¡dS©Nú tmpl1.htmlÚwú
Included
ú tmpl2.htmlút ú<
Included
©Úencoding© ÚopenÚosÚpathÚjoinr ÚwriteÚcloserÚloadrÚgenerateÚrender©r Úfile1Úfile2rÚtmplr r rÚtest_relative_include_samedir*s    þz4TemplateLoaderTestCase.test_relative_include_samedircCsºt tj |jd¡¡ttj |jdd¡dƒ}z | d¡W| ¡n| ¡wttj |jd¡dƒ}z | d¡W| ¡n| ¡wt|jgƒ}|  d¡}|  d|  ¡j dd¡dS) NÚsubrrrrzx r r!) r%Úmkdirr&r'r r$r(r)rr*rr+r,r-r r rÚtest_relative_include_subdir?s    þz3TemplateLoaderTestCase.test_relative_include_subdircCsºttj |jd¡dƒ}z | d¡W| ¡n| ¡wt tj |jd¡¡ttj |jdd¡dƒ}z | d¡W| ¡n| ¡wt|jgƒ}|  d¡}|  d|  ¡j dd ¡dS) Nrrrr2rzw úsub/tmpl2.htmlr r!© r$r%r&r'r r(r)r3rr*rr+r,r-r r rÚtest_relative_include_parentdirUs    þz6TemplateLoaderTestCase.test_relative_include_parentdircCsôttj |jd¡dƒ}z | d¡W| ¡n| ¡wt tj |jd¡¡ttj |jdd¡dƒ}z | d¡W| ¡n| ¡wttj |jdd¡dƒ}z | d¡W| ¡n| ¡wt|jgƒ}|  d¡}|  d |  ¡j dd ¡dS) Nrrz
Included tmpl1.html
r2z"
Included sub/tmpl1.html
rrr5zK
Included sub/tmpl1.html
r!r6©r r.r/Úfile3rr0r r rÚ test_relative_include_samesubdirks$     þz7TemplateLoaderTestCase.test_relative_include_samesubdircCs¨ttj |jd¡dƒ}z | d¡W| ¡n| ¡wttj |jd¡dƒ}z | d¡W| ¡n| ¡wtƒ}| tj |jd¡¡}|  d|  ¡j dd¡dSrr#r-r r rÚ)test_relative_include_without_search_path‡s  þz@TemplateLoaderTestCase.test_relative_include_without_search_pathcCs¤ttj |jd¡dƒ}z | d¡W| ¡n| ¡wttj |jd¡dƒ}z | d¡W| ¡n| ¡wtdtj |jd¡dƒ}| d|  ¡j dd¡dSr© r$r%r&r'r r(r)rrr+r,©r r.r/r0r r rÚ$test_relative_include_without_loaderœs  þþz;TemplateLoaderTestCase.test_relative_include_without_loadercCs¤ttj |jd¡dƒ}z | d¡W| ¡n| ¡wttj |jd¡dƒ}z | d¡W| ¡n| ¡wtdtj |jd¡d}| d|  ¡j dd¡dS) Nrrrrr)Úfilenamer r!r<r=r r rÚ-test_relative_include_without_loader_relative²s  þþzDTemplateLoaderTestCase.test_relative_include_without_loader_relativecCsàttj |jd¡dƒ}z | d¡W| ¡n| ¡wttj |jd¡dƒ}z | d¡W| ¡n| ¡wttj |jd¡dƒ}z | d¡W| ¡n| ¡wtƒ}| tj |jd¡¡}|  d|  ¡j dd ¡dS) Nrrrrzr
ú tmpl3.htmlút zc
Included
r!r#r8r r rÚ0test_relative_include_without_search_path_nestedÈs"   üzGTemplateLoaderTestCase.test_relative_include_without_search_path_nestedcCsnttj |jd¡dƒ}z | d¡W| ¡n| ¡wt|jgƒ}tdd|d}|  d|  ¡j dd¡dS) Nrrrzo zsubdir/tmpl2.html)r?rz4
Included
r!) r$r%r&r'r r(r)rrrr+r,)r r.rÚtmpl2r r rÚ,test_relative_include_from_inmemory_templateçs  þþzCTemplateLoaderTestCase.test_relative_include_from_inmemory_templatec Csttj |jd¡dƒ}z | d¡W| ¡n| ¡wt tj |jd¡¡ttj |jdd¡dƒ}z | d¡W| ¡n| ¡wttj |jdd¡dƒ}z | d¡W| ¡n| ¡wtƒ}|  tj  tj |jdd¡¡¡}|  d|  ¡j dd ¡dS) Nrrrr2ú
Included from sub
rrúE
Included from sub
r!©r$r%r&r'r r(r)r3rr*Úabspathrr+r,r8r r rÚ)test_relative_absolute_template_preferred÷s(   ÿþz@TemplateLoaderTestCase.test_relative_absolute_template_preferredc CsÐttj |jd¡dƒ}z | d¡W| ¡n| ¡wt tj |jd¡¡ttj |jdd¡dƒ}z| d|j¡W| ¡n| ¡wtƒ}|  tj  tj |jdd¡¡¡}|  d|  ¡j dd¡dS) Nrrrr2rzw r r!rHr-r r rÚtest_absolute_includes$ þÿþz,TemplateLoaderTestCase.test_absolute_includecCstj |jd¡}t |¡ttj |d¡dƒ}z | d¡W| ¡n| ¡wttj |d¡dƒ}z | d¡W| ¡n| ¡wtj |jd¡}t |¡ttj |d¡dƒ}z | d¡W| ¡n| ¡wt|ƒ}|  tj |d¡¡}|  d |  ¡j dd ¡d|j vsŒJ‚dS) NÚabsrrrBrz!
Included from abspath.
Ú searchpathz$
Included from searchpath.
zM
Included from searchpath.
r!)r%r&r'r r3r$r(r)rr*rr+r,Ú_cache)r rIr.r/rMr9rÚtmpl1r r rÚtest_abspath_caching+s,     þz+TemplateLoaderTestCase.test_abspath_cachingcCspttj |jd¡dƒ}z | d¡W| ¡n| ¡wttj |jd¡dƒ}z | d¡W| ¡n| ¡wt tj |jd¡¡ttj |jdd¡dƒ}z | d¡W| ¡n| ¡wttj |jdd¡dƒ}z | d¡W| ¡n| ¡wtƒ}|  tj |jd¡¡}|  d|  ¡j dd ¡|  tj |jdd¡¡}|  d |  ¡j dd ¡d|j vs¶J‚dS) NrrrBrrr2rFr r!rG)r$r%r&r'r r(r)r3rr*rr+r,rN)r r.r/r9Úfile4rrOrDr r rÚ0test_abspath_include_caching_without_search_pathKs6    þþzGTemplateLoaderTestCase.test_abspath_include_caching_without_search_pathcCs\ttj |jd¡dƒ}z| d d¡¡W| ¡n| ¡wt|jgdd}|  d¡dS)Nú tmpl.htmlÚwbõ
ö
ú iso-8859-1©Údefault_encoding© r$r%r&r'r r(Úencoder)rr*©r Úfrr r rÚtest_load_with_default_encodingts z6TemplateLoaderTestCase.test_load_with_default_encodingcCs`ttj |jd¡dƒ}z| d d¡¡W| ¡n| ¡wt|jgdd}|j ddddS)NrSrTrUrVzutf-8rWr!rYr[r r rÚ test_load_with_explicit_encoding}s z7TemplateLoaderTestCase.test_load_with_explicit_encodingcCs˜ttj |jd¡dƒ}z | d¡W| ¡n| ¡wdd„}t|jg|d}| d¡}|  d|  ¡j dd¡| d¡}|  d|  ¡j dd¡dS) NrSrz5

Hello

cSsdd„}|j d|¡dS)NcssD|D]\}}}|tur| ¡rd || ¡g¡}|||fVqdS)Nz, )rÚstripr'Úlower)ÚstreamÚctxtÚkindÚdataÚposr r rÚ my_filters €ýzZTemplateLoaderTestCase.test_load_with_callback..template_loaded..my_filterr)ÚfiltersÚinsert)Útemplaterfr r rÚtemplate_loadedszGTemplateLoaderTestCase.test_load_with_callback..template_loaded)Úcallbackz<

Hello, hello

r!r#)r Úfileobjrjrr0r r rÚtest_load_with_callback†s  þ þz.TemplateLoaderTestCase.test_load_with_callbackc Cs0tj |jd¡}t |¡ttj |d¡dƒ}z | d¡W| ¡n| ¡wtj |jdd¡}t |¡ttj |d¡dƒ}z | d¡W| ¡n| ¡wtj |jdd¡}t |¡ttj |d ¡dƒ}z | d ¡W| ¡n| ¡wt |t j ||d gƒ}|  d ¡}|  d |  ¡jdd¡dS)a Test prefix delegation with the following layout: templates/foo.html sub1/templates/tmpl1.html sub2/templates/tmpl2.html Where sub1 and sub2 are prefixes, and both tmpl1.html and tmpl2.html incldue foo.html. Ú templatesúfoo.htmlrú
Included foo
Úsub1rz from sub1 Úsub2rú
tmpl2
©rqrrúsub1/tmpl1.htmlzJ
Included foo
from sub1 Nr!©r%r&r'r r3r$r(r)ÚmakedirsrÚprefixedr*rr+r,) r Údir1r.Údir2r/Údir3r9rr0r r rÚ%test_prefix_delegation_to_directories£s4       þ þz from sub1 from sub1 from sub1 rrsÚbarrAz
bar/tmpl3
rtruz 
Included foo
from sub1
tmpl2
from sub1
bar/tmpl3
from sub1 Nr!rv) r ryr.rzr/r9r{rQrr0r r rÚ2test_prefix_delegation_to_directories_with_subdirsÑs<          þ üzITemplateLoaderTestCase.test_prefix_delegation_to_directories_with_subdirsN)Ú__name__Ú __module__Ú __qualname__Ú__doc__rrrrr1r4r7r:r;r>r@rCrErJrKrPrRr]r^rmr|r~r r r rrs0 )   .rcCs0t ¡}| t tj¡¡| t td¡¡|S)NÚtest) ÚunittestÚ TestSuiteÚaddTestÚdoctestÚ DocTestSuiterr€Ú makeSuiter)Úsuiter r rrŠ srŠÚ__main__)Ú defaultTest)r‡r%rrr„Ú genshi.corerÚgenshi.template.loaderrÚgenshi.template.markuprÚTestCaserrŠrÚmainr r r rÚs     tÿ