Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.9/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.9/test/__pycache__/test_mailbox.cpython-39.opt-2.pyc

a

��g@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�i�payload�part�r�-/usr/local/lib/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)r3�closer%r1r4rrr�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�������)r8r9r:r;r<r=)�appendr3�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-1r8)r3r@�
_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)Nr8rMzZSubject: =?unknown-8bit?b?RmFsaW5hcHThciBo4Xpob3pzeuFsbO104XNzYWwuIE3hciByZW5kZWx06Ww/?=

)rN�
splitlinesr3r@rOrrJ)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�
ValueErrorr3r@rN�flushrr�assertMailboxEmptyr4rrr�&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�assertRaisesr[r3r@rCrrr6rY)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Да, они летят.
)r3r@�_non_latin_bin_msgrrP�get_file�read�replacer�lineseprOr�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+rrb)
�tempfile�
TemporaryFile�writerF�seekr3r@rrP�split�rrirrrr�test_add_binary_file�s

*�z TestMailbox.test_add_binary_filecCsrt�d��2}|�|j�|�d�|j�|�}Wd�n1sB0Y|�|j�|��	d�|j�	d��dSrk)
rmrnrorcrpr3r@rrPrqrrrrr�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+rrb)
rmrnrorBrprGrHr3r@rrPrqrFrrrrr�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)	rGrHr3r@rD�StringIOrArrJrQrrr�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��|��dSrU)
rGrHrVrWr3r@rDrxrNrrr6rYr4rrr�!test_add_nonascii_StringIO_raises�sP
z-TestMailbox.test_add_nonascii_StringIO_raisescCs|�|jj�dSr)�_test_remove_or_delitemr3�remover4rrr�test_remove�szTestMailbox.test_removecCs|�|jj�dSr)r{r3�__delitem__r4rrr�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)Nrr8r9cs
�j�Sr�r3r��key0rrr�<lambda>��z5TestMailbox._test_remove_or_delitem.<locals>.<lambda>cs���Srrr)r��methodrrr��r�cs
�j�Srr�r)�key2rrrr��r�cs���Srrr)r�r�rrr��r�cs
�j�Srr�r)�key1rrrr��r�cs���Srrr)r�r�rrr��r�)r3r@rArrr`�KeyErrorrJ)rr�r)r�r�r�r�rrr{�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)Nrr8r9cs
�j�Srr�rr�rrr��r�z*TestMailbox.test_discard.<locals>.<lambda>cs
�j�Srr�rr�rrr��r�)r3r@rArr�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
Fr8�1
)r3r@rA�getrr�assertIsNone�assertIsr6r2r1)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�r�rr4rrr��r�z*TestMailbox.test_getitem.<locals>.<lambda>cs
�j�Srr�rr�rrr��r�)r3r@rArrr`r�r��rrrr�r�test_getitem�s
zTestMailbox.test_getitemcCsn|j�|jd�}|j�t�}|j�|�}|�|tj�|�|dd�|�|�	�d�|�
|j�|��dS)Nrr�r�r�)r3r@rArB�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�r3r@rArBrrPrOrF�rr�r�rrr�test_get_bytess�zTestMailbox.test_get_bytescCs\|j�|jd�}|j�t�}|�|j�|�|jd�|�|j�|��d�t�d��dS)Nr�
�r3r@rArBrrJrqr�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�)r3r@rArBrdrer�decoderfrrg)rr�r��fileZdata0Zdata1rrr�
test_get_files&&��zTestMailbox.test_get_filecCs,|j�t�}|j�|�}|��|��dSr)r3r@rBrdr6rhrrr�!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_iterationr3�iterkeysr4rrr�
test_iterkeys(szTestMailbox.test_iterkeyscCs|j|jjddd�dSr�)r�r3rKr4rrr�	test_keys,szTestMailbox.test_keyscCs|j|jjddd�dS�NFTr�)r�r3�
itervaluesr4rrr�test_itervalues0s�zTestMailbox.test_itervaluescCs|j|jjddd�dSr�)r�r3�__iter__r4rrr�	test_iter5s�zTestMailbox.test_itercCs|j|jjddd�dSr�)r�r3�valuesr4rrr�test_values:szTestMailbox.test_valuescCs|j|jjddd�dS�NTr�)r�r3�	iteritemsr4rrr�test_iteritems>s�zTestMailbox.test_iteritemscCs|j|jjddd�dSr�)r�r3rr4rrr�
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�r8)
Zfail�ranger?r3r@rA�listrr�set�
assertLess�intr)
rr�r�r�r�rrKr�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�rr8)�assertNotInr3r@rAr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)Nr8)r�rrr3r?r@rAr|)rr�rKrrrr�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)r3�__setitem__rr4rrr��r�z+TestMailbox.test_set_item.<locals>.<lambda>cs
�jdSr�r�rr4rrr��r�r9)
r3r@rArrJrBrr`r�rr�rr4r�
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)r3rJr�rrrrr��r�z(TestMailbox.test_clear.<locals>.<lambda>)r�r3r@rArrrJ�clearrr`r�)r�
iterationsrKrrr�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)Nrr8r�r9z2
r�)	r3r@rAr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�Srr�rr�rrr��r�z*TestMailbox.test_popitem.<locals>.<lambda>)r�r?r3r@rA�popitemrr�rr�r�indexrr`r�)rr�rKr�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�r:z	changed 2r�cs�j�dd��jdi�S)Nr�r�r�)r3�updaterArr�rrr��s

�z)TestMailbox.test_update.<locals>.<lambda>)r3r@rAr�rBrrrJrr`r�)rr�r�rr�r�test_update�sR�����������zTestMailbox.test_updatecCs|�|jjd�dS�NT)�_test_flush_or_closer3rXr4rrr�
test_flush�szTestMailbox.test_flushcCsZ|j�|jd�|j�|jd�|j��|j��|j��|j��|j��dS�Nrr8)r3r@rArXr�r4rrr�test_popitem_and_flush_twice�s



