3 kS@s|ddlZddlZddlZddlmZmZmZddlmZGdddej Z Gdddej Z dd Z e d krxejd d dS) N)Markupescape escape_silent) text_typec@seZdZddZddZddZddZd d Zd d Zd dZ ddZ e j d"krZddZ ddZddZddZddZddZdd Zd!S)#MarkupTestCasecCs0d}td}||tt|t|ks,tdS)Nz?zusername)rrrAssertionError)selfZunsafeZsafer /usr/lib64/python3.6/tests.py test_adding szMarkupTestCase.test_addingcCsXtdddksttdddidks,ttdddks@ttd dd ksTtdS) Nz %sz z<bad user>z%(username)susernamez%igQ @3z%.2fz3.14)rr)rr r r test_string_interpolations   z(MarkupTestCase.test_string_interpolationcCs4ttddtksttd}|j|ks0tdS)Nfoobar)typerr__html__)rxr r r test_type_behaviorsz!MarkupTestCase.test_type_behaviorcCs<Gdddt}t|dks"ttd|dks8tdS)Nc@s eZdZddZddZeZdS)z-MarkupTestCase.test_html_interop..FoocSsdS)Nzawesomer )rr r r r'sz6MarkupTestCase.test_html_interop..Foo.__html__cSsdS)Nawesomer )rr r r __unicode__)sz9MarkupTestCase.test_html_interop..Foo.__unicode__N)__name__ __module__ __qualname__rr__str__r r r r Foo&srzawesomez%sz!awesome)objectrr)rrr r r test_html_interop$s z MarkupTestCase.test_html_interopcCs|jtddtddS)Nz%s:%sz <foo>:<bar>)rr) assertEqualr)rr r r test_tuple_interpol0s z"MarkupTestCase.test_tuple_interpolcCs>|jtddditd|jtddddtddS) Nz%(foo)srzz<foo>z%(foo)s:%(bar)sz)rrz <foo>:<bar>)r r)rr r r test_dict_interpol6s   z!MarkupTestCase.test_dict_interpolcCs<tddksttdjdks$ttdjdks8tdS)Nz"<>&'z"<>&'zFoo & Barz Foo & Barz <test>z)rrrZ striptagsZunescape)rr r r test_escaping?szMarkupTestCase.test_escapingc Csxtdddftdddftddd ftd jd ddftdjdddigdftdjddtdigdffD] \}}||ksvtd||fqvWdS)Nz%igQ @r z%.2fgn! @z3.14z%s %s %s<{>z < 123 >z{awesome}z )rz<awesome>z {0[1][bar]}rrzz <bar/>z%r should be %r!)r$r%r&)rformatr)ractualZexpectedr r r test_formattingEszMarkupTestCase.test_formattingcCs"tdjd}|tdkstdS)Nz{}r0)rr'r)rZ formattedr r r test_formatting_emptyTsz$MarkupTestCase.test_formatting_emptycCs\Gdddt}Gdddt}tdj|tdks.HasHTMLOnlycSstdS)Nz)r)rr r r rZszCMarkupTestCase.test_custom_formatting..HasHTMLOnly.__html__N)rrrrr r r r HasHTMLOnlyYsr.c@seZdZddZddZdS)z?MarkupTestCase.test_custom_formatting..HasHTMLAndFormatcSstdS)Nz)r)rr r r r^szHMarkupTestCase.test_custom_formatting..HasHTMLAndFormat.__html__cSstdS)Nz)r)rspecr r r __html_format__`szOMarkupTestCase.test_custom_formatting..HasHTMLAndFormat.__html_format__N)rrrrr0r r r r HasHTMLAndFormat]sr1z{0}zz)rrr'r)rr.r1r r r test_custom_formattingXsz%MarkupTestCase.test_custom_formattingcCs8Gdddt}|dd}tdj|tdks4tdS)Nc@s$eZdZddZddZddZdS)z;MarkupTestCase.test_complex_custom_formatting..UsercSs||_||_dS)N)idr )rr3r r r r __init__hszDMarkupTestCase.test_complex_custom_formatting..User.__init__cSs2|dkrtdj|j|jS|r*td|jS)Nlinkz{1}zInvalid format spec)rr'r3r ValueError)r format_specr r r r0ks zKMarkupTestCase.test_complex_custom_formatting..User.__html_format__cSstdj|jS)Nz{0})rr'r )rr r r rtszDMarkupTestCase.test_complex_custom_formatting..User.__html__N)rrrr4r0rr r r r Usergs r8rz

User: {0:link}z:

User: foo)rrr'r)rr8userr r r test_complex_custom_formattingfs  z-MarkupTestCase.test_complex_custom_formattingcCs&ddl}x|jD]}t||qWdS)Nr) markupsafe__all__getattr)rZmarkupitemr r r test_all_set{s zMarkupTestCase.test_all_setcCs>tdtksttdtdks&ttdtdks:tdS)Nzz <foo>)rrrr)rr r r test_escape_silentsz!MarkupTestCase.test_escape_silentcCsd|jtdjtdtdg|jtdjtdtdg|jtdjtdtdgdS)Nza babza b)r rsplitrsplit splitlines)rr r r test_splittings  zMarkupTestCase.test_splittingcCs|jtddtddS)NrBZaaa)r r)rr r r test_mulszMarkupTestCase.test_mulN)r*r+)rrrr rrrr!r"r#r)sys version_infor-r2r;r@rArGrIr r r r r s     rc@seZdZddZdS)MarkupLeakTestCasecCstt}xTtdD]H}x0tdD]$}tdtdtdtdqW|jttjqWt|dksptddS)Nirzr9z'ouch, c extension seems to leak objects)setrangeraddlengcZ get_objectsr)rZcountscountr?r r r test_markup_leakss z$MarkupLeakTestCase.test_markup_leaksN)rrrrTr r r r rLsrLcCs6tj}|jtjtttds2|jtjt|S)NZ func_code)unittestZ TestSuiteZaddTestZ makeSuiterhasattrrrL)suiter r r rWs  rW__main__)Z defaultTest)rRrJrUr<rrrZmarkupsafe._compatrZTestCaserrLrWrmainr r r r s