
    z%ip                       d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
mZ d dlmZ d dlmZ d dlZd dlZd dlZd dlZej&                  s ej(                  d       G d d      Z G d d	e      Z G d
 deej.                        Z G d deej.                        Z G d de      Z G d de      Z G d deej.                        Z G d deej.                        Z G d deej.                        Z G d deej.                        Z G d d      Z  G d dejB                        Z" G d dej.                        Z# G d  d!eej.                        Z$ G d" d#e$ej.                        Z% G d$ d%      Z& G d& d'e&e$      Z' G d( d)e$ej.                        Z( G d* d+e$ej.                        Z) G d, d-e&e$      Z* G d. d/eej.                        Z+ G d0 d1e      Z, G d2 d3e,ej.                        Z- G d4 d5e,ej.                        Z.d6Z/d7Z0 G d8 d9ej.                        Z1d:Z2e2jg                  d;      Z4g d<Z5d=Z6 G d> d?ej.                        Z7d@ Z8e9dAk(  r ejt                          yy)B    N)support)	os_helper)socket_helperztest requires gethostname()c                       e Zd Zej                  ej
                  ej                  ej                  ej                  ej                  fZ
d Zd Zy)TestBasec                    | j                  |t        j                  j                         | j                  |t        j                         t
        D ]&  \  }}| j                  ||j                  |             ( | j                  |j                                | j                  t        |j                               t        t                     t        t              D ]  \  }}|j                  |      }| j                  |t        j                  j                         | j                  |t        j                         | j                  |j                         |        y N)assertIsInstanceemailmessageMessagemailbox_sample_headersassertInget_all
assertTrueis_multipartassertEquallenget_payload_sample_payloads	enumerateassertNotIsInstance)selfmsgkeyvalueipayloadparts          E/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_mailbox.py_check_samplezTestBase._check_sample   s    c5==#8#89c7??3) 	3JCMM%S!12	3((*+S__./5E1FG#$45 	:JAw??1%D!!$(=(=>$$T7??;T--/9		:    c                     t         j                  j                  |      rt        j                  |       y t         j                  j                  |      rt        j                  |       y y r	   )ospathisdirr   rmtreeexistsunlink)r   targets     r!   _delete_recursivelyzTestBase._delete_recursively,   sC    77== V$WW^^F#V$ $r#   N)__name__
__module____qualname__r   r   MaildirMessagemboxMessage	MHMessageBabylMessageMMDFMessageall_mailbox_typesr"   r,    r#   r!   r   r      sF     '*@*@ ,,g.?.? --w/B/BD:%r#   r   c                      e Zd ZdZdZdZd Zd Zd Z e	j                  d      Zd Zd Zd	 Zd
 Z e	j                  d      j!                  d      Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd4dZ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# Z(d$ Z)d4d%Z*d& Z+d4d'Z,d( Z-d4d)Z.d* Z/d4d+Z0d, Z1d- Z2d. Z3d/ Z4d0 Z5d1 Z6d2 Z7d3 Z8y)5TestMailboxNzFrom: foo

%s
c                     t         j                  | _        | j                  | j                         | j	                  | j                        | _        y r	   )r   TESTFN_pathr,   _factory_boxr   s    r!   setUpzTestMailbox.setUp;   s5    %%
  ,MM$**-	r#   c                 n    | j                   j                          | j                  | j                         y r	   )r=   closer,   r;   r>   s    r!   tearDownzTestMailbox.tearDown@   s"    		  ,r#   c           
         g }|j                  | j                  j                  | j                  dz               | j	                  t        | j                        d       |j                  | j                  j                  t        j                  t                           | j	                  t        | j                        d       |j                  | j                  j                  t        j                  t                           | j	                  t        | j                        d       |j                  | j                  j                  t        j                  t                           | j	                  t        | j                        d       |j                  | j                  j                  t                     | j	                  t        | j                        d       |j                  | j                  j                  t                     | j	                  t        | j                        d       | j                  t              5  |j                  | j                  j                  t        j                   t        j                  t              d	                   d d d        | j	                  t        | j                        d
       | j	                  | j                  j#                  |d         | j                  dz         dD ]#  }| j%                  | j                  ||             % y # 1 sw Y   xY w)Nr                     utf-8encoding   )rD   rE   rF   rG   rH   rI   )appendr=   add	_templater   r   r   r   _sample_messager   message_from_stringioBytesIO_bytes_sample_messageassertWarnsDeprecationWarningTextIOWrapper
get_stringr"   )r   keysr   s      r!   test_addzTestMailbox.test_addD   s$   DIIMM$..1"456TYY+DIIMM'///"BCDTYY+DIIMM%";";O"LMNTYY+DIIMM"**-B"CDETYY+DIIMM/23TYY+DIIMM"789TYY+01 	XKK		  ,A!BWUW X	X 	TYY+--d1g68JK# 	3Atyya12	3	X 	Xs   AL44L=u{               From: foo
            Subject: Falinaptár házhozszállítással. Már rendeltél?

            0
            c                 >   | j                   j                  | j                  j                  d            }| j	                  t        | j                         d       | j	                  | j                   j                  |      | j                  j                  d             y )Nlatin-1rD   )r=   rO   _nonascii_msgencoder   r   	get_bytesr   r   s     r!   "test_add_invalid_8bit_bytes_headerz.TestMailbox.test_add_invalid_8bit_bytes_headerb   sp    iimmD..55i@ATYY+,,S1%%i0	2r#   c                     | j                   j                         d   }| j                  j                  |j	                  d            }| j                  | j                  j                  |      d       y )NrD   r]   zZSubject: =?unknown-8bit?b?RmFsaW5hcHThciBo4Xpob3pzeuFsbO104XNzYWwuIE3hciByZW5kZWx06Ww/?=

)r^   
splitlinesr=   rO   r_   r   rY   )r   subjr   s      r!   &test_invalid_nonascii_header_as_stringz2TestMailbox.test_invalid_nonascii_header_as_stringh   sZ    !!,,.q1iimmDKK	23--c2-	.r#   c                 B   | j                  t        d      5  | j                  j                  | j                         d d d        | j                  j                          | j                  t        | j                        d       | j                          y # 1 sw Y   YxY wNz
ASCII-onlyr   )	assertRaisesRegex
ValueErrorr=   rO   r^   flushr   r   assertMailboxEmptyr>   s    r!   &test_add_nonascii_string_header_raisesz2TestMailbox.test_add_nonascii_string_header_raiseso   so    ##J= 	.IIMM$,,-	.		TYY+!		. 	.s   &BBc                     G d dt               dfd}t        j                  | t        j                  j
                  d|       | j                        5  | j                  j                  t        j                  d             d d d        | j                  t        | j                        d       | j                  j                          | j                          y # 1 sw Y   YxY w)Nc                       e Zd Zy)JTestMailbox.test_add_that_raises_leaves_mailbox_empty.<locals>.CustomErrorNr-   r.   r/   r6   r#   r!   CustomErrorrp   w   s    r#   rr   za fake errorc                             r	   r6   )argskwrr   exc_msgs     r!   raiserzETestMailbox.test_add_that_raises_leaves_mailbox_empty.<locals>.raiserz   s    g&&r#   flattenu   From: Alphösor   )	Exceptionr   patchr   	generatorBytesGeneratorri   r=   rO   rR   r   r   rA   rl   )r   rw   rr   rv   s     @@r!   )test_add_that_raises_leaves_mailbox_emptyz5TestMailbox.test_add_that_raises_leaves_mailbox_emptyv   s    ))) 	'dEOO::IvN##K9 	GIIMM%334DEF	GTYY+		!		G 	Gs   /C##C,u0          From: foo@bar.com
        To: báz
        Subject: Maintenant je vous présente mon collègue, le pouf célèbre
        	Jean de Baddie
        Mime-Version: 1.0
        Content-Type: text/plain; charset="utf-8"
        Content-Transfer-Encoding: 8bit

        Да, они летят.
        rJ   c           	         | j                   j                  | j                        }| j                  | j                   j	                  |      | j                         | j                   j                  |      5 }| j                  |j                         | j                  j                  dt        j                  j                                      d d d        | j                  | j                   |   j                         d       y # 1 sw Y   7xY w)N   
u   Да, они летят.
)r=   rO   _non_latin_bin_msgr   r`   get_filereadreplacer%   linesepr_   r   r   r   fs      r!   test_add_8bit_bodyzTestMailbox.test_add_8bit_body   s    iimmD334,,S100	2YY$ 	6QVVX!44<<U "

 1 1 356	6 	33354	6		6 	6s   6ADDc                 t   t        j                  d      5 }|j                  t               |j	                  d       | j
                  j                  |      }d d d        | j                  | j
                  j                        j                  d      t        j                  d             y # 1 sw Y   WxY wNwb+r   r   )
tempfileTemporaryFilewriterU   seekr=   rO   r   r`   splitr   r   r   s      r!   test_add_binary_filez TestMailbox.test_add_binary_file   s    ##E* 	#aGG)*FF1I))--"C	# 	,,S177>!''.	0		# 	#s   AB..B7c                    t        j                  d      5 }|j                  | j                         |j	                  d       | j
                  j                  |      }d d d        | j                  | j
                  j                        j                  d      | j                  j                  d             y # 1 sw Y   ]xY wr   )
r   r   r   r   r   r=   rO   r   r`   r   r   s      r!   test_add_binary_nonascii_filez)TestMailbox.test_add_binary_nonascii_file   s    ##E* 	#aGGD++,FF1I))--"C	# 	,,S177>##))%0	2		# 	#s   AB::Cc                    t        j                  dd      5 }|j                  t               |j	                  d       | j                  t              5  | j                  j                  |      }d d d        d d d        | j                  | j                  j                        j                  d      t        j                  d             y # 1 sw Y   _xY w# 1 sw Y   cxY w)Nw+rJ   rK   r   r   )r   r   r   rQ   r   rV   rW   r=   rO   r   r`   r   rU   r   s      r!   test_add_text_file_warnsz$TestMailbox.test_add_text_file_warns   s    ##D7; 	'qGGO$FF1I!!"45 'iimmA&'	'
 	,,S177>!''.	0' '	' 	's#   <CC0CC	CC#c                 >   | j                  t              5  | j                  j                  t	        j
                  | j                  dz              }d d d        | j                  | j                  j                        | j                  dz         y # 1 sw Y   BxY w)N0)	rV   rW   r=   rO   rS   StringIOrP   r   rY   ra   s     r!   test_add_StringIO_warnsz#TestMailbox.test_add_StringIO_warns   sv    01 	C))--DNNS,@ ABC	C--c2DNNS4HI	C 	Cs   <BBc                    | j                  t              5  | j                  t        d      5  | j                  j                  t        j                  | j                               d d d        d d d        | j                  t        | j                        d       | j                  j                          | j                          y # 1 sw Y   axY w# 1 sw Y   exY wrh   )rV   rW   ri   rj   r=   rO   rS   r   r^   r   r   rA   rl   r>   s    r!   !test_add_nonascii_StringIO_raisesz-TestMailbox.test_add_nonascii_StringIO_raises   s    01 	?''