z(TestMailbox.test_popitem_and_flush_twicecCsZ|�tj�|����|j��|�tj�|����|j��|�tj�|����dSr)	�assertFalserrr"�_get_lock_pathr3�lockr
�unlockr4rrr�test_lock_unlock�s


zTestMailbox.test_lock_unlockcCs|�|jjd�dS�NF)r�r3r6r4rrr�
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�rA��.0rr4rr�
<listcomp>r�z4TestMailbox._test_flush_or_close.<locals>.<listcomp>r:rr8r9)r�r3r@r6r2r1rKrrrrJ)rr�Zshould_call_close�contentsZoldboxrKrrr4rr�s

z TestMailbox._test_flush_or_closec	srt�t�tt�t�fD]8}t����j�|������	�t�
dtj�
���qt�����t��fdd��dS)Nrbcs�j�d��Sr)r3�
_dump_messager��outputrrrr�!r�z/TestMailbox.test_dump_message.<locals>.<lambda>)rrCrBrDrErFr3r�r�getvaluerfrrgrOr`�	TypeError)r�inputrr�r�test_dump_messages
�
��zTestMailbox.test_dump_messagecCs
|jdS)Nz.lock)r1r4rrrr�#szTestMailbox._get_lock_path)r�)r�)r�)r�)r�)9r&r'r(ZmaxDiffr2rAr5r7rL�textwrap�dedentrNrRrTrZrarOrcrjrsrtrvryrzr}rr{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�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)rKrr�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�)rJrr�rrr�<r�cs
��d�Sr�)rPrr�rrr�=r�cs
��d�Sr�)rdrr�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)rXrr�rrr�Fr�cs���Sr)r�rr�rrr�Gr�cs���Sr)r�rr�rrr�Hr�cs���Sr)r6rr�rrr�Ir�)r	�Mailboxr`�NotImplementedErrorr4rr�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/r5r�name�sys�platformr3�colonr4rrrr5Ps
zTestMaildir.setUpcCs"|�t�tj�|jd��g�dS�N�tmp)rr�listdirr�joinr1r4rrrrYUszTestMaildir.assertMailboxEmptycCs`t�|jd�}|�d�|�d�|j�|�}|�tj	�
tj	�|jdd||jj
f���dS)Nr�curr�z%s%sfoo)r	r)rA�
set_subdir�set_infor3r@r
rrr"r
r1r)rrrrrr�test_add_MMXs


