Your IP : 216.73.216.213


Current Path : /opt/alt/python39/lib64/python3.9/test/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/test/__pycache__/test_mailbox.cpython-39.pyc

a

XC?h@n�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlZddl
Z
ddlZddlZGdd�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�ZGdd�dej�ZGdd�deej�ZGdd �d eej�Z Gd!d"�d"�Z!Gd#d$�d$e!e�Z"Gd%d&�d&eej�Z#Gd'd(�d(ee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,d7Z-e-�.d8�Z/d9d:d:d;d<d=d>d?d@dAdBdCdDdEdFdGdH�Z0dIZ1GdJdK�dKej�Z2dLdM�Z3e4dNk�r�e�5�dS)O�N)�supportc@s8eZdZejejejejejej	fZ
dd�Zdd�ZdS)�TestBasecCs�|�|tjj�|�|tj�t��D]\}}|�||�|��q&|�	|�
��|�t|�
��tt��tt�D]@\}}|�
|�}|�|tjj�|�|tj�|�|�
�|�qpdS�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/python39/lib64/python3.9/test/test_mailbox.py�
_check_samples
zTestBase._check_samplecCs2tj�|�rt�|�ntj�|�r.t�|�dSr)�os�path�isdirr�rmtree�exists�unlink)r�targetrrr�_delete_recursively&szTestBase._delete_recursivelyN)
�__name__�
__module__�__qualname__r	r�MaildirMessage�mboxMessage�	MHMessage�BabylMessage�MMDFMessage�all_mailbox_typesrr$rrrrrs�rc@s�eZdZdZdZdZdd�Zdd�Zdd�Ze	�
d	�Zd
d�Zdd
�Z
dd�Zdd�Ze	�
d��d�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zdcd'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)dddEdF�Z*dGdH�Z+dedIdJ�Z,dKdL�Z-dfdMdN�Z.dOdP�Z/dgdQdR�Z0dSdT�Z1dUdV�Z2dWdX�Z3dYdZ�Z4d[d\�Z5d]d^�Z6d_d`�Z7dadb�Z8dS)h�TestMailboxNzFrom: foo

%s
cCs&tj|_|�|j�|�|j�|_dSr)r�TESTFN�_pathr$�_factory�_box�rrrr�setUp5szTestMailbox.setUpcCs|j��|�|j�dSr)r2�closer$r0r3rrr�tearDown:s
zTestMailbox.tearDownc
Cs�g}|�|j�|jd��|�t|j�d�|�|j�t�t���|�t|j�d�|�|j�t	�
t���|�t|j�d�|�|j�t�t
���|�t|j�d�|�|j�t��|�t|j�d�|�|j�t
��|�t|j�d�|�t��.|�|j�t�t�t
����Wd�n1�s40Y|�t|j�d�|�|j�|d�|jd�d	D]}|�|j||��qrdS)
Nr�������)r7r8r9r:r;r<)�appendr2�add�	_templaterrr	r�_sample_messager�message_from_string�io�BytesIO�_bytes_sample_message�assertWarns�DeprecationWarning�
TextIOWrapper�
get_stringr)r�keysrrrr�test_add>s*
�&zTestMailbox.test_addu{            From: foo
            Subject: Falinaptár házhozszállítással. Már rendeltél?

            0
            cCsF|j�|j�d��}|�t|j�d�|�|j�|�|j�d��dS)N�latin-1r7)r2r?�
_nonascii_msg�encoderr�	get_bytes�rrrrr�"test_add_invalid_8bit_bytes_header\s

�z.TestMailbox.test_add_invalid_8bit_bytes_headercCs8|j��d}|j�|�d��}|�|j�|�d�dS)Nr7rLzZSubject: =?unknown-8bit?b?RmFsaW5hcHThciBo4Xpob3pzeuFsbO104XNzYWwuIE3hciByZW5kZWx06Ww/?=

)rM�
splitlinesr2r?rNrrI)rZsubjrrrr�&test_invalid_nonascii_header_as_stringbs
�z2TestMailbox.test_invalid_nonascii_header_as_stringcCsb|�td��|j�|j�Wd�n1s00Y|j��|�t|j�d�|��dS�Nz
ASCII-onlyr)	�assertRaisesRegex�
ValueErrorr2r?rM�flushrr�assertMailboxEmptyr3rrr�&test_add_nonascii_string_header_raisesis
,
z2TestMailbox.test_add_nonascii_string_header_raisescCs�dd�}t�|tjjd|�|�t��"|j�t�	d��Wd�n1sN0Y|�
t|j�d�|j��|�
�dS)Nc_std��dS)Nza fake error)�	Exception)�args�kwrrr�raiserqszETestMailbox.test_add_that_raises_leaves_mailbox_empty.<locals>.raiserZflattenuFrom: Alphösor)rZpatchr�	generatorZBytesGenerator�assertRaisesrZr2r?rBrrr5rX)rr]rrr�)test_add_that_raises_leaves_mailbox_emptyps0
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�|j�|j�}|�|j�|�|j�|j�|��0}|�|��|j�dtj	�
���Wd�n1sf0Y|�|j|��d�dS)N�
uДа, они летят.
)r2r?�_non_latin_bin_msgrrO�get_file�read�replacer�lineseprNr�rr�frrr�test_add_8bit_body�s�
��"�zTestMailbox.test_add_8bit_bodycCsnt�d��0}|�t�|�d�|j�|�}Wd�n1s@0Y|�|j�|��	d�t�	d��dS�N�wb+rra)
�tempfile�
TemporaryFile�writerE�seekr2r?rrO�split�rrhrrrr�test_add_binary_file�s

*�z TestMailbox.test_add_binary_filecCsrt�d��2}|�|j�|�d�|j�|�}Wd�n1sB0Y|�|j�|��	d�|j�	d��dSrj)
rlrmrnrbror2r?rrOrprqrrr�test_add_binary_nonascii_file�s
*
�z)TestMailbox.test_add_binary_nonascii_filec	Cs�t�d��Z}|�t�|�d�|�t��|j�|�}Wd�n1sL0YWd�n1sj0Y|�	|j�
|��d�t�d��dS)N�w+rra)
rlrmrnrArorFrGr2r?rrOrprErqrrr�test_add_text_file_warns�s

