
    <eo                    4   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j!                  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:Z2e23                    d;          Z4i d<d=d>d?d@d?dAdBd@dCdAdDdAdEdAdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVZ5dWZ6 G dX dYej                  Z7dZ Z8e9d[k    r ej:                     dS dS )\    N)support)	os_helper)socket_helperztest requires gethostname()c                   f    e Zd Zej        ej        ej        ej        ej        ej	        fZ
d Zd ZdS )TestBasec                 4   |                      |t          j        j                   |                      |t          j                   t
                                          D ].\  }}|                     ||                    |                     /| 	                    |
                                           |                     t          |                                          t          t                               t          t                    D ]\  }}|                    |          }|                      |t          j        j                   |                     |t          j                   |                     |                                |           d S N)assertIsInstanceemailmessageMessagemailbox_sample_headersitemsassertInget_all
assertTrueis_multipartassertEquallenget_payload_sample_payloads	enumerateassertNotIsInstance)selfmsgkeyvalueipayloadparts          (/usr/lib/python3.11/test/test_mailbox.py_check_samplezTestBase._check_sample   sU   c5=#8999c7?333)//11 	3 	3JCMM%S!1!12222((**+++S__..//5E1F1FGGG#$455 	: 	:JAw??1%%D!!$(=>>>$$T7?;;;T--//9999		: 	:    c                     t           j                            |          rt          j        |           d S t           j                            |          rt          j        |           d S d S r	   )ospathisdirr   rmtreeexistsunlink)r   targets     r"   _delete_recursivelyzTestBase._delete_recursively,   sf    7==   	%V$$$$$W^^F## 	%V$$$$$	% 	%r$   N)__name__
__module____qualname__r   r   MaildirMessagemboxMessage	MHMessageBabylMessageMMDFMessageall_mailbox_typesr#   r-    r$   r"   r   r      s[         '*@ ,g.? -w/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                              d          Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd5d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)d5d&Z*d' Z+d5d(Z,d) Z-d5d*Z.d+ Z/d5d,Z0d- Z1d. Z2d/ Z3d0 Z4d1 Z5d2 Z6d3 Z7d4 Z8dS )6TestMailboxNzFrom: foo

%s
c                     t           j        | _        |                     | j                   |                     | j                  | _        d S r	   )r   TESTFN_pathr-   _factory_boxr   s    r"   setUpzTestMailbox.setUp;   s;    %
  ,,,MM$*--			r$   c                 l    | j                                          |                     | j                   d S r	   )r>   closer-   r<   r?   s    r"   tearDownzTestMailbox.tearDown@   s0    	  ,,,,,r$   c           
         g }|                     | j                            | j        dz                       |                     t          | j                  d           |                     | j                            t          j        t                                         |                     t          | j                  d           |                     | j                            t          j
        t                                         |                     t          | j                  d           |                     | j                            t          j        t                                         |                     t          | j                  d           |                     | j                            t                               |                     t          | j                  d           |                     | j                            t                               |                     t          | j                  d           |                     t                    5  |                     | j                            t          j        t          j        t                    d	                               d d d            n# 1 swxY w Y   |                     t          | j                  d
           |                     | j                            |d                   | j        dz             dD ](}|                     | j        ||                             )d S )Nr                     utf-8encoding   )rE   rF   rG   rH   rI   rJ   )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   DIMM$.1"455666TY+++DIMM'//"B"BCCDDDTY+++DIMM%";O"L"LMMNNNTY+++DIMM"*-B"C"CDDEEETY+++DIMM/22333TY+++DIMM"788999TY+++011 	X 	XKK	 ,A!B!BWUUUW W X X X	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	TY+++--d1g668JKKK# 	3 	3Atya12222	3 	3s   2AKKKu{               From: foo
            Subject: Falinaptár házhozszállítással. Már rendeltél?

            0
            c                 F   | j                             | j                            d                    }|                     t          | j                   d           |                     | j                             |          | j                            d                     d S )Nlatin-1rE   )r>   rP   _nonascii_msgencoder   r   	get_bytesr   r   s     r"   "test_add_invalid_8bit_bytes_headerz.TestMailbox.test_add_invalid_8bit_bytes_headerb   s    immD.55i@@AATY+++,,S11%%i00	2 	2 	2 	2 	2r$   c                     | j                                         d         }| j                            |                    d                    }|                     | j                            |          d           d S )NrE   r^   zZSubject: =?unknown-8bit?b?RmFsaW5hcHThciBo4Xpob3pzeuFsbO104XNzYWwuIE3hciByZW5kZWx06Ww/?=

)r_   
splitlinesr>   rP   r`   r   rZ   )r   subjr   s      r"   &test_invalid_nonascii_header_as_stringz2TestMailbox.test_invalid_nonascii_header_as_stringh   ss    !,,..q1immDKK	2233--c22-	. 	. 	. 	. 	.r$   c                 T   |                      t          d          5  | j                            | j                   d d d            n# 1 swxY w Y   | j                                         |                     t          | j                  d           |                                  d S Nz
ASCII-onlyr   )	assertRaisesRegex
ValueErrorr>   rP   r_   flushr   r   assertMailboxEmptyr?   s    r"   &test_add_nonascii_string_header_raisesz2TestMailbox.test_add_nonascii_string_header_raiseso   s    ##J== 	. 	.IMM$,---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.	TY+++!!!!!s    AAAc                     G d dt                     dfd}t          j        | t          j        j        d|           |                               5  | j                            t          j	        d                     d d d            n# 1 swxY w Y   | 
                    t          | j                  d           | j                                         |                                  d S )Nc                       e Zd ZdS )JTestMailbox.test_add_that_raises_leaves_mailbox_empty.<locals>.CustomErrorNr.   r/   r0   r7   r$   r"   CustomErrorrq   w   s          r$   rs   za fake errorc                                 r	   r7   )argskwrs   exc_msgs     r"   raiserzETestMailbox.test_add_that_raises_leaves_mailbox_empty.<locals>.raiserz   s    +g&&&r$   flattenu   From: Alphösor   )	Exceptionr   patchr   	generatorBytesGeneratorrj   r>   rP   rS   r   r   rB   rm   )r   rx   rs   rw   s     @@r"   )test_add_that_raises_leaves_mailbox_emptyz5TestMailbox.test_add_that_raises_leaves_mailbox_emptyv   s@   ))))))))) 	' 	' 	' 	' 	' 	'dEO:IvNNN##K99 	G 	GIMM%34DEEFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	GTY+++	!!!!!s   -BBB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

        Да, они летят.
        rK   c           	      .   | j                             | j                  }|                     | j                             |          | j                   | j                             |          5 }|                     |                                | j                            dt          j	        
                                                     d d d            n# 1 swxY w Y   |                     | j         |                                         d           d S )N   
u   Да, они летят.
)r>   rP   _non_latin_bin_msgr   ra   get_filereadreplacer&   linesepr`   r   r   r   fs      r"   test_add_8bit_bodyzTestMailbox.test_add_8bit_body   s6   immD344,,S110	2 	2 	2Y$$ 	6QVVXX!4<<U "
 1 1 3 35 56 6 6	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	333554	6 	6 	6 	6 	6s   -ACCCc                    t          j        d          5 }|                    t                     |                    d           | j                            |          }d d d            n# 1 swxY w Y   |                     | j                            |          	                    d          t          	                    d                     d S Nwb+r   r   )
tempfileTemporaryFilewriterV   seekr>   rP   r   ra   splitr   r   r   s      r"   test_add_binary_filez TestMailbox.test_add_binary_file   s    #E** 	#aGG)***FF1III)--""C	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	,,S1177>>!''..	0 	0 	0 	0 	0   A
A++A/2A/c                    t          j        d          5 }|                    | j                   |                    d           | j                            |          }d d d            n# 1 swxY w Y   |                     | j                            |          	                    d          | j        	                    d                     d S r   )
r   r   r   r   r   r>   rP   r   ra   r   r   s      r"   test_add_binary_nonascii_filez)TestMailbox.test_add_binary_nonascii_file   s    #E** 	#aGGD+,,,FF1III)--""C	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	,,S1177>>#))%00	2 	2 	2 	2 	2r   c                 
   t          j        dd          5 }|                    t                     |                    d           |                     t                    5  | j                            |          }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   | 	                    | j        
                    |                              d          t                              d                     d S )Nw+rK   rL   r   r   )r   r   r   rR   r   rW   rX   r>   rP   r   ra   r   rV   r   s      r"   test_add_text_file_warnsz$TestMailbox.test_add_text_file_warns   s]   #D7;;; 	'qGGO$$$FF1III!!"455 ' 'immA&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'
 	,,S1177>>!''..	0 	0 	0 	0 	0s6   A
B!B<BB	BB	BB#&B#c                 >   |                      t                    5  | j                            t	          j        | j        dz                      }d d d            n# 1 swxY w Y   |                     | j                            |          | j        dz             d S )N0)	rW   rX   r>   rP   rT   StringIOrQ   r   rZ   rb   s     r"   test_add_StringIO_warnsz#TestMailbox.test_add_StringIO_warns   s    011 	C 	C)--DNS,@ A ABBC	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C--c22DNS4HIIIIIs   5AA #A c                    |                      t                    5  |                     t          d          5  | j                            t          j        | j                             d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   | 	                    t          | j                  d           | j                                         |                                  d S ri   )rW   rX   rj   rk   r>   rP   rT   r   r_   r   r   rB   rm   r?   s    r"   !test_add_nonascii_StringIO_raisesz-TestMailbox.test_add_nonascii_StringIO_raises   sB   011 	? 	?''
LAA ? ?	bk$*<==>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	TY+++	!!!!!s4   B2A5)B5A9	9B<A9	=BBBc                 D    |                      | j        j                   d S r	   )_test_remove_or_delitemr>   remover?   s    r"   test_removezTestMailbox.test_remove   s!    $$TY%566666r$   c                 D    |                      | j        j                   d S r	   )r   r>   __delitem__r?   s    r"   test_delitemzTestMailbox.test_delitem   s!    $$TY%:;;;;;r$   c                      j                              j        dz             j                              j        dz                                 t	           j                   d                                            t	           j                   d                                t           fd                                t          fd                                 j                                        j        dz              j                              j        dz                                 t	           j                   d                                            t	           j                   d                                t           fd                                t          fd                                 j                                        j        dz                                              t	           j                   d                                t           fd                                t          fd	           d S )
Nr   rE   rF   c                      j                   S r	   r>   key0r   s   r"   <lambda>z5TestMailbox._test_remove_or_delitem.<locals>.<lambda>       DIdO r$   c                                  S r	   r7   )r   methods   r"   r   z5TestMailbox._test_remove_or_delitem.<locals>.<lambda>       FF4LL r$   c                      j                   S r	   r   )key2r   s   r"   r   z5TestMailbox._test_remove_or_delitem.<locals>.<lambda>   r   r$   c                                  S r	   r7   )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	   r7   )r   r   s   r"   r   z5TestMailbox._test_remove_or_delitem.<locals>.<lambda>   r   r$   )r>   rP   rQ   r   r   assertRaisesKeyErrorrZ   )r   r   r   r   r   s   ``@@@r"   r   z#TestMailbox._test_remove_or_delitem   sD   y}}T^a/00y}}T^a/00TY+++tTY+++($;$;$;$;$;<<<($8$8$8$8$8999--d33T^a5GHHHy}}T^a/00TY+++tTY+++($;$;$;$;$;<<<($8$8$8$8$8999--d33T^a5GHHHtTY+++($;$;$;$;$;<<<($8$8$8$8$899999r$   
   c                 f     j                              j        dz             j                              j        dz            }                     t	           j                   d            j                                                             t	           j                   d                                t           fd            j                                                             t	           j                   d                                t           fd           d S )Nr   rE   rF   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>   rP   rQ   r   r   discardr   r   )r   repetitionsr   r   s   `  @r"   test_discardzTestMailbox.test_discard   s
   y}}T^a/00y}}T^a/00TY+++	$TY+++($;$;$;$;$;<<<	$TY+++($;$;$;$;$;<<<<<r$   c                 .   | j                             | j        dz            }| j                             |          }|                     |d         d           |                     |                                d           |                     | j                             d                     |                     | j                             dd          d           | j                                          | 	                    | j
                  | _         | j                             | j        dz            }| j                             |          }|                     |d         d           |                     |                                d           d S )Nr   fromfoo0
FrE   1
)r>   rP   rQ   getr   r   assertIsNoneassertIsrB   r=   r<   )r   r   r   r   s       r"   test_getzTestMailbox.test_get   sC   y}}T^a/00immD!!Ve,,,**E222$)--..///dimmE5115999	MM$*--	y}}T^a/00immD!!Ve,,,**E22222r$   c                      j                              j        dz             j                  }                     |d         d                                |                                d                                t           fd            j                                                             t           fd           d S )Nr   r   r   r   c                       j         d         S Nr   r   r?   s   r"   r   z*TestMailbox.test_getitem.<locals>.<lambda>       DIe,< r$   c                      j                   S r	   r   r   s   r"   r   z*TestMailbox.test_getitem.<locals>.<lambda>  r   r$   )r>   rP   rQ   r   r   r   r   r   )r   r   r   s   ` @r"   test_getitemzTestMailbox.test_getitem   s    y}}T^a/00ioVe,,,**E222($<$<$<$<===	$($;$;$;$;$;<<<<<r$   c                    | j                             | j        dz            }| j                             t                    }| j                             |          }|                     |t          j                   |                     |d         d           |                     |	                                d           | 
                    | j                             |                     d S )Nr   r   r   r   )r>   rP   rQ   rR   get_messager
   r   r   r   r   r#   )r   r   r   msg0s       r"   test_get_messagezTestMailbox.test_get_message  s    y}}T^a/00y}}_--y$$T**dGO444fu---))++U33349006677777r$   c                    | j                             | j        dz            }| j                             t                    }|                     | j                             |          | j        dz                      d                     |                     | j                             |          t                     d S )Nr   asciir>   rP   rQ   rR   r   ra   r`   rV   r   r   r   s      r"   test_get_byteszTestMailbox.test_get_bytes  s    y}}T^a/00y}}_--,,T22^a''00	2 	2 	2,,T224IJJJJJr$   c                    | j                             | j        dz            }| j                             t                    }|                     | j                             |          | j        dz             |                     | j                             |                              d          t                              d                     d S )Nr   