�zTestMaildir.test_add_MMcCsnt�|jd�}|�d�|�d�|j�|�}|j�|�}|�|tj�|�	|�
�d�|�	|��d�dS)Nrr�RF�FR)r	r)rAr�	set_flagsr3r@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�newZPTr8r�r�r9z2,Sr:�Sz3
)r	r)rArr3r@r�rrrrr
)rr�rr�msg1�msg2rrr�test_set_MMls(



zTestMaildir.test_set_MMcCsvt�|jd�}|�d�|�d�|j�|�}Gdd�dtj�}tj|j|d�}|jj	|_	|�
|�}|�||�dS)Nrrrc@seZdZdS)z8TestMaildir.test_consistent_factory.<locals>.FakeMessageN)r&r'r(rrrr�FakeMessage�sr�r�)r	r)rArrr3r@r�r1rr�r)rrrrr�rrrr�test_consistent_factory�s



z#TestMaildir.test_consistent_factorycCsH|��t�|j�|_|��|�|j�|j|jdd�|_|��dS)Nr)r7r	r�r1r3�
_check_basicsr%r2r4rrr�test_initialize_new�szTestMaildir.test_initialize_newc	CsJ|��dD]"}t�tj�tj�|j|���qt�|j�|_	|�
�dS)N�r�rrr)r7r�mkdirr�normpathr
r1r	r�r3r)r�subdirrrr�test_initialize_existing�s
 z$TestMaildir.test_initialize_existingcCsn|�|jjtj�|j��|�|jj|�dD]:}tj�|j|�}t�|�tj	}|�
t�|�d|�q.dS)Nr zNot a directory: '%s')rr3r1rr�abspathr2r
�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�threer:)r+r,r-�r3�
add_folderrr�list_foldersr�r4rrr�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)r3r/�
get_folderr@rAr
rrr r
r1rrJrK)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,r9)r+r,r8)r,r-)r,r-r�r3r/rrr0r�Z
remove_folderr4rrr�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@�r9)rrr
r1�openror3Zcleanr
r"r&�utime�time�st_mtimer�)rZfoo_pathZbar_pathriZfoo_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'r8z,Non-monotonic milliseconds: '%s' before '%s'r9z(Process ID mismatch: '%s' should be '%s'r:z(Non-sequential counter: '%s' before '%s'r;z'Host name mismatch: '%s' should be '%s'z%Wrong file count: '%s' should be '%s')�socket�gethostnamerfr�getpid�re�compiler�r3Z_create_tmprrqrrr%r
r1�match�assertIsNotNone�groupsZassertGreaterEqualr�rorFrprer6rr	)
rr��hostname�pid�patternZprevious_groups�xZtmp_file�head�tailrHrJZ
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)Nrr8rr9)	rr3�_tocr@rA�_refreshrrr
r�rrr�test_refreshs"
��
�zTestMaildir.test_refreshcCsx|j�|jd�}|j�|jd�}|�|j�|_|�|jji�d|j_|j��|�t	|jj�
��t	||g��dS)Nrr8���)r3r@rAr2r1rrR�_skewfactorrS�sortedrKr�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��r3�_lookuprr4rrr�9r�z)TestMaildir.test_lookup.<locals>.<lambda>rrcs�j���SrrYrr�rrr�Ar�)r`r�r3r@rArrZrrr
r|r1rRrXr4rr�r�test_lookup7s
zTestMaildir.test_lookupcCs|j��|j��dSr)r3r�r�r4rrrr�Ds
zTestMaildir.test_lock_unlockcCsLdd�}|j|j|d�}|�d�}|�|j|�|�d�}|�|j|�dS)NcSsdSrr��srrr�
dummy_factoryLsz.TestMaildir.test_folder.<locals>.dummy_factoryrr5)r2r1r/r�r3)rr^r�ZfolderZ
folder1_aliasrrr�test_folderIs

zTestMaildir.test_foldercCsHtd�D]}|j�t�t��qt�tj�	|j
dd��|jD]}q>dS)Nr�rz	stray-dir)r�r3r@r	rrBrr!rr
r1)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)rArrar3r@rr
r1rZr&�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
maildirfolderrc)
rrar3r/rr
r1r&rdr�)rrergr�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)rrr<r9rUcs�jj�uSr)r3rRr�Zorig_tocrrr�	refreshed�sz*TestMaildir.test_reread.<locals>.refreshedrz
stray-file)r3rSrr=rr
r1r>rVrRr�rZcreate_empty_filer#r
)rr#rl�filenamerrkr�test_reread~s
�



zTestMaildir.test_reread)N)N)r�)r&r'r(r2r5rYrrrrrr$rr1r6r9r@rQrTrXr[r�r_r`�unittest�
skipUnless�hasattrrrfrjrnrrrrr�Ls4
		
		