LA ?		bkk$*<*<=>?	? 	TYY+		!	? ?	? 	?s"   C9C&CC	CCc                 N    | j                  | j                  j                         y r	   )_test_remove_or_delitemr=   remover>   s    r!   test_removezTestMailbox.test_remove   s    $$TYY%5%56r#   c                 N    | j                  | j                  j                         y r	   )r   r=   __delitem__r>   s    r!   test_delitemzTestMailbox.test_delitem   s    $$TYY%:%:;r#   c                      j                   j                   j                  dz         j                   j                   j                  dz         j                  t	         j                         d                j                  t	         j                         d        j                  t         fd        j                  t        fd        j                   j                   j                         j                  dz          j                   j                   j                  dz         j                  t	         j                         d                j                  t	         j                         d        j                  t         fd        j                  t        fd        j                   j                   j                         j                  dz                  j                  t	         j                         d        j                  t         fd        j                  t        fd	       y )
Nr   rD   rE   c                  "    j                       S r	   r=   key0r   s   r!   <lambda>z5TestMailbox._test_remove_or_delitem.<locals>.<lambda>       DIIdO r#   c                              S r	   r6   )r   methods   r!   r   z5TestMailbox._test_remove_or_delitem.<locals>.<lambda>       F4L r#   c                  "    j                       S r	   r   )key2r   s   r!   r   z5TestMailbox._test_remove_or_delitem.<locals>.<lambda>   r   r#   c                              S r	   r6   )r   r   s   r!   r   z5TestMailbox._test_remove_or_delitem.<locals>.<lambda>   r   r#   c                  "    j                       S r	   r   )key1r   s   r!   r   z5TestMailbox._test_remove_or_delitem.<locals>.<lambda>   r   r#   c                              S r	   r6   )r   r   s   r!   r   z5TestMailbox._test_remove_or_delitem.<locals>.<lambda>   r   r#   )r=   rO   rP   r   r   assertRaisesKeyErrorrY   )r   r   r   r   r   s   ``@@@r!   r   z#TestMailbox._test_remove_or_delitem   s   yy}}T^^a/0yy}}T^^a/0TYY+tTYY+($;<($89--d3T^^a5GHyy}}T^^a/0TYY+tTYY+($;<($89--d3T^^a5GHtTYY+($;<($89r#   c                 Z     j                   j                   j                  dz         j                   j                   j                  dz        } j                  t	         j                         d        j                   j                          j                  t	         j                         d        j                  t         fd        j                   j                          j                  t	         j                         d        j                  t         fd       y )Nr   rD   rE   c                  "    j                       S r	   r   r   s   r!   r   z*TestMailbox.test_discard.<locals>.<lambda>   r   r#   c                  "    j                       S r	   r   r   s   r!   r   z*TestMailbox.test_discard.<locals>.<lambda>   r   r#   )r=   rO   rP   r   r   discardr   r   )r   repetitionsr   r   s   `  @r!   test_discardzTestMailbox.test_discard   s    yy}}T^^a/0yy}}T^^a/0TYY+		$TYY+($;<		$TYY+($;<r#   c                    | j                   j                  | j                  dz        }| j                   j                  |      }| j	                  |d   d       | j	                  |j                         d       | j                  | j                   j                  d             | j                  | j                   j                  dd      d       | j                   j                          | j                  | j                        | _         | j                   j                  | j                  dz        }| j                   j                  |      }| j	                  |d   d       | j	                  |j                         d       y )Nr   fromfoo0
FrD   1
)r=   rO   rP   getr   r   assertIsNoneassertIsrA   r<   r;   )r   r   r   r   s       r!   test_getzTestMailbox.test_get   s   yy}}T^^a/0iimmD!Ve,*E2$))--./diimmE5159		MM$**-	yy}}T^^a/0iimmD!Ve,*E2r#   c                 |     j                   j                   j                  dz         j                      } j                  |d   d        j                  |j	                         d        j                  t         fd        j                   j                          j                  t         fd       y )Nr   r   r   r   c                  "     j                   d   S Nr   r   r>   s   r!   r   z*TestMailbox.test_getitem.<locals>.<lambda>       DIIe,< r#   c                  "    j                       S r	   r   r   s   r!   r   z*TestMailbox.test_getitem.<locals>.<lambda>  r   r#   )r=   rO   rP   r   r   r   r   r   )r   r   r   s   ` @r!   test_getitemzTestMailbox.test_getitem   s    yy}}T^^a/0iioVe,*E2($<=		$($;<r#   c                    | j                   j                  | j                  dz        }| j                   j                  t              }| j                   j	                  |      }| j                  |t        j                         | j                  |d   d       | j                  |j                         d       | j                  | j                   j	                  |             y )Nr   r   r   r   )r=   rO   rP   rQ   get_messager
   r   r   r   r   r"   )r   r   r   msg0s       r!   test_get_messagezTestMailbox.test_get_message  s    yy}}T^^a/0yy}}_-yy$$T*dGOO4fu-))+U34990067r#   c                 ~   | j                   j                  | j                  dz        }| j                   j                  t              }| j	                  | j                   j                  |      | j                  dz  j                  d             | j	                  | j                   j                  |      t               y )Nr   asciir=   rO   rP   rQ   r   r`   r_   rU   r   r   r   s      r!   test_get_byteszTestMailbox.test_get_bytes  s    yy}}T^^a/0yy}}_-,,T2^^a''0	2,,T24IJr#   c                    | j                   j                  | j                  dz        }| j                   j                  t              }| j	                  | j                   j                  |      | j                  dz         | j	                  | j                   j                  |      j                  d      t        j                  d             y )Nr   
r=   rO   rP   rQ   r   rY   r   r   s      r!   test_get_stringzTestMailbox.test_get_string  s    yy}}T^^a/0yy}}_---d3T^^a5GH--d399$?(..t4	6r#   c                    | j                   j                  | j                  dz        }| j                   j                  t              }| j                   j	                  |      5 }|j                         }d d d        | j                   j	                  |      5 }|j                         }d d d        | j                  j                  d      j                  t        j                  d      | j                  dz         | j                  j                  d      j                  t        j                  d      t               y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   r   r   )r=   rO   rP   rQ   r   r   r   decoder   r%   r   )r   r   r   filedata0data1s         r!   test_get_filezTestMailbox.test_get_file  s    yy}}T^^a/0yy}}_-YY% 	 IIKE	 YY% 	 IIKE	 g.66rzz4H!+	-g.66rzz4H(	*	  	 	  	 s   #E E E	Ec                     | j                   j                  t              }| j                   j                  |      }|j	                          |j	                          y r	   )r=   rO   rQ   r   rA   r   s      r!   !test_get_file_can_be_closed_twicez-TestMailbox.test_get_file_can_be_closed_twice*  s:    iimmO,IIs#				r#   c                 T    | j                  | j                  j                  dd       y NTFdo_keys	do_values)_check_iterationr=   iterkeysr>   s    r!   test_iterkeyszTestMailbox.test_iterkeys1  s!    dii00$%Pr#   c                 T    | j                  | j                  j                  dd       y r   )r   r=   rZ   r>   s    r!   	test_keyszTestMailbox.test_keys5  s    diinndeLr#   c                 T    | j                  | j                  j                  dd       y NFTr   )r   r=   
itervaluesr>   s    r!   test_itervalueszTestMailbox.test_itervalues9  s&    dii22E(, 	 	.r#   c                 T    | j                  | j                  j                  dd       y r   )r   r=   __iter__r>   s    r!   	test_iterzTestMailbox.test_iter>  s&    dii00%(, 	 	.r#   c                 T    | j                  | j                  j                  dd       y r   )r   r=   valuesr>   s    r!   test_valueszTestMailbox.test_valuesC  s!    dii..Nr#   c                 T    | j                  | j                  j                  dd       y NTr   )r   r=   	iteritemsr>   s    r!   test_iteritemszTestMailbox.test_iteritemsG  s&    dii114(, 	 	.r#   c                 T    | j                  | j                  j                  dd       y r   )r   r=   itemsr>   s    r!   
test_itemszTestMailbox.test_itemsL  s    diioottLr#   c                 6    |       D ]  }| j                  d        g g }}t        |      D ]W  }|j                  | j                  j	                  | j
                  |z               |j                  | j
                  |z         Y |r|st         |             }	nJ|r|st         |             }
n5g g }
}	 |       D ]'  \  }}|	j                  |       |
j                  |       ) |rH| j                  t        |      t        	             | j                  t        |      t        |	             |rhd}
D ]E  }| j                  |d   d       | j                  t        |j                               |       |dz  }G | j                  t        |      |       y y )Nz	Not emptyr   r   r   rD   )failrangerN   r=   rO   rP   listr   r   set
assertLessintr   )r   r   r   r   r   r   rZ   r   r   returned_keysreturned_valuesr   counts                r!   r   zTestMailbox._check_iterationP  sq   X 	#EIIk"	#2f{# 	.AKK		dnnq&89:MM$..1,-	. 9 NMw"68nO-/?M$h .
U$$S)&&u-. SYM(:;SYM(:;E(   v6E$5$5$7 8+F
 S[%0 r#   c                    | j                  d| j                         | j                  j                  | j                  dz        }| j	                  || j                         | j                  d| j                         | j                  j                  | j                  dz        }| j	                  || j                         | j	                  || j                         | j                  d| j                         | j                  j                  |       | j                  || j                         | j	                  || j                         | j                  d| j                         | j                  j                  |       | j                  || j                         | j                  || j                         | j                  d| j                         y )Nr   r   rD   )assertNotInr=   rO   rP   r   r   r   s      r!   test_containszTestMailbox.test_containsk  sD   		*yy}}T^^a/0dDII&		*yy}}T^^a/0dDII&dDII&		*		tyy)dDII&		*		tyy)tyy)		*r#   c                 2   g }t        |      D ]  }| j                  t        | j                        |       |j	                  | j                  j                  | j                  |z               | j                  t        | j                        |dz           t        |      D ]s  }| j                  t        | j                        ||z
         | j                  j                  ||          | j                  t        | j                        ||z
  dz
         u y )NrD   )r   r   r   r=   rN   rO   rP   r   )r   r   rZ   r   s       r!   test_lenzTestMailbox.test_len~  s    {# 	4AS^Q/KK		dnnq&89:S^QU3	4 {# 	BAS^[1_=IIT!W%S^[1_q-@A	Br#   c                 >     j                   j                   j                  dz        } j                   j                   j	                  |       j                  dz          j                   j                   j                  dz        } j                   j                   j	                  |       j                  dz          j                  dz   j                   |<    j                   j                   j	                  |       j                  dz          j                  dz   j                   |<    j                   j                   j	                  |       j                  dz         t
         j                   |<    j                   j                   |           j                   |    j                   |<    j                   j                   |           j                  dz   j                   |<    j                   j                   j	                  |       j                  dz          j                   j                   |           j                  t         fd        j                  t         fd        j                  t         j                         d       y )N
original 0
original 1	changed 0	changed 1c                  <     j                   j                  dd      S )Nr   bar)r=   __setitem__r>   s   r!   r   z+TestMailbox.test_set_item.<locals>.<lambda>  s    $))"7"7u"E r#   c                  "     j                   d   S r   r   r>   s   r!   r   z+TestMailbox.test_set_item.<locals>.<lambda>  r   r#   rE   )
r=   rO   rP   r   rY   rQ   r"   r   r   r   r   s   `  r!   test_set_itemzTestMailbox.test_set_item  s   yy}}T^^l:;--d3,6	8yy}}T^^l:;--d3,6	8..;6		$--d3+5	7..;6		$--d3+5	7)		$499T?+))D/		$499T?+..<7		$--d3^^l2	4499T?+(E	G($<=TYY+r#   c                     g }t        |      D ]*  } j                  j                   j                  |z         , t	        |      D ]=  \  } j                   j                  j                         j                  |z         ?  j                  j                           j                  t         j                        d       t	        |      D ]  \  } j                  t         fd       ! y )Nr   c                  :    j                   j                         S r	   )r=   rY   r   r   s   r!   r   z(TestMailbox.test_clear.<locals>.<lambda>  s    		0D0DS0I r#   )r   r=   rO   rP   r   r   rY   clearr   r   r   )r   
iterationsrZ   r   r   s   `   @r!   
test_clearzTestMailbox.test_clear  s    z" 	.AIIMM$..1,-	.o 	LFAsTYY11#68JK	L		TYY+o 	KFAsh(IJ	Kr#   c                 T   | j                   j                  | j                  dz        }| j                  || j                          | j                   j                  | j                  dz        }| j                  || j                          | j	                  | j                   j                  |      j                         d       | j                  || j                          | j                  || j                          | j                   j                  | j                  dz        }| j                  || j                          | j	                  | j                   j                  |      j                         d       | j                  || j                          | j                  || j                          | j	                  | j                   j                  |      j                         d       | j                  || j                          | j	                  t        | j                         d       y )Nr   rD   r   rE   z2
r   )	r=   rO   rP   r   r   popr   r  r   r   r   r   r   s       r!   test_popzTestMailbox.test_pop  ss   yy}}T^^a/0dDII&yy}}T^^a/0dDII&t,88:EBtyy)dDII&yy}}T^^a/0dDII&t,88:EBtyy)dDII&t,88:EBtyy)TYY+r#   c                 ^    g }t        d      D ]9  }|j                   j                  j                   j                  |z               ; g }t        d      D ]  } j                  j                         \  } j                  |        j                  |       |j                          j                  t        |j                               |j                                 j                  t         j                        d       |D ]   j                  t         fd        y )N
   r   c                  "    j                       S r	   r   r  s   r!   r   z*TestMailbox.test_popitem.<locals>.<lambda>  s    		# r#   )r   rN   r=   rO   rP   popitemr   r  r   r  r   indexr   r   r   )r   r  rZ   r   seenr   r   s   `     @r!   test_popitemzTestMailbox.test_popitem  s    r 	;AKK		dnnq&89:	;r 	FAyy((*HCMM#t$S$'KKS!23TZZ_E	F 	TYY+ 	@Ch(>?	@r#   c                      j                   j                   j                  dz         j                   j                   j                  dz        } j                   j                   j                  dz        } j                   j                   j                  dz  |t        i        j                  t         j                         d        j                   j                   j                         j                  dz          j                   j                   j                  |       j                  dz          j                   j                   |           j                   j                  | j                  dz  f| j                  dz  f j                  dz  fg        j                  t         j                         d        j                   j                   j                         j                  dz          j                   j                   j                  |       j                  dz          j                   j                   j                  |       j                  dz          j                  t         fd        j                  t         j                         d        j                   j                   j                         j                  dz          j                   j                   j                  |       j                  dz          j                   j                   j                  |       j                  dz         y )	Nr  r  z
original 2r  rF   z	changed 2r  c                  \    j                   j                  dd j                  dz  i      S )Nr   r  r  )r=   updaterP   r   s   r!   r   z)TestMailbox.test_update.<locals>.<lambda>  s/    $))"2"2E5*.0L4N #O r#   )r=   rO   rP   r'  rQ   r   r   rY   r"   r   r   )r   r   r   r   s   `  @r!   test_updatezTestMailbox.test_update  s   yy}}T^^l:;yy}}T^^l:;yy}}T^^l:;		$ <1 	2TYY+--d3^^k1	3--d3^^l2	4499T?+		4+!=>4>>K784>>L89; 	< 	TYY+--d3^^l2	4--d3^^k1	3--d3^^k1	3(O	P 	TYY+--d3^^k1	3--d3^^k1	3--d3^^k1	3r#   c                 P    | j                  | j                  j                  d       y NT)_test_flush_or_closer=   rk   r>   s    r!   
test_flushzTestMailbox.test_flush  s    !!$))//48r#   c                    | j                   j                  | j                  dz         | j                   j                  | j                  dz         | j                   j                          | j                   j	                          | j                   j                          | j                   j	                          | j                   j                          y Nr   rD   )r=   rO   rP   rk   r!  r>   s    r!   test_popitem_and_flush_twicez(TestMailbox.test_popitem_and_flush_twice  s~    		dnnq()		dnnq()										r#   c                    | j                  t        j                  j                  | j	                                      | j
                  j                          | j                  t        j                  j                  | j	                                      | j
                  j                          | j                  t        j                  j                  | j	                                      y r	   )	assertFalser%   r&   r)   _get_lock_pathr=   lockr   unlockr>   s    r!   test_lock_unlockzTestMailbox.test_lock_unlock  s    (;(;(=>?		t':':'<=>		(;(;(=>?r#   c                 P    | j                  | j                  j                  d       y NF)r+  r=   rA   r>   s    r!   
test_closezTestMailbox.test_close  s    !!$))//59r#   c                    t        d      D cg c]  }| j                  |z   }}| j                  j                  |d          | j                  j                  |d          | j                  j                  |d          | j                  } |        |r| j                  j	                          | j                  | j                        | _        | j                  j                         }| j                  t        |      d       |D ]-  }| j                  | j                  j                  |      |       / |j	                          y c c}w )NrF   r   rD   rE   )r   rP   r=   rO   rA   r<   r;   rZ   r   r   r   rY   )r   r   should_call_closer   contentsoldboxrZ   r   s           r!   r+  z TestMailbox._test_flush_or_close  s    05a91DNNQ&99		hqk"		hqk"		hqk"IIOOMM$**-	yy~~TA& 	?CMM$))..s3X>	? :s   Ec           	          t        j                  t              t        t        j                  t
              fD ]  }t        j                          j                  j                  |        j                  j                         t
        j                  dt        j                  j                                       t        j                          j                  t         fd       y )Nr   c                  <    j                   j                  d        S r	   )r=   _dump_message)outputr   s   r!   r   z/TestMailbox.test_dump_message.<locals>.<lambda>*  s    $))"9"9$"G r#   )r   rR   rQ   rS   rT   rU   r=   r?  r   getvaluer   r%   r   r_   r   	TypeError)r   inputr@  s   ` @r!   test_dump_messagezTestMailbox.test_dump_message   s    //@%rzz2G'HJ 	KEZZ\FII##E62V__.%--eRZZ5F5F5HIK		K )G	Ir#   c                      | j                   dz   S )Nz.lock)r;   r>   s    r!   r2  zTestMailbox._get_lock_path,  s    zzG##r#   r  )9r-   r.   r/   maxDiffr<   rP   r?   rB   r[   textwrapdedentr^   rb   rf   rm   r}   r_   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r$  r(  r,  r/  r5  r8  r+  rD  r2  r6   r#   r!   r8   r8   4   s?   GH#I.
