
    Owg                     <   d Z ddlZddlZddlZddlZddlmZmZ erddlm	Z	m
Z
 ddlmZmZ ddlmZmZmZ ddlmZmZmZmZ ej,                  j/                  e d	
       G d dee             Zej,                  j/                  e d
       G d dee             Zy)z@Tests to ensure that the lxml tree builder generates good trees.    N   )LXML_PRESENTLXML_VERSION)LXMLTreeBuilderLXMLTreeBuilderForXML)BeautifulSoupBeautifulStoneSoup)CommentDoctypeSoupStrainer)HTMLTreeBuilderSmokeTestXMLTreeBuilderSmokeTestSOUP_SIEVE_PRESENTSoupTestz;lxml seems not to be present, not testing its tree builder.reasonc                       e Zd ZdZed        Zd Zd Zej                  j                  e xs edk  d      d        Zd	 Zd
 Zy)TestLXMLTreeBuilder!See ``HTMLTreeBuilderSmokeTest``.c                     t         S N)r   selfs    J/var/www/horilla/myenv/lib/python3.12/site-packages/bs4/tests/test_lxml.pydefault_builderz#TestLXMLTreeBuilder.default_builder   s        c                 p    | j                  dd       | j                  dd       | j                  dd       y )Nz<p>foo&#10000000000000;bar</p>z<p>foobar</p>z<p>foo&#x10000000000000;bar</p>z<p>foo&#1000000000;bar</p>)assert_soupr   s    r   test_out_of_range_entityz,TestLXMLTreeBuilder.test_out_of_range_entity#   s<    ,o	?-	@(/	;r   c                      y r    r   s    r   *test_entities_in_foreign_document_encodingz>TestLXMLTreeBuilder.test_entities_in_foreign_document_encoding+   s     	r   )         r   z@Skipping doctype test for old version of lxml to avoid segfault.r   c                 n    | j                  d      }|j                  d   }d|j                         k(  sJ y )Nz
<!DOCTYPE>r    )soupcontentsstrip)r   r(   doctypes      r   test_empty_doctypez&TestLXMLTreeBuilder.test_empty_doctype4   s4    
 yy&--"W]]_$$$r   c                    t        j                  d      5 }t        d      }d d d        dt        j                        k(  sJ \  }|j
                  t        k(  sJ dt        |j                        v sJ y # 1 sw Y   VxY w)NT)recordz<b />z<b/>z&BeautifulStoneSoup class is deprecated)warningscatch_warningsr	   strbfilename__file__message)r   wr(   warnings       r   %test_beautifulstonesoup_is_xml_parserz9TestLXMLTreeBuilder.test_beautifulstonesoup_is_xml_parser=   s{     $$D1 	/Q%g.D	/TVV$$$	8+++73w;OOOO	/ 	/s   A88Bc                     | j                  dd      }d|j                  j                  j                  k(  sJ d|j                  j                  j                  k(  sJ y )Nz=
   <p>

<sourceline>
<b>text</b></sourceline><sourcepos></p>T)store_line_numbers
sourceline	sourcepos)r(   pr;   namer<   r   r(   s     r   test_tracking_line_numbersz.TestLXMLTreeBuilder.test_tracking_line_numbersG   s[     yyO#  
 tvv0055555dff..33333r   N)__name__
__module____qualname____doc__propertyr   r   r"   pytestmarkskipifr   r   r,   r8   r@   r!   r   r   r   r      si    
 , ; [[4L94Q  %	%
P4r   r   z?lxml seems not to be present, not testing its XML tree builder.c                   t    e Zd ZdZed        Zd Zej                  j                  e
 d      d        Zd Zy)	TestLXMLXMLTreeBuilderr   c                     t         S r   )r   r   s    r   r   z&TestLXMLXMLTreeBuilder.default_builder]   s    $$r   c                 >   | j                  d      }|j                  ddddk(  sJ |j                  j                  ddik(  sJ |j                  j                  dddk(  sJ |j                  j                  dddk(  sJ |j
                  j                  dddk(  sJ y )	Nam  <?xml version="1.1"?>
<root><tag xmlns="http://unprefixed-namespace.com">content</tag><prefix:tag2 xmlns:prefix="http://prefixed-namespace.com">content</prefix:tag2><prefix2:tag3 xmlns:prefix2="http://another-namespace.com"><subtag xmlns="http://another-unprefixed-namespace.com"><subsubtag xmlns="http://yet-another-unprefixed-namespace.com"></prefix2:tag3></root>z$http://www.w3.org/XML/1998/namespacezhttp://prefixed-namespace.comzhttp://another-namespace.com)xmlprefixprefix2rM   )rN   rM   )rO   rM   )r(   _namespacestagtag2subtag	subsubtagr?   s     r   test_namespace_indexingz.TestLXMLXMLTreeBuilder.test_namespace_indexinga   s    yy

& 955$
 
 	
 
 xx##9(
 
 	
 
 yy$$59)
 
 	
 

 {{&&59+
 
 	
 

 ~~))59.
 
 	
 
r   zSoup Sieve not installedr   c                    | j                  d      }|j                  d      j                  dk(  sJ |j                  d      j                  dk(  sJ |j                  d      J |j                  d|j                  j                        j                  dk(  sJ |j                  j                  d      j                  dk(  sJ |j                  d      j                  dk(  sJ |j                  d      j                  dk(  sJ |j                  d	      j                  dk(  sJ |j                  j                  d	      j                  dk(  sJ y )
Nz<?xml version="1.1"?>
<root><tag xmlns="http://unprefixed-namespace.com">content</tag><prefix:tag2 xmlns:prefix="http://prefixed-namespace.com">content</tag><subtag xmlns:prefix="http://another-namespace-same-prefix.com"><prefix:tag3></subtag></root>rQ   zprefix|tag2rR   zprefix|tag3)
namespacestag3zprefix:tag2zprefix:tag3)r(   
select_oner>   rS   rP   findr?   s     r   /test_namespace_interaction_with_select_and_findzFTestLXMLXMLTreeBuilder.test_namespace_interaction_with_select_and_find   sC    yy	
 u%**e333}-22f<<< }-555 dkk&=&=  

$& 	  {{%%m4996AAA yy$$---yy',,666yy',,666{{.33v===r   c                 n   | j                  d      }t        |j                  | j                        sJ t	        j
                  |      }t	        j                  |      }d|j                  j                  k(  sJ |j                  |j                  k7  sJ t        |j                  | j                        sJ y )Nz<a>some markup</a>zsome markup)	r(   
isinstancebuilderr   pickledumpsloadsastring)r   r(   pickled	unpickleds       r   test_pickle_restores_builderz3TestLXMLXMLTreeBuilder.test_pickle_restores_builder   s     yy-.$,,(<(<===,,t$LL)		 2 2222  DLL000)++T-A-ABBBr   N)rA   rB   rC   rD   rE   r   rU   rF   rG   rH   r   r[   rf   r!   r   r   rJ   rJ   V   sW    
 ,% %2
j [['A  %>%>NCr   rJ   )rD   r_   rF   rer/   r'   r   r   bs4.builderr   r   bs4r   r	   bs4.elementr
   r   r   r   r   r   r   rG   rH   r   rJ   r!   r   r   <module>rk      s    F   	  (B 7 6  H  84($< 84	84t L  qCX'> qC	qCr   