
    h                        d 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 ddlmZmZmZ ej                  j!                  e d	       G d
 de             Zej                  j!                  e d	       G d de             Zy)z@Tests to ensure that the lxml tree builder generates good trees.    N   )LXML_PRESENTLXML_VERSION)LXMLTreeBuilderLXMLTreeBuilderForXML)BeautifulStoneSoup)HTMLTreeBuilderSmokeTestXMLTreeBuilderSmokeTestSOUP_SIEVE_PRESENTz;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    {/var/labsstorage/home/kalaiyarasan.offl.2004/htdocs/course/socket/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    s5    9?K:OL5Gr   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_doctype.   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+The BeautifulStoneSoup class was deprecated)warningscatch_warningsr   strbfilename__file__message)r   wr#   warnings       r   %test_beautifulstonesoup_is_xml_parserz9TestLXMLTreeBuilder.test_beautifulstonesoup_is_xml_parser7   s{     $$D1 	/Q%g.D	/TVV$$$	8+++<GOO@TTTT	/ 	/s   A88Bc                     | j                  dd      }d |j                  j                  u sJ d |j                  j                  u sJ y )Nz=
   <p>

<sourceline>
<b>text</b></sourceline><sourcepos></p>T)store_line_numbers)r#   p
sourceline	sourceposr   r#   s     r   test_tracking_line_numbersz.TestLXMLTreeBuilder.test_tracking_line_numbersA   sO     yyO#  
 tvv(((((tvv'''''r   N)__name__
__module____qualname____doc__propertyr   r   r   pytestmarkskipifr   r   r'   r3   r:   r   r   r   r   r      sj    
 , H
 [[7L<7Q  %	%
U(r   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_builderX   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prefix2rG   )rH   rG   )rI   rG   )r#   _namespacestagtag2subtag	subsubtagr9   s     r   test_namespace_indexingz.TestLXMLXMLTreeBuilder.test_namespace_indexing\   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>rK   zprefix|tag2rL   zprefix|tag3)
namespacestag3zprefix:tag2zprefix:tag3)r#   
select_onenamerM   rJ   findr9   s     r   /test_namespace_interaction_with_select_and_findzFTestLXMLXMLTreeBuilder.test_namespace_interaction_with_select_and_find   s?   
 yy	
 u%**e333}-22f<<< }-555 OOMdkk6M6MONSS	
 {{%%m499VCCC 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)r;   r<   r=   r>   r?   r   rO   r@   rA   rB   r   rV   ra   r   r   r   rD   rD   Q   sT    
 ,% %2
h [[..7QR&> S&>PCr   rD   )r>   rZ   r@   r*   r"   r   r   bs4.builder._lxmlr   r   bs4r   r	   r
   r   rA   rB   r   rD   r   r   r   <module>rd      s    F    (H  H  5(2 5(	5(p L  oC4 oC	oCr   