403Webshell
Server IP : 35.80.110.71  /  Your IP : 216.73.216.221
Web Server : Apache/2.4.58 (Ubuntu)
System : Linux ip-172-31-21-44 6.17.0-1019-aws #19~24.04.1-Ubuntu SMP Tue Jun 23 18:53:06 UTC 2026 x86_64
User : ubuntu ( 1000)
PHP Version : 8.3.31
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/bs4/tests/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/bs4/tests/__pycache__/test_css.cpython-312.pyc
�

��eC���ddlZddlZddlmZddlmZmZmZddlm	Z	m
Z
e
rddlmZejje
d��Gd	�d
e	��Zy)�N)�	MagicMock)�CSS�
BeautifulSoup�	ResultSet�)�SoupTest�SOUP_SIEVE_PRESENT)�SelectorSyntaxErrorzSoup Sieve not installed)�reasonc��eZdZdZdZd�Zd�ZeZd�Zd�Z	d�Z
d�Zd	�Zd
�Z
d�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d �Z#d!�Z$d"�Z%d#�Z&d$�Z'd%�Z(d&�Z)d'�Z*d(�Z+d)�Z,d*�Z-d+�Z.d,�Z/d-�Z0d.�Z1d/�Z2d0�Z3d1�Z4d2�Z5d3�Z6d4�Z7d5�Z8d6�Z9d7�Z:d8�Z;d9�Z<d:�Z=d;�Z>d<�Z?d=�Z@d>�ZAd?�ZBd@�ZCdA�ZDyB)C�TestCSSSelectorsz�Test basic CSS selector functionality.

    This functionality is implemented in soupsieve, which has a much
    more comprehensive test suite, so this is basically an extra check
    that soupsieve works as expected.
    a�
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>The title</title>
<link rel="stylesheet" href="blah.css" type="text/css" id="l1">
</head>
<body>
<custom-dashed-tag class="dashed" id="dash1">Hello there.</custom-dashed-tag>
<div id="main" class="fancy">
<div id="inner">
<h1 id="header1">An H1</h1>
<p>Some text</p>
<p class="onep" id="p1">Some more text</p>
<h2 id="header2">An H2</h2>
<p class="class1 class2 class3" id="pmulti">Another</p>
<a href="http://bob.example.org/" rel="friend met" id="bob">Bob</a>
<h2 id="header3">Another H2</h2>
<a id="me" href="http://simonwillison.net/" rel="me">me</a>
<span class="s1">
<a href="#" id="s1a1">span1a1</a>
<a href="#" id="s1a2">span1a2 <span id="s1a2s1">test</span></a>
<span class="span2">
<a href="#" id="s2a1">span2a1</a>
</span>
<span class="span3"></span>
<custom-dashed-tag class="dashed" id="dash2"/>
<div data-tag="dashedvalue" id="data1"/>
</span>
</div>
<x id="xid">
<z id="zida"/>
<z id="zidab"/>
<z id="zidac"/>
</x>
<y id="yid">
<z id="zidb"/>
</y>
<p lang="en" id="lang-en">English</p>
<p lang="en-gb" id="lang-en-gb">English UK</p>
<p lang="en-us" id="lang-en-us">English US</p>
<p lang="fr" id="lang-fr">French</p>
</div>