H�z$TestMailbox.test_add_text_file_warnscCs`|�t��(|j�t�|jd��}Wd�n1s80Y|�|j�|�|jd�dS)N�0)	rFrGr2r?rC�StringIOr@rrIrPrrr�test_add_StringIO_warns�s6z#TestMailbox.test_add_StringIO_warnsc	Cs�|�t��P|�td��$|j�t�|j��Wd�n1sB0YWd�n1s`0Y|�	t
|j�d�|j��|��dSrT)
rFrGrUrVr2r?rCrwrMrrr5rXr3rrr�!test_add_nonascii_StringIO_raises�sP
z-TestMailbox.test_add_nonascii_StringIO_raisescCs|�|jj�dSr)�_test_remove_or_delitemr2�remover3rrr�test_remove�szTestMailbox.test_removecCs|�|jj�dSr)rzr2�__delitem__r3rrr�test_delitem�szTestMailbox.test_delitemcsd�j��jd���j��jd����t�j�d������t�j�d���t��fdd����t��fdd�����j����jd��j��jd����t�j�d������t�j�d���t��fdd����t��fdd�����j����jd������t�j�d���t��fd	d����t��fd
d��dS)Nrr7r8cs
�j�Sr�r2r��key0rrr�<lambda>��z5TestMailbox._test_remove_or_delitem.<locals>.<lambda>cs���Srrr)r��methodrrr��r�cs
�j�Srrr)�key2rrrr��r�cs���Srrr)r�r�rrr��r�cs
�j�Srrr)�key1rrrr��r�cs���Srrr)r�r�rrr��r�)r2r?r@rrr_�KeyErrorrI)rr�r)r�r�r�r�rrrz�s&z#TestMailbox._test_remove_or_delitem�
cs��j��jd���j��jd�}��t�j�d��j�����t�j�d���t��fdd���j�����t�j�d���t��fdd��dS)Nrr7r8cs
�j�Srrrr�rrr��r�z*TestMailbox.test_discard.<locals>.<lambda>cs
�j�Srrrr�rrr��r�)r2r?r@rr�discardr_r�)r�repetitionsr�rr�r�test_discard�szTestMailbox.test_discardcCs�|j�|jd�}|j�|�}|�|dd�|�|��d�|�|j�d��|�|j�dd�d�|j��|�	|j
�|_|j�|jd�}|j�|�}|�|dd�|�|��d�dS)Nr�from�foo�0
Fr7�1
)r2r?r@�getrr�assertIsNone�assertIsr5r1r0)rr�rr�rrr�test_get�s
zTestMailbox.test_getcsv�j��jd���j�}��|dd���|��d���t�fdd���j�����t��fdd��dS)Nrr�r�r�cs
�jdS�Nr�rrr3rrr��r�z*TestMailbox.test_getitem.<locals>.<lambda>cs
�j�Srrrr�rrr��r�)r2r?r@rrr_r�r��rrrr�r�test_getitem�s
zTestMailbox.test_getitemcCsn|j�|jd�}|j�t�}|j�|�}|�|tj�|�|dd�|�|�	�d�|�
|j�|��dS)Nrr�r�r�)r2r?r@rA�get_messagerr	rrrr)rr�r��msg0rrr�test_get_message�szTestMailbox.test_get_messagecCsV|j�|jd�}|j�t�}|�|j�|�|jd�d��|�|j�|�t�dS)Nr�ascii�r2r?r@rArrOrNrE�rr�r�rrr�test_get_bytess�zTestMailbox.test_get_bytescCs\|j�|jd�}|j�t�}|�|j�|�|jd�|�|j�|��d�t�d��dS)Nr�
�r2r?r@rArrIrpr�rrr�test_get_strings�zTestMailbox.test_get_stringcCs�|j�|jd�}|j�t�}|j�|��}|��}Wd�n1sH0Y|j�|��}|��}Wd�n1s|0Y|�|�d��t	j
d�|jd�|�|�d��t	j
d�t�dS)Nrr�r�)r2r?r@rArcrdr�decodererrf)rr�r��fileZdata0Zdata1rrr�
test_get_files&&��zTestMailbox.test_get_filecCs,|j�t�}|j�|�}|��|��dSr)r2r?rArcr5rgrrr�!test_get_file_can_be_closed_twice!sz-TestMailbox.test_get_file_can_be_closed_twicecCs|j|jjddd�dS�NTF��do_keys�	do_values)�_check_iterationr2�iterkeysr3rrr�
test_iterkeys(szTestMailbox.test_iterkeyscCs|j|jjddd�dSr�)r�r2rJr3rrr�	test_keys,szTestMailbox.test_keyscCs|j|jjddd�dS�NFTr�)r�r2�
itervaluesr3rrr�test_itervalues0s�zTestMailbox.test_itervaluescCs|j|jjddd�dSr�)r�r2�__iter__r3rrr�	test_iter5s�zTestMailbox.test_itercCs|j|jjddd�dSr�)r�r2�valuesr3rrr�test_values:szTestMailbox.test_valuescCs|j|jjddd�dS�NTr�)r�r2�	iteritemsr3rrr�test_iteritems>s�zTestMailbox.test_iteritemscCs|j|jjddd�dSr�)r�r2rr3rrr�
test_itemsCszTestMailbox.test_itemsc
Cs,|�D]}|�d�qgg}}t|�D],}|�|j�|j|��|�|j|�q(|rj|sjt|��}	nB|r~|s~t|��}
n.gg}	}
|�D]\}}|	�|�|
�|�q�|r�|�t|�t|	��|�t	|�t	|	��|�r(d}|
D]0}|�|dd�|�
t|���|�|d7}q�|�t|�|�dS)Nz	Not emptyrr�r�r7)
Zfail�ranger>r2r?r@�listrr�set�
assertLess�intr)
rr�r�r�r�rrJr�rZ
returned_keysZreturned_valuesr�countrrrr�Gs0




zTestMailbox._check_iterationcCs�|�d|j�|j�|jd�}|�||j�|�d|j�|j�|jd�}|�||j�|�||j�|�d|j�|j�|�|�||j�|�||j�|�d|j�|j�|�|�||j�|�||j�|�d|j�dS)Nr�rr7)�assertNotInr2r?r@rr{r�rrr�
test_containsbs zTestMailbox.test_containscCs�g}t|�D]D}|�t|j�|�|�|j�|j|��|�t|j�|d�qt|�D]D}|�t|j�||�|j�||�|�t|j�||d�qZdS)Nr7)r�rrr2r>r?r@r{)rr�rJrrrr�test_lenuszTestMailbox.test_lencs^�j��jd�}���j�|��jd��j��jd�}���j�|��jd��jd�j|<���j�|��jd��jd�j|<���j�|��jd�t�j|<���j|��j|�j|<���j|��jd�j|<���j�|��jd����j|���t�fdd����t�fdd����t	�j�d�dS)	N�
original 0�
original 1�	changed 0�	changed 1cs�j�dd�S)Nr��bar)r2�__setitem__rr3rrr��r�z+TestMailbox.test_set_item.<locals>.<lambda>cs
�jdSr�rrr3rrr��r�r8)
r2r?r@rrIrArr_r�rr�rr3r�
test_set_item�s<����
�
�zTestMailbox.test_set_itemcs�g}t|�D]}�j��j|�qt|�D]"\}����j����j|�q,�j����t�j�d�t|�D]\}���	t
��fdd��qtdS)Nrcs�j���Sr)r2rIr�rrrrr��r�z(TestMailbox.test_clear.<locals>.<lambda>)r�r2r?r@rrrI�clearrr_r�)r�
iterationsrJrrr�r�
test_clear�s
zTestMailbox.test_clearcCs|j�|jd�}|�||j�|j�|jd�}|�||j�|�|j�|���d�|�||j�|�||j�|j�|jd�}|�||j�|�|j�|���d�|�||j�|�||j�|�|j�|���d�|�||j�|�t|j�d�dS)Nrr7r�r8z2
r�)	r2r?r@rr�poprr�r�rr�r�r�rrr�test_pop�szTestMailbox.test_popcs�g}td�D]}|��j��j|��qg}td�D]N}�j��\�}���|����|�|�����t	|�
��|����q6��t�j�d�|D]���
t��fdd��q�dS)Nr�rcs
�j�Srrrr�rrr��r�z*TestMailbox.test_popitem.<locals>.<lambda>)r�r>r2r?r@�popitemrr�rr�r�indexrr_r�)rr�rJr�seenrrr�r�test_popitem�s
zTestMailbox.test_popitemcs��j��jd���j��jd�}�j��jd�}�j���jd|ti���t�j�d����j����jd����j�|��jd����j|��j�|�jdf|�jdf��jdfg���t�j�d����j����jd����j�|��jd����j�|��jd���	t
��fdd	����t�j�d����j����jd����j�|��jd����j�|��jd�dS)
Nr�r�z
original 2r�r9z	changed 2r�cs�j�dd��jdi�S)Nr�r�r�)r2�updater@rr�rrr��s

�z)TestMailbox.test_update.<locals>.<lambda>)r2r?r@r�rArrrIrr_r�)rr�r�rr�r�test_update�sR�����������zTestMailbox.test_updatecCs|�|jjd�dS�NT)�_test_flush_or_closer2rWr3rrr�
test_flush�szTestMailbox.test_flushcCsZ|j�|jd�|j�|jd�|j��|j��|j��|j��|j��dS�Nrr7)r2r?r@rWr�r3rrr�test_popitem_and_flush_twice�s



z(TestMailbox.test_popitem_and_flush_twicecCsZ|�tj�|����|j��|�tj�|����|j��|�tj�|����dSr)	�assertFalserrr!�_get_lock_pathr2�lockr
�unlockr3rrr�test_lock_unlock�s


zTestMailbox.test_lock_unlockcCs|�|jjd�dS�NF)r�r2r5r3rrr�
test_closeszTestMailbox.test_closecs��fdd�td�D�}�j�|d��j�|d��j�|d��j}|�|r`�j�����j��_�j��}��t|�d�|D]}��	�j�
|�|�q�|��dS)Ncsg|]}�j|�qSr�r@��.0rr3rr�
<listcomp>r�z4TestMailbox._test_flush_or_close.<locals>.<listcomp>r9rr7r8)r�r2r?r5r1r0rJrrrrI)rr�Zshould_call_close�contentsZoldboxrJrrr3rr�s

z TestMailbox._test_flush_or_closec	srt�t�tt�t�fD]8}t����j�|������	�t�
dtj�
���qt�����t��fdd��dS)Nracs�j�d��Sr)r2�
_dump_messager��outputrrrr�!r�z/TestMailbox.test_dump_message.<locals>.<lambda>)rrBrArCrDrEr2r�r�getvaluererrfrNr_�	TypeError)r�inputrr�r�test_dump_messages
�
��zTestMailbox.test_dump_messagecCs
|jdS)Nz.lock)r0r3rrrr�#szTestMailbox._get_lock_path)r�)r�)r�)r�)r�)9r%r&r'ZmaxDiffr1r@r4r6rK�textwrap�dedentrMrQrSrYr`rNrbrirrrsrurxryr|r~rzr�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..sj