/



r�c@seZdZdd�Zdd�ZdS)�_TestSingleFilecCsrt�|j�j}|j�|jd�|j��t�|j�j}|�||�|j�	�|�
|j�|_|�t|j�d�dSr�)rr&r1�st_inor3r@rArXrr6r2r)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�rr8)rr&r1rd�chmodr3r@rAr|rXr)rr)rrrr�test_permissions_after_flush�s
z,_TestSingleFile.test_permissions_after_flushN)r&r'r(rtrvrrrrrr�srrcs�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.*�
�superr7r3r6r%r1�glob�escaperr#�rZlock_remnant��	__class__rrr7�s


z_TestMboxMMDF.tearDowncCs>t|j�� }|�|��g�Wd�n1s00YdSr�r<r1r�	readlines�rrirrrrY�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��r3r@r�get_fromrrQrrr�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�rQrrr�test_add_from_bytes�sz!_TestMboxMMDF.test_add_from_bytescCs*tjtjfD]}|d�}|j�|�}qdS)Nr�)r	r*r-r3r@)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�r4rrr�
r�z6_TestMboxMMDF.test_open_close_open.<locals>.<listcomp>r:)r�r3r@r6rr�getmtimer1r2rrr�rrJ)rr�r�mtimerrr4r�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)Nr:r�rb)r3r@rBr�rA�_filerXrprer6r<r1rr2)rrr�rirrr�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�cr8�p)�exitcode)rCr�Z
addCleanupr6rr�r3r��send�recvr��_exitr`r	ZExternalClashErrorrZwait_process)r�c�prLrrr�test_lock_conflict's,



�
�

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

body
)	r3r@rXr6r2r1r�r
Z_locked)rrr�r�rrr�test_relockLs



z_TestMboxMMDF.test_relock)r&r'r(r7rYr�r�r�r�r�r�r�rorprqrrCr�r��
__classcell__rrr~rrw�s#rwc@s@eZdZddd�Ze�eed�d�dd��Zdd	�Z	d
d�Z
dS)
�TestMboxNcCst�||�Sr)r	�mboxr�rrrr�^r�zTestMbox.<lambda>rarbc	Cs�zVt�d�}|j��t�|j�tj|jdd�|_|j�d�|j��Wt�|�nt�|�0t�	|j�}|j
}|�|d@�dS)N�?T)Zcreater�rc)rrar3r6r#r1r	r�r@r&rdr�)rZ	old_umaskrhrirrr�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_payloadr3r@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

0rUz0

z
From: foo

0
)r3r@r<r1rer)rri�datarrr�test_message_separator}s2zTestMbox.test_message_separator)N)r&r'r(r2rorprqrr�r�r�rrrrr�\s



r�c@seZdZddd�ZdS)�TestMMDFNcCst�||�Sr)r	ZMMDFr�rrrr��r�zTestMMDF.<lambda>)N)r&r'r(r2rrrrr��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)rrr	r1r4rrrrY�szTestMH.assertMailboxEmptycCsX|j�d�|j�d�|j�d�|�t|j���d�|�t|j���td��dSr*r.r4rrrr1�s�zTestMH.test_list_folderscCs�dd�}|�|j|�|_|j�d�}|j�d�}|�|jd�|�tj	�
tj	�|jd���|j�d�}|�|�
|��d�|jd�|�|j|jj�|�|j|jj�dS)NcSsdSrrr\rrrr^�sz-TestMH.test_get_folder.<locals>.dummy_factoryr2r�r)r2r1r3r/r3r@rAr
rrr r
rrJrKr�)rr^Z
new_folderr4r5rrrr6�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�dSr7r8r4rrrr9�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�r8)r��repliedr��r�r�r��flagged)r�r�r�r�)
rr3�
get_sequencesr	r+rA�add_sequencer@�
set_sequencesr|�rr�r�rr�rrr�test_sequences�s(
�
��zTestMH.test_sequencescCs6t�|jd�}|�d�|j�|�}|j�|�}dS)Nrr�)r	r+rAr�r3r@r�)rr�r�Zrefmsg0rrr�test_issue2625�s
zTestMH.test_issue2625cCs@t�|jd�}|j�|�}|j��|j�|�|j��dS)Nr)r	r+rAr3r@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)
Nrr8r9r:r��unseenr�r�)r�r�r�r�r�)r�r�r�r�)r8r9r:)r8r9r:r;r<)
r	r+rAr�r3r@rr�r|�packrKr�r�)	rr�rrZmsg3r�r�r�Zkey3rrr�	test_pack�sZ����
�


��zTestMH.test_packcCstj�|jd�S)Nz.mh_sequences.lock)rrr
r1r4rrrr�szTestMH._get_lock_path)N)
r&r'r(r2rYr1r6r9r�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�rrrrYszTestBabyl.assertMailboxEmptycsJt���|j��|�|j�t�t�|j�d�D]}t�	|�q6dSrxryr}r~rrr7s


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�r8)r��answeredr�r��blah�filed)r�r�r�)rr3�
get_labelsr	r,rA�	add_labelr@�
set_labelsr�r|r�rrr�test_labels%s 


�zTestBabyl.test_labels)N)r&r'r(r2rYr7r�r�rrr~rr�s
r�c@seZdZdd�Zdd�ZdS)�FakeFileLikeObjectcCs
d|_dSr���closedr4rrr�__init__:szFakeFileLikeObject.__init__cCs
d|_dSr�r�r4rrrr6=szFakeFileLikeObject.closeN)r&r'r(r�r6rrrrr�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��filesr4rrrr�CszFakeMailBox.__init__cCs
|j|Sr)r�rQrrrrdGszFakeMailBox.get_fileN)r&r'r(r�rdrrrrr�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)rr0r1r4rrrr5[szTestMessage.setUpcCs|�|j�dSr)r%r1r4rrrr7^szTestMessage.tearDowncCs,t�t�}|�|�}|�|�|�|�dSr)rrCrBr2�_post_initialize_hookr�r�eMMrrrr�test_initialize_with_eMMas


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

z'TestMessage.test_initialize_with_stringcCsbt|jd��B}|�t�|�d�|�|�}|�|�|�|�Wd�n1sT0YdS)Nrur)r<r1rorBrpr2r�r�rrirrrr�test_initialize_with_filens



z%TestMessage.test_initialize_with_filecCsbt|jd��B}|�t�|�d�|�|�}|�|�|�|�Wd�n1sT0YdS)Nrlr)r<r1rorFrpr2r�rr�rrr� test_initialize_with_binary_filews



z,TestMessage.test_initialize_with_binary_filecCsn|��}|�|�|�|tjj�|�|tj�|�||j�|�|��g�|�	|�
��|�|���dSr)
r2r�rrrrr	rrKr�rr�rr�rrr�test_initialize_with_nothing�s
z(TestMessage.test_initialize_with_nothingcs��t�fdd��dS)Ncs��t��Sr)r2�objectrr4rrr��r�z9TestMessage.test_initialize_incorrectly.<locals>.<lambda>)r`r�r4rr4r�test_initialize_incorrectly�sz'TestMessage.test_initialize_incorrectlycCs:t�t�}|�t�}|jD]}|�||jd�|��qdS)Nz{} attribute does not exist)rrCrBr2�__dict__r�format)rr�r�attrrrr�test_all_eMM_attributes_exist�s