-3. $HOO % M2."" ) 
* 
 VG_ 	6020J
"7<:,
=3=8K6*QM.
.
O.
M16+&
B,6
K,$@  3D9	@: 
I$r#   r8   c                       e Zd Zd Zy)TestMailboxSuperclassc                    t        j                  d      | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd	       | j                  t        fd
       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       y )Nr&   c                  &     j                  d      S N )rO   boxs   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>6      swwr{ r#   c                  &     j                  d      S rN  )r   rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>7  s    szz"~ r#   c                  &     j                  d      S rN  )r   rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>8      sr7J r#   c                  &     j                  d      S rN  )r   rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>9  s    s{{2 r#   c                  (     j                  dd      S rN  )r  rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>:  s    sr27N r#   c                  $     j                         S r	   )r   rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>;  s    s||~ r#   c                  $     j                         S r	   )rZ   rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda><      sxxz r#   c                  @     j                         j                         S r	   )r   __next__rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>=  s    s~~7G7P7P7R r#   c                  @     j                         j                         S r	   )r   r\  rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>>  s    s||~7N7N7P r#   c                  $     j                         S r	   )r   rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>?      szz| r#   c                  @     j                         j                         S r	   )r   r\  rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>@  s    s}}7O7O7Q r#   c                  $     j                         S r	   )r   rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>A      syy{ r#   c                  &     j                  d      S rN  )r   rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>B  rR  r#   c                  &     j                  d      S rN  )__getitem__rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>C  rU  r#   c                  &     j                  d      S rN  )r   rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>D  rU  r#   c                  &     j                  d      S rN  )rY   rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>E  s    s~~b7I r#   c                  &     j                  d      S rN  )r`   rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>F  s    s}}R7H r#   c                  &     j                  d      S rN  )r   rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>G  s    s||B7G r#   c                      d v S rN  r6   rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>H  s    rSy r#   c                  &     j                  d      S rN  )__contains__rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>I  s    s7G7G7K r#   c                  $     j                         S r	   )__len__rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>J      s{{} r#   c                  $     j                         S r	   )r  rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>K  rb  r#   c                  &     j                  d      S rN  )r  rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>L  rR  r#   c                  $     j                         S r	   )r!  rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>M  ro  r#   c                  &     j                  d      S )N))rO  rO  )r'  rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>N  s    szz+7N r#   c                  $     j                         S r	   )rk   rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>O  rb  r#   c                  $     j                         S r	   )r3  rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>P  rZ  r#   c                  $     j                         S r	   )r4  rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>Q  r_  r#   c                  $     j                         S r	   )rA   rP  s   r!   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>R  rb  r#   )r   Mailboxr   NotImplementedError)r   rQ  s    @r!   test_notimplementedz)TestMailboxSuperclass.test_notimplemented3  s   oof%-/BC-/EF-/JK-/FG-/NO-/EF-/AB-/RS-/PQ-/CD-/QR-/BC-/BC-/JK-/JK-/IJ-/HI-/GH-/@A-/KL-/DE-/BC-/BC-/DE-/NO-/BC-/AB-/CD-/BCr#   N)r-   r.   r/   rz  r6   r#   r!   rK  rK  1  s    Dr#   rK  c                      e Zd ZddZd Zd Zd Zd Zd Zd Z	d	 Z
d
 ZddZd Zd Zd Zd ZddZd Zd Zd Zd Zd Zd Z ej2                   eed      d      d        Z ej2                   eed      d      d        Zd Zy)TestMaildirNc                 .    t        j                  ||      S r	   )r   Maildirr   r&   factorys      r!   r   zTestMaildir.<lambda>W  s    g0N r#   c                     t         j                  |        t        j                  dk(  st        j
                  dk(  rd| j                  _        y y )Nntcygwin!)r8   r?   r%   namesysplatformr=   colonr>   s    r!   r?   zTestMaildir.setUpY  s6    $GGtO!9!DIIO ":r#   c                     | j                  t        j                  t        j                  j	                  | j
                  d            g        y Ntmp)r   r%   listdirr&   joinr;   r>   s    r!   rl   zTestMaildir.assertMailboxEmpty^  s.    BGGLLU$CDbIr#   c                    t        j                  | j                  dz        }|j                  d       |j	                  d       | j
                  j                  |      }| j                  t        j                  j                  t        j                  j                  | j                  d|| j
                  j                  d                   y )Nr   curr   )r   r0   rP   
set_subdirset_infor=   rO   r   r%   r&   r)   r  r;   r  )r   r   r   s      r!   test_add_MMzTestMaildir.test_add_MMa  s    $$T^^a%78uUiimmC rww||DJJ25tyyHH (I J 	Kr#   c                    t        j                  | j                  dz        }|j                  d       |j	                  d       | j
                  j                  |      }| j
                  j                  |      }| j                  |t         j                         | j                  |j                         d       | j                  |j                         d       y )Nr   r  RFFR)r   r0   rP   r  	set_flagsr=   rO   r   r
   r   
get_subdir	get_flags)r   r   r   msg_returneds       r!   test_get_MMzTestMaildir.test_get_MMj  s    $$T^^a%78udiimmC yy,,S1lG,B,BC002E://148r#   c                 `   t        j                  | j                  dz        }|j                  d       | j                  j                  |      }| j                  j                  |      }| j                  |j                         d       | j                  |j                         d       t        j                  | j                  dz        }|| j                  |<   | j                  j                  |      }| j                  |j                         d       | j                  |j                         d       | j                  |j                         d       t        j                  | j                  dz        }|j                  d	       || j                  |<   | j                  d
z  | j                  |<   | j                  j                  |      }| j                  |j                         d       | j                  |j                         d       | j                  |j                         d       y )Nr   TPnewPTrD   rO  r   rE   z2,SrF   Sz3
)r   r0   rP   r  r=   rO   r   r   r  r  r   r  )r   r   r   r  msg1msg2s         r!   test_set_MMzTestMaildir.test_set_MMu  s   %%dnnq&89tiimmD!yy,,S1002E://148%%dnnq&89		#yy,,S1002E://126113U;%%dnnq&89e		#!+		#yy,,S1002E://137113U;r#   c                    t        j                  | j                  dz        }|j                  d       |j	                  d       | j
                  j                  |      } G d dt         j                        }t        j                  | j                  |      }| j
                  j                  |_	        |j                  |      }| j                  ||       y )Nr   r  r  c                       e Zd Zy)8TestMaildir.test_consistent_factory.<locals>.FakeMessageNrq   r6   r#   r!   FakeMessager    s    r#   r  r  )r   r0   rP   r  r  r=   rO   r~  r;   r  r   r
   )r   r   r   r  rQ  r  s         r!   test_consistent_factoryz#TestMaildir.test_consistent_factory  s    $$T^^a%78udiimmC 	'00 	oodjj+>IIOO	s#dK0r#   c                 &   | j                          t        j                  | j                        | _        | j                          | j                  | j                         | j                  | j                  d       | _        | j                          y )Nr  )rB   r   r~  r;   r=   _check_basicsr,   r<   r>   s    r!   test_initialize_newzTestMaildir.test_initialize_new  sa    OODJJ/	  ,MM$**dM;	r#   c           	      N   | j                          dD ]\  }t        j                  t        j                  j	                  t        j                  j                  | j                  |                   ^ t        j                  | j                        | _	        | j                          y )NrO  r  r  r  )rB   r%   mkdirr&   normpathr  r;   r   r~  r=   r  )r   subdirs     r!   test_initialize_existingz$TestMaildir.test_initialize_existing  sj    - 	IFHHRWW%%bggll4::v&FGH	IOODJJ/	r#   c                    | j                  | j                  j                  t        j                  j                  | j                               | j                  | j                  j                  |       dD ]z  }t        j                  j                  | j                  |      }t        j                  |      t        j                     }| j                  t        j                  |      d|z         | y )Nr  zNot a directory: '%s')r   r=   r;   r%   r&   abspathr<   r  statST_MODEr   S_ISDIR)r   r  r  r&   modes        r!   r  zTestMaildir._check_basics  s    "''//$***EF++W5- 	PF77<<

F3D774=.DOODLL.0G$0NO	Pr#   c                    | j                   j                  d       | j                   j                  d       | j                   j                  d       | j                  t        | j                   j	                               d       | j                  t        | j                   j	                               t        d             y NonetwothreerF   )r  r  r  r=   
add_folderr   r   list_foldersr   r>   s    r!   test_list_folderszTestMaildir.test_list_folders      		U#		U#		W%TYY3356:TYY335601	3r#   c                    | j                   j                  d       | j                   j                  d      }|j                  | j                  dz         | j                  t        j                  j                  t        j                  j                  | j                  d                   | j                   j                  d      }| j                  |j                  |j                         d         | j                  dz         y )Nfoo.barr  z.foo.barr   )r=   r  
get_folderrO   rP   r   r%   r&   r'   r  r;   r   rY   rZ   )r   folder0folder1s      r!   test_get_folderzTestMaildir.test_get_folder  s    		Y'))&&y1DNNU*+bggll4::z&JKL))&&y1++GLLN1,=>%/	1r#   c                 z   | j                   j                  d       | j                   j                  d       | j                  t        | j                   j	                               d       | j                  t        | j                   j	                               t        d             | j                   j                  d       | j                  t        | j                   j	                               d       | j                  t        | j                   j	                               t        d             | j                   j                  d       | j                  t        | j                   j	                               d       | j                  t        | j                   j	                               t        d             | j                   j                  d       | j                  t        | j                   j	                               d       | j                  t        | j                   j	                               t        d             | j                   j                  d       | j                  t        | j                   j	                               d	       | j                  | j                   j	                         g        y 
Nr  r  rE   )r  r  rD   )r  r  )r  r  r   r=   r  r   r   r  r   remove_folderr>   s    r!   test_add_and_remove_foldersz'TestMaildir.test_add_and_remove_folders     		U#		U#TYY3356:TYY3356N8KL		&TYY3356:TYY3356HF		W%TYY3356:TYY3356<L8MN		(TYY3356:TYY3356HF		&TYY3356://126r#   c                    t         j                  j                  | j                  dd      }t         j                  j                  | j                  dd      }t	        |dd      5 }|j                  d       d d d        t	        |dd      5 }|j                  d       d d d        | j                  j                          | j                  t         j                  j                  |             | j                  t         j                  j                  |             t        j                  |      }t        j                  |t        j                         dz
  d	z
  |j                  f       | j                  j                          | j                  t         j                  j                  |             | j                  t         j                  j                  |             y # 1 sw Y   nxY w# 1 sw Y   SxY w)
Nr  r   r  wrJ   rK   @i@ rE   )r%   r&   r  r;   openr   r=   cleanr   r)   r  utimetimest_mtimer1  )r   foo_pathbar_pathr   foo_stats        r!   
test_cleanzTestMaildir.test_clean  sP   77<<

E5977<<

E59(C'2 	aGGCL	(C'2 	aGGCL			x01x01778$
DIIK&014$--/ 	0		12x01	 		 	s   %G#G0#G-0G:c           
      L   t        j                         }d|v r|j                  dd      }d|v r|j                  dd      }t        j                         }t        j                  d      }d }t        |      D ]J  }| j                  j                         }t        j                  j                  |j                        \  }}	| j                  |t        j                  j                  t        j                  j                  | j                   d            d|z         |j#                  |	      }
