Your IP : 216.73.216.196


Current Path : /opt/alt/python312/lib64/python3.12/test/__pycache__/
Upload File :
Current File : //opt/alt/python312/lib64/python3.12/test/__pycache__/test_pyexpat.cpython-312.opt-1.pyc

�

�#�jK���^�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
Z
ddlmZmZddlmZddlmZddlmZmZmZGd�d	ej0�Zd
ZGd�dej0�ZGd
�dej0�ZGd�dej0�ZGd�dej0�ZGd�dej0�ZGd�dej0�Z Gd�dej0�Z!Gd�dej0�Z"Gd�dej0�Z#Gd�dej0�Z$Gd�d ej0�Z%Gd!�d"ej0�Z&Gd#�d$ej0�Z'Gd%�d&ej0�Z(Gd'�d(ejR�Z*ejVejXd)kd*�Gd+�d,e*ej0��Z-ejVejXd-kd.�Gd/�d0e*ej0��Z.e/d1k(rej`�yy)2�N)�BytesIO)�support)�
import_helper�	os_helper)�expat)�errors)�sortdict�
is_emscripten�is_wasic�0�eZdZd�Zd�Zd�Zd�Zd�Zd�Zy)�SetAttributeTestc�:�tjd��|_y�N�!��namespace_separator)r�ParserCreate�parser��selfs �8/opt/alt/python312/lib64/python3.12/test/test_pyexpat.py�setUpzSetAttributeTest.setUps���(�(�S�A���c���|j|jjd�dD]B}||j_|j|jjt|���Dy�NF)r��r)�assertIsr�buffer_text�bool�r�xs  r�test_buffer_textz!SetAttributeTest.test_buffer_textsL���
�
�d�k�k�-�-�u�5��A�&'�D�K�K�#��M�M�$�+�+�1�1�4��7�;�rc���|j|jjd�dD]B}||j_|j|jjt|���Dyr)rr�namespace_prefixesr r!s  r�test_namespace_prefixesz(SetAttributeTest.test_namespace_prefixes"�L���
�
�d�k�k�4�4�e�<��A�-.�D�K�K�*��M�M�$�+�+�8�8�$�q�'�B�rc���|j|jjd�dD]B}||j_|j|jjt|���Dyr)rr�ordered_attributesr r!s  r�test_ordered_attributesz(SetAttributeTest.test_ordered_attributes(r'rc���|j|jjd�dD]B}||j_|j|jjt|���Dyr)rr�specified_attributesr r!s  r�test_specified_attributesz*SetAttributeTest.test_specified_attributes.sL���
�
�d�k�k�6�6��>��A�/0�D�K�K�,��M�M�$�+�+�:�:�D��G�D�rc�"�|jt�5d|j_ddd�|jt�5|jjddd�|jtt
|jt
d�d�|jt|jjt
d�d�|jtt|jt
d��y#1swY��xYw#1swY��xYw)Nr�r)	�assertRaises�AttributeErrorr�returns_unicode�	TypeError�setattr�range�__setattr__�getattrrs r�test_invalid_attributesz(SetAttributeTest.test_invalid_attributes4s���
�
�
�~�
.�*+�D�K�K�'�/�
�
�
�~�
.��K�K�'�'�/�	
���)�W�d�k�k�5��:�q�I����)�T�[�[�%<�%<�e�C�j�!�L����)�W�d�k�k�5��:�F�/�
.��
.�
.�s�C9�D�9D�DN)	�__name__�
__module__�__qualname__rr#r&r*r-r8�rrr
r
s%��B�<�C�C�E�	Grr
s�<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<?xml-stylesheet href="stylesheet.css"?>
<!-- comment data -->
<!DOCTYPE quotations SYSTEM "quotations.dtd" [
<!ELEMENT root ANY>
<!ATTLIST root attr1 CDATA #REQUIRED attr2 CDATA #IMPLIED>
<!NOTATION notation SYSTEM "notation.jpeg">
<!ENTITY acirc "&#226;">
<!ENTITY external_entity SYSTEM "entity.file">
<!ENTITY unparsed_entity SYSTEM "entity.file" NDATA notation>
%unparsed_entity;
]>

<root attr1="value1" attr2="value2&#8000;">
<myns:subelement xmlns:myns="http://www.python.org/namespace">
     Contents of subelements
