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_htmlparser.cpython-312.opt-2.pyc

�

�#�j���r�	ddlZddlZddlZddlmZddlmZdZedzZ	Gd�dejj�ZGd�d	e�Z
Gd
�de�ZGd�d
e�ZGd�dej �ZGd�de�ZGd�de�ZGd�dej �Zedk(rej,�yy)�N)�patch)�supportuo<!-- not a comment --><not a='start tag'><![CDATA[not a cdata]]><!not a bogus comment></not a bogus comment>☃z&amp;&#9786;c�Z�eZdZdd�d�Zd�Zd�Zd�Zd�Zd�Zd	�Z	d
�Z
d�Zd�Zd
�Z
d�Zy)�EventCollectorF��	autocdatac���||_g|_|jj|_tjj
j|g|��i|��|r|jd�yy)NF)r�events�append�html�parser�
HTMLParser�__init__�_set_support_cdata)�selfr�args�kws    �;/opt/alt/python312/lib64/python3.12/test/test_htmlparser.pyrzEventCollector.__init__sY��"�������k�k�(�(��������'�'��:�t�:�r�:���#�#�E�*��c��g}d}|jD]<}|d}||cxk(rdk(rnnd|dd|dzf|d<n|j|�|}�>||_|S)Nr�data����)r
r)r�L�prevtype�event�types     r�
get_eventszEventCollector.get_events!so��
�����[�[�E���8�D��x�)�6�)���2��q��E�!�H�!4�5��"��������H�
!�����rc�t�|jd||f�|jr|dk(r|jd�yyy)N�starttag�svgT�rrr�r�tag�attrss   r�handle_starttagzEventCollector.handle_starttag2s7�����Z��e�,�-��>�>�c�U�l��#�#�D�)�+�>rc�,�|jd||f�y)N�startendtag�rr#s   r�handle_startendtagz!EventCollector.handle_startendtag7s�����]�C��/�0rc�r�|jd|f�|jr|dk(r|jd�yyy)N�endtagr!Fr")rr$s  r�
handle_endtagzEventCollector.handle_endtag:s4�����X�s�O�$��>�>�c�U�l��#�#�E�*�+�>rc�*�|jd|f�y)N�commentr)�rrs  r�handle_commentzEventCollector.handle_commentA������Y��%�&rc�*�|jd|f�y)N�charrefr)r0s  r�handle_charrefzEventCollector.handle_charrefDr2rc�*�|jd|f�y)Nrr)r0s  r�handle_datazEventCollector.handle_dataG������V�T�N�#rc�*�|jd|f�y)N�declr)r0s  r�handle_declzEventCollector.handle_declJr8rc�*�|jd|f�y)N�	entityrefr)r0s  r�handle_entityrefzEventCollector.handle_entityrefMs�����[�$�'�(rc�*�|jd|f�y)N�pir)r0s  r�	handle_pizEventCollector.handle_piPs�����T�4�L�!rc�*�|jd|f�y)N�unknown declr))rr:s  r�unknown_declzEventCollector.unknown_declSs�����^�T�*�+rN)�__name__�
__module__�__qualname__rrr&r*r-r1r5r7r;r>rArD�rrrrsA��(-�+�
�"*�
1�+�'�'�$�$�)�"�,rrc��eZdZd�Zy)�EventCollectorExtrac�t�tj|||�|jd|j�f�y)N�
starttag_text)rr&r�get_starttag_textr#s   rr&z#EventCollectorExtra.handle_starttagYs.���&�&�t�S�%�8����_�d�&<�&<�&>�?�@rN)rErFrGr&rHrrrJrJWs��ArrJc��eZdZd�Zd�Zy)�EventCollectorCharrefsc�&�|jd�y�Nz6This should never be called with convert_charrefs=True��failr0s  rr5z%EventCollectorCharrefs.handle_charref`����	�	�J�Krc�&�|jd�yrQrRr0s  rr>z'EventCollectorCharrefs.handle_entityrefcrTrN)rErFrGr5r>rHrrrOrO^s��L�LrrOc��eZdZd�Zy)�EventCollectorNoNormalizec��|jS�N)r
�rs rrz$EventCollectorNoNormalize.get_eventsjs���{�{�rN)rErFrGrrHrrrWrWis��rrWc� �eZdZd�Zdd�Zd�Zy)�TestCaseBasec��td��S�NF��convert_charrefs)rrZs r�
get_collectorzTestCaseBase.get_collectorps
���u�5�5rNc�F�|�|j�}|}|D]}|j|��|j�|j�}||k7rP|j	dt|�zdzt
j|�zdzt
j|�z�yy)Nz6received events did not match expected events
Source:
z
Expected:
z
Received:
)ra�feed�closerrS�repr�pprint�pformat)r�source�expected_events�	collectorr
�sr
s       r�
_run_checkzTestCaseBase._run_checkss������*�*�,�I����A��K�K��N�������"�"�$���_�$��I�I�$�&*�6�l�3�%�&�(.����(G�H�&�&�)/���v�(>�?�
@�%rc�>�|j||td���yr^)rlrJ)rrhr
s   r�_run_check_extrazTestCaseBase._run_check_extra�s�������+�U�C�	ErrY)rErFrGrarlrnrHrrr\r\ns��6�@�Err\c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zej d
gd��d��Zej d
gd��d��Zej dddg�d��Zej dgd��d��Zd�Zd�Zej dgd��d��Zej dgd��d��Zej dgd��d��Zej d gd!��d"��Zej d#gd$��d%��Zej d#gd&��d'��Zd(�Zd)�Zd*�Zd+�Z d,�Z!d-�Z"d.�Z#d/�Z$d0�Z%d1�Z&d2�Z'd3�Z(d4�Z)d5�Z*d6�Z+ej d
gd7��d8��Z,d9�Z-d:�Z.ej d
gd;��d<��Z/d=�Z0d>�Z1ejdd?�d@��Z3ejdd?�dA��Z4yB)C�HTMLParserTestCasec�P�|jddg�|jddg�y)Nz<?processing instruction>)r@zprocessing instructionz<?processing instruction ?>)r@zprocessing instruction ?�rlrZs r� test_processing_instruction_onlyz3HTMLParserTestCase.test_processing_instruction_only�s2�����3�,�6�	�	
���5�.�8�	rc�Z�|jddddddgfddddddd	d
dgfdd
dddddg�y)Nz�
<!DOCTYPE html PUBLIC 'foo'>
<HTML>&entity;&#32;
<!--comment1a
-></foo><bar>&lt;<?pi?></foo<bar
comment1b-->
<Img sRc='Bar' isMAP>sample
text
&#x201C;
<!--comment2a-- --comment2b-->
</Html>
�r�
)r:zDOCTYPE html PUBLIC 'foo'r r)r=�entity)r4�32)r/z4comment1a
-></foo><bar>&lt;<?pi?></foo<bar
comment1b�img)�src�Bar)�ismapN)rzsample
text
)r4�x201C)r/zcomment2a-- --comment2b�r,rrrrZs r�test_simple_htmlz#HTMLParserTestCase.test_simple_html�s`�������)���������I������9�:����*����#�	rc�f�|jdddgfddg�|jdgddgfddg�y)	Nz
<p>&#bad;</p>r �p)rz&#bad;�r,r�z<div>&#bad;</div>�div�r,r�rrrZs r�test_malformatted_charrefz,HTMLParserTestCase.test_malformatted_charref�sN������
��b�!���*
�	�	
���,�-�
���#���0
�	rc�,�|jdddg�y)Nz&entityref foo)r=r=)rz foorrrZs r�test_unclosed_entityrefz*HTMLParserTestCase.test_unclosed_entityref�s�����(�&��+�	rc�<�|jdddgfddgfddg�y)Nz<a><b></a></b>r �a�b�r,r��r,r�rrrZs r�test_bad_nestingz#HTMLParserTestCase.test_bad_nesting�s2��	
���(�
��b�!�
��b�!���	+�	rc�*�|jddg�y)N�#this text & contains & ampersands &)rr�rrrZs r�test_bare_ampersandsz'HTMLParserTestCase.test_bare_ampersands�s�����=�;�@�	rc�*�|jddg�y)N�.this < text > contains < bare>pointy< brackets)rr�rrrZs r�test_bare_pointy_bracketsz,HTMLParserTestCase.test_bare_pointy_brackets�s�����H�F�K�	rc�`�|jddddgfg�|jddddgfg�y)N�	<a b='<'>r r��r��<�	<a b='>'>�r��>rrrZs r�test_starttag_end_boundaryz-HTMLParserTestCase.test_starttag_end_boundary�s6������:�s�Z�L�*I�)J�K�����:�s�Z�L�*I�)J�Krc��dddgfg}|jdg|�|jddg|�|jddg|�|jd	d
g|�|jddg|�|jd
dg|�dddgfg}|jdg|�|jddg|�|jddg|�|jd	dg|�|jddg|�|jddg|�dg}|jddg|�|jddg|�|jddg|�|jddg|�|jdd g|�|jd!d"g|�|jd#d$g|�|jd%d&g|�|jd'd(g|�|jd)dg|�|jddg|�y)*Nr r�r�r��<a zb='<'>z<a bz='<'>z<a b=z'<'>z<a b='<�'>z<a b='<'r�r�r�zb='>'>z='>'>z'>'>z<a b='>z<a b='>')r/�abc�z
<!--abc-->r�z	!--abc-->�<!z--abc-->�<!-z-abc-->�<!--zabc-->z<!--azbc-->z<!--abzc-->z<!--abc�-->z<!--abc-z->z	<!--abc--rr�r�outputs  r�test_buffer_artefactsz(HTMLParserTestCase.test_buffer_artefacts�s����s�Z�L�1�2������
�v�.������)�6�2������)�6�2�����&�)�6�2�����D�)�6�2�����S�)�6�2��s�Z�L�1�2������
�v�.������)�6�2������)�6�2�����&�)�6�2�����D�)�6�2�����S�)�6�2�$�%������\�*�F�3�����k�*�F�3�����z�*�F�3�����	�*�F�3������*�F�3�����'�*�F�3�����6�*�F�3�����E�*�F�3�����T�*�F�3�����c�*�F�3�����r�*�F�3rc�P�gd�}|D]}|jd|zdd|zfg��y)N)
�HTMLzOHTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"z[HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"zbhtml PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"zfhtml PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"zYmath PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd"z�html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd"zWsvg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"z'html PUBLIC "-//IETF//DTD HTML 2.0//EN"z,html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"z
<!DOCTYPE %s>r:�DOCTYPE rr)r�dtds�dtds   r�test_valid_doctypesz&HTMLParserTestCase.test_valid_doctypes�s9��@��$�C��O�O�O�c�1�$�j�3�&6�7�8�
:�rc��|jdddgfg�|jdddgfdg�|jdddgfddd	gfdg�y)
Nz<p/>r(r�z<p></p>r r�z<p><img src='foo' /></p>ry)rz�foorrrZs r�test_startendtagz#HTMLParserTestCase.test_startendtagsq������
�C��$�!�	�	
���	�
��b�!��$�	�	
���2�
��b�!�
�E�N�#3�4��5�	rc�>�d}|j|ddddgfd|fg�y)Nz <foo:bar   
   one="1"	two=2   >r zfoo:bar)�one�1)�two�2rL)rn)rrks  r�test_get_starttag_textz)HTMLParserTestCase.test_get_starttag_text s3��4�����a�
��\�<�$@�A�
�a� �""�	#r�content)
z*<!-- not a comment --> &not-an-entity-ref;�<not a='start tag'>z<a href="" /> <p> <span></span>zfoo = "</scr" + "ipt>";zfoo = "</SCRIPT" + ">";zfoo = <
/script> z*<!-- document.write("</scr" + "ipt>"); -->z�
//<![CDATA[
document.write('<s'+'cript type="text/javascript" src="http://www.example.org/r='+new Date().getTime()+'"><\/s'+'cript>');
//]]>z 
<!-- //
var foo = 3.14;
// -->
u<!-- ☃ -->c�D�d|�d�}|j|ddgfd|fdg�y)N�<script>�	</script>r �scriptr�r,r�rr�rr�rks   r�test_script_contentz&HTMLParserTestCase.test_script_content&s:�� �w�i�y�)������
��2�&�
�W�� �
�	r)z0a::before { content: "<!-- not a comment -->"; }z-a::before { content: "&not-an-entity-ref;"; }z-a::before { content: "<not a='start tag'>"; }ua::before { content: "☃"; }c�D�d|�d�}|j|ddgfd|fdg�y)Nz<style>z</style>r �styler�r,r�rrr�s   r�test_style_contentz%HTMLParserTestCase.test_style_content=s9���g�Y�h�'������Z��"�5�#�W�-�/�1�	2rr$�title�textareac��d|�dt�d|�d�}|j|d|gfdtfd|fg�d|�d|�d�}|j|d|gfdd|fg�y)	Nr�r��</r rr,z>&amp;</�r=�amp)�
SAMPLE_RCDATArl�rr$rhs   r�test_rcdata_contentz&HTMLParserTestCase.test_rcdata_contentIs����S�E��=�/��C�5��2������
��b�!�
�]�#�
�s�O�!
�	�
�S�E��#��a�(������
��b�!� �
�s�O�!
�	r)r��xmp�iframe�noembed�noframesr�c�d�d|�dt�d|�d�}|j|d|gfdtfd|fg�y)Nr�r�r�r rr,��SAMPLE_RAWTEXTrlr�s   r�test_rawtext_contentz'HTMLParserTestCase.test_rawtext_contentXsK���S�E��>�*�"�S�E��3������
��b�!�
�^�$�
�s�O�!
�	rc
��dt�d�}|j|ddgfddddgfdd	d
ddd
dg
�|j|ddgfdtfdgtd����y)Nz
<noscript>z</noscript>r �noscript)r/z not a comment �not)r�z	start tag)rCzCDATA[not a cdata)r/znot a bogus comment)r,r�)ru☃r�)r4�9786)r,r�rT)�	scripting�rj)r�rlr)rrhs  r�test_noscript_contentz(HTMLParserTestCase.test_noscript_contentbs����n�-�[�9������
��R�(�*�
��!3� 4�5�1�.��� ��"�!
�	�	
����
��R�(�
�^�$�"�!
�$�d�3�		�	5rc�R�tdz}d|��}|j|ddgfd|fg�y)Nz</plaintext>z<plaintext>r �	plaintextrr�)rr�rhs   r�test_plaintext_contentz)HTMLParserTestCase.test_plaintext_contentxs=�� �>�1���w�i�(������
��b�)�
�W��!
�	rr,)r��SCRIPTzscript zscript
zscript/zscript foo=barzscript foo=">"c�f�d}d|�d|�d�}|j|ddgfd|fdgtd	�
���y)Nz�<!-- not a comment --> &not-an-entity-ref;
                  <a href="" /> </p><p> <span></span></style>
                  '</script' + '>'�<ScrIPt>r�r�r r�rr�Fr_r��rlrW)rr,r�rks    r�test_script_closing_tagz*HTMLParserTestCase.test_script_closing_tag�sV��
&���w�i�r�&���+������Z��2�6�#�W�-�0�2�#<�U�"S�	�	Ur)	r�r�r�r�r�r�r�r�r�c	���||j�|�d�|�d�|�d�|�d�|�d�fD]G}d}d|j��d|�d	|�d�}|j|d
|gfd|fd|fgtd
d�����Iy)N� rv�/z foo=barz foo=">"z!<!-- not a comment --><i>Spam</i>r�r�r�r rr,FT�r`r�r�)�upperrlrW)rr$r,r�rks     r�test_closing_tagz#HTMLParserTestCase.test_closing_tag�s���
�C�I�I�K�C�5���s�e�2�J���a�y�S�E��"2�s�e�8�4D�F�F�9�G��C�I�I�K�=��'��"�V�H�A�6�A��O�O�A��S�"�%���!��3�� �3�E�UY�Z�	
�
\�	Frc��d|�d|�d|�d|�d|�d�}d|�d|�d	|�d�}|j|d
|gfd|fd|fgtd
d����y)Nz< /z></ z></zx></z></u >r�r�r�r rr,FTr�r��rlr)rr$r�rhs    r�test_invalid_closing_tagz+HTMLParserTestCase.test_invalid_closing_tag�s����#��������������U�	
�	��S�E��7�)�2�c�U�!�,������
��b�!�
�W��
�s�O�!
�$�U�d�K�		�	Mrz
tag,endtag)
)r�utıtle)r�uſtyle)r�uſtyle)r�ustyle)r�uıframe)r�u	noframeſ)r�u	noſcript)r�u	noscrıpt)r�uſcript)r�uscrıptc���d|�d�}d|�d|��}|j|d|gfd|fgtdd���	�d|�d|�d
|�d�}|j|d|gfd|fd|fgtdd���	�y)Nz<br></r�r�r rFTr�r�r�r,r�)rr$r,r�rhs     r�!test_invalid_nonascii_closing_tagz4HTMLParserTestCase.test_invalid_nonascii_closing_tag�s����6�(�!�$���S�E��7�)�$������
��b�!�
�W��!
�$�U�d�K�	�	M��S�E��7�)�2�c�U�!�,������
��b�!�
�W��
�s�O�!
�$�U�d�K�		�	Mrztail,end)�r�F�r�F�r�F)z</sF)z</scriptF)z	</script T)z</script foo=barT)z</script foo=">Tc�n�d}d|�|��}|j|ddgfd|r|n||zfgtd����y)	Nza = 123r�r r�rFr_r�r�)r�tail�endr�rks     r�test_eof_in_scriptz%HTMLParserTestCase.test_eof_in_script�sT�����w�i��v�&������Z��2�6�#��W��4��H�J�";�U�"S�	�	Ur)r�r�r�)z</tF)z</titleF)z</title T)z</title foo=barT)z</title foo=">Tc	���d|��}|j|ddgfdd|rdn|zfgtd���	�|j|ddgfd
ddd|rdn|zfgtd
���	�y)Nz<TitLe>Egg &amp; Spamr r�rz
Egg & Spamr�Tr_r�)rzEgg r�z SpamFr�)rr�r�rks    r�test_eof_in_titlez$HTMLParserTestCase.test_eof_in_title�s���$�D�6�*������Z��"�5�#�\�3�R�D�%I�J�L�";�T�"R�	�	T�	
����Z��"�5�,�0�#�W�c��t�%D�E�G�#<�U�"S�		�	Urc�4�d}gd�}|j||�y)Na.<!-- I'm a valid comment --><!--me too!--><!------><!-----><!----><!---><!--><!----I have many hyphens----><!-- I have a > in the middle --><!-- and I have -- in the middle! --><!--incorrectly-closed-comment--!><!----!><!----!--><!---- >--><!---!>--><!--!>--><!-- <!-- nested --> --><!--<!--><!--<!--!>))r/z I'm a valid comment )r/zme too!�r/z--�r/�-�r/r�r�r�)r/z--I have many hyphens--)r/z I have a > in the middle )r/z and I have -- in the middle! )r/zincorrectly-closed-commentr�)r/z--!)r/z-- >�r/z-!>)r/z!>)r/z
 <!-- nested )rz -->�r/r�r�rr�rr�expecteds   r�
test_commentsz HTMLParserTestCase.test_comments�s ����,
��(	
����h�'rc�4�d}gd�}|j||�y)Nzs<!--[if IE & !(lte IE 8)]>aren't<![endif]--><!--[if IE 8]>condcoms<![endif]--><!--[if lte IE 7]>pretty?<![endif]-->))r/z%[if IE & !(lte IE 8)]>aren't<![endif])r/zf IE 8]>condcoms<![endif])r/z[if lte IE 7]>pretty?<![endif]rrr�s   r�
test_condcomsz HTMLParserTestCase.test_condcomss!��8��C��	
����h�'rc
��d�}|j|�j�gd�}dddgfddg}|D]*}|jdj|�||��	��,d
ddgd�fd
dd
g}|D]*}|jdj|�||��	��,|D]U}d
j	|gdz�}d
ddgfd|fdd
ddgfd|fdd
g	}|jdj||�||��	��Wd}tdt
|��D]$}|j|d|d|d|fg|��	��&|jddg|��	�y)Nc��t�SrY)rOrHrr�<lambda>z:HTMLParserTestCase.test_convert_charrefs.<locals>.<lambda>(s��2�4r)z&quot;z&#34;z&#x22;z&quotz&#34z&#x22r r�)�hrefzfoo"zar)rza"zr�z<a href="foo{0}zar">a{0}z</a>r�)r�"))�xr)�yz"X)�zzX"z*{0}<a x="{0}" y="{0}X" z="X{0}">{0}</a>{0}�X�r�rr�r�r�z/{1}<script>{0}</script>{1}<style>{0}</style>{1}z&quo &# &#xr�no charrefs here)rr)�
assertTruer`rl�format�join�range�len)rrj�charrefsrr4�textrr	s        r�test_convert_charrefsz(HTMLParserTestCase.test_convert_charrefs&s���4�	����	��4�4�5�J����':�&;�<�#�_�6���G��O�O�;�B�B�7�K�$�	��
�
=� �"���&L�M�!�?�M�C�� �G��O�O�)�)/����$�	��
�
=� �
 �G��8�8�W�I�a�K�(�D�%�#�X�r�2�V�T�N�,�m�#�W�b�1�F�D�>�+�]�	<�H�

�O�O�4�4:�F�4��4I�$�	��
�
=� ����q�#�d�)�$�A��O�O�D��!�H���R�a��'9�&:�&/�k�
�
3�%�	
���*�-I�,J�"+�+�	�	/rc
�F�|jddddgfdddddd	gfd
dg�y)NzF<html <html>te>>xt&a<<bc</a></html>
<img src="URL><//img></html</html>r r)z<htmlN)rzte>>xt)r=r��rr�zbc<)r�Nr~rurrrZs r�test_tolerant_parsingz(HTMLParserTestCase.test_tolerant_parsingOs@�����=�'��/�1B�C�.�.�)�'���
�>�.�*�?,�	-rc���|jddg�|jddg�|jddg�|jddg�|jd	g�|jd
dg�|jdd
g�|jddg�|jdg�|jddg�|jddg�|jdddgfg�|jddg�|jddg�|jdg�|jdg�|jdg�|jdg�|jdg�|jd dd!gfg�|jd"dd#gfg�|jd$d%d#gfg�|jd&dd#gfg�|jd'd%d#gfg�|jd(d)g�y)*Nr�r�<>)rr�< >)rr�< )rrz</>�<$>)rrz</$>)r/�$r�)rr�z</az</ a>)r/z az</ az<a<a>r �a<az</a<a>)r,r r�r�z<az<a foo='bar'z<a foo='barz
<a foo='>'z	<a foo='>z<a$>za$z<a$b>�a$bz<a$b/>r(z<a$b  >z<a$b  />z</a$b>)r,r!rrrZs r�test_starttag_junk_charsz+HTMLParserTestCase.test_starttag_junk_charsZs�������m�_�-�����~�.�/������0�1�����~�.�/�����r�"������0�1�����!1� 2�3�����~�.�/�����r�"�����"3�!4�5�����!2� 3�4�����:�u�b�"9�!:�;�����#4�"5�6������/�0�����b�!������+����
�r�*�����b�)�����R�(�����*�d�B�!7� 8�9�����:�u�b�"9�!:�;�����M�5�"�#=�">�?����	�Z���$;�#<�=����
�m�U�B�%?�$@�A�����#4�"5�6rc
��|jddddgfg�d}ddgd�fg}|j||�d}ddgd	�fd
dgd	�fg}|j||�d}d
dgfd
dgfd
dgfd
dgfddgfddgfddgfddgfg}|j||�y)
Nz<a foo="var"/>r(r�)r��varzj<img width=902 height=250px src="/sites/default/files/images/homepage/foo.jpg" /*what am I doing here*/ />ry))�width�902)�height�250px)rzz,/sites/default/files/images/homepage/foo.jpg)z*whatN)�amN)�iN)�doingN)zhere*Nz9<a / /foo/ / /=/ / /bar/ / /><a / /foo/ / /=/ / /bar/ / >))r�N)�=N)�barNr zD<meta><meta / ><meta // ><meta / / ><meta/><meta /><meta //><meta//>�metarrr�s   r�test_slashes_in_starttagz+HTMLParserTestCase.test_slashes_in_starttagus������(�M�3��@P�+Q�*R�S�.��
�5�
/�
���	
����h�'�/���C�!L�M�
��I�J�
��	
����h�'�3�����$�z�6�2�&>�
���$�z�6�2�&>�
�F�B�'�-���)D�
�F�B�'�-���)D�	
��	
����h�'rc�P�|jddg�|jddg�y)Nz</a/>r�z</a foo="var"/>rrrZs r�test_slashes_in_endtagz)HTMLParserTestCase.test_slashes_in_endtag�s%������/�!2�3����)�O�+<�=rc�*�|jddg�y)Nz<!DOCTYPE foo $ >)r:zDOCTYPE foo $ rrrZs r�test_declaration_junk_charsz.HTMLParserTestCase.test_declaration_junk_chars�s�����+�.H�-I�Jrc�*�|jddg�y)Nz"<!spacer type="block" height="25">)r/zspacer type="block" height="25"rrrZs r�test_illegal_declarationsz,HTMLParserTestCase.test_illegal_declarations�s�����<�G�H�	Jrc�r�d}ddgfdddgfdddgfdddgfdddgfdddgfddgfg}|j||�y)Nzn<br></label</p><br></div end tmAd-leaderBoard><br></<h4><br></li class="unit"><br></li
						</ul><br></><br>r �br)r,zlabel<r�)r/z<h4)r,�lirrr�s   r�test_invalid_end_tagsz(HTMLParserTestCase.test_invalid_end_tags�sv��M����r�*�(���r�*�%���r�*�&���r�*�$���r�*�$���r�*���r�*�#,��$	
����h�'rc�>�d}ddgfdddg}|j||�y)Nz(<b>This</b attr=">"> confuses the parserr r�)r�Thisr�)rz confuses the parserrrr�s   r�test_broken_invalid_end_tagz.HTMLParserTestCase.test_broken_invalid_end_tag�s1��9����b�)�$�#�4�6��	
����h�'rc��d}dddgfddgfddddgfd	d
ddd
gfdddgfddddg}|j||�d}ddgd�fddgfddddgfd	d
g}|j||�y)Nz[<div style=""    ><b>The <a href="some_url">rain</a> <br /> in <span>Spain</span></b></div>r r��r�r�r�)rzThe r�)r�some_url)r�rainr��rr�r(r7)rz in �span)r�Spain�r,rBr�r�z><div style="", foo = "bar" ><b>The <a href="some_url">rain</a>)r>��,N�r�r-rrr�s   r�$test_correct_detection_of_start_tagsz7HTMLParserTestCase.test_correct_detection_of_start_tags�s���9������0�
��b�!��
��3�4�5����
�D�"�%��
���$�����
�� 	
����h�'�O��
�� L�M�
��b�!��
��3�4�5���

��	
����h�'rc�d�ddgfddgfdgd�fddd	gfg}|D]\}}|j||��y)
N�a&)rrJza&b)r�abza&b )�rr��r=r�rAza&b;rLrMrr�rrrrs    r�test_EOF_in_charrefz&HTMLParserTestCase.test_EOF_in_charref�sV���N�#�$�
�^�$�%�
�G�H�
�m�%7�8�9�	
��#�N�D�(��O�O�D�(�+�#rc��ddgfddgfddgfddgfddgfd	dgfd
dgfdd
gfddgfddgfddgfddgfddgfddgfg}|D]\}}|j||��y)Nr�r�z<!---z<!----z<!-----r�z<!------r�z<!----!z<!---!)r/z-!z<!---!>r�z<!--foo)r/r�z<!--foo-z	<!--foo--z
<!--foo--!z<!--<!--r�z	<!--<!--!rrrNs    r�test_eof_in_commentsz'HTMLParserTestCase.test_eof_in_comments�s���
�o�&�'�
��'�(�
��(�)�
�)�*�+�
�+�,�-�
��)�*�
�)�*�+�
�+�,�-�
�+�,�-�
�,�-�.�
�-�.�/�
�.�/�0�
�+�,�-�
�,�-�.�
�� #�N�D�(��O�O�D�(�+�#rc��ddgfddgfddgfddgfd	d
gfddgfd
dgfddgfddgfddgfg
}|D]\}}|j||��y)Nr�r�r�r�z<![)r/�[z	<!DOCTYPE)r:�DOCTYPEz
<!DOCTYPE )r:r�z<!DOCTYPE html)r:zDOCTYPE htmlz<!DOCTYPE html )r:z
DOCTYPE html z<!DOCTYPE html PUBLIC)r:zDOCTYPE html PUBLICz<!DOCTYPE html PUBLIC "foo)r:zDOCTYPE html PUBLIC "fooz6<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "foo)r:z4DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "foorrrNs    r�test_eof_in_declarationsz+HTMLParserTestCase.test_eof_in_declarationss���
�O�$�%�
�%�&�'�
�%�&�'�
�.�/�0�
�0�1�2�
� 8�9�:�
�!:� ;�<�
$�'F�&G�H�
)�,P�+Q�R�
E�N�
O�
Q�
��#�N�D�(��O�O�D�(�+�#r)r�r	zx]zx]]c���|jd|zdd|zfg�|jd|zdd|zfgtd����|jd	|zd
dgfd
dd
gfdd|zfg�y)N�	<![CDATA[rC�CDATA[r/z[CDATA[Trr��<svg><text y="100"><![CDATA[r r!r�r
�100r�)rr�s  r�test_eof_in_cdataz$HTMLParserTestCase.test_eof_in_cdatas�������g�-�(�(�W�*<�=�>�	@�����g�-�#�Y��%8�9�:�"0�4�"@�	�	B�	
���6��@�$�e�R�0�$�f�|�n�=�(�(�W�*<�=�?�	@rc�4�d}gd�}|j||�y)Nz�<!ELEMENT br EMPTY><! not really a comment ><! not a comment either --><! -- close enough --><!><!<-- this was an empty comment><!!! another bogus comment !!!>))r/zELEMENT br EMPTY)r/z not really a comment )r/z not a comment either --)r/z -- close enough --r�)r/z<-- this was an empty comment)r/z!! another bogus comment !!!rrr�s   r�test_bogus_commentsz&HTMLParserTestCase.test_bogus_comments!s ��2��
��	
����h�'rc�p�d}dddddddgfdd	dd
dgfddd
dgfdddddd
dgfdg}|j||�y)Nz�<![if !(IE)]>broken condcom<![endif]><![if ! IE]><link href="favicon.tiff"/><![endif]><![if !IE 6]><img src="firefox.png" /><![endif]><![if !ie 6]><b>foo</b><![endif]><![if (!IE)|(lt IE 9)]><img src="mammoth.bmp" /><![endif]>)rCzif !(IE))rzbroken condcom)rC�endif)rCzif ! IEr(�link)rzfavicon.tiff)rCzif !IE 6ry)rzzfirefox.png)rCzif !ie 6r r�)rr�r�)rCzif (!IE)|(lt IE 9))rzzmammoth.bmprrr�s   r�test_broken_condcomsz'HTMLParserTestCase.test_broken_condcoms3s~��M��
)�&�%�'�
�F�%=�$>�?�%�(�
�E�$:�#;�<�%�(�
��b�!���%�2�
�E�$:�#;�<�%�#
��(	
����h�'r)zjust some plain textz<!-- not a comment -->z&not-an-entity-ref;r�r�z[[I have many brackets]]zI have a > in the middlezI have a ]] in the middlez] ]>z]] >zN
    if (a < b && a > b) {
        printf("[<marquee>How?</marquee>]");
    }
c��d|�d�}ddgfdddgfdd|zfd	d
g}|j||�|j||td���
�y)NrYz]]></text></svg>r r!rrZrCrX�r,r�r,r!Trr�r�)rr�rrs    r�test_cdata_section_contentz-HTMLParserTestCase.test_cdata_section_contentUsj��&.�g�Y�6F�G��
���#�
��,��0�
�X��/�0���
��	
����h�'�����h�.�4�2P��Qrc	�h�d}ddddgfdddgfdd	d
ddg	}|j||td���
�y)Nzb<![CDATA[foo<br>bar]]><svg><text y="100"><![CDATA[foo<br>bar]]></text></svg><![CDATA[foo<br>bar]]>)r/z
[CDATA[foo<br)rzbar]]>r r!rrZ)rCzCDATA[foo<br>barrdreTrr�r�r�s   r�test_cdata_sectionz%HTMLParserTestCase.test_cdata_sectionssV��)��
)��
���#�
��,��0�0���(��

��	
����h�.�4�2P��Qrc��td��}|jd�|j|j�dddgfddd	g�y)
NTr_zfoo <a>link</a> bar &amp; baz)rzfoo r r�)rrar�)rz
 bar & baz)rrc�assertEqualr)rr
s  r�"test_convert_charrefs_dropped_textz5HTMLParserTestCase.test_convert_charrefs_dropped_text�sO�� ��6�����3�4��������
�
�C��4�6F�
�4�
6�	
r�cpuc���d�}d}|d|z�|d|z�|d|z�|d|z�|d|z�|d|z�|d	|z�|d
|z�|d|z�|d|z�y)
Nc��tjj�}|j|�|j	�yrY)rr
rrcrd)rhr
s  r�checkzBHTMLParserTestCase.test_eof_no_quadratic_complexity.<locals>.check�s)���[�[�+�+�-�F��K�K����L�L�Nri��r�z<a a=z8</a </a </a </a </a </a </a </a </a </a </a </a </a </a zB</a a=</a a=</a a=</a a=</a a=</a a=</a a=</a a=</a a=</a a=</a a=z<!--<!--<!--<!--zx<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!<!z&<?<?<?<?<?<?<?<?<?<?<?<?<?<?<?<?<?<?<?z-</$</$</$</$</$</$</$</$</$</$</$</$</$</$</$zQ<![CDATA[<![CDATA[<![CDATA[<![CDATA[<![CDATA[<![CDATA[<![CDATA[<![CDATA[<![CDATA[a;<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctype<!doctyperH)rro�ns   r� test_eof_no_quadratic_complexityz3HTMLParserTestCase.test_eof_no_quadratic_complexity�s���	�
��
�e�a�i��
�g��k��
�k�A�o��
�m�a�� �
�j�1�n��
�i�!�m��
�i�!�m��
�j�1�n��
�o��!�"�
���"�#rc��d�}d}|d|d�|d|d�|d|d�|d|d	�|d
|d�|d|d
�y)Nc���tjj�}|j|�t	d�D]}|j|��|j|�|j�y)Ni@
)rr
rrcrrd)�prefix�chunk�suffixr
�_s     rrozJHTMLParserTestCase.test_incremental_no_quadratic_complexity.<locals>.check�sO���[�[�+�+�-�F��K�K����7�^�����E�"�$��K�K����L�L�Nr�@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar�r�z<?r�z
<!doctype rWz]]>z	<a href='r�r�r�rH)rrorus   r�(test_incremental_no_quadratic_complexityz;HTMLParserTestCase.test_incremental_no_quadratic_complexity�sV��
	���
�f�e�U�#�
�d�E�3��
�l�E�3�'�
�k�5�%�(�
�k�5�$�'�
�j�%��-rN)5rErFrGrsrr�r�r�r�r�r�r�r�r�r�r�subTestsr�r�r�r�r�r�r�r�r�r�r�r�rrrrr"r/r1r3r5r9r<rHrOrQrUr\r^rbrfrhrk�requires_resourcerqryrHrrrprp�s�����@��	��
�
L�4�<:�0�#��W���i�"
������W���i�"
��2�
�2��W���e�g�z�2�3��4���W���e�G�I��I��5�,��W���h�!P�Q�
U�Q�
U��W���e���	\�	�	\��W���e���
M�	�
M��W���l�%��M��M��W���j�	#�	�U�	�U��W���j�	#�	�	U�	�	U�+(�Z(�%/�R	-�7�6(�>>�K�J�(�4(�(�B,�,�(,�"�W���i�!7�8�	@�9�	@�(�$ (�D�W���i�"�� R�!� R�R�$

��W���u�%�$�&�$�&�W���u�%�.�&�.rrpc�r�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zy)�AttributesTestCasec���ddgd�fg}|jd|�|jddddgfg�|jddddgfg�|jd	dddgfg�|jd
dddgfg�|jdddd
gfg�|jddddgfg�|jddddgfg�|jddddgfg�|jddddgfg�y)Nr r�))r��v)�cr)�dr)�eNz<a b='v' c="v" d=v e>z<a foo==bar>)r�z=barz<a foo =bar>rGz<a foo	=bar>z<a foo=bar>)zfoor-u
<a foo =bar>)ufoo r-z<a foo= bar>z<a foo=	bar>z<a foo=bar>)r�zbaru
<a foo= bar>)r�u barrrr�s  r�test_attr_syntaxz#AttributesTestCase.test_attr_syntax�s���s�M�
N�
��	
���3�V�<�����*�c�O�;L�)M�(N�O�����*�c�N�;K�)L�(M�N�����:�s�^�<L�*M�)N�O�����:�s�=M�<N�*O�)P�Q����)�Z��?Q�>R�,S�+T�U�����*�c�N�;K�)L�(M�N�����:�s�^�<L�*M�)N�O�����:�s�=M�<N�*O�)P�Q����)�Z��?Q�>R�,S�+T�Urc� �|jdddgd�fg�|jdddddgfg�|jdddd	d
gfg�|jddddd
gfg�|jddddgfg�|jddddgfg�y)Nz'<a b='xxx
	xxx' c="yyy	
yyy" d='	xyz
'>r r�))r�zxxx
	xxx)r�zyyy	
yyy)r�z	xyz
z
<a b='' c="">)r�r�)r�r�z
<a b=	x c=
y>)r�r	)r�r
u<a b= c= >)r��)r�� z<e a=rgb(1,2,3)>r�)r�z
rgb(1,2,3)z<a href=mailto:xyz@example.com>)rzmailto:xyz@example.comrrrZs r�test_attr_valuesz#AttributesTestCase.test_attr_values�s������K�$�c�,>�?�@�	A�	
���+�$�c�I�y�+A�B�C�	E����)�$�c�J�
�+C�D�E�	G����)�$�c�K��+G�H�I�	K�	
���*�$�c�,?�+@�A�B�	D�	
���-��#� B�C�
D�E�	Grc��|jdddddgfg�|jddddd	gfg�|jd
dddd	gfg�y)Nu!<img src=/foo/bar.png alt=中文>r ry)rzz/foo/bar.png)�altu中文u+<a title='テスト' href='テスト.html'>r�)r�u	テスト)ruテスト.htmlu+<a title="テスト" href="テスト.html">rrrZs r�test_attr_nonasciiz%AttributesTestCase.test_attr_nonascii�s������5��%�"9�"9�";�<�
=�	>�	
���K��#� ?� C� E�F�
G�	H�	
���K��#� ?� C� E�F�
G�	Hrc�2�|jddddgfg�y)Nz!<a b='&amp;&gt;&lt;&quot;&apos;'>r r�)r�z&><"'rrrZs r�test_attr_entity_replacementz/AttributesTestCase.test_attr_entity_replacement�s!�����/��#��0�
1�2�	4rc�4�|jdddgd�fg�y)Nz<a a.b='v' c:d=v e-f=v>r r�))za.br)zc:dr)ze-frrrrZs r�test_attr_funky_namesz(AttributesTestCase.test_attr_funky_names�s �����%��#�I�
J�K�	Mrc�2�|jddddgfg�y)Nz0<html foo='&euro;&amp;&#97;&#x61;&unsupported;'>r r)r�u€&aa&unsupported;rrrZs r�test_entityrefs_in_attributesz0AttributesTestCase.test_entityrefs_in_attributes�s#�����>��&�#D�"E�
F�G�	Irc�F�|jddddgfdddgfdddgfg�y)	Nz<a $><b $=%><c \=/>r r�)rNr�)r�%r�)�\r�rrrZs r�test_attr_funky_names2z)AttributesTestCase.test_attr_funky_names2�s:�����"��#��}�
-��#�
�|�
,��#��}�
-�
/�	0rc��dD]P}|jd|zdddgfg�|jd|zdddgfg�|jd|zdddgfg��Ry)N)�&z&amp;z&#38;z&#x26;z
<a href="%s">r r�)rr�z
<a href='%s'>z<a href=%s>rr)rrws  r� test_entities_in_attribute_valuez3AttributesTestCase.test_entities_in_attribute_valuesu��7�F��O�O�O�f�4�(�#�
��?�@�
B��O�O�O�f�4�(�#�
��?�@�
B��O�O�M�F�2�(�#�
��?�@�
B�8rc�h�d}dddgfdddddgfddddd	gfd
ddddgfddg}|j||�y)
Nz�<a href=test'style='color:red;bad1'>test - bad1</a><a href=test'+style='color:red;ba2'>test - bad2</a><a href=test'&nbsp;style='color:red;bad3'>test - bad3</a><a href = test'&nbsp;style='color:red;bad4'  >test - bad4</a>r r�)rztest'style='color:red;bad1')rztest - bad1r�)rztest'+style='color:red;ba2')rztest - bad2)rutest' style='color:red;bad3')rztest - bad3)rutest' style='color:red;bad4')rztest - bad4rrr�s   r�test_malformed_attributesz,AttributesTestCase.test_malformed_attributessv��
L�	
���F�G�H�#��
��F�G�H�#��
��J�K�L�#��
��J�K�L�#��

��	
����h�'rc�x�|jdddgfddddgfdg�|jd	ddgfdddd
gfdg�y)Nz<x><y z=""o"" /></x>r r	r(r
)rr�)zo""N)r,r	z<x><y z="""" /></x>)z""NrrrZs r�"test_malformed_adjacent_attributesz5AttributesTestCase.test_malformed_adjacent_attributes&sd�����.�$�c�2�.�*�C�)�]�1K�L�+�-�	.�	
���-�$�c�2�.�*�C�)�\�1J�K�+�-�	.rc�d�|jdddddgfg�|jdddddgfg�y)	Nz<a width="100%"cellspacing=0>r r��r%z100%��cellspacing�0z<a id="foo"class="bar">)�idr���classr-rrrZs r�test_adjacent_attributesz+AttributesTestCase.test_adjacent_attributes2sT�����7�$�c�,�.A�B�D�E�	F�	
���1�$�c�(�/�:�<�=�	>rc�2�|jddddgfg�y)Nz<a v=>r r�)rr�rrrZs r�test_missing_attribute_valuez/AttributesTestCase.test_missing_attribute_value;s������$�c�I�;�7�8�	:rc�2�|jddddgfg�y)Nz-<a href=javascript:popup('/popup/help.html')>r r�)rz$javascript:popup('/popup/help.html')rrrZs r�test_javascript_attribute_valuez2AttributesTestCase.test_javascript_attribute_value?s)�����G�$�c�K�L�N�O�	Prc�6�|jddddgfddg�y)Nz-<a href='http://www.example.org/">;'>spam</a>r r�)rzhttp://www.example.org/">;)r�spamr�rrrZs r�test_end_tag_in_attribute_valuez2AttributesTestCase.test_end_tag_in_attribute_valueDs,�����H�$�c�B�C�E�)�?�<�	=rc��d}ddgfddddgfddgd�fdd	gfdd
dgfddd
gfddddgfdddgfdddddddgfdddgfddddg}|j||�y)Nz�<html><body bgcolor=d0ca90 text='181008'><table cellspacing=0 cellpadding=1 width=100% ><tr><td align=left><font size=-1>- <a href=/rabota/><span class=en> software-and-i</span></a>- <a href='/1/'><span class=en> library</span></a></table>r r�body)�bgcolor�d0ca90)r�181008�table)r�)�cellpaddingr�r��tr�td)�align�left�font)�sizez-1)rz- r�)rz/rabota/rB)r��en)rz software-and-irDr�)rz/1/)rz library)r,r�rrr�s   r�test_with_unquoted_attributesz0AttributesTestCase.test_with_unquoted_attributesKs���M�����$�
��"7�9K�!L�M�
��O�
Q�
��r�"�
�� 1�2�3�
��.�!1�2��Z��/C�.D�E�
��/�!2�3�5P����Z���.?�@�
��/�!2�3�5I���1D�
��	
����h�'rc��d}dddgfddddgfddddgfddgd	�fdddd
gfddddgfddd
dgfddddgfddddgfg	}|j||�y)Nz�<div class=bar,baz=asd><div class="bar",baz="asd"><div class=bar, baz=asd,><div class="bar", baz="asd",><div class="bar",><div class=,bar baz=,asd><div class=,"bar" baz=,"asd"><div ,class=bar ,baz=asd><div class,="bar" baz,="asd">r r�)r�zbar,baz=asdr�)z,baz�asd)r�zbar,)�bazzasd,)r�rE)r�r�rErE)r�z,bar)r�z,asd)r�z,"bar")r�z,"asd")z,classr-)zclass,r-)zbaz,r�rrr�s   r�test_comma_between_attributesz0AttributesTestCase.test_comma_between_attributescs���0����!9� ;�<�
��!1�?� C�D�
��!2�O� D�E�
��!>�
?�
��!1�;� ?�@�
��!2�O� D�E�
��!4�6G� H�I�
��!2�O� D�E�
��!2�O� D�E�
��	
����h�'rc�2�|jddddgfg�y)Nz<form action=bogus|&#()value>r �form)�actionzbogus|&#()valuerrrZs r�-test_weird_chars_in_unquoted_attribute_valuesz@AttributesTestCase.test_weird_chars_in_unquoted_attribute_valuess)�����7�'��!>� ?�A�:B�	CrN)rErFrGr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rHrrr}r}�s_��
V�G�&
H�4�
M�
I�0�B�(�0	.�>�:�P�
=�(�0(�8Crr}c�>�eZdZed�ed�d���Zy)�TestInheritancez_markupbase.ParserBase.__init__z_markupbase.ParserBase.resetc��td�5}t�|j�|j�ddd�y#1swYyxYw)Nz_markupbase.ParserBase)rr�assert_called_once)r�super_reset_method�super_init_method�parser_bases    r�test_base_class_methods_calledz.TestInheritance.test_base_class_methods_called�s9���+�
,�����0�0�2��1�1�3�-�
,�
,�s�+A�A	N)rErFrGrr�rHrrr�r��s(��
�,�-�
�)�*�4�+�.�4rr��__main__)�html.parserrrf�unittest�
unittest.mockr�testrr�r�r
rrrJrOrW�TestCaser\rpr}r�rE�mainrHrr�<module>r�s�����
����
����/��=,�T�[�[�+�+�=,�@A�.�A�L�^�L����
E�8�$�$�E�0q.��q.�hHC��HC�V4�h�'�'�4��z���H�M�M�O�r