mς
­fIc           @   sr  d  Z  d k Z d k l Z l Z l Z d k Z d k Z d k Z d k	 Z	 e i
 i d  p# e i
 d j p e i
 i d  o e d e i
 d   n e d Z e i i e d	  Z e i i e d
  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d e i f d     YZ d   Z e d j o e   n d S(   s1   
   Tests for the mhlib module
   Nick Mathewson
N(   s   run_unittests   TESTFNs   TestSkippedt   wint   riscost   atheoss   skipped on %s -- s   too many Unix assumptionst   _MHt   MHs   .mh_profilec         C   s   t  i i |  i d    S(   Nt   /(   t   ost   patht   joint   ft   split(   R	   (    (    t,   /mit/python/lib/python2.4/test/test_mhlib.pyt   normF   s    c         C   si   t  i i |   d } | o" t  i i |  o t |  n t |  d  } | i	 |  | i   d  S(   Ni    t   w(   R   R   R
   t   fnamet   dirt   existst   mkdirst   openR	   t   writet   contentst   close(   R   R   R	   R   (    (    R   t	   writeFile"   s    c         C   s&   t  |   } | i   } | i   | S(   N(   R   R   R	   t   readt   rR   (   R   R   R	   (    (    R   t   readFile*   s    
c         C   sQ   g  } |  i   D] \ } } | d | | f q ~ } t t d i |   d  S(   Ns   %s: %s
t    (	   t   _[1]t   dictt	   iteritemst   kt   vR   R   t
   _mhprofileR   (   R   R   R   R   R   (    (    R   t   writeProfile0   s    7c         C   s0   t  |   }  t t i i t d  d |   d  S(   Nt   contexts   Current-Folder: %s
(   R   t   folderR   R   R   R   t   _mhpath(   R#   (    (    R   t   writeContext4   s    c         C   s3   t  |   }  t t i i t |  d  d |  d  S(   Ns   .mh_sequencess   cur: %s
(   R   R#   R   R   R   R   R$   t   cur(   R#   R&   (    (    R   t   writeCurMessage9   s    c         C   s   t  |   }  d i g  } | i   D] \ } } | d | | f q# ~  } d | | f } t
 t i i t |    t t i i t |  t |   |  d  S(   NR   s   %s: %s
s   %s
%s
(   R   R#   R   R   t   headersR   R   R   t   bodyR   R   R   R   R$   R   t   strt   n(   R#   R+   R(   R)   R   R   R   R   (    (    R   t   writeMessage>   s
    @c           C   s   t  i t i i t  t  S(   N(   t   mhlibR   R   R   t   abspathR$   R    (    (    (    R   t   getMHE   s    c         C   s[   |  i d  } g  } | D]* } t |  d j o | | i   q q ~ } | i   | S(   Ns   
i   (   t   sR
   t   linesR   t   linet   lent   stript   sort(   R0   R   R1   R2   (    (    R   t	   sortLinesH   s    >
c         C   s[   t  i i |   p |  d j o d  Sn t  i i |   \ } } t |  t  i |   d  S(   NR   (	   R   R   R   R   R
   t   baset   fileR   t   mkdir(   R   R7   R8   (    (    R   R   O   s
     
c         C   s₯   t  i i |   p d  Sn xh t  i |   D]W } t  i i |  |  } t  i i |  o t	 |  q+ y t  i
 |  Wq+ q+ Xq+ Wy t  i |   Wn n Xd  S(   N(   R   R   R   R   t   listdirR	   R   t   fullnamet   isdirt   deltreet   unlinkt   rmdir(   R   R;   R	   (    (    R   R=   V   s     t
   MhlibTestsc           B   sG   t  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   Nc      	   C   sm  t  t  t t  t h  d t i i t  <d d <d d < t d d h  d d	 <d
 d <d d <d  t d d h  d d <d
 d	 <d d <d  xT t	 d d  t	 d d d  D]3 } t d | h  d d <d d | <d |  qΑ Wd   } | d d  | d d  | d d  | d d  | d d  | d  d  | d! d  | d! d  d  S("   Nt   Patht   Editort   emacss   ignored-attributes   camping holidayt   inboxi   t   Froms   Mrs. Premiset   Tos   Mrs. Conclusiont   Dates   18 July 2001s   Hullo, Mrs. Conclusion!
i   s   29 July 2001s   Hullo, Mrs. Premise!
i   ie   iΙ   t   widet   nowheret   Subjects   message #%ss   This is message number %s
c      	   C   s4   t  |  | h  d d |  | f <d | |  f  d  S(   NRJ   s   Message %s/%ss    This is message number %s in %s
(   R,   R#   R+   (   R#   R+   (    (    R   t   deep   s    	s   deep/f1i   s   deep/f2i   i   RK   s
   deep/f2/f3(   R=   t   _mhrootR   R$   R!   R   R   R.   R,   t   ranget   iRK   (   t   selfRN   RK   (    (    R   t   setUph   s.    

1		  		c         C   s   t  t  d  S(   N(   R=   RL   (   RO   (    (    R   t   tearDown   s    c         C   s|  t  d  t d d  t   } |  i } | | i d  d  | | i d  d   | | i	   t
 i i t   | | i   d  | i d  | | i   d  | t t
 i i t d   d  | i d  | i d  } | | i   t
 i i t
 i i t  d   | | i   t
 i i t
 i i t  d d	   | | i d
  t
 i i t
 i i t  d d   d  S(   NRD   i   RB   RC   s   not-setRH   R"   s   Current-Folder: wide
s   .mh_sequencesi   t   1(   R%   R'   R/   t   mhRO   t   assertEqualst   eqt
   getprofilet   Nonet   getpathR   R   R.   R$   t
   getcontextt
   setcontextR   R   t
   openfolderRD   t   getfullnamet   getsequencesfilenamet   getmessagefilename(   RO   RS   RU   RD   (    (    R   t
   test_basic   s(    
		"%c         C   sN  t    } |  i } | i   } | i   | | d d d g  | i   } | i   t	 t
 d d d d d d g  } | i   | | |  | i d  } | i   | | t	 t
 d d g   | i d  } | i   | | t	 t
 d d d g   | | i t
 d   t
 d  g  | | i d  g   | | i d  g   d  S(   NRK   RD   RH   s   deep/f1s   deep/f2s
   deep/f2/f3(   R/   RS   RO   RT   RU   t   listfolderst   foldersR5   t   listallfolderst   mapR   t   tfolderst   listsubfolderst   listallsubfolders(   RO   Ra   Rd   RS   RU   (    (    R   t   test_listfolders¬   s&    		

!


%c      
      s  t    } |  i  t d d  | i d      i   }  | t
 d d  t
 d d d      i   d    i d   t t i i t d d   d	     d
   }
 |
 d t
 d d   |
 d t
 d d  t
 d d d   |
 d t
 d d  t
 d d d   |
 d t
 d d   |
 d t
 d d   |
 d t
 d d d   |
 d d g  |
 d d g  |
 d d g  |
 d d g  |
 d d d d g  |
 d t
 d d   |
 d t
 d  d d   |
 d! d d d g  d d" d# d$ d% d& d' d( g } g  } t
 d d)  D] } | | j o | | q(q(~ }   i h  d d g <d* | <d+ | < t t i i t d d   } t |  }  | d, d- d. g  |
 d* |  |
 d/ d g  |
 d0 d d" g  |
 d1 d' d( g  d  S(2   NRH   i7   i   ie   iΙ   i   ic   s   .mh_sequencess   cur: 99
c            s      i |   |  d  S(   N(   RU   R	   t   parsesequencet   seqt   val(   Ri   Rj   (   RU   R	   (    R   t   seqeqΤ   s    s   5-55i8   s   90-108iZ   im   s   10:10i
   i   s   10:+10s   101:10iy   R&   t   .t   previb   t   nextid   s   cur:-3ia   s	   first-curs   150-lasti   s	   prev-nexti   i   i   i   i   i   i   i   t   lowprimet	   lowcomposs   cur: 5s,   lowcompos: 6 8-10 12 14-16 18 20-22 24-28 30s   lowprime: 5 7 11 13 17 19 23 29s
   lowprime:1s
   lowprime:2s   lowprime:-2(   R/   RS   RO   RT   RU   R'   R[   R	   t   listmessagest   allRM   t
   getcurrentt
   setcurrentR   R   R   R   R$   Rk   t	   lowprimesR   t   xRp   t   putsequencest   seqsR6   (   RO   Rr   R	   RS   Ru   R   Rp   Rx   Rv   RU   Rk   (    (   R	   RU   R   t   test_sequenceΗ   sF    		&&&;+c            s  t    } |  i } | i d  |  i d | i   j  t i	 i
 t d  } |  i t i	 i |   | i d      d   } | d  | d  | d  | t   i d   d  |   i   d d d g  t i |  } | i   | | d d d	 g    i d d g  t i |  } | i   | | d
 d d	 g  |   i   d g  | d  | d  | d  | i d  | i d  } | | i   g     i d | d    i d | d  |   i   d d g  | | i   d d g  | t | i d   d    i d | d  |   i   d d g  | t | i d   d    i d d g |  |   i   g   | | i   d d d d d g  | t | i d   d  | i d  | i d  |  i d | i   j  |  i t i	 i |   d  S(   Nt   dummy1c            s-   d |  |  f }   i |  t i |   d  S(   Ns(   From: foo
Subject: %s

Dummy Message %s
(   R+   t   msgR	   t   createmessaget   StringIO(   R+   R{   (   R	   (    R   t   create  s    i   i   i	   s&   From: foo
Subject: 9

Dummy Message 9
t   7t   8t   9s   ,7s   ,8i
   i   i   t   dummy2i   i   s(   From: foo
Subject: 10

Dummy Message 10
i   i   s(   From: foo
Subject: 12

Dummy Message 12
(   R/   RS   RO   RT   RU   t
   makefoldert   assert_R`   R   R   R   R$   R   R[   R	   R~   R   R^   Rq   R:   t   filesR5   t   removemessagest   f2t   movemessaget   copymessaget   refilemessagest   deletefolder(   RO   R   R	   RU   RS   R   R   R~   (    (   R	   R   t   test_modifyώ   s^    		







"c         C   sμ   t    } |  i } | i d  } | i d  } | | i	 d  d  | | i	 d  d  t
 | i    } | | d d d	 g  t
 | i d
     } | | d d g  | | i   d  | | i d  d  | i i   ~ d  S(   NRD   i   RE   s   Mrs. PremiseRF   s   Mrs. Conclusions   Date: 18 July 2001s   From: Mrs. Premises   To: Mrs. Conclusionc         C   s   t  |   d j S(   Ni   (   R3   t   h(   R   (    (    R   t   <lambda>L  s    s   Hullo, Mrs. Conclusion!

i    (   R/   RS   RO   RT   RU   R[   R	   t   openmessageR{   t	   getheaderR6   t   getheadertextR1   t   getbodytextt   fpR   (   RO   R	   R1   RS   R{   RU   (    (    R   t	   test_read<  s    		(	   t   __name__t
   __module__RP   RQ   R_   Rg   Ry   R   R   (    (    (    R   R@   g   s   	'				7	>c           C   s   t  t  d  S(   N(   t   run_unittestR@   (    (    (    R   t	   test_mainW  s    t   __main__(    t   __doc__t   unittestt   test.test_supportR   t   TESTFNt   TestSkippedR   R}   t   sysR-   t   platformt
   startswithRL   R   R   R$   R    R   R   R   R!   R%   R'   R,   R/   R6   R   R=   t   TestCaseR@   R   R   (   R   R/   R    R,   RL   R%   R   R   R6   R   R   R'   R$   R   R   R=   R@   R   R   R}   R   R   R-   R!   (    (    R   t   ?   s2   			6	
											π	