r>   rP   rQ   rR   r   rZ   r   r   s      r"   test_get_stringzTestMailbox.test_get_string  s    y}}T^a/00y}}_----d33T^a5GHHH--d3399$??(..t44	6 	6 	6 	6 	6r$   c                    | j                             | j        dz            }| j                             t                    }| j                             |          5 }|                                }d d d            n# 1 swxY w Y   | j                             |          5 }|                                }d d d            n# 1 swxY w Y   |                     |                    d                              t          j
        d          | j        dz             |                     |                    d                              t          j
        d          t                     d S )Nr   r   r   )r>   rP   rQ   rR   r   r   r   decoder   r&   r   )r   r   r   filedata0data1s         r"   test_get_filezTestMailbox.test_get_file  s   y}}T^a/00y}}_--Y%% 	 IIKKE	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 Y%% 	 IIKKE	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 g..66rz4HH!+	- 	- 	-g..66rz4HH(	* 	* 	* 	* 	*s$   A==BB"CC
Cc                     | j                             t                    }| j                             |          }|                                 |                                 d S r	   )r>   rP   rR   r   rB   r   s      r"   !test_get_file_can_be_closed_twicez-TestMailbox.test_get_file_can_be_closed_twice*  sH    immO,,Is##										r$   c                 J    |                      | j        j        dd           d S NTFdo_keys	do_values)_check_iterationr>   iterkeysr?   s    r"   test_iterkeyszTestMailbox.test_iterkeys1  s(    di0$%PPPPPr$   c                 J    |                      | j        j        dd           d S r   )r   r>   r[   r?   s    r"   	test_keyszTestMailbox.test_keys5  s'    dindeLLLLLr$   c                 J    |                      | j        j        dd           d S NFTr   )r   r>   
itervaluesr?   s    r"   test_itervalueszTestMailbox.test_itervalues9  s5    di2E(, 	 	. 	. 	. 	. 	.r$   c                 J    |                      | j        j        dd           d S r   )r   r>   __iter__r?   s    r"   	test_iterzTestMailbox.test_iter>  s5    di0%(, 	 	. 	. 	. 	. 	.r$   c                 J    |                      | j        j        dd           d S r   )r   r>   valuesr?   s    r"   test_valueszTestMailbox.test_valuesC  s(    di.NNNNNr$   c                 J    |                      | j        j        dd           d S NTr   )r   r>   	iteritemsr?   s    r"   test_iteritemszTestMailbox.test_iteritemsG  s5    di14(, 	 	. 	. 	. 	. 	.r$   c                 J    |                      | j        j        dd           d S r   )r   r>   r   r?   s    r"   
test_itemszTestMailbox.test_itemsL  s'    diottLLLLLr$   c                     |            D ]}|                      d           g g }}t          |          D ]T}|                    | j                            | j        |z                       |                    | j        |z             U|r|st           |                      }	nZ|r|st           |                      }
n>g g }
}	 |            D ]/\  }}|	                    |           |
                    |           0|r`|                     t          |          t          |	                     |                     t          |          t          |	                     |rd}|
D ]X}|                     |d         d           | 
                    t          |                                          |           |dz  }Y|                     t          |          |           d S d S )Nz	Not emptyr   r   r   rE   )failrangerO   r>   rP   rQ   listr   r   set
assertLessintr   )r   r   r   r   r   r   r[   r   r   returned_keysreturned_valuesr   counts                r"   r   zTestMailbox._check_iterationP  s   VXX 	# 	#EIIk""""2f{## 	. 	.AKK	dnq&899:::MM$.1,---- 	.9 	. NNMM 	.w 	."6688nnOO-/?M$fhh . .
U$$S)))&&u---- 	<SYYM(:(:;;;SYYM(:(:;;; 	1E(    v666E$5$5$7$7 8 8+FFF
S[[%00000	1 	1r$   c                 ~   |                      d| j                   | j                            | j        dz            }|                     || j                   |                      d| j                   | j                            | j        dz            }|                     || j                   |                     || j                   |                      d| j                   | j                            |           |                      || j                   |                     || j                   |                      d| j                   | j                            |           |                      || j                   |                      || j                   |                      d| j                   d S )Nr   r   rE   )assertNotInr>   rP   rQ   r   r   r   s      r"   test_containszTestMailbox.test_containsk  s   	***y}}T^a/00dDI&&&	***y}}T^a/00dDI&&&dDI&&&	***	ty)))dDI&&&	***	ty)))ty)))	*****r$   c                 T   g }t          |          D ]}|                     t          | j                  |           |                    | j                            | j        |z                       |                     t          | j                  |dz              t          |          D ]{}|                     t          | j                  ||z
             | j                            ||                    |                     t          | j                  ||z
  dz
             |d S )NrE   )r   r   r   r>   rO   rP   rQ   r   )r   r   r[   r   s       r"   test_lenzTestMailbox.test_len~  s   {## 	4 	4AS^^Q///KK	dnq&899:::S^^QU3333{## 	B 	BAS^^[1_===IT!W%%%S^^[1_q-@AAAA	B 	Br$   c                      j                              j        dz            }                      j                             |           j        dz              j                              j        dz            }                      j                             |           j        dz              j        dz   j         |<                         j                             |           j        dz              j        dz   j         |<                         j                             |           j        dz             t
           j         |<                         j         |                     j         |          j         |<                         j         |                     j        dz   j         |<                         j                             |           j        dz                                   j         |                                         t           fd                                t           fd                                t           j                   d           d S )N
original 0
original 1	changed 0	changed 1c                  :     j                             dd          S )Nr   bar)r>   __setitem__r?   s   r"   r   z+TestMailbox.test_set_item.<locals>.<lambda>  s    $)"7"7u"E"E r$   c                       j         d         S r   r   r?   s   r"   r   z+TestMailbox.test_set_item.<locals>.<lambda>  r   r$   rF   )
r>   rP   rQ   r   rZ   rR   r#   r   r   r   r   s   `  r"   test_set_itemzTestMailbox.test_set_item  sH   y}}T^l:;;--d33,6	8 	8 	8y}}T^l:;;--d33,6	8 	8 	8.;6	$--d33+5	7 	7 	7.;6	$--d33+5	7 	7 	7)	$49T?+++)D/	$49T?+++.<7	$--d33^l2	4 	4 	449T?+++(EEEE	G 	G 	G($<$<$<$<===TY+++++r$   c                     g }t          |          D ]$} j                             j        |z             %t	          |          D ];\  }                      j                                       j        |z             < j                                                              t           j                  d           t	          |          D ]$\  } 	                    t           fd           %d S )Nr   c                  8    j                                        S r	   )r>   rZ   r   r   s   r"   r   z(TestMailbox.test_clear.<locals>.<lambda>  s    	0D0DS0I0I r$   )r   r>   rP   rQ   r   r   rZ   clearr   r   r   )r   
iterationsr[   r   r   s   `   @r"   
test_clearzTestMailbox.test_clear  s   z"" 	. 	.AIMM$.1,----oo 	L 	LFAsTY11#668JKKKK	TY+++oo 	K 	KFAsh(I(I(I(I(IJJJJ	K 	Kr$   c                 R   | j                             | j        dz            }|                     || j                    | j                             | j        dz            }|                     || j                    |                     | j                             |                                          d           |                     || j                    |                     || j                    | j                             | j        dz            }|                     || j                    |                     | j                             |                                          d           |                     || j                    |                     || j                    |                     | j                             |                                          d           |                     || j                    |                     t          | j                   d           d S )Nr   rE   r   rF   z2
r   )	r>   rP   rQ   r   r   popr   r  r   r   r   r   r   s       r"   test_popzTestMailbox.test_pop  s   y}}T^a/00dDI&&&y}}T^a/00dDI&&&t,,88::EBBBty)))dDI&&&y}}T^a/00dDI&&&t,,88::EBBBty)))dDI&&&t,,88::EBBBty)))TY+++++r$   c                     g }t          d          D ]7}|                     j                             j        |z                       8g }t          d          D ]} j                                        \  }                     |                                |           |                                                    t          |
                                          |                                                              t           j                  d           |D ]!                     t           fd           "d S )Nr   r   c                      j                   S r	   r   r  s   r"   r   z*TestMailbox.test_popitem.<locals>.<lambda>  s    	# r$   )r   rO   r>   rP   rQ   popitemr   r  r   r  r   indexr   r   r   )r   r  r[   r   seenr   r   s   `     @r"   test_popitemzTestMailbox.test_popitem  sM   r 	; 	;AKK	dnq&899::::r 	F 	FAy((**HCMM#t$$$S$'''KKS!2!233TZZ__EEEETY+++ 	@ 	@Ch(>(>(>(>(>????	@ 	@r$   c                 p     j                              j        dz             j                              j        dz            } j                              j        dz            } j                              j        dz  |t          i                                t           j                   d                                 j                                        j        dz                                   j                             |           j        dz                                   j         |                     j                             | j        dz  f| j        dz  f j        dz  fg                                t           j                   d                                 j                                        j        dz                                   j                             |           j        dz                                   j                             |           j        dz              	                    t           fd                                t           j                   d                                 j                                        j        dz                                   j                             |           j        dz                                   j                             |           j        dz             d S )	Nr  r  z
original 2r  rG   z	changed 2r  c                  P    j                             dd j        dz  i          S )Nr   r  r  )r>   updaterQ   r   s   r"   r   z)TestMailbox.test_update.<locals>.<lambda>  s1    $)"2"2E5*.0L4N #O #O r$   )r>   rP   rQ   r(  rR   r   r   rZ   r#   r   r   )r   r   r   r   s   `  @r"   test_updatezTestMailbox.test_update  s)   y}}T^l:;;y}}T^l:;;y}}T^l:;;	$ <1 	2 	2 	2TY+++--d33^k1	3 	3 	3--d33^l2	4 	4 	449T?+++	4+!=>4>K784>L89; 	< 	< 	< 	TY+++--d33^l2	4 	4 	4--d33^k1	3 	3 	3--d33^k1	3 	3 	3(O O O O O	P 	P 	P 	TY+++--d33^k1	3 	3 	3--d33^k1	3 	3 	3--d33^k1	3 	3 	3 	3 	3r$   c                 F    |                      | j        j        d           d S NT)_test_flush_or_closer>   rl   r?   s    r"   
test_flushzTestMailbox.test_flush  s"    !!$)/488888r$   c                    | j                             | j        dz             | j                             | j        dz             | j                                          | j                                          | j                                          | j                                          | j                                          d S Nr   rE   )r>   rP   rQ   rl   r"  r?   s    r"   test_popitem_and_flush_twicez(TestMailbox.test_popitem_and_flush_twice  s    	dnq()))	dnq()))					r$   c                    |                      t          j                            |                                                      | j                                         |                     t          j                            |                                                      | j                                         |                      t          j                            |                                                      d S r	   )	assertFalser&   r'   r*   _get_lock_pathr>   lockr   unlockr?   s    r"   test_lock_unlockzTestMailbox.test_lock_unlock  s    (;(;(=(=>>???	t':':'<'<==>>>	(;(;(=(=>>?????r$   c                 F    |                      | j        j        d           d S NF)r,  r>   rB   r?   s    r"   
test_closezTestMailbox.test_close  s"    !!$)/599999r$   c                      fdt          d          D             } j                            |d                     j                            |d                     j                            |d                     j        } |             |r j                                                               j                   _         j                                        }                     t          |          d           |D ]0} 	                     j        
                    |          |           1|                                 d S )Nc                 $    g | ]}j         |z  S r7   rQ   .0r   r   s     r"   
<listcomp>z4TestMailbox._test_flush_or_close.<locals>.<listcomp>  s     9991DNQ&999r$   rG   r   rE   rF   )r   r>   rP   rB   r=   r<   r[   r   r   r   rZ   )r   r   should_call_closecontentsoldboxr[   r   s   `      r"   r,  z TestMailbox._test_flush_or_close  s   9999a999	hqk"""	hqk"""	hqk""" 	IOOMM$*--	y~~TA&&& 	? 	?CMM$)..s33X>>>>r$   c           	          t          j        t                    t          t          j        t
                    fD ]}t          j                     j                            |                                	                                t
          
                    dt          j                                                             t          j                                         t           fd           d S )Nr   c                  :    j                             d            S r	   )r>   _dump_message)outputr   s   r"   r   z/TestMailbox.test_dump_message.<locals>.<lambda>*  s    $)"9"9$"G"G r$   )r   rS   rR   rT   rU   rV   r>   rE  r   getvaluer   r&   r   r`   r   	TypeError)r   inputrF  s   ` @r"   test_dump_messagezTestMailbox.test_dump_message   s    /@@%rz2G'H'HJ 	K 	KEZ\\FI##E6222V__..%--eRZ5F5F5H5HIIK K K K)GGGGG	I 	I 	I 	I 	Ir$   c                     | j         dz   S )Nz.lock)r<   r?   s    r"   r3  zTestMailbox._get_lock_path,  s    zG##r$   r   )9r.   r/   r0   maxDiffr=   rQ   r@   rC   r\   textwrapdedentr_   rc   rg   rn   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-  r0  r6  r9  r,  rJ  r3  r7   r$   r"   r9   r9   4   sW       GH#I. . .
- - -3 3 3. $HO %  M2 2 2. . ." " "" " " ) 
* 
 
 VG__ 	6 	6 	60 0 02 2 20 0 0J J J
" " "7 7 7< < <: : :,
= 
= 
= 
=3 3 3= = =8 8 8K K K6 6 6* * *  Q Q QM M M. . .
. . .
O O O. . .
M M M1 1 1 16+ + +&
B 
B 
B 
B, , ,6
K 
K 
K 
K, , ,$@ @ @ @  3  3  3D9 9 9	 	 	@ @ @: : :   
I 
I 
I$ $ $ $ $r$   r9   c                       e Zd Zd ZdS )TestMailboxSuperclassc                    t          j        d          |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd	           |                     t          fd
           |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd           |                     t          fd           d S )Nr'   c                  .                          d          S N )rP   boxs   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>6      swwr{{ r$   c                  .                          d          S rT  )r   rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>7  s    szz"~~ r$   c                  .                          d          S rT  )r   rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>8      sr7J7J r$   c                  .                          d          S rT  )r   rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>9  s    s{{2 r$   c                  0                          dd          S rT  )r  rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>:  s    sr27N7N r$   c                  ,                                      S r	   )r   rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>;  s    s||~~ r$   c                  ,                                      S r	   )r[   rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda><      sxxzz r$   c                  P                                                                      S r	   )r   __next__rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>=  s    s~~7G7G7P7P7R7R r$   c                  P                                                                      S r	   )r   rb  rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>>  s    s||~~7N7N7P7P r$   c                  ,                                      S r	   )r   rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>?      szz|| r$   c                  P                                                                      S r	   )r   rb  rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>@  s    s}}7O7O7Q7Q r$   c                  ,                                      S r	   )r   rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>A      syy{{ r$   c                  .                          d          S rT  )r   rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>B  rX  r$   c                  .                          d          S rT  )__getitem__rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>C  r[  r$   c                  .                          d          S rT  )r   rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>D  r[  r$   c                  .                          d          S rT  )rZ   rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>E  s    s~~b7I7I r$   c                  .                          d          S rT  )ra   rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>F  s    s}}R7H7H r$   c                  .                          d          S rT  )r   rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>G  s    s||B7G7G r$   c                      d v S rT  r7   rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>H  s    rSy r$   c                  .                          d          S rT  )__contains__rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>I  s    s7G7G7K7K r$   c                  ,                                      S r	   )__len__rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>J      s{{}} r$   c                  ,                                      S r	   )r  rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>K  rh  r$   c                  .                          d          S rT  )r  rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>L  rX  r$   c                  ,                                      S r	   )r"  rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>M  ru  r$   c                  .                          d          S )N))rU  rU  )r(  rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>N  s    szz+7N7N r$   c                  ,                                      S r	   )rl   rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>O  rh  r$   c                  ,                                      S r	   )r4  rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>P  r`  r$   c                  ,                                      S r	   )r5  rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>Q  re  r$   c                  ,                                      S r	   )rB   rV  s   r"   r   z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>R  rh  r$   )r   Mailboxr   NotImplementedError)r   rW  s    @r"   test_notimplementedz)TestMailboxSuperclass.test_notimplemented3  s   of%%-/B/B/B/BCCC-/E/E/E/EFFF-/J/J/J/JKKK-/F/F/F/FGGG-/N/N/N/NOOO-/E/E/E/EFFF-/A/A/A/ABBB-/R/R/R/RSSS-/P/P/P/PQQQ-/C/C/C/CDDD-/Q/Q/Q/QRRR-/B/B/B/BCCC-/B/B/B/BCCC-/J/J/J/JKKK-/J/J/J/JKKK-/I/I/I/IJJJ-/H/H/H/HIII-/G/G/G/GHHH-/@/@/@/@AAA-/K/K/K/KLLL-/D/D/D/DEEE-/B/B/B/BCCC-/B/B/B/BCCC-/D/D/D/DEEE-/N/N/N/NOOO-/B/B/B/BCCC-/A/A/A/ABBB-/C/C/C/CDDD-/B/B/B/BCCCCCr$   N)r.   r/   r0   r  r7   r$   r"   rQ  rQ  1  s(        D D D D Dr$   rQ  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j         eed          d          d             Z ej         eed          d          d             Zd ZdS )TestMaildirNc                 ,    t          j        ||          S r	   )r   Maildirr   r'   factorys      r"   r   zTestMaildir.<lambda>W  s    g0N0N r$   c                     t                               |            t          j        dk    st          j        dk    rd| j        _        d S d S )Nntcygwin!)r9   r@   r&   namesysplatformr>   colonr?   s    r"   r@   zTestMaildir.setUpY  sB    $GtOO!9!9!DIOOO ":!9r$   c                     |                      t          j        t          j                            | j        d                    g            d S Ntmp)r   r&   listdirr'   joinr<   r?   s    r"   rm   zTestMaildir.assertMailboxEmpty^  s:    BGLLU$C$CDDbIIIIIr$   c                    t          j        | j        dz            }|                    d           |                    d           | j                            |          }|                     t          j	        
                    t          j	                            | j        d|| j        j        d                               d S )Nr   curr   )r   r1   rQ   