</myns:subelement>
<sub2><![CDATA[contents of CDATA section]]></sub2>
&external_entity;
&skipped_entity;
�
</root>
c�L�eZdZGd�d�Zgd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
y
)�	ParseTestc��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zy)�ParseTest.Outputterc��g|_y�N)�outrs r�__init__zParseTest.Outputter.__init__]s	���D�Hrc�p�|jjdt|�zdzt|�z�y)NzStart element: � )rC�append�reprr	�r�name�attrss   r�StartElementHandlerz'ParseTest.Outputter.StartElementHandler`s/���H�H�O�O�-��T�
�:�S�@�$�U�O�,�
-rc�R�|jjdt|�z�y)Nz
End element: �rCrGrH�rrJs  r�EndElementHandlerz%ParseTest.Outputter.EndElementHandlerds���H�H�O�O�O�d�4�j�8�9rc�x�|j�}|r(|jjdt|�z�yy)NzCharacter data: )�striprCrGrH�r�datas  r�CharacterDataHandlerz(ParseTest.Outputter.CharacterDataHandlergs/���:�:�<�D������� 2�T�$�Z� ?�@�rc�p�|jjdt|�zdzt|�z�y)NzPI: rFrN)r�targetrTs   r�ProcessingInstructionHandlerz0ParseTest.Outputter.ProcessingInstructionHandlerls)���H�H�O�O�F�T�&�\�1�C�7�$�t�*�D�Erc�p�|jjdt|�zdzt|�z�y)Nz	NS decl: rFrN)r�prefix�uris   r�StartNamespaceDeclHandlerz-ParseTest.Outputter.StartNamespaceDeclHandleros)���H�H�O�O�K�$�v�,�6��<�t�C�y�H�Irc�R�|jjdt|�z�y)NzEnd of NS decl: rN)rrZs  r�EndNamespaceDeclHandlerz+ParseTest.Outputter.EndNamespaceDeclHandlerrs���H�H�O�O�.��f��=�>rc�:�|jjd�y)N�Start of CDATA section�rCrGrs r�StartCdataSectionHandlerz,ParseTest.Outputter.StartCdataSectionHandlerus���H�H�O�O�4�5rc�:�|jjd�y)N�End of CDATA sectionrars r�EndCdataSectionHandlerz*ParseTest.Outputter.EndCdataSectionHandlerxs���H�H�O�O�2�3rc�R�|jjdt|�z�y)Nz	Comment: rN�r�texts  r�CommentHandlerz"ParseTest.Outputter.CommentHandler{s���H�H�O�O�K�$�t�*�4�5rc�N�|\}}}}|jjd|���y)NzNotation declared: ra)r�argsrJ�base�sysid�pubids      r�NotationDeclHandlerz'ParseTest.Outputter.NotationDeclHandler~s#��'+�$�D�$��u��H�H�O�O�d�<�=rc�P�|\}}}}}|jjd|���y)NzUnparsed entity decl: ra)rrk�
entityNamerl�systemId�publicId�notationNames       r�UnparsedEntityDeclHandlerz-ParseTest.Outputter.UnparsedEntityDeclHandler�s%��AE�>�J��h��,��H�H�O�O��?�@rc�:�|jjd�y)N�Not standalonerrars r�NotStandaloneHandlerz(ParseTest.Outputter.NotStandaloneHandler�s���H�H�O�O�,�-�rc�T�|\}}}}|jjd|dd���y)NzExternal entity ref: rra)rrk�contextrl�sysId�pubIds      r�ExternalEntityRefHandlerz,ParseTest.Outputter.ExternalEntityRefHandler�s,��*.�'�G�T�5�%��H�H�O�O��Q�R��B�C�rc�>�|jjd|f�y)N�
Start doctyperra�rrks  r�StartDoctypeDeclHandlerz+ParseTest.Outputter.StartDoctypeDeclHandler�s���H�H�O�O�_�d�3�4�rc�:�|jjd�y)N�End doctyperrars r�EndDoctypeDeclHandlerz)ParseTest.Outputter.EndDoctypeDeclHandler�s���H�H�O�O�M�*�rc�>�|jjd|f�y)N�Entity declarationrrar�s  r�EntityDeclHandlerz%ParseTest.Outputter.EntityDeclHandler�s���H�H�O�O�1�4�8�9�rc�>�|jjd|f�y)N�XML declarationrrar�s  r�XmlDeclHandlerz"ParseTest.Outputter.XmlDeclHandler�s���H�H�O�O�.��5�6�rc�>�|jjd|f�y)N�Element declarationrrar�s  r�ElementDeclHandlerz&ParseTest.Outputter.ElementDeclHandler�s���H�H�O�O�2�D�9�:�rc�>�|jjd|f�y)N�Attribute list declarationrrar�s  r�AttlistDeclHandlerz&ParseTest.Outputter.AttlistDeclHandler�s���H�H�O�O�9�4�@�A�rc�>�|jjd|f�y)N�Skipped entityrrar�s  r�SkippedEntityHandlerz(ParseTest.Outputter.SkippedEntityHandler�s���H�H�O�O�-�t�4�5�rc��yrBr<�r�userDatas  r�DefaultHandlerz"ParseTest.Outputter.DefaultHandler����rc��yrBr<r�s  r�DefaultHandlerExpandz(ParseTest.Outputter.DefaultHandlerExpand�r�rN)r9r:r;rDrLrPrUrXr\r^rbrerirorurxr}r�r�r�r�r�r�r�r�r�r<rr�	Outputterr@\sy��	�	-�	:�	A�
	F�	J�	?�	6�	4�	6�	>�	A�	�	�
	�	�	�	�	�	�	�	�	rr�)rLrPrUrXruror\r^rirbrer�r�rxr}r�r�r�r�r�r�r�c	�T�|jD]}t||t||���y)z{
        Set each of the callbacks defined on handler and named in
        self.handler_names on the given parser.
        N)�
handler_namesr4r7)rr�handlerrJs    r�_hookup_callbackszParseTest._hookup_callbacks�s'��
�&�&�D��F�D�'�'�4�"8�9�'rc�X�gd�}t||�D]\}}|j||��y)N))r�)z1.0�
iso-8859-1rz,PI: 'xml-stylesheet' 'href="stylesheet.css"'zComment: ' comment data 'rw)r)�
quotationszquotations.dtdNr)r�)�root)rrNr<)r�)r��attr1�CDATANr)r�)r��attr2r�Nrz<Notation declared: ('notation', None, 'notation.jpeg', None))r�)�acircr�âNNNN)r�)�external_entityrNNzentity.fileNNzPUnparsed entity decl: ('unparsed_entity', None, 'entity.file', None, 'notation')rwr�u?Start element: 'root' {'attr1': 'value1', 'attr2': 'value2ὀ'}z1NS decl: 'myns' 'http://www.python.org/namespace'z>Start element: 'http://www.python.org/namespace!subelement' {}z)Character data: 'Contents of subelements'z9End element: 'http://www.python.org/namespace!subelement'zEnd of NS decl: 'myns'zStart element: 'sub2' {}r`z+Character data: 'contents of CDATA section'rdzEnd element: 'sub2'z0External entity ref: (None, 'entity.file', None))r�)�skipped_entityruCharacter data: 'µ'zEnd element: 'root')�zip�assertEqual)r�
operations�expected_operations�	operation�expected_operations     r�_verify_parse_outputzParseTest._verify_parse_output�s7��!
��D.1��=P�-Q�)�I�)����Y�(:�;�.Rrc��|j�}tjd��}|j||�|j	t
d�|j}|j|�|jtt|d�y)NrrTu�)r�rrr��ParserTrCr�r0r1r7�rrCrr�s    r�test_parse_byteszParseTest.test_parse_bytes�sg���n�n����#�#��<�����v�s�+����T�4� ��W�W�
��!�!�*�-����.�'�6�8�Drc��|j�}tjd��}|j||�|j	t
j
d�d�|j}|j|�y)Nrrr�T)	r�rrr�r�rT�decoderCr�r�s    r�test_parse_strzParseTest.test_parse_str�s\���n�n����#�#��<�����v�s�+����T�[�[��.��5��W�W�
��!�!�*�-rc���|j�}tjd��}|j||�t	t
�}|j
|�|j}|j|�yr)	r�rrr�rrT�	ParseFilerCr�)rrCr�filer�s     r�test_parse_filezParseTest.test_parse_files\���n�n����#�#��<�����v�s�+��t�}��������W�W�
��!�!�*�-rc��tj�}tt�}|j	|�|jtj�5}|j	|�ddd�|jtjjj�tjj�y#1swY�[xYwrB)
rrrrTr�r0�errorr��ErrorString�	exception�coder�XML_ERROR_FINISHED)rrr��cms    r�test_parse_againzParseTest.test_parse_again
s����#�#�%���t�}��������
�
�u�{�{�
+�r����T�"�,�����*�*�2�<�<�+<�+<�=��,�,�9�9�	;�,�
+�s�C�C	N)r9r:r;r�r�r�r�r�r�r�r�r<rrr>r>[s6��S�S�j

�M�:�$<�L
E�.�
.�
;rr>c��eZdZd�Zd�Zd�Zy)�NamespaceSeparatorTestc��tj�tjd��tjd��y)NrrF�rrrs r�
test_legalz!NamespaceSeparatorTest.test_legals,��	����
���t�4�
���s�3rc�d�	tjd��|j�	tjd��|j�y#t$r%}|j	t|�d�Yd}~�Qd}~wwxYw#t$r%}|j	t|�d�Yd}~yd}~wwxYw)N�*rzJParserCreate() argument 'namespace_separator' must be str or None, not intztoo longzCnamespace_separator must be at most one character, omitted, or None)rr�failr3r��str�
ValueError)r�es  r�test_illegalz#NamespaceSeparatorTest.test_illegal!s���	^����2�6��I�I�K�
	W����:�>��I�I�K��
�	^����S��V�\�
^�
^��	^���	W����S��V�U�
W�
W��	W�s.�&A�&B�	A>�A9�9A>�	B/�
B*�*B/c�0�tjd��y)N�rr�rs r�test_zero_lengthz'NamespaceSeparatorTest.test_zero_length0s��	���r�2rN)r9r:r;r�r�r�r<rrr�r�s��4�
W�	3rr�c��eZdZd�Zd�Zy)�
InterningTestc����tj�}g��fd�}||_||_|j	dd��d}|jt
��d��D]}|j||u��y)Nc�(���j|�yrB�rG)rJrk�Ls  �r�	collectorz%InterningTest.test.<locals>.collectorAs���
�H�H�T�Nrs<e> <e/> <e></e> </e>Tr�)rrrLrPr�r��len�
assertTrue)r�pr��tag�entryr�s     @r�testzInterningTest.test=sq������ ����	� )���'���	���(�$�/���d������Q���#��E��O�O�C�5�L�)�rc���Gd�d�}tjd��}d|_||�}|j|_|j	t
d�|j
|jd�y)Nc��eZdZd�Zd�Zy)�7InterningTest.test_issue9402.<locals>.ExternalOutputterc� �||_d|_yrB)r�
parser_result�rrs  rrDz@InterningTest.test_issue9402.<locals>.ExternalOutputter.__init__Os��$���%)��"rc�h�|jjd�}|jdd�|_y)Nr�rTr)r�ExternalEntityParserCreater�r�)rrzrlr{r|�external_parsers      rr}zPInterningTest.test_issue9402.<locals>.ExternalOutputter.ExternalEntityRefHandlerSs.��"&�+�+�"H�"H��"L��%4�%:�%:�3��%E��"�rN)r9r:r;rDr}r<rr�ExternalOutputterr�Ns��
*�
rr�rrrT)rrrr}r�rTr�r�)rr�rrCs    r�test_issue9402zInterningTest.test_issue9402Lsb��	�	��#�#��<�������'��*-�*F�*F��'����T�4� �����*�*�A�.rN)r9r:r;r�r�r<rrr�r�<s��
*�/rr�c�p�eZdZd�Zd�Zd�Zd�Zd�Zd�Zgfd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zy)�BufferTextTestc��g|_tj�|_d|j_|j
|j_y�Nr)�stuffrrrrrUrs rrzBufferTextTest.setUpas7����
��(�(�*���"#�����+/�+D�+D����(rc�~�|j|j||�d|j�dtt|����y)Nz
stuff    = z
expected = )r�r��mapr�)r�expected�labels   r�checkzBufferTextTest.checkgs/��������X��$�*�*�c�#�x�&8�:�	;rc�:�|jj|�yrB�r�rGrgs  rrUz#BufferTextTest.CharacterDataHandlerls���
�
���$�rc��|jjd|z�|jd�}|dk(rd|j_y|dk(rd|j_yy)Nz<%s>zbuffer-text�yesr�nor)r�rG�getrr)rrJrK�bts    rrLz"BufferTextTest.StartElementHandlerosQ���
�
���&�4�-�(�
�Y�Y�}�
%��
��;�&'�D�K�K�#�
�4�Z�&'�D�K�K�#�rc�@�|jjd|z�y)Nz</%s>r�rOs  rrPz BufferTextTest.EndElementHandlerws���
�
���'�D�.�)rc�@�|jjd|z�y)Nz	<!--%s-->r�rSs  rrizBufferTextTest.CommentHandlerzs���
�
���+��,�-rc	�T�|D]#}t|j|t||���%yrB)r4rr7)r�handlersrJs   r�setHandlerszBufferTextTest.setHandlers}s#���D��D�K�K��w�t�T�':�;�rc�b�tj�}|j|j�yrB)rr�assertFalserr�s  r�test_default_to_disabledz'BufferTextTest.test_default_to_disabled�s$���#�#�%������+�+�,rc���|j|jj�|jjdd�|j	|j
dgd�y)N�<a>1<b/>2<c/>3</a>T�123�$buffered text not properly collapsed)r�rrr�r�r�rs r�test_buffering_enabledz%BufferTextTest.test_buffering_enabled�sI��������/�/�0������/��6�������e�W�?�	Arc��|jdg�|jjdd�|j|jgd�d�y)NrLs9<a>1<b buffer-text='no'/>2
3<c buffer-text='yes'/>4
5</a>T)�<a>�1�<b>�2�
�3�<c>z4
5z*buffering control not reacting as expected�rrr�r�r�rs r�test1zBufferTextTest.test1�sG��	
���/�0�1������X�Z^�_�������K�E�	Grc�x�|jjdd�|j|jdgd�y)Ns&<a>1<b/>&lt;2&gt;<c/>&#32;
&#x20;3</a>Tz1<2> 
 3r	)rr�r�r�rs r�test2zBufferTextTest.test2�s3�������D�d�K�������k�]�?�	Arc��|jdg�|jjdd�|j|jgd�d�y)NrLrT)rr
rrrr� buffered text not properly splitrrs r�test3zBufferTextTest.test3�sC�����/�0�1������/��6�������%I�;�	=rc��|jddg�d|j_|jjdd�|j	|j
gd��y)NrLrPrT)rr�</b>r�</c>�</a>)rrrUr�r�r�rs r�test4zBufferTextTest.test4�sP�����/�1D�E�F�+/����(������/��6�������F�	Hrc��|jddg�|jjdd�|j|jgd��y)NrLrPs<a>1<b></b>2<c/>3</a>T)	rr
rrrrrrrrrs r�test5zBufferTextTest.test5�sD�����/�1D�E�F������2�D�9�������H�	Jrc��|jgd��|jjdd�|j|jgd�d�y)N�rirPrLs<a>1<b/>2<c></c>345</a> T)	rr
rrrrr�345rrrrs r�test6zBufferTextTest.test6�sD�����+�	,������5�t�<�������J�.�	0rc��|jgd��|jjdd�|j|jgd�d�y)Nr"s,<a>1<b/>2<c></c>3<!--abc-->4<!--def-->5</a> T)
rr
rrrrrrz
<!--abc-->�4z
<!--def-->�5rrrrs r�test7zBufferTextTest.test7�sG�����+�	,������I�4�P�������H�;�	=rN)r9r:r;rr�rUrLrPrirrr
rrrrr r$r(r<rrr�r�`s]��E�;�
 �(�*�.�$&�<�-�A�G�A�
=�H�J�0�=rr�c�B�eZdZd�Zd�Zejd��Zd�Zy)�HandlerExceptionTestc� �td|�d���)NzStartElementHandler: <�>)�RuntimeErrorrIs   rrLz(HandlerExceptionTest.StartElementHandler�s���3�D�6��;�<�<rc��|jtjj|j�|�|j|j
|�yrB)r��os�path�basename�filenamerJ)rr�r2�funcnames    r�check_traceback_entryz*HandlerExceptionTest.check_traceback_entry�s9��������)�)�%�.�.�9�8�D�������X�.rc��tjd�}|r tjj	|�}nd}|r0tj|�5|j|�ddd�y|j|�y#1swYyxYw)N�abs_builddirF)�	sysconfig�get_config_varr/r0�isdirr�
change_cwd�_test_exception)r�src_dir�have_sources   r�test_exceptionz#HandlerExceptionTest.test_exception�sn���*�*�>�:����'�'�-�-��0�K��K���%�%�g�.��$�$�[�1�/�.�
� � ��-�/�.�s�A>�>Bc��tjjdd�}tj�}|j
|_	|j
dd�|jd�|jt�d|�|j|dd	d
�|j|dtjj!|�d�|j|d
d	d�|r@tjj#|�r |j%d|dj&�yyy#t$rJ}|j|jdd|�tj|j�}Yd}~��d}~wwxYw)N�Modulesz	pyexpat.cs<a><b><c/></b></a>Tz%the parser did not raise RuntimeErrorrzStartElementHandler: <a>�ztest_pyexpat.pyr;r�StartElementrrLzcall_with_frame("StartElement")r/r0�joinrrrLr�r�r-r�rk�	traceback�
extract_tb�
__traceback__r�r4r1�exists�assertIn�line)rr=�	PYEXPAT_Cr�exc�entriess      rr;z$HandlerExceptionTest._test_exception�sF���G�G�L�L��K�8�	��#�#�%��%)�%=�%=��"�	>��L�L�.��5��I�I�=�>�
	
