Your IP : 216.73.216.85


Current Path : /opt/alt/python35/lib64/python3.5/test/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/__pycache__/test_mailbox.cpython-35.opt-1.pyc



��Yfj�(@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
Z
ddlZddlZddlZyddlZWnek
r�YnXGdd�d�ZGdd�de�ZGdd�dee
j�ZGd	d
�d
ee
j�ZGdd�de�ZGd
d�de�ZGdd�dee
j�ZGdd�dee
j�ZGdd�dee
j�ZGdd�dee
j�ZGdd�d�ZGdd�dej�Z Gdd�de
j�Z!Gdd�dee
j�Z"Gdd �d e"e
j�Z#Gd!d"�d"�Z$Gd#d$�d$e$e"�Z%Gd%d&�d&e"e
j�Z&Gd'd(�d(e"e
j�Z'Gd)d*�d*e$e"�Z(Gd+d,�d,ee
j�Z)Gd-d.�d.e�Z*Gd/d0�d0e*e
j�Z+Gd1d2�d2e*e
j�Z,d3Z-d4Z.Gd5d6�d6e
j�Z/d7Z0e0j1d8�Z2d9d:d;d<d=d<d>d?d=d@d>dAd>dBd>dCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSiZ3dTdUfZ4dVdW�Z5e6dXkre5�dS)Y�N)�supportc@sReZdZejejejejejej	fZ
dd�Zdd�ZdS)�TestBasecCs|j|tjj�|j|tj�x3tj�D]%\}}|j||j|��q6W|j	|j
��|jt|j
��tt��xhtt�D]Z\}}|j
|�}|j|tjj�|j|tj�|j|j
�|�q�WdS)N)�assertIsInstance�email�message�Message�mailbox�_sample_headers�items�assertInZget_all�
assertTrue�is_multipart�assertEqual�len�get_payload�_sample_payloads�	enumerateZassertNotIsInstance)�self�msg�key�value�iZpayload�part�r�6/opt/alt/python35/lib64/python3.5/test/test_mailbox.py�
_check_samples"zTestBase._check_samplecCsEtjj|�r"tj|�ntjj|�rAtj|�dS)N)�os�path�isdirr�rmtree�exists�unlink)r�targetrrr�_delete_recursively+szTestBase._delete_recursivelyN)
�__name__�
__module__�__qualname__rr�MaildirMessage�mboxMessage�	MHMessage�BabylMessage�MMDFMessage�all_mailbox_typesrr#rrrrrs
rc@s�eZdZdZdZdZdd�Zdd�Zdd�Ze	j
d	�Zd
d�Zdd
�Z
dd�Zdd�Ze	j
d�jd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Z d3d4�Z!d5d6�Z"d7d8�Z#d9d:�Z$d;d<�Z%d=d>�Z&d?d@�Z'dAdB�Z(dCdD�Z)d&dEdF�Z*dGdH�Z+d&dIdJ�Z,dKdL�Z-d&dMdN�Z.dOdP�Z/d&dQdR�Z0dSdT�Z1dUdV�Z2dWdX�Z3dYdZ�Z4d[d\�Z5d]d^�Z6d_d`�Z7dadb�Z8dS)c�TestMailboxNzFrom: foo

