9NhSSKJr SSKJr SSKJr SSKJr SSKJr SSK J r SSK J r SSK JrJrJr SS KJr SS KJr SS KJrJr SS KJr SS KJr SSKJrJrJr SSKJ r SSK!J"r" SSK#r#SSK$r$SSK%r%SSK&r&SSK'r'SSKr"SS\5r("SS\5r)Sr*Sr+\*S4Sjr,Sr-"SS\5r."SS\5r/"SS \5r0"S!S"\5r1"S#S$\15r2"S%S&\5r3\4S':Xa\Rj"5 gg)()mock)support) socket_helper)NoLogRequestHandler)TestCase)setup_testing_defaults)Headers) BaseHandlerBaseCGIHandler SimpleHandler)util) validator) WSGIServerWSGIRequestHandler) make_server)HTTPConnection)StringIOBytesIOBufferedReader) BaseServer)python_implementationNc$\rSrSrSrSrSrSrg) MockServerzNon-socket HTTP servercR[R"XU5 UR5 gN)r__init__ server_bind)selfserver_addressRequestHandlerClasss 8/opt/alt/python313/lib64/python3.13/test/test_wsgiref.pyrMockServer.__init__sD2EF cXURupXlX lUR5 gr)r server_name server_port setup_environ)rhostports r"rMockServer.server_bind!s'((  r$)r&r'N)__name__ __module__ __qualname____firstlineno____doc__rr__static_attributes__r$r"rrs r$rc$\rSrSrSrSrSrSrg) MockHandler(zNon-socket HTTP handlercXURUlURuUlUlgr)request connectionrfilewfilers r"setupMockHandler.setup*s,,!% DJr$cgrr2r;s r"finishMockHandler.finish.s r$)r8r9r:N)r,r-r.r/r0r<r?r1r2r$r"r4r4(s!1 r$r4cU"SSS/5 S/$)N200 OK Content-Typez text/plainDatezMon, 05 Jun 2006 18:49:54 GMT Hello, world!r2environstart_responses r" hello_apprK2s"8%0  r$crU"SSS/5 SRUSUSUS/5RS5/$) NrBrCrE;HTTP_X_TEST_HEADER QUERY_STRING PATH_INFO iso-8859-1)joinencoderHs r" header_apprT:sX8&1 HH$%w~'>  vl r$sGET / HTTP/1.0 cT[SSU[[5n[[ U55n[ 5n[ R n[5=n[ lURX44S5 U[ lUR5UR54$!U[ lf=f)NP) 127.0.0.1i") rrr4rrsysstderrrfinish_requestgetvalue)appdataserverinpoutolderrerrs r" run_amockrdEs Rj+ >F  'C )C ZZFz!C#*sj*<= <<>3<<> )) s B B'cU"5n[U5ULa[eUHn[U5U:XaM[e [U5 [SU5e![a gf=f)zUtility to compare a generic iterator with an iterable This tests the iterator using iter()/next(). 'make_it' must be a function returning a fresh iterator to be tested (since this may test the iterator twice).zToo many items from .__next__()N)iterAssertionErrornext StopIteration)make_itmatchititems r"compare_generic_iterrnTsi B 8r>Bx4 D R>CC    s A AAcZ\rSrSrSSjrSrSrSrSrSr Sr S r S r S r S rS rg)IntegrationTestsic[5S-[RR5S-nUR USU-S-U=(a S=(d S-S-R S55 g) N/rz(HTTP/1.0 200 OK Server: WSGIServer/0.2 zA Content-Type: text/plain Date: Mon, 05 Jun 2006 18:49:54 GMT zContent-Length: 13 rVz Hello, world!rQ)rrYversionsplit assertEqualrS)rra has_lengthpyvers r" check_helloIntegrationTests.check_helloks{&(3. !!#A&' &(-.066 55 ; =    $VL1 r$c>[5upURU5 gr)rdryrrarcs r"test_plain_hello!IntegrationTests.test_plain_helloxs; r$crSn[[U5up#URUR5SS5 g)NsmGET /p%61th/?query=test HTTP/1.0 X-Test-Header: Python test X-Test-Header: Python test 2 Content-Length: 0 s+Python test,Python test 2;query=test;/path/)rdrTrv splitlines)rr7rarcs r" test_environIntegrationTests.test_environ|s< %  Z1  NN R : r$cr[SSS--S-S9upURUR5SS5 g)NsGET xis HTTP/1.0 r^rsHTTP/1.0 414 URI Too Long)rdrvrr|s r"test_request_length$IntegrationTests.test_request_lengths<'TE\":=M"MN )!,5 7r$cX[[[55upURUSS9 g)NF)rw)rdrrKryr|s r"test_validated_hello%IntegrationTests.test_validated_hellos&Yy12 /r$cSn[[U55up#URURS55 UR UR 5SS5 g)NcU"SS5 S/$)NrBrCz Hello, world!r2rHs r"bad_app>IntegrationTests.test_simple_validation_error..bad_apps 8%B C#$ $r$;A server error occurred. Please contact the administrator.z^AssertionError: Headers (('Content-Type', 'text/plain')) must be of type list: rdr assertTrueendswithrvrrrrarcs r"test_simple_validation_error-IntegrationTests.test_simple_validation_errorsX %Yw/0  J    NN R  0 r$c(Sn/SQnUHsup4URUS9 [U"U55upVURURS55 UR UR 5SU5 SSS5 Mu g!,(df  M=f)Nc^U4SjnU$)Nc>U"TS/5 S/$)NrDztext/plain; charset=utf-8rGr2)rIrJstatuss r"rWIntegrationTests.test_status_validation_errors..create_bad_app..bad_appsv(U'VW())r$r2)rrs` r"create_bad_appFIntegrationTests.test_status_validation_errors..create_bad_apps *Nr$))200z4AssertionError: Status must be at least 4 characters)z20X OKz8AssertionError: Status message must begin w/3-digit code)200OKz;AssertionError: Status message must have a space after code)rrr)subTestrdrrrvr)rrtestsr exc_messagerarcs r"test_status_validation_errors.IntegrationTests.test_status_validation_errorss    $) FV,$^F%;< R!  !1"!5{C -,$),,s AB B cSn[[U55up#URURS55 UR UR 5SS5 g)NcBUSR5 U"SS/5 S/$)N wsgi.inputrBrdata)readess r"r1IntegrationTests.test_wsgi_input..bad_apps( lO " hFG H9 r$rrrgrrs r"test_wsgi_input IntegrationTests.test_wsgi_inputsV Yw/0  J    NN R "2 r$cHSn[[U55up#URURS55 [R R 5SRS5n[5RS5nUS-U-nURSU-S-U5 g)NcU"SSS/5 S/$)NrBrrFzWed, 24 Dec 2008 13:29:32 GMTrr2rs r"r]3IntegrationTests.test_bytes_validation..apps! h=9 9 r$z"GET / HTTP/1.0" 200 4 rascii/s(HTTP/1.0 200 OK Server: WSGIServer/0.2 sV Content-Type: text/plain; charset=utf-8 Date: Wed, 24 Dec 2008 13:29:32 GMT data) rdrrrrYrtrurSrrv)rr]rarcverpyrxs r"test_bytes_validation&IntegrationTests.test_bytes_validations  Ys^,  %?@Akk!!$++G4#%,,W5T C +,125  r$cSn[[U5SS9up#URS[RSSSS/UR 55 g) NcBU"SSS/5 USRS5/$)NrBrCrrPlatin1rSrs r"r]-IntegrationTests.test_cp1252_url..apps1 h.9  kN))(34 4r$sGET /%80 HTTP/1.0rsHTTP/1.0 200 OKsContent-Type: text/plains#Date: Wed, 24 Dec 2008 13:29:32 GMTr$s/)rdrrvrANYr)rr]rarcs r"test_cp1252_url IntegrationTests.test_cp1252_urlsT 5 cN!9; "+6   NN  r$c^^^ ^ ^ [R"[S5m Sn"SS[[5n[ [ RSXS9m URT R5 [R"5mU4Sjn[R"[RU5nUR[R[RU5 Sm [R"5mUUU U U 4Sjn[R"US 9nUR5 T R!5 UR#5 UR%T [R&S - 5 g) N pthread_killc<U"S/5 S[R-/$)NrB)r SOCK_MAX_SIZErHs r"r]4IntegrationTests.test_interrupted_write..apps 8R (G1112 2r$c\rSrSrSrg).WsgiHandlerr2Nr,r-r.r/r1r2r$r" WsgiHandlerr r$rr) handler_classc&>TR5 gr)set)signumframe interrupteds r"signal_handler?IntegrationTests.test_interrupted_write..signal_handlers OO r$c>[TR6nURSS5 UR5nUR S5 T"T[ R 5 TR[S5S9(aOM7[UR 55mSSS5 UR5 g!,(df  N=f)NGETrsd)timeout) rr r7 getresponsersignalSIGUSR1waitfloatlenclose)httpresponser main_threadrreceivedr_s r" run_client;IntegrationTests.test_interrupted_write..run_clients!6#8#89D LL $!!#x c"  fnn="''a'9 x}}/$ JJL$#s A#B22 C)targetr)r get_attributerrrrrHOST addCleanup server_close threadingEventr get_identThreadstarthandle_requestrRrvr) rr]rroriginalr backgroundrrrrr_s @@@@@r"test_interrupted_write'IntegrationTests.test_interrupted_writes,,V^D  3 -/A ]//CS ++,oo'  ==@  v~~x@))+   $%%Z8  7#8#83#>?r$r2N)T)r,r-r.r/ryr}rrrrrrrrrr1r2r$r"rprpis;    7 0  D*  *./@r$rpcv\rSrSrSrSSjrSrSrSSjrSr S r S r S r S r S rSrSrSrSrSrg) UtilityTestsi!cXS.n[R"U5 UR[R"U5U5 URUSU5 URUSU5 U$)N SCRIPT_NAMErPrPr)r rrvshift_path_info)rsn_inpi_inpartsn_outpi_outenvs r" checkShiftUtilityTests.checkShift#sb"5 ##C( --c248 [)&1 ]+F3 r$Ncn0n[R"U5 [U[5(aUR XA[5 OB[U[ 5(aUR XA[ 5 OUR XAU5 X0n[R"U5 URXAU5 gr)r r isinstancerassertIsInstancerrvassertIs)rkeyvaluealtrs r" checkDefaultUtilityTests.checkDefault+s ##C( eX & &  ! !#(H 5 g & &  ! !#(7 3   SXu -i ##C( ch$r$c X[R"U5 URX1U5 gr)r rrv)rr r kws r"checkCrossDefaultUtilityTests.checkCrossDefault;s" ##B' 'r$c |[R"U5 UR[R"U5U5 gr)r rrvapplication_uri)rurirs r" checkAppURIUtilityTests.checkAppURI?s+ ##B' --b1#6r$c |[R"U5 UR[R"X25U5 gr)r rrv request_uri)rrqueryrs r" checkReqURIUtilityTests.checkReqURICs+ ##B' ))"3C8r$cDX4Sjn[XC5 U"5nURURR5 UHnM URURR5 UR 5 UR URR5 g)NcB[R"[U5U5$r)r FileWrapperr)textsizes r"rj%UtilityTests.checkFW..make_itIs##HTN48 8r$)rn assertFalsefilelikeclosedrr)rr!r"rkrjrlrms r"checkFWUtilityTests.checkFWGsy 9 W+ Y ++,D  ++,    **+r$cURSSSSS5 URSSSSS5 URSSSSS5 URSSSSS5 URSS SSS5 g) NrVrsz/xx/az/x/yz/a/x/yz/x/rr;s r"testSimpleShiftsUtilityTests.testSimpleShiftsYsf 3C, 4dB/ Bc2. VS&$7 US&#6r$cURSSSSS5 URSSSSS5 URSSSS S5 URSS SS S 5 URSS SS S5 URSS SS S 5 URSSSSS5 URSSSSS5 URSSSSS5 URSSSSS 5 URSSSSS5 g)Nz/a/bz/../yz..r+r,rVz//yyz/a/b/yz//y/rsz/./yz/./y/z///./..//y/.//z/y/z///z/a/b/z/.//z/x//r*z/a/b/xz/.r-r;s r"testNormalizedShifts!UtilityTests.testNormalizedShifts`s tT: GT2t4 sHb9 Xs; Xr: h<  0$eD r7B7 GR8 Xs; dFB7r$cSSSSSSSSS S S S [54S [54S4HupURX5 M g)N) SERVER_NAMErX) SERVER_PORT80)SERVER_PROTOCOLHTTP/1.0) HTTP_HOSTrX)REQUEST_METHODr)rrV)rPrs) wsgi.versionrr) wsgi.run_oncer)wsgi.multithreadr)wsgi.multiprocessrr wsgi.errors)wsgi.url_schemer)rrr)rr r s r" testDefaultsUtilityTests.testDefaultsmsX ' ! * % $   # # $ 79 % HJ ' & JC   c (! r$cURSSSS9 URSSSS9 URSSSS9 URSSS S9 URSS S S9 URS S S S9 URS SSS9 g)Nr:zfoo.barr5rBhttpsonHTTPS1yesrfoor6r7443)rr;s r"testCrossDefaultsUtilityTests.testCrossDefaultss {9K 0tD 0sC 0uE 0eD }T> }U>r$cUR[R"05S5 UR[R"SS05S5 UR[R"SS05S5 UR[R"SS05S5 UR[R"SS05S5 g)NrrJrMrHrGrLrK)rvr guess_schemer;s r"testGuessSchemeUtilityTests.testGuessSchemes **2.7 **GE?;VD **GD>:GD **GE?;WE **GC=97Cr$c URS5 URSSS9 URSSS9 URSSS S 9 URS S S 9 URSSS S9 URSSS9 URSSSS9 g)Nhttp://127.0.0.1/http://127.0.0.1/spam/spamrhttp://127.0.0.1/sp%E4m/spämzhttp://spam.example.com:2071/zspam.example.com:20712071)r:r6zhttp://spam.example.com/zspam.example.comrFrX)r:r5zhttps://127.0.0.1/rHrIzhttp://127.0.0.1:8000/8000)r6r:)rr;s r" testAppURIsUtilityTests.testAppURIss ,- 0gF 2 K 8-6  C 3*  , ,!/A  C -T: 1v  r$c\URS5 URSSS9 URSSS9 URSSSS 9 URS SSS 9 URS SS S 9 URS SSS 9 URSSSSS9 URSSSSS9 URSSSSSS9 g)NrVrWrXrYrZr[zhttp://127.0.0.1/spammity/spamz /spammityrz http://127.0.0.1/spammity/sp%E4mz"http://127.0.0.1/spammity/spam;hamz /spam;hamz/http://127.0.0.1/spammity/spam;cookie=1234,5678z/spam;cookie=1234,5678z%http://127.0.0.1/spammity/spam?say=nizsay=ni)rrPrOz'http://127.0.0.1/spammity/spam?s%E4y=nizs%E4y=nir)rr;s r" testReqURIsUtilityTests.testReqURIss ,- 0gF 2 K 9#w  8 ;#z  ; =#{  < J#/G  I @#wH  N B#wJ  P 91#wH  Nr$c.URSSSS/5 g)Nږxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxxxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz)r'r;s r"testFileWrapperUtilityTests.testFileWrappers XsXh$78r$cSR5H^nXR5UR5UR54H(nUR [ R "U55 M* M` SR5H^nXR5UR5UR54H(nUR[ R "U55 M* M` g)NzbConnection Keep-Alive Proxy-Authenticate Proxy-Authorization TE Trailers Transfer-Encoding Upgradez4Accept Cache-Control Date Pragma Trailer Via Warning)rutitleupperlowerrr is_hop_by_hopr$)rhopr s r" testHopByHopUtilityTests.testHopByHops 4 %'CIIKciikA 2 23 78B  C %'CIIKciikA  !3!3C!89Br$r2r)r)r,r-r.r/rrrrrr'r.r2rCrOrSr^rarhrpr1r2r$r"rr!sO% (79,$7 8)&?D N&9 :r$rc&\rSrSrSrSrSrSrg) HeaderTestsic S/nUR[[55S5 UR[[/55S5 UR[[USS55S5 UR[USS5R5S/5 UR[USS5R 5S/5 UR[USS5R 5U5 UR [U5R 5U5 [5nUS SUS'URURURUR4H_nURU"S55 URU"S55 URU"S 55 URU"S55 Ma URUSS5 S US'URUS S 5 URURS5S /5 URURSS 5S 5 URURS S 5S 5 URURSS 5S 5 URURS S 5S 5 URUSS 5 URUS S 5 g) N)r*r1rrr*r1rMbarFooFOObazwheezoo)rvrr keysvaluesitems assertIsNot __contains__getget_all __getitem__rr$ setdefault)rtesthms r"testMappingInterface HeaderTests.testMappingInterfaces<{ WY+ WR[)!, WT!W-.q1 a)..03%8 a)002SE: a)//148 ,,.5 I eH% 1==@A OOAeH % OOAeH % OOAeH %   QuX & A 5%(% 5%( 5)5'2 uV,e4 uV,f5 eF3U; eF3V< 5%( 5&)r$c:UR[[S5 g)NrM) assertRaises TypeErrorr r;s r"testRequireListHeaderTests.testRequireLists )We4r$cn[5nUR[U5S5 URSSSS9 URUSS5 UR[U5S5 URSSSS 9 URUR S5SS /5 UR[U5S 5 g) Nz rMruspam)rxzbar; baz="spam"zfoo: bar; baz="spam" rv)cheesez bar; cheesez*foo: bar; baz="spam" Foo: bar; cheese )r rvstr add_headerrrrs r" testExtrasHeaderTests.testExtrass I Q' U5V , 5#45 Q >? U5 - 5)  . 0 Q  r$r2N)r,r-r.r/rrrr1r2r$r"rsrss*@5 r$rsc^\rSrSrSr\"\RR55r Sr Sr g) ErrorHandleriz/Simple handler subclass for testing BaseHandlerc ~[U5 [R"U[5[5[ 5USSS9 g)NT) multithread multiprocess)rr rrr)rrs r"rErrorHandler.__init__s.r" ')WY B4 r$r2N) r,r-r.r/r0dictosrIr} os_environrr1r2r$r"rrs#9 bjj&&()J r$rc\rSrSrSrSrSrg) TestHandleri zASimple handler subclass for testing BaseHandler, w/error passthrucerr2r;s r" handle_errorTestHandler.handle_error s r$r2N)r,r-r.r/r0rr1r2r$r"rr s Kr$rcf\rSrSrSrSrSrSrSrSr Sr S r S r S r S rS rSrSrSrg) HandlerTestsiicNSSSSSS.n[R"[SU5 [SS S 9nUR5 SSS5 S H2nUR [ WS U-5UR S U-5 M4 0n[U5 UR5HupVXT;dM XdU'M URSS SSWR5UR5SSSSS[RS. 5 URUR U5 g!,(df  N=f)Nz/my/homez/my/pathz fr_FR.UTF-8test_script_nametest_server_name)HOMEPATHLANGrr5rYz/override/home)Xr)rtrrrun_once file_wrapperwsgi_zwsgi.rVrXr=FrT) rrrr5rrAr<r>rBr?r@zwsgi.file_wrapper)r swap_attrrr(rvgetattrrIrr}update get_stdin get_stderrr r assertDictEqual)rrhandlerattrexpectedr r s r" testEnvironHandlerTests.testEnvirons-!.-    {L* E!C.>?G  ! ! #F%D   WWgn=$__Wt^< >% x(%**,JC" % - $&"++-"--/""% $!%!%!1!1%  ( W__h7QF Es D D$c[SSS05nUR5 SHnURX!R5 M g)N)rBrrA)r r(assertInrI)rrr s r"testCGIEnvironHandlerTests.testCGIEnvironJs7 4T" - AC MM#yy )Br$c[SS9oR5 URURSS5 [5oR5 URURSS5 g)NrHrIrBrGr)rr(rvrIrs r" testSchemeHandlerTests.testSchemePsU D !??#4 #45g> -* #45f=r$c[5nSH"nUR[[X55 M$ UR[URS5 g)N)_flushrr add_cgi_varsr)r rNotImplementedErrorr_write)rrnames r"testAbstractMethods HandlerTests.testAbstractMethodsVsE M D   171? C  -qxx@r$cSnSnSnSn[5nURU5 URURR 5SR S55 [5nURU5 URURR 5SR S55 [5nURU5 URURR 5S5 [5nURU5 URURR 5S 5 g) Nc>U"S/5 USRS5/$NrBrBrQrrs r" trivial_app14HandlerTests.testContentLength..trivial_app1as% hrN'(// => >r$cHU"S/5"USRS55 /$rrrs r" trivial_app24HandlerTests.testContentLength..trivial_app2es& hrN1./66|D EIr$c8U"S/5 SRS5/$)NrBuтестzutf-8rrs r" trivial_app34HandlerTests.testContentLength..trivial_app3is hrN.55g>? ?r$cU"SS/5 /$)NrB)zContent-Length12345r2rs r" trivial_app44HandlerTests.testContentLength..trivial_app4ms h34 5Ir$z)Status: 200 OK Content-Length: 4 httprQzStatus: 200 OK https-Status: 200 OK Content-Length: 8 тестs)Status: 200 OK Content-Length: 12345 )rrunrvstdoutr\rS)rrrrrrs r"testContentLengthHandlerTests.testContentLength^s  ?  @  M l **,F<(  * M l **,F<( * M l **, 0 1 M l **,  r$cfSnSn[5nURU5 URURR 5SR S55 URUR R 5S5 [5nURU5 URURR 5SUR[UR54-R S5UR-5 URSUR R 55 g)NcU"S/5 /$NrBr2rs r" non_error_app8HandlerTests.testBasicErrorOutput..non_error_app hrNIr$c[S5e)N This should be caught by handlerrgrs r" error_app4HandlerTests.testBasicErrorOutput..error_apps !CD Dr$%Status: 200 OK Content-Length: 0 rQrVzU"S/5"T5 [S5e)NrBrr)rrMSGs r"r4HandlerTests.testErrorAfterOutput..error_apps hrN3  !CD Dr$zStatus: 200 OK rQrg)rrrvrr\rSrrZ)rrrrs @r"testErrorAfterOutput!HandlerTests.testErrorAfterOutputst* E N i **,6,', . &(9(9(;.non_error_apprr$zfHTTP/%s 200 OK\r\nDate: \w{3}, [ 0123]\d \w{3} \d{4} \d\d:\d\d:\d\d GMT\r\n%sContent-Length: 0\r\n\r\nrrQ)z FooBar/1.0Nz Server: %s rV)z1.0z1.1)HTTP/0.9r9zHTTP/1.1)r8FTrr$) rSr origin_server http_versionserver_softwarerrvrr\rrerk) rrstdpatshortpatsswswrtprotors r"testHeaderFormatsHandlerTests.testHeaderFormatssR   3  @ &  &C/)C/52B'?E#E:A&+AO%,N(+%EE-($$Xhh.?.?.AB#E:A&*AO%,N(+%EE-(j((():):).apps h= 9 r$sRStatus: 200 OK Content-Type: text/plain; charset=utf-8 Content-Length: 4 data)rrrvrr\)rr]rs r" testBytesDataHandlerTests.testBytesDatas@  M c   HH     !r$c^^SS0mSmUU4Sjn[5nURU5 URTSS5 g)N close_calledFrcT>U"S/5"T5 "U4SjS[5nU"5$)NrBc(>\rSrSrSrU4SjrSrg)HHandlerTests.testCloseOnError..error_app..CrashyIterableic3*# Sv [S5e7f)Nsblahrrr;s r"__iter__QHandlerTests.testCloseOnError..error_app..CrashyIterable.__iter__s% ,-OPPsc>STS'g)NTr r2)r side_effectss r"rNHandlerTests.testCloseOnError..error_app..CrashyIterable.closes 37L0r$r2N)r,r-r.r/rrr1)rsr"CrashyIterabler sQ88r$r)object)rrrrrs r"r0HandlerTests.testCloseOnError..error_apps( hrN3  8 8"# #r$T)rrrv)rrrrrs @@r"testCloseOnErrorHandlerTests.testCloseOnErrorsA&. * $ N i n5t\rSrSrU4SjrSrSrg)4HandlerTests.testPartialWrite..PartialWriteri cF>USSnTRU5 [U5$)N)extendr)rbpartialwrittens r"write:HandlerTests.testPartialWrite..PartialWriter.write s$BQ%w'7|#r$cgrr2r;s r"flush:HandlerTests.testPartialWrite..PartialWriter.flushsr$r2N)r,r-r.r/r"r%r1)r!sr" PartialWriterr s  $  r$r'r8r9zshould not do partial writesssHTTP/1.0 200 OK Content-Type: text/plain Date: Mon, 05 Jun 2006 18:49:54 GMT Content-Length: 13 Hello, world!) bytearrayr rrYrZassertWarnsRegexDeprecationWarningrrKrv)rr'rIrmsgr!s @r"testPartialWriteHandlerTests.testPartialWrites+  %j1 ')]_cjj' J,  " "#5s ; EE) <    < ;s B Bc\^SS0n[[[4HmURTS9 "U4SjS5n[ 5n[ [ 5U"5X15nUR[5 URUR55 SSS5 M g!,(df  M=f)Nr8r9 exceptionc">\rSrSrU4SjrSrg)EHandlerTests.testClientConnectionTerminations..AbortingWriteri'c>Terr2)rrr0s r"r"KHandlerTests.testClientConnectionTerminations..AbortingWriter.write(s'r$r2Nr,r-r.r/r"r1r/sr"AbortingWriterr2's ((r$r6) ConnectionAbortedErrorBrokenPipeErrorConnectionResetErrorrrr rrrKr$r\)rrIr6rZrr0s @r" testClientConnectionTerminations-HandlerTests.testClientConnectionTerminationss$j1 "   I  2(("!')^-=vOi   !2332  32s A&B B+ c^"SS[5m"U4SjS5n[5nSS0n[[5U"5X#5nUR [ 5 UR SUR55 URUR5 URUR5 URUR5 URUR5 g)Nc\rSrSrSrg)KHandlerTests.testDontResetInternalStateOnException..CustomExceptioni2r2Nrr2r$r"CustomExceptionr>2rr$r?c">\rSrSrU4SjrSrg)JHandlerTests.testDontResetInternalStateOnException..AbortingWriteri9c>Terr2)rrr?s r"r"PHandlerTests.testDontResetInternalStateOnException..AbortingWriter.write:s %%r$r2Nr5)r?sr"r6rA9s  & &r$r6r8r9) ValueErrorrr rrrKrr\assertIsNotNoneresultheadersrrI)rr6rZrIrr?s @r"%testDontResetInternalStateOnException2HandlerTests.testDontResetInternalStateOnException1s j  & &$j1 ')^%5v G i '):; QXX& QYY' QXX& QYY'r$r2N)r,r-r.r/maxDiffrrrrrrrrrrr,r:rHr1r2r$r"rrsLG48l* > A0d=8 =)V! =$24$(r$r__main__)6unittestrrr test.supportrtest.test_httpserversrr wsgiref.utilrwsgiref.headersr wsgiref.handlersr r r wsgirefr wsgiref.validaterwsgiref.simple_serverrrr http.clientriorrr socketserverrplatformrrrrrYrrr4rKrTrdrnrprrsrrrr,mainr2r$r"rZs&5/#GG&@-&00#*    $ "7 *D*u@xu@p`:8`:D5 (5 n  >  ,x(8x(v  z MMOr$