�	







"r.c@seZdZdd�ZdS)�TestMailboxSuperclasscsRt�d��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fd	d��|�t�fd
d��|�t�fdd��|�t�fdd��|�t�fd
d��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��|�t�fdd��dS) Nrcs
��d�S�N�)r?r��boxrrr�-r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>cs
��d�Sr�)r{rr�rrr�.r�cs
��d�Sr�)r}rr�rrr�/r�cs
��d�Sr�)r�rr�rrr�0r�cs��dd�Sr�)r�rr�rrr�1r�cs���Sr)r�rr�rrr�2r�cs���Sr)rJrr�rrr�3r�cs�����Sr)r��__next__rr�rrr�4r�cs�����Sr)r�r�rr�rrr�5r�cs���Sr)r�rr�rrr�6r�cs�����Sr)r�r�rr�rrr�7r�cs���Sr)rrr�rrr�8r�cs
��d�Sr�)r�rr�rrr�9r�cs
��d�Sr�)�__getitem__rr�rrr�:r�cs
��d�Sr�)r�rr�rrr�;r�cs
��d�Sr�)rIrr�rrr�<r�cs
��d�Sr�)rOrr�rrr�=r�cs
��d�Sr�)rcrr�rrr�>r�csd�vSr�rrr�rrr�?r�cs
��d�Sr�)�__contains__rr�rrr�@r�cs���Sr)�__len__rr�rrr�Ar�cs���Sr)r�rr�rrr�Br�cs
��d�Sr�)r�rr�rrr�Cr�cs���Sr)r�rr�rrr�Dr�cs
��d�S)N))r�r�)r�rr�rrr�Er�cs���Sr)rWrr�rrr�Fr�cs���Sr)r�rr�rrr�Gr�cs���Sr)r�rr�rrr�Hr�cs���Sr)r5rr�rrr�Ir�)r	�Mailboxr_�NotImplementedErrorr3rr�r�test_notimplemented*s<
z)TestMailboxSuperclass.test_notimplementedN)r%r&r'r�rrrrr�(sr�c@s�eZdZd5dd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zd6dd�Zdd�Z
dd�Zdd�Zdd�Zd7dd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Ze�eed-�d.�d/d0��Ze�eed-�d.�d1d2��Zd3d4�ZdS)8�TestMaildirNcCst�||�Sr)r	�Maildir�rr�factoryrrrr�Nr�zTestMaildir.<lambda>cCs*t�|�tjdkstjdkr&d|j_dS)N�nt�cygwin�!)r.r4r�name�sys�platformr2�colonr3rrrr4Ps
zTestMaildir.setUpcCs"|�t�tj�|jd��g�dS�N�tmp)rr�listdirr�joinr0r3rrrrXUszTestMaildir.assertMailboxEmptycCs`t�|jd�}|�d�|�d�|j�|�}|�tj	�
tj	�|jdd||jj
f���dS)Nr�curr�z%s%sfoo)r	r(r@�
set_subdir�set_infor2r?r
rrr!r	r0r)rrrrrr�test_add_MMXs


�zTestMaildir.test_add_MMcCsnt�|jd�}|�d�|�d�|j�|�}|j�|�}|�|tj�|�	|�
�d�|�	|��d�dS)Nrr
�RF�FR)r	r(r@r�	set_flagsr2r?r�rr�
get_subdir�	get_flags)rrr�msg_returnedrrr�test_get_MMas

zTestMaildir.test_get_MMcCst�|jd�}|�d�|j�|�}|j�|�}|�|��d�|�|�	�d�t�|jd�}||j|<|j�|�}|�|��d�|�|�	�d�|�|�
�d�t�|jd�}|�d	�||j|<|jd
|j|<|j�|�}|�|��d�|�|�	�d�|�|�
�d�dS)
NrZTP�newZPTr7r�r�r8z2,Sr9�Sz3
)r	r(r@rr2r?r�rrrrr)rr�rr�msg1�msg2rrr�test_set_MMls(



zTestMaildir.test_set_MMcCsvt�|jd�}|�d�|�d�|j�|�}Gdd�dtj�}tj|j|d�}|jj	|_	|�
|�}|�||�dS)Nrr
rc@seZdZdS)z8TestMaildir.test_consistent_factory.<locals>.FakeMessageN)r%r&r'rrrr�FakeMessage�sr�r�)r	r(r@rrr2r?r�r0rr�r)rrrrr�rrrr�test_consistent_factory�s



z#TestMaildir.test_consistent_factorycCsH|��t�|j�|_|��|�|j�|j|jdd�|_|��dS)Nr)r6r	r�r0r2�
_check_basicsr$r1r3rrr�test_initialize_new�szTestMaildir.test_initialize_newc	CsJ|��dD]"}t�tj�tj�|j|���qt�|j�|_	|�
�dS)N�r�rrr
)r6r�mkdirr�normpathr	r0r	r�r2r)r�subdirrrr�test_initialize_existing�s
 z$TestMaildir.test_initialize_existingcCsn|�|jjtj�|j��|�|jj|�dD]:}tj�|j|�}t�|�tj	}|�
t�|�d|�q.dS)NrzNot a directory: '%s')rr2r0rr�abspathr1r	�stat�ST_MODEr
�S_ISDIR)rr�r"r�moderrrr�szTestMaildir._check_basicscCsX|j�d�|j�d�|j�d�|�t|j���d�|�t|j���td��dS�N�one�two�threer9)r*r+r,�r2�
add_folderrr�list_foldersr�r3rrr�test_list_folders�s�zTestMaildir.test_list_folderscCsv|j�d�|j�d�}|�|jd�|�tj�tj�	|j
d���|j�d�}|�|�|�
�d�|jd�dS)N�foo.barr�z.foo.barr)r2r.�
get_folderr?r@r
rrrr	r0rrIrJ)r�folder0�folder1rrr�test_get_folder�s�zTestMaildir.test_get_foldercCs4|j�d�|j�d�|�t|j���d�|�t|j���td��|j�d�|�t|j���d�|�t|j���td��|j�d�|�t|j���d�|�t|j���td��|j�d�|�t|j���d�|�t|j���td��|j�d�|�t|j���d	�|�|j��g�dS�
Nr*r+r8)r*r+r7)r+r,)r+r,r�r2r.rrr/r�Z
remove_folderr3rrr�test_add_and_remove_folders�s z'TestMaildir.test_add_and_remove_folderscCstj�|jdd�}tj�|jdd�}t|d��}|�d�Wd�n1sN0Yt|d��}|�d�Wd�n1s�0Y|j��|�tj�	|��|�tj�	|��t�
|�}t�|t��dd|j
f�|j��|�tj�	|��|�tj�	|��dS)Nrr�r��w�@i@�r8)rrr	r0�openrnr2Zcleanr
r!r%�utime�time�st_mtimer�)rZfoo_pathZbar_pathrhZfoo_statrrr�
test_clean�s ((

�
zTestMaildir.test_cleanr�c

Cst��}d|vr|�dd�}d|vr0|�dd�}t��}t�d�}d}t|�D�]�}|j�	�}tj
�|j�\}}	|�
|tj
�tj
�|jd��d|�|�|	�}
|�|
d|	�|
��}|du�r�|�t|d	�t|d	�d
|d	|d	f�t|d	�t|d	�k�r8|�t|d�t|d�d|d|df�|�
t|d
�|d|d
|f�|�
t|d�t|d�dd|d|df�|�
|d|d|d|f�|}|�t�|�d	�|�
|��t�|��qNtt�tj
�|jd���}|�
||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>[^:/]*)rzFile in wrong location: '%s'zInvalid file name: '%s'rz'Non-monotonic seconds: '%s' before '%s'r7z,Non-monotonic milliseconds: '%s' before '%s'r8z(Process ID mismatch: '%s' should be '%s'r9z(Non-sequential counter: '%s' before '%s'r:z'Host name mismatch: '%s' should be '%s'z%Wrong file count: '%s' should be '%s')�socketZgethostnamerer�getpid�re�compiler�r2Z_create_tmprrprrr$r	r0�match�assertIsNotNone�groupsZassertGreaterEqualr�rnrErordr5rr)
rr�Zhostname�pid�patternZprevious_groups�xZtmp_file�head�tailrFrHZ
file_countrrr�test_create_tmp�sr