set_subdirset_infor>   rP   r   r&   r'   r*   r  r<   r  )r   r   r   s      r"   test_add_MMzTestMaildir.test_add_MMa  s    $T^a%788uUimmC  rw||DJ25#tyHH (I (I J J 	K 	K 	K 	K 	Kr$   c                    t          j        | j        dz            }|                    d           |                    d           | j                            |          }| j                            |          }|                     |t           j                   | 	                    |
                                d           | 	                    |                                d           d S )Nr   r  RFFR)r   r1   rQ   r  	set_flagsr>   rP   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8udimmC  y,,S11lG,BCCC0022E::://11488888r$   c                    t          j        | j        dz            }|                    d           | j                            |          }| j                            |          }|                     |                                d           |                     |	                                d           t          j        | j        dz            }|| j        |<   | j                            |          }|                     |                                d           |                     |	                                d           |                     |
                                d           t          j        | j        dz            }|                    d	           || j        |<   | j        d
z  | j        |<   | j                            |          }|                     |                                d           |                     |	                                d           |                     |
                                d           d S )Nr   TPnewPTrE   rU  r   rF   z2,SrG   Sz3
)r   r1   rQ   r  r>   rP   r   r   r  r  r   r  )r   r   r   r  msg1msg2s         r"   test_set_MMzTestMaildir.test_set_MMu  s   %dnq&899timmD!!y,,S110022E::://114888%dnq&899	#y,,S110022E::://1126661133U;;;%dnq&899e	#!+	#y,,S110022E::://1137771133U;;;;;r$   c                    t          j        | j        dz            }|                    d           |                    d           | j                            |          } G d dt           j                  }t          j        | j        |          }| j        j	        |_	        |
                    |          }|                     ||           d S )Nr   r  r  c                       e Zd ZdS )8TestMaildir.test_consistent_factory.<locals>.FakeMessageNrr   r7   r$   r"   FakeMessager    s        Dr$   r  r  )r   r1   rQ   r  r  r>   rP   r  r<   r  r   r
   )r   r   r   r  rW  r  s         r"   test_consistent_factoryz#TestMaildir.test_consistent_factory  s    $T^a%788udimmC  	 	 	 	 	'0 	 	 	odj+>>>IO	s##dK00000r$   c                 0   |                                   t          j        | j                  | _        |                                  |                     | j                   |                     | j        d           | _        |                                  d S )Nr  )rC   r   r  r<   r>   _check_basicsr-   r=   r?   s    r"   test_initialize_newzTestMaildir.test_initialize_new  s{    ODJ//	  ,,,MM$*dM;;	r$   c           	      D   |                                   dD ]V}t          j        t          j                            t          j                            | j        |                               Wt          j        | j                  | _	        | 
                                 d S )NrU  r  r  r  )rC   r&   mkdirr'   normpathr  r<   r   r  r>   r  )r   subdirs     r"   test_initialize_existingz$TestMaildir.test_initialize_existing  s    - 	I 	IFHRW%%bgll4:v&F&FGGHHHHODJ//	r$   c                    |                      | j        j        t          j                            | j                             |                      | j        j        |           dD ]v}t          j                            | j        |          }t          j        |          t          j	                 }| 
                    t          j        |          d|z             wd S )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*EFFF+W555- 	P 	PF7<<
F33D74==.DOODL..0G$0NOOOO	P 	Pr$   c                    | j                             d           | j                             d           | j                             d           |                     t          | j                                                   d           |                     t          | j                                                   t          d                     d S NonetwothreerG   )r  r  r  r>   
add_folderr   r   list_foldersr  r?   s    r"   test_list_folderszTestMaildir.test_list_folders      	U###	U###	W%%%TY335566:::TY335566011	3 	3 	3 	3 	3r$   c                    | j                             d           | j                             d          }|                    | j        dz             |                     t          j                            t          j        	                    | j
        d                               | j                             d          }|                     |                    |                                d                   | j        dz             d S )Nfoo.barr  z.foo.barr   )r>   r  
get_folderrP   rQ   r   r&   r'   r(   r  r<   r   rZ   r[   )r   folder0folder1s      r"   test_get_folderzTestMaildir.test_get_folder  s    	Y''')&&y11DNU*+++bgll4:z&J&JKKLLL)&&y11++GLLNN1,=>>%/	1 	1 	1 	1 	1r$   c                    | j                             d           | j                             d           |                     t          | j                                                   d           |                     t          | j                                                   t          d                     | j                             d           |                     t          | j                                                   d           |                     t          | j                                                   t          d                     | j                             d           |                     t          | j                                                   d           |                     t          | j                                                   t          d                     | j                             d           |                     t          | j                                                   d           |                     t          | j                                                   t          d                     | j                             d           |                     t          | j                                                   d	           |                     | j                                         g            d S 
Nr  r  rF   )r  r  rE   )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  Y   	U###	U###TY335566:::TY335566N8K8KLLL	&&&TY335566:::TY335566HFFF	W%%%TY335566:::TY335566<L8M8MNNN	(((TY335566:::TY335566HFFF	&&&TY335566::://11266666r$   c                    t           j                            | j        dd          }t           j                            | j        dd          }t	          |dd          5 }|                    d           d d d            n# 1 swxY w Y   t	          |dd          5 }|                    d           d d d            n# 1 swxY w Y   | j                                         |                     t           j        	                    |                     |                     t           j        	                    |                     t          j
        |          }t          j        |t          j                    dz
  d	z
  |j        f           | j                                         |                     t           j        	                    |                     |                     t           j        	                    |                     d S )
Nr  r   r  wrK   rL   @i@ rF   )r&   r'   r  r<   openr   r>   cleanr   r*   r  utimetimest_mtimer2  )r   foo_pathbar_pathr   foo_stats        r"   
test_cleanzTestMaildir.test_clean  s   7<<
E5997<<
E599(C'222 	aGGCLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	(C'222 	aGGCLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 		x00111x0011178$$
DIKK&014$-/ 	0 	0 	0	11222x0011111s$   BBBC  CCr   c           
      t   t          j                    }d|v r|                    dd          }d|v r|                    dd          }t          j                    }t          j        d          }d }t          |          D ]}| j        	                                }t          j
                            |j                  \  }}	|                     |t          j
                            t          j
                            | j        d                    d|z             |                    |	          }
|                     |
d|	z             |
                                }||                     t+          |d	                   t+          |d	                   d