| j%                  |
d|	z         |
j'                         }|| j)                  t+        |d	         t+        |d	         d
|d	   d|d	   d       t+        |d	         t+        |d	         k(  r8| j)                  t+        |d         t+        |d         d|d   d|d   d       | j                  t+        |d         |d|d   d|d       | j                  t+        |d         t+        |d         dz   d|d   d|d   d       | j                  |d   |d|d   d|d       |}|j-                  t.               |j1                  d	       | j                  |j3                         t.               |j5                          M t7        t        j8                  t        j                  j                  | j                   d                  }| j                  ||d|d|d       y )N/z\057:z\072zF(?P<time>\d+)\.M(?P<M>\d{1,6})P(?P<P>\d+)Q(?P<Q>\d+)\.(?P<host>[^:/]*)r  zFile in wrong location: '%s'zInvalid file name: '%s'r   zNon-monotonic seconds: 'z
' before ''rD   zNon-monotonic milliseconds: 'rE   zProcess ID mismatch: 'z' should be 'rF   zNon-sequential counter: 'rG   zHost name mismatch: 'zWrong file count: ')socketgethostnamer   r%   getpidrecompiler   r=   _create_tmpr&   r   r  r   r  r  r;   matchassertIsNotNonegroupsassertGreaterEqualr  r   rU   r   r   rA   r   r  )r   r   hostnamepidpatternprevious_groupsxtmp_fileheadtailr  r  
file_counts                r!   test_create_tmpzTestMaildir.test_create_tmp  s   %%'(?''W5H(?''W5Hiik** > ?{# 	Ayy,,.Hx}}5JD$T277??277<<

@E4G $H;dBD MM$'E  (AD(HI\\^F*''F1IOA<N8O-a0&)=> vay>S);%<<++Cq	NCPQ@R<S!0!3VAY!@A   VAY$Qi./   VAY_Q5G1H11L-a0&)=>   H$Qi34 %ONN01MM!X]]_.CDNN=	> BGGLLU$CDE
[ +/	0r#   c                    | j                  | j                  j                  i        | j                  j                  | j                  dz        }| j                  j                  | j                  dz        }| j                  | j                  j                  i        | j                  j                          | j                  | j                  j                  |t        j                  j                  d|      |t        j                  j                  d|      i       | j                  j                  | j                  dz        }| j                  | j                  j                  |t        j                  j                  d|      |t        j                  j                  d|      i       | j                  j                          | j                  | j                  j                  |t        j                  j                  d|      |t        j                  j                  d|      |t        j                  j                  d|      i       y )Nr   rD   r  rE   )	r   r=   _tocrO   rP   _refreshr%   r&   r  r  s       r!   test_refreshzTestMaildir.test_refresh  s   ,yy}}T^^a/0yy}}T^^a/0,		$UD0I*.UD0I*K 	Lyy}}T^^a/0$UD0I*.UD0I*K 	L		$UD0I*.UD0I*.UD0I*K 	Lr#   c                    | j                   j                  | j                  dz        }| j                   j                  | j                  dz        }| j                  | j                        | _         | j                  | j                   j                  i        d| j                   _        | j                   j                          | j                  t        | j                   j                  j                               t        ||g             y )Nr   rD   )r=   rO   rP   r<   r;   r   r  _skewfactorr  sortedrZ   r   s      r!    test_refresh_after_safety_periodz,TestMaildir.test_refresh_after_safety_period-  s     yy}}T^^a/0yy}}T^^a/0MM$**-	, !#						 3 3 56d|8LMr#   c                      j                  t         fd        j                  j                   j                  dz         j                   j                  j                        t        j                  j                  d             t        j                  t        j                  j                   j                  d              j                   j                  j                  t        j                  j                  d      i        j                  j                           j                  t         fd        j                   j                  j                  i        y )Nc                  :     j                   j                  d      S r   r=   _lookupr>   s   r!   r   z)TestMaildir.test_lookup.<locals>.<lambda>B  s    DII,=,=e,D r#   r   r  c                  :    j                   j                         S r	   r  r   s   r!   r   z)TestMaildir.test_lookup.<locals>.<lambda>J  s    DII,=,=d,C r#   )r   r   r=   rO   rP   r   r  r%   r&   r  r   r;   r  rk   )r   r   s   `@r!   test_lookupzTestMaildir.test_lookup@  s    ($DEyy}}T^^a/0**40"'',,ud2KL
		"'',,tzz5$78$UD0I)JK 			($CD,r#   c                 l    | j                   j                          | j                   j                          y r	   )r=   r3  r4  r>   s    r!   r5  zTestMaildir.test_lock_unlockM  s     				r#   c                     d }| j                  | j                  |      }|j                  d      }| j                  |j                   |       |j	                  d      }| j                  |j                   |       y )Nc                      y r	   r6   ss    r!   dummy_factoryz.TestMaildir.test_folder.<locals>.dummy_factoryU      r#   r  r  )r<   r;   r  r   r  )r   r  rQ  folderfolder1_aliass        r!   test_folderzTestMaildir.test_folderR  s_    	mmDJJm>	*foo}5y1m,,m<r#   c                 &   t        d      D ]4  }| j                  j                  t        j                  t
                     6 t        j                  t        j                  j                  | j                  dd             | j                  D ]  } y )Nr  r  z	stray-dir)r   r=   rO   r   r   rQ   r%   r  r&   r  r;   )r   r   r   s      r!   test_directory_in_folderz$TestMaildir.test_directory_in_folder^  sk     r 	<AIIMM'///:;	< 	djj%=> 99 	C	r#   umasktest needs os.umask()c                    t        j                  | j                  dz        }t        j                  d      }	 | j
                  j                  |      }t        j                  |       t        j                  j                  | j                  | j
                  j                  |            }t        j                  |      j                  }| j                  |dz         y # t        j                  |       w xY w)Nr   I   )r   r0   rP   r%   r  r=   rO   r&   r  r;   r  r  st_moder1  )r   r   
orig_umaskr   r&   r  s         r!   test_file_permissionsz!TestMaildir.test_file_permissionsk  s     $$T^^a%78XXa[
	!))--$CHHZ ww||DJJ		(9(9#(>?wwt}$$& HHZ s   C   C7c                    t        j                  d      }	 | j                  j                  d      }t        j                  |       t         j                  j                  |j                  d      }t        j                  |      }|j                  }| j                  |dz         y # t        j                  |       w xY w)Nr   	subfoldermaildirfolderr  )
r%   r  r=   r  r&   r  r;   r  r  r1  )r   r  r  r&   stpermss         r!   test_folder_file_permsz"TestMaildir.test_folder_file_permsx  s     XXa[
	!		,,[9IHHZ ww||IOO_=WWT]

%%-) HHZ s   B' 'B>c                      j                   j                          dD ]c  }t        j                  t        j                  j                   j                   j                  |      t        j                         dz
  fdz         e d j                   _         j                   j                   fd} j                   j                           j                   |              t        j                  j                   j                  dd      }t        j                  |       t        j                  |        j                   j                           j                   |              y )N)r  r  rH   rE   r  c                  4    j                   j                   uS r	   )r=   r  )orig_tocr   s   r!   	refreshedz*TestMaildir.test_reread.<locals>.refreshed  s    99>>11r#   r  z
stray-file)r=   r  r%   r  r&   r  r;   r  r  r  r1  r   create_empty_filer*   r   )r   r  r  filenamer  s   `   @r!   test_rereadzTestMaildir.test_reread  s    		 % 	)FHHRWW\\$))//6:iik!m%a')	) !#		
 99>>	2 			%
 77<<

E<@##H-
		(			$r#   r	   rF  )r-   r.   r/   r<   r?   rl   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r5  r
  r  unittest
skipUnlesshasattrr%   r  r  r   r6   r#   r!   r|  r|  U  s    NH"
JK	9<.1P317&2$-0^L"N&-

= XW-/FG
' H
' XW-/FG* H*&%r#   r|  c                       e Zd ZdZd Zd Zy)_TestSingleFilez&Common tests for single-file mailboxesc                    t        j                  | j                        j                  }| j                  j                  | j                  dz         | j                  j                          t        j                  | j                        j                  }| j                  ||       | j                  j                          | j                  | j                        | _        | j                  t        | j                        d       y r.  )r%   r  r;   st_inor=   rO   rP   rk   r   rA   r<   r   )r   inode_beforeinode_afters      r!   test_add_doesnt_rewritez'_TestSingleFile.test_add_doesnt_rewrite  s     wwtzz*11		dnnq()		ggdjj)00{3 			MM$**-	TYY+r#   c                    t        j                  | j                        j                  dz  }t        j                  | j                  |       | j
                  j                  | j                  dz         | j
                  j                  | j                  dz        }| j
                  j                  |       | j
                  j                          | j                  t        j                  | j                        j                  |       y )Ni  r   rD   )r%   r  r;   r  chmodr=   rO   rP   r   rk   r   )r   r  r   s      r!   test_permissions_after_flushz,_TestSingleFile.test_permissions_after_flush  s     wwtzz"**U2
T"		dnnq()IIMM$..1,-				,44d;r#   N)r-   r.   r/   __doc__r*  r-  r6   r#   r!   r%  r%    s    0,(<r#   r%  c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Z ej                          ej                   eed
      d      d               Zd Z xZS )_TestMboxMMDFc                 *   t         |           | j                  j                          | j	                  | j
                         t        j                  t        j                  | j
                        dz         D ]  }t        j                  |        y Nz.*
superrB   r=   rA   r,   r;   globescaper   r*   r   lock_remnant	__class__s     r!   rB   z_TestMboxMMDF.tearDown  f    		  , IIdkk$**&=&DE 	+L\*	+r#   c                     t        | j                  d      5 }| j                  |j                         g        d d d        y # 1 sw Y   y xY wNrbr  r;   r   	readlinesr   r   s     r!   rl   z _TestMboxMMDF.assertMailboxEmpty  =    $**d# 	0qQ[[]B/	0 	0 	0   !AA
c                    d}| j                   j                  || j                  dz  z         }| j                   j                  |t        z         }| j	                  | j                   j                  |d      | j                  dz  j                  d             | j	                  | j                   j                  |d      t               | j	                  | j                   j                  |d      || j                  dz  z   j                  d             | j	                  | j                   j                  |d      |j                  d      t        z          y )NFrom foo@bar blah
r   Ffrom_r   Tr   r   unixfromr   r   s       r!   test_get_bytes_fromz!_TestMboxMMDF.test_get_bytes_from  s   (yy}}X(::;yy}}X78,,T,?^^a''0	2,,T,?!	#,,T,>**227;	=,,T,>OOG$'<<	>r#   c                    d}| j                   j                  || j                  dz  z         }| j                   j                  |t        z         }| j	                  | j                   j                  |d      | j                  dz         | j	                  | j                   j                  |d      j                  d      t        j                  d             | j	                  | j                   j                  |d      || j                  dz  z          | j	                  | j                   j                  |d      j                  d      |t        z   j                  d             y )NrD  r   FrE  r   Tr   rG  s       r!   test_get_string_fromz"_TestMboxMMDF.test_get_string_from  s#   (yy}}X(::;yy}}X78--d%-@!+	---d%-@FFtL(..t4	6--d$-?!DNNQ$66	8--d$-?EEdK"_4;;DA	Cr#   c                     | j                   j                  d      }| j                  | j                   |   j                         d       | j                  | j                   |   j	                         d       y )NFrom foo@bar blah
From: foo

0
foo@bar blahr   r=   rO   r   get_fromr   ra   s     r!   test_add_from_stringz"_TestMboxMMDF.test_add_from_string  sW    iimmAB3002NC3335u=r#   c                     | j                   j                  d      }| j                  | j                   |   j                         d       | j                  | j                   |   j	                         d       y )Ns   From foo@bar blah
From: foo

0
rN  r   rO  ra   s     r!   test_add_from_bytesz!_TestMboxMMDF.test_add_from_bytes  sW    iimmBC3002NC3335u=r#   c                     t         j                  t         j                  fD ]%  } |d      }| j                  j	                  |      }' y )NrM  )r   r1   r4   r=   rO   )r   class_r   r   s       r!   test_add_mbox_or_mmdf_messagez+_TestMboxMMDF.test_add_mbox_or_mmdf_message  s?    **G,?,?@ 	%F>?C))--$C	%r#   c                    t        d      D cg c]  }| j                  |z   }}|D ]  }| j                  j                  |        | j                  j	                          t
        j                  j                  | j                        }| j                  | j                        | _        | j                  t        | j                        d       | j                  j                         D ]-  }| j                  | j                  j                  |      |       / | j                  j	                          | j                  |t
        j                  j                  | j                               y c c}w )NrF   )r   rP   r=   rO   rA   r%   r&   getmtimer;   r<   r   r   r   r   rY   )r   r   r   r   mtimer   s         r!   test_open_close_openz"_TestMboxMMDF.test_open_close_open  s   .3Ah7$..1$77 	!EIIMM% 	!		  ,MM$**-	TYY+99%%' 	=CMM$))..s3V<	=		 0 0 <= 8s   E.c                    | j                   j                  t               t        d      D ]*  }| j                   j                  | j                  |z         , | j                   j                  t               | j                   j
                  j                          | j                   j
                  j                  d       | j                   j
                  j                         }| j                   j                          t        | j                  d      5 }| j                  ||j                                d d d        | j                  | j                        | _         y # 1 sw Y   *xY w)NrF   r   r=  )r=   rO   rQ   r   rP   _filerk   r   r   rA   r  r;   r   r<   )r   r   r;  r   s       r!   test_add_and_closez _TestMboxMMDF.test_add_and_close"  s    		o&q 	.AIIMM$..1,-	.		o&				Q99??'')		$**d# 	1qXqvvx0	1MM$**-		1 	1s   !EE'
socketpairzTest needs socketpair().c                 z   t        j                         \  }}| j                  |j                         | j                  |j                         t	        j
                         }|dk(  rl	 | j                  j                          |j                  d       |j                  d       | j                  j                          t	        j                  d       |j                  d       	 | j                  t        j                  | j                  j                         |j                  d       t        j                   |d       | j                  j                          | j                  j                          y # t	        j                  d       w xY w# |j                  d       t        j                   |d       w xY w)Nr      crD      p)exitcode)r  r^  
addCleanuprA   r%   forkr=   r3  sendrecvr4  _exitr   r   ExternalClashErrorr   wait_process)r   cpr  s       r!   test_lock_conflictz _TestMboxMMDF.test_lock_conflict0  s)   
   "1  ggi!8			 t q			  " 	
q		2g88"iinn. FF4L  q1				  FF4L  q1s   (AE6 %4F 6F*F:c                    d}| j                   j                  |      }| j                   j                          | j                   j                          | j	                  | j
                        | _         | j                   j                          | j                   j                  |      }| j                   j                          | j                  | j                   j                         | j                   j                          y )NzSubject: sub

body
)	r=   rO   rk   rA   r<   r;   r3  r   _locked)r   r   r   r   s       r!   test_relockz_TestMboxMMDF.test_relockU  s     'yy}}S!				MM$**-			yy}}S!				))*		r#   )r-   r.   r/   rB   rl   rI  rK  rQ  rS  rV  rZ  r]  r   requires_forkr!  r"  r#  r  rl  ro  __classcell__r9  s   @r!   r0  r0    sv    +0>C>>%>. WX68RS! T !Fr#   r0  c                   `    e Zd ZddZ ej
                   eed      d      d        Zd Z	d Z