��

����
����
��


��zTestMaildir.test_create_tmpcCs|�|jji�|j�|jd�}|j�|jd�}|�|jji�|j��|�|jj|tj�d|�|tj�d|�i�|j�|jd�}|�|jj|tj�d|�|tj�d|�i�|j��|�|jj|tj�d|�|tj�d|�|tj�d|�i�dS)Nrr7rr8)	rr2�_tocr?r@�_refreshrrr	r�rrr�test_refreshs"
��
�zTestMaildir.test_refreshcCsx|j�|jd�}|j�|jd�}|�|j�|_|�|jji�d|j_|j��|�t	|jj�
��t	||g��dS)Nrr7���)r2r?r@r1r0rrO�_skewfactorrP�sortedrJr�rrr� test_refresh_after_safety_period$s
z,TestMaildir.test_refresh_after_safety_periodcs���t�fdd���j��jd�����j���tj�	d���t�
tj�	�jd������jj�tj�	d��i��j�
���t��fdd�����jji�dS)Ncs�j�d�Sr��r2�_lookuprr3rrr�9r�z)TestMaildir.test_lookup.<locals>.<lambda>rrcs�j���SrrVrr�rrr�Ar�)r_r�r2r?r@rrWrrr	r{r0rOrWr3rr�r�test_lookup7s
zTestMaildir.test_lookupcCs|j��|j��dSr)r2r�r�r3rrrr�Ds
zTestMaildir.test_lock_unlockcCsLdd�}|j|j|d�}|�d�}|�|j|�|�d�}|�|j|�dS)NcSsdSrr��srrr�
dummy_factoryLsz.TestMaildir.test_folder.<locals>.dummy_factoryrr4)r1r0r.r�r2)rr[r�ZfolderZ
folder1_aliasrrr�test_folderIs

zTestMaildir.test_foldercCsHtd�D]}|j�t�t��qt�tj�	|j
dd��|jD]}q>dS)Nr�r
z	stray-dir)r�r2r?r	rrArr rr	r0)rrrrrr�test_directory_in_folderUs

z$TestMaildir.test_directory_in_folder�umask�test needs os.umask()c	Csxt�|jd�}t�d�}z|j�|�}Wt�|�nt�|�0tj�|j	|j�
|��}t�|�j}|�
|d@�dS)Nr�I)r	r(r@rr^r2r?rr	r0rWr%�st_moder�)rr�
orig_umaskrrr(rrr�test_file_permissionsbs
z!TestMaildir.test_file_permissionsc	Csdt�d�}z|j�d�}Wt�|�nt�|�0tj�|jd�}t�|�}|j}|�	|d@�dS)Nr�	subfolderZ
maildirfolderr`)
rr^r2r.rr	r0r%rar�)rrbrdr�st�permsrrr�test_folder_file_permsos

z"TestMaildir.test_folder_file_permscs��j��dD],}t�tj��jj|�t��dfd�qd�j_�jj	���fdd�}�j����
|��tj��jdd�}t�|�t�
|��j����|��dS)	N)r
rr;r8rRcs�jj�uSr)r2rOr�Zorig_tocrrr�	refreshed�sz*TestMaildir.test_reread.<locals>.refreshedr
z
stray-file)r2rPrr<rr	r0r=rSrOr�rZcreate_empty_filer"r
)rr"ri�filenamerrhr�test_reread~s
�



zTestMaildir.test_reread)N)N)r�)r%r&r'r1r4rXr
rrrrr#rr0r5r8r?rNrQrUrXr�r\r]�unittest�
skipUnless�hasattrrrcrgrkrrrrr�Ls4
		
		

/



r�c@s eZdZdZdd�Zdd�ZdS)�_TestSingleFilez&Common tests for single-file mailboxescCsrt�|j�j}|j�|jd�|j��t�|j�j}|�||�|j�	�|�
|j�|_|�t|j�d�dSr�)rr%r0�st_inor2r?r@rWrr5r1r)rZinode_beforeZinode_afterrrr�test_add_doesnt_rewrite�s

z'_TestSingleFile.test_add_doesnt_rewritecCstt�|j�jdB}t�|j|�|j�|jd�|j�|jd�}|j�|�|j�	�|�
t�|j�j|�dS)Ni�rr7)rr%r0ra�chmodr2r?r@r{rWr)rr(rrrr�test_permissions_after_flush�s
z,_TestSingleFile.test_permissions_after_flushN)r%r&r'�__doc__rqrsrrrrro�srocs�eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Ze�
eed�d�e�
eed�d�dd���Zdd�Z�ZS)�
_TestMboxMMDFcsJt���|j��|�|j�t�t�|j�d�D]}t�	|�q6dS�Nz.*�
�superr6r2r5r$r0�glob�escaperr"�rZlock_remnant��	__class__rrr6�s


z_TestMboxMMDF.tearDowncCs>t|j�� }|�|��g�Wd�n1s00YdSr�r;r0r�	readlines�rrhrrrrX�sz _TestMboxMMDF.assertMailboxEmptycCs�d}|j�||jd�}|j�|t�}|�|jj|dd�|jd�d��|�|jj|dd�t�|�|jj|dd�||jd�d��|�|jj|dd�|�d�t�dS)N�From foo@bar blah
rF�Zfrom_r�Tr��rZunixfromr�r�rrr�test_get_bytes_from�s����z!_TestMboxMMDF.test_get_bytes_fromcCs�d}|j�||jd�}|j�|t�}|�|jj|dd�|jd�|�|jj|dd��d�t�d��|�|jj|dd�||jd�|�|jj|dd��d�|t�d��dS)Nr�rFr�r�Tr�r�rrr�test_get_string_from�s����z"_TestMboxMMDF.test_get_string_fromcCs<|j�d�}|�|j|��d�|�|j|��d�dS)N�From foo@bar blah
From: foo

0
�foo@bar blahr��r2r?r�get_fromrrPrrr�test_add_from_string�sz"_TestMboxMMDF.test_add_from_stringcCs<|j�d�}|�|j|��d�|�|j|��d�dS)NsFrom foo@bar blah
From: foo

0
r�r�r�rPrrr�test_add_from_bytes�sz!_TestMboxMMDF.test_add_from_bytescCs*tjtjfD]}|d�}|j�|�}qdS)Nr�)r	r)r,r2r?)r�class_rrrrr�test_add_mbox_or_mmdf_messagesz+_TestMboxMMDF.test_add_mbox_or_mmdf_messagecs��fdd�td�D�}|D]}�j�|�q�j��tj��j�}���j��_��	t
�j�d��j��D]}���j�
|�|�qn�j����	|tj��j��dS)Ncsg|]}�j|�qSrr�r�r3rrr�
r�z6_TestMboxMMDF.test_open_close_open.<locals>.<listcomp>r9)r�r2r?r5rr�getmtimer0r1rrr�rrI)rr�r�mtimerrr3r�test_open_close_opens

z"_TestMboxMMDF.test_open_close_opencCs�|j�t�td�D]}|j�|j|�q|j�t�|jj��|jj�d�|jj��}|j�	�t
|jd�� }|�||���Wd�n1s�0Y|�
|j�|_dS)Nr9r�rb)r2r?rAr�r@�_filerWrordr5r;r0rr1)rrr�rhrrr�test_add_and_closes
.z _TestMboxMMDF.test_add_and_close�forkzTest needs fork().�
socketpairzTest needs socketpair().c
Cs�t��\}}|�|j�|�|j�t��}|dkrxz6|j��|�d�|�	d�|j�
�Wt�d�nt�d�0|�	d�z.|�t
j|jj�W|�d�tj|dd�n|�d�tj|dd�0|j��|j�
�dS)Nr�cr7�p)Zexitcode)rBr�Z
addCleanupr5rr�r2r��sendZrecvr��_exitr_r	ZExternalClashErrorrZwait_process)r�c�prIrrr�test_lock_conflict's,



�
�

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

body
)	r2r?rWr5r1r0r�r
Z_locked)rrr�r�rrr�test_relockLs



z_TestMboxMMDF.test_relock)r%r&r'r6rXr�r�r�r�r�r�r�rlrmrnrrBr�r��
__classcell__rrr|rru�s#ruc@s@eZdZddd�Ze�eed�d�dd��Zdd	�Z	d
d�Z
dS)
�TestMboxNcCst�||�Sr)r	�mboxr�rrrr�^r�zTestMbox.<lambda>r^r_c	Cs�zVt�d�}|j��t�|j�tj|jdd�|_|j�d�|j��Wt�|�nt�|�0t�	|j�}|j
}|�|d@�dS)N�?T)Zcreater�r`)rr^r2r5r"r0r	r�r?r%rar�)rZ	old_umaskrerfrrr�test_file_perms`s