����W��q�'�2��"�"�7�1�:�#4�6G�	I��"�"�7�1�:�#%�7�7�#3�#3�I�#>�#1�	3�	
�"�"�7�1�:�#4�6K�	M��2�7�7�>�>�)�4��M�M�:�!�!�*�/�/�
+�5�;��!�	>����S�X�X�a�[�*D�c�J��*�*�3�+<�+<�=�G��	>�s�#D(�(	E;�1?E6�6E;N)	r9r:r;rLr4r�cpython_onlyr>r;r<rrr*r*�s+��=�/�
���.��.� +rr*c�$�eZdZd�Zd�Zd�Zd�Zy)�PositionTestc�&�|jd�y)N�s��	check_posrIs   rrLz PositionTest.StartElementHandler�������s�rc�&�|jd�y)Nr�rRrOs  rrPzPositionTest.EndElementHandler�rTrc�z�||jj|jj|jjf}|j	|j
t
|j�kd�|j|j
}|j||d|�d|���|xj
dz
c_y)Nztoo many parser eventszExpected position z, got position r)	r�CurrentByteIndex�CurrentLineNumber�CurrentColumnNumberr��uptor��
expected_listr�)r�event�posr�s    rrSzPositionTest.check_poss�����{�{�+�+��{�{�,�,��{�{�.�.�0��	
����	�	�C��(:�(:�$;�;�0�	2��%�%�d�i�i�0������h�:=�x�H�	J��	�	�Q��	rc��tj�|_|j|j_|j|j_d|_gd�|_d}|jj|d�y)Nr))rQrrr)rQ�rr)rQ�rAr)r�r/rAr�)r���r)r��r_rs<a>
 <b>
  <c/>
 </b>
</a>T)rrrrLrPrZr[r�)r�xmls  rr�zPositionTest.test
sc���(�(�*���*.�*B�*B����'�(,�(>�(>����%���	�Q���0�������#�t�$rN)r9r:r;rLrPrSr�r<rrrOrO�s����
�	%rrOc��eZdZd�Zy)�
sf1296433Testc����ddz}Gd�dt���fd�}tj�}||_|j	t|j
|j
d��y)Nz1<?xml version='1.0' encoding='iso8859'?><s>%s</s>�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac��eZdZy)�Asf1296433Test.test_parse_only_xml_data.<locals>.SpecificExceptionN)r9r:r;r<rr�SpecificExceptionrj!s��rrkc�����rBr<)rhrks �rr�z7sf1296433Test.test_parse_only_xml_data.<locals>.handler$s	���#�#r�iso8859)�	ExceptionrrrUr0r��encode)rrdr�rrks    @r�test_parse_only_xml_dataz&sf1296433Test.test_parse_only_xml_datasX���B�Z�P��	�	�	�	$��#�#�%��&-��#����)�V�\�\�3�:�:�i�3H�IrN)r9r:r;rpr<rrrfrfs��Jrrfc�F�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zy)�ChardataBufferTestz.
    test setting of chardata buffer size
    c�F�|j|jd�d�y)Nir�r��small_buffer_testrs r�test_1025_bytesz"ChardataBufferTest.test_1025_bytes1�������/�/��5�q�9rc�F�|j|jd�d�y)Ni�rrtrs r�test_1000_bytesz"ChardataBufferTest.test_1000_bytes4rwrc���tj�}d|_|jt�5d|_ddd�|jt�5d|_ddd�|jttf�5tjdz|_ddd�|jt�5d|_ddd�y#1swY��xYw#1swY�wxYw#1swY�GxYw#1swYyxYw)Nr���rg�@)