|d	         d|d	         d           t+          |d	                   t+          |d	                   k    rP|                     t+          |d                   t+          |d                   d|d         d|d         d           |                     t+          |d                   |d|d         d|d           |                     t+          |d                   t+          |d                   dz   d|d         d|d         d           |                     |d         |d|d         d|d           |}|                    t.                     |                    d	           |                     |                                t.                     |                                 t7          t          j        t          j
                            | j        d                              }|                     ||d|d|d           d S )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 ''rE   zNon-monotonic milliseconds: 'rF   zProcess ID mismatch: 'z' should be 'rG   zNon-sequential counter: 'rH   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   rV   r   r   rB   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55H(??''W55Hikk* > ? ?{## 	 	Ay,,..Hx}55JD$T27??27<<
@E4G 4G $H $H;dBD D D MM$''E  (AD(HIII\\^^F*''F1IOA<N8O8O8O-a000&)))=> > > vay>>S);%<%<<<++Cq	NNCPQ@R<S<S<S!0!3!3!3VAYYY!@A A A   VAY$Qiii./ / /   VAY_Q5G1H1H11L1L-a000&)))=> > >   HH$Qiii34 4 4 %ONN0111MM!X]]__.CDDDNNBGLLU$C$CDDEE
[[ jj+++/	0 	0 	0 	0 	0r$   c                 6   |                      | j        j        i            | j                            | j        dz            }| j                            | j        dz            }|                      | j        j        i            | j                                         |                      | j        j        |t          j                            d|          |t          j                            d|          i           | j                            | j        dz            }|                      | j        j        |t          j                            d|          |t          j                            d|          i           | j                                         |                      | j        j        |t          j                            d|          |t          j                            d|          |t          j                            d|          i           d S )Nr   rE   r  rF   )	r   r>   _tocrP   rQ   _refreshr&   r'   r  r  s       r"   test_refreshzTestMaildir.test_refresh  s   ,,,y}}T^a/00y}}T^a/00,,,	$UD0I0I*.UD0I0I*K 	L 	L 	Ly}}T^a/00$UD0I0I*.UD0I0I*K 	L 	L 	L	$UD0I0I*.UD0I0I*.UD0I0I*K 	L 	L 	L 	L 	Lr$   c                    | j                             | j        dz            }| j                             | j        dz            }|                     | j                  | _         |                     | j         j        i            d| j         _        | j                                          |                     t          | j         j        
                                          t          ||g                     d S )Nr   rE   )r>   rP   rQ   r=   r<   r   r  _skewfactorr  sortedr[   r   s      r"    test_refresh_after_safety_periodz,TestMaildir.test_refresh_after_safety_period-  s     y}}T^a/00y}}T^a/00MM$*--	,,, !#			 3 3 5 566d|8L8LMMMMMr$   c                                           t           fd            j                             j        dz                                  j                                      t          j        	                    d                     t          j
        t          j        	                     j        d                                           j        j        t          j        	                    d          i            j                                                               t           fd                                 j        j        i            d S )Nc                  8     j                             d          S r   r>   _lookupr?   s   r"   r   z)TestMaildir.test_lookup.<locals>.<lambda>B  s    DI,=,=e,D,D r$   r   r  c                  8    j                                        S r	   r  r   s   r"   r   z)TestMaildir.test_lookup.<locals>.<lambda>J  s    DI,=,=d,C,C r$   )r   r   r>   rP   rQ   r   r  r&   r'   r  r   r<   r  rl   )r   r   s   `@r"   test_lookupzTestMaildir.test_lookup@  s   ($D$D$D$DEEEy}}T^a/00**400"',,ud2K2KLLL
	"',,tz5$77888$UD0I0I)JKKK 		($C$C$C$C$CDDD,,,,,r$   c                 j    | j                                          | j                                          d S r	   )r>   r4  r5  r?   s    r"   r6  zTestMaildir.test_lock_unlockM  s.    		r$   c                    d }|                      | j        |          }|                    d          }|                     |j         |           |                    d          }|                     |j         |           d S )Nc                     d S r	   r7   ss    r"   dummy_factoryz.TestMaildir.test_folder.<locals>.dummy_factoryU      4r$   r  r  )r=   r<   r  r   r  )r   r  rW  folderfolder1_aliass        r"   test_folderzTestMaildir.test_folderR  s}    	 	 	mmDJm>>	**fo}555y11m,m<<<<<r$   c                    t          d          D ]3}| j                            t          j        t
                               4t          j        t          j        	                    | j
        dd                     | j        D ]}d S )Nr   r  z	stray-dir)r   r>   rP   r   r   rR   r&   r  r'   r  r<   )r   r   r   s      r"   test_directory_in_folderz$TestMaildir.test_directory_in_folder^  s     r 	< 	<AIMM'//::;;;; 	dj%==>>> 9 	 	C	 	r$   umasktest needs os.umask()c                    t          j        | j        dz            }t          j        d          }	 | j                            |          }t          j        |           n# t          j        |           w xY wt          j                            | j	        | j        
                    |                    }t          j        |          j        }|                     |dz             d S )Nr   I   )r   r1   rQ   r&   r  r>   rP   r'   r  r<   r  r  st_moder2  )r   r   
orig_umaskr   r'   r  s         r"   test_file_permissionsz!TestMaildir.test_file_permissionsk  s     $T^a%788Xa[[
	!)--$$CHZ    BHZ    w||DJ	(9(9#(>(>??wt}}$&&&&&s   A! !A7c                 p   t          j        d          }	 | j                            d          }t          j        |           n# t          j        |           w xY wt           j                            |j        d          }t          j        |          }|j        }| 	                    |dz             d S )Nr   	subfoldermaildirfolderr  )
r&   r  r>   r  r'   r  r<   r  r  r2  )r   r  r  r'   stpermss         r"   test_folder_file_permsz"TestMaildir.test_folder_file_permsx  s     Xa[[
	!	,,[99IHZ    BHZ    w||IO_==WT]]
%%-)))))s   A Ac                      j                                          dD ]W}t          j        t          j                             j         j        |          t          j                    dz
  fdz             Xd j         _         j         j	         fd} j                                           
                     |                       t          j                             j        dd          }t          j        |           t          j        |            j                                                                |                       d S )N)r  r  rI   rF   r  c                       j         j         uS r	   )r>   r  )orig_tocr   s   r"   	refreshedz*TestMaildir.test_reread.<locals>.refreshed  s    9>11r$   r  z
stray-file)r>   r  r&   r  r'   r  r<   r  r  r  r2  r   create_empty_filer+   r   )r   r  r#  filenamer"  s   `   @r"   test_rereadzTestMaildir.test_reread  s@   	 % 	) 	)FHRW\\$)/6::ikk!m%a') ) ) ) !#	
 9>	2 	2 	2 	2 	2 	2 		%%%
 7<<
E<@@#H---
	(			$$$$$r$   r	   rL  )r.   r/   r0   r=   r@   rm   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r6  r  r  unittest
skipUnlesshasattrr&   r  r  r&  r7   r$   r"   r  r  U  s       NNNH" " "
J J JK K K	9 	9 	9< < <.1 1 1    P P P P3 3 31 1 17 7 7&2 2 2$-0 -0 -0 -0^L L L"N N N&- - -  

= 
= 
=   XW--/FGG
' 
' HG
' XW--/FGG* * HG*&% &% &% &% &%r$   r  c                       e Zd ZdZd Zd ZdS )_TestSingleFilez&Common tests for single-file mailboxesc                    t          j        | j                  j        }| j                            | j        dz             | j                                         t          j        | j                  j        }|                     ||           | j        	                                 | 
                    | j                  | _        |                     t          | j                  d           d S r/  )r&   r  r<   st_inor>   rP   rQ   rl   r   rB   r=   r   )r   inode_beforeinode_afters      r"   test_add_doesnt_rewritez'_TestSingleFile.test_add_doesnt_rewrite  s     wtz**1	dnq()))	gdj))0{333 		MM$*--	TY+++++r$   c                    t          j        | j                  j        dz  }t          j        | j        |           | j                            | j        dz             | j                            | j        dz            }| j                            |           | j        	                                 | 
                    t          j        | j                  j        |           d S )Ni  r   rE   )r&   r  r<   r  chmodr>   rP   rQ   r   rl   r   )r   r  r   s      r"   test_permissions_after_flushz,_TestSingleFile.test_permissions_after_flush  s     wtz""*U2
T"""	dnq()))IMM$.1,--		,,4d;;;;;r$   N)r.   r/   r0   __doc__r0  r3  r7   r$   r"   r+  r+    s8        0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                 8   t                                                       | j                                         |                     | j                   t          j        t          j        | j                  dz             D ]}t          j	        |           d S Nz.*
superrC   r>   rB   r-   r<   globescaper   r+   r   lock_remnant	__class__s     r"   rC   z_TestMboxMMDF.tearDown      	  ,,, Idk$*&=&=&DEE 	+ 	+L\****	+ 	+r$   c                     t          | j        d          5 }|                     |                                g            d d d            d S # 1 swxY w Y   d S Nrbr  r<   r   	readlinesr   r   s     r"   rm   z _TestMboxMMDF.assertMailboxEmpty      $*d## 	0qQ[[]]B///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0   )AAAc                    d}| j                             || j        dz  z             }| j                             |t          z             }|                     | j                             |d          | j        dz                      d                     |                     | j                             |d          t                     |                     | j                             |d          || j        dz  z                       d                     |                     | j                             |d          |                    d          t          z              d S )NFrom foo@bar blah
r   Ffrom_r   Tr   r   unixfromr   r   s       r"   test_get_bytes_fromz!_TestMboxMMDF.test_get_bytes_from  sQ   (y}}X(::;;y}}X788,,T,??^a''00	2 	2 	2,,T,??!	# 	# 	#,,T,>>**227;;	= 	= 	=,,T,>>OOG$$'<<	> 	> 	> 	> 	>r$   c                    d}| j                             || j        dz  z             }| j                             |t          z             }|                     | j                             |d          | j        dz             |                     | j                             |d                              d          t                              d                     |                     | j                             |d          || j        dz  z              |                     | j                             |d                              d          |t          z                       d                     d S )NrJ  r   FrK  r   Tr   rM  s       r"   test_get_string_fromz"_TestMboxMMDF.test_get_string_from  se   (y}}X(::;;y}}X788--d%-@@!+	- 	- 	---d%-@@FFtLL(..t44	6 	6 	6--d$-??!DNQ$66	8 	8 	8--d$-??EEdKK"_4;;DAA	C 	C 	C 	C 	Cr$   c                    | j                             d          }|                     | j         |                                         d           |                     | j         |                                         d           d S )NFrom foo@bar blah
From: foo

0
foo@bar blahr   r>   rP   r   get_fromr   rb   s     r"   test_add_from_stringz"_TestMboxMMDF.test_add_from_string  sl    immABB30022NCCC33355u=====r$   c                    | j                             d          }|                     | j         |                                         d           |                     | j         |                                         d           d S )Ns   From foo@bar blah
From: foo

0
rT  r   rU  rb   s     r"   test_add_from_bytesz!_TestMboxMMDF.test_add_from_bytes  sl    immBCC30022NCCC33355u=====r$   c                     t           j        t           j        fD ]'} |d          }| j                            |          }(d S )NrS  )r   r2   r5   r>   rP   )r   class_r   r   s       r"   test_add_mbox_or_mmdf_messagez+_TestMboxMMDF.test_add_mbox_or_mmdf_message  sK    *G,?@ 	% 	%F&>??C)--$$CC	% 	%r$   c                      fdt          d          D             }|D ]} j                            |            j                                         t          j                             j                  }                      j                   _         	                    t           j                  d            j                                        D ]0}                      j                            |          |           1 j                                          	                    |t          j                             j                             d S )Nc                 $    g | ]}j         |z  S r7   r<  r=  s     r"   r?  z6_TestMboxMMDF.test_open_close_open.<locals>.<listcomp>  s     777$.1$777r$   rG   )r   r>   rP   rB   r&   r'   getmtimer<   r=   r   r   r   r   rZ   )r   r   r   mtimer   s   `    r"   test_open_close_openz"_TestMboxMMDF.test_open_close_open  s(   7777eAhh777 	! 	!EIMM%    	  ,,MM$*--	TY+++9%%'' 	= 	=CMM$)..s33V<<<<	 0 0 < <=====r$   c                    | j                             t                     t          d          D ]$}| j                             | j        |z             %| j                             t                     | j         j                                         | j         j                            d           | j         j                                        }| j         	                                 t          | j        d          5 }|                     ||                                           d d d            n# 1 swxY w Y   |                     | j                  | _         d S )NrG   r   rC  )r>   rP   rR   r   rQ   _filerl   r   r   rB   r  r<   r   r=   )r   r   rA  r   s       r"   test_add_and_closez _TestMboxMMDF.test_add_and_close"  sM   	o&&&q 	. 	.AIMM$.1,----	o&&&		Q9?''))	$*d## 	1qXqvvxx000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1MM$*--			s   <)D11D58D5
socketpairzTest needs socketpair().c                 ~   t          j                    \  }}|                     |j                   |                     |j                   t	          j                    }|dk    r	 | j                                         |                    d           |	                    d           | j        
                                 t	          j        d           n# t	          j        d           w xY w|	                    d           	 |                     t          j        | j        j                   |                    d           t          j        |d           n0# |                    d           t          j        |d           w xY w| j                                         | j        
                                 d S )Nr      crE      p)exitcode)r  re  
addCleanuprB   r&   forkr>   r4  sendrecvr5  _exitr   r   ExternalClashErrorr   wait_process)r   cpr  s       r"   test_lock_conflictz _TestMboxMMDF.test_lock_conflict0  s|   
  ""1      gii!88		   t q				  """ 	