zTestMbox.test_file_permscCsHtj��}d|d<|�d�|j�|�}|j�|�}|�|��d�dS)Nzjohn@example.com�FromzNo newline at the endzNo newline at the end
)	rrrZset_payloadr2r?r�rr)rrrrrr�test_terminating_newliness

z!TestMbox.test_terminating_newlinecCs�|j�d�t|j��,}|��}|�|dd�d�Wd�n1sH0Y|j�d�t|j��,}|��}|�|dd�d�Wd�n1s�0YdS)NzFrom: foo

0rRz0

z
From: foo

0
)r2r?r;r0rdr)rrh�datarrr�test_message_separator}s2zTestMbox.test_message_separator)N)r%r&r'r1rlrmrnrr�r�r�rrrrr�\s



r�c@seZdZddd�ZdS)�TestMMDFNcCst�||�Sr)r	ZMMDFr�rrrr��r�zTestMMDF.<lambda>)N)r%r&r'r1rrrrr��sr�c@s^eZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�ZdS)�TestMHNcCst�||�Sr)r	ZMHr�rrrr��r�zTestMH.<lambda>cCs|�t�|j�dg�dS)Nz
.mh_sequences)rrrr0r3rrrrX�szTestMH.assertMailboxEmptycCsX|j�d�|j�d�|j�d�|�t|j���d�|�t|j���td��dSr)r-r3rrrr0�s�zTestMH.test_list_folderscCs�dd�}|�|j|�|_|j�d�}|j�d�}|�|jd�|�tj	�
tj	�|jd���|j�d�}|�|�
|��d�|jd�|�|j|jj�|�|j|jj�dS)NcSsdSrrrYrrrr[�sz-TestMH.test_get_folder.<locals>.dummy_factoryr1r�r)r1r0r2r.r2r?r@r
rrrr	rrIrJr�)rr[Z
new_folderr3r4rrrr5�s�zTestMH.test_get_foldercCs4|j�d�|j�d�|�t|j���d�|�t|j���td��|j�d�|�t|j���d�|�t|j���td��|j�d�|�t|j���d�|�t|j���td��|j�d�|�t|j���d�|�t|j���td��|j�d�|�t|j���d	�|�|j��g�dSr6r7r3rrrr8�s z"TestMH.test_add_and_remove_folderscCs�|�|j��i�t�|jd�}|�d�|j�|�}|�|j��d|gi�t�|jd�}|�gd��|j�|�}|�|j��||g|g|gd��|�dg�||j|<|�|j��|g|g|g|gd��|j�	|�|�|j��d|gi�dS)Nrr�r7)r��repliedr��r�r�r��flagged)r�r�r�r�)
rr2�
get_sequencesr	r*r@�add_sequencer?�
set_sequencesr{�rr�r�rr�rrr�test_sequences�s(
�
��zTestMH.test_sequencescCs6t�|jd�}|�d�|j�|�}|j�|�}dS)Nrr�)r	r*r@r�r2r?r�)rr�r�Zrefmsg0rrr�test_issue2625�s
zTestMH.test_issue2625cCs@t�|jd�}|j�|�}|j��|j�|�|j��dS)Nr)r	r*r@r2r?r�r{r�)rr�r�rrr�test_issue7627�s

zTestMH.test_issue7627c		Cs�t�|jd�}t�|jd�}t�|jd�}t�|jd�}|�ddg�|�dg�|�ddg�|�gd��|j�|�}|j�|�}|j�|�}|j�|�}|�|j��||||g|g|g|g|gd	��|j�|�|�|j��|||g|g|g|gd
��|j�	�|�|j�
�gd��|}|d}|d}|�|j��gd�dgdgdgd
��|j�|�}|j�|�}|j�|�}|j�|�}|j�|�|j�|�|j��|j�	�|j��|�|j��gd�dgdgdgd
��dS)
Nrr7r8r9r��unseenr�r�)r�r�r�r�r�)r�r�r�r�)r7r8r9)r7r8r9r:r;)
r	r*r@r�r2r?rr�r{ZpackrJr�r�)	rr�rrZmsg3r�r�r�Zkey3rrr�	test_pack�sZ����
�


��zTestMH.test_packcCstj�|jd�S)Nz.mh_sequences.lock)rrr	r0r3rrrr�szTestMH._get_lock_path)N)
r%r&r'r1rXr0r5r8r�r�r�r�r�rrrrr��s
	,r�cs6eZdZd
dd�Zdd�Z�fdd�Zdd	�Z�ZS)�	TestBabylNcCst�||�Sr)r	ZBabylr�rrrr�r�zTestBabyl.<lambda>cCs>t|j�� }|�|��g�Wd�n1s00YdSrr~r�rrrrXszTestBabyl.assertMailboxEmptycsJt���|j��|�|j�t�t�|j�d�D]}t�	|�q6dSrvrwr{r|rrr6s


zTestBabyl.tearDowncCs�|�|j��g�t�|jd�}|�d�|j�|�}|�|j��dg�t�|jd�}|�gd��|j�|�}|�t	|j���t	ddg��|�ddg�||j|<|�t	|j���t	gd���|j�
|�|�t	|j���t	dg��dS)	Nrr�r7)r��answeredr�r��blah�filed)r�r�r�)rr2�
get_labelsr	r+r@�	add_labelr?�
set_labelsr�r{r�rrr�test_labels%s 


�zTestBabyl.test_labels)N)r%r&r'r1rXr6r�r�rrr|rr�s
r�c@seZdZdd�Zdd�ZdS)�FakeFileLikeObjectcCs
d|_dSr���closedr3rrr�__init__:szFakeFileLikeObject.__init__cCs
d|_dSr�r�r3rrrr5=szFakeFileLikeObject.closeN)r%r&r'r�r5rrrrr�8sr�c@seZdZdd�Zdd�ZdS)�FakeMailBoxcCs,tj�|ddd��dd�td�D�|_dS)Nr�cSsdSrr)r�rrrr�Dr�z&FakeMailBox.__init__.<locals>.<lambda>cSsg|]
}t��qSr)r�r�rrrr�Er�z(FakeMailBox.__init__.<locals>.<listcomp>r�)r	r�r�r��filesr3rrrr�CszFakeMailBox.__init__cCs
|j|Sr)r�rPrrrrcGszFakeMailBox.get_fileN)r%r&r'r�rcrrrrr�Asr�c@seZdZdd�ZdS)�TestFakeMailBoxcCs`t�}td�D]}|�|j|j�qtd�D]}||q.td�D]}|�|j|j�qDdS)Nr�)r�r�r�r�r�r
)rr�rrrr�test_closing_fdMs
zTestFakeMailBox.test_closing_fdN)r%r&r'r�rrrrr�Ksr�c@sreZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�Zdd�Zdd�ZdS)�TestMessagecCstj|_dSr)rr/r0r3rrrr4[szTestMessage.setUpcCs|�|j�dSr)r$r0r3rrrr6^szTestMessage.tearDowncCs,t�t�}|�|�}|�|�|�|�dSr)rrBrAr1�_post_initialize_hookr�r�eMMrrrr�test_initialize_with_eMMas


z$TestMessage.test_initialize_with_eMMcCs"|�t�}|�|�|�|�dSr)r1rAr�rr�rrr�test_initialize_with_stringhs

z'TestMessage.test_initialize_with_stringcCsbt|jd��B}|�t�|�d�|�|�}|�|�|�|�Wd�n1sT0YdS)Nrtr)r;r0rnrAror1r�r�rrhrrrr�test_initialize_with_filens