y)	TestMboxNc                 .    t        j                  ||      S r	   )r   mboxr  s      r!   r   zTestMbox.<lambda>g      T70K r#   r  r  c                 4   	 t        j                  d      }| j                  j                          t        j                  | j
                         t        j                  | j
                  d      | _        | j                  j                  d       | j                  j                          t        j                  |       t        j                  | j
                        }|j                  }| j                  |dz         y # t        j                         w xY w)N?   T)createrO  r  )r%   r  r=   rA   r*   r;   r   rv  rO   r  r  r1  )r   	old_umaskr  r  s       r!   test_file_permszTestMbox.test_file_permsi  s    
	 IIIOOIIdjj!TZZ=DIIIMM"IIOOHHYWWTZZ 

%%-)	 HHYs   B)D   Dc                    t         j                  j                         }d|d<   |j                  d       | j                  j                  |      }| j                  j                  |      }| j                  |j                         d       y )Nzjohn@example.comFromzNo newline at the endzNo newline at the end
)	r   r   r   set_payloadr=   rO   r   r   r   )r   r   r   s      r!   test_terminating_newlinez!TestMbox.test_terminating_newline|  sl    --''),34IIMM'" ))--",,.0IJr#   c                    | j                   j                  d       t        | j                  d      5 }|j	                         }| j                  |dd  d       d d d        | j                   j                  d       t        | j                  d      5 }|j	                         }| j                  |dd  d       d d d        y # 1 sw Y   jxY w# 1 sw Y   y xY w)NzFrom: foo

0rJ   rK   r  z0

zFrom: foo

0
)r=   rO   r  r;   r   r   )r   r   datas      r!   test_message_separatorzTestMbox.test_message_separator  s    		&'$**w/ 	11668DT"#Y0	1 			()$**w/ 	11668DT"#Y0	1 	1	1 	1
	1 	1s   &C&CCCr	   )r-   r.   r/   r<   r!  r"  r#  r%   r|  r  r  r6   r#   r!   rt  rt  e  s<    KHXW-/FG* H*$K
1r#   rt  c                       e Zd ZddZy)TestMMDFNc                 .    t        j                  ||      S r	   )r   MMDFr  s      r!   r   zTestMMDF.<lambda>  rw  r#   r	   )r-   r.   r/   r<   r6   r#   r!   r  r    s    KHr#   r  c                   J    e Zd ZddZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zy)TestMHNc                 .    t        j                  ||      S r	   )r   MHr  s      r!   r   zTestMH.<lambda>  s    

40I r#   c                 d    | j                  t        j                  | j                        dg       y )Nz.mh_sequences)r   r%   r  r;   r>   s    r!   rl   zTestMH.assertMailboxEmpty  s"    DJJ//1BCr#   c                    | j                   j                  d       | j                   j                  d       | j                   j                  d       | j                  t        | j                   j	                               d       | j                  t        | j                   j	                               t        d             y r  r  r>   s    r!   r  zTestMH.test_list_folders  r  r#   c                    d }| j                  | j                  |      | _        | j                  j                  d      }| j                  j	                  d      }|j                  | j                  dz         | j                  t        j                  j                  t        j                  j                  | j                  d                   | j                  j	                  d      }| j                  |j                  |j                         d         | j                  dz         | j                  |j                   | j                  j                          | j                  |j                   | j                  j                          y )Nc                      y r	   r6   r  s    r!   r  z-TestMH.test_get_folder.<locals>.dummy_factory  r  r#   r  r  r   )r<   r;   r=   r  r  rO   rP   r   r%   r&   r'   r  r   rY   rZ   r   )r   r  
new_folderr  r  s        r!   r  zTestMH.test_get_folder  s
   	MM$**m<	YY)))4
))&&y1DNNU*+bggll4::y&IJK))&&y1++GLLN1,=>%/	1
 	j))499+=+=>g&&		(:(:;r#   c                 z   | j                   j                  d       | j                   j                  d       | j                  t        | j                   j	                               d       | j                  t        | j                   j	                               t        d             | j                   j                  d       | j                  t        | j                   j	                               d       | j                  t        | j                   j	                               t        d             | j                   j                  d       | j                  t        | j                   j	                               d       | j                  t        | j                   j	                               t        d             | j                   j                  d       | j                  t        | j                   j	                               d       | j                  t        | j                   j	                               t        d             | j                   j                  d       | j                  t        | j                   j	                               d	       | j                  | j                   j	                         g        y r  r  r>   s    r!   r  z"TestMH.test_add_and_remove_folders  r  r#   c                    | j                  | j                  j                         i        t        j                  | j
                  dz        }|j                  d       | j                  j                  |      }| j                  | j                  j                         d|gi       t        j                  | j
                  dz        }|j                  g d       | j                  j                  |      }| j                  | j                  j                         ||g|g|gd       |j                  dg       || j                  |<   | j                  | j                  j                         |g|g|g|gd       | j                  j                  |       | j                  | j                  j                         d|gi       y )Nr   r   rD   )r  repliedr   r   r  r  flagged)r   r  r  r  )
r   r=   get_sequencesr   r2   rP   add_sequencerO   set_sequencesr   r   r   r   r  r   s        r!   test_sequenceszTestMH.test_sequences  sn   002B7  !!34% yy}}T"002UD6NC  !!3445yy}}T"002!4L4&I	KI;'		$002!F4&TF!%(	) 			002Yv4FGr#   c                     t        j                  | j                  dz        }|j                  d       | j                  j                  |      }| j                  j                  |      }y )Nr   r   )r   r2   rP   r  r=   rO   r   )r   r   r   refmsg0s       r!   test_issue2625zTestMH.test_issue2625  sO      !!34% yy}}T"))''-r#   c                    t        j                  | j                  dz        }| j                  j	                  |      }| j                  j                          | j                  j                  |       | j                  j                          y )Nr   )r   r2   rP   r=   rO   r3  r   r4  )r   r   r   s      r!   test_issue7627zTestMH.test_issue7627  s]      !!34yy}}T"						r#   c           	         t        j                  | j                  dz        }t        j                  | j                  dz        }t        j                  | j                  dz        }t        j                  | j                  dz        }|j                  ddg       |j                  dg       |j                  ddg       |j                  g d       | j                  j                  |      }| j                  j                  |      }| j                  j                  |      }| j                  j                  |      }| j                  | j                  j                         ||||g|g|g|g|gd	       | j                  j                  |       | j                  | j                  j                         |||g|g|g|gd
       | j                  j                          | j                  | j                  j                         g d       |}|dz   }|dz   }| j                  | j                  j                         g ddgdgdgd
       | j                  j                  |      }| j                  j                  |      }| j                  j                  |      }| j                  j                  |      }| j                  j                  |       | j                  j                  |       | j                  j                          | j                  j                          | j                  j                          | j                  | j                  j                         g ddgdgdgd
       y )Nr   rD   rE   rF   r   unseenr  r  )r   r  r  r  r  )r   r  r  r  )rD   rE   rF   )rD   rE   rF   rG   rH   )r   r2   rP   r  r=   rO   r   r  r   packrZ   r3  r4  )	r   r   r  r  msg3r   r   r   key3s	            r!   	test_packzTestMH.test_pack  s     !!34  !!34  !!34  !!34E8,-E7#E9-.45yy}}T"yy}}T"yy}}T"yy}}T"002!$tD1TF!%tfH	I 			002!$t,vdV!%(	) 			)95axax002%A31#N	P yy}}T"yy}}T"yy}}T"yy}}T"										002+ !s1#!>	?r#   c                 V    t         j                  j                  | j                  d      S )Nz.mh_sequences.lock)r%   r&   r  r;   r>   s    r!   r2  zTestMH._get_lock_path  s    ww||DJJ(<==r#   r	   )r-   r.   r/   r<   rl   r  r  r  r  r  r  r  r2  r6   r#   r!   r  r    s7    IHD3<&7&H(.*?X>r#   r  c                   2     e Zd ZddZd Z fdZd Z xZS )	TestBabylc                 .    t        j                  ||      S r	   )r   Babylr  s      r!   r   zTestBabyl.<lambda>!  s    dG0L r#   c                     t        | j                  d      5 }| j                  |j                         g        d d d        y # 1 sw Y   y xY wr<  r>  r@  s     r!   rl   zTestBabyl.assertMailboxEmpty#  rA  rB  c                 *   t         |           | j                  j                          | j	                  | j
                         t        j                  t        j                  | j
                        dz         D ]  }t        j                  |        y r2  r3  r7  s     r!   rB   zTestBabyl.tearDown'  r:  r#   c                    | j                  | j                  j                         g        t        j                  | j
                  dz        }|j                  d       | j                  j                  |      }| j                  | j                  j                         dg       t        j                  | j
                  dz        }|j                  g d       | j                  j                  |      }| j                  t        | j                  j                               t        ddg             |j                  ddg       || j                  |<   | j                  t        | j                  j                               t        g d             | j                  j                  |       | j                  t        | j                  j                               t        dg             y )	Nr   r   rD   )r  answeredr   r  blahfiled)r   r  r  )r   r=   
get_labelsr   r3   rP   	add_labelrO   
set_labelsr   r   r  s        r!   test_labelszTestBabyl.test_labels.  s[   --/4##DNNQ$67uyy}}T"--/%9##DNNQ$6723yy}}T"TYY1134c5%.6IJ)*		$TYY1134/0	2		TYY1134c6(mDr#   r	   )r-   r.   r/   r<   rl   rB   r  rq  rr  s   @r!   r  r    s    LH0+Er#   r  c                       e Zd Zd Zd Zy)FakeFileLikeObjectc                     d| _         y r7  closedr>   s    r!   __init__zFakeFileLikeObject.__init__C  s	    r#   c                     d| _         y r*  r  r>   s    r!   rA   zFakeFileLikeObject.closeF  s	    r#   N)r-   r.   r/   r  rA   r6   r#   r!   r  r  A  s    r#   r  c                       e Zd Zd Zd Zy)FakeMailBoxc                     t         j                  j                  | dd        t        d      D cg c]  }t	                c}| _        y c c}w )NrO  c                      y r	   r6   )r   s    r!   r   z&FakeMailBox.__init__.<locals>.<lambda>M  s    r#   r  )r   rx  r  r   r  files)r   r   s     r!   r  zFakeMailBox.__init__L  s6      r+<=49"I>q(*>
>s   A
c                      | j                   |   S r	   )r  ra   s     r!   r   zFakeMailBox.get_fileP  s    zz#r#   N)r-   r.   r/   r  r   r6   r#   r!   r  r  J  s    ?r#   r  c                       e Zd Zd Zy)TestFakeMailBoxc                 "   t               }t        d      D ]*  }| j                  |j                  |   j                         , t        d      D ]  }||    	 t        d      D ]*  }| j                  |j                  |   j                         , y )Nr  )r  r   r1  r  r  r   )r   rQ  r   s      r!   test_closing_fdzTestFakeMailBox.test_closing_fdV  s    mr 	2ASYYq\001	2r 	AF	r 	1AOOCIIaL//0	1r#   N)r-   r.   r/   r  r6   r#   r!   r  r  T  s    1r#   r  c                   l    e Zd Zej                  Zd Zd Zd Zd Z	d Z
d Zd Zd Zd	 Zd
 Zd Zd Zy)TestMessagec                 .    t         j                  | _        y r	   )r   r:   r;   r>   s    r!   r?   zTestMessage.setUpd  s    %%