q				2g8"in. . . FF4LLL q11111 FF4LLL q11111		s   %AC C,*E -Fc                    d}| j                             |          }| j                                          | j                                          |                     | j                  | _         | j                                          | j                             |          }| j                                          |                     | j         j                   | j                                          d S )NzSubject: sub

body
)	r>   rP   rl   rB   r=   r<   r4  r   _locked)r   r   r   r   s       r"   test_relockz_TestMboxMMDF.test_relockU  s     'y}}S!!		MM$*--		y}}S!!		)***	r$   )r.   r/   r0   rC   rm   rO  rQ  rW  rY  r\  ra  rd  r   requires_forkr'  r(  r)  r  rs  rv  __classcell__r?  s   @r"   r6  r6    s       + + + + +0 0 0> > >C C C> > >> > >% % %> > >. . . WX668RSS! ! TS !F      r$   r6  c                   j    e Zd ZddZ ej         eed          d          d             Zd Z	d Z
dS )	TestMboxNc                 ,    t          j        ||          S r	   )r   mboxr  s      r"   r   zTestMbox.<lambda>g      T70K0K r$   r  r  c                    	 t          j        d          }| j                                         t          j        | j                   t          j        | j        d          | _        | j                            d           | j                                         t          j        |           n# t          j        |           w xY wt          j	        | j                  }|j
        }|                     |dz             d S )N?   T)createrU  r  )r&   r  r>   rB   r+   r<   r   r}  rP   r  r  r2  )r   	old_umaskr  r  s       r"   test_file_permszTestMbox.test_file_permsi  s    
	 IIOOIdj!!!TZ===DIIMM"IOOHYBHYWTZ  
%%-)))))s   BB0 0Cc                 .   t           j                                        }d|d<   |                    d           | j                            |          }| j                            |          }|                     |                                d           d S )Nzjohn@example.comFromzNo newline at the endzNo newline at the end
)	r   r   r   set_payloadr>   rP   r   r   r   )r   r   r   s      r"   test_terminating_newlinez!TestMbox.test_terminating_newline|  s    -'')),3444IMM'"" )--"",,..0IJJJJJr$   c                    | j                             d           t          | j        d          5 }|                                }|                     |dd          d           d d d            n# 1 swxY w Y   | j                             d           t          | j        d          5 }|                                }|                     |dd          d           d d d            d S # 1 swxY w Y   d S )NzFrom: foo

0rK   rL   r  z0

zFrom: foo

0
)r>   rP   r  r<   r   r   )r   r   datas      r"   test_message_separatorzTestMbox.test_message_separator  sa   	&'''$*w/// 	116688DT"##Y000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 		()))$*w/// 	116688DT"##Y000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s#   3A00A47A4+3C++C/2C/r	   )r.   r/   r0   r=   r'  r(  r)  r&   r  r  r  r7   r$   r"   r{  r{  e  sw        KKKHXW--/FGG* * HG*$K K K
1 
1 
1 
1 
1r$   r{  c                       e Zd ZddZdS )TestMMDFNc                 ,    t          j        ||          S r	   )r   MMDFr  s      r"   r   zTestMMDF.<lambda>  r~  r$   r	   )r.   r/   r0   r=   r7   r$   r"   r  r    s        KKKHHHr$   r  c                   L    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dS )TestMHNc                 ,    t          j        ||          S r	   )r   MHr  s      r"   r   zTestMH.<lambda>  s    
40I0I r$   c                 b    |                      t          j        | j                  dg           d S )Nz.mh_sequences)r   r&   r  r<   r?   s    r"   rm   zTestMH.assertMailboxEmpty  s-    DJ///1BCCCCCr$   c                    | j                             d           | j                             d           | j                             d           |                     t          | j                                                   d           |                     t          | j                                                   t          d                     d S r  r  r?   s    r"   r  zTestMH.test_list_folders  r  r$   c                    d }|                      | j        |          | _        | j                            d          }| j                            d          }|                    | j        dz             |                     t          j	        
                    t          j	                            | j        d                               | j                            d          }|                     |                    |                                d                   | j        dz             |                     |j         | j        j                    |                     |j         | j        j                    d S )Nc                     d S r	   r7   r
  s    r"   r  z-TestMH.test_get_folder.<locals>.dummy_factory  r  r$   r  r  r   )r=   r<   r>   r  r  rP   rQ   r   r&   r'   r(   r  r   rZ   r[   r   )r   r  
new_folderr  r  s        r"   r  zTestMH.test_get_folder  s1   	 	 	MM$*m<<	Y)))44
)&&y11DNU*+++bgll4:y&I&IJJKKK)&&y11++GLLNN1,=>>%/	1 	1 	1
 	j)49+=>>>g&	(:;;;;;r$   c                    | j                             d           | j                             d           |                     t          | j                                                   d           |                     t          | j                                                   t          d                     | j                             d           |                     t          | j                                                   d           |                     t          | j                                                   t          d                     | j                             d           |                     t          | j                                                   d           |                     t          | j                                                   t          d                     | j                             d           |                     t          | j                                                   d           |                     t          | j                                                   t          d                     | j                             d           |                     t          | j                                                   d	           |                     | j                                         g            d S r  r  r?   s    r"   r  z"TestMH.test_add_and_remove_folders  r  r$   c                    |                      | j                                        i            t          j        | j        dz            }|                    d           | j                            |          }|                      | j                                        d|gi           t          j        | j        dz            }|                    g d           | j                            |          }|                      | j                                        ||g|g|gd           |                    dg           || j        |<   |                      | j                                        |g|g|g|gd           | j        	                    |           |                      | j                                        d|gi           d S )Nr   r   rE   )r  repliedr   r   r  r  flagged)r   r  r  r  )
r   r>   get_sequencesr   r3   rQ   add_sequencerP   set_sequencesr   r   r   r   r  r   s        r"   test_sequenceszTestMH.test_sequences  s   0022B777 !!344%   y}}T""0022UD6NCCC !!344444555y}}T""0022!4L4&II	K 	K 	KI;'''	$0022!F4&TF!%( (	) 	) 	) 		0022Yv4FGGGGGr$   c                     t          j        | j        dz            }|                    d           | j                            |          }| j                            |          }d S )Nr   r   )r   r3   rQ   r  r>   rP   r   )r   r   r   refmsg0s       r"   test_issue2625zTestMH.test_issue2625  sY     !!344%   y}}T"")''--r$   c                 
   t          j        | j        dz            }| j                            |          }| j                                         | j                            |           | j                                         d S )Nr   )r   r3   rQ   r>   rP   r4  r   r5  )r   r   r   s      r"   test_issue7627zTestMH.test_issue7627  sn     !!344y}}T""			r$   c           	         t          j        | j        dz            }t          j        | j        dz            }t          j        | j        dz            }t          j        | j        dz            }|                    ddg           |                    dg           |                    ddg           |                    g d           | j                            |          }| j                            |          }| j                            |          }| j                            |          }|                     | j                                        ||||g|g|g|g|gd	           | j                            |           |                     | j                                        |||g|g|g|gd
           | j        	                                 |                     | j        
                                g d           |}|dz   }|dz   }|                     | j                                        g ddgdgdgd
           | j                            |          }| j                            |          }| j                            |          }| j                            |          }| j                            |           | j                            |           | j                                         | j        	                                 | j                                         |                     | j                                        g ddgdgdgd
           d S )Nr   rE   rF   rG   r   unseenr  r  )r   r  r  r  r  )r   r  r  r  )rE   rF   rG   )rE   rF   rG   rH   rI   )r   r3   rQ   r  r>   rP   r   r  r   packr[   r4  r5  )	r   r   r  r  msg3r   r   r   key3s	            r"   	test_packzTestMH.test_pack  sY    !!344 !!344 !!344 !!344E8,---E7###E9-...444555y}}T""y}}T""y}}T""y}}T""0022!$tD1TF!%tfH H	I 	I 	I 		0022!$t,vdV!%( (	) 	) 	) 		))999555axax0022%IIA31#NN	P 	P 	P y}}T""y}}T""y}}T""y}}T""					0022+OO !s1#!> >	? 	? 	? 	? 	?r$   c                 L    t           j                            | j        d          S )Nz.mh_sequences.lock)r&   r'   r  r<   r?   s    r"   r3  zTestMH._get_lock_path  s    w||DJ(<===r$   r	   )r.   r/   r0   r=   rm   r  r  r  r  r  r  r  r3  r7   r$   r"   r  r    s        IIIHD D D3 3 3< < <&7 7 7&H H H(. . .  *? *? *?X> > > > >r$   r  c                   2     e Zd ZddZd Z fdZd Z xZS )	TestBabylNc                 ,    t          j        ||          S r	   )r   Babylr  s      r"   r   zTestBabyl.<lambda>!  s    dG0L0L r$   c                     t          | j        d          5 }|                     |                                g            d d d            d S # 1 swxY w Y   d S rB  rD  rF  s     r"   rm   zTestBabyl.assertMailboxEmpty#  rG  rH  c                 8   t                                                       | j                                         |                     | j                   t          j        t          j        | j                  dz             D ]}t          j	        |           d S r8  r9  r=  s     r"   rC   zTestBabyl.tearDown'  r@  r$   c                    |                      | j                                        g            t          j        | j        dz            }|                    d           | j                            |          }|                      | j                                        dg           t          j        | j        dz            }|                    g d           | j                            |          }|                      t          | j                                                  t          ddg                     |                    ddg           || j        |<   |                      t          | j                                                  t          g d                     | j        
                    |           |                      t          | j                                                  t          dg                     d S )	Nr   r   rE   )r  answeredr   r  blahfiled)r   r  r  )r   r>   
get_labelsr   r4   rQ   	add_labelrP   
set_labelsr  r   r  s        r"   test_labelszTestBabyl.test_labels.  s   --//444#DNQ$677uy}}T""--//%999#DNQ$677222333y}}T""TY113344c5%.6I6IJJJ)***	$TY113344///00	2 	2 	2	TY113344c6(mmDDDDDr$   r	   )r.   r/   r0   r=   rm   rC   r  rx  ry  s   @r"   r  r    sh        LLLH0 0 0+ + + + +E E E E E E Er$   r  c                       e Zd Zd Zd ZdS )FakeFileLikeObjectc                     d| _         d S r8  closedr?   s    r"   __init__zFakeFileLikeObject.__init__C  s    r$   c                     d| _         d S r+  r  r?   s    r"   rB   zFakeFileLikeObject.closeF  s    r$   N)r.   r/   r0   r  rB   r7   r$   r"   r  r  A  s2              r$   r  c                       e Zd Zd Zd ZdS )FakeMailBoxc                     t           j                            | dd            d t          d          D             | _        d S )NrU  c                     d S r	   r7   )r   s    r"   r   z&FakeMailBox.__init__.<locals>.<lambda>M  s     r$   c                 *    g | ]}t                      S r7   )r  )r>  r   s     r"   r?  z(FakeMailBox.__init__.<locals>.<listcomp>N  s    >>>q(**>>>r$   r   )r   r~  r  r   filesr?   s    r"   r  zFakeMailBox.__init__L  s?      r+<+<===>>E"II>>>


r$   c                     | j         |         S r	   )r  rb   s     r"   r   zFakeMailBox.get_fileP  s    z#r$   N)r.   r/   r0   r  r   r7   r$   r"   r  r  J  s2        ? ? ?    r$   r  c                       e Zd Zd ZdS )TestFakeMailBoxc                 2   t                      }t          d          D ]'}|                     |j        |         j                   (t          d          D ]
}||          t          d          D ]'}|                     |j        |         j                   (d S )Nr   )r  r   r2  r  r  r   )r   rW  r   s      r"   test_closing_fdzTestFakeMailBox.test_closing_fdV  s    mmr 	2 	2ASYq\01111r 	 	AFFFr 	1 	1AOOCIaL/0000	1 	1r$   N)r.   r/   r0   r  r7   r$   r"   r  r  T  s#        1 1 1 1 1r$   r  c                   d    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dS )TestMessagec                 (    t           j        | _        d S r	   )r   r;   r<   r?   s    r"   r@   zTestMessage.setUpd  s    %