�z)TestMessage.test_all_eMM_attributes_existcCs*t�t�}|��}|�|�|�|�dSr)rrCrBr2Z_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>)r2r.r�rrrr`r�)rr�rr�r�test_explain_to�s

zTestMessage.test_explain_tocCsdSrrr�rrrr��sz!TestMessage._post_initialize_hookN)r&r'r(r	rr2r5r7r�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_subdir�_infor�rrrr��sz(TestMaildirMessage._post_initialize_hookcs�t�t��|����d���d�|����d���d�|����d�|�t�fdd��|����d���d�|����d�|���dS)Nrrcs
��d�Sr)rr�rrrr��r�z0TestMaildirMessage.test_subdir.<locals>.<lambda>)	r	r)rBrrrr`rWrr4rr�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)rBrrrr�add_flag�remove_flagrr�rrr�
test_flags�s




zTestMaildirMessage.test_flagscCsDt�t�}|�t|��t���d�|�d�|�|��d�dS)N�<�)	r	r)rBr��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)rBr�get_infor
r`r�rr4rr�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)rBrr�rrr
r�r�rr�rrr�test_info_and_flags�s




z&TestMaildirMessage.test_info_and_flagsN)r&r'r(r	r)r2r�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	rrBZ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*rBr��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*rBrrrr�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})rIrFrHr�)rrZsenderrrrr�s�z _TestMboxMMDFMessage._check_from)N)r&r'r(r	Z_mboxMMDFMessager2r�r�r�r�r�rrrrr��sr�c@seZdZejZdS)�TestMboxMessageN)r&r'r(r	r*r2rrrrr�'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+rBrr�r�r�Zremove_sequencer�rrrr�3s(







zTestMHMessage.test_sequencesN)r&r'r(r	r+r2r�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,rBrr�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,rB�get_visiblerrKr�rZset_visible�update_visible)rrZvisible�headerrrr�test_visibleis(

zTestBabylMessage.test_visibleN)	r&r'r(r	r,r2r�r�rrrrrr�Ksr�c@seZdZejZdS)�TestMMDFMessageN)r&r'r(r	r-r2rrrrr�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	rrBr)rr��	msg_plainrrrr�test_plain_to_x�s

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

z%TestMessageConversion.test_x_to_plaincCs"|jD]}|t�}|�|�qdSr)r.rFr)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�r4rrr�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)rBr�)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.rBr�r�r�)rZclass1�sourcer$Z
type_specificr�rrr�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)rBrrr�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�)rZRDFAr�zMAILER-DAEMON %sr�RODFA)r	r*r-r)rBr�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)rBrrr+r��rrrr r!rrr�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)rBrrr,r�r#rrr�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-rBr�r>rrr)rrr�r)rr��msg_mboxMMDFrr r!rrrr�test_mboxmmdf_to_maildir�s


�z.TestMessageConversion.test_mboxmmdf_to_maildircCsltjtjfD]Z}|t�}|�d�|�d�tjtjfD],}||�}|�|��d�|�|��d�q8qdS)Nrr�)	r	r*r-rBrr�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-rBrrr+r�)rr�r)rr r!rrr�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-rBrrr,r�)rr�rrr r!rrr�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�rr�r�r�r)r	r+rBr�rr)rr�rrr r!rrrr�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+rBr�r*r-rr)rrr r!rr�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+rBr�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+rBr�rr,r�r0rrr�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�r7r�r�r&r�r�r%r8r�ZPRT)r	r,rBr�rr)rr�rrr r!r�labelrrr�test_babyl_to_maildirNs


z+TestMessageConversion.test_babyl_to_maildircCs�d}|D]B\}}tjtjfD],}t�t�}|�|�|�||���|�qqt�t�}dD]}|�|�qZtjtjfD]}|�||���d�qvdS)N)r2)r&ZROD)r�r�)r�r3)r%r�)r8r�)r�r�r9ZODA)r	r*r-r,rBr�rr)rrr r!r�rr;rrr�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�r%r8r�r9)r	r,rBr�rr+r�r:rrr�test_babyl_to_mhps�


�z&TestMessageConversion.test_babyl_to_mhcCs�t�t�}|��dD]}|�|�qt�|�}|�|��gd��|�|����|�����|����D] }|�|��||��|�qldS)Nr9)	r	r,rBrr�rr�rrK)rrr;rrrrr�test_babyl_to_babyl�s

z)TestMessageConversion.test_babyl_to_babylN)r&r'r(r	r
rr
rrr"r$r'r*r+r,r-r1r4r5r6r<r=r>r?rrrrr�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�barr8sarr9sba������r)rprre�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�foorA�fred�bobr9�or=sfri����sed)rrgrOrpr�readliner�rrFrgrrr�_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)
NrrHrArIrJr9r:r;rC)rrgrOrprr�rrMrrr�_test_readlines�s 

�
�
�z!TestProxyFileBase._test_readlinescCsztj��}|�d�t|�}|�t|�d|�|�t|�d|�|�t|�d|�|�t|�d�|�tt|�dS)NrrHrArIrJ)	rrgrOrp�iterr�nextr`�
StopIteration)rrFrg�iteratorrrr�_test_iteration�s

