ó {G_Tc@s‡dZddlZddlmZmZmZddlZddlZddlZedde ƒZ ej j dƒs—ej dks—ej j dƒr´ej d ej d ƒ‚ned Zejjed ƒZejjed ƒZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zdejfd„ƒYZd„Z e!dkrƒe ƒndS(s1 Tests for the mhlib module Nick Mathewson iÿÿÿÿN(t run_unittesttTESTFNt import_moduletmhlibt deprecatedtwintriscostatheossskipped on %s -- stoo many Unix assumptionst_MHtMHs .mh_profilecCstjj|jdƒŒS(Nt/(tostpathtjointsplit(tf((s+/usr/local/lib/python2.7/test/test_mhlib.pytnormFscCsftjj|ƒd}|r<tjj|ƒ r<t|ƒnt|dƒ}|j|ƒ|jƒdS(Nitw(R R Rtexiststmkdirstopentwritetclose(tfnametcontentstdirR((s+/usr/local/lib/python2.7/test/test_mhlib.pyt writeFile"s   cCs&t|ƒ}|jƒ}|jƒ|S(N(RtreadR(RRtr((s+/usr/local/lib/python2.7/test/test_mhlib.pytreadFile*s   cCsIg|jƒD]\}}d||f^q }ttdj|ƒƒdS(Ns%s: %s t(t iteritemsRt _mhprofileR (tdicttktvR((s+/usr/local/lib/python2.7/test/test_mhlib.pyt writeProfile0s/cCs0t|ƒ}ttjjtdƒd|ƒdS(NtcontextsCurrent-Folder: %s (RRR R R t_mhpath(tfolder((s+/usr/local/lib/python2.7/test/test_mhlib.pyt writeContext4s cCs3t|ƒ}ttjjt|dƒd|ƒdS(Ns .mh_sequencesscur: %s (RRR R R R&(R'tcur((s+/usr/local/lib/python2.7/test/test_mhlib.pytwriteCurMessage9s cCs–t|ƒ}djg|jƒD]\}}d||f^qƒ}d||f}ttjjt|ƒƒttjjt|t|ƒƒ|ƒdS(NRs%s: %s s%s %s ( RR RRR R R&Rtstr(R'tntheaderstbodyR"R#R((s+/usr/local/lib/python2.7/test/test_mhlib.pyt writeMessage>s  8cCstjtjjtƒtƒS(N(RR R R tabspathR&R (((s+/usr/local/lib/python2.7/test/test_mhlib.pytgetMHEscCsN|jdƒ}g|D]$}t|ƒdkr|jƒ^q}|jƒ|S(Ns i(Rtlentstriptsort(tstlinestline((s+/usr/local/lib/python2.7/test/test_mhlib.pyt sortLinesHs1 cCsUtjj|ƒs|dkr"dStjj|ƒ\}}t|ƒtj|ƒdS(NR(R R RRRtmkdir(Rtbasetfile((s+/usr/local/lib/python2.7/test/test_mhlib.pyROs  cCsžtjj|ƒsdSxftj|ƒD]U}tjj||ƒ}tjj|ƒr`t|ƒq&ytj|ƒWq&q&Xq&Wytj|ƒWnnXdS(N( R R RtlistdirR tisdirtdeltreetunlinktrmdir(RRtfullname((s+/usr/local/lib/python2.7/test/test_mhlib.pyR>Vs t MhlibTestscBsGeZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(cCsWttƒttƒtitjjtƒd6dd6dd6ƒtddidd 6d d 6d d 6dƒtddid d 6dd 6dd 6dƒxPt ddƒt dddƒD]/}td|idd 6d|d6d|ƒq¯Wd„}|ddƒ|ddƒ|ddƒ|ddƒ|ddƒ|d dƒ|d!dƒ|d!dƒdS("NtPathtemacstEditorscamping holidaysignored-attributetinboxis Mrs. PremisetFromsMrs. ConclusiontTos 18 July 2001tDatesHullo, Mrs. Conclusion! is 29 July 2001sHullo, Mrs. Premise! iieiÉtwidetnowheres message #%stSubjectsThis is message number %s cSs2t||id||fd6d||fƒdS(Ns Message %s/%sRLs This is message number %s in %s (R/(R'R,((s+/usr/local/lib/python2.7/test/test_mhlib.pytdeep‚s sdeep/f1isdeep/f2iiRMs deep/f2/f3( R>t_mhrootRR&R$R R R0R/trange(tselftiRM((s+/usr/local/lib/python2.7/test/test_mhlib.pytsetUphs4       &         cCsttƒdS(N(R>RN(RP((s+/usr/local/lib/python2.7/test/test_mhlib.pyttearDownscCs|tdƒtddƒtƒ}|j}||jdƒdƒ||jdƒdƒ||jƒtjj t ƒƒ||j ƒdƒ|j dƒ||j ƒdƒ|t tjjt dƒƒdƒ|j dƒ|jdƒ}||jƒtjjtjj t ƒdƒƒ||jƒtjjtjj t ƒdd ƒƒ||jd ƒtjjtjj t ƒdd ƒƒdS( NRFiRERDsnot-setRJR%sCurrent-Folder: wide s .mh_sequencesit1(R(R*R1t assertEqualt getprofiletNonetgetpathR R R0R&t getcontextt setcontextRR t openfoldert getfullnametgetsequencesfilenametgetmessagefilename(RPtmhteqRF((s+/usr/local/lib/python2.7/test/test_mhlib.pyt test_basic’s(       " %cCsNtƒ}|j}|jƒ}|jƒ||dddgƒ|jƒ}|jƒttddddddgƒ}|jƒ|||ƒ|jdƒ}|jƒ||ttddgƒƒ|jdƒ}|jƒ||ttdddgƒƒ||jtdƒƒtdƒgƒ||jdƒgƒ||jdƒgƒdS(NRMRFRJsdeep/f1sdeep/f2s deep/f2/f3( R1RUt listfoldersR4tlistallfolderstmapRtlistsubfolderstlistallsubfolders(RPR_R`tfoldersttfolders((s+/usr/local/lib/python2.7/test/test_mhlib.pyttest_listfolders¬s(          %csñtƒ}|j‰tddƒ|jdƒ‰ˆjƒ}ˆ|tddƒtdddƒƒˆˆjƒdƒˆjdƒˆtt j j t ddƒƒd ƒ‡‡fd †}|d tdd ƒƒ|d tddƒtdddƒƒ|d tddƒtdddƒƒ|dtddƒƒ|dtddƒƒ|dtdddƒƒ|ddgƒ|ddgƒ|ddgƒ|ddgƒ|ddddgƒ|dtddƒƒ|dtd ddƒƒ|d!dddgƒdd"d#d$d%d&d'd(g}gtdd)ƒD]}||kr'|^q'}ˆj idgd6|d*6|d+6ƒtt j j t ddƒƒ}t|ƒ}ˆ|d,d-d.gƒ|d*|ƒ|d/dgƒ|d0dd"gƒ|d1d'd(gƒdS(2NRJi7iieiÉiics .mh_sequencesscur: 99 csˆˆj|ƒ|ƒdS(N(t parsesequence(tseqtval(R`R(s+/usr/local/lib/python2.7/test/test_mhlib.pytseqeqÔss5-55i8s90-108iZims10:10i is10:+10s101:10iyR)t.tprevibtnextidscur:-3ias first-curs150-lasti—s prev-nextii i iiiiitlowprimet lowcomposscur: 5s,lowcompos: 6 8-10 12 14-16 18 20-22 24-28 30slowprime: 5 7 11 13 17 19 23 29s lowprime:1s lowprime:2s lowprime:-2(R1RUR*R[t listmessagesROt getcurrentt setcurrentRR R R R&t putsequencesR8(RPR_tallRmt lowprimestxRrtseqs((R`Rs+/usr/local/lib/python2.7/test/test_mhlib.pyt test_sequenceÇsN    & &&.     cstƒ}|j}|jdƒ|jd|jƒƒtjjtdƒ}|j tjj |ƒƒ|j dƒ‰‡fd†}|dƒ|dƒ|dƒ|t ˆj dƒƒdƒ|ˆjƒdddgƒtj|ƒ}|jƒ||ddd gƒˆjddgƒtj|ƒ}|jƒ||d d d gƒ|ˆjƒdgƒ|d ƒ|d ƒ|dƒ|jdƒ|j dƒ}||jƒgƒˆjd |dƒˆjd |dƒ|ˆjƒddgƒ||jƒddgƒ|t |j dƒƒdƒˆjd|dƒ|ˆjƒddgƒ|t |j dƒƒdƒˆjddg|ƒ|ˆjƒgƒ||jƒdddddgƒ|t |j dƒƒdƒ|jdƒ|jdƒ|jd|jƒƒ|j tjj |ƒ ƒdS(Ntdummy1cs-d||f}ˆj|tj|ƒƒdS(Ns(From: foo Subject: %s Dummy Message %s (t createmessagetStringIO(R,tmsg(R(s+/usr/local/lib/python2.7/test/test_mhlib.pytcreatesiii s&From: foo Subject: 9 Dummy Message 9 t7t8t9s,7s,8i i i tdummy2iis(From: foo Subject: 10 Dummy Message 10 iis(From: foo Subject: 12 Dummy Message 12 (R1RUt makefoldertassertInRbR R R R&t assertTrueRR[RR^RsR<R4tremovemessagest movemessaget copymessagetrefilemessagest deletefoldert assertNotIn(RPR_R`R R€tfilestf2((Rs+/usr/local/lib/python2.7/test/test_mhlib.pyt test_modifyþs^            "  cCsìtƒ}|j}|jdƒ}|jdƒ}||jdƒdƒ||jdƒdƒt|jƒƒ}||ddd gƒt|jd „ƒƒ}||ddgƒ||jƒd ƒ||jd ƒd ƒ|jj ƒ~dS( NRFiRGs Mrs. PremiseRHsMrs. ConclusionsDate: 18 July 2001sFrom: Mrs. PremisesTo: Mrs. ConclusioncSst|ƒdkS(Ni(R2(th((s+/usr/local/lib/python2.7/test/test_mhlib.pytLssHullo, Mrs. Conclusion! i( R1RUR[t openmessaget getheaderR8t getheadertextt getbodytexttfpR(RPR_R`RRR6((s+/usr/local/lib/python2.7/test/test_mhlib.pyt test_read<s"       ( t__name__t __module__RRRSRaRiR{RR˜(((s+/usr/local/lib/python2.7/test/test_mhlib.pyRBgs '    7 >cCsttƒdS(N(RRB(((s+/usr/local/lib/python2.7/test/test_mhlib.pyt test_mainWst__main__("t__doc__tunittestttest.test_supportRRRR R~tsystTrueRtplatformt startswithtSkipTestRNR R R&R RRRR$R(R*R/R1R8RR>tTestCaseRBR›R™(((s+/usr/local/lib/python2.7/test/test_mhlib.pyts6  !             ð