o
    IXîhé!  ã                   @   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 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   s2   d| }t  ¡ }z|  t|j|¡ W d }d S d }w )Nó   x)ÚcETÚ	XMLParserÚassertRaisesÚOverflowErrorÚfeed)Úselfr	   ÚdataÚparser© r   ú?/opt/python-3.10.19/usr/lib/python3.10/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 sw   Y  |  |jd¡ |  t¡
 |`W d   ƒ n1 s8w   Y  |  |j¡ d|_|  t¡
 |`W d   ƒ n1 sXw   Y  |  |jd¡ |  t¡
 |`W d   ƒ n1 svw   Y  |  |j¡ d|_|  t¡
 |`W d   ƒ n1 s–w   Y  |  |jd¡ |  t¡
 |`	W d   ƒ n1 s´w   Y  |  |j	i ¡ dddœ|_	|  t¡
 |`	W d   ƒ n1 sØw   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   sB   
ÿÿÿÿÿÿÿ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   s8   t  ¡ } zt‚ ty } z	|}W Y d }~d S d }~ww ©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                       ó   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__r8   r   r7   r   r   ÚX^   ó    r<   r   é*   )r   r   r   r5   r!   Ú__setstate__)r   r<   r   r7   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                   @   ó   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)r9   r:   r;   rE   r   r   r   r   ÚMockFile€   s    rF   )r   r   Ú__new__r   r.   Úcloser   Z_parse_wholeZ
_seteventsr    ZentityÚtarget)r   r   rF   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   rA   Úbarr>   Úchildztext goes herezopposite of head)r   r"   Ú	_childrenr   r!   )rK   r>   r   r   )r   r   rG   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 rR   )r   ZXMLPullParserr   r   r)   rV   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                       r4   )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>±   s    zXMiscTests.test_dict_disappearing_during_get_item.<locals>.X.__hash__.<locals>.<listcomp>iè  é   )r"   r'   r6   ©r*   r   r   Ú__hash__¯   s   zDMiscTests.test_dict_disappearing_during_get_item.<locals>.X.__hash__N)r9   r:   r;   r]   r   r\   r   r   r<   ®   r=   r<   r3   r   é   )r   r   Úgetr    )r   r<   Úrr   r\   r   Ú&test_dict_disappearing_during_get_item¬   s   z0MiscTests.test_dict_disappearing_during_get_itemN)r9   r:   r;   r   Z
bigmemtestZ_2Gr   r$   r,   r2   r@   Úcpython_onlyrJ   rQ   rW   rX   ra   r   r   r   r   r      s    
 	 


r   c                   @   rB   )ÚTestAliasWorkingc                 C   s   t  d¡}|  |jd¡ d S )NrA   )Ú	cET_aliasr   r   r   ©r   r*   r   r   r   Útest_alias_working¼   ó   
z#TestAliasWorking.test_alias_workingN)r9   r:   r;   rf   r   r   r   r   rc   ¹   s    rc   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestAcceleratorImportedc                 C   ó   |   tjjd¡ d S ©Nr   )r   r   r(   r:   r6   r   r   r   Útest_correct_import_cETÅ   s   z/TestAcceleratorImported.test_correct_import_cETc                 C   ri   rj   )r   rd   r(   r:   r6   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ÚFunctionTyper6   r   r   r   Útest_parser_comes_from_CÌ   s   z0TestAcceleratorImported.test_parser_comes_from_CN)r9   r:   r;   rk   rl   rp   r   r   r   r   rh   Á   s    rh   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Úextrar6   r   r   r   ÚsetUpÖ   s   zSizeofTest.setUpc                 C   s   t  d¡}|  || j¡ d S )NÚa)r   r   Úcheck_sizeofrr   re   r   r   r   Útest_elementÝ   rg   zSizeofTest.test_elementc                 C   s&   t jddd}|  || j| j ¡ d S )Nrw   zabout:)Zhref)r   r   rx   rr   ru   re   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 )Nrw   é   ÚspanZ8P)	r   r   r'   r(   rx   rr   ru   rs   rt   )r   r*   r+   r   r   r   Útest_element_with_childrenå   s   

ÿz%SizeofTest.test_element_with_childrenN)	r9   r:   r;   rv   r   rx   ry   rz   r}   r   r   r   r   rq   Ó   s    rq   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   rc   rh   rq   Ú	test_mainr   r~   r   r   r   r‚   í   s   ür‚   Ú__main__)rS   rs   r   r   Ztest.support.import_helperr   rn   Zunittestr   rd   Z
skipUnlessZTestCaser   rc   rb   rh   rq   r‚   r9   r   r   r   r   Ú<module>   s8   ÿþ
 
)


ÿ