z!TestProxyFileBase._test_iterationcCs�tj��}|�d�|�|��d�|�|�t|��|�|�dd�|�|�dt|��d|�|�dt|�d�|�|�d�d�|�dd�|�|��d|d|�|�d	�|�|���dS)
Nr:r9r8rDrUrArrK�d)	rrgrOrpr�tellrerr�rMrrr�_test_seek_and_tell�s


z%TestProxyFileBase._test_seek_and_tellcCs8|�|j�|��|�|j�|��|�|j�dSr)r�r�r6r
rErrr�_test_close�s
zTestProxyFileBase._test_closeN)	r&r'r(rGrNrOrTrWrXrrrrr@�s
r@c@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�
TestProxyFilecCstj|_t|jd�|_dS�Nrl�rr0r1r<r�r4rrrr5�szTestProxyFile.setUpcCs|j��|�|j�dSr�r�r6r%r1r4rrrr7�s
zTestProxyFile.tearDowncCsx|j�d�|j��}t�|j�}|�|��|�|�|j��|�t�|jd�}|�|��d�|�|j��|�dS)NrHr)r�rorVr	�
_ProxyFiler)r�posZproxy0Zproxy1rrr�test_initialize�s
zTestProxyFile.test_initializecCs"|j�d�|�t�|j��dS)NrA)r�rorGr	r]r4rrr�	test_read�szTestProxyFile.test_readcCs8|j�tdtjtjtjfd��|�t�|j��dS�Nzfoo%sbar%sfred%sbobr�)r�ro�bytesrrgrNr	r]r4rrr�
test_readline�s��zTestProxyFile.test_readlinecCs8|j�tdtjtjtjfd��|�t�|j��dSra)r�rorbrrgrOr	r]r4rrr�test_readliness��zTestProxyFile.test_readlinescCs8|j�tdtjtjtjfd��|�t�|j��dSra)r�rorbrrgrTr	r]r4rrr�test_iterations��zTestProxyFile.test_iterationcCs4|j�tdtjtjfd��|�t�|j��dS�Nz
foo%sbar%sr�)r�rorbrrgrWr	r]r4rrr�test_seek_and_tellsz TestProxyFile.test_seek_and_tellcCs4|j�tdtjtjfd��|�t�|j��dSrf)r�rorbrrgrXr	r]r4rrrr�szTestProxyFile.test_closeN�r&r'r(r5r7r_r`rcrdrergr�rrrrrY�srYc@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestPartialFilecCstj|_t|jd�|_dSrZr[r4rrrr5szTestPartialFile.setUpcCs|j��|�|j�dSrr\r4rrrr7s
zTestPartialFile.tearDowncCs\|j�tdtjdd��|j��}t�|jdd�}|�|��d�|�|j��|�dS)Nr�r�r�r9r<r)	r�rorbrrgrVr	�_PartialFiler)rr^rFrrrr_s