r$   c                 :    |                      | j                   d S r	   )r-   r<   r?   s    r"   rC   zTestMessage.tearDowng  s      ,,,,,r$   c                     t          j        t                    }|                     |          }|                     |           |                     |           d S r	   )r   rS   rR   r=   _post_initialize_hookr#   r   eMMr   s      r"   test_initialize_with_eMMz$TestMessage.test_initialize_with_eMMj  sQ    '88mmC  ""3'''3r$   c                     |                      t                    }|                     |           |                     |           d S r	   )r=   rR   r  r#   r   r   s     r"   test_initialize_with_stringz'TestMessage.test_initialize_with_stringq  sA    mmO,,""3'''3r$   c                 B   t          | j        dd          5 }|                    t                     |                    d           |                     |          }|                     |           |                     |           d d d            d S # 1 swxY w Y   d S )Nr   rK   rL   r   )r  r<   r   rR   r   r=   r  r#   r   r   r   s      r"   test_initialize_with_filez%TestMessage.test_initialize_with_filew  s    $*dW555 	$GGO$$$FF1III--""C&&s+++s###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   A/BBBc                 >   t          | j        d          5 }|                    t                     |                    d           |                     |          }|                     |           |                     |           d d d            d S # 1 swxY w Y   d S )Nr   r   )r  r<   r   rV   r   r=   r  r#   r  s      r"    test_initialize_with_binary_filez,TestMessage.test_initialize_with_binary_file  s    $*e$$ 	$GG)***FF1III--""C&&s+++s###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   A/BBBc                    |                                  }|                     |           |                     |t          j        j                   |                     |t          j                   |                     || j                    |                     |                                g            | 	                    |
                                           |                     |                                           d S r	   )r=   r  r
   r   r   r   r   r   r[   r2  r   r   r   r  s     r"   test_initialize_with_nothingz(TestMessage.test_initialize_with_nothing  s    mmoo""3'''c5=#8999c7?333c4=111R((())++,,,#//++,,,,,r$   c                 D                           t           fd           d S )Nc                  F                          t                                S r	   )r=   objectr?   s   r"   r   z9TestMessage.test_initialize_incorrectly.<locals>.<lambda>  s    T]]688-D-D r$   )r   rH  r?   s   `r"   test_initialize_incorrectlyz'TestMessage.test_initialize_incorrectly  s)    )%D%D%D%DEEEEEr$   c                     t          j        t                    }|                     t                    }|j        D ]1}|                     ||j        d                    |                     2d S )Nz{} attribute does not exist)r   rS   rR   r=   __dict__r   format)r   r  r   attrs       r"   test_all_eMM_attributes_existz)TestMessage.test_all_eMM_attributes_exist  sp    '88mmO,,L 	< 	<DMM$-44T::< < < <	< 	<r$   c                     t          j        t                    }|                                 }|                    |           |                     |           d S r	   )r   rS   rR   r=   _become_messager#   r  s      r"   test_become_messagezTestMessage.test_become_message  sM    '88mmooC   3r$   c                     |                                  | j        D ]!} |                                           "t          j                                        |                     t          fd           d S )Nc                  .                                    S r	   )_explain_to)r   	other_msgs   r"   r   z-TestMessage.test_explain_to.<locals>.<lambda>  s    S__Y-G-G r$   )r=   r6   r  r   r   r   r   rH  )r   r[  r   r  s     @@r"   test_explain_tozTestMessage.test_explain_to  s     mmoo, 	' 	'FIOOI&&&&M))++	)%G%G%G%G%GHHHHHr$   c                     d S r	   r7   r  s     r"   r  z!TestMessage._post_initialize_hook  s    r$   N)r.   r/   r0   r   r   r=   r@   rC   r  r  r  r  r  r  r  r  r  r  r7   r$   r"   r  r  `  s        H& & &- - -          $ $ $$ $ $	- 	- 	-F F F< < <     I I I    r$   r  c                   @    e Zd Zej        Zd Zd Zd Zd Z	d Z
d ZdS )TestMaildirMessagec                 r    |                      |j        d           |                      |j        d           d S )Nr  rU  )r   _subdir_infor  s     r"   r  z(TestMaildirMessage._post_initialize_hook  s8    e,,,B'''''r$   c                    t          j        t                    |                                                     d                               d           |                                                     d                               d           |                                                     d           |                     t          fd           |                                                     d                               d           |                                                     d           |                                d S )Nr  r  c                  .                          d          S r  )r  r   s   r"   r   z0TestMaildirMessage.test_subdir.<locals>.<lambda>  s    cnnU.C.C r$   )	r   r1   rR   r   r  r  r   rk   r#   r  s    @r"   test_subdirzTestMaildirMessage.test_subdir  s#   $_55))5111u))5111u))5111*&C&C&C&CDDD))5111u))51113r$   c                    t          j        t                    }|                     |                                d           |                     |                                d           |                    d           |                     |                                d           |                     |                                d           |                    d           |                     |                                d           |                    d           |                     |                                d           |                    d           |                     |                                d	           |                     |                                d           | 	                    |           d S )
NrU  r  FSDTPDPSTFTDFPSTTDRPFS)
r   r1   rR   r   r  r  r  add_flagremove_flagr#   r  s     r"   
test_flagszTestMaildirMessage.test_flags  sj   $_55"---))5111c))5111#...f&111T'222$///))51113r$   c                 D   t          j        t                    }|                     t	          |                                t          j                    z
            d           |                    d           |                     |                                d           d S )N<           )	r   r1   rR   r  absget_dater  set_dater   r  s     r"   	test_datezTestMaildirMessage.test_date  sw    $_55CLLNNTY[[8992>>>S-----r$   c                 j   t          j        t                    |                                                     d                               d           |                                                     d           |                     t          fd           |                                d S )NrU  z	1,foo=barc                  .                          d           S r	   )r  r  s   r"   r   z.TestMaildirMessage.test_info.<locals>.<lambda>  s    S\\$-?-? r$   )	r   r1   rR   r   get_infor  r   rH  r#   r  s    @r"   	test_infozTestMaildirMessage.test_info  s    $_55,,,[!!!555)%?%?%?%?@@@3r$   c                    t          j        t                    }|                     |                                d           |                    d           |                     |                                d           |                     |                                d           |                    d           |                     |                                d           |                     |                                d           |                    d           |                     |                                d           |                     |                                d           |	                    d           |                     |                                d           |                     |                                d           | 
                    |           d S )	NrU  SFr  z2,FSz1,RPTDz2,D)r   r1   rR   r   r  r  r  r  r  r  r#   r  s     r"   test_info_and_flagsz&TestMaildirMessage.test_info_and_flags  s   $_55,,,d$///000T"---..."---...S#...///3r$   N)r.   r/   r0   r   r1   r=   r  r  r  r  r  r  r7   r$   r"   r  r    sv        %H( ( (          ". . .              r$   r  c                   <    e Zd Zej        Zd Zd Zd Zd Z	ddZ
dS )_TestMboxMMDFMessagec                 0    |                      |           d S r	   )_check_fromr  s     r"   r  z*_TestMboxMMDFMessage._post_initialize_hook  s    r$   c                     t          j        t                    }|                    d           t          j        |          }|                     |                                d|                                           d S )NzFrom foo@bar blahrT  )r   r   rR   set_unixfromr2   r   rV  r  s     r"   test_initialize_with_unixfromz2_TestMboxMMDFMessage.test_initialize_with_unixfrom  sd    oo..,---!#&&HHHHHr$   c                    t          j        t                    }|                     |           |                    d           |                     |                                d           |                    dd           |                     |d           |                    dt          j                               |                     |d           d S )Nzfoo barfoo@barTz	blah@temp)	r   r2   rR   r  set_fromr   rV  r  	localtimer  s     r"   	test_fromz_TestMboxMMDFMessage.test_from  s    !/22Y333Y%%%i((([$."2"2333k*****r$   c                    t          j        t                    }|                     |                                d           |                    d           |                     |                                d           |                    d           |                     |                                d           |                    d           |                     |                                d           |                    d           |                     |                                d           |                     |           d S )	NrU  r  XODRRODXFARODFAXFDXARO)	r   r2   rR   r   r  r  r  r  r#   r  s     r"   r  z_TestMboxMMDFMessage.test_flags  s
   !/22"---c#...f&111T(333$///3r$   Nc                     |d}|                      t          j        |dz   |                                                     d S )NzMAILER-DAEMONz. \w{3} \w{3} [\d ]\d [\d ]\d:\d{2}:\d{2} \d{4})r  r  r  rV  )r   r   senders      r"   r  z _TestMboxMMDFMessage._check_from'  sP    >$FRXJJ    	! 	! 	! 	! 	!r$   r	   )r.   r/   r0   r   _mboxMMDFMessager=   r  r  r"  r  r  r7   r$   r"   r  r     so        'H  I I I	+ 	+ 	+     ! ! ! ! ! !r$   r  c                       e Zd Zej        ZdS )TestMboxMessageN)r.   r/   r0   r   r2   r=   r7   r$   r"   r.  r.  0          "HHHr$   r.  c                   (    e Zd Zej        Zd Zd ZdS )TestMHMessagec                 <    |                      |j        g            d S r	   )r   
_sequencesr  s     r"   r  z#TestMHMessage._post_initialize_hook9  s     ,,,,,r$   c                    t          j        t                    }|                     |                                g            |                    dg           |                     |                                dg           |                    g            |                     |                                g            |                    d           |                     |                                dg           |                    d           |                     |                                ddg           |                    d           |                     |                                ddg           |                    d           |                     |                                dg           |                    d           |                     |                                ddg           |                    d           |                     |                                ddg           |                    ddg           |                     |                                ddg           d S )Nfoobarr  r  r  )r   r3   rR   r   r  r  r  remove_sequencer  s     r"   r  zTestMHMessage.test_sequences<  sF   00**,,b1118*%%%**,,xj999"**,,b111"""**,,xj999###**,,x.CDDD###**,,x.CDDDH%%%**,,yk:::"""**,,y(.CDDDI&&&**,,y(.CDDD8Y/000**,,x.CDDDDDr$   N)r.   r/   r0   r   r3   r=   r  r  r7   r$   r"   r1  r1  5  s?         H- - -E E E E Er$   r1  c                   .    e Zd Zej        Zd Zd Zd ZdS )TestBabylMessagec                 <    |                      |j        g            d S r	   )r   _labelsr  s     r"   r  z&TestBabylMessage._post_initialize_hookX  s     b)))))r$   c                    t          j        t                    }|                     |                                g            |                    dg           |                     |                                dg           |                    g            |                     |                                g            |                    d           |                     |                                dg           |                    d           |                     |                                ddg           |                    d           |                     |                                ddg           |                    d           |                     |                                dg           |                    d           |                     |                                ddg           |                    d           |                     |                                ddg           |                    ddg           |                     |                                ddg           d S )Nr5  r  resentr  r  )r   r4   rR   r   r  r  r  remove_labelr  s     r"   r  zTestBabylMessage.test_labels[  s$   "?33))2...z"""))H:666r))2...g))G9555h))GX+>???h))GX+>???!!!))H:666h))Hh+?@@@"""))Hh+?@@@*-...))Hj+ABBBBBr$   c                 ~   t          j        t                    }|                                }|                     |                                g            |                     |                                           d|d<   d|d<   |                     |                                                                g            |                    |           |                                }|                     |                                ddg           |                     |d         d           |                     |d         d           |                     |                                           |	                                 |                     |                                ddg           |                     |                                           |                                }|                     |                                g d           dD ]$}|                     ||         ||                    %d S )Nz
FooBar 1.0
User-AgentBlahz
X-Whatever)r?  Dater  ToSubject)
r   r4   rR   get_visibler   r[   r   r   set_visibleupdate_visible)r   r   visibleheaders       r"   test_visiblezTestBabylMessage.test_visibler  s   "?33//##,,,'--//000 , &**//112666   //##,)EFFF.===.777'--//000,)EFFF'--//000//## *5 *5 *5 	6 	6 	6E 	; 	;FWV_c&k::::	; 	;r$   N)	r.   r/   r0   r   r4   r=   r  r  rI  r7   r$   r"   r8  r8  T  sL        #H* * *C C C.; ; ; ; ;r$   r8  c                       e Zd Zej        ZdS )TestMMDFMessageN)r.   r/   r0   r   r5   r=   r7   r$   r"   rK  rK    r/  r$   rK  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dS )TestMessageConversionc                     | j         D ];}t          j        t                    } ||          }|                     |           <d S r	   )r6   r   r   rR   r#   )r   r[  	msg_plainr   s       r"   test_plain_to_xz%TestMessageConversion.test_plain_to_x  sS    , 	$ 	$F88I&##Cs####	$ 	$r$   c                     | j         D ];} |t                    }t          j        |          }|                     |           <d S r	   )r6   rR   r   r   r#   )r   r[  r   rO  s       r"   test_x_to_plainz%TestMessageConversion.test_x_to_plain  sS    , 	* 	*F&))C,,Iy))))	* 	*r$   c                 d    | j         D ]'} |t                    }|                     |           (d S r	   )r6   rV   r#   )r   r[  r   s      r"   test_x_from_bytesz'TestMessageConversion.test_x_from_bytes  sE    , 	$ 	$F&.//Cs####	$ 	$r$   c                 X    | j         D ] |                     t          fd           !d S )Nc                        d          S r8  r7   )r[  s   r"   r   z9TestMessageConversion.test_x_to_invalid.<locals>.<lambda>  s     r$   )r6   r   rH  )r   r[  s    @r"   test_x_to_invalidz'TestMessageConversion.test_x_to_invalid  sF    , 	@ 	@Fi)>)>)>)>????	@ 	@r$   c                 (   d | j         D             | j         D ]v}| j         D ]l|u r |t                    } |          }fd|         D             }|D ]2}|                     ||j        d                    |                     3mwd S )Nc                 :    i | ]}| |t                     j        S r7   )rR   r  )r>  r[  s     r"   
<dictcomp>z]TestMessageConversion.test_type_specific_attributes_removed_on_conversion.<locals>.<dictcomp>  s7     > > >" VVO44= > > >r$   c                 (    g | ]}|         v|S r7   r7   )r>  aclass2	references     r"   r?  z]TestMessageConversion.test_type_specific_attributes_removed_on_conversion.<locals>.<listcomp>  s5     !B !B !Bq&'y/@&@&@ "#&@&@&@r$   zwhile converting {} to {})r6   rR   r  r  r  )r   class1sourcer,   type_specificr  r]  r^  s         @@r"   3test_type_specific_attributes_removed_on_conversionzITestMessageConversion.test_type_specific_attributes_removed_on_conversion  s   > >&*&<> > >	, 
	L 
	LF0 	L 	LV##00!B !B !B !B !BIf,= !B !B !B) L LD$$T6?3::66JJL L L LL	L
	L 
	Lr$   c                    t          j        t                    }|                    d           |                    d           |                                }t          j        |          }|                     |           |                     |                                d           |                     |	                                d           |                     |                                |           d S )NDFPRSTr  )
