S/mSSKJr SSKJrJrJrJr SSKJrJ r SSK r SSK r SSK r SSK r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJr SSKJ r J!r! SSKrSSK"J#r# SSK$J%r%J&r&J'r'J(r( SS K)J*r* \#RV"S S 9 "S S 5r,"SS\RZ5r."SS\R^\*5r0"SS\05r1"SS\05r2"SS\05r3Sr4Sr5Sr6Sr7\Rp"\9"\ S5=(a \ Rt"5S:HS5\'"5"SS\0555r;"S S!\5r<"S"S#\<5r="S$S%5r>"S&S'\R^\*5r?"S(S)\R^5r@"S*S+\R^5rA"S,S-\R^5rBS.rC\DS/:Xa\R"5 gg)0) OrderedDict)BaseHTTPRequestHandler HTTPServerSimpleHTTPRequestHandlerCGIHTTPRequestHandler)server HTTPStatusN)mock)BytesIOStringIO)support)is_apple os_helperrequires_subprocessthreading_helper)ExtraAssertionsT)modulec$\rSrSrSrSSjrSrg)NoLogRequestHandler(cgN)selfargss ((&&(C   T:: .   T3==1A#B C   T3==#@ A8  s}}5H'IJ88:D   S$ '5rc[R[R4n[R[R[R[R[R 4GHPnUR RSSRU55 UR R5nURX#R5 U[R:XaNUR[URS55S:5 URSURS55 OBURSURS55 URSURS55 X!;a!URSURS55 UR!5nURSU5 GMS g) NHEADr rrrqrpr r)r r rOKrvrrrarrbrrrrrassertInr$rs rtest_head_via_send_error/BaseHTTPServerTestCase.test_head_via_send_error)sF)3)@)@)3)A)A)C%]]J$9$9,,j.F.F335D HH  VU\\$%7 8((&&(C   T:: .z}}$CMM2B$C Dq HI k3==+HI  s}}5E'FG  s}}^'DE8  s}}5H'IJ88:D   S$ '!5rrN)r&r'r(r)rrr2rTrrrrrrrrrrrrrrrrrrrrrrr*rrrriri[s,0-/E,0\ A A=====A=L=AA< (* * > KJ("(rric6\rSrSr"SS\5rSrSrSrg)RequestHandlerLoggingTestCasei?c(\rSrSrSrSrSrSrSrg)-RequestHandlerLoggingTestCase.request_handleri@rncbUR[R5 UR5 gr)rur rrxr?s rdo_GET4RequestHandlerLoggingTestCase.request_handler.do_GETDs   z}} -    rcDUR[RS5 g)NzFile not foundrr?s rdo_ERROR6RequestHandlerLoggingTestCase.request_handler.do_ERRORHs OOJ002B CrrN) r&r'r(r)rrr#r&r*rrrr2r!@s%",  Drr2c[RRURUR5UlUR R 5 [R"5nUR RSS5 UR R5 SSS5 URWR5S5 g!,(df  N/=f)Nr[rz"GET / HTTP/1.1" 200 - ) r]r^r_r9r:rrr captured_stderrrarbassertEndsWithgetvalue)rerrs rtest_get&RequestHandlerLoggingTestCase.test_getKs;;--diiC   $ $ &# HH  UC ( HH "' CLLN,FG ' &s )7C  Cc[RRURUR5UlUR R 5 [R"5nUR RSS5 UR R5 SSS5 WR5RS5nURUSS5 URUSS5 g!,(df  NX=f)NERRORr rz code 404, message File not foundrz"ERROR / HTTP/1.1" 404 -)r]r^r_r9r:rrr r)rarbr+splitr*)rr,liness rtest_err&RequestHandlerLoggingTestCase.test_errUs;;--diiC   $ $ &# HH  Wc * HH "' $$T* E!H&HI E!H&@A ' &s )7C22 DrN) r&r'r(r)rr2r-r4r*rrrrr?s D0 DH Brrc<^\rSrSr"SS\\5rU4SjrU4SjrS#Sjr S#Sjr Sr \ R"\RS 5S 5r\ R"\RS 5S 5r\ R$"\S 5\ R$"\R*S :HS5\ R"\R,S5S555r\ R$"\S 5\ R$"\R*S :HS5\ R"\R,S5S555rSr\ R"\R4S5S5r\ R"\R4S5S5rSrSrSrSr Sr!Sr"Sr#Sr$Sr%Sr&S r'S!r(S"r)U=r*$)$SimpleHTTPServerTestCaseibc\rSrSrSrg)(SimpleHTTPServerTestCase.request_handlericrN)r&r'r(r)r*rrrr2r9cs rr2c>[TU]5 [R"5Ul[ R "5n[R"U5 SUl[ R"US9Ul [RRUR5Ul SUR-Ul[RRURS5n[!US5nUR#UR5 UR%5 SSS5 [R&"U5R(n[*R*R-U[*R.R05nUR3SS9Ul[6R8R;UR=5SS 9Ulg!,(df  N=f) NsWe are the knights who say Ni!)dirrtestwbr) microsecondTusegmt) superrTrNgetcwdcwdtempfile gettempdirchdirrmkdtemptempdirrbasename tempdir_namebase_urlrDopenrflushstatst_mtimedatetime fromtimestamptimezoneutcreplacelast_modif_datetimeemailutils formatdate timestamplast_modif_header)r basetempdirtempnametempmtime last_modif __class__s rrTSimpleHTTPServerTestCase.setUpfsA  99;))+  5 ''K8 GG,,T\\:d/// 77<< f5 (D !T JJtyy ! JJL"!**&&44U    ! !# #-#5#5!#5#D !&!7!7  "4"8"1" !s -,F?? G c>[R"UR5 [R"UR 5 [ TU]5 g! N=f![ TU]5 f=fr)rNrFrCshutilrmtreerHrArY)rr`s rrY!SimpleHTTPServerTestCase.tearDown{sP  HHTXX   dll+ G    G  s A AAAA*c^^UU4SjnSmUTlTR5nURT5 URTRU5 UR TR 5 U(aURX55 URTRS5 URTRRSS5S5 URTRS5SS5 TR5 U$)Nc,>TRmSTlgr)fp)readerresponsesr close_connDSimpleHTTPServerTestCase.check_status_and_reason..close_conns[[FHKr rrrsrzConnection should be closed) _close_connr$rrrassertIsNotNonereasonversionmsggetrs)rrjrrrkreris ` @rcheck_status_and_reason0SimpleHTTPServerTestCase.check_status_and_reasons  )}} ! &1 X__-    T ( ))2. )),@'J R#/LM  rc[RRURU5n[R"[RRURU55 Uc[RRUSS9nURURS-U-S-5nURU[R5n[ R""URSUS3SS9n[$R&"5nSUS 3R)US 5nUR+US -U5 UR+US -U5 g![ [ 4a URSU<S35 GN f=f) NzCan not create directory  on current file system surrogatepasserrorsrFquote listing for zh1>)rNrrDrHmkdirOSErrorUnicodeEncodeErrorskipTesturllibparser}rarKrur rhtmlescapesysgetfilesystemencodingrr) rdirname quotednamefullpathrjre displaypathencprefixs rcheck_list_dir_dirname/SimpleHTTPServerTestCase.check_list_dir_dirnames;77<< g6 5 HHRWW\\$,,8 9  ++GO+LJ<<  3j @3 FG++HjmmDkkT]]O1WIQ"?uM '') }B/66sE &E43E4c[RRURU5n[ U5R 5[ R=(d S-n[US5nURU5 SSS5 URURS-5nURU[R 5n["R$R'USS9nUR(R+5nUR-U5 UR/SUS 3R S 5U5 [0R2"US S 9n UR/S U S3R US5U5 URURS-U-5nURU[R US9 g!,(df  GN7=f![a URSU<S35 GN]f=f)Nr=zCan not create file rxrryrzzhref=""asciiFr|>Ekk(%8  +a(//5FGN<<  3j @A $$Xz}}7$K!&% 5 MM0 =34 5 5s0 F?+F-=F?- F<7F?<F?? G#"G#zneed os_helper.TESTFN_NONASCIIcL[RS-nURU5 gN.dir)rTESTFN_NONASCIIrrrs rtest_list_dir_nonascii_dirname7SimpleHTTPServerTestCase.test_list_dir_nonascii_dirnames"++f4 ##G,rcL[RS-nURU5 gN.txt)rrrrrs rtest_list_dir_nonascii_filename8SimpleHTTPServerTestCase.test_list_dir_nonascii_filenames",,v5 $$X.rzz"dq"z'sq'z%A4z %E2%82%ACnamerz&<>'")safer)subTestrrrr})rrrs rtest_list_dir_escape_dirname5SimpleHTTPServerTestCase.test_list_dir_escape_dirnamesa)D4(-++G#)<<#5#5gH#5#M,O)()((s 2A A# cSHonURUS9 US-nURU5 [R"[R R URU55 SSS5 Mq g!,(df  M=f)Nrrr)rrrunlinkrNrrDrH)rrrs rtest_list_dir_escape_filename6SimpleHTTPServerTestCase.test_list_dir_escape_filenamesc)D4(&=,,X6  dllH!EF)()((s AA77 B cSURS3RS5nURURS-5R5nUR US-U5 UR US-U5 URURS-5R5nUR US-U5 UR US-U5 g)Nr~z/SimpleHTTPServerTestCase.test_list_dir_with_query_and_fragments c299(C<<  78==? fy((3 fvox0<< 9:??A fy((3 fvox0rc[R"[RRURS55 SUR S3nUS3nUR U5nURU[R5 URS5nURXBSS9 SU3nUR U5nURU[R5 URS5nURUS5 URXBS S9 SU3nUR U5nURU[R5 URURS5U5 S U3nUS3nUR U5nURU[R5 URS5nURUS 5 g) Nexisting_directoryz2/python.org/..%2f..%2f..%2f..%2f..%2f../%0a%0d/../z/existing_directoryrLocationznon-attack failed!rs//zcExpected Location header to start with a single / and end with a / as this is a directory redirect.zhttps://pypi.org/)rNrrrDrHrJrarur MOVED_PERMANENTLYrrassertNotStartsWithassertStartsWith) rurlexpected_locationrjlocation attack_url attack3_urlattack_scheme_netloc_2slash_urlexpected_scheme_netloc_locations r3test_get_dir_redirect_location_domain_injection_bugLSimpleHTTPServerTestCase.test_get_dir_redirect_location_domain_injection_bugs dll,@ABB4CTCTBUUhi"e1I<<$ $$Xz/K/KL%%j1 :NOY << + $$Xz/K/KL%%j1   40 @  A 3%j << , $$Xz/K/KL ++J79JK ->cU*C'-L,MQ*O'<< ?@ $$Xz/K/KL%%j1 h(;? $$Xz/C/CD BGGLLv|DE<<  89 $$Xz}}=& "'',,t00,? F! GGDMG<<  34 $$Xz}}dC 77g "**,!"3 HHT\\1 % .<< (;<,,Xz7K7KLu- #4 G Fu-sT->T  T #Uc:URURS-SS9nURU[R5 UR UR S5[[UR555 UR UR S5S5 g)Nrrrdzcontent-lengthz content-typezapplication/octet-stream) rarKrur rrrstrrrrrjs r test_head"SimpleHTTPServerTestCase.test_headus<< MMG #F 4 $$Xz}}= ++,<=S^, . ++N;3 5rc[RR5nURUS'UR UR S-US9nUR U[R5 UR[R"SS9-n[RR5n[RRUSS9US'UR UR S-US9nUR U[R5 g)NIf-Modified-Sincerrr)hoursTr?)rVmessageMessagerZrarKrur r rUrP timedeltarWformat_datetime)rrfrjnew_dts rtest_browser_cache+SimpleHTTPServerTestCase.test_browser_cache~s --'')'+'='=#$<<  7<I $$Xz/F/FG))H,>,>Q,GG--'')',{{'B'B6(C(#$<<  7<I $$Xz/F/FGrcBURnU[R"SS9- n[RR 5n[R RUSS9US'URURS-US9nURU[R5 g)Nim)daysTr?rrr) rUrPrrVrrrWrrarKrur r)rdtold_dtrfrjs rtest_browser_cache_file_changed8SimpleHTTPServerTestCase.test_browser_cache_file_changeds  % %h((c22--'')',{{'B'B6(C(#$<<  7<I $$Xz}}=rc[RR5nURUS'SUS'UR UR S-US9nUR U[R5 g)Nr*z If-None-Matchrr) rVrrrZrarKrur r)rrfrjs r,test_browser_cache_with_If_None_Match_headerESimpleHTTPServerTestCase.test_browser_cache_with_If_None_Match_headers`--'')'+'='=#$#& <<  7<I $$Xz}}=rc$URSSS9nURU[R5 URSSS9nURU[R5 URSSS9nURU[R5 g)NrFOOrcustomGETs)rarur rrs rtest_invalid_requests.SimpleHTTPServerTestCase.test_invalid_requestssz<<E<2 $$Xz/I/IJ<<H<5 $$Xz/I/IJ<<F<3 $$Xz/I/IJrcURURS-5nURU[RUR S9 UR SnURX R5 g)Nrrz Last-modified) rarKrur rrrfrrZ)rrjrZs rtest_last_modified+SimpleHTTPServerTestCase.test_last_modifieds^<<  78 $$Xz}}499$M$,,_= *,B,BCrcURURS-5nURU[RUR S9 URURS-5nURU[R 5 URURS-5nURU[R5 URUR5nURU[R5 URURS5URS-5 URURS-5nURU[R5 URURS-5nURU[R5 URURS5URS-5 g) Nrrrrrrrr) rarJrur rrrrrrrs rtest_path_without_leading_slash8SimpleHTTPServerTestCase.test_path_without_leading_slashsl<< 1 1G ;< $$Xz}}499$M<< 1 1H <= $$Xz/C/CD<< 1 1C 78 $$Xz}}=<< 1 12 $$Xz/K/KL ++J7**S0 2<< 1 1H <= $$Xz}}=<< 1 1G ;< $$Xz/K/KL ++J7**X5 7r)rKrCrrUrZrHrJr)+r&r'r(r)rrr2rTrYrurrunittest skipUnlessrrrrskipIfrrplatformrrrrrrrrrrrr-rrrr rrrr* __classcell__r`s@rr7r7bs -/G 1*2-$L,229;-;-229;/;/__XSU __S\\W,BD 55<>->DU -__XSU __S\\W,BD 55<>/>DU /C55<>->-55<>/>/OG1/=b1.f5H$ >>KD77rr7zD#!%s print("Content-type: text/html") print() print("Hello World") a#!%s import os import sys import urllib.parse print("Content-type: text/html") print() content_length = int(os.environ["CONTENT_LENGTH"]) query_string = sys.stdin.buffer.read(content_length) params = {key.decode("utf-8"): val.decode("utf-8") for key, val in urllib.parse.parse_qsl(query_string)} print("%%s, %%s, %%s" %% (params["spam"], params["eggs"], params["bacon"])) zR#!%s import os print("Content-type: text/html") print() print(os.environ["%s"]) a'#!%s import os print("X-ambv: was here") print("Content-type: text/html") print() print("
")
for k, v in os.environ.items():
    try:
        k.encode('ascii')
        v.encode('ascii')
    except UnicodeEncodeError:
        continue  # see: BPO-44647
    print(f"{k}={v}")
print("
") rz7This test can't be run reliably as root (issue #13308).c\rSrSr"SS\\5r\RRS5rSr Sr Sr Sr S rS rS rS rS rSrSrSrSrSrSrSrSrg)CGIHTTPServerTestCaseic,^\rSrSrSrU4SjrSrU=r$)%CGIHTTPServerTestCase.request_handleriNc>URR[S5 [TU]"U0UD6 SSS5 g!,(df  g=f)Nz#http\.server\.CGIHTTPRequestHandler)_test_case_selfassertWarnsRegexDeprecationWarningrAr1)rrkwargsr`s rr1.CGIHTTPServerTestCase.request_handler.__init__sA%%66&:<  $1&1 <<R@UlUR6RCS5 [RRURS5Ul[KUR$S SS 9nURM[NUR6-5 SSS5 [RP"UR$S 5 [RRURS 5Ul[KUR&S SS 9nURM[NUR6-5 SSS5 [RP"UR&S 5 [RRURS 5Ul[KUR(S SS 9nURM[RUR6-5 SSS5 [RP"UR(S 5 [RRURS5Ul[KUR*S SS 9nURM[NUR6-5 SSS5 [RP"UR*S 5 [RRURS5Ul[KUR,S SS 9nURM[TUR6S4-5 SSS5 [RP"UR,S 5 [RRUR S5Ul[KUR.S SS 9nURM[NUR6-5 SSS5 [RP"UR.S 5 [RRURS5Ul+[KURVS SS 9nURM[XUR6-5 SSS5 [RP"URVS 5 [RZ"UR5 g![Da% URG5 URIS5 GNAf=f!,(df  GN=f!,(df  GNg=f!,(df  GN=f!,(df  GNk=f!,(df  GN=f!,(df  GNm=f!,(df  N=f)Nzcgi-binz child-dirsubr;pythonrz0Python executable path is not encodable to utf-8znocgi.pyw)encodingizfile1.pyzfile2.pyzfile3.pyzfile4.py QUERY_STRINGzfile5.pyzfile6.py).r2r"rHrTrNrBrCrDrG parent_dirrrDcgi_dir cgi_child_dir sub_dir_1 sub_dir_2cgi_dir_in_sub_dirr nocgi_path file1_path file2_path file3_path file4_path file5_path_pythonexe_symlinkr can_symlink pythonexer PythonSymlink __enter__r executablerrrYrrLr cgi_file1r cgi_file2 cgi_file4 file6_path cgi_file6rF)rrhfile1file2file3file4file5file6s rrTCGIHTTPServerTestCase.setUps/3,4 99;"**,ww||DOOY? WW\\$,, Ddoou=dnne<"$'',,t~~y"I  ##$     (()#'  " "WW\\$//8DDN&-&;&;DNN&K&U&U&WD # ^^DN N NN ! !' * '',,t C $//3 9R HHY/ 0: %('',,t||Z@ $//3 9U KK DNN2 3: %('',,t||Z@ $//3 9U KK DNN2 3: %('',,t'9'9:F $//3 9U KK DNN2 3: %('',,t||Z@ $//3 9U KK T^^^$DD E: %('',,t'>'> K $//3 9U KK DNN2 3: %('',,t||Z@ $//3 9U KK DNN2 3: %( !O" N MMO MML M N : 9 : 9 : 9 : 9 : 9 : 9 : 9sf)[#\ #\(#\-8#\?%]#]#*#]5+\\ \ \*- \<? ] ] # ]25 ^cSURl[R"UR5 UR (aUR R SSS5 UR(a [R"UR5 UR(a [R"UR5 UR(a [R"UR5 UR(a [R"UR5 UR(a [R"UR5 UR(a [R"UR5 UR(a [R"UR5 [R"UR 5 [R"UR"5 [R"UR$5 [R"UR&5 [R"UR(5 [*R,"[R.R1UR2S55 [R"UR25 [4R7U5 g![4R7U5 f=f)Nzgmon.out)r2r"rNrFrCr9rWr3remover4r5r6r7r8rBrmdirr/r.r2r1r0rrrrDr-rHrYr?s rrYCGIHTTPServerTestCase.tearDown]s/3, ( HHTXX &&''00tTB $//* $//* $//* $//* $//* $//* $//* HHT'' ( HHT\\ " HHT,, - HHT^^ $ HHT^^ $   RWW\\$//:F G HHT__ %  ! !$ 'L ! !$ 's J#K K#c 0SS_S[_S[_SS_SS_SS_SS_S S _S S _S S _S S _S S _SS _SS_SS_SS_SS_SSSSS[SS[SSS. EnUR5Hup#[U[5(a8[ U[ 5(a#UR U[RU5 MR[R"U5nURX4SU<SU<SU<3S9 M g)Nr"rz..z/.//..rz/\z//\z/.//cgi-bin/file1.py/cgi-bin/file1.pyaz//az/az./az./C:/z/C:/z/a/bz/a/b/z/a/b/.z/a/b/dz/a/b/d/fz/a/b/fz/a/fz//f) z /a/b/c/..z /a/b/c/../dz/a/b/c/../d/e/../fz/a/b/c/../d/e/../../fz/a/b/c/../d/e/.././././..//fz../a/b/c/../d/e/.././././..//fz/a/b/c/../d/e/../../../fz/a/b/c/../d/e/../../../../fz/a/b/c/../d/e/../../../../../fz/a/b/c/../d/e/../../../../f/..z /a/b/c/../d/e/../../../../f/../.zpath = z Got: z Wanted: r) IndexErroritems isinstancetype issubclass Exception assertRaisesr_url_collapse_pathr)r test_vectorsrexpectedactuals rtest_url_collapse_path,CGIHTTPServerTestCase.test_url_collapse_path}s|  *  j    $  6   D   3  !4    %  5  5  V  F W! " g# $!#",%-,4.8(.+0.8.2049 <+002ND(D))j9.M.M!!("(";";TC 2248  6"&&:!; 3rcURS5nURUR5URS5UR4SUR -S[ R45 g)NrQ Content-type Hello Worldrq)rarr$rrlinesepr rrs rtest_headers_and_content.CGIHTTPServerTestCase.test_headers_and_contentsTll./  XXZ~6 C dll *K G IrczURS5nURUR[R5 g)Nz)///////////nocgi.py/../cgi-bin/nothere.sh)rarrr rrs rtest_issue19435%CGIHTTPServerTestCase.test_issue19435s+llFG Z%9%9:rc[RRSSSS.5nSS0nURSSX5nUR UR 5S UR -5 g) Nrr)i@)reggsbaconraz!application/x-www-form-urlencodedz/cgi-bin/file2.pyPOSTs1, python, 123456)rr urlencoderarr$rc)rparamsrfrs r test_postCGIHTTPServerTestCase.test_posts^''(f =?!$GHll.H %9DLL%HIrcURS5nUR5 URUR[R 5 g)Nz/cgi-bin/invalid)rar$rrr rrs rtest_invaliduri%CGIHTTPServerTestCase.test_invaliduris4ll-.   Z%9%9:rcSS[R"S5-0nURSSUS9nURSUR-S[ R 4UR5URS 5UR45 g) Ns AuthorizationsBasic s username:passrQr[rrbrqra) base64 b64encoderarrcr rr$rr)rrfrs rtest_authorization(CGIHTTPServerTestCase.test_authorizationsz#i##$45'67ll.wlG  dll *K G XXZ~6 C ErcURS5nURSUR-S[R4UR 5UR S5UR45 g)NrPrbrqrararrcr rr$rrrs rtest_no_leading_slash+CGIHTTPServerTestCase.test_no_leading_slashsTll-.  dll *K G XXZ~6 C ErcJSnU[RS'URS5nURSUR-S[ R 4UR5URS5UR45 UR[RSU5 g)NzTest CGI ServerSERVER_SOFTWARErQrbrqra) rNrOrarrcr rr$rr)r signaturers rtest_os_environ_is_not_altered4CGIHTTPServerTestCase.test_os_environ_is_not_altereds% (1 $%ll./  dll *K G XXZ~6 C E $56 BrcURS5nURSUR-S[R4UR 5UR S5UR45 g)Nz/cgi-bin%2ffile1.pyrbrqrarzrs r#test_urlquote_decoding_in_cgi_check9CGIHTTPServerTestCase.test_urlquote_decoding_in_cgi_checksTll01  dll *K G XXZ~6 C ErcURS5nURSUR-S[R4UR 5UR S5UR45 g)Nz/cgi-bin/child-dir/file3.pyrbrqrarzrs rtest_nested_cgi_path_issue213235CGIHTTPServerTestCase.test_nested_cgi_path_issue21323sTll89  dll *K G XXZ~6 C ErcURS5nURSUR-S[R4UR 5UR S5UR45 g)Nz/cgi-bin/file4.py?a=b?c=dsa=b?c=drqrarzrs r&test_query_with_multiple_question_mark:CJJG I " 1 1 8 89K L ! 1 1 8 89K Ls B B,,!C cSnSU44U4SS4nUHup4[U5nURU5 URSSUS9nUR[R R UR5 SU3RS 5nURXER55 SSS5 M g!,(df  M=f) Nz?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept)rr")))rrq)ACCEPTz text/plainztext/html,text/plainz/cgi-bin/file6.pyr[rz HTTP_ACCEPT=r) rrrarr]r rrrrr$)rbrowser_accepttestsrfr\rs r test_accept!CGIHTTPServerTestCase.test_acceptsU ( *N ;  '  "' G!'*Gg&ll#6wlO  !3!3SZZ@)(4;;GD h 3 '&"'&&s A9B66 C )r9r/r.r2rCr4r5r6r7r8rBr3r-r;r0r1N)r&r'r(r)rrr2rNrcrrTrYr^rdrgrorrrwr{rrrrrrrr*rrrrrs 2-/D 2jj(GK"Z(@(;TI ;J; EECE E E EM4rrc8^\rSrSrSU4SjjrSrSrSrU=r$)SocketlessRequestHandleri c>[R"5n[5URl[ TU]USSUS9 SUlSUlg)N directoryFrn) r Mockr makefile return_valuerAr1 get_calledr)rrrar`s rr1!SocketlessRequestHandler.__init__ sC))+(/ % $ B *rcSUlUR[R5 UR SS5 UR 5 UR RS5 g)NTrprq Data )rrur rrwrxrrr?s rr#SocketlessRequestHandler.do_GETsJ :==) 5  >?rcgrr)rrrs rr$SocketlessRequestHandler.log_messages r)rrr) r&r'r(r)r1r#rr*rrs@rrr s+@  rrc\rSrSrSrSrg)!RejectingSocketlessRequestHandlericBUR[R5 g)NF)rr EXPECTATION_FAILEDr?s rhandle_expect_1003RejectingSocketlessRequestHandler.handle_expect_100 s  556rrN)r&r'r(r)rr*rrrrrsrrc6\rSrSrSrSrSr\S5rSr g)AuditableBytesIOi%c/Ulgrdatasr?s rr1AuditableBytesIO.__init__'s  rc:URRU5 gr)rr)rrs rrAuditableBytesIO.write*s $rc8SRUR5$)Nr)rDrr?s rgetDataAuditableBytesIO.getData-sxx ##rc,[UR5$r)rrr?s r numWritesAuditableBytesIO.numWrites0s4::rrN) r&r'r(r)r1rrpropertyrr*rrrrr%s% $rrc\rSrSr\R "S5rSrSrSr Sr Sr Sr S r S rS rS rS rSrSrSrSrSrSrSrSrSrSrSrSrSrg)BaseHTTPRequestHandlerTestCasei5sHTTP/1.[0-9]+ 200 OKc"[5Ulgr)rhandlerr?s rrT$BaseHTTPRequestHandlerTestCase.setUp=s /1 rc[U5n[5nX RlX0RlURR 5 UR S5 UR 5$Nr)r rrfilerhandle_one_requestseek readlines)rrinputoutputs rsend_typical_request3BaseHTTPRequestHandlerTestCase.send_typical_request@sQ " #  '') A!!rcNURURR5 gr)rrrr?s rverify_get_called0BaseHTTPRequestHandlerTestCase.verify_get_calledIs  //0rcb^SH(mUR[U4SjU55S5 M* g)N)sServer: sDate: sContent-Type: c3D># UHoRT5v M g7fr) startswith).0h fieldNames r IBaseHTTPRequestHandlerTestCase.verify_expected_headers..Ns J'Qi!8!8's r)rsum)rrfrs @rverify_expected_headers6BaseHTTPRequestHandlerTestCase.verify_expected_headersLs)BI   S J' JJA NCrc\URRU5nURU5 gr)HTTPResponseMatchsearchrp)rrjmatchs rverify_http_server_response:BaseHTTPRequestHandlerTestCase.verify_http_server_responsePs&&&--h7 U#rcSURl[Rn[R R [S[55nU"URS5 U"URS5 U"URSS5 U"URSS5 U"URS5 SSS5 WR5nURS U5 URS U5 UR5nURSUS 5 URS US 5 URSUS5 URSUS5 URSUS5 g!,(df  N=f)N) 127.0.0.1i9stderrz/fooz/barz /spam %s.rRu Ÿ beansz"GET /foo\b"ar HTTP/1.0"rz/\x1bbar\x00\x1brz/spam a.u/spam \x1b\x7f\x9f beans.z"GET /foo\\b"ar\x07 HTTP/1.0") rclient_addressrrr patchobjectrr r+ assertNotIn splitlinesr)rr fake_stderrrr3s rtest_unprintable_not_logged:BaseHTTPRequestHandlerTestCase.test_unprintable_not_loggedTs+': #,88 ZZ  sHhj 9[  f -  &8 9  k3 7  k3J K  &E F : %%' ( (!!# feAh' )584 j%(+ 7qB 6aA: 9s A"E'' E5cXURS5nURUS5 URUSS5 UR5 UR USS5 UR UR R S5 UR UR RS5 UR UR RS5 UR UR RS 5 URUR RR5S 5 g) NGET / HTTP/1.1 rrrGET / HTTP/1.1r[rrnr rrrrrr requestlinecommandrrequest_versionassertSequenceEqualrfrTrresults r test_http_1_1,BaseHTTPRequestHandlerTestCase.test_http_1_1i**+DE ((3 $$VAb\2   %JK 113CD --u5 **C0 55zB   !5!5!;!;!=rBrcXURS5nURUS5 URUSS5 UR5 UR USS5 UR UR R S5 UR UR RS5 UR UR RS5 UR UR RS 5 URUR RR5S 5 g) NsGET / HTTP/1.0 rrrrGET / HTTP/1.0r[rHTTP/1.0rrrs r test_http_1_0,BaseHTTPRequestHandlerTestCase.test_http_1_0urrcURS5nUR[U5S5 URUSS5 UR5 g)NsGET / HTTP/0.9 rrr)rrrrrs r test_http_0_9,BaseHTTPRequestHandlerTestCase.test_http_0_9sH**+DE Va( $IJ  rcURS5nURUSS5 URUSURS55 UR UR R 5 g)Ns)GET /spaced out HTTP/1.1 Host: dummy rs HTTP/1.1 400 r )rrrindex assertFalserrrs rtest_extra_space/BaseHTTPRequestHandlerTestCase.test_extra_spacesd**   fQi)9: $$VAfll7.C%DE 001rc\URS5nURUS5 URUSS5 UR5 UR USS5 UR UR R S5 UR UR RS5 UR UR RS5 UR UR RS 5 S nURUR RR5U5 g) Ns(GET / HTTP/1.0 Expect: 100-continue rrrrrr[rr)Expectz 100-continuerrrrfs rtest_with_continue_1_05BaseHTTPRequestHandlerTestCase.test_with_continue_1_0s**+\] ((3 $$VAb\2   %JK 113CD --u5 **C0 55zB/   !5!5!;!;!=wGrcURS5nURUSS5 URUSS5 URUSS5 URUSS5 UR5 URUSS 5 URURR S 5 URURR S 5 URURRS 5 URURRS 5 SnURURRR5U5 g)N(GET / HTTP/1.1 Expect: 100-continue rsHTTP/1.1 100 Continue rrrsHTTP/1.1 200 OK rrrr[rrnr) rrrrrrrrrrrfrTrs rtest_with_continue_1_15BaseHTTPRequestHandlerTestCase.test_with_continue_1_1s**+\] $@A G, $:; $$VAb\2   %JK 113CD --u5 **C0 55zB/   !5!5!;!;!=wGrc[S5n[5n[5nXlX#lSUlSUlSUlURS5 URURS5 g)Nrrnr"r) r rrrrrrrrrrrrrrs r#test_header_buffering_of_send_errorBBaseHTTPRequestHandlerTestCase.test_header_buffering_of_send_errorsb12!#*,  ", 3 ))1-rc[S5n[5n[5nXlX#lSUlUR S5 URURS5 UR5 URURS5 g)Nrrnrrr) r rrrrrsend_response_onlyrrrxrs r+test_header_buffering_of_send_response_onlyJBaseHTTPRequestHandlerTestCase.test_header_buffering_of_send_response_onlysu12!#*,  ",""3' ))1- ))1-rc[S5n[5n[5nXlX#lSUlUR SS5 UR SS5 URURS5 UR5 URUR5S5 URURS5 g) NrrnFoofoobarrsFoo: foo bar: bar r) r rrrrrrwrrrxrrs r$test_header_buffering_of_send_headerCBaseHTTPRequestHandlerTestCase.test_header_buffering_of_send_headers12!#*,  ",E5)E5) ))1- )+JK ))1-rcSn[S5n[5nX RlX0RlSURlURR 5 UR U"U5S5 U"U5RS5nURUSS5 URUSS5 URUS S 5 g) NcUR5nURS5 UR5nURU5 U$r)tellrr$)rposrs r_readAndReseek[BaseHTTPRequestHandlerTestCase.test_header_unbuffered_when_continue.._readAndReseeks3&&(C FF1I668D FF3KKrrrnrrrsHTTP/1.1 100 ContinuerrsHTTP/1.1 200 OK) r rrrrrassertNotEqualr2r)rr*rrrs r$test_header_unbuffered_when_continueCBaseHTTPRequestHandlerTestCase.test_header_unbuffered_when_continues IJ" # '1 $ '') N62C8'--g6 $<= C( $67rcNURn[5UlURS5nURUSS5 UR USS5 UR URR 5 UR[SUSS55S5 Xlg)Nrrs!HTTP/1.1 417 Expectation Failed rrc3*# UH oS:Hv M g7f)sConnection: close Nr)rrs rrMBaseHTTPRequestHandlerTestCase.test_with_continue_rejected..sQLq"::Ls)rrrrrr rr)r usual_handlerrs rtest_with_continue_rejected:BaseHTTPRequestHandlerTestCase.test_with_continue_rejecteds 8: **+\] $JK $$VAb\2 001 QF1RLQQSTU$ rcURSSS--5nURUSS5 URURR5 UR URR [5 g)NsGET xrsHTTP/1.1 414 URI Too Long )rrr rrassertIsInstancerrrs rtest_request_length2BaseHTTPRequestHandlerTestCase.test_request_lengthsd**7TE\+AB $DE 001 dll66rs rtest_too_many_headers4BaseHTTPRequestHandlerTestCase.test_too_many_headers s^** EG $HI 001 113CDrcURS5nSRU5nSnUR[R"USS9R S5U5 g)Ns* / HTTP/1.1rzFr|r)rrDrrrr)rrtexts rtest_html_escape_on_error8BaseHTTPRequestHandlerTestCase.test_html_escape_on_errorsL** 9;&!0 dkk$e4;;GDfMrc8^^UU4SjnUTRl[S5mTRR5 TR [ [ T5 [S5mTRR5 TR [ [ T5 g)Nc:>[T5TRlgr)nextrclose_connection) close_valuesrsrrPBaseHTTPRequestHandlerTestCase.test_close_connection..handle_one_requests,0,>DLL )r)T)FFT)rriterhandlerY StopIterationrJ)rrrLs` @rtest_close_connection4BaseHTTPRequestHandlerTestCase.test_close_connectionsl ?*< 'G}   -|<01   -|>001EFD<< BFF3D   T#4#4 5>>001EFD<< BFF3D   T#4#4 5>>001EFD<< BFF3D   T#4#4 5>>001BCD<< BFF3D   T#4#4 5>>001BCD<< BFF3D   T#4#4 5>>001BCD<< BFF3D   T#4#4 5>>001IJD<< BFF3D   T#4#4 5>>001IJD<< BFF3D   T#4#4 5>>001IJD<< BFF3D   T#4#4 5>>001LMD<< BFF3D   T#4#4 5>>001LMD<< BFF3D   T#4#4 5>>001LMD<< BFF3D   T#4#4 5O: 9 9s R1S%% S3)rmrnrqrjrkrlN) r&r'r(r)rTrwrzrr*rrrrhrh5sU2, 2(6rrhc\rSrSrSrSrg) MiscTestCaseic/n1Skn[[5HTnURS5(dX2;aM [[U5n[USS5S:XdMCUR U5 MV UR [R U5 g)N>r<r> nobody_uid_r'z http.server)r;rrgetattrrassertCountEqual__all__)rr\denylistr module_objects rtest_allMiscTestCase.test_allsp7KDs##t'7#FD1M}lD9]J%  fnnh7rrN)r&r'r(r)rr*rrrrrs 8rrc\rSrSrSr\R "S5S5r\R "S5S5rSr Sr \R "S5S5r \R "S5S 5r S r g ) ScriptTestCaseic [R"[R"[R"[R"[R"SS9S9S9S9S9$)Ncg)N)r"rrrrr2ScriptTestCase.mock_server_class..sr)r8)r7)r)r=)r MagicMockr?s rmock_server_class ScriptTestCase.mock_server_classsF~~..!%#~~(7 "  rzbuiltins.printcUR5n[R"USS9 URUR[ R [ R45 gN ServerClassbindrrr<raddress_familyr7AF_INET6AF_INETrr mock_servers rtest_server_test_unspec&ScriptTestCase.test_server_test_unspecsC,,.  $7  & & __fnn - rcUR5n[R"USS9 URUR[ R [ R45 g)Nr6rrrs rtest_server_test_localhost)ScriptTestCase.test_server_test_localhostsC,,.  +>  & & __fnn - r)z::z'2001:0db8:85a3:0000:0000:8a2e:0370:7334z::1)z0.0.0.0z8.8.8.8rcURHQnUR5n[R"X2S9 UR UR [ R5 MS gr) ipv6_addrsrrr<rrr7rrrrrs rtest_server_test_ipv6$ScriptTestCase.test_server_test_ipv6sDOOD002K KKK ;   [77 I$rcURHQnUR5n[R"X2S9 UR UR [ R5 MS gr) ipv4_addrsrrr<rrr7rrs rtest_server_test_ipv4$ScriptTestCase.test_server_test_ipv4sDOOD002K KKK ;   [77 H$rrN)r&r'r(r)rr rrrrrrrr*rrrrrs   ZZ ! "  ZZ ! " J J  ZZ !J"J  ZZ !I"Irrct[R"[R[R"55 gr)raddModuleCleanuprNrFrBrrr setUpModulers bhh 4r__main__)F collectionsr http.serverrrrrr]rr rNr7rrerur~rorc email.messagerV email.utilsr http.client urllib.parserrDrTrPr/rr ior r r<r test.supportrrrrtest.support.testcaserrequires_working_socketrr0r,TestCaserHrirr7r?r@rArCrhasattrrrrrrrrhrrrr&mainrrrrs $55#     2t,y''*-8$$o-*a(\a(H BL BFd7|d7N     "    & Y'=BJJLA,=ACG4LG4CG4T 7 &(@   }QX%6%6}Q@W6x'8'8W6t 88$$ 89IX&&9Ix5 z MMOr