%s
cCs5tj|_|j|j�|j|j�|_dS)N)r�TESTFN�_pathr#�_factory�_box)rrrr�setUp:szTestMailbox.setUpcCs!|jj�|j|j�dS)N)r1�closer#r/)rrrr�tearDown?s
zTestMailbox.tearDownc
Csg}|j|jj|jd��|jt|j�d�|j|jjtjt���|jt|j�d�|j|jjt	j
t���|jt|j�d�|j|jjtjt
���|jt|j�d�|j|jjt��|jt|j�d�|j|jjt
��|jt|j�d�|jt��0|j|jjtjtjt
����WdQRX|jt|j�d�|j|jj|d�|jd�x&d	D]}|j|j||�q�WdS)
Nr�������)r5r6r7r8r9r:)�appendr1�add�	_templaterrrr�_sample_messager�message_from_string�io�BytesIO�_bytes_sample_message�assertWarns�DeprecationWarning�
TextIOWrapper�
get_stringr)r�keysrrrr�test_addCs( """#'
zTestMailbox.test_addu{            From: foo
            Subject: Falinaptár házhozszállítással. Már rendeltél?

            0
            cCsc|jj|jjd��}|jt|j�d�|j|jj|�|jjd��dS)Nzlatin-1r5)r1r=�
_nonascii_msg�encoderr�	get_bytes)rrrrr�"test_add_invalid_8bit_bytes_headerasz.TestMailbox.test_add_invalid_8bit_bytes_headercCsN|jj�d}|jj|jd��}|j|jj|�d�dS)Nr5zlatin-1zZSubject: =?unknown-8bit?b?RmFsaW5hcHThciBo4Xpob3pzeuFsbO104XNzYWwuIE3hciByZW5kZWx06Ww/?=

)rJ�
splitlinesr1r=rKrrG)rZsubjrrrr�&test_invalid_nonascii_header_as_stringgsz2TestMailbox.test_invalid_nonascii_header_as_stringc
Csa|jtd��|jj|j�WdQRX|jj�|jt|j�d�|j�dS)Nz
ASCII-onlyr)	�assertRaisesRegex�
ValueErrorr1r=rJ�flushrr�assertMailboxEmpty)rrrr�&test_add_nonascii_string_header_raisesns

z2TestMailbox.test_add_nonascii_string_header_raisesc
Cs�dd�}tj|tjjd|�|jt��|jjtj	d��WdQRX|j
t|j�d�|jj�|j
�dS)Nc_std��dS)Nza fake error)�	Exception)�args�kwrrr�raiservszETestMailbox.test_add_that_raises_leaves_mailbox_empty.<locals>.raiserZflattenuFrom: Alphösor)rZpatchr�	generatorZBytesGenerator�assertRaisesrUr1r=r@rrr3rS)rrXrrr�)test_add_that_raises_leaves_mailbox_emptyus 
z5TestMailbox.test_add_that_raises_leaves_mailbox_emptyu0        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

        Да, они летят.
        zutf-8cCs�|jj|j�}|j|jj|�|j�|jj|��5}|j|j�|jjdtj	j
���WdQRX|j|j|j�d�dS)Ns
uДа, они летят.
)r1r=�_non_latin_bin_msgrrL�get_file�read�replacer�lineseprKr)rr�frrr�test_add_8bit_body�s
zTestMailbox.test_add_8bit_bodycCswtjd��3}|jt�|jd�|jj|�}WdQRX|j|jj|�j	d�tj	d��dS)Nzwb+rs
)
�tempfile�
TemporaryFile�writerC�seekr1r=rrL�split)rrarrrr�test_add_binary_file�s

z TestMailbox.test_add_binary_filecCs}tjd��6}|j|j�|jd�|jj|�}WdQRX|j|jj|�j	d�|jj	d��dS)Nzwb+rs
)
rcrdrer\rfr1r=rrLrg)rrarrrr�test_add_binary_nonascii_file�s
z)TestMailbox.test_add_binary_nonascii_filecCs�tjd��J}|jt�|jd�|jt��|jj|�}WdQRXWdQRX|j	|jj
|�jd�tjd��dS)Nzw+rs
)
rcrdrer?rfrDrEr1r=rrLrgrC)rrarrrr�test_add_text_file_warns�s

 z$TestMailbox.test_add_text_file_warnscCs`|jt��'|jjtj|jd��}WdQRX|j|jj|�|jd�dS)N�0)	rDrEr1r=rA�StringIOr>rrG)rrrrr�test_add_StringIO_warns�s)z#TestMailbox.test_add_StringIO_warnscCs�|jt��;|jtd��!|jjtj|j��WdQRXWdQRX|j	t
|j�d�|jj�|j�dS)Nz
ASCII-onlyr)
rDrErPrQr1r=rArlrJrrr3rS)rrrr�!test_add_nonascii_StringIO_raises�s*
z-TestMailbox.test_add_nonascii_StringIO_raisescCs|j|jj�dS)N)�_test_remove_or_delitemr1�remove)rrrr�test_remove�szTestMailbox.test_removecCs|j|jj�dS)N)ror1�__delitem__)rrrr�test_delitem�szTestMailbox.test_delitemcs��jj�jd���jj�jd���jt�j�d�����jt�j�d��jt��fdd���jt��fdd���j�jj���jd��jj�jd���jt�j�d�����jt�j�d��jt��fdd���jt��fdd���j�jj���jd�����jt�j�d��jt��fd	d���jt��fd
d��dS)Nrr5r6cs�j�S)N)r1r)�key0rrr�<lambda>�sz5TestMailbox._test_remove_or_delitem.<locals>.<lambda>cs
���S)Nrr)rt�methodrrru�scs�j�S)N)r1r)�key2rrrru�scs
���S)Nrr)rwrvrrru�scs�j�S)N)r1r)�key1rrrru�scs
���S)Nrr)rxrvrrru�s)r1r=r>rrrZ�KeyErrorrG)rrvr)rtrxrwrvrrro�s&
#
#
z#TestMailbox._test_remove_or_delitem�
cs��jj�jd���jj�jd�}�jt�j�d��jj���jt�j�d��jt��fdd���jj���jt�j�d��jt��fdd��dS)Nrr5r6cs�j�S)N)r1r)rtrrrru�sz*TestMailbox.test_discard.<locals>.<lambda>cs�j�S)N)r1r)rtrrrru�s)r1r=r>rr�discardrZry)r�repetitionsrxr)rtrr�test_discard�szTestMailbox.test_discardcCs|jj|jd�}|jj|�}|j|dd�|j|j�d�|j|jjd��|j|jjdd�d�|jj�|j	|j
�|_|jj|jd�}|jj|�}|j|dd�|j|j�d�dS)Nr�from�fooz0
Fr5z1
)r1r=r>�getrr�assertIsNone�assertIsr3r0r/)rrtrrxrrr�test_get�s
zTestMailbox.test_getcs��jj�jd���j�}�j|dd��j|j�d��jt�fdd���jj���jt��fdd��dS)Nrr~rz0
cs�jdS)Nr)r1r)rrrru�sz*TestMailbox.test_getitem.<locals>.<lambda>cs�j�S)N)r1r)rtrrrru�s)r1r=r>rrrZryr{)rrr)rtrr�test_getitem�s
zTestMailbox.test_getitemcCs�|jj|jd�}|jjt�}|jj|�}|j|tj�|j|dd�|j|j	�d�|j
|jj|��dS)Nrr~rz0
)r1r=r>r?�get_messagerrrrrr)rrtrx�msg0rrr�test_get_message�szTestMailbox.test_get_messagecCsw|jj|jd�}|jjt�}|j|jj|�|jdjd��|j|jj|�t�dS)Nr�ascii)r1r=r>r?rrLrKrC)rrtrxrrr�test_get_bytes	s
zTestMailbox.test_get_bytescCs�|jj|jd�}|jjt�}|j|jj|�|jd�|j|jj|�jd�tjd��dS)Nr�
)r1r=r>r?rrGrg)rrtrxrrr�test_get_strings
#zTestMailbox.test_get_stringcCs�|jj|jd�}|jjt�}|jj|��}|j�}WdQRX|jj|��}|j�}WdQRX|j|jd�jt	j
d�|jd�|j|jd�jt	j
d�t�dS)Nrr�r�)r1r=r>r?r]r^r�decoder_rr`)rrtrx�fileZdata0Zdata1rrr�
test_get_files!!zTestMailbox.test_get_filecCs<|jjt�}|jj|�}|j�|j�dS)N)r1r=r?r]r3)rrrarrr�!test_get_file_can_be_closed_twice&s
z-TestMailbox.test_get_file_can_be_closed_twicecCs#|j|jjdddd�dS)N�do_keysT�	do_valuesF)�_check_iterationr1�iterkeys)rrrr�
test_iterkeys-szTestMailbox.test_iterkeyscCs#|j|jjdddd�dS)Nr�Tr�F)r�r1rH)rrrr�	test_keys1szTestMailbox.test_keyscCs#|j|jjdddd�dS)Nr�Fr�T)r�r1�
itervalues)rrrr�test_itervalues5szTestMailbox.test_itervaluescCs#|j|jjdddd�dS)Nr�Fr�T)r�r1�__iter__)rrrr�	test_iter:szTestMailbox.test_itercCs#|j|jjdddd�dS)Nr�Fr�T)r�r1�values)rrrr�test_values?szTestMailbox.test_valuescCs#|j|jjdddd�dS)Nr�Tr�)r�r1�	iteritems)rrrr�test_iteritemsCszTestMailbox.test_iteritemscCs#|j|jjdddd�dS)Nr�Tr�)r�r1r
)rrrr�
test_itemsHszTestMailbox.test_itemsc
Cs�x|�D]}|jd�q
Wgg}}xHt|�D]:}|j|jj|j|��|j|j|�q;W|r�|r�t|��}	n`|r�|r�t|��}
nAgg}	}
x1|�D]&\}}|	j|�|
j|�q�W|r6|jt|�t|	��|jt	|�t	|	��|r�d}xH|
D]@}|j|dd�|j
t|j��|�|d7}qIW|jt|�|�dS)Nz	Not emptyrr~rr5)
Zfail�ranger<r1r=r>�listrr�set�
assertLess�intr)
rrvr�r�r|rrHr�rZ
returned_keysZreturned_valuesr�countrrrr�Ls0
 




zTestMailbox._check_iterationcCs:|jd|j�|jj|jd�}|j||j�|jd|j�|jj|jd�}|j||j�|j||j�|jd|j�|jj|�|j||j�|j||j�|jd|j�|jj|�|j||j�|j||j�|jd|j�dS)Nrrr5)�assertNotInr1r=r>rrp)rrtrxrrr�
test_containsgs zTestMailbox.test_containscCs�g}xjt|�D]\}|jt|j�|�|j|jj|j|��|jt|j�|d�qWxft|�D]X}|jt|j�||�|jj||�|jt|j�||d�q�WdS)Nr5)r�rrr1r<r=r>rp)rr|rHrrrr�test_lenzs !zTestMailbox.test_lencs��jj�jd�}�j�jj|��jd��jj�jd�}�j�jj|��jd��jd�j|<�j�jj|��jd��jd�j|<�j�jj|��jd�t�j|<�j�j|��j|�j|<�j�j|��jd�j|<�j�jj|��jd��j�j|��jt�fdd���jt�fdd���jt	�j�d�dS)	Nz
original 0z
original 1z	changed 0z	changed 1cs�jjdd�S)Nr�bar)r1�__setitem__r)rrrru�sz+TestMailbox.test_set_item.<locals>.<lambda>cs�jdS)Nr)r1r)rrrru�sr6)
r1r=r>rrGr?rrZryr)rrtrxr)rr�
test_set_item�s0
	zTestMailbox.test_set_itemcs�g}x+t|�D]}�jj�j|�qWx=t|�D]/\}��j�jj���j|�qAW�jj��jt�j�d�x9t|�D]+\}��j	t
��fdd��q�WdS)Nrcs�jj��S)N)r1rGr)rrrrru�sz(TestMailbox.test_clear.<locals>.<lambda>)r�r1r=r>rrrG�clearrrZry)r�
iterationsrHrr)rrr�
test_clear�s'
zTestMailbox.test_clearcCsf|jj|jd�}|j||j�|jj|jd�}|j||j�|j|jj|�j�d�|j||j�|j||j�|jj|jd�}|j||j�|j|jj|�j�d�|j||j�|j||j�|j|jj|�j�d�|j||j�|jt|j�d�dS)Nrr5z0
r6z2
z1
)	r1r=r>rr�poprr�r)rrtrxrwrrr�test_pop�s"""zTestMailbox.test_popcsg}x4td�D]&}|j�jj�j|��qWg}x{td�D]m}�jj�\�}�j�|��j�|�|j���jt	|j
��|j���qPW�jt�j�d�x-|D]%��j
t��fdd��q�WdS)Nrzrcs�j�S)N)r1r)rrrrru�sz*TestMailbox.test_popitem.<locals>.<lambda>)r�r<r1r=r>�popitemrr�rr�r�indexrrZry)rr�rHr�seenrr)rrr�test_popitem�s$
)
zTestMailbox.test_popitemcsH�jj�jd���jj�jd�}�jj�jd�}�jj��jd|ti��jt�j�d��j�jj���jd��j�jj|��jd��j�j|��jj|�jdf|�jdf��jdfg��jt�j�d��j�jj���jd��j�jj|��jd��j�jj|��jd��j	t
��fdd	���jt�j�d��j�jj���jd��j�jj|��jd��j�jj|��jd�dS)
Nz
original 0z
original 1z
original 2z	changed 0r7z	changed 2z	changed 1cs#�jjdd��jdi�S)Nrr�z	changed 0)r1�updater>r)rtrrrru�sz)TestMailbox.test_update.<locals>.<lambda>)r1r=r>r�r?rrrGrrZry)rrxrwr)rtrr�test_update�s<
	zTestMailbox.test_updatecCs|j|jjd�dS)NT)�_test_flush_or_closer1rR)rrrr�
test_flush�szTestMailbox.test_flushcCss|jj|jd�|jj|jd�|jj�|jj�|jj�|jj�|jj�dS)Nrr5)r1r=r>rRr�)rrrr�test_popitem_and_flush_twice�s



z(TestMailbox.test_popitem_and_flush_twicecCs{|jtjj|j���|jj�|jtjj|j���|jj�|jtjj|j���dS)N)	�assertFalserrr �_get_lock_pathr1�lockr�unlock)rrrr�test_lock_unlocks