r#   c                 :    | j                  | j                         y r	   )r,   r;   r>   s    r!   rB   zTestMessage.tearDowng  s      ,r#   c                     t        j                  t              }| j                  |      }| j	                  |       | j                  |       y r	   )r   rR   rQ   r<   _post_initialize_hookr"   r   eMMr   s      r!   test_initialize_with_eMMz$TestMessage.test_initialize_with_eMMj  s<    ''8mmC ""3'3r#   c                 r    | j                  t              }| j                  |       | j                  |       y r	   )r<   rQ   r  r"   r   r   s     r!   test_initialize_with_stringz'TestMessage.test_initialize_with_stringq  s,    mmO,""3'3r#   c                    t        | j                  dd      5 }|j                  t               |j	                  d       | j                  |      }| j                  |       | j                  |       d d d        y # 1 sw Y   y xY w)Nr   rJ   rK   r   )r  r;   r   rQ   r   r<   r  r"   r   r   r   s      r!   test_initialize_with_filez%TestMessage.test_initialize_with_filew  sj    $**dW5 	$GGO$FF1I--"C&&s+s#	$ 	$ 	$s   AA<<Bc                    t        | j                  d      5 }|j                  t               |j	                  d       | j                  |      }| j                  |       | j                  |       d d d        y # 1 sw Y   y xY w)Nr   r   )r  r;   r   rU   r   r<   r  r"   r  s      r!    test_initialize_with_binary_filez,TestMessage.test_initialize_with_binary_file  si    $**e$ 	$GG)*FF1I--"C&&s+s#	$ 	$ 	$s   AA::Bc                    | j                         }| j                  |       | j                  |t        j                  j
                         | j                  |t        j
                         | j                  || j                          | j                  |j                         g        | j                  |j                                | j                  |j                                y r	   )r<   r  r
   r   r   r   r   r   rZ   r1  r   r   r   r  s     r!   test_initialize_with_nothingz(TestMessage.test_initialize_with_nothing  s    mmo""3'c5==#8#89c7??3c4==1R())+,#//+,r#   c                 8      j                  t         fd       y )Nc                  6     j                  t                     S r	   )r<   objectr>   s   r!   r   z9TestMessage.test_initialize_incorrectly.<locals>.<lambda>  s    T]]68-D r#   )r   rB  r>   s   `r!   test_initialize_incorrectlyz'TestMessage.test_initialize_incorrectly  s    )%DEr#   c                     t        j                  t              }| j                  t              }|j                  D ].  }| j                  ||j                  dj                  |             0 y )Nz{} attribute does not exist)r   rR   rQ   r<   __dict__r   format)r   r  r   attrs       r!   test_all_eMM_attributes_existz)TestMessage.test_all_eMM_attributes_exist  sU    ''8mmO,LL 	<DMM$-44T:<	<r#   c                     t        j                  t              }| j                         }|j	                  |       | j                  |       y r	   )r   rR   rQ   r<   _become_messager"   r  s      r!   test_become_messagezTestMessage.test_become_message  s9    ''8mmoC 3r#   c                     | j                         | j                  D ]  } |       j                          t        j                  j                         | j                  t        fd       y )Nc                  &     j                        S r	   )_explain_to)r   	other_msgs   r!   r   z-TestMessage.test_explain_to.<locals>.<lambda>  s    S__Y-G r#   )r<   r5   r  r   r   r   r   rB  )r   rU  r   r  s     @@r!   test_explain_tozTestMessage.test_explain_to  s]     mmo,, 	'FIOOI&	' MM))+	)%GHr#   c                      y r	   r6   r  s     r!   r  z!TestMessage._post_initialize_hook  s    r#   N)r-   r.   r/   r   r   r<   r?   rB   r  r  r  r  r  r  r  r  r  r  r6   r#   r!   r  r  `  sI    H&-  $$	-F< Ir#   r  c                   H    e Zd Zej                  Zd Zd Zd Zd Z	d Z
d Zy)TestMaildirMessagec                 t    | j                  |j                  d       | j                  |j                  d       y )Nr  rO  )r   _subdir_infor  s     r!   r  z(TestMaildirMessage._post_initialize_hook  s*    e,B'r#   c                 2   t        j                  t              | j                  j	                         d       j                  d       | j                  j	                         d       j                  d       | j                  j	                         d       | j                  t        fd       | j                  j	                         d       j                  d       | j                  j	                         d       | j                         y )Nr  r  c                  &     j                  d      S r  )r  r   s   r!   r   z0TestMaildirMessage.test_subdir.<locals>.<lambda>  s    cnnU.C r#   )	r   r0   rQ   r   r  r  r   rj   r"   r  s    @r!   test_subdirzTestMaildirMessage.test_subdir  s    $$_5)51u)51u)51*&CD)51u)513r#   c                    t        j                  t              }| j                  |j	                         d       | j                  |j                         d       |j                  d       | j                  |j                         d       | j                  |j	                         d       |j                  d       | j                  |j	                         d       |j                  d       | j                  |j	                         d       |j                  d       | j                  |j	                         d	       | j                  |j                         d       | j                  |       y )
NrO  r  FSDTPDPSTFTDFPSTTDRPFS)
r   r0   rQ   r   r  r  r  add_flagremove_flagr"   r  s     r!   
test_flagszTestMaildirMessage.test_flags  s   $$_5"-)51c)51#.f&1T'2$/)513r#   c                    t        j                  t              }| j                  t	        |j                         t        j                         z
        d       |j                  d       | j                  |j                         d       y )N<           )	r   r0   rQ   r   absget_dater  set_dater   r  s     r!   	test_datezTestMaildirMessage.test_date  sX    $$_5CLLNTYY[892>S-r#   c                 .   t        j                  t              | j                  j	                         d       j                  d       | j                  j	                         d       | j                  t        fd       | j                         y )NrO  z	1,foo=barc                  &     j                  d       S r	   )r  r  s   r!   r   z.TestMaildirMessage.test_info.<locals>.<lambda>  s    S\\$-? r#   )	r   r0   rQ   r   get_infor  r   rB  r"   r  s    @r!   	test_infozTestMaildirMessage.test_info  sj    $$_5,[!5)%?@3r#   c                     t        j                  t              }| j                  |j	                         d       |j                  d       | j                  |j                         d       | j                  |j	                         d       |j                  d       | j                  |j                         d       | j                  |j	                         d       |j                  d       | j                  |j                         d       | j                  |j	                         d       |j                  d       | j                  |j                         d       | j                  |j	                         d       | j                  |       y )	NrO  SFr  z2,FSz1,RPTDz2,D)r   r0   rQ   r   r  r  r  r  r  r  r"   r  s     r!   test_info_and_flagsz&TestMaildirMessage.test_info_and_flags  s   $$_5,d$/0T"-."-.S#./3r#   N)r-   r.   r/   r   r0   r<   r  r  r  r  r	  r  r6   r#   r!   r  r    s+    %%H(  ".  r#   r  c                   D    e Zd Zej                  Zd Zd Zd Zd Z	ddZ
y)_TestMboxMMDFMessagec                 &    | j                  |       y r	   )_check_fromr  s     r!   r  z*_TestMboxMMDFMessage._post_initialize_hook  s    r#   c                     t        j                  t              }|j                  d       t        j                  |      }| j                  |j                         d|j                                y )NzFrom foo@bar blahrN  )r   r   rQ   set_unixfromr1   r   rP  r  s     r!   test_initialize_with_unixfromz2_TestMboxMMDFMessage.test_initialize_with_unixfrom  sM    ooo.,-!!#&Hr#   c                 n   t        j                  t              }| j                  |       |j	                  d       | j                  |j                         d       |j	                  dd       | j                  |d       |j	                  dt        j                                | j                  |d       y )Nzfoo barfoo@barTz	blah@temp)	r   r1   rQ   r  set_fromr   rP  r  	localtimer  s     r!   	test_fromz_TestMboxMMDFMessage.test_from  s    !!/2Y3Y%i([$.."23k*r#   c                     t        j                  t              }| j                  |j	                         d       |j                  d       | j                  |j	                         d       |j                  d       | j                  |j	                         d       |j                  d       | j                  |j	                         d       |j                  d       | j                  |j	                         d       | j                  |       y )	NrO  r  XODRRODXFARODFAXFDXARO)	r   r1   rQ   r   r  r  r  r  r"   r  s     r!   r  z_TestMboxMMDFMessage.test_flags  s    !!/2"-c#.f&1T(3$/3r#   Nc                 x    |d}| j                  t        j                  |dz   |j                                      y )NzMAILER-DAEMONz. \w{3} \w{3} [\d ]\d [\d ]\d:\d{2}:\d{2} \d{4})r  r  r  rP  )r   r   senders      r!   r  z _TestMboxMMDFMessage._check_from'  s7    >$FRXXJJ  	!r#   r	   )r-   r.   r/   r   _mboxMMDFMessager<   r  r  r  r  r  r6   r#   r!   r  r     s'    ''HI	+ !r#   r  c                   $    e Zd Zej                  Zy)TestMboxMessageN)r-   r.   r/   r   r1   r<   r6   r#   r!   r&  r&  0      ""Hr#   r&  c                   0    e Zd Zej                  Zd Zd Zy)TestMHMessagec                 <    | j                  |j                  g        y r	   )r   
_sequencesr  s     r!   r  z#TestMHMessage._post_initialize_hook9  s    ,r#   c                    t        j                  t              }| j                  |j	                         g        |j                  dg       | j                  |j	                         dg       |j                  g        | j                  |j	                         g        |j                  d       | j                  |j	                         dg       |j                  d       | j                  |j	                         ddg       |j                  d       | j                  |j	                         ddg       |j                  d       | j                  |j	                         dg       |j                  d       | j                  |j	                         ddg       |j                  d       | j                  |j	                         ddg       |j                  ddg       | j                  |j	                         ddg       y )Nfoobarr  r  r  )r   r2   rQ   r   r  r  r  remove_sequencer  s     r!   r  zTestMHMessage.test_sequences<  s   0**,b18*%**,xj9"**,b1"**,xj9#**,x.CD#**,x.CDH%**,yk:"**,y(.CDI&**,y(.CD8Y/0**,x.CDr#   N)r-   r.   r/   r   r2   r<   r  r  r6   r#   r!   r)  r)  5  s      H-Er#   r)  c                   6    e Zd Zej                  Zd Zd Zd Zy)TestBabylMessagec                 <    | j                  |j                  g        y r	   )r   _labelsr  s     r!   r  z&TestBabylMessage._post_initialize_hookX  s    b)r#   c                    t        j                  t              }| j                  |j	                         g        |j                  dg       | j                  |j	                         dg       |j                  g        | j                  |j	                         g        |j                  d       | j                  |j	                         dg       |j                  d       | j                  |j	                         ddg       |j                  d       | j                  |j	                         ddg       |j                  d       | j                  |j	                         dg       |j                  d       | j                  |j	                         ddg       |j                  d       | j                  |j	                         ddg       |j                  ddg       | j                  |j	                         ddg       y )Nr-  r  resentr  r  )r   r3   rQ   r   r  r  r  remove_labelr  s     r!   r  zTestBabylMessage.test_labels[  s   ""?3)2.z")H:6r)2.g)G95h)GX+>?h)GX+>?!)H:6h)Hh+?@")Hh+?@*-.)Hj+ABr#   c                    t        j                  t              }|j                         }| j	                  |j                         g        | j                  |j                                d|d<   d|d<   | j	                  |j                         j                         g        |j                  |       |j                         }| j	                  |j                         ddg       | j	                  |d   d       | j	                  |d   d       | j                  |j                                |j                          | j	                  |j                         ddg       | j                  |j                                |j                         }| j	                  |j                         g d       dD ]  }| j	                  ||   ||           y )Nz
FooBar 1.0
User-AgentBlahz
X-Whatever)r7  Dater~  ToSubject)
r   r3   rQ   get_visibler   rZ   r   r   set_visibleupdate_visible)r   r   visibleheaders       r!   test_visiblezTestBabylMessage.test_visibler  s   ""?3//#,'--/0 , &*//126 //#,)EF.=.7'--/0,)EF'--/0//# *5 	6E 	;FWV_c&k:	;r#   N)	r-   r.   r/   r   r3   r<   r  r  rA  r6   r#   r!   r0  r0  T  s    ##H*C.;r#   r0  c                   $    e Zd Zej                  Zy)TestMMDFMessageN)r-   r.   r/   r   r4   r<   r6   r#   r!   rC  rC    r'  r#   rC  c                       e Z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 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestMessageConversionc                     | j                   D ]4  }t        j                  t              } ||      }| j	                  |       6 y r	   )r5   r   r   rQ   r"   )r   rU  	msg_plainr   s       r!   test_plain_to_xz%TestMessageConversion.test_plain_to_x  s=    ,, 	$F8I#Cs#	$r#   c                     | j                   D ]4  } |t              }t        j                  |      }| j	                  |       6 y r	   )r5   rQ   r   r   r"   )r   rU  r   rG  s       r!   test_x_to_plainz%TestMessageConversion.test_x_to_plain  s=    ,, 	*F)C,Iy)	*r#   c                 `    | j                   D ]  } |t              }| j                  |       ! y r	   )r5   rU   r"   )r   rU  r   s      r!   test_x_from_bytesz'TestMessageConversion.test_x_from_bytes  s0    ,, 	$F./Cs#	$r#   c                 Z    | j                   D ]  | j                  t        fd        y )Nc                        d      S r7  r6   )rU  s   r!   r   z9TestMessageConversion.test_x_to_invalid.<locals>.<lambda>  s     r#   )r5   r   rB  )r   rU  s    @r!   test_x_to_invalidz'TestMessageConversion.test_x_to_invalid  s+    ,, 	@Fi)>?	@r#   c                    | j                   D ci c]  }| |t              j                   }}| j                   D ]y  }| j                   D ]h  }||u r |t              } ||      }||   D cg c]  }|||   vr| }}|D ]/  }	| j                  |	|j                  dj	                  ||             1 j { y c c}w c c}w )Nzwhile converting {} to {})r5   rQ   r  r  r  )
r   rU  	referenceclass1class2sourcer+   atype_specificr  s
             r!   3test_type_specific_attributes_removed_on_conversionzITestMessageConversion.test_type_specific_attributes_removed_on_conversion  s    &*&<&<>" VO4=== >	 >,, 
	LF00 	LV#0,5f,= !Bq&'y/@&@ "# !B !B) LD$$T6??3::66JLL	L
	L>!Bs   B8-B=c                    t        j                  t              }|j                  d       |j	                  d       |j                         }t        j                  |      }| j                  |       | j                  |j                         d       | j                  |j                         d       | j                  |j                         |       y )NDFPRSTr  )