z%TestMessage.test_initialize_with_filecCsbt|jd��B}|�t�|�d�|�|�}|�|�|�|�Wd�n1sT0YdS)Nrkr)r;r0rnrEror1r�rr�rrr� test_initialize_with_binary_filews



z,TestMessage.test_initialize_with_binary_filecCsn|��}|�|�|�|tjj�|�|tj�|�||j�|�|��g�|�	|�
��|�|���dSr)
r1r�rrrrr	rrJr�rr�rr�rrr�test_initialize_with_nothing�s
z(TestMessage.test_initialize_with_nothingcs��t�fdd��dS)Ncs��t��Sr)r1�objectrr3rrr��r�z9TestMessage.test_initialize_incorrectly.<locals>.<lambda>)r_r�r3rr3r�test_initialize_incorrectly�sz'TestMessage.test_initialize_incorrectlycCs:t�t�}|�t�}|jD]}|�||jd�|��qdS)Nz{} attribute does not exist)rrBrAr1�__dict__r�format)rr�r�attrrrr�test_all_eMM_attributes_exist�s



�z)TestMessage.test_all_eMM_attributes_existcCs*t�t�}|��}|�|�|�|�dSr)rrBrAr1Z_become_messagerr�rrr�test_become_message�s

zTestMessage.test_become_messagecsH|���|jD]}|������qtj���|�t��fdd��dS)Ncs
����Sr)�_explain_tor�rZ	other_msgrrr��r�z-TestMessage.test_explain_to.<locals>.<lambda>)r1r-r�rrrr_r�)rr�rr�r�test_explain_to�s

zTestMessage.test_explain_tocCsdSrrr�rrrr��sz!TestMessage._post_initialize_hookN)r%r&r'r	rr1r4r6r�r�r�r�r�r�r�r�r�r�rrrrr�Ws		
r�c@sBeZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
S)�TestMaildirMessagecCs |�|jd�|�|jd�dS)Nrr�)rZ_subdirZ_infor�rrrr��sz(TestMaildirMessage._post_initialize_hookcs�t�t��|����d���d�|����d���d�|����d�|�t�fdd��|����d���d�|����d�|���dS)Nrr
cs
��d�Sr)rr�rrrr��r�z0TestMaildirMessage.test_subdir.<locals>.<lambda>)	r	r(rArrrr_rVrr3rr�r�test_subdir�s



zTestMaildirMessage.test_subdircCs�t�t�}|�|��d�|�|��d�|�d�|�|��d�|�|��d�|�d�|�|��d�|�d�|�|��d�|�d�|�|��d	�|�|��d�|�	|�dS)
Nr�r�FZSDTPZDPSTZFTZDFPSTZTDRP�FS)
r	r(rArrrr�add_flag�remove_flagrr�rrr�
test_flags�s




zTestMaildirMessage.test_flagscCsDt�t�}|�t|��t���d�|�d�|�|��d�dS)N�<�)	r	r(rAr��abs�get_dater=�set_daterr�rrr�	test_date�s

zTestMaildirMessage.test_datecsVt�t��|����d���d�|����d�|�t�fdd��|���dS)Nr�z	1,foo=barcs
��d�Sr)rrr�rrr��r�z.TestMaildirMessage.test_info.<locals>.<lambda>)	r	r(rAr�get_inforr_r�rr3rr�r�	test_info�s

zTestMaildirMessage.test_infocCs�t�t�}|�|��d�|�d�|�|��d�|�|��d�|�d�|�|��d�|�|��d�|�d�|�|��d�|�|��d�|�	d�|�|��d�|�|��d�|�
|�dS)	Nr�ZSFr�z2,FSz1,ZRPT�Dz2,D)r	r(rArr�rrrr�r�rr�rrr�test_info_and_flags�s




z&TestMaildirMessage.test_info_and_flagsN)r%r&r'r	r(r1r�r�r�r�r�r�rrrrr��s	r�c@s<eZdZejZdd�Zdd�Zdd�Zdd�Z	dd
d�Z
d	S)
�_TestMboxMMDFMessagecCs|�|�dSr)�_check_fromr�rrrr��sz*_TestMboxMMDFMessage._post_initialize_hookcCs8t�t�}|�d�t�|�}|�|��d|���dS)NzFrom foo@bar blahr�)r	rrAZset_unixfromr)rr�r�rrr�test_initialize_with_unixfrom�s


z2_TestMboxMMDFMessage.test_initialize_with_unixfromcCsft�t�}|�|�|�d�|�|��d�|�dd�|�|d�|�dt���|�|d�dS)Nzfoo bar�foo@barTz	blah@temp)	r	r)rAr��set_fromrr�r=�	localtimer�rrr�	test_froms


z_TestMboxMMDFMessage.test_fromcCs�t�t�}|�|��d�|�d�|�|��d�|�d�|�|��d�|�d�|�|��d�|�d�|�|��d�|�|�dS)	Nr�r�ZXODRZRODXZFAZRODFAXZFDXA�RO)	r	r)rArrrr�r�rr�rrrr�s




z_TestMboxMMDFMessage.test_flagsNcCs*|durd}|�t�|d|����dS)Nz
MAILER-DAEMONz. \w{3} \w{3} [\d ]\d [\d ]\d:\d{2}:\d{2} \d{4})rGrDrFr�)rrZsenderrrrr�s�z _TestMboxMMDFMessage._check_from)N)r%r&r'r	Z_mboxMMDFMessager1r�r�r�r�r�rrrrr��sr�c@seZdZejZdS)�TestMboxMessageN)r%r&r'r	r)r1rrrrr�'sr�c@s"eZdZejZdd�Zdd�ZdS)�
TestMHMessagecCs|�|jg�dSr)rZ
_sequencesr�rrrr�0sz#TestMHMessage._post_initialize_hookcCs(t�t�}|�|��g�|�dg�|�|��dg�|�g�|�|��g�|�d�|�|��dg�|�d�|�|��ddg�|�d�|�|��ddg�|�d�|�|��dg�|�d�|�|��ddg�|�d�|�|��ddg�|�ddg�|�|��ddg�dS)N�foobarr�r�r�)r	r*rArr�r�r�Zremove_sequencer�rrrr�3s(







zTestMHMessage.test_sequencesN)r%r&r'r	r*r1r�r�rrrrr�,sr�c@s*eZdZejZdd�Zdd�Zdd�ZdS)�TestBabylMessagecCs|�|jg�dSr)rZ_labelsr�rrrr�Osz&TestBabylMessage._post_initialize_hookcCs(t�t�}|�|��g�|�dg�|�|��dg�|�g�|�|��g�|�d�|�|��dg�|�d�|�|��ddg�|�d�|�|��ddg�|�d�|�|��dg�|�d�|�|��ddg�|�d�|�|��ddg�|�ddg�|�|��ddg�dS)Nr�r��resentr�r�)r	r+rArr�r�r�Zremove_labelr�rrrr�Rs(







zTestBabylMessage.test_labelscCst�t�}|��}|�|��g�|�|���d|d<d|d<|�|����g�|�|�|��}|�|��ddg�|�|dd�|�|dd�|�|���|�	�|�|��ddg�|�|���|��}|�|��gd��dD]}|�||||�q�dS)Nz
FooBar 1.0�
User-AgentZBlahz
X-Whatever)r��Dater��To�Subject)
r	r+rA�get_visiblerrJr�rZset_visible�update_visible)rrZvisible�headerrrr�test_visibleis(

zTestBabylMessage.test_visibleN)	r%r&r'r	r+r1r�r�r�rrrrr�Ksr�c@seZdZejZdS)�TestMMDFMessageN)r%r&r'r	r,r1rrrrr�src@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,|jD] }t�t�}||�}|�|�qdSr)r-r	rrAr)rr��	msg_plainrrrr�test_plain_to_x�s

z%TestMessageConversion.test_plain_to_xcCs,|jD] }|t�}t�|�}|�|�qdSr)r-rAr	rr)rr�rrrrr�test_x_to_plain�s

