509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
”›kSÛ  ã               @   s|   d dl Z d dlZd dlZd dlmZmZmZ d dlmZ G dd„ dej	ƒZ
G dd„ dej	ƒZdd	„ Zed
krxejd	d� dS )é    N)ÚMarkupÚescapeÚescape_silent)Ú	text_typec               @   sŽ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
ejd"krZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!S )#ÚMarkupTestCasec             C   s0   d}t dƒ}|| tt|ƒƒt|ƒ ks,t‚d S )Nz?<script type="application/x-some-script">alert("foo");</script>z<em>username</em>)r   r   r   ÚAssertionError)ÚselfZunsafeZsafe© r	   ú/usr/lib64/python3.6/tests.pyÚtest_adding   s    zMarkupTestCase.test_addingc             C   sX   t dƒd dkst‚t dƒddi dks,t‚t dƒd dks@t‚t d	ƒd d
ksTt‚d S )Nz<em>%s</em>z
<bad user>z<em>&lt;bad user&gt;</em>z<em>%(username)s</em>Úusernamez%ig…ëQ¸	@Ú3z%.2fz3.14)r   r   )r   r	   r	   r
   Útest_string_interpolation   s    


z(MarkupTestCase.test_string_interpolationc             C   s4   t tdƒd ƒtkst‚tdƒ}|jƒ |ks0t‚d S )NÚfooÚbar)Útyper   r   Ú__html__)r   Úxr	   r	   r
   Útest_type_behavior   s    z!MarkupTestCase.test_type_behaviorc             C   s<   G dd„ dt ƒ}t|ƒ ƒdks"t‚tdƒ|ƒ  dks8t‚d S )Nc               @   s    e Zd Zdd„ Zdd„ ZeZdS )z-MarkupTestCase.test_html_interop.<locals>.Fooc             S   s   dS )Nz<em>awesome</em>r	   )r   r	   r	   r
   r   '   s    z6MarkupTestCase.test_html_interop.<locals>.Foo.__html__c             S   s   dS )NÚawesomer	   )r   r	   r	   r
   Ú__unicode__)   s    z9MarkupTestCase.test_html_interop.<locals>.Foo.__unicode__N)Ú__name__Ú
__module__Ú__qualname__r   r   Ú__str__r	   r	   r	   r
   ÚFoo&   s   r   z<em>awesome</em>z<strong>%s</strong>z!<strong><em>awesome</em></strong>)Úobjectr   r   )r   r   r	   r	   r
   Útest_html_interop$   s    z MarkupTestCase.test_html_interopc             C   s   | j tdƒd tdƒƒ d S )Nz<em>%s:%s</em>ú<foo>ú<bar>z <em>&lt;foo&gt;:&lt;bar&gt;</em>)r   r   )ÚassertEqualr   )r   r	   r	   r
   Útest_tuple_interpol0   s    
 z"MarkupTestCase.test_tuple_interpolc             C   s>   | j tdƒddi tdƒƒ | j tdƒdddœ tdƒƒ d S )	Nz<em>%(foo)s</em>r   z<foo>z<em>&lt;foo&gt;</em>z<em>%(foo)s:%(bar)s</em>z<bar>)r   r   z <em>&lt;foo&gt;:&lt;bar&gt;</em>)r    r   )r   r	   r	   r
   Útest_dict_interpol6   s    