r   r0   rQ   r  r  r  r"   r   r  r  )r   msg_maildirdater   s       r!   test_maildir_to_maildirz-TestMessageConversion.test_maildir_to_maildir  s    ,,_=h'u%##%$$[13(3)51.r#   c                 ,   d}t         j                  t         j                  fD ]  }t        j                  t              }|j                  d       |D ]  \  }}|j                  |        ||      }| j                  |j                         |       | j                  |j                         dt        j                  t        j                  d            z          |j                  d       | j                   ||      j                         d        y )N))r  rO  r  r  )PrO  )RA)r  r`  )Tr  )rY  RDFAr  zMAILER-DAEMON %sr  RODFA)r   r1   r4   r0   rQ   r  r  r   r  rP  r  asctimegmtimer  )r   pairsrU  rZ  settingresultr   s          r!   test_maildir_to_mboxmmdfz.TestMessageConversion.test_maildir_to_mboxmmdf  s    1**G,?,?@ 
	GF!00AK  %#( =%%g.[)  &9  1C!\\$++c*:;2< =	= ""5)VK0::<gF
	Gr#   c           	         t        j                  t              }ddgfdddgfddgfdddgfdg fd	dgfd
ddgff}|D ]I  \  }}|j                  |       | j	                  t        j
                  |      j                         |       K y )Nr  r  r  r  r_  r`  r  r  rb  rY  )r   r0   rQ   r  r   r2   r  r   rZ  rg  rh  ri  s        r!   test_maildir_to_mhz(TestMessageConversion.test_maildir_to_mh  s    ,,_=z"S8Y*?$@z"S8Y*?$@3)z"X	9/E$FH  % 	%OGV!!'*W..{;IIK#%	%r#   c           	         t        j                  t              }ddgfddgfdddgfdddgfdg fd	dd
gfdg dff}|D ]I  \  }}|j                  |       | j	                  t        j
                  |      j                         |       K y )Nr  r  r  r_  	forwardedr`  r  r  rb  deletedrY  )rp  r  ro  )r   r0   rQ   r  r   r3   r  rl  s        r!   test_maildir_to_babylz+TestMessageConversion.test_maildir_to_babyl  s    ,,_=z"S8*$5+./#*7M1NrS8Y"78@AC  % 	%OGV!!'*W11+>IIK#%	%r#   c                    t         j                  t         j                  fD ]  } |t              }|j	                  dt        j                  d             d}|D ]k  \  }}|j                  |       t        j                  |      }| j                  |j                         |       | j                  |j                         d       m |j                  d       | j                  t        j                  |      j                         d        y )Nr  r  ))r`  r  )OrO  )r  rb  r^  )ra  r`  )rd  FRSTrs  r  )r   r1   r4   rQ   r  r  rf  r  r0   r   r  r  r  )r   rU  msg_mboxMMDFrg  rh  ri  r   s          r!   test_mboxmmdf_to_maildirz.TestMessageConversion.test_mboxmmdf_to_maildir  s    **G,?,?@ 	$F!/2L!!)T[[-=>(E#( 6&&w/,,\:  &9  5	6
 ""3'W33LALLN"$	$r#   c                    t         j                  t         j                  fD ]  } |t              }|j	                  d       |j                  d       t         j                  t         j                  fD ]J  } ||      }| j                  |j                         d       | j                  |j                         d       L  y )Nrd  r  )	r   r1   r4   rQ   r  r  r   r  rP  )r   rU  ru  class2_r  s        r!   test_mboxmmdf_to_mboxmmdfz/TestMessageConversion.test_mboxmmdf_to_mboxmmdf  s    **G,?,?@ 	=F!/2L""7+!!),#//1D1DE =|,  !17;  )<=		=r#   c           	      :   t         j                  t         j                  fD ]x  } |t              }dg fddgfddgfdddgfdddgfd	ddgff}|D ]I  \  }}|j	                  |       | j                  t        j                  |      j                         |       K z y )
Nr`  rs  r  r  r  r  ra  r  rd  )r   r1   r4   rQ   r  r   r2   r  )r   rU  ru  rg  rh  ri  s         r!   test_mboxmmdf_to_mhz)TestMessageConversion.test_mboxmmdf_to_mh  s    **G,?,?@ 		)F!/2L2Yxj 1C(3DHi01Hi01	9568E $) )&&w/  !2!2<!@!N!N!P!'))		)r#   c           	      :   t         j                  t         j                  fD ]x  } |t              }dg fddgfdddgfddgfdddgfd	ddgff}|D ]I  \  }}|j	                  |       | j                  t        j                  |      j                         |       K z y )
Nr`  rs  r  r  rp  r  ra  r  rd  )r   r1   r4   rQ   r  r   r3   r  )r   rU  r   rg  rh  ri  s         r!   test_mboxmmdf_to_babylz,TestMessageConversion.test_mboxmmdf_to_babyl  s    **G,?,?@ 	QF)C2Yxj 1Hi01C(3DHj12	:679E $) Qg&  !5!5c!:!E!E!GPQ	Qr#   c                    d}|D ]  \  }}t        j                  t              }|j                  |       | j	                  t        j
                  |      j                         |       | j	                  t        j
                  |      j                         d        t        j                  t              }|j                  d       |j                  d       |j                  d       | j	                  t        j
                  |      j                         d       | j	                  t        j
                  |      j                         d       y )N)r  rO  )r  RS)r  r  r  r  r  r  r  )r   r2   rQ   r  r   r0   r  r  r   rg  rh  ri  r   s        r!   test_mh_to_maildirz(TestMessageConversion.test_mh_to_maildir!  s   F$ 	NOGV##O4CW%W33C8BBDfMW33C8CCEuM		N
 0"##//4>>@$G//4??A5Ir#   c                 4   d}|D ]z  \  }}t        j                  t              }|j                  |       t         j                  t         j
                  fD ](  }| j                   ||      j                         |       * | t        j                  t              }|j                  d       |j                  d       |j                  d       t         j                  t         j
                  fD ](  }| j                   ||      j                         d       * y )N)r  rs  )r  ROA)r  ROFr  r  r  OFA)r   r2   rQ   r  r1   r4   r   r  )r   rg  rh  ri  r   rU  s         r!   test_mh_to_mboxmmdfz)TestMessageConversion.test_mh_to_mboxmmdf0  s    I$ 	BOGV##O4CW%"..0C0CD B  !6!6!8&AB	B
 0"##**G,?,?@ 	=FVC[224e<	=r#   c                    t        j                  t              }|j                  d       |j                  d       |j                  d       | j	                  t        j                  |      j                         g d       y )Nr  r  r  )r  r  r  )r   r2   rQ   r  r   r  r  s     r!   test_mh_to_mhz#TestMessageConversion.test_mh_to_mh?  sc    0"##**3/==?9	;r#   c                    ddgfddgfdg ff}|D ]b  \  }}t        j                  t              }|j                  |       | j	                  t        j
                  |      j                         |       d t        j                  t              }|j                  d       |j                  d       |j                  d       | j	                  t        j
                  |      j                         ddg       y )Nr  r  r  r  )r   r2   rQ   r  r   r3   r  r  s        r!   test_mh_to_babylz&TestMessageConversion.test_mh_to_babylH  s    XJ')j\)BR"$ 	MOGV##O4CW%W11#6AACVL	M 0"##--c2==?"J/	1r#   c                 j   d}|D ]  \  }}t        j                  t              }|j                  |       | j	                  t        j
                  |      j                         |       | j	                  t        j
                  |      j                         d        t        j                  t              }dD ]  }|j                  |        | j	                  t        j
                  |      j                         d       | j	                  t        j
                  |      j                         d       y )N)r  )rp  ST)r  r  )r  r  )ro  PS)editedr  )r4  r  r  r  rp  r  r  ro  r  r4  PRT)r   r3   rQ   r  r   r0   r  r  r   rg  rh  ri  r   labels         r!   test_babyl_to_maildirz+TestMessageConversion.test_babyl_to_maildirW  s    #  % 	NOGV&&7CMM'"W33C8BBDfMW33C8CCEuM		N
 ""?3* 	!EMM% 	! 	//4>>@%H//4??A5Ir#   c                    d}|D ]z  \  }}t         j                  t         j                  fD ]R  }t        j                  t              }|j                  |       | j                   ||      j                         |       T | t        j                  t              }dD ]  }|j                  |        t         j                  t         j                  fD ](  }| j                   ||      j                         d       * y )N)r  )rp  ROD)r  r!  )r  r  )ro  r!  )r  r!  )r4  r!  r  ODA)r   r1   r4   r3   rQ   r  r   r  )r   rg  rh  ri  rU  r   r  s          r!   test_babyl_to_mboxmmdfz,TestMessageConversion.test_babyl_to_mboxmmdfh  s    #  % 	BOGV"..0C0CD B**?;g&  !6!6!8&AB	B
 ""?3* 	!EMM% 	! **G,?,?@ 	=FVC[224e<	=r#   c                    ddgfdg fdg fddgfdg fdg fdg ff}|D ]b  \  }}t        j                  t              }|j                  |       | j	                  t        j
                  |      j                         |       d t        j                  t              }d	D ]  }|j                  |        | j	                  t        j
                  |      j                         ddg       y )
Nr  rp  r  r  r  ro  r  r4  r  )r   r3   rQ   r  r   r2   r  r  s         r!   test_babyl_to_mhz&TestMessageConversion.test_babyl_to_mhy  s    XJ')R7B-yk*[",="~B!  % 	MOGV&&7CMM'"W..s3AACVL	M ""?3* 	!EMM% 	! 	**3/==?"I.	0r#   c                 6   t        j                  t              }|j                          dD ]  }|j	                  |        t        j                  |      }| j                  |j                         g d       | j                  |j                         j                         |j                         j                                |j                         j                         D ]6  }| j                  |j                         |   |j                         |          8 y )Nr  )	r   r3   rQ   r>  r  r   r  r<  rZ   )r   r   r  r  r   s        r!   test_babyl_to_babylz)TestMessageConversion.test_babyl_to_babyl  s    ""?3* 	!EMM% 	! ##C(* -7 	8 	*//143C3C3E3J3J3LM??$))+ 	NCS__.s3T5E5E5G5LM	Nr#   N)r-   r.   r/   rH  rJ  rL  rO  rW  r\  rj  rm  rq  rv  ry  r{  r}  r  r  r  r  r  r  r  r  r6   r#   r!   rE  rE    sr    $*$@
L
/G 	%
%$ 	=)
QJ=;1J"="0 Nr#   rE  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestProxyFileBasec                    |j                  d       | j                  |j                         d       |j                  d       | j                  |j                         d       |j                  d       | j                  |j                  d      d       |j                  d       | j                  |j                  d      d       |j                  d       | j                  |j                  d      d	       y )
Nr      barrD   s   arrE   s   ba     r)r   r   r   r   proxys     r!   
_test_readzTestProxyFileBase._test_read  s    

1v.

1u-

1A.

1B/

1D)40r#   c                 d   t         j                  j                         }|j                  d       | j	                  |j                         d|z          | j	                  |j                         d|z          | j	                  |j                         d|z          | j	                  |j                         d       |j                  d       | j	                  |j                         d|z          |j                  ddt        t         j                        z  z          | j	                  |j                         d|z          |j                  ddt        t         j                        z  z          | j	                  |j                  d      d	       | j	                  |j                  d
      d|z          y )Nr      foor     fred   bobrE      orI   s   fris   ed)r%   r   r_   r   r   readliner   r   r  r   s      r!   _test_readlinez TestProxyFileBase._test_readline  s>   **##%

1)6G+;<)6G+;<)7W+<=)62

1)4'>:

1q3rzz?**+)7W+<=

1q3rzz?**+*E2,ego>r#   c                 D   t         j                  j                         }|j                  d       | j	                  |j                         d|z   d|z   d|z   dg       |j                  d       | j	                  |j                  d      d|z   g       |j                  dt        |      z          | j	                  |j                  dt        |      z         d|z   d|z   g       |j                  d       | j	                  |j                  d	      |d|z   d|z   dg       y )
Nr   r  r  r  r  rE   rF   rG   r  )r%   r   r_   r   r   r?  r   r  s      r!   _test_readlinesz!TestProxyFileBase._test_readlines  s   **##%

1*Vg-=+1G+;+2W+<f-F 	G 	

1+fw.>-?@

1s7|#$S\)9:w&'(9:	<

1.&7:J/6/@&1J 	Kr#   c                    t         j                  j                         }|j                  d       t	        |      }| j                  t        |      d|z          | j                  t        |      d|z          | j                  t        |      d|z          | j                  t        |      d       | j                  t        t        |       y )Nr   r  r  r  r  )	r%   r   r_   r   iterr   nextr   StopIteration)r   r  r   iterators       r!   _test_iterationz!TestProxyFileBase._test_iteration  s    **##%

1;h')9:h')9:h7):;h0-x8r#   c                    t         j                  j                         }|j                  d       | j	                  |j                         d       | j	                  |j                  t        |            |       |j                  dd       | j	                  |j                  dt        |      z         d|z          |j                  dt        |      z
  d       | j	                  |j                  d      d       |j                  dd       | j	                  |j                         d|z   dz   |z          |j                  d	       | j                  |j                                y )
NrF   rE   rD   r  r  r  r   r  d   )	r%   r   r_   r   r   tellr   r   r1  r  s      r!   _test_seek_and_tellz%TestProxyFileBase._test_seek_and_tell  s   **##%

1q)CL17;

1aAG$45tg~F