rrrr0r��buffer_size�
OverflowError�sys�maxsizer3r�s  r�test_wrong_sizez"ChardataBufferTest.test_wrong_size7s����#�#�%�����
�
�
�z�
*�!#�F��+�
�
�
�z�
*�!"�F��+�
�
�
�
�M�:�
;�!$���q��F��<�
�
�
�y�
)�!&�F��*�
)�
+�
*��
*�
*��
;�
;��
)�
)�s/�C�C�C �7C,�C�C� C)�,C5c��d}d}tj�}|j|_d|_d|_d|_|j|�|j|jd�|j|_|j|jd�|j|�|j|jd�y)Ns+<?xml version='1.0' encoding='iso8859'?><s>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</s>irrr)	rr�counting_handlerrUr|r�nr�r��r�xml1�xml2rs    r�test_unchanged_sizez&ChardataBufferTest.test_unchanged_sizeCs���J��!���#�#�%��&*�&;�&;��#� ������������T���������#�$�/�/����������#�	���T���������#rc� �d}d}d}tj�}|j|_d|_d|_|j
|j
d�d|_|j|d�|j
|j
d�|j
|jd�d|_|j|j�|j
|j
d�td�D]}|j|d��|j
|jd	�d|_|j|j�|j
|j
d�|j|d
�|j
|jd�y)Ns+<?xml version='1.0' encoding='iso8859'?><a>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbscccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc</a>r�rF�
r`T�)rrr�rUrr|r�r�r�rr5r�)rr�r��xml3r�is      r�test_disabling_bufferz(ChardataBufferTest.test_disabling_bufferZsJ��J����$���#�#�%��&*�&;�&;��#����!�������+�+�T�2�������T�5�!�����+�+�T�2��������#��������+�+�,�����+�+�T�2��r��A��L�L��u�%���������$��������*�*�+�����+�+�T�2����T�4� ��������$rc�.�|xjdz
c_yr�)r�rgs  rr�z#ChardataBufferTest.counting_handlerxs�����!��rc���dd|zzdz}tj�}|j|_d|_d|_d|_|j|�|jS)Ns+<?xml version='1.0' encoding='iso8859'?><s>�as</s>r�rr)rrr�rUr|rr�r�)r�
buffer_lenrdrs    rruz$ChardataBufferTest.small_buffer_test{s_��<�t�j�?P�P�SZ�Z���#�#�%��&*�&;�&;��#�!������������S���v�v�
rc��d}d}tj�}|j|_d|_d|_|j
|j
d�d|_|j|d�|xj
dzc_|j
|j
d�|j|d	�|j
|jd�y)
Ns.<?xml version='1.0' encoding='iso8859'?><a><s>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa�aaa</s><s>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</s></a>rr�rFr�T�	rrr�rUrr|r�r�r�r�s    r�test_change_size_1z%ChardataBufferTest.test_change_size_1�s���N��8���#�#�%��&*�&;�&;��#����!�������+�+�T�2�������T�5�!����a�������+�+�T�2����T�4� ��������#rc��d}d}tj�}|j|_d|_d|_|j
|j
d�d|_|j|d�|j
dz|_|j
|j
d�|j|d	�|j
|jd
�y)Ns.<?xml version='1.0' encoding='iso8859'?><a>a<s>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar�rr�rFrr�Trbr�r�s    r�test_change_size_2z%ChardataBufferTest.test_change_size_2�s���O��8���#�#�%��&*�&;�&;��#����!�������+�+�T�2�������T�5�!�#�/�/�1�4�������+�+�T�2����T�4� ��������#rN)
r9r:r;�__doc__rvryr�r�r�r�rur�r�r<rrrrrr,s4���:�:�
'�$�.%�<�	�$� $rrrc��eZdZd�Zy)�ElementDeclHandlerTestc�0�d}dd|zzdzd|zzdz}tj�}d�|_tj�5|jt�5|j|�ddd�ddd�y#1swY�xYw#1swYyxYw)Ni �s <!DOCTYPE root [
<!ELEMENT root s(a, r��)s
>
]>
<root/>
c��yrBr<)�_1�_2s  r�<lambda>zIElementDeclHandlerTest.test_deeply_nested_content_model.<locals>.<lambda>�s��4r)rrr�r�infinite_recursionr0�RecursionErrorr�)r�NrTrs    r� test_deeply_nested_content_modelz7ElementDeclHandlerTest.test_deeply_nested_content_model�s���
��0���k�
� �
!�#'�!�8�
,�!�
"�	
��#�#�%��$7��!�
�
'�
'�
)��"�"�>�2����T�"�3�*�
)�2�2��*�
)�s$�B�B�/B�B		�B�BN)r9r:r;r�r<rrr�r��s��#rr�c��eZdZd�Zd�Zy)�MalformedInputTestc���d}tj�}	|j|d�|j�y#tj$r%}|jt
|�d�Yd}~yd}~wwxYw)Ns
Tz unclosed token: line 2, column 0)rrr�r��
ExpatErrorr�r��rrdrr�s    rrzMalformedInputTest.test1�sb�����#�#�%��	I��L�L��d�#��I�I�K�����	I����S��V�%G�H�H��	I�s�";�A3�A.�.A3c���d}tj�}d}|jtj|�5|j	|d�ddd�y#1swYyxYw)Ns<?xml version…='1.0'?>
z3XML declaration not well-formed: line 1, column \d+T)rr�assertRaisesRegexr�r�)rrdr�err_patterns    rrzMalformedInputTest.test2�sK��2���#�#�%��L��
�
#�
#�E�$4�$4�k�
B��L�L��d�#�C�
B�
B�s�A�AN)r9r:r;rrr<rrr�r��s
��I�$rr�c��eZdZd�Zd�Zy)�ErrorMessageTestc��|jtjtjtjtj�yrB)r�r�XML_ERROR_SYNTAX�messages�codesrs r�
test_codeszErrorMessageTest.test_codes�s4������0�0�������f�6M�6M�)N�O�	Qrc�,�d}tj�}	|j|d�|j�y#tj$rE}|j|jtjtj�Yd}~yd}~wwxYw)N�<T)
rrr�r�r�r�r�rr��XML_ERROR_UNCLOSED_TOKENr�s    r�test_expaterrorz ErrorMessageTest.test_expaterror�sw�����#�#�%��	L��L�L��d�#��I�I�K�����	L����Q�V�V�#�\�\�&�*I�*I�J�
L�
L��	L�s�";�B�;B�BN)r9r:r;r�r�r<rrr�r��s��Q�
Lrr�c��eZdZdZd�Zd�Zy)�ForeignDTDTestszE
    Tests for the UseForeignDTD method of expat parser objects.
    c����g��fd�}tj�}|jd�|jtj�||_|j
d�|j�dg�g�ddtj�}|j�|jtj�||_|j
d�|j�dg�y)z�
        If UseForeignDTD is passed True and a document without an external
        entity reference is parsed, ExternalEntityRefHandler is first called
        with None for the public and system ids.
        c�,���j||f�yr�r��rzrl�	system_id�	public_id�handler_call_argss    �r�resolve_entityz<ForeignDTDTests.test_use_foreign_dtd.<locals>.resolve_entity������$�$�i��%;�<�rTs<?xml version='1.0'?><element/>)NNN�rr�
UseForeignDTD�SetParamEntityParsing�XML_PARAM_ENTITY_PARSING_ALWAYSr}r�r��rr�rr�s   @r�test_use_foreign_dtdz$ForeignDTDTests.test_use_foreign_dtd�s������	��#�#�%�����T�"��$�$�U�%J�%J�K�*8��'����7�8����*�\�N�;� "��!���#�#�%�������$�$�U�%J�%J�K�*8��'����7�8����*�\�N�;rc����g��fd�}tj�}|jd�|jtj�||_|j
d�|j�dg�y)z�
        If UseForeignDTD is passed True and a document with an external
        entity reference is parsed, ExternalEntityRefHandler is called with
        the public and system ids from the document.
        c�,���j||f�yr�r�r�s    �rr�zCForeignDTDTests.test_ignore_use_foreign_dtd.<locals>.resolve_entityr�rTs@<?xml version='1.0'?><!DOCTYPE foo PUBLIC 'bar' 'baz'><element/>)�bar�bazNr�r�s   @r�test_ignore_use_foreign_dtdz+ForeignDTDTests.test_ignore_use_foreign_dtd�sn�����	��#�#�%�����T�"��$�$�U�%J�%J�K�*8��'����O�	Q����*�^�,<�=rN)r9r:r;r�r�r�r<rrr�r��s���<�8>rr�c�"�eZdZdZd�Zd�Zd�Zy)�ParentParserLifetimeTestz�
    Subparsers make use of their parent XML_Parser inside of Expat.
    As a result, parent parsers need to outlive subparsers.

    See https://github.com/python/cpython/issues/139400.
    c�P�tj�}|jd�}~yrB�rrr�)rr�	subparsers   r�2test_parent_parser_outlives_its_subparsers__singlezKParentParserLifetimeTest.test_parent_parser_outlives_its_subparsers__singles%���#�#�%���5�5�d�;�	�
rc�r�tj�}|jd�}|jd�}~yrBr�)rr�
subparser_one�
subparser_twos    r�4test_parent_parser_outlives_its_subparsers__multiplezMParentParserLifetimeTest.test_parent_parser_outlives_its_subparsers__multiples5���#�#�%���9�9�$�?�
��9�9�$�?�
�
rc�t�tj�}|jd�}|jd�}~~yrBr�)rrr��subsubparsers    r�1test_parent_parser_outlives_its_subparsers__chainzJParentParserLifetimeTest.test_parent_parser_outlives_its_subparsers__chain(s8���#�#�%���5�5�d�;�	� �;�;�D�A��
�rN)r9r:r;r�r�r�r�r<rrr�r�s�����rr�c��eZdZd�Zd�Zd�Zy)�ReparseDeferralTestc�V�tj�}tjdk\}|j|j	�|�|jd�|j|j	�d�|jd�|j|j	�|�y)N�rr�rFT)rr�version_infor�GetReparseDeferralEnabled�SetReparseDeferralEnabled)rr�enableds   r�test_getter_setter_round_tripz1ReparseDeferralTest.test_getter_setter_round_trip4s����#�#�%���%�%��2���
�
�f�6�6�8�'�B��(�(��/��
�
�f�6�6�8�%�@��(�(��.��
�
�f�6�6�8�'�Brc���tjdkr#|jdtj�d��g��fd�}tj�}||_|j|j
��dD]}|j|d��|j�g�|jdd�|j�d	g�y)
Nr�zExpat z" does not support reparse deferralc�(���j|�yrBr��rJ�_�starteds  �r�
start_elementzHReparseDeferralTest.test_reparse_deferral_enabled.<locals>.start_elementE�����N�N�4� r�s<docs/>FrT�doc)	rr��skipTestrrLr�r�r�r��rr�r�chunkr�s    @r�test_reparse_deferral_enabledz1ReparseDeferralTest.test_reparse_deferral_enabled>s�������	�)��M�M�F�5�#5�#5�"6�75�5�
6���	!��#�#�%��%2��"�����8�8�:�;�%�E��L�L���&�&�	
����"�%����S�$������5�'�*rc�(��g��fd�}tj�}||_tjdk\r|j	d�|j|j
��dD]}|j|d��|j�dg�y)Nc�(���j|�yrBr�r�s  �rr�zIReparseDeferralTest.test_reparse_deferral_disabled.<locals>.start_elementYr�rr�Fr�r�)	rrrLr�r�rr�r�r�r�s    @r�test_reparse_deferral_disabledz2ReparseDeferralTest.test_reparse_deferral_disabledVs������	!��#�#�%��%2��"�����*��,�,�U�3�����9�9�;�<�%�E��L�L���&�&�	
����5�'�*rN)r9r:r;r�r�r�r<rrr�r�3s��C�+�0+rr�c�X�eZdZdZedd�d��Zd�Zd�Zejd��Z
ejd��Zejd	��Zejd
��Z
ejd��Zd�Zd
�Zd�Zejd��Zejd��Zd�Zd�Zd�Zd�Zy)�AttackProtectionTestBasez�
    Base class for testing protections against XML payloads with
    disproportionate amplification.

    The protections being tested should detect and prevent attacks
    that leverage disproportionate amplification from small inputs.
    �.)rhc����tjd|�d|�d��j�}dj�fd�t	|�D��}tj
|d�}|j
|��S)z�Create a billion laughs attack payload.

        Be careful: the number of total items is pow(n, k), thereby
        requiring at least pow(ncols, nrows) * sizeof(text) memory!
        z]            <?xml version="1.0"?>
            <!DOCTYPE doc [
                <!ENTITY row0 "zc">
                <!ELEMENT doc (#PCDATA)>
            {body}
            ]>
            <doc>&rowz;</doc>
        rc3�D�K�|]}d|dz�dd|�d��z�d����y�w)z<!ENTITY rowrz "z&row�;z">Nr<)�.0r��ncolss  �r�	<genexpr>zIAttackProtectionTestBase.exponential_expansion_payload.<locals>.<genexpr>�s:�����
�!���1�q�5�'��d�1�#�Q�K�%�$7�#8��;�!�s� z    )�body)�textwrap�dedent�rstriprCr5�indent�format)�nrowsr�rh�templater�s `   r�exponential_expansion_payloadz6AttackProtectionTestBase.exponential_expansion_payloadrs�����?�?�( �!%�v�&��W�	�$�
��V�X�	��y�y�
��5�\�
�
�����t�W�-�����D��)�)rc��|jdd��}|j|tjd�j	��y)NrrA)rr�a'            <?xml version="1.0"?>
            <!DOCTYPE doc [
                <!ENTITY row0 ".">
                <!ELEMENT doc (#PCDATA)>
                <!ENTITY row1 "&row0;&row0;&row0;">
                <!ENTITY row2 "&row1;&row1;&row1;">
            ]>
            <doc>&row2;</doc>
        )rr�r�rr)r�payloads  r�test_payload_generationz0AttackProtectionTestBase.test_payload_generation�s@���4�4�1�A�4�F������(�/�/�	3�	#
��V�X�		rc�T�d}|jtj||g|��i|��y)z=Check that func(*args, **kwargs) is invalid for a sub-parser.zparser must be a root parserN�r�rr��r�funcrk�kwargs�msgs     r�assert_root_parser_failurez3AttackProtectionTestBase.assert_root_parser_failure�s+��,������u�/�/��d�L�T�L�V�Lrc��y)aAssert that func(*args, **kwargs) triggers the attack protection.

        Note: this method must ensure that the attack protection being tested
        is the one that is actually triggered at runtime, e.g., by matching
        the exact error message.
        Nr<)rr
rkrs    r�assert_rejectedz(AttackProtectionTestBase.assert_rejected���rc��y)z7Set the activation threshold for the tested protection.Nr<�rr�	thresholds   r�set_activation_thresholdz1AttackProtectionTestBase.set_activation_threshold�rrc��y)z?Set the maximum amplification factor for the tested protection.Nr<�rr�
max_factors   r�set_maximum_amplificationz2AttackProtectionTestBase.set_maximum_amplification�rrc��y)z/Test when the activation threshold is exceeded.Nr<rs r�0test_set_activation_threshold__threshold_reachedzIAttackProtectionTestBase.test_set_activation_threshold__threshold_reached�rrc��y)z3Test when the activation threshold is not exceeded.Nr<rs r�4test_set_activation_threshold__threshold_not_reachedzMAttackProtectionTestBase.test_set_activation_threshold__threshold_not_reached�rrc��tj�}tj|j|�}|jt|d�|jt|d�|jt|d�y)N��?g�����)rr�	functools�partialrr0r3r��rr�setters   r�5test_set_activation_threshold__invalid_threshold_typezNAttackProtectionTestBase.test_set_activation_threshold__invalid_threshold_type�s^���#�#�%���"�"�4�#@�#@�&�I�����)�V�S�1����)�V�T�2����*�f�b�1rc���tjd�}tj�}t	j
|j|�}|jt||jdz�y)N�	_testcapir)
r�
import_modulerrr#r$rr0r}�
ULLONG_MAX)rr)rr&s    r�6test_set_activation_threshold__invalid_threshold_rangezOAttackProtectionTestBase.test_set_activation_threshold__invalid_threshold_range�sU��!�/�/��<�	��#�#�%���"�"�4�#@�#@�&�I�����-���1E�1E��1I�Jrc��tj�}|jd�}tj|j
|�}|j
|d�y)Ni90)rrr�r#r$rr�rrr�r&s    r�1test_set_activation_threshold__fail_for_subparserzJAttackProtectionTestBase.test_set_activation_threshold__fail_for_subparser�sH���#�#�%���5�5�d�;�	��"�"�4�#@�#@�)�L���'�'���6rc��y)z/Test when the amplification factor is exceeded.Nr<rs r�6test_set_maximum_amplification__amplification_exceededzOAttackProtectionTestBase.test_set_maximum_amplification__amplification_exceeded�rrc��y)z3Test when the amplification factor is not exceeded.Nr<rs r�:test_set_maximum_amplification__amplification_not_exceededzSAttackProtectionTestBase.test_set_maximum_amplification__amplification_not_exceeded�rrc��td�}tj�}|j|j	||��y)N�inf)�floatrr�assertIsNoner)rr5rs   r�(test_set_maximum_amplification__infinityzAAttackProtectionTestBase.test_set_maximum_amplification__infinity�s4���E�l���#�#�%�����$�8�8���E�Frc���tj�}tj|j|�}|jt|d�|jt|d�y)N�abc)rrr#r$rr0r3r%s   r�7test_set_maximum_amplification__invalid_max_factor_typezPAttackProtectionTestBase.test_set_maximum_amplification__invalid_max_factor_type�sL���#�#�%���"�"�4�#A�#A�6�J�����)�V�T�2����)�V�U�3rc�0�tj�}tj|j|�}tjd�}|jtj||td��|jtj||d�y)Nz!'max_factor' must be at least 1.0�nang�G�z��?)
rrr#r$r�re�escaper�r�r6)rrr&rs    r�8test_set_maximum_amplification__invalid_max_factor_rangezQAttackProtectionTestBase.test_set_maximum_amplification__invalid_max_factor_range�so���#�#�%���"�"�4�#A�#A�6�J���i�i�;�<�����u�/�/��f�e�E�l�K����u�/�/��f�d�Crc��tj�}|jd�}tj|j
|�}|j
|d�y)Ng������^@)rrr�r#r$rrr.s    r�2test_set_maximum_amplification__fail_for_subparserzKAttackProtectionTestBase.test_set_maximum_amplification__fail_for_subparser�sH���#�#�%���5�5�d�;�	��"�"�4�#A�#A�9�M���'�'���7rN)r9r:r;r��staticmethodrr	rr:�abstractmethodrrrrrr'r,r/r1r3r8r;r@rBr<rrr�r�is
����<?�*��*�.�M�
	������	���F��F�	���N��N�	���>��>�	���B��B�2�K�7�	���>��>�	���B��B�G�
4�D�8rr�)rrbrzrequires Expat >= 2.4.0c�6�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	y)	�ExpansionProtectionTestc�T�d}|jtj||g|��i|��y)�;Check that func(*args, **kwargs) hits the allocation limit.z\limit on input amplification factor \(from DTD and entities\) breached: line \d+, column \d+Nrrs     rrz'ExpansionProtectionTest.assert_rejected�s2��
.�	�	����u�/�/��d�L�T�L�V�Lrc�$�|j|�SrB)�3SetBillionLaughsAttackProtectionActivationThresholdrs   rrz0ExpansionProtectionTest.set_activation_threshold�s���I�I�)�T�Trc�$�|j|�SrB)�4SetBillionLaughsAttackProtectionMaximumAmplificationrs   rrz1ExpansionProtectionTest.set_maximum_amplification�s���J�J�:�V�Vrc���tj�}|j|d�|j|j	|d��|jdd��}|j
|j|d�y�NrAr!r�rb�r�rT�rrrr7rrrr��rrrs   rrzHExpansionProtectionTest.test_set_activation_threshold__threshold_reached��h���#�#�%���%�%�f�a�0�	
���$�8�8���E�F��4�4�2�Q�4�G�����V�\�\�7�D�9rc��tj�}|j|tdd��|j	|j|d��|j
dd��}|j|j|d��y�Nr�r_r!rbrOT�	rrr�powr7rr�assertIsNotNoner�rQs   rrzLExpansionProtectionTest.test_set_activation_threshold__threshold_not_reached	�q���#�#�%���%�%�f�c�"�a�j�9�	
���$�8�8���E�F��4�4�2�Q�4�G�����V�\�\�'�4�8�9rc���tj�}|j|d�|j|j	|d��|jdd��}|j
|j|d�y�Nrr!rrrOTrPrQs   rr1zNExpansionProtectionTest.test_set_maximum_amplification__amplification_exceeded�f���#�#�%���%�%�f�a�0����$�8�8���E�F��4�4�1�A�4�F�����V�\�\�7�D�9rc��tj�}|j|d�|j|j	|d��|jdd��}|j
|j|d��y�Nrg��@rrrOT�rrrr7rrrWr�rQs   rr3zRExpansionProtectionTest.test_set_maximum_amplification__amplification_not_exceeded�i���#�#�%���%�%�f�a�0����$�8�8���E�F��4�4�1�A�4�F�����V�\�\�'�4�8�9rN�
r9r:r;rrrrrr1r3r<rrrFrF�s(��M�U�W�:�:�:�:rrF)r�rzrequires Expat >= 2.7.2c�6�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	y)	�MemoryProtectionTestc�T�d}|jtj||g|��i|��y)rHz#out of memory: line \d+, column \d+Nrrs     rrz$MemoryProtectionTest.assert_rejected1s+��4������u�/�/��d�L�T�L�V�Lrc�$�|j|�SrB)�"SetAllocTrackerActivationThresholdrs   rrz-MemoryProtectionTest.set_activation_threshold6s���8�8��C�Crc�$�|j|�SrB)�#SetAllocTrackerMaximumAmplificationrs   rrz.MemoryProtectionTest.set_maximum_amplification9s���9�9�*�E�Erc���tj�}|j|d�|j|j	|d��|jdd��}|j
|j|d�yrNrPrQs   rrzEMemoryProtectionTest.test_set_activation_threshold__threshold_reached<rRrc��tj�}|j|tdd��|j	|j|d��|j
dd��}|j|j|d��yrTrUrQs   rrzIMemoryProtectionTest.test_set_activation_threshold__threshold_not_reachedFrXrc���tj�}|j|d�|j|j	|d��|jdd��}|j
|j|d�yrZrPrQs   rr1zKMemoryProtectionTest.test_set_maximum_amplification__amplification_exceededPr[rc��tj�}|j|d�|j|j	|d��|jdd��}|j
|j|d��yr]r^rQs   rr3zOMemoryProtectionTest.test_set_maximum_amplification__amplification_not_exceededZr_rNr`r<rrrcrc(s(��M�
D�F�:�:�:�:rrc�__main__)1r:r#r/�platformr>r~r7r��unittestrD�iorr�r�test.supportrr�xml.parsersr�xml.parsers.expatrr	r
r�TestCaser
rTr>r�r�r�r*rOrfrrr�r�r�r�r�r��ABCr��skipIfr�rFrcr9�mainr<rr�<module>rxs����	��	�
�������1��$�9�9�%G�x�(�(�%G�P��6|;��!�!�|;�| 3�X�.�.� 3�F!/�H�%�%�!/�H\=�X�&�&�\=�@6+�8�,�,�6+�t%�8�$�$�%�>J�H�%�%�J�&x$��*�*�x$�t#�X�.�.�#�$$��*�*�$�$L�x�(�(�L�"1>�h�'�'�1>�h!�x�0�0�!�H3+�(�+�+�3+�lB8�s�w�w�B8�J�����#�#�i�/�1J�K�6:�6��8I�8I�6:�L�6:�r�����#�#�i�/�1J�K�9:�3�X�5F�5F�9:�L�9:�x�z���H�M�M�O�r