zTestMailbox.test_lock_unlockcCs|j|jjd�dS)NF)r�r1r3)rrrr�
test_closeszTestMailbox.test_closecs��fdd�td�D�}�jj|d��jj|d��jj|d��j}|�|r~�jj��j�j��_�jj�}�jt|�d�x*|D]"}�j	�jj
|�|�q�W|j�dS)Ncsg|]}�j|�qSr)r>)�.0r)rrr�
<listcomp>
s	z4TestMailbox._test_flush_or_close.<locals>.<listcomp>r7rr5r6)r�r1r=r3r0r/rHrrrrG)rrvZshould_call_close�contentsZoldboxrHrr)rrr�s	

 z TestMailbox._test_flush_or_closecs�xstjt�ttjt�fD]P}tj���jj|���j�j	�tj
dtjj
���q"Wtj���jt��fdd��dS)Ns
cs�jjd��S)N)r1�
_dump_messager)�outputrrrru&sz/TestMailbox.test_dump_message.<locals>.<lambda>)rr@r?rArBrCr1r�r�getvaluer_rr`rKrZ�	TypeError)r�inputr)r�rr�test_dump_messages 	zTestMailbox.test_dump_messagecCs|jdS)Nz.lock)r/)rrrrr�(szTestMailbox._get_lock_path)9r$r%r&ZmaxDiffr0r>r2r4rI�textwrap�dedentrJrMrOrTr[rKr\rbrhrirjrmrnrqrsror}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�rrrrr-3sj	

	


"r-c@seZdZdd�ZdS)�TestMailboxSuperclasscs?tjd��|jt�fdd��|jt�fdd��|jt�fdd��|jt�fdd��|jt�fdd��|jt�fdd��|jt�fd	d��|jt�fd
d��|jt�fdd��|jt�fdd��|jt�fd
d��|jt�fdd��|jt�fdd��|jt�fdd��|jt�fdd��|jt�fdd��|jt�fdd��|jt�fdd��|jt�fdd��|jt�fdd��|jt�fdd��|jt�fdd��|jt�fdd��|jt�fdd��|jt�fdd��|jt�fdd��|jt�fdd��|jt�fdd��|jt�fdd��dS) Nrcs
�jd�S)N�)r=r)�boxrrru2sz;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>cs
�jd�S)Nr�)rpr)r�rrru3scs
�jd�S)Nr�)rrr)r�rrru4scs
�jd�S)Nr�)r{r)r�rrru5scs�jdd�S)Nr�)r�r)r�rrru6scs
�j�S)N)r�r)r�rrru7scs
�j�S)N)rHr)r�rrru8scs�j�j�S)N)r��__next__r)r�rrru9scs�j�j�S)N)r�r�r)r�rrru:scs
�j�S)N)r�r)r�rrru;scs�j�j�S)N)r�r�r)r�rrru<scs
�j�S)N)r
r)r�rrru=scs
�jd�S)Nr�)r�r)r�rrru>scs
�jd�S)Nr�)�__getitem__r)r�rrru?scs
�jd�S)Nr�)r�r)r�rrru@scs
�jd�S)Nr�)rGr)r�rrruAscs
�jd�S)Nr�)rLr)r�rrruBscs
�jd�S)Nr�)r]r)r�rrruCscs
d�kS)Nr�rr)r�rrruDscs
�jd�S)Nr�)�__contains__r)r�rrruEscs
�j�S)N)�__len__r)r�rrruFscs
�j�S)N)r�r)r�rrruGscs
�jd�S)Nr�)r�r)r�rrruHscs
�j�S)N)r�r)r�rrruIscs
�jd�S)Nr��r�r�)r�)r�r)r�rrruJscs
�j�S)N)rRr)r�rrruKscs
�j�S)N)r�r)r�rrruLscs
�j�S)N)r�r)r�rrruMscs
�j�S)N)r3r)r�rrruNs)r�MailboxrZ�NotImplementedError)rr)r�r�test_notimplemented/s<z)TestMailboxSuperclass.test_notimplementedN)r$r%r&r�rrrrr�-sr�c@s�eZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zddd�Zdd�Z
dd�Zdd�Zdd�Zddd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zejeed-�d.�ejeed/�d0�d1d2���Zejeed-�d.�ejeed/�d0�d3d4���Zd5d6�ZdS)7�TestMaildirNcCstj||�S)N)r�Maildir)rr�factoryrrrruSszTestMaildir.<lambda>cCs;tj|�tjdks+tjdkr7d|j_dS)N�nt�cygwin�!)r-r2r�name�sys�platformr1�colon)rrrrr2Us
zTestMaildir.setUpcCs/|jtjtjj|jd��g�dS)N�tmp)rr�listdirr�joinr/)rrrrrSZszTestMaildir.assertMailboxEmptycCs�tj|jd�}|jd�|jd�|jj|�}|jtj	j
tj	j|jdd||jj
f���dS)Nr�currz%s%sfoo)rr'r>�
set_subdir�set_infor1r=rrrr r�r/r�)rrrrrr�test_add_MM]s

$zTestMaildir.test_add_MMcCs�tj|jd�}|jd�|jd�|jj|�}|jj|�}|j|tj�|j	|j
�d�|j	|j�d�dS)Nrr��RF�FR)rr'r>r��	set_flagsr1r=r�rr�
get_subdir�	get_flags)rrr�msg_returnedrrr�test_get_MMfs

zTestMaildir.test_get_MMcCs�tj|jd�}|jd�|jj|�}|jj|�}|j|j�d�|j|j	�d�tj|jd�}||j|<|jj|�}|j|j�d�|j|j	�d�|j|j
�d�tj|jd�}|jd	�||j|<|jd
|j|<|jj|�}|j|j�d�|j|j	�d�|j|j
�d�dS)
NrZTP�newZPTr5r�z1
r6z2,Sr7�Sz3
)rr'r>r�r1r=r�rr�r�rr�)rr�rr��msg1�msg2rrr�test_set_MMqs(



zTestMaildir.test_set_MMcCs�tj|jd�}|jd�|jd�|jj|�}Gdd�dtj�}tj|jd|�}|jj	|_	|j
|�}|j||�dS)Nrr�r�c@seZdZdS)z8TestMaildir.test_consistent_factory.<locals>.FakeMessageN)r$r%r&rrrr�FakeMessage�sr�r�)rr'r>r�r�r1r=r�r/r�r�r)rrrr�r�r�rrr�test_consistent_factory�s

z#TestMaildir.test_consistent_factorycCsb|j�tj|j�|_|j�|j|j�|j|jdd�|_|j�dS)Nr�)r4rr�r/r1�
_check_basicsr#r0)rrrr�test_initialize_new�s

zTestMaildir.test_initialize_newcCsi|j�x9dD]1}tjtjjtjj|j|���qWtj|j�|_	|j
�dS)Nr�r�r�r�)r�r�r�r�)r4r�mkdirr�normpathr�r/rr�r1r�)r�subdirrrr�test_initialize_existing�s


/z$TestMaildir.test_initialize_existingcCs�|j|jjtjj|j��|j|jj|�xYdD]Q}tjj|j|�}tj|�tj	}|j
tj|�d|�qBWdS)Nr�r�r�r�zNot a directory: '%s')r�r�r�r�)rr1r/rr�abspathr0r��stat�ST_MODEr�S_ISDIR)rr�r�r�moderrrr��s%
zTestMaildir._check_basicscCsx|jjd�|jjd�|jjd�|jt|jj��d�|jt|jj��td��dS)N�one�two�threer7)r�rr)r1�
add_folderrr�list_foldersr�)rrrr�test_list_folders�szTestMaildir.test_list_folderscCs�|jjd�|jjd�}|j|jd�|jtjjtjj	|j
d���|jjd�}|j|j|j
�d�|jd�dS)Nzfoo.barr�z.foo.barr)r1r�
get_folderr=r>rrrrr�r/rrGrH)r�folder0�folder1rrr�test_get_folder�s+zTestMaildir.test_get_foldercCs�|jjd�|jjd�|jt|jj��d�|jt|jj��td��|jjd�|jt|jj��d�|jt|jj��td��|jjd�|jt|jj��d�|jt|jj��td	��|jjd�|jt|jj��d�|jt|jj��td
��|jjd�|jt|jj��d�|j|jj�g�dS)Nr�rr6r5rr)r�r)r)rr)r)r1rrrrr��
remove_folder)rrrr�test_add_and_remove_folders�s %%%%z'TestMaildir.test_add_and_remove_folderscCs:tjj|jdd�}tjj|jdd�}t|d��}|jd�WdQRXt|d��}|jd�WdQRX|jj�|jtjj	|��|jtjj	|��tj
|�}tj|tj�dd|j
f�|jj�|jtjj	|��|jtjj	|��dS)Nr�rr��w�@i@�r6)rrr�r/�openrer1Zcleanrr r��utime�time�st_mtimer�)rZfoo_pathZbar_pathraZfoo_statrrr�
test_clean�s


zTestMaildir.test_cleanrzc
Cs�tj�}d|kr*|jdd�}d|krH|jdd�}tj�}tjd�}d}x
t|�D]�}|jj	�}tj
j|j�\}}	|j
|tj
jtj
j|jd��d|�|j|	�}
|j|
d|	�|
j�}|dk	r5|jt|d	�t|d	�d
|d	|d	f�t|d	�t|d	�kr�|jt|d�t|d�d|d|df�|j
t|d
�|d|d
|f�|j
t|d�t|d�dd|d|df�|j
|d|d|d|f�|}|jt�|jd	�|j
|j�t�|j�qvWttjtj
j|jd���}|j
||d||f�dS)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�zFile in wrong location: '%s'zInvalid file name: '%s'rz'Non-monotonic seconds: '%s' before '%s'r5z,Non-monotonic milliseconds: '%s' before '%s'r6z(Process ID mismatch: '%s' should be '%s'r7z(Non-sequential counter: '%s' before '%s'r8z'Host name mismatch: '%s' should be '%s'z%Wrong file count: '%s' should be '%s')�socketZgethostnamer_r�getpid�re�compiler�r1Z_create_tmprrgr�rr�r�r/�match�assertIsNotNone�groupsZassertGreaterEqualr�rerCrfr^r3rr�)
rr|Zhostname�pid�patternZprevious_groups�xZtmp_file�head�tailrrZ
file_countrrr�test_create_tmp�sV!	   $

'zTestMaildir.test_create_tmpc
Csj|j|jji�|jj|jd�}|jj|jd�}|j|jji�|jj�|j|jj|tjjd|�|tjjd|�i�|jj|jd�}|j|jj|tjjd|�|tjjd|�i�|jj�|j|jj|tjjd|�|tjjd|�|tjjd|�i�dS)Nrr5r�r6)	rr1�_tocr=r>�_refreshrrr�)rrtrxrwrrr�test_refreshs
$$
$zTestMaildir.test_refreshcCs�|jj|jd�}|jj|jd�}|j|j�|_|j|jji�d|j_|jj�|jt	|jjj
��t	||g��dS)Nrr5r7���)r1r=r>r0r/rr!�_skewfactorr"�sortedrH)rrtrxrrr� test_refresh_after_safety_period)s
z,TestMaildir.test_refresh_after_safety_periodcs��jt�fdd���jj�jd���j�jj��tjj	d���tj
tjj	�jd����j�jj�tjj	d��i��jj
��jt��fdd���j�jji�dS)Ncs�jjd�S)Nr)r1�_lookupr)rrrru>sz)TestMaildir.test_lookup.<locals>.<lambda>rr�cs�jj��S)N)r1r(r)rtrrrruFs)rZryr1r=r>rr(rrr�rpr/r!rR)rr)rtrr�test_lookup<s+"+
zTestMaildir.test_lookupcCs|jj�|jj�dS)N)r1r�r�)rrrrr�Is
zTestMaildir.test_lock_unlockcCsldd�}|j|jd|�}|jd�}|j|j|�|jd�}|j|j|�dS)NcSsdS)Nr)�srrr�
dummy_factoryQsz.TestMaildir.test_folder.<locals>.dummy_factoryr�r)r0r/rr�r)rr+r�ZfolderZ
folder1_aliasrrr�test_folderNszTestMaildir.test_foldercCsjx-td�D]}|jjtjt��q
Wtjtjj	|j
dd��x|jD]}q\WdS)Nrzr�z	stray-dir)r�r1r=rrr?rr�rr�r/)rrrrrr�test_directory_in_folderZs
"z$TestMaildir.test_directory_in_folder�umaskztest needs os.umask()r�ztest needs os.stat()cCs�tj|jd�}tjd�}z|jj|�}Wdtj|�Xtjj|j	|jj
|��}tj|�j}|j
|d@�dS)Nr�I)rr'r>rr.r1r=rr�r/r(r��st_moder�)rr�
orig_umaskrrr�rrr�test_file_permissionsgs$z!TestMaildir.test_file_permissionscCs{tjd�}z|jjd�}Wdtj|�Xtjj|jd�}tj|�}|j}|j	|d@�dS)Nr�	subfolderZ
maildirfolderr/)
rr.r1rrr�r/r�r0r�)rr1r3r�st�permsrrr�test_folder_file_permsus	z"TestMaildir.test_folder_file_permscs��jj�xDd	D]<}tjtjj�jj|�tj�dfd�qWd
�j_�jj	���fdd�}�jj��j
|��tjj�jdd�}tj|�tj
|��jj��j|��dS)Nr�r�r9r6r7cs�jj�k	S)N)r1r!r)�orig_tocrrr�	refreshed�sz*TestMaildir.test_reread.<locals>.refreshedz
stray-file)r�r�r$)r1r"rrrr�r/rr%r!r�rZcreate_empty_filer!r)rr�r8�filenamer)r7rr�test_reread�s





zTestMaildir.test_reread)r$r%r&r0r2rSr�r�r�r�r�r�r�rrr
rr r#r'r)r�r,r-�unittest�
skipUnless�hasattrrr2r6r:rrrrr�Qs4				
/

*
*r�c@s.eZdZdZdd�Zdd�ZdS)�_TestSingleFilez&Common tests for single-file mailboxescCs�tj|j�j}|jj|jd�|jj�tj|j�j}|j||�|jj	�|j
|j�|_|jt|j�d�dS)Nrr5)rr�r/�st_inor1r=r>rRrr3r0r)rZinode_beforeZinode_afterrrr�test_add_doesnt_rewrite�s

z'_TestSingleFile.test_add_doesnt_rewritecCs�tj|j�jdB}tj|j|�|jj|jd�|jj|jd�}|jj|�|jj	�|j
tj|j�j|�dS)Ni�rr5)rr�r/r0�chmodr1r=r>rprRr)rr�rrrr�test_permissions_after_flush�s
z,_TestSingleFile.test_permissions_after_flushN)r$r%r&�__doc__r@rBrrrrr>�sr>cs�eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	e
jee
d�d�e
jeed�d�dd���Zdd�Z�S)�
_TestMboxMMDFcs\t�j�|jj�|j|j�x+tj|jd�D]}tj|�qAWdS)Nz.*)	�superr4r1r3r#r/�globrr!)r�lock_remnant)�	__class__rrr4�s


z_TestMboxMMDF.tearDownc
Cs3t|j��}|j|j�g�WdQRXdS)N)r
r/r�	readlines)rrarrrrS�sz _TestMboxMMDF.assertMailboxEmptycCsP|jjd�}|j|j|j�d�|j|j|j�d�dS)NzFrom foo@bar blah
From: foo

0
zfoo@bar blahz0
)r1r=r�get_fromr)rrrrr�test_add_from_string�sz"_TestMboxMMDF.test_add_from_stringcCsP|jjd�}|j|j|j�d�|j|j|j�d�dS)NsFrom foo@bar blah
From: foo

0
zfoo@bar blahz0
)r1r=rrJr)rrrrr�test_add_from_bytes�sz!_TestMboxMMDF.test_add_from_bytescCs?x8tjtjfD]$}|d�}|jj|�}qWdS)NzFrom foo@bar blah
From: foo

0
)rr(r+r1r=)r�class_rrrrr�test_add_mbox_or_mmdf_message�sz+_TestMboxMMDF.test_add_mbox_or_mmdf_messagecs��fdd�td�D�}x|D]}�jj|�q&W�jj�tjj�j�}�j�j��_�j	t
�j�d�x3�jj�D]"}�j�jj
|�|�q�W�jj��j	|tjj�j��dS)Ncsg|]}�j|�qSr)r>)r�r)rrrr��s	z6_TestMboxMMDF.test_open_close_open.<locals>.<listcomp>r7)r�r1r=r3rr�getmtimer/r0rrr�rrG)rr�r�mtimerr)rr�test_open_close_open�s

 
z"_TestMboxMMDF.test_open_close_openc
Cs�|jjt�x+td�D]}|jj|j|�qW|jjt�|jjj�|jjjd�|jjj�}|jj	�t
|jd��}|j||j��WdQRX|j
|j�|_dS)Nr7r�rb)r1r=r?r�r>�_filerRrfr^r3r
r/rr0)rrr�rarrr�test_add_and_closes
z _TestMboxMMDF.test_add_and_close�forkzTest needs fork().�
socketpairzTest needs socketpair().cCstj�\}}|j|j�|j|j�tj�}|dkr�z8|jj�|jd�|j	d�|jj
�Wdtjd�X|j	d�z|jt
j|jj�Wd|jd�tj|d�\}}X|jj�|jj
�dS)Nr�cr5�p)rrVZ
addCleanupr3rrUr1r��sendZrecvr��_exitrZrZExternalClashError�waitpid)r�c�prZ
exited_pidZstatusrrr�test_lock_conflicts&





z _TestMboxMMDF.test_lock_conflictcCs�d}|jj|�}|jj�|jj�|j|j�|_|jj�|jj|�}|jj�|j|jj�|jj�dS)NzSubject: sub

body
)	r1r=rRr3r0r/r�rZ_locked)rrrxrwrrr�test_relock7s



z_TestMboxMMDF.test_relock)r$r%r&r4rSrKrLrNrQrTr;r<r=rrr^r_rr)rHrrD�s*$rDc@syeZdZddd�Zejeed�d�ejeed�d�dd	���Zd
d�Z	dd
�Z
dS)�TestMboxNcCstj||�S)N)r�mbox)rrr�rrrruIszTestMbox.<lambda>r.ztest needs os.umask()r�ztest needs os.stat()cCs�zhtjd�}|jj�tj|j�tj|jdd�|_|jjd�|jj�Wdtj|�Xtj	|j�}|j
}|j|d@�dS)N�?ZcreateTr�r/)rr.r1r3r!r/rrar=r�r0r�)rZ	old_umaskr4r5rrr�test_file_permsKs
	zTestMbox.test_file_permscCsdtjj�}d|d<|jd�|jj|�}|jj|�}|j|j�d�dS)Nzjohn@example.com�FromzNo newline at the endzNo newline at the end
)	rrrZset_payloadr1r=r�rr)rrrrrr�test_terminating_newline_s

z!TestMbox.test_terminating_newlinecCs�|jjd�t|j��-}|j�}|j|dd�d�WdQRX|jjd�t|j��-}|j�}|j|dd�d�WdQRXdS)NzFrom: foo

0r7z0

z
From: foo

0
r$r$)r1r=r
r/r^r)rra�datarrr�test_message_separatoris!zTestMbox.test_message_separator)r$r%r&r0r;r<r=rrcrergrrrrr`Gs
*
r`c@seZdZddd�ZdS)�TestMMDFNcCstj||�S)N)rZMMDF)rrr�rrrruxszTestMMDF.<lambda>)r$r%r&r0rrrrrhvsrhc@s�eZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�ZdS)�TestMHNcCstj||�S)N)rZMH)rrr�rrrru}szTestMH.<lambda>cCs#|jtj|j�dg�dS)Nz
.mh_sequences)rrr�r/)rrrrrSszTestMH.assertMailboxEmptycCsx|jjd�|jjd�|jjd�|jt|jj��d�|jt|jj��td��dS)Nr�rrr7)r�rr)r1rrrrr�)rrrrr�szTestMH.test_list_folderscCs�dd�}|j|j|�|_|jjd�}|jjd�}|j|jd�|jtj	j
tj	j|jd���|jjd�}|j|j
|j�d�|jd�|j|j|jj�|j|j|jj�dS)NcSsdS)Nr)r*rrrr+�sz-TestMH.test_get_folder.<locals>.dummy_factoryzfoo.barr�r)r0r/r1rrr=r>rrrrr�rrGrHr�)rr+Z
new_folderrrrrrr�s+zTestMH.test_get_foldercCs�|jjd�|jjd�|jt|jj��d�|jt|jj��td��|jjd�|jt|jj��d�|jt|jj��td��|jjd�|jt|jj��d�|jt|jj��td	��|jjd�|jt|jj��d�|jt|jj��td
��|jjd�|jt|jj��d�|j|jj�g�dS)Nr�rr6r5rr)r�r)r)rr)r)r1rrrrr�r	)rrrrr
�s %%%%z"TestMH.test_add_and_remove_foldersc
Csu|j|jj�i�tj|jd�}|jd�|jj|�}|j|jj�d|gi�tj|jd�}|jdddg�|jj|�}|j|jj�d||gd|gd|gi�|jdg�||j|<|j|jj�d|gd|gd|gd|gi�|jj	|�|j|jj�d|gi�dS)Nrrr5r��replied�flagged)
rr1�
get_sequencesrr)r>�add_sequencer=�
set_sequencesrp)rr�rtr�rxrrr�test_sequences�s"
"%
zTestMH.test_sequencescCsKtj|jd�}|jd�|jj|�}|jj|�}dS)Nrr)rr)r>rmr1r=r�)rr�rtZrefmsg0rrr�test_issue2625�s
zTestMH.test_issue2625cCsVtj|jd�}|jj|�}|jj�|jj|�|jj�dS)Nr)rr)r>r1r=r�rpr�)rr�rtrrr�test_issue7627�s

zTestMH.test_issue7627c	Cs�tj|jd�}tj|jd�}tj|jd�}tj|jd�}|jddg�|jdg�|jddg�|jddd	g�|jj|�}|jj|�}|jj|�}|jj|�}|j|jj�d||||gd|gd|gd|gd	|gi�|jj|�|j|jj�d|||gd|gd|gd	|gi�|jj	�|j|jj
�dddg�|}|d}|d}|j|jj�ddddgddgddgd	dgi�|jj|�}|jj|�}|jj|�}|jj|�}|jj|�|jj|�|jj�|jj	�|jj�|j|jj�ddddd
dgddgddgd	dgi�dS)Nrr5r6r7r�unseenrkr�rjr8r9)
rr)r>rnr1r=rrlrpZpackrHr�r�)	rr�r�r�Zmsg3rtrxrwZkey3rrr�	test_pack�sL"!
"

1


zTestMH.test_packcCstjj|jd�S)Nz.mh_sequences.lock)rrr�r/)rrrrr��szTestMH._get_lock_path)
r$r%r&r0rSrrr
rorprqrsr�rrrrri{s	,ricsIeZdZddd�Zdd�Z�fdd�Zdd	�Z�S)
�	TestBabylNcCstj||�S)N)rZBabyl)rrr�rrrruszTestBabyl.<lambda>c
Cs3t|j��}|j|j�g�WdQRXdS)N)r
r/rrI)rrarrrrSszTestBabyl.assertMailboxEmptycs\t�j�|jj�|j|j�x+tj|jd�D]}tj|�qAWdS)Nz.*)	rEr4r1r3r#r/rFrr!)rrG)rHrrr4
s


zTestBabyl.tearDowncCs]|j|jj�g�tj|jd�}|jd�|jj|�}|j|jj�dg�tj|jd�}|jdddg�|jj|�}|jt	|jj��t	ddg��|jddg�||j|<|jt	|jj��t	dddg��|jj
|�|jt	|jj��t	dg��dS)Nrrr5r��answeredZblah�filed)rr1�
get_labelsrr*r>�	add_labelr=�
set_labelsr�rp)rr�rtr�rxrrr�test_labelss
+
zTestBabyl.test_labels)r$r%r&r0rSr4rzrr)rHrrtsrtc@s(eZdZdd�Zdd�ZdS)�FakeFileLikeObjectcCs
d|_dS)NF)�closed)rrrr�__init__&szFakeFileLikeObject.__init__cCs
d|_dS)NT)r|)rrrrr3)szFakeFileLikeObject.closeN)r$r%r&r}r3rrrrr{$sr{c@s(eZdZdd�Zdd�ZdS)�FakeMailBoxcCs<tjj|ddd��dd�td�D�|_dS)Nr�cSsdS)Nr)r�rrrru0sz&FakeMailBox.__init__.<locals>.<lambda>cSsg|]}t��qSr)r{)r�rrrrr�1s	z(FakeMailBox.__init__.<locals>.<listcomp>rz)rr�r}r��files)rrrrr}/szFakeMailBox.__init__cCs|j|S)N)r)rrrrrr]3szFakeMailBox.get_fileN)r$r%r&r}r]rrrrr~-sr~c@seZdZdd�ZdS)�TestFakeMailBoxcCs�t�}x+td�D]}|j|j|j�qWxtd�D]}||qDWx+td�D]}|j|j|j�qcWdS)Nrz)r~r�r�rr|r)rr�rrrr�test_closing_fd9s	zTestFakeMailBox.test_closing_fdN)r$r%r&r�rrrrr�7sr�c@s�eZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�Zdd�Zdd�ZdS)�TestMessagecCstj|_dS)N)rr.r/)rrrrr2GszTestMessage.setUpcCs|j|j�dS)N)r#r/)rrrrr4JszTestMessage.tearDowncCs<tjt�}|j|�}|j|�|j|�dS)N)rr@r?r0�_post_initialize_hookr)r�eMMrrrr�test_initialize_with_eMMMs
z$TestMessage.test_initialize_with_eMMcCs-|jt�}|j|�|j|�dS)N)r0r?r�r)rrrrr�test_initialize_with_stringTs
z'TestMessage.test_initialize_with_stringc	Csct|jd��J}|jt�|jd�|j|�}|j|�|j|�WdQRXdS)Nzw+r)r
r/rer?rfr0r�r)rrarrrr�test_initialize_with_fileZs


z%TestMessage.test_initialize_with_filec	Csct|jd��J}|jt�|jd�|j|�}|j|�|j|�WdQRXdS)Nzwb+r)r
r/rerCrfr0r�r)rrarrrr� test_initialize_with_binary_filecs


z,TestMessage.test_initialize_with_binary_filecCs�|j�}|j|�|j|tjj�|j|tj�|j||j�|j|j�g�|j	|j
��|j|j��dS)N)
r0r�rrrrrrrHr�r
r�r)rrrrr�test_initialize_with_nothingls
z(TestMessage.test_initialize_with_nothingcs �jt�fdd��dS)Ncs�jt��S)N)r0�objectr)rrrruysz9TestMessage.test_initialize_incorrectly.<locals>.<lambda>)rZr�)rr)rr�test_initialize_incorrectlywsz'TestMessage.test_initialize_incorrectlycCsUtjt�}|jt�}x0|jD]%}|j||jdj|��q(WdS)Nz{} attribute does not exist)rr@r?r0�__dict__r�format)rr�r�attrrrr�test_all_eMM_attribues_exist{s
z(TestMessage.test_all_eMM_attribues_existcCs9tjt�}|j�}|j|�|j|�dS)N)rr@r?r0Z_become_messager)rr�rrrr�test_become_message�s
zTestMessage.test_become_messagecsh|j��x'|jD]}|���j��qWtjj��|jt��fdd��dS)Ncs
�j��S)N)�_explain_tor)r�	other_msgrrru�sz-TestMessage.test_explain_to.<locals>.<lambda>)r0r,r�rrrrZr�)rrMr)rr�r�test_explain_to�s	zTestMessage.test_explain_tocCsdS)Nr)rrrrrr��sz!TestMessage._post_initialize_hookN)r$r%r&rrr0r2r4r�r�r�r�r�r�r�r�r�r�rrrrr�Cs			
r�c@saeZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
S)�TestMaildirMessagecCs*|j|jd�|j|jd�dS)Nr�r�)rZ_subdirZ_info)rrrrrr��sz(TestMaildirMessage._post_initialize_hookcs�tjt��|j�j�d��jd�|j�j�d��jd�|j�j�d�|jt�fdd��|j�j�d��jd�|j�j�d�|j��dS)Nr�r�cs
�jd�S)Nr�)r�r)rrrru�sz0TestMaildirMessage.test_subdir.<locals>.<lambda>)	rr'r?rr�r�rZrQr)rr)rr�test_subdir�s


zTestMaildirMessage.test_subdircCstjt�}|j|j�d�|j|j�d�|jd�|j|j�d�|j|j�d�|jd�|j|j�d�|jd�|j|j�d�|jd�|j|j�d	�|j|j�d�|j	|�dS)
Nr�r��FZSDTPZDPSTZFTZDFPSTZTDRP�FS)
rr'r?rr�r�r��add_flag�remove_flagr)rrrrr�
test_flags�s



zTestMaildirMessage.test_flagscCs\tjt�}|jt|j�tj��d�|jd�|j|j�d�dS)N�<g)	rr'r?r��abs�get_dater�set_dater)rrrrr�	test_date�s&
zTestMaildirMessage.test_datecsutjt��|j�j�d��jd�|j�j�d�|jt�fdd��|j��dS)Nr�z	1,foo=barcs
�jd�S)N)r�r)rrrru�sz.TestMaildirMessage.test_info.<locals>.<lambda>)	rr'r?r�get_infor�rZr�r)rr)rr�	test_info�s
zTestMaildirMessage.test_infocCstjt�}|j|j�d�|jd�|j|j�d�|j|j�d�|jd�|j|j�d�|j|j�d�|jd�|j|j�d�|j|j�d�|j	d�|j|j�d�|j|j�d�|j
|�dS)	Nr�ZSFr�z2,FSz1,ZRPT�Dz2,D)rr'r?rr�r�r�r�r�r�r)rrrrr�test_info_and_flags�s



z&TestMaildirMessage.test_info_and_flagsN)r$r%r&rr'r0r�r�r�r�r�r�rrrrr��s		r�c@sXeZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
d�Z
d	S)�_TestMboxMMDFMessagecCs|j|�dS)N)�_check_from)rrrrrr��sz*_TestMboxMMDFMessage._post_initialize_hookcCsNtjt�}|jd�tj|�}|j|j�d|j��dS)NzFrom foo@bar blahzfoo@bar blah)rrr?Zset_unixfromr(rrJ)rrrrr�test_initialize_with_unixfrom�s
z2_TestMboxMMDFMessage.test_initialize_with_unixfromcCs�tjt�}|j|�|jd�|j|j�d�|jdd�|j|d�|jdtj��|j|d�dS)Nzfoo barzfoo@barTz	blah@temp)	rr(r?r��set_fromrrJrZ	localtime)rrrrr�	test_from�s

z_TestMboxMMDFMessage.test_fromcCs�tjt�}|j|j�d�|jd�|j|j�d�|jd�|j|j�d�|jd�|j|j�d�|jd�|j|j�d�|j|�dS)	Nr�r�ZXODRZRODXZFAZRODFAXZFDXA�RO)	rr(r?rr�r�r�r�r)rrrrrr��s



z_TestMboxMMDFMessage.test_flagsNcCs9|dkrd}|jtj|d|j���dS)Nz
MAILER-DAEMONz. \w{3} \w{3} [\d ]\d [\d ]\d:\d{2}:\d{2} \d{4})rrrrJ)rrZsenderrrrr�
s
z _TestMboxMMDFMessage._check_from)r$r%r&rZ_mboxMMDFMessager0r�r�r�r�r�rrrrr��s	r�c@seZdZejZdS)�TestMboxMessageN)r$r%r&rr(r0rrrrr�sr�c@s1eZdZejZdd�Zdd�ZdS)�
TestMHMessagecCs|j|jg�dS)N)rZ
_sequences)rrrrrr�sz#TestMHMessage._post_initialize_hookcCs�tjt�}|j|j�g�|jdg�|j|j�dg�|jg�|j|j�g�|jd�|j|j�dg�|jd�|j|j�ddg�|jd�|j|j�ddg�|jd�|j|j�dg�|jd�|j|j�ddg�|jd�|j|j�ddg�|jddg�|j|j�ddg�dS)N�foobarrrrkrj)rr)r?rrlrnrmZremove_sequence)rrrrrros(






zTestMHMessage.test_sequencesN)r$r%r&rr)r0r�rorrrrr�s	r�c@s=eZdZejZdd�Zdd�Zdd�ZdS)�TestBabylMessagecCs|j|jg�dS)N)rZ_labels)rrrrrr�;sz&TestBabylMessage._post_initialize_hookcCs�tjt�}|j|j�g�|jdg�|j|j�dg�|jg�|j|j�g�|jd�|j|j�dg�|jd�|j|j�ddg�|jd�|j|j�ddg�|jd�|j|j�dg�|jd�|j|j�ddg�|jd�|j|j�ddg�|jddg�|j|j�ddg�dS)Nr�rv�resentrrru)rr*r?rrwryrxZremove_label)rrrrrrz>s(






zTestBabylMessage.test_labelscCs{tjt�}|j�}|j|j�g�|j|j��d|d<d|d<|j|j�j�g�|j|�|j�}|j|j�ddg�|j|dd�|j|dd�|j|j��|j	�|j|j�ddg�|j|j��|j�}|j|j�dddddg�x&d	D]}|j||||�qUWdS)
Nz
FooBar 1.0�
User-AgentZBlahz
X-Whatever�Daterd�To�Subject)r�r�rdr�r�)
rr*r?�get_visiblerrHr�rZset_visible�update_visible)rrZvisible�headerrrr�test_visibleUs*





zTestBabylMessage.test_visibleN)	r$r%r&rr*r0r�rzr�rrrrr�7s	r�c@seZdZejZdS)�TestMMDFMessageN)r$r%r&rr+r0rrrrr�nsr�c@seZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+S),�TestMessageConversioncCs@x9|jD].}tjt�}||�}|j|�q
WdS)N)r,rrr?r)rrM�	msg_plainrrrr�test_plain_to_xusz%TestMessageConversion.test_plain_to_xcCs@x9|jD].}|t�}tj|�}|j|�q
WdS)N)r,r?rrr)rrMrr�rrr�test_x_to_plain|sz%TestMessageConversion.test_x_to_plaincCs1x*|jD]}|t�}|j|�q
WdS)N)r,rCr)rrMrrrr�test_x_from_bytes�sz'TestMessageConversion.test_x_from_bytescs4x-|jD]"�|jt�fdd��q
WdS)Ncs
�d�S)NFrr)rMrrru�sz9TestMessageConversion.test_x_to_invalid.<locals>.<lambda>)r,rZr�)rr)rMr�test_x_to_invalid�sz'TestMessageConversion.test_x_to_invalidc	s�dd�|jD��x�|jD]�}x�|jD]��|�krEq0|t�}�|�}��fdd��|D�}x0|D](}|j||jdj|���q�Wq0Wq WdS)NcSs"i|]}|t�j|�qSr)r?r�)r�rMrrr�
<dictcomp>�s	z]TestMessageConversion.test_type_specific_attributes_removed_on_conversion.<locals>.<dictcomp>cs&g|]}|��kr|�qSrr)r��a)�class2�	referencerrr��s	z]TestMessageConversion.test_type_specific_attributes_removed_on_conversion.<locals>.<listcomp>zwhile converting {} to {})r,r?r�r�r�)rZclass1�sourcer"Z
type_specificr�r)r�r�r�3test_type_specific_attributes_removed_on_conversion�s	
 
zITestMessageConversion.test_type_specific_attributes_removed_on_conversioncCs�tjt�}|jd�|jd�|j�}tj|�}|j|�|j|j�d�|j|j	�d�|j|j�|�dS)N�DFPRSTr�)
rr'r?r�r�r�rrr�r�)r�msg_maildirZdaterrrr�test_maildir_to_maildir�s


z-TestMessageConversion.test_maildir_to_maildircCs�d}x�tjtjfD]�}tjt�}|jd�xo|D]g\}}|j|�||�}|j|j�|�|j|j	�dt
jt
jd���qBW|j
d
�|j||�j�d�qWdS)Nr�r�r��P�R�Ar��Tr��RDFAgzMAILER-DAEMON %sr��RODFA�r�r��r�r��r�r��r�r��r�r��r�r��r�r�)r�r�r�r�r�r�r�)rr(r+r'r?r�r�rr�rJrZasctime�gmtimer�)r�pairsrMr��setting�resultrrrr�test_maildir_to_mboxmmdf�s


z.TestMessageConversion.test_maildir_to_mboxmmdfc	Cs�tjt�}ddgfdddgfddgfdddgfdgfd	dgfd
ddgff}x@|D]8\}}|j|�|jtj|�j�|�qvWdS)Nr�rrr�rkr�r�rjr�r�r�)rr'r?r�rr)rl)rr�r�r�r�rrr�test_maildir_to_mh�s$!
z(TestMessageConversion.test_maildir_to_mhc
Cs�tjt�}ddgfddgfdddgfdddgfdgfd	dd
gfdd
ddgff}x@|D]8\}}|j|�|jtj|�j�|�q|WdS)Nr�rrr�r��	forwardedr�rur�r��deletedr�)rr'r?r�rr*rw)rr�r�r�r�rrr�test_maildir_to_babyl�s
z+TestMessageConversion.test_maildir_to_babylcCs�x�tjtjfD]�}|t�}|jdtjd��d}x\|D]T\}}|j|�tj|�}|j	|j
�|�|j	|j�d�qKW|jd�|j	tj|�j�d
�qWdS)Nzfoo@bargr�r��Or�r�r�r�r�r��FRSTr��r�r��r�r��r�r��r�r��r�r��r�r�)r�r�r�r�r�r�)
rr(r+r?r�rr�r�r'rr�r�r�)rrM�msg_mboxMMDFr�r�r�rrrr�test_mboxmmdf_to_maildir�s

z.TestMessageConversion.test_mboxmmdf_to_maildircCs�x�tjtjfD]�}|t�}|jd�|jd�xRtjtjfD]>}||�}|j|j�d�|j|j�d�qRWqWdS)Nr�zfoo@bar)	rr(r+r?r�r�rr�rJ)rrMr�Zclass2_r�rrr�test_mboxmmdf_to_mboxmmdf�s

z/TestMessageConversion.test_mboxmmdf_to_mboxmmdfc	Cs�x�tjtjfD]�}|t�}dgfddgfddgfdddgfdddgfd	ddgff}x@|D]8\}}|j|�|jtj|�j�|�q�WqWdS)
Nr�r�rrr�r�rkr�rjr�)rr(r+r?r�rr)rl)rrMr�r�r�r�rrr�test_mboxmmdf_to_mh�s!
z)TestMessageConversion.test_mboxmmdf_to_mhc	Cs�x�tjtjfD]�}|t�}dgfddgfdddgfddgfdddgfd	ddgff}x@|D]8\}}|j|�|jtj|�j�|�q�WqWdS)
Nr�r�rrr�r�r�r�rur�)rr(r+r?r�rr*rw)rrMrr�r�r�rrr�test_mboxmmdf_to_babyl�s
z,TestMessageConversion.test_mboxmmdf_to_babylcCs�d}xn|D]f\}}tjt�}|j|�|jtj|�j�|�|jtj|�j�d�q
Wtjt�}|jd�|jd�|jd�|jtj|�j�d�|jtj|�j�d�dS)
Nrrr�rj�RSrkr�r�r��rrr��rjr��rkr�)r�r�r�)rr)r?rmrr'r�r�)rr�r�r�rrrr�test_mh_to_maildirs
#


z(TestMessageConversion.test_mh_to_maildircCs�d}xi|D]a\}}tjt�}|j|�x6tjtjfD]"}|j||�j�|�qHWq
Wtjt�}|jd�|jd�|jd�x6tjtjfD]"}|j||�j�d�q�WdS)Nrrr�rj�ROArk�ROFZOFA�rrr��rjr��rkr�)r�r�r�)rr)r?rmr(r+rr�)rr�r�r�rrMrrr�test_mh_to_mboxmmdfs
$


z)TestMessageConversion.test_mh_to_mboxmmdfcCsbtjt�}|jd�|jd�|jd�|jtj|�j�dddg�dS)Nrrrjrk)rr)r?rmrrl)rrrrr�
test_mh_to_mh"s


z#TestMessageConversion.test_mh_to_mhcCs�ddgfddgfdgff}xO|D]G\}}tjt�}|j|�|jtj|�j�|�q.Wtjt�}|jd�|jd�|jd�|jtj|�j�ddg�dS)Nrrrjrurk)rr)r?rmrr*rw)rr�r�r�rrrr�test_mh_to_babyl+s
#


z&TestMessageConversion.test_mh_to_babylcCs�d}xn|D]f\}}tjt�}|j|�|jtj|�j�|�|jtj|�j�d
�q
Wtjt�}xdD]}|j|�q�W|jtj|�j�d�|jtj|�j�d
�dS)Nrrr�r��STrvr�rur�r��PS�editedr�r�ZPRT�rrr��r�r��rvr��rur��r�r��r�r��r�r�)r�r�r�r�r�r�r)rrr�rvrur�r�r�)rr*r?rxrr'r�r�)rr�r�r�r�labelrrr�test_babyl_to_maildir:s
#
z+TestMessageConversion.test_babyl_to_maildircCs�d}xi|D]a\}}xRtjtjfD]>}tjt�}|j|�|j||�j�|�q,Wq
Wtjt�}xdD]}|j|�q�Wx6tjtjfD]"}|j||�j�d�q�WdS)Nrrr�r��RODrvr�rur�r�r�r�ZODA�rrr��r�r�rvr��rur��r�r��r�r��r�r�)rrrrrr	r
)rrr�rvrur�r�r�)rr(r+r*r?rxrr�)rr�r�r�rMrrrrr�test_babyl_to_mboxmmdfKs
$
z,TestMessageConversion.test_babyl_to_mboxmmdfcCs�ddgfdgfdgfddgfdgfdgfdgff}xO|D]G\}}tjt�}|j|�|jtj|�j�|�qRWtjt�}xd	D]}|j|�q�W|jtj|�j�ddg�dS)
Nrrr�rvrurjr�r�r�)rrr�rvrur�r�r�)rr*r?rxrr)rl)rr�r�r�rrrrr�test_babyl_to_mh\s
#
z&TestMessageConversion.test_babyl_to_mhc	Cs�tjt�}|j�xdD]}|j|�q Wtj|�}|j|j�dddddddg�|j|j�j�|j�j��x>|j�j�D]*}|j|j�||j�|�q�WdS)	Nrrr�rvrur�r�r�)rrr�rvrur�r�r�)	rr*r?r�rxrrwr�rH)rrrr�rrrr�test_babyl_to_babylls

	
(z)TestMessageConversion.test_babyl_to_babylN)r$r%r&r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr
rrrrr�ss*
	r�c@sXeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestProxyFileBasecCs�|jd�|j|j�d�|jd�|j|j�d�|jd�|j|jd�d�|jd�|j|jd	�d�|jd�|j|jd�d�dS)
Nrsbarr5sarr6sbai��r���)rfrr^)r�proxyrrr�
_test_read~s




zTestProxyFileBase._test_readcCs7tjj�}|jd�|j|j�d|�|j|j�d|�|j|j�d|�|j|j�d�|jd�|j|j�d|�|jddttj��|j|j�d|�|jddttj��|j|jd�d	�|j|jd�d|�dS)
Nrsfoosbarsfredsbobr6�or:sfrrzsedi����)rr`rKrfr�readliner)rrr`rrr�_test_readline�s

z TestProxyFileBase._test_readlinecCs�tjj�}|jd�|j|j�d|d|d|dg�|jd�|j|jd�d|g�|jdt|��|j|jdt|��d|d|g�|jd�|j|jd	�|d|d|dg�dS)
Nrsfoosbarsfredsbobr6r7r8i�)rr`rKrfrrIr)rrr`rrr�_test_readlines�s

 
z!TestProxyFileBase._test_readlinescCs�tjj�}|jd�t|�}|jt|�d|�|jt|�d|�|jt|�d|�|jt|�d�|jtt|�dS)Nrsfoosbarsfredsbob)	rr`rKrf�iterr�nextrZ�
StopIteration)rrr`�iteratorrrr�_test_iteration�s
z!TestProxyFileBase._test_iterationcCstjj�}|jd�|j|j�d�|j|jt|��|�|jdd�|j|jdt|��d|�|jd	t|�d�|j|jd�d�|jdd�|j|j�d|d|�|jd�|j|j��dS)
Nr7r6r5rsbarrr�dr$)	rr`rKrfr�tellr^rr�)rrr`rrr�_test_seek_and_tell�s
'"
z%TestProxyFileBase._test_seek_and_tellcCsH|j|j�|j�|j|j�|j�|j|j�dS)N)r�r|r3r)rrrrr�_test_close�s


zTestProxyFileBase._test_closeN)	r$r%r&rrrrrrrrrrr|s
rc@s|eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�
TestProxyFilecCs%tj|_t|jd�|_dS)Nzwb+)rr.r/r
rS)rrrrr2�szTestProxyFile.setUpcCs!|jj�|j|j�dS)N)rSr3r#r/)rrrrr4�s
zTestProxyFile.tearDowncCs�|jjd�|jj�}tj|j�}|j|j�|�|j|jj�|�tj|jd�}|j|j�d�|j|jj�|�dS)Nsfoor)rSrerr�
_ProxyFiler)r�posZproxy0Zproxy1rrr�test_initialize�szTestProxyFile.test_initializecCs-|jjd�|jtj|j��dS)Nsbar)rSrerrr!)rrrr�	test_read�szTestProxyFile.test_readcCsL|jjtdtjtjtjfd��|jtj|j��dS)Nzfoo%sbar%sfred%sbobr�)rSre�bytesrr`rrr!)rrrr�
test_readline�szTestProxyFile.test_readlinecCsL|jjtdtjtjtjfd��|jtj|j��dS)Nzfoo%sbar%sfred%sbobr�)rSrer%rr`rrr!)rrrr�test_readlines�szTestProxyFile.test_readlinescCsL|jjtdtjtjtjfd��|jtj|j��dS)Nzfoo%sbar%sfred%sbobr�)rSrer%rr`rrr!)rrrr�test_iteration�szTestProxyFile.test_iterationcCsF|jjtdtjtjfd��|jtj|j��dS)Nz
foo%sbar%sr�)rSrer%rr`rrr!)rrrr�test_seek_and_tell�s)z TestProxyFile.test_seek_and_tellcCsF|jjtdtjtjfd��|jtj|j��dS)Nz
foo%sbar%sr�)rSrer%rr`rrr!)rrrrr��s)zTestProxyFile.test_closeN)r$r%r&r2r4r#r$r&r'r(r)r�rrrrr �sr c@s|eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestPartialFilecCs%tj|_t|jd�|_dS)Nzwb+)rr.r/r
rS)rrrrr2szTestPartialFile.setUpcCs!|jj�|j|j�dS)N)rSr3r#r/)rrrrr4s
zTestPartialFile.tearDowncCs~|jjtdtjdd��|jj�}tj|jdd�}|j|j�d�|j|jj�|�dS)Nrr�r�r6r9r)	rSrer%rr`rr�_PartialFiler)rr"rrrrr#
s
$zTestPartialFile.test_initializecCs<|jjtdd��|jtj|jdd��dS)Nz	***bar***r�r7r:)rSrer%rrr+)rrrrr$szTestPartialFile.test_readcCsc|jjtdtjtjtjfd��|jtj|jdddttj���dS)Nz!!!!!foo%sbar%sfred%sbob!!!!!r�r9�r7)	rSrer%rr`rrr+r)rrrrr&s zTestPartialFile.test_readlinecCsc|jjtdtjtjtjfd��|jtj|jdddttj���dS)Nzfoo%sbar%sfred%sbob?????r�r�
r7)	rSrer%rr`rrr+r)rrrrr's zTestPartialFile.test_readlinescCsc|jjtdtjtjtjfd��|jtj|jdddttj���dS)Nz____foo%sbar%sfred%sbob####r�r8�r7)	rSrer%rr`rrr+r)rrrrr("s zTestPartialFile.test_iterationcCs]|jjtdtjtjfd��|jtj|jdddttj���dS)Nz(((foo%sbar%s$$$r�r7�	r6)	rSrer%rr`rrr+r)rrrrr)(s)z"TestPartialFile.test_seek_and_tellcCs]|jjtdtjtjfd��|jtj|jdddttj���dS)Nz&foo%sbar%s^r�r5r:r7)	rSrer%rr`rrr+r)rrrrr�-s)zTestPartialFile.test_closeN)r$r%r&r2r4r#r$r&r'r(r)r�rrrrr*s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@sgeZdZdd�Zdd�Zddd�Zdd	�Zd
d�Zdd
�Zdd�Z	dS)�MaildirTestCasecCs�tj|_tjj|j�r4tj|j�n%tjj|j�rYtj|j�tj	|j�tj	tjj
|jd��tj	tjj
|jd��tj	tjj
|jd��d|_g|_dS)Nr�r�r�r5)
rr.�_dirrrrr�isfiler!r�r��_counter�	_msgfiles)rrrrr2@s	zMaildirTestCase.setUpcCs�tttj|j��tjtjj|j	d��tjtjj|j	d��tjtjj|j	d��tj|j	�dS)Nr�r�r�)
r��maprr!r4r�rmdirrr�r1)rrrrr4Ns
zMaildirTestCase.tearDownFc	Cs0ttj�d�}|j}|jd7_djt|�t|�ddf�}tjj|jd|�}tjj|j||�}t|d��7}|j	j
|�|r�|jt�|jt
�WdQRXttd�r�tj||�n&t|d��}|jt
�WdQRX|j	j
|�|S)	Ni@Br5�.Z
myhostnameZmydomainr�r�link)r�rr3r��strrrr1r
r4r<re�FROM_�
DUMMY_MESSAGEr=r8)	r�dirra�trr9ZtmpnameZnewname�fprrr�
createMessageUs"	'
zMaildirTestCase.createMessagecCsEtjtj�|_|j|jj��|j|jj��dS)zTest an empty maildir mailboxN)rr�rr.rar�r)rrrr�test_empty_maildirisz"MaildirTestCase.test_empty_maildircCsh|jd�tjtj�|_|j|jj��|j|jj��|j|jj��dS)Nr�)	r?rr�rr.rarrr�)rrrr�test_nonempty_maildir_curss

z)MaildirTestCase.test_nonempty_maildir_curcCsh|jd�tjtj�|_|j|jj��|j|jj��|j|jj��dS)Nr�)	r?rr�rr.rarrr�)rrrr�test_nonempty_maildir_new{s

z)MaildirTestCase.test_nonempty_maildir_newcCs�|jd�|jd�tjtj�|_|j|jj��|j|jj��|j|jj��|j|jj��dS)Nr�r�)	r?rr�rr.rarrr�)rrrr�test_nonempty_maildir_both�s

z*MaildirTestCase.test_nonempty_maildir_bothN)
r$r%r&r2r4r?r@rArBrCrrrrr0>s
r0aKReturn-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�zReturn-Pathz<gkj@gregorykjohnson.com>z
X-Original-Tozgkj+person@localhostzDelivered-ToZReceivedz�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)z gkj@sundance.gregorykjohnson.comz�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)z�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)ztby andy.gregorykjohnson.com (Postfix, from userid 1000)
        id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)r�zWed, 13 Jul 2005 17:23:11 -0400rdz."Gregory K. Johnson" <gkj@gregorykjohnson.com>r�zgkj@gregorykjohnson.comr�zSample messagezMime-Versionz1.0zContent-Typez,multipart/mixed; boundary="NMuMz9nt05w80d4+"zContent-DispositionZinlinez
User-AgentzMutt/1.5.9iz1This is a sample message.

--
Gregory K. Johnson
zRH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs
3FYlAAAA
cCsTtttttttttt	t
ttt
tttf}tj|�tj�dS)N)r�r�r`rhrirtr�r�r�r�r�r�r�r r*r0r�rZrun_unittestZ
reap_children)Ztestsrrr�	test_main�s		
rD�__main__)7rr�rr�rrZ
email.messagerrAZshutilrcZtestrr;r�rrFZfcntl�ImportErrorrr-ZTestCaser�r�r>rDr`rhrirtr{r�r~r�r�r�r�r�r�r�r�r�rr r*r:r;r0r?rKrCr	rrDr$rrrr�<module>s�
��$�^)p/�"	
VJ07�
S15