mò &U²Ic@s/dZdkZdkZdkZdklZdkZdkZdkZdk Z d„Z dei fd„ƒYZ dei fd„ƒYZ dei fd „ƒYZd ei fd „ƒYZd ei fd „ƒYZdei fd„ƒYZdei fd„ƒYZd„Zedjo eƒndS(sRegresssion tests for urllibN(s test_supportcCsEtt|ƒƒdiƒ}t|ƒdjod|}nd|S(s!Escape char as RFC 2396 specifiesiis0%st%N(thextordtchartupperthex_reprtlen(RR((t-/data/zmath/lib/python2.4/test/test_urllib.pyt hexescape s turlopen_FileTestscBsqtZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z RS( s©Test urlopen() opening a temporary file. Try to test as much functionality as possible so as to cut down on reliance on connecting to the Net for testing. cCspd|ii|_ttidƒ}z|i|iƒWd|i ƒXti|_ t i d|i ƒ|_ dS(s'Setup of a temp file to use for testingstest_urllib: %s twbNsfile:%s(tselft __class__t__name__ttexttfilet test_supporttTESTFNtFILEtwritetclosetpathnameturllibturlopent returned_obj(R R((RtsetUps  cCs!|iiƒtitiƒdS(sShut down the open objectN(R RRtostremoveRR(R ((RttearDown&s cCs5x.d D]&}|it|i|ƒd |ƒqWdS( Ntreadtreadlinet readlinestfilenoRtinfotgeturlt__iter__s/object returned by urlopen() lacks %s attribute(sreadsreadlines readlinessfilenosclosesinfoR"s__iter__(tattrR tassert_thasattrR(R R$((Rttest_interface+scCs |i|i|iiƒƒdS(N(R t assertEqualRRR(R ((Rt test_read3scCs<|i|i|iiƒƒ|id|iiƒdƒdS(NtsKcalling readline() after exhausting the file did not return an empty string(R R(RRR(R ((Rt test_readline6scCsF|iiƒ}|it|ƒddƒ|i|d|idƒdS(Nis.readlines() returned the wrong number of linesis"readlines() returned improper text(R RRt lines_listR(RR(R R,((Rttest_readlines<s cCsW|iiƒ}|it|tƒdƒ|iti |t |i ƒƒ|i dƒdS(Nsfileno() did not return an intsTReading on the file descriptor returned by fileno() did not return the expected text( R RR tfile_numR%t isinstancetintR(RRRR(R R.((Rt test_filenoCs $cCs|iiƒdS(N(R RR(R ((Rt test_closeKscCs&|it|iiƒtiƒƒdS(N(R R%R/RR!t mimetoolstMessage(R ((Rt test_infoPscCs |i|iiƒ|iƒdS(N(R R(RR"R(R ((Rt test_geturlSscCs1x*|iiƒD]}|i||iƒqWdS(N(R RR#tlineR(R(R R7((Rt test_iterVs(R t __module__t__doc__RRR'R)R+R-R1R2R5R6R8(((RR s          turlopen_HttpTestscBs)tZdZd„Zd„Zd„ZRS(s.Test urlopen() opening a fake http connection.csHdtifd„ƒY‰dtif‡‡d†ƒY}|ti_dS(Nt FakeSocketcBs2tZd„Zd„Zdd„Zdd„ZRS(NcCsdS(N((R tstr((RtsendallcscCs|S(N(R (R tmodetname((RtmakefiledscCs%|iodSntii||ƒS(NR*(R tclosedtStringIORtamt(R RD((RRes cCs%|iodSntii||ƒS(NR*(R RBRCRtlength(R RE((RRhs (R R9R>RAtNoneRR(((RR<bs   tFakeHTTPConnectioncstZ‡‡d†ZRS(Ncsˆˆƒ|_dS(N(R<tfakedataR tsock(R (RHR<(Rtconnectls(R R9RJ((R<RH(RRGks(RCR<thttplibtHTTPConnectionRGtHTTPt_connection_class(R RHRGR<((RHR<Rtfakehttpas cCstiti_dS(N(RKRLRMRN(R ((Rt unfakehttpqscCs^|idƒz?tidƒ}|i|iƒdƒ|i|iƒdƒWd|iƒXdS(NsHello!shttp://python.org/R*(R RORRtfpR(RRP(R RQ((RR)ts (R R9R:RORPR)(((RR;^s   turlretrieve_FileTestscBsttZdZd„Zd„Zd„Zdd„Zd„Zd„Zd„Z d „Z d „Z d „Z d „Z RS( s(Test urllib.urlretrieve() on local filescCsrg|_|itiƒd|_z0ttidƒ}|i|iƒ|i ƒWdy|i ƒWnnXXdS(Nstesting urllib.urlretrieveR ( R t tempFilestregisterFileForCleanUpRRRRRRR(R R((RR€s  cCs3x,|iD]!}yti|ƒWq q Xq WdS(N(R RSteachRR(R RU((RR•s  cCsdtitii|ƒƒS(Ns file://%s(Rt pathname2urlRtpathtabspathtfilePath(R RY((RtconstructLocalFileUrl›sR*cCsltiƒ\}}z:|i|ƒti|dƒ}|i |ƒ|i ƒWdy|i ƒWnnXX|S(s¹Creates a new temporary file containing the specified data, registers the file for deletion during the test fixture tear down, and returns the absolute path of the file.R N( ttempfiletmkstemptnewFdt newFilePathR RTRtfdopentnewFileRtdataR(R RaR^R]R`((RtcreateNewTempFiležs  cCs|ii|ƒdS(N(R RStappendtfileName(R Rd((RRT®scCsQtidtiƒ}|i|dtiƒ|it|dt i ƒdƒdS(Nsfile:%siisAdid not get a mimetools.Message instance as second returned value( Rt urlretrieveRRtresultR R(R%R/R3R4(R Rf((Rt test_basic±scCsÄdti}|i|ƒti|itiƒ|ƒ}|i ||dƒ|i t i i |ƒdƒt|dƒ}z|iƒ}|iƒWdy|iƒWnnXX|i |i|ƒdS(Ns%s.2iscopy of the file was not madetrb(RRt second_tempR RTRReRZRfR(R%RRWtexistsRRRRR(R RRfRRi((Rt test_copyºs     csOdg‡d†}dti}ˆi|ƒtiˆitiƒ||ƒdS(Nicslˆit|tƒƒˆit|tƒƒˆit|tƒƒˆi||dƒ|dd|d. The Python code of ``'%' + hex(ord())[2:]`` escapes a character properly. Case does not matter on the hex letters. The various character sets specified are: Reserved characters : ";/?:@&=+$," Have special meaning in URIs and must be escaped if not being used for their special meaning Data characters : letters, digits, and "-_.!~*'()" Unreserved and do not need to be escaped; can be, though, if desired Control characters : 0x00 - 0x1F, 0x7F Have no use in URIs so must be escaped space : 0x20 Must be escaped Delimiters : '<>#%"' Must be escaped Unwise : "{}|\^[]`" Must be escaped cCswdiddddgƒ}ti|ƒ}|i||d||fƒti|ƒ}|i||d||fƒdS(NR*tABCDEFGHIJKLMNOPQRSTUVWXYZtabcdefghijklmnopqrstuvwxyzt 0123456789s_.-susing quote(): %s != %ssusing quote_plus(): %s != %s(tjoint do_not_quoteRtquoteRfR R(t quote_plus(R R~Rf((Rttest_never_quotes  cCs|itiiddƒdS(Nit/(R R(RRt func_defaults(R ((Rttest_default_safe(scCsnd}ti|d|ƒ}|i||d||fƒti|d|ƒ}|i||d||fƒdS(Ns<>tsafesusing quote(): %s != %ssusing quote_plus(): %s != %s(tquote_by_defaultRRRfR R(R€(R R†Rf((Rt test_safe,s  cCs?g}tdƒD]}|t|ƒq~}|idƒ|itdƒƒdi|ƒ}x„|D]|}ti |ƒ}|i t |ƒ|d|t |ƒ|fƒti|ƒ}|i t |ƒ|d|t |ƒ|fƒqcW~d}d}ti |ƒ}|i ||d ||fƒ|i ||d ||fƒdS( Ni s <>#%"{}|\^[]`iR*s1using quote(): %s should be escaped to %s, not %ss6using quote_plus(): %s should be escapes to %s, not %ssab[]cds ab%5B%5Dcdsusing quote(): %s != %ssusing quote_plus(): %s != %s(t_[1]trangetnumtchrt should_quoteRcR}RRRRfR R(RR€t partial_quotetexpected(R RRŒRˆRŠRfRRŽ((Rttest_default_quoting7s(-   cCsêtidƒ}|i|tdƒd|tdƒfƒtidƒ}|i|dd|ƒd}|idtdƒƒ}ti|ƒ}|i||d||fƒ|iddƒ}ti|ƒ}|i||d||fƒdS(Nt susing quote(): %s != %st+susing quote_plus(): %s != +s a b cd e fsusing quote_plus(): %s != %s( RRRfR R(RR€tgiventreplacetexpect(R R’RfR”((Rttest_quoting_spaceQs    (R R9R:RR„R‡RR•(((RRys   tUnquotingTestscBs2tZdZd„Zd„Zd„Zd„ZRS(swTests for unquote() and unquote_plus() See the doc string for quoting_Tests for details on quoting and such. cCsg}x—tdƒD]‰}tt|ƒƒ}t|ƒ}ti|ƒ}|i ||d||fƒti |ƒ}|i ||d||fƒ|i |ƒqWdi|ƒ}~ti|ƒ}|i |idƒdd|ƒti|ƒ}|i |idƒdd|ƒdS( Ni€susing unquote(): %s != %ssusing unquote_plus(): %s != %sR*Ris-using quote(): not all characters escaped; %ss/using unquote(): not all characters escaped: %s(t escape_listR‰RŠRR‹R’R”RtunquoteRfR R(t unquote_plusRcR}t escape_stringRl(R RfR’RŠR”RšR—((Rttest_unquotingks(     cCsrdtdƒ}d}ti|ƒ}|i||d||fƒti|ƒ}|i||d||fƒdS(Nsab%sdtctabcdsusing quote(): %s != %ssusing unquote_plus(): %s != %s( RR’R”RR˜RfR R(R™(R R’RfR”((Rttest_unquoting_parts„s  cCszd}|}ti|ƒ}|i||d||fƒ|iddƒ}ti|ƒ}|i||d||fƒdS(Nsare+there+spaces...susing unquote(): %s != %sR‘Rsusing unquote_plus(): %s != %s( R’R”RR˜RfR R(R“R™(R RfR’R”((Rttest_unquoting_pluss  cCs#tidƒ}|i|dƒdS(Nu"br%C3%BCckner_sapporo_20050930.docu brückner_sapporo_20050930.doc(RR˜trR R((R R ((Rttest_unquote_with_unicodeœs(R R9R:R›RžRŸR¡(((RR–ds   turlencode_TestscBs;tZdZd„Zd„Zd„Zd„Zd„ZRS(sTests for urlencode()c Csdddg}ti|ƒ}x1|D])}|i||jd|||fƒq%W|i |i dƒdd||i dƒfƒ|i dƒ}||d}||d}|i|iƒo |iƒd ||fƒ|i t|ƒd d dd |t|ƒd d dfƒd S(sHelper method for testing different input types. 'given' must lead to only the pairs: * 1st, 1 * 2nd, 2 * 3rd, 3 Test cannot assume anything about order. Docs make no guarantee and have possible dictionary input. s1st=1s2nd=2s3rd=3stesting %s: %s not found in %st&is#testing %s: expected 2 '&'s; got %sis1testing %s: '&' not located in proper place in %siis5testing %s: unexpected number of characters: %s != %sN(texpect_somewhereRt urlencodeR’RfRŽR R%t test_typeR(Rltindext amp_locationt on_amp_leftt on_amp_righttisdigitR( R R’R¦R¤R¨RfRŽRªR©((Rthelp_inputtype£s cCs/|ihdd<dd<dd