r   r1   rR   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13(333))5111.....r$   c                 j   d}t           j        t           j        fD ]}t          j        t                    }|                    d           |D ]\  }}|                    |            ||          }|                     |                                |           |                     |	                                dt          j        t          j        d                    z             |                    d           |                      ||                                          d           d S )N))r  rU  r  r  )PrU  )RA)r  rk  )Tr  )rd  RDFAr	  zMAILER-DAEMON %sr  RODFA)r   r2   r5   r1   rR   r  r  r   r  rV  r  asctimegmtimer  )r   pairsr[  re  settingresultr   s          r"   test_maildir_to_mboxmmdfz.TestMessageConversion.test_maildir_to_mboxmmdf  s2   1*G,?@ 
	G 
	GF!0AAK  %%%#( = =%%g...f[))  &999  1C!\$+c*:*:;;2< = = = =""5)))VVK00::<<gFFFF
	G 
	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 ]T\  }}|                    |           |                     t          j        |                                          |           Ud S )Nr  r  r  r  rj  rk  r  r  rm  rd  )r   r1   rR   r  r   r3   r  r   re  rr  rs  rt  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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 ]T\  }}|                    |           |                     t          j        |                                          |           Ud S )Nr  r  r  rj  	forwardedrk  r  r  rm  deletedrd  )r{  r  rz  )r   r1   rR   r  r   r4   r  rw  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+>>IIKK#% % % %	% 	%r$   c                 T   t           j        t           j        fD ]} |t                    }|                    dt          j        d                     d}|D ]~\  }}|                    |           t          j        |          }| 	                    |
                                |           | 	                    |                                d           |                    d           | 	                    t          j        |                                          d           d S )Nr  r	  ))rk  r  )OrU  )r  rm  ri  )rl  rk  )ro  FRSTr~  r  )r   r2   r5   rR   r   r  rq  r  r1   r   r  r  r  )r   r[  msg_mboxMMDFrr  rs  rt  r   s          r"   test_mboxmmdf_to_maildirz.TestMessageConversion.test_mboxmmdf_to_maildir  s   *G,?@ 	$ 	$F!6/22L!!)T[-=-=>>>(E#( 6 6&&w///,\::  &999  5555""3'''W3LAALLNN"$ $ $ $	$ 	$r$   c                    t           j        t           j        fD ]} |t                    }|                    d           |                    d           t           j        t           j        fD ]]} ||          }|                     |                                d           |                     |                                d           ^d S )Nro  r  )	r   r2   r5   rR   r  r   r   r  rV  )r   r[  r  class2_r  s        r"   test_mboxmmdf_to_mboxmmdfz/TestMessageConversion.test_mboxmmdf_to_mboxmmdf  s    *G,?@ 	= 	=F!6/22L""7+++!!),,,#/1DE = =w|,,  !1!17;;;  )<<<<=		= 	=r$   c           	      B   t           j        t           j        fD ]} |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 ]T\  }}|                    |           |                     t          j        |                                          |           Ud S )
Nrk  r~  r  r  r  r  rl  r  ro  )r   r2   r5   rR   r  r   r3   r  )r   r[  r  rr  rs  rt  s         r"   test_mboxmmdf_to_mhz)TestMessageConversion.test_mboxmmdf_to_mh  s    *G,?@ 		) 		)F!6/22L2Yxj 1C(3DHi01Hi01	9568E $) ) )&&w///  !2<!@!@!N!N!P!P!') ) ) ))		) 		)r$   c           	      B   t           j        t           j        fD ]} |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 ]T\  }}|                    |           |                     t          j        |                                          |           Ud S )
Nrk  r~  r  r  r{  r  rl  r  ro  )r   r2   r5   rR   r  r   r4   r  )r   r[  r   rr  rs  rt  s         r"   test_mboxmmdf_to_babylz,TestMessageConversion.test_mboxmmdf_to_babyl  s    *G,?@ 	Q 	QF&))C2Yxj 1Hi01C(3DHj12	:679E $) Q Qg&&&  !5c!:!:!E!E!G!GPPPPQ	Q 	Qr$   c                    d}|D ]\  }}t          j        t                    }|                    |           |                     t          j        |                                          |           |                     t          j        |                                          d           t          j        t                    }|                    d           |                    d           |                    d           |                     t          j        |                                          d           |                     t          j        |                                          d           d S )N)r  rU  )r  RS)r  r  r  r  r  r  r  )r   r3   rR   r  r   r1   r  r  r   rr  rs  rt  r   s        r"   test_mh_to_maildirz(TestMessageConversion.test_mh_to_maildir!  sI   F$ 	N 	NOGV#O44CW%%%W3C88BBDDfMMMW3C88CCEEuMMMM00"""######/44>>@@$GGG/44??AA5IIIIIr$   c                 V   d}|D ]\  }}t          j        t                    }|                    |           t           j        t           j        fD ]3}|                      ||                                          |           4t          j        t                    }|                    d           |                    d           |                    d           t           j        t           j        fD ]3}|                      ||                                          d           4d S )N)r  r~  )r  ROA)r  ROFr  r  r  OFA)r   r3   rR   r  r2   r5   r   r  )r   rr  rs  rt  r   r[  s         r"   test_mh_to_mboxmmdfz)TestMessageConversion.test_mh_to_mboxmmdf0  s,   I$ 	B 	BOGV#O44CW%%%".0CD B B  !6!6!8!8&AAAAB00"""######*G,?@ 	= 	=FVVC[[2244e<<<<	= 	=r$   c                 .   t          j        t                    }|                    d           |                    d           |                    d           |                     t          j        |                                          g d           d S )Nr  r  r  )r  r  r  )r   r3   rR   r  r   r  r  s     r"   test_mh_to_mhz#TestMessageConversion.test_mh_to_mh?  s    00"""######*3//==??999	; 	; 	; 	; 	;r$   c                 (   ddgfddgfdg ff}|D ]m\  }}t          j        t                    }|                    |           |                     t          j        |                                          |           nt          j        t                    }|                    d           |                    d           |                    d           |                     t          j        |                                          ddg           d S )Nr  r  r  r  )r   r3   rR   r  r   r4   r  r  s        r"   test_mh_to_babylz&TestMessageConversion.test_mh_to_babylH  s   XJ')j\)BR"$ 	M 	MOGV#O44CW%%%W1#66AACCVLLLL00"""######-c22==??"J/	1 	1 	1 	1 	1r$   c                    d}|D ]\  }}t          j        t                    }|                    |           |                     t          j        |                                          |           |                     t          j        |                                          d           t          j        t                    }dD ]}|                    |           |                     t          j        |                                          d           |                     t          j        |                                          d           d S )N)r  )r{  ST)r  r  )r  r  )rz  PS)editedr  )r<  r  r  r  r{  r  r  rz  r  r<  PRT)r   r4   rR   r  r   r1   r  r  r   rr  rs  rt  r   labels         r"   test_babyl_to_maildirz+TestMessageConversion.test_babyl_to_maildirW  s5   #  % 	N 	NOGV&77CMM'"""W3C88BBDDfMMMW3C88CCEEuMMMM"?33* 	! 	!EMM%    /44>>@@%HHH/44??AA5IIIIIr$   c                    d}|D ]\  }}t           j        t           j        fD ]a}t          j        t                    }|                    |           |                      ||                                          |           bt          j        t                    }dD ]}|                    |           t           j        t           j        fD ]3}|                      ||                                          d           4d S )N)r  )r{  ROD)r  r)  )r  r  )rz  r)  )r  r)  )r<  r)  r  ODA)r   r2   r5   r4   rR   r  r   r  )r   rr  rs  rt  r[  r   r  s          r"   test_babyl_to_mboxmmdfz,TestMessageConversion.test_babyl_to_mboxmmdfh  s   #  % 	B 	BOGV".0CD B B*?;;g&&&  !6!6!8!8&AAAAB "?33* 	! 	!EMM%    *G,?@ 	= 	=FVVC[[224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 ]m\  }}t          j        t                    }|                    |           |                     t          j        |                                          |           nt          j        t                    }d	D ]}|                    |           |                     t          j        |                                          ddg           d S )
Nr  r{  r  r  r  rz  r  r<  r  )r   r4   rR   r  r   r3   r  r  s         r"   test_babyl_to_mhz&TestMessageConversion.test_babyl_to_mhy  s   XJ')R7B-yk*[",="~B!  % 	M 	MOGV&77CMM'"""W.s33AACCVLLLL"?33* 	! 	!EMM%    *3//==??"I.	0 	0 	0 	0 	0r$   c                    t          j        t                    }|                                 dD ]}|                    |           t          j        |          }|                     |                                g d           |                     |                                                                |                                                                           |                                                                D ]H}|                     |                                |         |                                |                    Id S )Nr  )	r   r4   rR   rF  r  r   r  rD  r[   )r   r   r  r  r   s        r"   test_babyl_to_babylz)TestMessageConversion.test_babyl_to_babyl  s?   "?33* 	! 	!EMM%    #C((** -7 -7 -7 	8 	8 	8 	**//1143C3C3E3E3J3J3L3LMMM??$$))++ 	N 	NCS__..s3T5E5E5G5G5LMMMM	N 	Nr$   N)r.   r/   r0   rP  rR  rT  rW  rb  rg  ru  rx  r|  r  r  r  r  r  r  r  r  r  r  r  r  r7   r$   r"   rM  rM    sf       $ $ $* * *$ $ $@ @ @
L L L
/ 
/ 
/G G G 	% 	% 	%
% 
% 
%$ $ $ 	= 	= 	=) ) )
Q 
Q 
QJ J J= = =; ; ;1 1 1J J J"= = ="0 0 0 N N N N Nr$   rM  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestProxyFileBasec                 n   |                     d           |                     |                                d           |                     d           |                     |                                d           |                     d           |                     |                    d          d           |                     d           |                     |                    d          d           |                     d           |                     |                    d          d	           d S )
Nr      barrE   s   arrF   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00000r$   c                    t           j                                        }|                    d           |                     |                                d|z              |                     |                                d|z              |                     |                                d|z              |                     |                                d           |                    d           |                     |                                d|z              |                    ddt          t           j                  z  z              |                     |                                d|z              |                    ddt          t           j                  z  z              |                     |                    d          d	           |                     |                    d
          d|z              d S )Nr      foor     fred   bobrF      orJ   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22

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

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

1q3rz??**+++**E222,,ego>>>>>r$   c                    t           j                                        }|                    d           |                     |                                d|z   d|z   d|z   dg           |                    d           |                     |                    d          d|z   g           |                    dt          |          z              |                     |                    dt          |          z             d|z   d|z   g           |                    d           |                     |                    d	          |d|z   d|z   dg           d S )
Nr   r  r  r  r  rF   rG   rH   r  )r&   r   r`   r   r   rE  r   r  s      r"   _test_readlinesz!TestProxyFileBase._test_readlines  sb   *##%%

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

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

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

1..&7:J/6/@&1J 	K 	K 	K 	K 	Kr$   c                    t           j                                        }|                    d           t	          |          }|                     t          |          d|z              |                     t          |          d|z              |                     t          |          d|z              |                     t          |          d           |                     t          t          |           d S )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00-x88888r$   c                 p   t           j                                        }|                    d           |                     |                                d           |                     |                    t          |                    |           |                    dd           |                     |                    dt          |          z             d|z              |                    dt          |          z
  d           |                     |                    d          d           |                    dd           |                     |                                d|z   dz   |z              |                    d	           |                     |                                           d S )
NrG   rF   rE   r  r  r  r   r  d   )	r&   r   r`   r   r   tellr   r   r2  r  s      r"   _test_seek_and_tellz%TestProxyFileBase._test_seek_and_tell  s_   *##%%

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

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

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

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

