a
    äzeÛ!  ã                   @   sö   d dl Z d dlZd dlmZ d dlmZ d dlZd dlZeddgdZedddgd	d
Z	e 
ed¡G dd„ dejƒƒZe 
ed¡G dd„ dejƒƒZe 
ed¡ejG dd„ dejƒƒƒZe 
ed¡ejG dd„ dejƒƒƒZdd„ Zedkròeƒ  dS )é    N)Úsupport)Úimport_fresh_modulezxml.etree.ElementTreeÚ_elementtree)Úfreshzxml.etree.cElementTreez	xml.etreeT)r   Z
deprecatedzrequires _elementtreec                   @   sx   e Zd Zejejd ddddd„ ƒZdd„ Zd	d
„ Zdd„ Z	dd„ Z
ejdd„ ƒZdd„ Zdd„ Zdd„ Zdd„ ZdS )Ú	MiscTestséd   é   F)ÚsizeZmemuseÚdry_runc                 C   s4   d| }t  ¡ }z|  t|j|¡ W d }nd }0 d S )Nó   x)ÚcETÚ	XMLParserÚassertRaisesÚOverflowErrorÚfeed)Úselfr	   ÚdataÚparser© r   ú+/usr/lib/python3.9/test/test_xml_etree_c.pyÚtest_length_overflow   s
    zMiscTests.test_length_overflowc                 C   sØ  t  d¡}d|_|  t¡ |`W d   ƒ n1 s40    Y  |  |jd¡ |  t¡ |`W d   ƒ n1 sp0    Y  |  |j¡ d|_|  t¡ |`W d   ƒ n1 s°0    Y  |  |jd¡ |  t¡ |`W d   ƒ n1 sì0    Y  |  |j¡ d|_|  t¡ |`W d   ƒ n1 s.0    Y  |  |jd¡ |  t¡ |`	W d   ƒ n1 sl0    Y  |  |j	i ¡ dddœ|_	|  t¡ |`	W d   ƒ n1 s¶0    Y  |  |j	dddœ¡ d S )NÚtagZTAGZTEXTZTAILÚBÚD)ÚAÚC)
r   ÚElementr   r   ÚAttributeErrorÚassertEqualÚtextÚassertIsNoneÚtailÚattrib)r   Úelementr   r   r   Útest_del_attribute   s4    
""""$$$zMiscTests.test_del_attributec                 C   s8   t  d¡ }}tdƒD ]}t  |d¡}q~~t ¡  d S )NÚrooti@ Úx)r   r   ÚrangeÚ
SubElementr   Ú
gc_collect)r   Úer%   Úir   r   r   Útest_trashcan<   s    zMiscTests.test_trashcanc                 C   s   dd„ }|ƒ  t  ¡  d S )Nc               
   S   s>   t  ¡ } zt‚W n( ty8 } z|}W Y d }~n
d }~0 0 d S ©N)r   r   Ú
ValueError)r   ÚexcÚerrr   r   r   Úparser_ref_cycleJ   s
    z9MiscTests.test_parser_ref_cycle.<locals>.parser_ref_cycle)r   r)   )r   r1   r   r   r   Útest_parser_ref_cycleE   s    
zMiscTests.test_parser_ref_cyclec                    s¤   t  d¡‰ G ‡ fdd„dƒ}|ƒ ˆ _ˆ  ¡  |ƒ ˆ _ˆ  ¡  |ƒ ˆ _|ƒ ˆ _ˆ  ¡  |ƒ ˆ _|ƒ ˆ _ˆ  ¡  |ƒ ˆ _ˆ  ddi¡ ˆ  ¡  |ƒ ˆ _ˆ  ddi¡ d S )NÚelemc                       s   e Zd Z‡ fdd„ZdS )z#MiscTests.test_bpo_31728.<locals>.Xc                    s   ˆ j  ˆ j ˆ  ¡  d S r-   )r   r!   Úclear©r   ©r3   r   r   Ú__del___   s    z+MiscTests.test_bpo_31728.<locals>.X.__del__N)Ú__name__Ú
__module__Ú__qualname__r7   r   r6   r   r   ÚX^   s   r;   r   é*   )r   r   r   r4   r!   Ú__setstate__)r   r;   r   r6   r   Útest_bpo_31728Y   s"    
zMiscTests.test_bpo_31728c                 C   sx   t j t j¡}|  t|j¡ |  t|jd¡ G dd„ dƒ}|  t|j|ƒ ¡ |  t|jd ¡ |  	|j
¡ |  	|j¡ d S )NÚfooc                   @   s   e Zd Zdd„ ZdS )z5MiscTests.test_uninitialized_parser.<locals>.MockFilec                  W   s   dS )NÚ r   )Úargsr   r   r   Úread   s    z:MiscTests.test_uninitialized_parser.<locals>.MockFile.readN)r8   r9   r:   rB   r   r   r   r   ÚMockFile€   s   rC   )r   r   Ú__new__r   r.   Úcloser   Z_parse_wholeZ
_seteventsr    ZentityÚtarget)r   r   rC   r   r   r   Útest_uninitialized_parsery   s    z#MiscTests.test_uninitialized_parserc              	   C   s¦   t j t j¡}tdƒD ]&}| dddit  d¡gdddœ¡ q|  |jd¡ |  |jd¡ |  |jd¡ |  t	|j
 ¡ ƒd	g¡ |  t|ƒd
¡ |  |d jd¡ d S )Nr   r?   Úbarr<   Úchildztext goes herezopposite of head)r   r"   Ú	_childrenr   r!   )rH   r<   r   r   )r   r   rD   r'   r=   r   r   r   r!   Úlistr"   ÚitemsÚlen)r   r3   r+   r   r   r   Útest_setstate_leaksˆ   s    
ý
zMiscTests.test_setstate_leaksc                 C   s*   d}t  t |¡¡}t|ƒ ~t ¡  d S ©Nz<a></a></b>)r   Z	iterparseÚioÚStringIOÚnextr   r)   ©r   ZXMLr   r   r   r   Útest_iterparse_leaks˜   s
    zMiscTests.test_iterparse_leaksc                 C   s$   d}t  ¡ }| |¡ ~t ¡  d S rO   )r   ZXMLPullParserr   r   r)   rS   r   r   r   Útest_xmlpullparser_leaks¢   s
    
z"MiscTests.test_xmlpullparser_leaksc                    s<   G ‡ fdd„dƒ}t  dddi¡‰ ˆ  |ƒ ¡}|  |¡ d S )Nc                       s   e Zd Z‡ fdd„ZdS )z;MiscTests.test_dict_disappearing_during_get_item.<locals>.Xc                    s   i ˆ _ dd„ tdƒD ƒ dS )Nc                 S   s   g | ]}||i‘qS r   r   )Ú.0r+   r   r   r   Ú
<listcomp>±   ó    zXMiscTests.test_dict_disappearing_during_get_item.<locals>.X.__hash__.<locals>.<listcomp>iè  é   )r"   r'   r5   ©r*   r   r   Ú__hash__¯   s    zDMiscTests.test_dict_disappearing_during_get_item.<locals>.X.__hash__N)r8   r9   r:   r[   r   rZ   r   r   r;   ®   s   r;   r3   r   é   )r   r   Úgetr    )r   r;   Úrr   rZ   r   Ú&test_dict_disappearing_during_get_item¬   s    z0MiscTests.test_dict_disappearing_during_get_itemN)r8   r9   r:   r   Z
bigmemtestZ_2Gr   r$   r,   r2   r>   Úcpython_onlyrG   rN   rT   rU   r_   r   r   r   r   r      s   
 	 


r   c                   @   s   e Zd Zdd„ ZdS )ÚTestAliasWorkingc                 C   s   t  d¡}|  |jd¡ d S )Nr?   )Ú	cET_aliasr   r   r   ©r   r*   r   r   r   Útest_alias_working¼   s    
z#TestAliasWorking.test_alias_workingN)r8   r9   r:   rd   r   r   r   r   ra   ¹   s   ra   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestAcceleratorImportedc                 C   s   |   tjjd¡ d S ©Nr   )r   r   r(   r9   r5   r   r   r   Útest_correct_import_cETÅ   s    z/TestAcceleratorImported.test_correct_import_cETc                 C   s   |   tjjd¡ d S rf   )r   rb   r(   r9   r5   r   r   r   Útest_correct_import_cET_aliasÉ   s    z5TestAcceleratorImported.test_correct_import_cET_aliasc                 C   s   |   tjjtj¡ d S r-   )ZassertNotIsInstancer   r   Ú__init__ÚtypesÚFunctionTyper5   r   r   r   Útest_parser_comes_from_CÌ   s    z0TestAcceleratorImported.test_parser_comes_from_CN)r8   r9   r:   rg   rh   rl   r   r   r   r   re   Á   s   re   c                   @   s2   e Zd Zdd„ ZejZdd„ Zdd„ Zdd„ Zd	S )
Ú
SizeofTestc                 C   s   t  d¡| _t d¡| _d S )NZ5PZPnnP4P)r   ZcalcobjsizeÚelementsizeÚstructÚcalcsizeÚextrar5   r   r   r   ÚsetUpÖ   s    zSizeofTest.setUpc                 C   s   t  d¡}|  || j¡ d S )NÚa)r   r   Úcheck_sizeofrn   rc   r   r   r   Útest_elementÝ   s    
zSizeofTest.test_elementc                 C   s&   t jddd}|  || j| j ¡ d S )Nrs   zabout:)Zhref)r   r   rt   rn   rq   rc   r   r   r   Útest_element_with_attribá   s    z#SizeofTest.test_element_with_attribc                 C   sF   t  d¡}tdƒD ]}t  |d¡ q|  || j| j t d¡ ¡ d S )Nrs   é   ÚspanZ8P)	r   r   r'   r(   rt   rn   rq   ro   rp   )r   r*   r+   r   r   r   Útest_element_with_childrenå   s    
ÿz%SizeofTest.test_element_with_childrenN)	r8   r9   r:   rr   r   rt   ru   rv   ry   r   r   r   r   rm   Ó   s
   rm   c                  C   s,   ddl m}  t tttt¡ | jt	d d S )Nr   ©Útest_xml_etree)Úmodule)
Útestr{   r   Zrun_unittestr   ra   re   rm   Ú	test_mainr   rz   r   r   r   r~   í   s    ür~   Ú__main__)rP   ro   r}   r   Ztest.supportr   rj   Zunittestr   rb   Z
skipUnlessZTestCaser   ra   r`   re   rm   r~   r8   r   r   r   r   Ú<module>   s4   ÿþ
 )