z!MarkupTestCase.test_dict_interpolc             C   s<   t dƒdkst‚tdƒjƒ dks$t‚tdƒjƒ dks8t‚d S )Nz"<>&'z&#34;&lt;&gt;&amp;&#39;z<em>Foo &amp; Bar</em>z	Foo & Barz&lt;test&gt;z<test>)r   r   r   Z	striptagsZunescape)r   r	   r	   r
   Útest_escaping?   s    zMarkupTestCase.test_escapingc          
   C   sž   x˜t dƒd dft dƒd dft dƒd dft dƒjdd�dft dƒjdddigƒdft dƒjddt dƒigƒdffD ] \}}||ksvtd||f ƒ‚qvW d S )Nz%ig…ëQ¸	@r   z%.2fgn†ðù!	@z3.14z%s %s %sú<é{   ú>z&lt; 123 &gt;z<em>{awesome}</em>z	<awesome>)r   z<em>&lt;awesome&gt;</em>z{0[1][bar]}r   r   z<bar/>z&lt;bar/&gt;z%r should be %r!)r$   r%   r&   )r   Úformatr   )r   ÚactualZexpectedr	   r	   r
   Útest_formattingE   s    zMarkupTestCase.test_formattingé   é   c             C   s"   t dƒjdƒ}|t dƒkst‚d S )Nz{}r   Ú0)r   r'   r   )r   Z	formattedr	   r	   r
   Útest_formatting_emptyT   s    z$MarkupTestCase.test_formatting_emptyc             C   s\   G dd„ dt ƒ}G dd„ dt ƒ}tdƒj|ƒ ƒtdƒks<t‚tdƒj|ƒ ƒtdƒksXt‚d S )Nc               @   s   e Zd Zdd„ ZdS )z:MarkupTestCase.test_custom_formatting.<locals>.HasHTMLOnlyc             S   s   t dƒS )Nz<foo>)r   )r   r	   r	   r
   r   Z   s    zCMarkupTestCase.test_custom_formatting.<locals>.HasHTMLOnly.__html__N)r   r   r   r   r	   r	   r	   r
   ÚHasHTMLOnlyY   s   r.   c               @   s   e Zd Zdd„ Zdd„ ZdS )z?MarkupTestCase.test_custom_formatting.<locals>.HasHTMLAndFormatc             S   s   t dƒS )Nz<foo>)r   )r   r	   r	   r
   r   ^   s    zHMarkupTestCase.test_custom_formatting.<locals>.HasHTMLAndFormat.__html__c             S   s   t dƒS )Nz<FORMAT>)r   )r   Úspecr	   r	   r
   Ú__html_format__`   s    zOMarkupTestCase.test_custom_formatting.<locals>.HasHTMLAndFormat.__html_format__N)r   r   r   r   r0   r	   r	   r	   r
   ÚHasHTMLAndFormat]   s   r1   z{0}z<foo>z<FORMAT>)r   r   r'   r   )r   r.   r1   r	   r	   r
   Útest_custom_formattingX   s    z%MarkupTestCase.test_custom_formattingc             C   s8   G dd„ dt ƒ}|ddƒ}tdƒj|ƒtdƒks4t‚d S )Nc               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )z;MarkupTestCase.test_complex_custom_formatting.<locals>.Userc             S   s   || _ || _d S )N)Úidr   )r   r3   r   r	   r	   r
   Ú__init__h   s    zDMarkupTestCase.test_complex_custom_formatting.<locals>.User.__init__c             S   s2   |dkrt dƒj| j| jƒ ƒS |r*tdƒ‚| jƒ S )NÚlinkz<a href="/user/{0}">{1}</a>zInvalid format spec)r   r'   r3   r   Ú
ValueError)r   Úformat_specr	   r	   r
   r0   k   s    
zKMarkupTestCase.test_complex_custom_formatting.<locals>.User.__html_format__c             S   s   t dƒj| jƒS )Nz<span class=user>{0}</span>)r   r'   r   )r   r	   r	   r
   r   t   s    zDMarkupTestCase.test_complex_custom_formatting.<locals>.User.__html__N)r   r   r   r4   r0   r   r	   r	   r	   r
   ÚUserg   s   	r8   é   r   z<p>User: {0:link}z:<p>User: <a href="/user/1"><span class=user>foo</span></a>)r   r   r'   r   )r   r8   Úuserr	   r	   r
   Útest_complex_custom_formattingf   s    
z-MarkupTestCase.test_complex_custom_formattingc             C   s&   dd l }x|jD ]}t||ƒ qW d S )Nr   )Ú
markupsafeÚ__all__Úgetattr)r   ZmarkupÚitemr	   r	   r
   Útest_all_set{   s    zMarkupTestCase.test_all_setc             C   s>   t d ƒtƒ kst‚td ƒtd ƒks&t‚t dƒtdƒks:t‚d S )Nz<foo>z&lt;foo&gt;)r   r   r   r   )r   r	   r	   r
   Útest_escape_silent€   s    z!MarkupTestCase.test_escape_silentc             C   sd   | j tdƒjƒ tdƒtdƒgƒ | j tdƒjƒ tdƒtdƒgƒ | j tdƒjƒ tdƒtdƒgƒ d S )Nza bÚaÚbza
b)r    r   ÚsplitÚrsplitÚ
splitlines)r   r	   r	   r
   Útest_splitting…   s    zMarkupTestCase.test_splittingc             C   s   | j tdƒd tdƒƒ d S )NrB   é   Zaaa)r    r   )r   r	   r	   r
   Útest_mul“   s    zMarkupTestCase.test_mulN)r*   r+   )r   r   r   r   r   r   r   r!   r"   r#   r)   ÚsysÚversion_infor-   r2   r;   r@   rA   rG   rI   r	   r	   r	   r
   r   	   s    	
r   c               @   s   e Zd Zdd„ ZdS )ÚMarkupLeakTestCasec             C   st   t ƒ }xTtdƒD ]H}x0tdƒD ]$}tdƒ tdƒ tdƒ tdƒ qW |jttjƒ ƒƒ qW t|ƒdksptdƒ‚d S )Né   iè  r   z<foo>r9   z'ouch, c extension seems to leak objects)ÚsetÚranger   ÚaddÚlenÚgcZget_objectsr   )r   ZcountsÚcountr?   r	   r	   r
   Útest_markup_leaks™   s    z$MarkupLeakTestCase.test_markup_leaksN)r   r   r   rT   r	   r	   r	   r
   rL   —   s   rL   c              C   s6   t jƒ } | jt jtƒƒ ttdƒs2| jt jtƒƒ | S )NZ	func_code)ÚunittestZ	TestSuiteZaddTestZ	makeSuiter   Úhasattrr   rL   )Úsuiter	   r	   r
   rW   ¥   s
    
rW   Ú__main__)ZdefaultTest)rR   rJ   rU   r<   r   r   r   Zmarkupsafe._compatr   ZTestCaser   rL   rW   r   Úmainr	   r	   r	   r
   Ú<module>   s    