2G$a(A/

1atg~'>'HI

3&r#   c                     | j                  |j                         |j                          | j                  |j                         |j                          | j                  |j                         y r	   )r1  r  rA   r   r  s     r!   _test_closezTestProxyFileBase._test_close  sF    &%%r#   N)	r-   r.   r/   r  r  r  r  r  r  r6   r#   r!   r  r    s!    1? K 	9'&r#   r  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestProxyFilec                 d    t         j                  | _        t        | j                  d      | _        y Nr   r   r:   r;   r  r\  r>   s    r!   r?   zTestProxyFile.setUp  !    %%
$**e,
r#   c                 n    | j                   j                          | j                  | j                         y r	   r\  rA   r,   r;   r>   s    r!   rB   zTestProxyFile.tearDown  $    

  ,r#   c                    | j                   j                  d       | j                   j                         }t        j                  | j                         }| j                  |j                         |       | j                  | j                   j                         |       t        j                  | j                   d      }| j                  |j                         d       | j                  | j                   j                         |       y )Nr  r   )r\  r   r  r   
_ProxyFiler   )r   posproxy0proxy1s       r!   test_initializezTestProxyFile.test_initialize  s    

 jjoo##DJJ/,*C0##DJJ2**C0r#   c                     | j                   j                  d       | j                  t        j                  | j                                y )Nr  )r\  r   r  r   r  r>   s    r!   	test_readzTestProxyFile.test_read  s/    

 **4::67r#   c                    | j                   j                  t        dt        j                  dt        j                  dt        j                  dd             | j                  t        j                  | j                                y Nr   r  fredbobr   )r\  r   bytesr%   r   r  r   r  r>   s    r!   test_readlinezTestProxyFile.test_readline  sU    



BJJ24** >?FH 	IG..tzz:;r#   c                    | j                   j                  t        dt        j                  dt        j                  dt        j                  dd             | j                  t        j                  | j                                y r  )r\  r   r  r%   r   r  r   r  r>   s    r!   test_readlineszTestProxyFile.test_readlines
  U    



BJJ24** >?FH 	IW//

;<r#   c                    | j                   j                  t        dt        j                  dt        j                  dt        j                  dd             | j                  t        j                  | j                                y r  )r\  r   r  r%   r   r  r   r  r>   s    r!   test_iterationzTestProxyFile.test_iteration  r  r#   c                     | j                   j                  t        dt        j                  dt        j                  d             | j                  t        j                  | j                                y Nr   r  r   )r\  r   r  r%   r   r  r   r  r>   s    r!   test_seek_and_tellz TestProxyFile.test_seek_and_tell  sE    

rzz2::FPQ  !3!3DJJ!?@r#   c                     | j                   j                  t        dt        j                  dt        j                  d             | j                  t        j                  | j                                y r  )r\  r   r  r%   r   r  r   r  r>   s    r!   r8  zTestProxyFile.test_close  sE    

rzz2::FPQ++DJJ78r#   Nr-   r.   r/   r?   rB   r  r  r  r  r  r  r8  r6   r#   r!   r  r    s0    --	18<
=
=
A9r#   r  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestPartialFilec                 d    t         j                  | _        t        | j                  d      | _        y r  r  r>   s    r!   r?   zTestPartialFile.setUp  r  r#   c                 n    | j                   j                          | j                  | j                         y r	   r  r>   s    r!   rB   zTestPartialFile.tearDown#  r  r#   c                    | j                   j                  t        dt        j                  z   dz   d             | j                   j                         }t        j                  | j                   dd      }| j                  |j                         d       | j                  | j                   j                         |       y )Nr   r  r   rE   rH   r   )	r\  r   r  r%   r   r  r   _PartialFiler   )r   r  r  s      r!   r  zTestPartialFile.test_initialize'  s    

urzz1E97CDjjoo$$TZZA6q)*C0r#   c                     | j                   j                  t        dd             | j                  t	        j
                  | j                   dd             y )Nz	***bar***r   rF   rI   )r\  r   r  r  r   r  r>   s    r!   r  zTestPartialFile.test_read/  s:    

{G45,,TZZA>?r#   c                 P   | j                   j                  t        dt        j                  dt        j                  dt        j                  dd             | j                  t        j                  | j                   dddt        t        j                        z  z                y )	Nz!!!!!foor  r  zbob!!!!!r   rH      rF   )	r\  r   r  r%   r   r  r   r  r   r>   s    r!   r  zTestPartialFile.test_readline3  sr    

**bjj"** >?FH 	IG00Q13a#bjj/6I1IK 	Lr#   c                 P   | j                   j                  t        dt        j                  dt        j                  dt        j                  dd             | j                  t        j                  | j                   dddt        t        j                        z  z                y )	Nr   r  r  zbob?????r   r      rF   )	r\  r   r  r%   r   r  r   r  r   r>   s    r!   r  zTestPartialFile.test_readlines9  r    

**bjj"** >?FH 	IW11$**a24q3rzz?7J2JL 	Mr#   c                 P   | j                   j                  t        dt        j                  dt        j                  dt        j                  dd             | j                  t        j                  | j                   dddt        t        j                        z  z                y )	N____foor  r  zbob####r   rG      rF   )	r\  r   r  r%   r   r  r   r  r   r>   s    r!   r  zTestPartialFile.test_iteration?  r  r#   c                 .   | j                   j                  t        dt        j                  dt        j                  dd             | j                  t        j                  | j                   dddt        t        j                        z  z                y )Nz(((foor  z$$$r   rF   	   rE   )	r\  r   r  r%   r   r  r   r  r   r>   s    r!   r  z"TestPartialFile.test_seek_and_tellE  sb    

RZZLgVW  !5!5djj!67!c"**o:M6M"O 	Pr#   c                 .   | j                   j                  t        dt        j                  dt        j                  dd             | j                  t        j                  | j                   dddt        t        j                        z  z                y )Nz&foor  ^r   rD   rI   rF   )	r\  r   r  r%   r   r  r   r  r   r>   s    r!   r8  zTestPartialFile.test_closeJ  sb    

RZZH'RS--djj!./!c"**o2E.EG 	Hr#   Nr  r6   r#   r!   r  r    s5    --1@LMMP
Hr#   r  z6From some.body@dummy.domain  Sat Jul 24 13:43:35 2004
z]From: some.body@dummy.domain
To: me@my.domain
Subject: Simple Test

This is a dummy message.
c                   8    e Zd Zd Zd Zd	dZd Zd Zd Zd Z	y)
MaildirTestCasec                    t         j                  | _        t        j                  j                  | j                        r t        j                  | j                         nHt        j                  j                  | j                        rt        j                  | j                         t        j                  | j                         t        j                  t        j                  j                  | j                  d             t        j                  t        j                  j                  | j                  d             t        j                  t        j                  j                  | j                  d             d| _        g | _        y )Nr  r  r  rD   )r   r:   _dirr%   r&   r'   r(   isfiler*   r  r  _counter	_msgfilesr>   s    r!   r?   zMaildirTestCase.setUp]  s    $$	77==#TYY'WW^^DII&TYY'

dii/0
dii/0
dii/0r#   c                 
   t        t        t        j                  | j                               t        j                  t        j                  j                  | j                  d             t        j                  t        j                  j                  | j                  d             t        j                  t        j                  j                  | j                  d             t        j                  | j                         y )Nr  r  r  )
r   mapr%   r*   r  r   rmdirr&   r  r  r>   s    r!   rB   zMaildirTestCase.tearDownk  s    SDNN+,TYY67TYY67TYY67		"r#   c                 R   t        t        j                         dz        }| j                  }| xj                  dz  c_        dj                  t	        |      t	        |      ddf      }t
        j                  j                  | j                  d|      }t
        j                  j                  | j                  ||      }t        |dd	      5 }| j                  j                  |       |r|j                  t               |j                  t               d d d        	 t        j                  ||       | j                  j                  |       |S # 1 sw Y   =xY w# t        t         f$ r: t        |d      5 }|j                  t               d d d        n# 1 sw Y   nxY wY qw xY w)
Ni@B rD   .
myhostnamemydomainr  r  rJ   rK   )r  r  r  r  strr%   r&   r  r  r  rN   r   FROM_DUMMY_MESSAGElinkAttributeErrorPermissionError)	r   dirrv  tr  r  tmpnamenewnamefps	            r!   createMessagezMaildirTestCase.createMessager  s>   		g%&mm88SVSX|ZHI'',,tyy%:'',,tyy#x8'31 	$RNN!!'*HH]#		$
	(GGGW% 	g&	$ 	$ 0 	(gs# (r'( ( (	(s7   AEE EF&8F	F&F 	F&%F&c                     t        j                  t        j                        | _        | j                  | j                  j                                | j                  | j                  j                                y)zTest an empty maildir mailboxN)r   r~  r   r:   rv  r   r  r>   s    r!   test_empty_maildirz"MaildirTestCase.test_empty_maildir  sN     OOI$4$45	 	$))..*+$))..*+r#   c                 l   | j                  d       t        j                  t        j                        | _        | j                  | j
                  j                                | j                  | j
                  j                                | j                  | j
                  j                                y )Nr  	r  r   r~  r   r:   rv  r  r  r   r>   s    r!   test_nonempty_maildir_curz)MaildirTestCase.test_nonempty_maildir_cur  q    5!OOI$4$45	TYY^^-.$))..*+$))..*+r#   c                 l   | j                  d       t        j                  t        j                        | _        | j                  | j
                  j                                | j                  | j
                  j                                | j                  | j
                  j                                y )Nr  r  r>   s    r!   test_nonempty_maildir_newz)MaildirTestCase.test_nonempty_maildir_new  r  r#   c                    | j                  d       | j                  d       t        j                  t        j                        | _        | j                  | j
                  j                                | j                  | j
                  j                                | j                  | j
                  j                                | j                  | j
                  j                                y )Nr  r  r  r>   s    r!   test_nonempty_maildir_bothz*MaildirTestCase.test_nonempty_maildir_both  s    5!5!OOI$4$45	TYY^^-.TYY^^-.$))..*+$))..*+r#   N)F)
r-   r.   r/   r?   rB   r  r  r  r  r  r6   r#   r!   r  r  [  s%    #(,,,,r#   r  aK  Return-Path: <gkj@gregorykjohnson.com>
X-Original-To: gkj+person@localhost
Delivered-To: gkj+person@localhost
Received: from localhost (localhost [127.0.0.1])
        by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17
        for <gkj+person@localhost>; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)
Delivered-To: gkj@sundance.gregorykjohnson.com
Received: from localhost [127.0.0.1]
        by localhost with POP3 (fetchmail-6.2.5)
        for gkj+person@localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)
Received: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])
        by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746
        for <gkj@gregorykjohnson.com>; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)
Received: by andy.gregorykjohnson.com (Postfix, from userid 1000)
        id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)
Date: Wed, 13 Jul 2005 17:23:11 -0400
From: "Gregory K. Johnson" <gkj@gregorykjohnson.com>
To: gkj@gregorykjohnson.com
Subject: Sample message
Message-ID: <20050713212311.GC4701@andy.gregorykjohnson.com>
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"
Content-Disposition: inline
User-Agent: Mutt/1.5.9i


--NMuMz9nt05w80d4+
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

This is a sample message.

--
Gregory K. Johnson

--NMuMz9nt05w80d4+
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="text.gz"
Content-Transfer-Encoding: base64

H4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs
3FYlAAAA

--NMuMz9nt05w80d4+--
r   ))zReturn-Pathz<gkj@gregorykjohnson.com>)zX-Original-Togkj+person@localhost)Delivered-Tor  )Receivedzfrom localhost (localhost [127.0.0.1])
        by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17
        for <gkj+person@localhost>; Wed, 13 Jul 2005 17:23:16 -0400 (EDT))r  z gkj@sundance.gregorykjohnson.com)r  zfrom localhost [127.0.0.1]
        by localhost with POP3 (fetchmail-6.2.5)
        for gkj+person@localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT))r  zfrom andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])
        by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746
        for <gkj@gregorykjohnson.com>; Wed, 13 Jul 2005 17:23:11 -0400 (EDT))r  ztby andy.gregorykjohnson.com (Postfix, from userid 1000)
        id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT))r9  zWed, 13 Jul 2005 17:23:11 -0400)r~  z."Gregory K. Johnson" <gkj@gregorykjohnson.com>)r:  zgkj@gregorykjohnson.com)r;  zSample message)zMime-Versionz1.0)zContent-Typez,multipart/mixed; boundary="NMuMz9nt05w80d4+")zContent-Dispositioninline)r7  zMutt/1.5.9i)z1This is a sample message.

--
Gregory K. Johnson
zRH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs
3FYlAAAA
c                       e Zd Zd Zy)MiscTestCasec                 @    t        j                  | t        ddh       y )Nr   fcntl)not_exported)r   check__all__r   r>   s    r!   test__all__zMiscTestCase.test__all__	  s    T7+4g*>	@r#   N)r-   r.   r/   r   r6   r#   r!   r  r  	  s    @r#   r  c                  ,    t        j                          y r	   )r   reap_childrenr6   r#   r!   tearDownModuler#  	  s    r#   __main__);r%   r  r  r  r  r   email.messager  rS   r   testr   test.supportr   r   r!  rH  r   r5  has_gethostnameSkipTestr   r8   TestCaserK  r|  r%  r0  rt  r  r  r  r  rx  r  r  r  r  r  r&  r)  r0  rC  rE  r  r  r  r  r  r  rQ   r_   rU   r   r   r  r#  r-   mainr6   r#   r!   <module>r,     s   	 
      	 	   " &     $$
(

9
::% %8z$( z$z!DHh&7&7 !DHX%+x00 X%v
&<k &<RIO IX+1}h// +1\L}h// L
D>[(++ D>NE!2!2 ED '// 	1h'' 	1S(H-- SlG h&7&7 G T-! -!`#*K #
EK!2!2 E>4;{H$5$5 4;n#*K #
FNHh&7&7 FNRP& P&f.9%x'8'8 .9b0H'):): 0Hj 	BM,h'' M,d-^ (..w7 4 @8$$ @ zHMMO r#   