zTestPartialFile.test_initializecCs,|j�tdd��|�t�|jdd��dS)Nz	***bar***r�r:r=)r�rorbrGr	rjr4rrrr`&szTestPartialFile.test_readc
CsJ|j�tdtjtjtjfd��|�t�|jdddttj���dS)Nz!!!!!foo%sbar%sfred%sbob!!!!!r�r<�r:)	r�rorbrrgrNr	rjrr4rrrrc*s
���zTestPartialFile.test_readlinec
CsJ|j�tdtjtjtjfd��|�t�|jdddttj���dS)Nzfoo%sbar%sfred%sbob?????r�r�
r:)	r�rorbrrgrOr	rjrr4rrrrd0s
���zTestPartialFile.test_readlinesc
CsJ|j�tdtjtjtjfd��|�t�|jdddttj���dS)Nz____foo%sbar%sfred%sbob####r�r;�r:)	r�rorbrrgrTr	rjrr4rrrre6s
���zTestPartialFile.test_iterationc
CsF|j�tdtjtjfd��|�t�|jdddttj���dS)Nz(((foo%sbar%s$$$r�r:�	r9)	r�rorbrrgrWr	rjrr4rrrrg<s�z"TestPartialFile.test_seek_and_tellc
CsF|j�tdtjtjfd��|�t�|jdddttj���dS)Nz&foo%sbar%s^r�r8r=r:)	r�rorbrrgrXr	rjrr4rrrr�As�zTestPartialFile.test_closeNrhrrrrrisriz6From 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)Nrrrr8)
rr0�_dirrrr r!�isfiler#r!r
�_counter�	_msgfilesr4rrrr5TszMaildirTestCase.setUpcCsdtttj|j��t�tj�|j	d��t�tj�|j	d��t�tj�|j	d��t�|j	�dS)Nrrr)
r��maprr#rsr�rmdirrr
rpr4rrrr7bs
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@Br8�.Z
myhostnameZmydomainrr:)r�r>rrr
�strrrrpr<rsr?ro�FROM_�
DUMMY_MESSAGE�link�AttributeError�PermissionError)	r�dirr��trLrmZtmpnameZnewname�fprrr�
createMessageis$
(.zMaildirTestCase.createMessagecCs2t�tj�|_|�|j���|�|j���dSr)r	r�rr0r�r�rQr4rrr�test_empty_maildir}sz"MaildirTestCase.test_empty_maildircCsL|�d�t�tj�|_|�|j���|�|j���|�|j���dS)Nr�	r�r	r�rr0r�rIrQr�r4rrr�test_nonempty_maildir_cur�s

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

z)MaildirTestCase.test_nonempty_maildir_newcCsf|�d�|�d�t�tj�|_|�|j���|�|j���|�|j���|�|j���dS)Nrrr�r4rrr�test_nonempty_maildir_both�s

z*MaildirTestCase.test_nonempty_maildir_bothN)F)
r&r'r(r5r7r�r�r�r�r�rrrrroRs

roaKReturn-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�rrzMime-VersionzContent-TypezContent-Dispositionr�)z1This is a sample message.

--
Gregory K. Johnson
zRH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs
3FYlAAAA
c@seZdZdd�ZdS)�MiscTestCasecCsddh}tj|t|d�dS)NrgZfcntl)�	blacklist)rZcheck__all__r	)rr�rrr�test__all__�szMiscTestCase.test__all__N)r&r'r(r�rrrrr��sr�cCst��dSr)r�
reap_childrenrrrr�tearDownModule�sr��__main__)6rrr>r&rCrZ
email.messagerFrDrm�testrror�r	r{rr/ZTestCaser�r�rrrwr�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr@rYrirxryrorBrOrFr
rr�r�r&�mainrrrr�<module>s�}$])
."	
VJ07S15R/
�



Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists