ó {G_Tc@sˆddlmZmZddlZddlZddlZddlZddlZddlm Z dfd„ƒYZ e ƒe_yddl m Z Wn!e k r¸ddl m Z nXdfd„ƒYZd „Zd ed ƒfd ed ƒfd ed ƒfded ƒfded ƒfdifdifdifdidgd 6fded ƒfded ƒfdedƒfdidgd6fdidgd6fdidgd6fdidgd6fd ed ƒfd!ed"ƒfd#id$gd6d%gd6fd&id$d'gd6fd(id)gd*6d+gd,6d-gd.6fd/id)gd*6d+gd,6d-gd.6fd0id)gd*6d+gd,6d-gd.6fd1id2gd36d4gd56d6gd76d8gd96d:gd;6d<gd=6d>gd?6d@gdA6fdBidCgdD6dEgdF6dGgdH6d)gdI6dJgdK6dLgdM6fgZdN„ZdO„ZdP„ZdQejfdR„ƒYZdS„ZedTkr„eƒndS(Uiÿÿÿÿ(t run_unittesttcheck_warningsN(t namedtupletHackedSysModulecBseZgZejZRS((t__name__t __module__targvtsyststdin(((s)/usr/local/lib/python2.7/test/test_cgi.pyR s(tStringIOtComparableExceptioncBs,eZd„Zd„Zd„Zd„ZRS(cCs ||_dS(N(terr(tselfR ((s)/usr/local/lib/python2.7/test/test_cgi.pyt__init__scCs t|jƒS(N(tstrR (R ((s)/usr/local/lib/python2.7/test/test_cgi.pyt__str__scCsQt|tƒsdSt|jj|jƒ}|dkr;|St|jj|jƒS(Niÿÿÿÿi(t isinstancet ExceptiontcmpR t __class__targs(R tanExctx((s)/usr/local/lib/python2.7/test/test_cgi.pyt__cmp__s  cCst|j|ƒS(N(tgetattrR (R tattr((s)/usr/local/lib/python2.7/test/test_cgi.pyt __getattr__&s(RRR RRR(((s)/usr/local/lib/python2.7/test/test_cgi.pyR s   cCs¼i}|dkr/d}d|d<||dks(tmap(tlist((s)/usr/local/lib/python2.7/test/test_cgi.pyt first_eltsjscCstd„|ƒS(NcSs|d|ddfS(Nii((tp((s)/usr/local/lib/python2.7/test/test_cgi.pyRMns(RN(RO((s)/usr/local/lib/python2.7/test/test_cgi.pytfirst_second_eltsmscCs‰t|ƒ}|jdƒtjd|d|ƒ}i}xKt|ƒjƒD]7\}}t|tƒrt|j|ƒpz|j ||s"test string"s "test string"(t assertEqualR%tescapetTrue(R ((s)/usr/local/lib/python2.7/test/test_cgi.pyt test_escape}sc Cs4x-tD]%\}}t|dƒ}|j||dt|ƒƒt|dƒ}|j||dt|ƒƒi|d6}tj|ƒ}tj|ƒ}tjd|ƒ}t|t ƒr|jt |ƒt |ƒƒ|j |j ƒ|j ƒƒ|j |j ƒ|j ƒƒ|j |jƒ|jƒƒ|j|jddƒdƒ|jt |ƒt |ƒƒ|j |j ƒ|j ƒƒ|j|jddƒdƒx’|j ƒD]}||} |j|j|ƒƒ|j ||||ƒ|j|j|dƒ||ƒ|j|j|ƒƒt | ƒdkr3d } nd} y||} Wn7tk r€|j| ƒ|j|j|ƒ| ƒn?X|j| ƒ|j| | d ƒ|j|j|ƒ| d ƒ|j |j|ƒ| ƒ| r¤|j |j ƒt|j ƒƒƒ|j |jƒt|jƒƒƒq¤q¤WqqWdS( NRsError parsing %sRRRSsnonexistent fieldtdefaultii(tparse_strict_test_casesR,RbtreprR%tFormContentDicttSvFormContentDictRURRVR#tassertItemsEqualtkeystvaluesRWtgettgetvaluet assertTruethas_keyt IndexErrort assertFalseRXRPRR( R torigtexpecttdR*tfcdtsdtfstkeyt expect_valt single_valuetval((s)/usr/local/lib/python2.7/test/test_cgi.pyt test_strict‚sR       cCsÀidd6}idd6dd6dd6d d 6}tj|ƒ}x.|jƒD] \}}|j|||ƒqKWx.|jƒD] \}}|j|||ƒq|W|j|jƒ|jƒƒdS( Nsx=1&y=2.0&z=2-3.%2b0&1=1abcRiRg@R4s2-3.+0R5t1abcR3(R%tInterpFormContentDictRWRbRkRm(R R*RuRvR^R_((s)/usr/local/lib/python2.7/test/test_cgi.pyttest_weird_formcontentdict³s "cCsštjdƒtƒt_tjddƒtjddƒ|jtjjƒdƒtjj dƒr–dt_dt_ tjddƒtjdƒndS( NtTestings%ssTesting initlog 1s Testing log 2s Testing initlog 1 Testing log 2 s /dev/nulls Testing log 3s Testing log 4( R%tlogR tlogfptinitlogRbRotostpathtexistsR"tlogfile(R ((s)/usr/local/lib/python2.7/test/test_cgi.pyttest_log¾s    cCsƒdd d„ƒY}|tjƒƒ}|jdddƒ|jdƒidd6}tjd |d |ƒ}|j|jd ƒdS( NtTestReadlineFilecBs&eZd„Zdd„Zd„ZRS(cSs||_d|_dS(Ni(tfiletnumcalls(R RŒ((s)/usr/local/lib/python2.7/test/test_cgi.pyR Ñs cSs6|jd7_|r%|jj|ƒS|jjƒSdS(Ni(RRŒtreadline(R tsize((s)/usr/local/lib/python2.7/test/test_cgi.pyRŽÕscSsB|jd}t||ƒ}t|tƒs>t|||ƒn|S(NRŒ(t__dict__RRtinttsetattr(R tnameRŒR1((s)/usr/local/lib/python2.7/test/test_cgi.pyRÜs  N(RRR R"RŽR(((s)/usr/local/lib/python2.7/test/test_cgi.pyR‹Ðs  RiiitPUTRR+RSi((ttempfilet TemporaryFiletwriteRTR%RUt assertGreaterR(R R‹tfR*Ry((s)/usr/local/lib/python2.7/test/test_cgi.pyttest_fieldstorage_readlineËs  cCstjƒ}|j|ƒ|jtt|ƒƒ|jt|ƒt|jƒƒƒ|jj t ddƒdƒƒ|j |ƒdS(NtMockFieldStorageR“t fieldvalue( R%RURst assertRaisest TypeErrortboolRbRORltappendRRp(R Ry((s)/usr/local/lib/python2.7/test/test_cgi.pyttest_fieldstorage_invalidís   "c Cs)idd6dd6dd6}d}tjdt|ƒd |ƒ}|jt|jƒd ƒid d 6dd 6dd6idd 6dd 6dd6idd 6dd 6dd6idd 6dd 6dd6g}xdtt|jƒƒD]M}xD||jƒD]2\}}t |j||ƒ}|j||ƒqëWqÔWdS(NRRsTmultipart/form-data; boundary=---------------------------721837373350705526688164684Rt558R s-----------------------------721837373350705526688164684 Content-Disposition: form-data; name="id" 1234 -----------------------------721837373350705526688164684 Content-Disposition: form-data; name="title" -----------------------------721837373350705526688164684 Content-Disposition: form-data; name="file"; filename="test.txt" Content-Type: text/plain Testing 123. -----------------------------721837373350705526688164684 Content-Disposition: form-data; name="submit" Add -----------------------------721837373350705526688164684-- R+RSitidR“tfilenamet1234RYttitleR-RŒstest.txts Testing 123. tsubmits Add ( R%RUR RbR#ROR"trangeRWR( R R*tpostdataRyRuRR^texptgot((s)/usr/local/lib/python2.7/test/test_cgi.pyttest_fieldstorage_multipartõscsld}dˆ_‡fd†}|d|dƒ|d|ddƒ|d|ddd|dƒdS(Niicsadjddƒ|}itt|ƒƒd6dd6dd6}ˆjt||ƒi|d 6ƒdS( Nsq ---123 Content-Disposition: form-data; name="upload"; filename="fake.txt" Content-Type: text/plain %s ---123-- s s R s"multipart/form-data; boundary=-123RRRtupload(treplaceRR#RbR`(tcontentRZRS(R (s)/usr/local/lib/python2.7/test/test_cgi.pytchecks  Rs R4i(R"tmaxDiff(R tmaxlineR°((R s)/usr/local/lib/python2.7/test/test_cgi.pyt#test_fieldstorage_multipart_maxlines  tvalue1tkey1tvalue2xtvalue2ytkey2tvalue3tkey3tvalue4tkey4cCsZd}itt|ƒƒd6dd6dd6dd6}t||ƒ}|j|j|ƒdS( Ns$key2=value2x&key3=value3&key4=value4R s!application/x-www-form-urlencodedRskey1=value1&key2=value2yRRR(RR#R`Rbt _qs_result(R RZRSR_((s)/usr/local/lib/python2.7/test/test_cgi.pyttestQSAndUrlEncode4s cCsZd}itt|ƒƒd6dd6dd6dd6}t||ƒ}|j|j|ƒdS( Ns¼ ---123 Content-Disposition: form-data; name="key2" value2y ---123 Content-Disposition: form-data; name="key3" value3 ---123 Content-Disposition: form-data; name="key4" value4 ---123-- R s"multipart/form-data; boundary=-123Rskey1=value1&key2=value2xRRR(RR#R`RbR½(R RZRSR_((s)/usr/local/lib/python2.7/test/test_cgi.pyttestQSAndFormData?s cCszd}itt|ƒƒd6dd6dd6dd6}|jjƒ}|jid d 6ƒt||ƒ}|j||ƒdS( NsF ---123 Content-Disposition: form-data; name="key2" value2y ---123 Content-Disposition: form-data; name="key3" value3 ---123 Content-Disposition: form-data; name="key4" value4 ---123 Content-Disposition: form-data; name="upload"; filename="fake.txt" Content-Type: text/plain this is the content of the fake file ---123-- R s"multipart/form-data; boundary=-123Rskey1=value1&key2=value2xRRRs%this is the content of the fake file R­(RR#R½tcopytupdateR`Rb(R RZRSR]R_((s)/usr/local/lib/python2.7/test/test_cgi.pyttestQSAndFormDataFileXs   cCsTtdtfƒ<|jidgd6dgd6dgd6tjdƒƒWdQXdS( Ns9cgi.parse_qs is deprecated, use urlparse.parse_qs insteadtA1R1tB3tBtB2R2sa=A1&b=B2&B=B3(RtPendingDeprecationWarningRbR%tparse_qs(R ((s)/usr/local/lib/python2.7/test/test_cgi.pyttest_deprecated_parse_qs{s 'c Cs?tdtfƒ'|jd d d gtjdƒƒWdQXdS( Ns;cgi.parse_qsl is deprecated, use urlparse.parse_qsl insteadR1RÃR2RÆRÅRÄsa=A1&b=B2&B=B3(R1sA1(R2sB2(RÅsB3(RRÇRbR%t parse_qsl(R ((s)/usr/local/lib/python2.7/test/test_cgi.pyttest_deprecated_parse_qsl‚s cCsa|jtjdƒdifƒ|jtjdƒdifƒ|jtjdƒdidd6fƒ|jtjdƒdidd6fƒ|jtjdƒdidd6d d 6fƒ|jtjd ƒd id d6fƒ|jtjdƒd idd6fƒ|jtjdƒd idd6dd6fƒ|jtjdƒdidd6dd6fƒdS(Ns text/plainstext/vnd.just.made.this.up ; stext/vnd.just.made.this.upstext/plain;charset=us-asciisus-asciitcharsetstext/plain ; charset="us-ascii"s,text/plain ; charset="us-ascii"; another=opttopttanothers attachment; filename="silly.txt"t attachments silly.txtR¤s#attachment; filename="strange;name"s strange;names-attachment; filename="strange;name";size=123;t123Rs-form-data; name="files"; filename="fo\"o;bar"s form-datatfilesR“sfo"o;bar(RbR%t parse_header(R ((s)/usr/local/lib/python2.7/test/test_cgi.pyttest_parse_header‰s6           (RRReR~RRŠRšR¡R¬R³R½R¾R¿RÂRÉRËRÓ(((s)/usr/local/lib/python2.7/test/test_cgi.pyRa{s&  1 "  "     #  cCsttƒdS(N(RRa(((s)/usr/local/lib/python2.7/test/test_cgi.pyt test_main§st__main__(ttest.test_supportRRR%R†RR•tunittestt collectionsRRt cStringIOR t ImportErrorR R,R$RgRPRRR`tTestCaseRaRÔR(((s)/usr/local/lib/python2.7/test/test_cgi.pytsz           '''                ÿ-