3&&&&&r$   c                     |                      |j                   |                                 |                     |j                   |                                 |                     |j                   d S r	   )r2  r  rB   r   r  s     r"   _test_closezTestProxyFileBase._test_close  s`    &&&%%%%%%%%r$   N)	r.   r/   r0   r  r  r  r  r  r  r7   r$   r"   r  r    sq        1 1 1? ? ? K K K 	9 	9 	9' ' '& & & & &r$   r  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestProxyFilec                 \    t           j        | _        t          | j        d          | _        d S Nr   r   r;   r<   r  rc  r?   s    r"   r@   zTestProxyFile.setUp  #    %
$*e,,


r$   c                 l    | j                                          |                     | j                   d S r	   rc  rB   r-   r<   r?   s    r"   rC   zTestProxyFile.tearDown  2    
  ,,,,,r$   c                 &   | j                             d           | j                                         }t          j        | j                   }|                     |                                |           |                     | j                                         |           t          j        | j         d          }|                     |                                d           |                     | j                                         |           d S )Nr  r   )rc  r   r  r   
_ProxyFiler   )r   posproxy0proxy1s       r"   test_initializezTestProxyFile.test_initialize  s    
   joo#DJ//,,,**C000#DJ22*****C00000r$   c                     | j                             d           |                     t          j        | j                              d S )Nr  )rc  r   r  r   r  r?   s    r"   	test_readzTestProxyFile.test_read  s=    
   *4:6677777r$   c                     | j                             t          dt          j        dt          j        dt          j        dd                     |                     t          j        | j                              d S Nr   r  fredbobr   )rc  r   bytesr&   r   r  r   r  r?   s    r"   test_readlinezTestProxyFile.test_readline  sw    



BJJJ24*** >?FH H 	I 	I 	IG.tz::;;;;;r$   c                     | j                             t          dt          j        dt          j        dt          j        dd                     |                     t          j        | j                              d S r  )rc  r   r  r&   r   r  r   r  r?   s    r"   test_readlineszTestProxyFile.test_readlines
  w    



BJJJ24*** >?FH H 	I 	I 	IW/
;;<<<<<r$   c                     | j                             t          dt          j        dt          j        dt          j        dd                     |                     t          j        | j                              d S r  )rc  r   r  r&   r   r  r   r  r?   s    r"   test_iterationzTestProxyFile.test_iteration  r  r$   c                     | j                             t          dt          j        dt          j        d                     |                     t          j        | j                              d S Nr   r  r   )rc  r   r  r&   r   r  r   r  r?   s    r"   test_seek_and_tellz TestProxyFile.test_seek_and_tell  sZ    
rzzz2::FPPQQQ  !3DJ!?!?@@@@@r$   c                     | j                             t          dt          j        dt          j        d                     |                     t          j        | j                              d S r  )rc  r   r  r&   r   r  r   r  r?   s    r"   r9  zTestProxyFile.test_close  sZ    
rzzz2::FPPQQQ+DJ7788888r$   Nr.   r/   r0   r@   rC   r  r  r  r  r  r  r9  r7   r$   r"   r  r    s        - - -- - -	1 	1 	18 8 8< < <
= = =
= = =
A A A9 9 9 9 9r$   r  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestPartialFilec                 \    t           j        | _        t          | j        d          | _        d S r  r  r?   s    r"   r@   zTestPartialFile.setUp  r  r$   c                 l    | j                                          |                     | j                   d S r	   r  r?   s    r"   rC   zTestPartialFile.tearDown#  r  r$   c                    | j                             t          dt          j        z   dz   d                     | j                                         }t          j        | j         dd          }|                     |                                d           |                     | j                                         |           d S )Nr   r  r   rF   rI   r   )	rc  r   r  r&   r   r  r   _PartialFiler   )r   r  r  s      r"   r  zTestPartialFile.test_initialize'  s    
urz1E97CCDDDjoo$TZA66q)))**C00000r$   c                     | j                             t          dd                     |                     t	          j        | j         dd                     d S )Nz	***bar***r   rG   rJ   )rc  r   r  r  r   r  r?   s    r"   r  zTestPartialFile.test_read/  sK    
{G44555,TZA>>?????r$   c                 <   | j                             t          dt          j        dt          j        dt          j        dd                     |                     t          j        | j         dddt          t          j                  z  z                        d S )	Nz!!!!!foor  r  zbob!!!!!r   rI      rG   )	rc  r   r  r&   r   r  r   r  r   r?   s    r"   r  zTestPartialFile.test_readline3  s    
***bjjj"*** >?FH H 	I 	I 	IG0Q13a#bj//6I1IK K 	L 	L 	L 	L 	Lr$   c                 <   | j                             t          dt          j        dt          j        dt          j        dd                     |                     t          j        | j         dddt          t          j                  z  z                        d S )	Nr   r  r  zbob?????r   r      rG   )	rc  r   r  r&   r   r  r   r  r   r?   s    r"   r  zTestPartialFile.test_readlines9      
***bjjj"*** >?FH H 	I 	I 	IW1$*a24q3rz??7J2JL L 	M 	M 	M 	M 	Mr$   c                 <   | j                             t          dt          j        dt          j        dt          j        dd                     |                     t          j        | j         dddt          t          j                  z  z                        d S )	N____foor  r  zbob####r   rH      rG   )	rc  r   r  r&   r   r  r   r  r   r?   s    r"   r  zTestPartialFile.test_iteration?  r  r$   c                 "   | j                             t          dt          j        dt          j        dd                     |                     t          j        | j         dddt          t          j                  z  z                        d S )Nz(((foor  z$$$r   rG   	   rF   )	rc  r   r  r&   r   r  r   r  r   r?   s    r"   r  z"TestPartialFile.test_seek_and_tellE  s    
RZZZLgVVWWW  !5dj!67!c"*oo:M6M"O "O 	P 	P 	P 	P 	Pr$   c                 "   | j                             t          dt          j        dt          j        dd                     |                     t          j        | j         dddt          t          j                  z  z                        d S )Nz&foor  ^r   rE   rJ   rG   )	rc  r   r  r&   r   r  r   r  r   r?   s    r"   r9  zTestPartialFile.test_closeJ  s    
RZZZH'RRSSS-dj!./!c"*oo2E.EG G 	H 	H 	H 	H 	Hr$   Nr  r7   r$   r"   r  r    s        - - -- - -1 1 1@ @ @L L LM M MM M MP P P
H H H H 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                   :    e Zd Zd Zd Zd
dZd Zd Zd Zd Z	d	S )MaildirTestCasec                    t           j        | _        t          j                            | j                  rt          j        | j                   n=t          j                            | j                  rt          j        | j                   t          j	        | j                   t          j	        t          j        
                    | j        d                     t          j	        t          j        
                    | j        d                     t          j	        t          j        
                    | j        d                     d| _        g | _        d S )Nr  r  r  rE   )r   r;   _dirr&   r'   r(   r)   isfiler+   r  r  _counter	_msgfilesr?   s    r"   r@   zMaildirTestCase.setUp]  s    $	7==## 	(TY''''W^^DI&& 	(TY'''

di//000
di//000
di//000r$   c                    t          t          t          j        | j                             t          j        t          j                            | j	        d                     t          j        t          j                            | j	        d                     t          j        t          j                            | j	        d                     t          j        | j	                   d S )Nr  r  r  )
r   mapr&   r+   r  r   rmdirr'   r  r   r?   s    r"   rC   zMaildirTestCase.tearDownk  s    SDN++,,,TY66777TY66777TY66777	"""""r$   Fc                    t          t          j                    dz            }| j        }| xj        dz  c_        d                    t	          |          t	          |          ddf          }t
          j                            | j        d|          }t
          j                            | j        ||          }t          |dd	          5 }| j	        
                    |           |r|                    t                     |                    t                     d d d            n# 1 swxY w Y   	 t          j        ||           nY# t          t           f$ rE t          |d          5 }|                    t                     d d d            n# 1 swxY w Y   Y nw xY w| j	        
                    |           |S )
Ni@B rE   .
myhostnamemydomainr  r  rK   rL   )r  r  r  r  strr&   r'   r   r  r  rO   r   FROM_DUMMY_MESSAGElinkAttributeErrorPermissionError)	r   dirr}  tr  r%  tmpnamenewnamefps	            r"   createMessagezMaildirTestCase.createMessager  s   	g%&&m88SVVSXX|ZHII',,ty%::',,ty#x88'3111 	$RN!!'***  HH]###		$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$
	(GGW%%%%0 	( 	( 	(gs## (r'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (	( 	g&&&sI   AD))D-0D-5E !F!,FF!F	F!F	F! F!c                     t          j        t          j                  | _        |                     | j                                                   |                     | j                                                   dS )zTest an empty maildir mailboxN)r   r  r   r;   r}  r   r  r?   s    r"   test_empty_maildirz"MaildirTestCase.test_empty_maildir  s`     OI$455	 	$)..**+++$)..**+++++r$   c                 ~   |                      d           t          j        t          j                  | _        |                     | j                                                   |                     | j                                                   |                     | j                                                   d S )Nr  	r  r   r  r   r;   r}  r  r  r   r?   s    r"   test_nonempty_maildir_curz)MaildirTestCase.test_nonempty_maildir_cur      5!!!OI$455	TY^^--...$)..**+++$)..**+++++r$   c                 ~   |                      d           t          j        t          j                  | _        |                     | j                                                   |                     | j                                                   |                     | j                                                   d S )Nr  r  r?   s    r"   test_nonempty_maildir_newz)MaildirTestCase.test_nonempty_maildir_new  r  r$   c                     |                      d           |                      d           t          j        t          j                  | _        |                     | j                                                   |                     | j                                                   |                     | j                                                   |                     | j                                                   d S )Nr  r  r  r?   s    r"   test_nonempty_maildir_bothz*MaildirTestCase.test_nonempty_maildir_both  s    5!!!5!!!OI$455	TY^^--...TY^^--...$)..**+++$)..**+++++r$   N)F)
r.   r/   r0   r@   rC   r  r  r  r  r   r7   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-Tozgkj+person@localhostzDelivered-To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)z gkj@sundance.gregorykjohnson.comzfrom 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)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)ztby andy.gregorykjohnson.com (Postfix, from userid 1000)
        id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)rA  zWed, 13 Jul 2005 17:23:11 -0400r  z."Gregory K. Johnson" <gkj@gregorykjohnson.com>rB  zgkj@gregorykjohnson.comrC  zSample messagezMime-Versionz1.0zContent-Typez,multipart/mixed; boundary="NMuMz9nt05w80d4+"zContent-Dispositioninliner?  zMutt/1.5.9i)z1This is a sample message.

--
Gregory K. Johnson
zRH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs
3FYlAAAA
c                       e Zd Zd ZdS )MiscTestCasec                 B    t          j        | t          ddh           d S )Nr   fcntl)not_exported)r   check__all__r   r?   s    r"   test__all__zMiscTestCase.test__all__	  s8    T7+4g*>	@ 	@ 	@ 	@ 	@ 	@r$   N)r.   r/   r0   r)  r7   r$   r"   r$  r$  	  s(        @ @ @ @ @r$   r$  c                  ,    t          j                     d S r	   )r   reap_childrenr7   r$   r"   tearDownModuler,  	  s    r$   __main__);r&   r  r  r  r  r   email.messager  rT   r   testr   test.supportr   r   r'  rN  r   r;  has_gethostnameSkipTestr   r9   TestCaserQ  r  r+  r6  r{  r  r  r  r  r~  r  r  r  r  r  r.  r1  r8  rK  rM  r  r  r  r  r  r  rR   r`   rV   r   r   r$  r,  r.   mainr7   r$   r"   <module>r5     sF   				 



         				 				        " " " " " " & & & & & &     $ ;
(
9
:
::% % % % % % % %8z$ z$ z$ z$ z$( z$ z$ z$z!D !D !D !D !DHh&7 !D !D !DHX% X% X% X% X%+x0 X% X% X%v
&< &< &< &< &<k &< &< &<RI I I I IO I I IX+1 +1 +1 +1 +1}h/ +1 +1 +1\L L L L L}h/ L L L
D> D> D> D> D>[(+ D> D> D>NE E E E E!2 E E ED           '/   	1 	1 	1 	1 	1h' 	1 	1 	1S S S S S(H- S S SlG  G  G  G  G h&7 G  G  G T-! -! -! -! -! -! -! -!`# # # # #*K # # #
E E E E EK!2 E E E>4; 4; 4; 4; 4;{H$5 4; 4; 4;n# # # # #*K # # #
FN FN FN FN FNHh&7 FN FN FNRP& P& P& P& P& P& P& P&f.9 .9 .9 .9 .9%x'8 .9 .9 .9b0H 0H 0H 0H 0H'): 0H 0H 0Hj 	BM, M, M, M, M,h' M, M, M,d-^ (..w77 "-"*" )"  M	" 5"  Y"  P"  @"  ,!"" ?#"$ 		"%"& '"( 5)"* F+", (-". -/"2 @ @ @ @ @8$ @ @ @   zHMOOOOO r$   