z%TestMessageConversion.test_x_to_plaincCs"|jD]}|t�}|�|�qdSr)r-rEr)rr�rrrr�test_x_from_bytes�s
z'TestMessageConversion.test_x_from_bytescs$|jD]�|�t�fdd��qdS)Ncs�d�Sr�rr�r�rrr��r�z9TestMessageConversion.test_x_to_invalid.<locals>.<lambda>)r-r_r�r3rrr�test_x_to_invalid�s
z'TestMessageConversion.test_x_to_invalidcs�dd�|jD��|jD]d}|jD]X�|�ur.q |t�}�|�}��fdd��|D�}|D]}|�||jd�|���qZq qdS)NcSsi|]}||t�j�qSr)rAr�)r�r�rrr�
<dictcomp>�s�z]TestMessageConversion.test_type_specific_attributes_removed_on_conversion.<locals>.<dictcomp>csg|]}|��vr|�qSrr)r��a�Zclass2Z	referencerrr��s�z]TestMessageConversion.test_type_specific_attributes_removed_on_conversion.<locals>.<listcomp>zwhile converting {} to {})r-rAr�r�r�)rZclass1�sourcer#Z
type_specificr�rr
r�3test_type_specific_attributes_removed_on_conversion�s�



�zITestMessageConversion.test_type_specific_attributes_removed_on_conversioncCsnt�t�}|�d�|�d�|��}t�|�}|�|�|�|��d�|�|�	�d�|�|��|�dS)N�DFPRSTr
)
r	r(rArrr�rrrr)r�msg_maildir�daterrrr�test_maildir_to_maildir�s




z-TestMessageConversion.test_maildir_to_maildircCs�d}tjtjfD]�}t�t�}|�d�|D]J\}}|�|�||�}|�|��|�|�|�	�dt
�t
�d���q,|�
d�|�||���d�qdS)N))r�r��r�r�)�Pr�)�R�A)rr)�Tr�)r
ZRDFAr�zMAILER-DAEMON %sr
�RODFA)r	r)r,r(rAr�rrrr�r=�asctime�gmtimer)r�pairsr�r�setting�resultrrrr�test_maildir_to_mboxmmdf�s


�
z.TestMessageConversion.test_maildir_to_mboxmmdfc	Cs|t�t�}ddgfdddgfddgfdddgfdgfd	dgfd
ddgff}|D](\}}|�|�|�t�|���|�qNdS)Nr�r�r�r�rrr�rrr
)r	r(rArrr*r��rrrrrrrr�test_maildir_to_mh�s
�
�z(TestMessageConversion.test_maildir_to_mhc	Cs~t�t�}ddgfddgfdddgfdddgfdgfd	dd
gfdgd�ff}|D](\}}|�|�|�t�|���|�qPdS)
Nr�r�r�r�	forwardedrr�rr�deletedr
)r r�r)r	r(rArrr+r�rrrr�test_maildir_to_babyl�s

�
�z+TestMessageConversion.test_maildir_to_babylcCs�tjtjfD]�}|t�}|�dt�d��d}|D]<\}}|�|�t�|�}|�	|�
�|�|�	|��d�q2|�d�|�	t�|���d�qdS)Nr�r�))rr)�Or�)r�rr)rr)rZFRSTr"r
)
r	r)r,rAr�r=rrr(rrr�r)rr��msg_mboxMMDFrrrrrrr�test_mboxmmdf_to_maildir�s


�z.TestMessageConversion.test_mboxmmdf_to_maildircCsltjtjfD]Z}|t�}|�d�|�d�tjtjfD],}||�}|�|��d�|�|��d�q8qdS)Nrr�)	r	r)r,rArr�rrr�)rr�r#Zclass2_rrrr�test_mboxmmdf_to_mboxmmdf�s

z/TestMessageConversion.test_mboxmmdf_to_mboxmmdfc	Cs�tjtjfD]r}|t�}dgfddgfddgfdddgfdddgfd	ddgff}|D](\}}|�|�|�t�|���|�qTqdS)
Nrr"r�r�r�r�rr�r)r	r)r,rArrr*r�)rr�r#rrrrrr�test_mboxmmdf_to_mh�s


�
�z)TestMessageConversion.test_mboxmmdf_to_mhc	Cs�tjtjfD]r}|t�}dgfddgfdddgfddgfdddgfd	ddgff}|D](\}}|�|�|�t�|���|�qTqdS)
Nrr"r�r�r r�rr�r)r	r)r,rArrr+r�)rr�rrrrrrr�test_mboxmmdf_to_babyls

�
z,TestMessageConversion.test_mboxmmdf_to_babylcCs�d}|D]H\}}t�t�}|�|�|�t�|���|�|�t�|���d�qt�t�}|�d�|�d�|�d�|�t�|���d�|�t�|���d�dS)N)�r�r�)r��RS)r�r�r
r�r�r�r)r	r*rAr�rr(rr�rrrrrrrr�test_mh_to_maildirs





z(TestMessageConversion.test_mh_to_maildircCs�d}|D]B\}}t�t�}|�|�tjtjfD]}|�||���|�q0qt�t�}|�d�|�d�|�d�tjtjfD]}|�||���d�q�dS)N)�r�r")r��ROA)r�ZROFr�r�r�ZOFA)r	r*rAr�r)r,rr)rrrrrr�rrr�test_mh_to_mboxmmdf's





z)TestMessageConversion.test_mh_to_mboxmmdfcCsFt�t�}|�d�|�d�|�d�|�t�|���gd��dS)Nr�r�r�)r�r�r�)r	r*rAr�rr�r�rrr�
test_mh_to_mh6s



�z#TestMessageConversion.test_mh_to_mhcCs�ddgfddgfdgff}|D]2\}}t�t�}|�|�|�t�|���|�qt�t�}|�d�|�d�|�d�|�t�|���ddg�dS)Nr�r�r�r�)r	r*rAr�rr+r�r*rrr�test_mh_to_babyl?s�





�z&TestMessageConversion.test_mh_to_babylcCs�d}|D]H\}}t�t�}|�|�|�t�|���|�|�t�|���d�qt�t�}dD]}|�|�q`|�t�|���d�|�t�|���d�dS)N)r()r ZST)r�r)r�r))r�PS)�editedr)r�r1r
�r�r r�r�rr2r�ZPRT)r	r+rAr�rr(rr�rrrrr�labelrrr�test_babyl_to_maildirNs


z+TestMessageConversion.test_babyl_to_maildircCs�d}|D]B\}}tjtjfD],}t�t�}|�|�|�||���|�qqt�t�}dD]}|�|�qZtjtjfD]}|�||���d�qvdS)N)r,)r ZROD)r�r�)r�r-)rr�)r2r�)r�r�r3ZODA)r	r)r,r+rAr�rr)rrrrr�rr5rrr�test_babyl_to_mboxmmdf_s


z,TestMessageConversion.test_babyl_to_mboxmmdfcCs�ddgfdgfdgfddgfdgfdgfdgff}|D]2\}}t�t�}|�|�|�t�|���|�q6t�t�}d	D]}|�|�qx|�t�|���ddg�dS)
Nr�r r�r�r�rr2r�r3)r	r+rAr�rr*r�r4rrr�test_babyl_to_mhps�


�z&TestMessageConversion.test_babyl_to_mhcCs�t�t�}|��dD]}|�|�qt�|�}|�|��gd��|�|����|�����|����D] }|�|��||��|�qldS)Nr3)	r	r+rAr�r�rr�r�rJ)rrr5rrrrr�test_babyl_to_babyl�s

z)TestMessageConversion.test_babyl_to_babylN)r%r&r'rrrrrrrrr!r$r%r&r'r+r.r/r0r6r7r8r9rrrrr�s*
	rc@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestProxyFileBasecCs�|�d�|�|��d�|�d�|�|��d�|�d�|�|�d�d�|�d�|�|�d�d�|�d�|�|�d�d	�dS)
Nr�barr7sarr8sba������r)rorrd�r�proxyrrr�
_test_read�s




zTestProxyFileBase._test_readcCs�tj��}|�d�|�|��d|�|�|��d|�|�|��d|�|�|��d�|�d�|�|��d|�|�ddttj��|�|��d|�|�ddttj��|�|�d�d	�|�|�d
�d|�dS)Nr�foor;�fred�bobr8�or<sfri����sed)rrfrNror�readliner�rr@rfrrr�_test_readline�s


z TestProxyFileBase._test_readlinecCs�tj��}|�d�|�|��d|d|d|dg�|�d�|�|�d�d|g�|�dt|��|�|�dt|��d|d|g�|�d�|�|�d	�|d|d|dg�dS)
NrrBr;rCrDr8r9r:r=)rrfrNrorrrrGrrr�_test_readlines�s 

�
�
�z!TestProxyFileBase._test_readlinescCsztj��}|�d�t|�}|�t|�d|�|�t|�d|�|�t|�d|�|�t|�d�|�tt|�dS)NrrBr;rCrD)	rrfrNro�iterr�nextr_�
StopIteration)rr@rf�iteratorrrr�_test_iteration�s

z!TestProxyFileBase._test_iterationcCs�tj��}|�d�|�|��d�|�|�t|��|�|�dd�|�|�dt|��d|�|�dt|�d�|�|�d�d�|�dd�|�|��d|d|�|�d	�|�|���dS)
Nr9r8r7r>rRr;rrE�d)	rrfrNror�tellrdrr�rGrrr�_test_seek_and_tell�s


z%TestProxyFileBase._test_seek_and_tellcCs8|�|j�|��|�|j�|��|�|j�dSr)r�r�r5r
r?rrr�_test_close�s
zTestProxyFileBase._test_closeN)	r%r&r'rArHrIrNrQrRrrrrr:�s
r:c@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�
TestProxyFilecCstj|_t|jd�|_dS�Nrk�rr/r0r;r�r3rrrr4�szTestProxyFile.setUpcCs|j��|�|j�dSr�r�r5r$r0r3rrrr6�s
zTestProxyFile.tearDowncCsx|j�d�|j��}t�|j�}|�|��|�|�|j��|�t�|jd�}|�|��d�|�|j��|�dS)NrBr)r�rnrPr	�
_ProxyFiler)r�posZproxy0Zproxy1rrr�test_initialize�s
zTestProxyFile.test_initializecCs"|j�d�|�t�|j��dS)Nr;)r�rnrAr	rWr3rrr�	test_read�szTestProxyFile.test_readcCs8|j�tdtjtjtjfd��|�t�|j��dS�Nzfoo%sbar%sfred%sbobr�)r�rn�bytesrrfrHr	rWr3rrr�
test_readline�s��zTestProxyFile.test_readlinecCs8|j�tdtjtjtjfd��|�t�|j��dSr[)r�rnr\rrfrIr	rWr3rrr�test_readliness��zTestProxyFile.test_readlinescCs8|j�tdtjtjtjfd��|�t�|j��dSr[)r�rnr\rrfrNr	rWr3rrr�test_iterations��zTestProxyFile.test_iterationcCs4|j�tdtjtjfd��|�t�|j��dS�Nz
foo%sbar%sr�)r�rnr\rrfrQr	rWr3rrr�test_seek_and_tellsz TestProxyFile.test_seek_and_tellcCs4|j�tdtjtjfd��|�t�|j��dSr`)r�rnr\rrfrRr	rWr3rrrr�szTestProxyFile.test_closeN�r%r&r'r4r6rYrZr]r^r_rar�rrrrrS�srSc@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestPartialFilecCstj|_t|jd�|_dSrTrUr3rrrr4szTestPartialFile.setUpcCs|j��|�|j�dSrrVr3rrrr6s
zTestPartialFile.tearDowncCs\|j�tdtjdd��|j��}t�|jdd�}|�|��d�|�|j��|�dS)Nr�r�r�r8r;r)	r�rnr\rrfrPr	�_PartialFiler)rrXr@rrrrYs

zTestPartialFile.test_initializecCs,|j�tdd��|�t�|jdd��dS)Nz	***bar***r�r9r<)r�rnr\rAr	rdr3rrrrZ&szTestPartialFile.test_readc
CsJ|j�tdtjtjtjfd��|�t�|jdddttj���dS)Nz!!!!!foo%sbar%sfred%sbob!!!!!r�r;�r9)	r�rnr\rrfrHr	rdrr3rrrr]*s
���zTestPartialFile.test_readlinec
CsJ|j�tdtjtjtjfd��|�t�|jdddttj���dS)Nzfoo%sbar%sfred%sbob?????r�r�
r9)	r�rnr\rrfrIr	rdrr3rrrr^0s
���zTestPartialFile.test_readlinesc
CsJ|j�tdtjtjtjfd��|�t�|jdddttj���dS)Nz____foo%sbar%sfred%sbob####r�r:�r9)	r�rnr\rrfrNr	rdrr3rrrr_6s
���zTestPartialFile.test_iterationc
CsF|j�tdtjtjfd��|�t�|jdddttj���dS)Nz(((foo%sbar%s$$$r�r9�	r8)	r�rnr\rrfrQr	rdrr3rrrra<s�z"TestPartialFile.test_seek_and_tellc
CsF|j�tdtjtjfd��|�t�|jdddttj���dS)Nz&foo%sbar%s^r�r7r<r9)	r�rnr\rrfrRr	rdrr3rrrr�As�zTestPartialFile.test_closeNrbrrrrrcsrcz6From 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@sFeZdZdd�Zdd�Zddd�Zdd	�Zd
d�Zdd
�Zdd�Z	dS)�MaildirTestCasecCs�tj|_tj�|j�r$t�|j�ntj�|j�r>t�|j�t�	|j�t�	tj�
|jd��t�	tj�
|jd��t�	tj�
|jd��d|_g|_dS)Nr
rrr7)
rr/�_dirrrrr �isfiler"r r	�_counter�	_msgfilesr3rrrr4TszMaildirTestCase.setUpcCsdtttj|j��t�tj�|j	d��t�tj�|j	d��t�tj�|j	d��t�|j	�dS)Nr
rr)
r��maprr"rmr�rmdirrr	rjr3rrrr6bs
zMaildirTestCase.tearDownFc	Cstt��d�}|j}|jd7_d�t|�t|�ddf�}tj�|jd|�}tj�|j||�}t|d��4}|j	�
|�|r�|�t�|�t
�Wd�n1s�0Yzt�||�WnLttf�yt|d��}|�t
�Wd�n1s�0YYn0|j	�
|�|S)Ni@Br7�.Z
myhostnameZmydomainrr9)r�r=rlr	�strrrrjr;rmr>rn�FROM_�
DUMMY_MESSAGE�link�AttributeError�PermissionError)	r�dirr��trIrjZtmpnameZnewname�fprrr�
createMessageis$
(.zMaildirTestCase.createMessagecCs2t�tj�|_|�|j���|�|j���dS)zTest an empty maildir mailboxN)r	r�rr/r�r�rKr3rrr�test_empty_maildir}sz"MaildirTestCase.test_empty_maildircCsL|�d�t�tj�|_|�|j���|�|j���|�|j���dS)Nr
�	rzr	r�rr/r�rGrKr�r3rrr�test_nonempty_maildir_cur�s

z)MaildirTestCase.test_nonempty_maildir_curcCsL|�d�t�tj�|_|�|j���|�|j���|�|j���dS)Nrr|r3rrr�test_nonempty_maildir_new�s

z)MaildirTestCase.test_nonempty_maildir_newcCsf|�d�|�d�t�tj�|_|�|j���|�|j���|�|j���|�|j���dS)Nr
rr|r3rrr�test_nonempty_maildir_both�s

z*MaildirTestCase.test_nonempty_maildir_bothN)F)
r%r&r'r4r6rzr{r}r~rrrrrriRs

riaKReturn-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<gkj@gregorykjohnson.com>zgkj+person@localhostz�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)zWed, 13 Jul 2005 17:23:11 -0400z."Gregory K. Johnson" <gkj@gregorykjohnson.com>zgkj@gregorykjohnson.comzSample messagez1.0z,multipart/mixed; boundary="NMuMz9nt05w80d4+"ZinlinezMutt/1.5.9i)zReturn-Pathz
X-Original-To�Delivered-To�Receivedr�r�r�r�r�r�r�r�zMime-VersionzContent-TypezContent-Dispositionr�)z1This is a sample message.

--
Gregory K. Johnson
zRH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs
3FYlAAAA
c@seZdZdd�ZdS)�MiscTestCasecCsddh}tj|t|d�dS)NrfZfcntl)�	blacklist)rZcheck__all__r	)rr�rrr�test__all__�szMiscTestCase.test__all__N)r%r&r'r�rrrrr��sr�cCst��dSr)rZ
reap_childrenrrrr�tearDownModule�sr��__main__)6rrr=r%rBrZ
email.messagerDrCrl�testrrlr�r	ryrr.ZTestCaser�r�rorur�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr:rSrcrrrsrirArNrEr
rr�r�r%�mainrrrr�<module>s�}$])
."	
VJ07S15R/
