zmc
2023-12-22 9fdbf60165db0400c2e8e6be2dc6e88138ac719a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
U
¡ý°dpã@sndZddlmZddlZddlZddlZddlmZmZm    Z    ddl
m Z ddl m Z mZGdd    „d    e eƒZdS)
zGTests to ensure that the html.parser tree builder generates good
trees.é)Ú    set_traceN)ÚHTMLParserTreeBuilderÚParserRejectedMarkupÚXMLParsedAsHTMLWarning)ÚBeautifulSoupHTMLParseré)ÚSoupTestÚHTMLTreeBuilderSmokeTestc@sXeZdZeZdd„Zdd„Zdd„Zdd„Zd    d
„Z    d d „Z
d d„Z dd„Z dd„Z dS)ÚTestHTMLParserTreeBuilderc
Cs8dddg}|D]$}t t¡| |¡}W5QRXqdS)Ns    
<![ÿþþÍs<![ns<![UNKNOWN[]]>)ÚpytestZraisesrÚsoup)ÚselfZ
bad_markupÚmarkupr ©rúPd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\bs4/tests/test_htmlparser.pyÚtest_rejected_inputs
ö  z-TestHTMLParserTreeBuilder.test_rejected_inputcCsdS©Nr©r rrrÚtest_namespaced_system_doctype*sz8TestHTMLParserTreeBuilder.test_namespaced_system_doctypecCsdSrrrrrrÚtest_namespaced_public_doctype.sz8TestHTMLParserTreeBuilder.test_namespaced_public_doctypecCs:| d¡}t |d¡}t |¡}t|jt|jƒƒs6t‚dS)zfUnlike most tree builders, HTMLParserTreeBuilder and will
        be restored after pickling.
        z <a><b>foo</a>éN)r ÚpickleÚdumpsÚloadsÚ
isinstanceZbuilderÚtypeÚAssertionError)r ÚtreeZdumpedZloadedrrrÚtest_builder_is_pickled2s
 
z1TestHTMLParserTreeBuilder.test_builder_is_pickledcCs| dd¡| dd¡dS)Nz<br></br><br></br><br></br>z<br/><br/><br/>z</br></br></br>Ú©Z assert_souprrrrÚ)test_redundant_empty_element_closing_tags;s zCTestHTMLParserTreeBuilder.test_redundant_empty_element_closing_tagscCs| dd¡dS)Nz
foo &# barzfoo &amp;# barr rrrrÚtest_empty_element?sz,TestHTMLParserTreeBuilder.test_empty_elementcCszd}| |¡}d|jjkst‚d|jjks.t‚d|j d¡jksDt‚|j|dd}d|jjjksdt‚d|jjjksvt‚dS)Nz=
   <p>
 
<sourceline>
<b>text</b></sourceline><sourcepos></p>réÚ
sourcelineF)Zstore_line_numbersÚ    sourcepos)r Úpr$rr%ÚfindÚname)r rr rrrÚtest_tracking_line_numbersDs
z4TestHTMLParserTreeBuilder.test_tracking_line_numberscs’d‰ˆ ˆ¡}d|jdks t‚dg|jdks4t‚d|jdksFt‚‡‡fdd„}|ddƒ|tjdƒ|tjd    ƒd
d „}||d    d dgƒdS) Nz;<a class="cls" href="url1" href="url2" href="url3" id="id">Zurl3ÚhrefÚclsÚclassÚidcsJˆjˆ|d}||jdks t‚dg|jdks4t‚d|jdksFt‚dS)N)Úon_duplicate_attributer*r+r,r-)r Úar)r.Úexpectedr ©rr rrÚassert_attribute`sÿzOTestHTMLParserTreeBuilder.test_on_duplicate_attribute.<locals>.assert_attributeÚurl1cSs.t||tƒs||g||<|| |¡dSr)rÚlistÚappend)ÚattrsÚkeyÚvaluerrrÚ
accumulatepszITestHTMLParserTreeBuilder.test_on_duplicate_attribute.<locals>.accumulateÚurl2)r r/rrZREPLACEZIGNORE)r r r2r9rr1rÚtest_on_duplicate_attributeRs
    
  z5TestHTMLParserTreeBuilder.test_on_duplicate_attributec    CsjdD]`\}}}d|}| |¡j}| ¡}d| d¡}||ksDt‚|jdd}d|}||kst‚qdS)N))z&RightArrowLeftArrow;u⇄s&rlarr;)z&models;u⊧s&models;)z&Nfr;u𝔑s&Nfr;)z&ngeqq;u≧̸s&ngeqq;)z&not;õ¬s&not;)z&Not;u⫬s&Not;)z&quot;ú"ó")z&there4;õ∴ó&there4;)z &Therefore;r?r@)z &therefore;r?r@)z&fjlig;Úfjsfj)z&sqcup;u⊔s&sqcup;)z&sqcups;u⊔︀s&sqcups;)z&apos;ú'ó')z&verbar;ú|ó|z <div>%s</div>s <div>%s</div>Úutf8Úhtml)Ú    formatter)r ÚdivÚencoder)    r Z input_elementZoutput_unicodeZoutput_elementrrIZwithout_elementÚexpectZ with_elementrrrÚtest_html5_attributesvs   z/TestHTMLParserTreeBuilder.test_html5_attributesN)Ú__name__Ú
__module__Ú __qualname__rZdefault_builderrrrrr!r"r)r;rLrrrrr
s    $r
)Ú__doc__Úpdbrrr ÚwarningsZ bs4.builderrrrZbs4.builder._htmlparserrrrr    r
rrrrÚ<module>s