<div id="footer">
</div>
c�:�t|jd�|_y)N�html.parser)r�HTML�soup��selfs �4/usr/lib/python3/dist-packages/bs4/tests/test_css.py�setup_methodzTestCSSSelectors.setup_methodNs��!�$�)�)�]�;��	�c	�8�|jj|fi|��}t|t�sJ�|D�cgc]}|d��	}}|j	�|j	�||k(s/Jd|�ddj|��ddj|��d���ycc}w)N�idz	Selector z, expected [z, z], got [�])r�select�
isinstancer�sort�join)r�selector�expected_ids�kwargs�results�el�el_idss       r�assert_selectszTestCSSSelectors.assert_selectsQs���"�$�)�)�"�"�8�6�v�6���'�9�-�-�-�%,�-�r�"�T�(�-��-����
������v�%�	
��$�)�)�L�1�4�9�9�V�3D�(
�	
�%��.s�Bc�<�|D]\}}|j||��y)N�r$)r�testsrrs    r�assert_select_multiplez'TestCSSSelectors.assert_select_multiple]s&��&+�	8�"�H�l�����,�7�	8rc��|jjjd�}|jj|�}t	|�dk(sJ�|D]}|j
dk(r�J�|jj
|�}d|dk(sJ�y�N�div��mainr)r�css�compiler�len�name�
select_one)r�sel�elsr+r"s     r�test_precompiledz!TestCSSSelectors.test_precompiledas����i�i�m�m�#�#�E�*���i�i���s�#���3�x�1�}��}��	%�C��8�8�u�$�$�$�	%��Y�Y�
!�
!�#�
&����D��!�!�!rc��|jjd�}t|�dk(sJ�|djdk(sJ�|djdgk(sJ�y)N�titlerrz	The title)rrr0r1�contents�rr4s  r�test_one_tag_onez!TestCSSSelectors.test_one_tag_onelsT���i�i���w�'���3�x�1�}��}��1�v�{�{�g�%�%�%��1�v���;�-�/�/�/rc���|jjd�}t|�dk(sJ�|D]}|jdk(r�J�|jj	d�}d|dk(sJ�yr*)rrr0r1r2)rr4r+r"s    r�test_one_tag_manyz"TestCSSSelectors.test_one_tag_manyrso���i�i���u�%���3�x�1�}��}��	%�C��8�8�u�$�$�$�	%��Y�Y�
!�
!�%�
(����D��!�!�!rc�H�|jjd�}d|k(sJ�y)N�nonexistenttag)rr2)r�matchs  r�(test_select_one_returns_none_if_no_matchz9TestCSSSelectors.test_select_one_returns_none_if_no_match{s#���	�	�$�$�%5�6���u�}��}rc�b�|jjd�}|jdddg�y)Nzdiv div�inner�data1)rrr$r9s  r�test_tag_in_tag_onez$TestCSSSelectors.test_tag_in_tag_one�s+���i�i���y�)�����I���'9�:rc�:�dD]}|j|gd���y)N)�html div�
html body div�body div�rCr-rB�footerr&�rrs  r�test_tag_in_tag_manyz%TestCSSSelectors.test_tag_in_tag_many�s$��A�	P�H�����*N�O�	Prc��|jddgd��|jdddgd��|jdgd	�d
��y)NrFr-r)�limitrGrB�rHrI�
r&rs r�
test_limitzTestCSSSelectors.test_limit�sN�����J�����:����O�g�v�->�a��H����J�(L�!#�	�	%rc�V�t|jjd��dk(sJ�y)N�delr�r0rrrs r�test_tag_no_matchz"TestCSSSelectors.test_tag_no_match�s$���4�9�9�#�#�E�*�+�q�0�0�0rc��tjt�5|jj	d�ddd�y#1swYyxYw)Nztag%t��pytest�raisesr
rrrs r�test_invalid_tagz!TestCSSSelectors.test_invalid_tag�s6��
�]�]�.�
/�	&��I�I���W�%�	&�	&�	&��	�?�Ac�,�|jdddg�y)N�custom-dashed-tag�dash1�dash2r&rs r�test_select_dashed_tag_idsz+TestCSSSelectors.test_select_dashed_tag_ids�s�����/�'�7�1C�Drc�|�|jjd�}|djdk(sJ�|dddk(sJ�y)Nzcustom-dashed-tag[id="dash2"]rr]rr_)rrr1)r�dasheds  r�test_select_dashed_by_idz)TestCSSSelectors.test_select_dashed_by_id�sD�����!�!�"C�D���a�y�~�~�!4�4�4�4��a�y���'�)�)�)rc�^�|jjd�djdk(sJ�y)Nzbody > custom-dashed-tagrzHello there.)rr�textrs r�test_dashed_tag_textz%TestCSSSelectors.test_dashed_tag_text�s+���y�y��� :�;�A�>�C�C�~�U�U�Urc�v�|jjd�|jjd�k(sJ�y)Nr])rr�find_allrs r�#test_select_dashed_matches_find_allz4TestCSSSelectors.test_select_dashed_matches_find_all�s0���y�y��� 3�4��	�	�8J�8J�K^�8_�_�_�_rc�6�|jddgfdddgf�y)N�h1�header1�h2�header2�header3�r(rs r�test_header_tagsz!TestCSSSelectors.test_header_tags�s'���#�#�
�I�;��
�I�y�)�*�	
rc��dD]O}|jj|�}t|�dk(sJ�|djdk(sJ�|dddgk(r�OJ�y)N)z.onepzp.onepzhtml p.oneprr�p�class�onep)rrr0r1)rrr4s   r�test_class_onezTestCSSSelectors.test_class_one�sc��:�	/�H��)�)�"�"�8�,�C��s�8�q�=� �=��q�6�;�;�#�%�%�%��q�6�'�?�v�h�.�.�.�		/rc�Z�|jjd�}t|�dk(sJ�y)Nzdiv.onepr�rrr0r9s  r�test_class_mismatched_tagz*TestCSSSelectors.test_class_mismatched_tag�s&���i�i���z�*���3�x�1�}��}rc�8�dD]}|j|dg��y)N)z	div#innerz#innerz
div div#innerrBr&rKs  r�test_one_idzTestCSSSelectors.test_one_id�s#��@�	5�H�����7�)�4�	5rc�Z�|jjd�}t|�dk(sJ�y)Nz
#doesnotexistrrxr9s  r�test_bad_idzTestCSSSelectors.test_bad_id�s&���i�i����/���3�x�1�}��}rc���|jjd�}t|�dk(sJ�|D]}|jdk(r�J�|dddgk(sJ�|dj	d�rJ�y)Nzdiv#inner p�rsrrtrur)rrr0r1�has_attr)rr4r"s   r�test_items_in_idz!TestCSSSelectors.test_items_in_id�sv���i�i���}�-���3�x�1�}��}��	"�B��7�7�c�>�!�>�	"��1�v�g��6�(�*�*�*��q�6�?�?�7�+�+�+�+rc�d�dD]+}t|jj|��dk(r�+J�y)N)zdiv#main delzdiv#main div.oopszdiv div#mainrrTrKs  r�test_a_bunch_of_emptysz'TestCSSSelectors.test_a_bunch_of_emptys�s3��M�	8�H��t�y�y�'�'��1�2�a�7�7�7�	8rc�8�dD]}|j|dg��y)N)z.class1zp.class1z.class2zp.class2z.class3zp.class3z
html p.class2zdiv#inner .class2�pmultir&rKs  r�test_multi_class_supportz)TestCSSSelectors.test_multi_class_support�s&��I�	6�H�����8�*�5�	6rc�8�dD]}|j|dg��y)N)z.class1.class3z.class3.class2z.class1.class2.class3r�r&rKs  r�test_multi_class_selectionz+TestCSSSelectors.test_multi_class_selection�s%��2�	6�H�����8�*�5�	6rc�R�|jdddg�|jddg�y)Nz.s1 > a�s1a1�s1a2z.s1 > a span�s1a2s1r&rs r�test_child_selectorz$TestCSSSelectors.test_child_selector�s)�����I���'7�8����N�X�J�7rc�*�|jddg�y)Nz.s1 > a#s1a2 spanr�r&rs r�test_child_selector_idz'TestCSSSelectors.test_child_selector_id�s�����/�(��<rc��|jddgfddgfddgfddgfddgfddgfd	dgfd
gfddgfddgfd
dgfdgfdgfdgf�y)Nzp[class="onep"]�p1z
p[id="p1"]z[class="onep"]z	[id="p1"]zlink[rel="stylesheet"]�l1zlink[type="text/css"]zlink[href="blah.css"]zlink[href="no-blah.css"]z[rel="stylesheet"]z[type="text/css"]z[href="blah.css"]z[href="no-blah.css"]zp[href="no-blah.css"]rprs r�test_attribute_equalsz&TestCSSSelectors.test_attribute_equals�s����#�#�
���'�
�D�6�"�
��v�&�
�4�&�!�
%��v�.�
$�t�f�-�
$�t�f�-�
'��,�
!�D�6�*�
 �4�&�)�
 �4�&�)�
#�R�(�
$�b�)�
#�R�(�	
rc
�t�|jddgfddgfddgfddgfddgfddgfdd	gfd
d	gfdd	gfdd	gf�
y)
Nzp[class~="class1"]r�zp[class~="class2"]zp[class~="class3"]z[class~="class1"]z[class~="class2"]z[class~="class3"]za[rel~="friend"]�bobz
a[rel~="met"]z[rel~="friend"]z[rel~="met"]rprs r�test_attribute_tildez%TestCSSSelectors.test_attribute_tilde�st���#�#�
!�H�:�.�
!�H�:�.�
!�H�:�.�
 �8�*�-�
 �8�*�-�
 �8�*�-�
�%��)�
�u�g�&�
���(�
�e�W�%�	
rc��|jddgfddgfdgfdgfdgfddgfdd	d
gfdd	d
gfdd
dgfdd
dgfddgfdd
gfddgf�
y)Nz[rel^="style"]r�zlink[rel^="style"]znotlink[rel^="notstyle"]z[rel^="notstyle"]zlink[rel^="notstyle"]zlink[href^="bla"]za[href^="http://"]r��mez[href^="http://"]z	[id^="p"]r�r�z	[id^="m"]r-zdiv[id^="m"]z
a[id^="m"]zdiv[data-tag^="dashed"]rCrprs r�test_attribute_startswithz*TestCSSSelectors.test_attribute_startswith�s����#�#�
��v�&�
!�D�6�*�
'��,�
 �"�%�
$�b�)�
 �4�&�)�
!�E�4�=�1�
 �5�$�-�0�
�8�T�*�+�
�4��.�)�
�f�X�&�
�D�6�"�
&��	�2�	
rc	�T�|jddgfddgfddgfdgd�fddgfd	gf�y)
Nz[href$=".css"]r�zlink[href$=".css"]z
link[id$="1"]z	[id$="1"])rCr�r�rlr��s2a1r�r^zdiv[id$="1"]rCz[id$="noending"]rprs r�test_attribute_endswithz(TestCSSSelectors.test_attribute_endswithsI���#�#�
��v�&�
!�D�6�*�
�t�f�%�
�]�^�
�g�Y�'�
��$�
	
rc���|jddgfddgfdgfdgfdgfddgfdd	d
gfddd
gfddgfdd
gfddgfddgfddgfdgd�fddgfdgfdgd�fdd	d
gfddgfdddgfddgfd dgf�y)!Nz[rel*="style"]r�zlink[rel*="style"]znotlink[rel*="notstyle"]z[rel*="notstyle"]zlink[rel*="notstyle"]zlink[href*="bla"]z[href*="http://"]r�r�z	[id*="p"]r�r�zdiv[id*="m"]r-z
a[id*="m"]z[href*=".css"]zlink[href*=".css"]z
link[id*="1"]z	[id*="1"])	rCr�r�rlr�r�r�r�r^zdiv[id*="1"]rCz[id*="noending"]z[href*="."])r�r�r�za[href*="."]zlink[href*="."]zdiv[id*="n"]rBz
div[id*="nn"]zdiv[data-tag*="edval"]rprs r�test_attribute_containsz(TestCSSSelectors.test_attribute_containss����#�#�
��v�&�
!�D�6�*�
'��,�
 �"�%�
$�b�)�
 �4�&�)�
 �5�$�-�0�
�8�T�*�+�
�f�X�&�
�D�6�"�
��v�&�
!�D�6�*�
�t�f�%�
�e�f�
�g�Y�'�
��$�
�/�0�
�e�T�]�+�
���'�
�f�g�.�/�
�w�i�(�
%��y�1�3	
rc�F�|jdgd�fdgd�fddgfdgf�y)Nz
p[lang|="en"])�lang-en�
lang-en-gb�
lang-en-usz[lang|="en"]z
p[lang|="fr"]�lang-frz
p[lang|="gb"]rprs r�test_attribute_exact_or_hypenz.TestCSSSelectors.test_attribute_exact_or_hypen2s4���#�#�
�E�F�
�D�E�
�y�k�*�
�b�!�		
rc�h�|jdgd�fddgfdddgfdgd	�fd
ddgfd
gfdgfddgf�y)Nz[rel])r�r�r�z	link[rel]r�za[rel]r�r�z[lang])r�r�r�r�zp[class]r�r�z[blah]zp[blah]z
div[data-tag]rCrprs r�test_attribute_existsz&TestCSSSelectors.test_attribute_exists:s]���#�#�
�)�*�
�4�&�!�
��t�}�%�
�I�J�
�$��)�*�
�r�N�
��O�
�w�i�(�		
rc�h�d}t|d�}|jd�\}d|jk(sJ�y)Nz]<div style="display: wrong">nope</div>
        <div style="display: right">yes</div>
        rzdiv[style="display: right"]�yes)rr�string)r�htmlr�chosens    r�"test_quoted_space_in_selector_namez3TestCSSSelectors.test_quoted_space_in_selector_nameFs:�����T�=�1���;�;�<�=�����
�
�%�%�%rc�(�tjt�5|jj	d�ddd�tjt
�5|jj	d�ddd�y#1swY�GxYw#1swYyxYw)Nza:no-such-pseudoclassza:nth-of-type(a))rXrY�NotImplementedErrorrrr
rs r�test_unsupported_pseudoclassz-TestCSSSelectors.test_unsupported_pseudoclassNss��
�]�]�.�
/�	6��I�I���4�5�	6��]�]�.�
/�	1��I�I���/�0�	1�	1�	6�	6��	1�	1���A<�B�<B�Bc��|jjd�}t|�dk(sJ�|djdk(sJ�|jjd�}t|�dk(sJ�|djdk(sJ�|jjd�}t|�dk(sJ�|jjd�}t|�dk(sJ�y)	Nzdiv#inner p:nth-of-type(1)rr�	Some textzdiv#inner p:nth-of-type(3)�Anotherzdiv#inner p:nth-of-type(4)zdiv p:nth-of-type(0)�rrr0r�r9s  r�test_nth_of_typez!TestCSSSelectors.test_nth_of_typeUs����i�i���;�<���3�x�1�}��}��1�v�}�}��+�+�+��i�i���;�<���3�x�1�}��}��1�v�}�}�	�)�)�)��i�i���;�<���3�x�1�}��}��i�i���5�6���3�x�1�}��}rc��|jjd�}t|�dk(sJ�|djdk(sJ�y)Nzdiv#inner > p:nth-of-type(1)rrr�r�r9s  r�"test_nth_of_type_direct_descendantz3TestCSSSelectors.test_nth_of_type_direct_descendanths=���i�i���=�>���3�x�1�}��}��1�v�}�}��+�+�+rc�*�|jddg�y)Nz#inner > p:nth-of-type(2)r�r&rs r�"test_id_child_selector_nth_of_typez3TestCSSSelectors.test_id_child_selector_nth_of_typems�����7�$��@rc��|jjdd��}|jd�}|j|ddg�y)Nr+r-�rrBrC)r�findr�assert_selects_ids)rrB�selecteds   r�test_select_on_elementz'TestCSSSelectors.test_select_on_elementps?���	�	���u���0���<�<��&��	
����7�G�*<�=rc�N�|jddg�|jdg�y)Nz
.fancy #innerrBz.normal #innerr&rs r�test_overspecified_child_idz,TestCSSSelectors.test_overspecified_child_idys%�����O�g�Y�7����,�b�1rc��|jddg�|jddg�|jddg�g|jjd�k(sJ�y)Nz#p1 + h2rnz#p1 + h2 + pr�z#p1 + #header2 + .class1z#p1 + p�r$rrrs r�test_adjacent_sibling_selectorz/TestCSSSelectors.test_adjacent_sibling_selector}sV�����J���4����N�X�J�7����6��
�C��T�Y�Y�%�%�i�0�0�0�0rc���|jdddg�|jddg�|jddg�|jddg�g|jjd�k(sJ�y)	Nz#p1 ~ h2rnroz#p1 ~ #header2z#p1 ~ h2 + ar�z#p1 ~ h2 + [rel="me"]z#inner ~ h2r�rs r�test_general_sibling_selectorz.TestCSSSelectors.test_general_sibling_selector�sl�����J��I�(>�?����,�y�k�:����N�T�F�3����3�d�V�<��T�Y�Y�%�%�m�4�4�4�4rc��tjt�5|jj	d�ddd�y#1swYyxYw)Nzh1 >rWrs r�test_dangling_combinatorz)TestCSSSelectors.test_dangling_combinator�s6��
�]�]�.�
/�	%��I�I���V�$�	%�	%�	%�r[c�,�|jdgd��y)Nzp[lang] ~ p)r�r�r�r&rs r�2test_sibling_combinator_wont_select_same_tag_twicezCTestCSSSelectors.test_sibling_combinator_wont_select_same_tag_twice�s�����M�+R�Src�,�|jdddg�y)Nzx, y�xid�yidr&rs r�test_multiple_selectz%TestCSSSelectors.test_multiple_select�s�����F�U�E�N�3rc�,�|jdddg�y)Nzx,yr�r�r&rs r�"test_multiple_select_with_no_spacez3TestCSSSelectors.test_multiple_select_with_no_space�s�����E�E�5�>�2rc�,�|jdddg�y)Nzx,    yr�r�r&rs r�$test_multiple_select_with_more_spacez5TestCSSSelectors.test_multiple_select_with_more_space�s�����I��u�~�6rc�*�|jddg�y)Nzx, xr�r&rs r�test_multiple_select_duplicatedz0TestCSSSelectors.test_multiple_select_duplicated�s�����F�U�G�,rc�,�|jdddg�y)Nzx, y ~ p[lang=fr]r�r�r&rs r�test_multiple_select_siblingz-TestCSSSelectors.test_multiple_select_sibling�s�����/�%��1C�Drc�,�|jdddg�y)Nzx, y > zr��zidbr&rs r�.test_multiple_select_tag_and_direct_descendantz?TestCSSSelectors.test_multiple_select_tag_and_direct_descendant�s�����J����8rc�,�|jdgd��y)Nz
div > x, y, z�r�r��zidar��zidab�zidacr&rs r�/test_multiple_select_direct_descendant_and_tagsz@TestCSSSelectors.test_multiple_select_direct_descendant_and_tags�s�����O�-]�^rc�,�|jdgd��y)Nzdiv x,y,  zr�r&rs r�(test_multiple_select_indirect_descendantz9TestCSSSelectors.test_multiple_select_indirect_descendant�s�����M�+[�\rc�(�tjt�5|jj	d�ddd�tjt�5|jj	d�ddd�y#1swY�GxYw#1swYyxYw)Nz,x, yzx,,yrWrs r�test_invalid_multiple_selectz-TestCSSSelectors.test_invalid_multiple_select�so��
�]�]�.�
/�	&��I�I���W�%�	&�
�]�]�.�
/�	%��I�I���V�$�	%�	%�	&�	&��	%�	%�r�c�,�|jdddg�y)Nzp[lang=en], p[lang=en-gb]r�r�r&rs r�test_multiple_select_attrsz+TestCSSSelectors.test_multiple_select_attrs�s�����7�)�\�9R�Src�,�|jdgd��y)Nz*x, y > z[id=zida], z[id=zidab], z[id=zidb])r�r�r�r&rs r�test_multiple_select_idsz)TestCSSSelectors.test_multiple_select_ids�s�����H�Jb�crc�,�|jdddg�y)Nzbody > div > x, y > zr�r�r&rs r�test_multiple_select_nestedz,TestCSSSelectors.test_multiple_select_nested�s�����3�e�V�_�Erc��d}t|d�}|jd�}dt|�k(sJ�|jddg��D]}||vr�J�y)Nz3<div class="c1"/><div class="c2"/><div class="c1"/>rz.c1, .c2r�c1�c2)�class_)rrr0rh)r�markuprr��elements     r�test_select_duplicate_elementsz/TestCSSSelectors.test_select_duplicate_elements�sd��G���V�]�3���;�;�z�*���C��M�!�!�!�
�}�}�T�4�L�}�9�	'�G��h�&�&�&�	'rc��|jjdd��}|jjd�}||jjdd��k(sJ�y)Nr+rBr��div[id=main]r-)rr�r.�closest)rrBr�s   r�test_closestzTestCSSSelectors.test_closest�sK���	�	���u���1���)�)�#�#�N�3���$�)�)�.�.��6�.�:�:�:�:rc��|jjdd��}|jjdd��}|jjd�dk(sJ�|jjd�dk(sJ�y)Nr+rBr�r-r�FT)rr�r.r?)rrBr-s   r�
test_matchzTestCSSSelectors.test_match�sd���	�	���u���1���y�y�~�~�e��~�/���y�y���~�.�%�7�7�7��x�x�~�~�n�-��5�5�5rc��|jjjd�}t|tj
�sJ�|\}}|ddk(sJ�|ddk(sJ�y)Nrmrrnro)rr.�iselectr�types�
GeneratorType)r�genrnros    r�test_iselectzTestCSSSelectors.test_iselect�s^���i�i�m�m�#�#�D�)���#�u�2�2�3�3�3� ���'��t�}�	�)�)�)��t�}�	�)�)�)rc�<�|jjdd��}|jjd�}t	|jjd��dk(sJ�|jjd�}t|t�sJ�|\}|ddk(sJ�y)	Nr+rBr�rmrOzh2[id=header3]rro)rr�r.�filterr0rr)rrBr!�results    r�test_filterzTestCSSSelectors.test_filter�s����	�	���u���1���)�)�"�"�4�(���5�9�9�#�#�D�)�*�a�/�/�/��)�)�"�"�#3�4���'�9�-�-�-�����d�|�y�(�(�(rc���|jjj}|d�dk(sJ�|d�dk(sJ�|d�|jjjd�k(sJ�y)Nz.foo#barz
\.foo\#barz()[]{}z\(\)\[\]\{\}z.foo)rr.�escape)r�ms  r�test_escapezTestCSSSelectors.test_escape�s_���I�I�M�M� � ����}��.�.�.���{�2�2�2�2���y�D�I�I�M�M�0�0��8�8�8�8rN)E�__name__�
__module__�__qualname__�__doc__rrr$�assertSelectr(r5r:r<r@rDrLrQrUrZr`rcrfrirqrvryr{r}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�rrr
r
s]���/�D�b<�
�"�L�8�	"�0�"��
;�P�
%�1�&�E�*�
V�`�
�/��5��,�8�6�
6�
8�=�
�$
�
�"
�
�:
�

�&�1��&,�
A�>�2�1�5�%�T�4�3�7�-�E�9�_�]�%�T�d�F�'�;�
6�*�)�9rr
)rXr��
unittest.mockr�bs4rrr�rr	�	soupsiever
�mark�skipifr
r
rr�<module>rs]��
��#����
�-������*�*�3M��N�R9�x�R9�O�R9r

Youez - 2016 - github.com/yon3zu
LinuXploit