Your IP : 216.73.216.196


Current Path : /opt/alt/python310/lib64/python3.10/test/__pycache__/
Upload File :
Current File : //opt/alt/python310/lib64/python3.10/test/__pycache__/test_mailbox.cpython-310.opt-2.pyc

o

0�i)o�@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
Z
ddlZddlZddlZddlZGdd�d�ZGdd�de�ZGdd	�d	eej�ZGd
d�deej�ZGdd
�d
e�ZGdd�de�ZGdd�deej�ZGdd�deej�ZGdd�deej�ZGdd�deej�ZGdd�d�ZGdd�dej�ZGdd�dej�Z Gdd�deej�Z!Gd d!�d!e!ej�Z"Gd"d#�d#�Z#Gd$d%�d%e#e!�Z$Gd&d'�d'e!ej�Z%Gd(d)�d)e!ej�Z&Gd*d+�d+e#e!�Z'Gd,d-�d-eej�Z(Gd.d/�d/e�Z)Gd0d1�d1e)ej�Z*Gd2d3�d3e)ej�Z+d4Z,d5Z-Gd6d7�d7ej�Z.d8Z/e/�0d9�Z1id:d;�d<d=�d>d=�d?d@�d>dA�d?dB�d?dC�d?dD�dEdF�dGdH�dIdJ�dKdL�dMdN�dOdP�dQdR�dSdT�Z2dUZ3GdVdW�dWej�Z4dXdY�Z5e6dZk�re�7�dSdS)[�N)�support)�	os_helperc@s8eZdZejejejejejej	fZ
dd�Zdd�ZdS)�TestBasecCs�|�|tjj�|�|tj�t��D]
\}}|�||�|��q|�	|�
��|�t|�
��tt��tt�D] \}}|�
|�}|�|tjj�|�|tj�|�|�
�|�q8dS�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�8/opt/alt/python310/lib64/python3.10/test/test_mailbox.py�
_check_samples
�zTestBase._check_samplecCs8tj�|�r
t�|�dStj�|�rt�|�dSdSr)�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)dcdEdF�Z*dGdH�Z+dcdIdJ�Z,dKdL�Z-dcdMdN�Z.dOdP�Z/dcdQdR�Z0dSdT�Z1dUdV�Z2dWdX�Z3dYdZ�Z4d[d\�Z5d]d^�Z6d_d`�Z7dadb�Z8dS)d�TestMailboxNzFrom: foo

%s
cCs&tj|_|�|j�|�|j�|_dSr)r�TESTFN�_pathr%�_factory�_box�rrrr�setUp6szTestMailbox.setUpcC�|j��|�|j�dSr)r3�closer%r1r4rrr�tearDown;�
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�tjt�t
�dd	���Wd�n1s�wY|�t|j�d
�|�|j�|d�|jd�dD]}|�|j||�q�dS)Nr�������utf-8��encoding�)r:r;r<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-1r:)r3rE�
_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)Nr:rRzZSubject: =?unknown-8bit?b?RmFsaW5hcHThciBo4Xpob3pzeuFsbO104XNzYWwuIE3hciByZW5kZWx06Ww/?=

)rS�
splitlinesr3rErTrrO)rZsubjrrrr�&test_invalid_nonascii_header_as_stringcs
�z2TestMailbox.test_invalid_nonascii_header_as_stringcCsb|�td��|j�|j�Wd�n1swY|j��|�t|j�d�|��dS�Nz
ASCII-onlyr)	�assertRaisesRegex�
ValueErrorr3rErS�flushrr�assertMailboxEmptyr4rrr�&test_add_nonascii_string_header_raisesjs�
z2TestMailbox.test_add_nonascii_string_header_raisescCs�dd�}t�|tjjd|�|�t��|j�t�	d��Wd�n1s'wY|�
t|j�d�|j��|�
�dS)Nc_std��)Nza fake error)�	Exception)�args�kwrrr�raiserrszETestMailbox.test_add_that_raises_leaves_mailbox_empty.<locals>.raiserZflattenuFrom: Alphösor)rZpatchr�	generatorZBytesGenerator�assertRaisesr`r3rErHrrr7r^)rrcrrr�)test_add_that_raises_leaves_mailbox_emptyqs�
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

        Да, они летят.
        r@c	Cs�|j�|j�}|�|j�|�|j�|j�|��}|�|��|j�dtj	�
���Wd�n1s3wY|�|j|��d�dS)N�
uДа, они летят.
)r3rE�_non_latin_bin_msgrrU�get_file�read�replacer�lineseprTr�rr�frrr�test_add_8bit_body�s�
����zTestMailbox.test_add_8bit_bodycCsnt�d��}|�t�|�d�|j�|�}Wd�n1s wY|�|j�|��	d�t�	d��dS�N�wb+rrg)
�tempfile�
TemporaryFile�writerK�seekr3rErrU�split�rrnrrrr�test_add_binary_file�s

��z TestMailbox.test_add_binary_filecCsrt�d��}|�|j�|�d�|j�|�}Wd�n1s!wY|�|j�|��	d�|j�	d��dSrp)
rrrsrtrhrur3rErrUrvrwrrr�test_add_binary_nonascii_file�s
�
�z)TestMailbox.test_add_binary_nonascii_filec	Cs�tjddd��-}|�t�|�d�|�t��|j�|�}Wd�n1s(wYWd�n1s7wY|�	|j�
|��d�t�d��dS)N�w+r@rArrg)
rrrsrtrGrurLrMr3rErrUrvrKrwrrr�test_add_text_file_warns�s

����z$TestMailbox.test_add_text_file_warnscCs`|�t��|j�t�|jd��}Wd�n1swY|�|j�|�|jd�dS)N�0)	rLrMr3rErI�StringIOrFrrOrVrrr�test_add_StringIO_warns�s�z#TestMailbox.test_add_StringIO_warnsc	Cs�|�t��(|�td��|j�t�|j��Wd�n1s!wYWd�n1s0wY|�	t
|j�d�|j��|��dSrZ)
rLrMr[r\r3rErIr}rSrrr7r^r4rrr�!test_add_nonascii_StringIO_raises�s���
z-TestMailbox.test_add_nonascii_StringIO_raisescC�|�|jj�dSr)�_test_remove_or_delitemr3�remover4rrr�test_remove��zTestMailbox.test_removecCr�r)r�r3�__delitem__r4rrr�test_delitem�r�zTestMailbox.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)Nrr:r;c�
�j�Sr�r3r��key0rrr�<lambda>��
z5TestMailbox._test_remove_or_delitem.<locals>.<lambda>c����Srrr)r��methodrrr���cr�rr�r)�key2rrrr��r�cr�rrr)r�r�rrr��r�cr�rr�r)�key1rrrr��r�cr�rrr)r�r�rrr��r�)r3rErFrrre�KeyErrorrO)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)Nrr:r;cr�rr�rr�rrr��r�z*TestMailbox.test_discard.<locals>.<lambda>cr�rr�rr�rrr��r�)r3rErFrr�discardrer�)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
Fr:�1
)r3rErF�getrr�assertIsNone�assertIsr7r2r1)rr�rr�rrr�test_get�s
zTestMailbox.test_getcsv�j��jd���j�}��|dd���|��d���t�fdd���j�����t��fdd��dS)Nrr�r�r�c�
�jdS�Nr�r�rr4rrr��r�z*TestMailbox.test_getitem.<locals>.<lambda>cr�rr�rr�rrr��r�)r3rErFrrrer�r��rrrr�r�test_getitem�s
zTestMailbox.test_getitemcCsn|j�|jd�}|j�t�}|j�|�}|�|tj�|�|dd�|�|�	�d�|�
|j�|��dS)Nrr�r�r�)r3rErFrG�get_messagerr
r	rrr)rr�r��msg0rrr�test_get_message�szTestMailbox.test_get_messagecCsV|j�|jd�}|j�t�}|�|j�|�|jd�d��|�|j�|�t�dS)Nr�ascii�r3rErFrGrrUrTrK�rr�r�rrr�test_get_bytess�zTestMailbox.test_get_bytescCs\|j�|jd�}|j�t�}|�|j�|�|jd�|�|j�|��d�t�d��dS)Nr�
�r3rErFrGrrOrvr�rrr�test_get_string
s�zTestMailbox.test_get_stringcCs�|j�|jd�}|j�t�}|j�|��}|��}Wd�n1s$wY|j�|��}|��}Wd�n1s>wY|�|�d��t	j
d�|jd�|�|�d��t	j
d�t�dS)Nrr�r�)r3rErFrGrirjr�decoderkrrl)rr�r��fileZdata0Zdata1rrr�
test_get_files
�
���zTestMailbox.test_get_filecCs,|j�t�}|j�|�}|��|��dSr)r3rErGrir7rmrrr�!test_get_file_can_be_closed_twice"sz-TestMailbox.test_get_file_can_be_closed_twicecC�|j|jjddd�dS�NTF��do_keys�	do_values)�_check_iterationr3�iterkeysr4rrr�
test_iterkeys)�zTestMailbox.test_iterkeyscCr�r�)r�r3rPr4rrr�	test_keys-r�zTestMailbox.test_keyscCr��NFTr�)r�r3�
itervaluesr4rrr�test_itervalues1�
�zTestMailbox.test_itervaluescCr�r�)r�r3�__iter__r4rrr�	test_iter6r�zTestMailbox.test_itercCr�r�)r�r3�valuesr4rrr�test_values;r�zTestMailbox.test_valuescC�|j|jjddd�dS�NTr�)r�r3�	iteritemsr4rrr�test_iteritems?r�zTestMailbox.test_iteritemscCr�r�)r�r3rr4rrr�
test_itemsDr�zTestMailbox.test_itemsc
Cs.|�D]}|�d�qgg}}t|�D]}|�|j�|j|��|�|j|�q|r5|s5t|��}	n!|r?|s?t|��}
ngg}	}
|�D]\}}|	�|�|
�|�qG|rl|�t|�t|	��|�t	|�t	|	��|r�d}|
D]}|�|dd�|�
t|���|�|d7}qr|�t|�|�dSdS)Nz	Not emptyrr�r�r:)
Zfail�rangerDr3rErF�listrr�set�
assertLess�intr)
rr�r�r�r�rrPr�rZ
returned_keysZreturned_valuesr�countrrrr�Hs2




�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�rr:)�assertNotInr3rErFr
r�r�rrr�
test_containscs zTestMailbox.test_containscCs�g}t|�D]"}|�t|j�|�|�|j�|j|��|�t|j�|d�qt|�D]"}|�t|j�||�|j�||�|�t|j�||d�q-dS)Nr:)r�rrr3rDrErFr�)rr�rPrrrr�test_lenvs�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���z+TestMailbox.test_set_item.<locals>.<lambda>cr�r�r�rr4rrr��r�r;)
r3rErFrrOrGrrer�rr�rr4r�
test_set_item�s<����
�
�zTestMailbox.test_set_itemcs�g}t|�D]}�j��j|�qt|�D]\}����j����j|�q�j����t�j�d�t|�D]\}���	t
��fdd��q:dS)Nrc��j���Sr)r3rOr�rrrrr���z(TestMailbox.test_clear.<locals>.<lambda>)r�r3rErFrrrO�clearrrer�)r�
iterationsrPrrr�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)Nrr:r�r;z2
r�)	r3rErFr
r�poprr�r�rr�r�r�rrr�test_pop�szTestMailbox.test_popcs�g}td�D]}|��j��j|��qg}td�D]'}�j��\�}���|����|�|�����t	|�
��|����q��t�j�d�|D]
���
t��fdd��qNdS)Nr�rcr�rr�rr�rrr��r�z*TestMailbox.test_popitem.<locals>.<lambda>)r�rDr3rErF�popitemr
r�rr�r�indexrrer�)rr�rPr�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�updaterFrr�rrr��s

�z)TestMailbox.test_update.<locals>.<lambda>)r3rErFr�rGrrrOrrer�)rr�r�rr�r�test_update�sR�����������zTestMailbox.test_updatecC�|�|jjd�dS�NT)�_test_flush_or_closer3r]r4rrr�
test_flush��zTestMailbox.test_flushcCsZ|j�|jd�|j�|jd�|j��|j��|j��|j��|j��dS�Nrr:)r3rErFr]r�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_unlockcCr��NF)r�r3r7r4rrr�
test_closer�zTestMailbox.test_closecs��fdd�td�D�}�j�|d��j�|d��j�|d��j}|�|r0�j�����j��_�j��}��t|�d�|D]}��	�j�
|�|�qF|��dS)Nc�g|]}�j|�qSr�rF��.0rr4rr�
<listcomp>	�z4TestMailbox._test_flush_or_close.<locals>.<listcomp>r<rr:r;)r�r3rEr7r2r1rPrrr
rO)rr�Zshould_call_close�contentsZoldboxrPrrr4rr�s

z TestMailbox._test_flush_or_closec	srt�t�tt�t�fD]}t����j�|������	�t�
dtj�
���qt�����t��fdd��dS)Nrgcs�j�d��Sr)r3�
_dump_messager��outputrrrr�"r�z/TestMailbox.test_dump_message.<locals>.<lambda>)rrHrGrIrJrKr3r�r�getvaluerkrrlrTre�	TypeError)r�inputrr�r�test_dump_messages
�
��zTestMailbox.test_dump_messagecCs
|jdS)Nz.lock)r1r4rrrr�$s
zTestMailbox._get_lock_path�r�)9r&r'r(ZmaxDiffr2rFr5r8rQ�textwrap�dedentrSrWrYr_rfrTrhrorxryr{r~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�rr�rrrrr//sl


�	







"r/c@�eZdZdd�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) Nrc�
��d�S�N�)rEr��boxrrr�.r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>cr	r
)r�rrrrr�/r�cr	r
)r�rrrrr�0r�cr	r
)r�rrrrr�1r�cs��dd�Sr
)r�rrrrr�2r�c����Sr)r�rrrrr�3r�crr)rPrrrrr�4r�c������Sr)r��__next__rrrrr�5r�crr)r�rrrrrr�6r�crr)r�rrrrr�7r�crr)r�rrrrrr�8r�crr)rrrrrr�9r�cr	r
)r�rrrrr�:r�cr	r
)�__getitem__rrrrr�;r�cr	r
)r�rrrrr�<r�cr	r
)rOrrrrr�=r�cr	r
)rUrrrrr�>r�cr	r
)rirrrrr�?r�csd�vSr
rrrrrr�@r�cr	r
)�__contains__rrrrr�Ar�crr)�__len__rrrrr�Br�crr)r�rrrrr�Cr�cr	r
)r�rrrrr�Dr�crr)r�rrrrr�Er�cr	)N))rr)r�rrrrr�Fr�crr)r]rrrrr�Gr�crr)r�rrrrr�Hr�crr)r�rrrrr�Ir�crr)r7rrrrr�Jr�)r
�Mailboxre�NotImplementedErrorr4rrr�test_notimplemented+s<
z)TestMailboxSuperclass.test_notimplementedN)r&r'r(rrrrrr)�rc@s�eZdZd5dd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zd5dd�Zdd�Z
dd�Zdd�Zdd�Zd6dd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Ze�eed-�d.�d/d0��Ze�eed-�d.�d1d2��Zd3d4�ZdS)7�TestMaildirNcC�t�||�Sr)r
�Maildir�rr�factoryrrrr�Or�zTestMaildir.<lambda>cCs.t�|�tjdkstjdkrd|j_dSdS)N�nt�cygwin�!)r/r5r�name�sys�platformr3�colonr4rrrr5Qs
�zTestMaildir.setUpcCs"|�t�tj�|jd��g�dS�N�tmp)rr�listdirr�joinr1r4rrrr^Vs"zTestMaildir.assertMailboxEmptycCs`t�|jd�}|�d�|�d�|j�|�}|�tj	�
tj	�|jdd||jj
f���dS)Nr�curr�z%s%sfoo)r
r)rF�
set_subdir�set_infor3rErrrr"r'r1r#)rrrrrr�test_add_MMYs


�zTestMaildir.test_add_MMcCsnt�|jd�}|�d�|�d�|j�|�}|j�|�}|�|tj�|�	|�
�d�|�	|��d�dS)Nrr(�RF�FR)r
r)rFr)�	set_flagsr3rEr�rr�
get_subdir�	get_flags)rrr�msg_returnedrrr�test_get_MMbs

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�newZPTr:rr�r;z2,Sr<�Sz3
)r
r)rFr.r3rEr�rr/r0rr*)rr�rr1�msg1�msg2rrr�test_set_MMms(



zTestMaildir.test_set_MMcCsvt�|jd�}|�d�|�d�|j�|�}Gdd�dtj�}tj|j|d�}|jj	|_	|�
|�}|�||�dS)Nrr(r,c@seZdZdS)z8TestMaildir.test_consistent_factory.<locals>.FakeMessageN)r&r'r(rrrr�FakeMessage�sr8�r)r
r)rFr)r.r3rErr1r#r�r)rrrr8r
r6rrr�test_consistent_factory�s



z#TestMaildir.test_consistent_factorycCsH|��t�|j�|_|��|�|j�|j|jdd�|_|��dS)Nr9)r8r
rr1r3�
_check_basicsr%r2r4rrr�test_initialize_new�szTestMaildir.test_initialize_newc	CsJ|��dD]}t�tj�tj�|j|���qt�|j�|_	|�
�dS)N�rr%r3r()r8r�mkdirr�normpathr'r1r
rr3r;)r�subdirrrr�test_initialize_existing�s
 z$TestMaildir.test_initialize_existingcCsn|�|jjtj�|j��|�|jj|�dD]}tj�|j|�}t�|�tj	}|�
t�|�d|�qdS)Nr=zNot a directory: '%s')rr3r1rr�abspathr2r'�stat�ST_MODEr�S_ISDIR)rrr@r�moderrrr;�s�zTestMaildir._check_basicscC�X|j�d�|j�d�|j�d�|�t|j���d�|�t|j���td��dS�N�one�two�threer<)rIrJrK�r3�
add_folderrr�list_foldersr�r4rrr�test_list_folders���zTestMaildir.test_list_folderscCsv|j�d�|j�d�}|�|jd�|�tj�tj�	|j
d���|j�d�}|�|�|�
�d�|jd�dS)N�foo.barr�z.foo.barr)r3rM�
get_folderrErFrrrr r'r1rrOrP)r�folder0�folder1rrr�test_get_folder�s�zTestMaildir.test_get_foldercC�4|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�
NrIrJr;)rIrJr:)rJrK)rJrKr�r3rMrrrNr�Z
remove_folderr4rrr�test_add_and_remove_folders�� z'TestMaildir.test_add_and_remove_folderscCstj�|jdd�}tj�|jdd�}t|ddd��
}|�d�Wd�n1s)wYt|ddd��
}|�d�Wd�n1sEwY|j��|�tj�	|��|�tj�	|��t�
|�}t�|t��dd	|j
f�|j��|�tj�	|��|�tj�	|��dS)
Nr%r�r��wr@rA�@i@�r;)rrr'r1�openrtr3Zcleanrr"rC�utime�time�st_mtimer�)rZfoo_pathZbar_pathrnZfoo_statrrr�
test_clean�s$��

�
zTestMaildir.test_cleanr�c

Cs
t��}d|vr|�dd�}d|vr|�dd�}t��}t�d�}d}t|�D]�}|j�	�}tj
�|j�\}}	|�
|tj
�tj
�|jd��d|�|�|	�}
|�|
d|	�|
��}|dur�|�t|d	�t|d	�d
|d	|d	f�t|d	�t|d	�kr�|�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�|��q'tt�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>[^:/]*)r%zFile in wrong location: '%s'zInvalid file name: '%s'rz'Non-monotonic seconds: '%s' before '%s'r:z,Non-monotonic milliseconds: '%s' before '%s'r;z(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')�socketZgethostnamerkr�getpid�re�compiler�r3Z_create_tmprrvr rrBr'r1�match�assertIsNotNone�groupsZassertGreaterEqualr�rtrKrurjr7rr&)
rr�Zhostname�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)Nrr:r3r;)	rr3�_tocrErF�_refreshrrr'r�rrr�test_refreshs"
��

�zTestMaildir.test_refreshcCsx|j�|jd�}|j�|jd�}|�|j�|_|�|jji�d|j_|j��|�t	|jj�
��t	||g��dS)Nrr:���)r3rErFr2r1rrq�_skewfactorrr�sortedrPr�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�:r�z)TestMaildir.test_lookup.<locals>.<lambda>rr3cr�rrxrr�rrr�Br�)rer�r3rErFrryrrr'r�r1rqr]r4rr�r�test_lookup8s
zTestMaildir.test_lookupcCs|j��|j��dSr)r3r�r�r4rrrr�Es
zTestMaildir.test_lock_unlockcCsLdd�}|j|j|d�}|�d�}|�|j|�|�d�}|�|j|�dS)NcS�dSrr��srrr�
dummy_factoryM�z.TestMaildir.test_folder.<locals>.dummy_factoryr9rT)r2r1rMr�rR)rr~r
ZfolderZ
folder1_aliasrrr�test_folderJs

zTestMaildir.test_foldercCsHtd�D]}|j�t�t��qt�tj�	|j
dd��|jD]}qdS)Nr�r(z	stray-dir)r�r3rEr
r	rGrr>rr'r1)rrrrrr�test_directory_in_folderVs
�z$TestMaildir.test_directory_in_folder�umask�test needs os.umask()c	Csxt�|jd�}t�d�}z
|j�|�}Wt�|�nt�|�wtj�|j	|j�
|��}t�|�j}|�
|d@�dS)Nr�I)r
r)rFrr�r3rErr'r1ryrC�st_moder�)rr�
orig_umaskrrrFrrr�test_file_permissionscs
z!TestMaildir.test_file_permissionsc	Csdt�d�}z
|j�d�}Wt�|�nt�|�wtj�|jd�}t�|�}|j}|�	|d@�dS)Nr�	subfolderZ
maildirfolderr�)
rr�r3rMrr'r1rCr�r�)rr�r�r�st�permsrrr�test_folder_file_permsps

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(r3r>r;rtcs�jj�uSr)r3rqr�Zorig_tocrrr�	refreshed��z*TestMaildir.test_reread.<locals>.refreshedr(z
stray-file)r3rrrr^rr'r1r_rurqr�rZcreate_empty_filer#r)rr@r��filenamerr�r�test_rereads
�



zTestMaildir.test_rereadrr)r&r'r(r2r5r^r+r2r7r:r<rAr;rOrUrYrarprsrwrzr�r�r��unittest�
skipUnless�hasattrrr�r�r�rrrrrMs6
		
		

/


rc@seZdZ	dd�Zdd�ZdS)�_TestSingleFilecCsrt�|j�j}|j�|jd�|j��t�|j�j}|�||�|j�	�|�
|j�|_|�t|j�d�dSr�)rrCr1�st_inor3rErFr]rr7r2r)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�rr:)rrCr1r��chmodr3rErFr�r]r)rrFrrrr�test_permissions_after_flush�s
z,_TestSingleFile.test_permissions_after_flushN)r&r'r(r�r�rrrrr��sr�cs�eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Ze�
eed�d�e�
eed�d�dd���Zdd�Z�ZS)�
_TestMboxMMDFc�Jt���|j��|�|j�t�t�|j�d�D]}t�	|�qdS�Nz.*�
�superr8r3r7r%r1�glob�escaperr#�rZlock_remnant��	__class__rrr8��

�z_TestMboxMMDF.tearDowncC�Bt|jd��}|�|��g�Wd�dS1swYdS�N�rb�r]r1r�	readlines�rrnrrrr^��"�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_fromcC�<|j�d�}|�|j|��d�|�|j|��d�dS)N�From foo@bar blah
From: foo

0
�foo@bar blahr��r3rEr�get_fromrrVrrr�test_add_from_string��z"_TestMboxMMDF.test_add_from_stringcCr�)NsFrom foo@bar blah
From: foo

0
r�r�r�rVrrr�test_add_from_bytesr�z!_TestMboxMMDF.test_add_from_bytescCs*tjtjfD]}|d�}|j�|�}qdS)Nr�)r
r*r-r3rE)r�class_rrrrr�test_add_mbox_or_mmdf_messages�z+_TestMboxMMDF.test_add_mbox_or_mmdf_messagecs��fdd�td�D�}|D]}�j�|�q
�j��tj��j�}���j��_��	t
�j�d��j��D]}���j�
|�|�q7�j����	|tj��j��dS)Ncr�rr�r�r4rrr�r�z6_TestMboxMMDF.test_open_close_open.<locals>.<listcomp>r<)r�r3rEr7rr�getmtimer1r2rrr�r
rO)rr�r�mtimerrr4r�test_open_close_opens

z"_TestMboxMMDF.test_open_close_opencCs�|j�t�td�D]}|j�|j|�q
|j�t�|jj��|jj�d�|jj��}|j�	�t
|jd��}|�||���Wd�n1sMwY|�
|j�|_dS)Nr<rr�)r3rErGr�rF�_filer]rurjr7r]r1rr2)rrr�rnrrr�test_add_and_closes
�z _TestMboxMMDF.test_add_and_close�forkzTest needs fork().�
socketpairzTest needs socketpair().c
Cs�t��\}}|�|j�|�|j�t��}|dkr<z|j��|�d�|�	d�|j�
�Wt�d�nt�d�w|�	d�z|�t
j|jj�W|�d�tj|dd�n
|�d�tj|dd�w|j��|j�
�dS)Nr�cr:�p)Zexitcode)rdr�Z
addCleanupr7rr�r3r��sendZrecvr��_exitrer
ZExternalClashErrorrZwait_process)r�c�prkrrr�test_lock_conflict(s,



�

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

body
)	r3rEr]r7r2r1r�rZ_locked)rrr�r�rrr�test_relockMs



z_TestMboxMMDF.test_relock)r&r'r(r8r^r�r�r�r�r�r�r�r�r�r�rrdr�r��
__classcell__rrr�rr��s#r�c@s@eZdZddd�Ze�eed�d�dd��Zdd	�Z	d
d�Z
dS)
�TestMboxNcCrr)r
�mboxrrrrr�_r�zTestMbox.<lambda>r�r�c	Cs�z+t�d�}|j��t�|j�tj|jdd�|_|j�d�|j��Wt�|�nt�|�wt�	|j�}|j
}|�|d@�dS)N�?T)Zcreaterr�)rr�r3r7r#r1r
r�rErCr�r�)rZ	old_umaskr�r�rrr�test_file_permsas

zTestMbox.test_file_permscCsHtj��}d|d<|�d�|j�|�}|j�|�}|�|��d�dS)Nzjohn@example.com�FromzNo newline at the endzNo newline at the end
)	rrr	Zset_payloadr3rEr�rr)rrrrrr�test_terminating_newlinets

z!TestMbox.test_terminating_newlinecCs�|j�d�t|jdd��}|��}|�|dd�d�Wd�n1s&wY|j�d�t|jdd��}|��}|�|dd�d�Wd�dS1sRwYdS)NzFrom: foo

0r@rArtz0

z
From: foo

0
)r3rEr]r1rjr)rrn�datarrr�test_message_separator~s�"�zTestMbox.test_message_separatorr)r&r'r(r2r�r�r�rr�r�r�rrrrr�]s


r�c@seZdZddd�ZdS)�TestMMDFNcCrr)r
ZMMDFrrrrr��r�zTestMMDF.<lambda>r)r&r'r(r2rrrrr��sr�c@s^eZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�ZdS)�TestMHNcCrr)r
ZMHrrrrr��r�zTestMH.<lambda>cCs|�t�|j�dg�dS)Nz
.mh_sequences)rrr&r1r4rrrr^�szTestMH.assertMailboxEmptycCrGrHrLr4rrrrO�rPzTestMH.test_list_folderscCs�dd�}|�|j|�|_|j�d�}|j�d�}|�|jd�|�tj	�
tj	�|jd���|j�d�}|�|�
|��d�|jd�|�|j|jj�|�|j|jj�dS)NcSr{rrr|rrrr~�rz-TestMH.test_get_folder.<locals>.dummy_factoryrQr�r)r2r1r3rMrRrErFrrrr r'rrOrPr�)rr~Z
new_folderrSrTrrrrU�s�zTestMH.test_get_foldercCrVrWrXr4rrrrY�rZz"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�r:)r��repliedr��r�r�r��flagged)r�r�r�r�)
rr3�
get_sequencesr
r+rF�add_sequencerE�
set_sequencesr��rr�r�r5r�rrr�test_sequences�s(
�
��zTestMH.test_sequencescCs6t�|jd�}|�d�|j�|�}|j�|�}dS)Nrr�)r
r+rFr�r3rEr�)rr�r�Zrefmsg0rrr�test_issue2625�s
zTestMH.test_issue2625cCs@t�|jd�}|j�|�}|j��|j�|�|j��dS)Nr)r
r+rFr3rEr�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)
Nrr:r;r<r��unseenr�r�)r�r�r�r�r�)r�r�r�r�)r:r;r<)r:r;r<r=r>)
r
r+rFr�r3rErr�r�ZpackrPr�r�)	rr�r5r6Zmsg3r�r�r�Zkey3rrr�	test_pack�sZ����
�


��zTestMH.test_packcCstj�|jd�S)Nz.mh_sequences.lock)rrr'r1r4rrrr��zTestMH._get_lock_pathr)
r&r'r(r2r^rOrUrYr�r�r�r�r�rrrrr��s
	,r�cs6eZdZd
dd�Zdd�Z�fdd�Zdd	�Z�ZS)�	TestBabylNcCrr)r
ZBabylrrrrr�r�zTestBabyl.<lambda>cCr�r�r�r�rrrr^r�zTestBabyl.assertMailboxEmptycr�r�r�r�r�rrr8r�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�r:)r��answeredr�r��blah�filed)r�r�r�)rr3�
get_labelsr
r,rF�	add_labelrE�
set_labelsr�r�r�rrr�test_labels&s 


� zTestBabyl.test_labelsr)r&r'r(r2r^r8r�r�rrr�rr�s

r�c@�eZdZdd�Zdd�ZdS)�FakeFileLikeObjectcC�
d|_dSr���closedr4rrr�__init__;�
zFakeFileLikeObject.__init__cCr�r�r�r4rrrr7>r�zFakeFileLikeObject.closeN)r&r'r(r�r7rrrrr�9sr�c@r�)�FakeMailBoxcCs,tj�|ddd��dd�td�D�|_dS)NrcSr{rr)r�rrrr�Esz&FakeMailBox.__init__.<locals>.<lambda>cSsg|]}t��qSr)r�r�rrrr�Fsz(FakeMailBox.__init__.<locals>.<listcomp>r�)r
rr�r��filesr4rrrr�DszFakeMailBox.__init__cCs
|j|Sr)r�rVrrrriHr�zFakeMailBox.get_fileN)r&r'r(r�rirrrrr�Bsr�c@r)�TestFakeMailBoxcCs`t�}td�D]}|�|j|j�qtd�D]}||qtd�D]}|�|j|j�q"dS)Nr�)r�r�r�r�r�r)rr
rrrr�test_closing_fdNs
�zTestFakeMailBox.test_closing_fdN)r&r'r(r�rrrrr�Lrr�c@sreZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�Zdd�Zdd�ZdS)�TestMessagecCstj|_dSr)rr0r1r4rrrr5\r�zTestMessage.setUpcCs|�|j�dSr)r%r1r4rrrr8_r�zTestMessage.tearDowncCs,t�t�}|�|�}|�|�|�|�dSr)rrHrGr2�_post_initialize_hookr�r�eMMrrrr�test_initialize_with_eMMbs


z$TestMessage.test_initialize_with_eMMcCs"|�t�}|�|�|�|�dSr)r2rGr�rr�rrr�test_initialize_with_stringis

z'TestMessage.test_initialize_with_stringcCsht|jddd��"}|�t�|�d�|�|�}|�|�|�|�Wd�dS1s-wYdS)Nrzr@rAr)r]r1rtrGrur2r�r�rrnrrrr�test_initialize_with_fileos



"�z%TestMessage.test_initialize_with_filecCsdt|jd��"}|�t�|�d�|�|�}|�|�|�|�Wd�dS1s+wYdS)Nrqr)r]r1rtrKrur2r�rr�rrr� test_initialize_with_binary_filexs



"�z,TestMessage.test_initialize_with_binary_filecCsn|��}|�|�|�|tjj�|�|tj�|�||j�|�|��g�|�	|�
��|�|���dSr)
r2r�rrrr	r
rrPr�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>)rerr4rr4r�test_initialize_incorrectly�r�z'TestMessage.test_initialize_incorrectlycCs:t�t�}|�t�}|jD]
}|�||jd�|��q
dS)Nz{} attribute does not exist)rrHrGr2�__dict__r
�format)rr�r�attrrrr�test_all_eMM_attributes_exist�s



��z)TestMessage.test_all_eMM_attributes_existcCs*t�t�}|��}|�|�|�|�dSr)rrHrGr2Z_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.rrrr	rer)rr�rrr�test_explain_to�s

zTestMessage.test_explain_tocCr{rrr�rrrr��sz!TestMessage._post_initialize_hookN)r&r'r(r
r	r2r5r8r�r�r�r�r�r�rrrr�rrrrr�Xs		
r�c@sBeZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
S)�TestMaildirMessagecCs |�|jd�|�|jd�dS)Nr3r)rZ_subdirZ_infor�rrrr��sz(TestMaildirMessage._post_initialize_hookcs�t�t��|����d���d�|����d���d�|����d�|�t�fdd��|����d���d�|����d�|���dS)Nr3r(cr	r$)r)r�rrrr��r�z0TestMaildirMessage.test_subdir.<locals>.<lambda>)	r
r)rGrr/r)rer\rr4rr	r�test_subdir�s



zTestMaildirMessage.test_subdircCs�t�t�}|�|��d�|�|��d�|�d�|�|��d�|�|��d�|�d�|�|��d�|�d�|�|��d�|�d�|�|��d	�|�|��d�|�	|�dS)
Nrr3�FZSDTPZDPSTZFTZDFPSTZTDRP�FS)
r
r)rGrr0r/r.�add_flag�remove_flagrr�rrr�
test_flags�s




zTestMaildirMessage.test_flagscCsDt�t�}|�t|��t���d�|�d�|�|��d�dS)N�<�)	r
r)rGr��abs�get_dater_�set_daterr�rrr�	test_date�s

zTestMaildirMessage.test_datecsVt�t��|����d���d�|����d�|�t�fdd��|���dS)Nrz	1,foo=barcs
��d�Sr)r*rr	rrr��r�z.TestMaildirMessage.test_info.<locals>.<lambda>)	r
r)rGr�get_infor*rerrr4rr	r�	test_info�s

zTestMaildirMessage.test_infocCs�t�t�}|�|��d�|�d�|�|��d�|�|��d�|�d�|�|��d�|�|��d�|�d�|�|��d�|�|��d�|�	d�|�|��d�|�|��d�|�
|�dS)	NrZSFrz2,FSz1,ZRPT�Dz2,D)r
r)rGrrr.r0r*rr
rr�rrr�test_info_and_flags�s




z&TestMaildirMessage.test_info_and_flagsN)r&r'r(r
r)r2r�r
rrrrrrrrr�s	rc@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
r	rGZ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*rGr�set_fromrr�r_�	localtimer�rrr�	test_froms


z_TestMboxMMDFMessage.test_fromcCs�t�t�}|�|��d�|�d�|�|��d�|�d�|�|��d�|�d�|�|��d�|�d�|�|��d�|�|�dS)	NrrZXODRZRODXZFAZRODFAXZFDXA�RO)	r
r*rGrr0r.r
rrr�rrrrs




z_TestMboxMMDFMessage.test_flagsNcCs*|durd}|�t�|d|����dS)Nz
MAILER-DAEMONz. \w{3} \w{3} [\d ]\d [\d ]\d:\d{2}:\d{2} \d{4})rirfrhr�)rrZsenderrrrrs
�z _TestMboxMMDFMessage._check_fromr)r&r'r(r
Z_mboxMMDFMessager2r�rr rrrrrrr�src@�eZdZejZdS)�TestMboxMessageN)r&r'r(r
r*r2rrrrr#(�
r#c@s"eZdZejZdd�Zdd�ZdS)�
TestMHMessagecC�|�|jg�dSr)rZ
_sequencesr�rrrr�1�z#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+rGrr�r�r�Zremove_sequencer�rrrr�4�(







zTestMHMessage.test_sequencesN)r&r'r(r
r+r2r�r�rrrrr%-sr%c@s*eZdZejZdd�Zdd�Zdd�ZdS)�TestBabylMessagecCr&r)rZ_labelsr�rrrr�Pr'z&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,rGrr�r�r�Zremove_labelr�rrrr�Sr)zTestBabylMessage.test_labelscCst�t�}|��}|�|��g�|�|���d|d<d|d<|�|����g�|�|�|��}|�|��ddg�|�|dd�|�|dd�|�|���|�	�|�|��ddg�|�|���|��}|�|��gd��dD]}|�||||�qydS)Nz
FooBar 1.0�
User-AgentZBlahz
X-Whatever)r,�Dater��To�Subject)
r
r,rG�get_visiblerrPr�rZset_visible�update_visible)rrZvisible�headerrrr�test_visiblejs*

�zTestBabylMessage.test_visibleN)	r&r'r(r
r,r2r�r�r3rrrrr*Ls
r*c@r")�TestMMDFMessageN)r&r'r(r
r-r2rrrrr4�r$r4c@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
r	rGr)rr��	msg_plainrrrr�test_plain_to_x�s


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


�z%TestMessageConversion.test_x_to_plaincCs"|jD]}|t�}|�|�qdSr)r.rKr)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.rerr4rr:r�test_x_to_invalid�s
�z'TestMessageConversion.test_x_to_invalidcs�dd�|jD��|jD]2}|jD],�|�urq|t�}�|�}��fdd��|D�}|D]}|�||jd�|���q-qqdS)NcSsi|]}||t�j�qSr)rGr)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.rGr�rr)rZclass1�sourcer$Z
type_specificrrr>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)rGr.r)rrrr0r/)r�msg_maildir�daterrrr�test_maildir_to_maildir�s




z-TestMessageConversion.test_maildir_to_maildircCs�d}tjtjfD]C}t�t�}|�d�|D]%\}}|�|�||�}|�|��|�|�|�	�dt
�t
�d���q|�
d�|�||���d�qdS)N))rr�rr)�Pr)�R�A)r4rG)�Tr)rAZRDFArzMAILER-DAEMON %sr(�RODFA)r
r*r-r)rGrr.rr0r�r_�asctime�gmtimer))r�pairsr�rB�setting�resultrrrr�test_maildir_to_mboxmmdf�s


�
�z.TestMessageConversion.test_maildir_to_mboxmmdfc	Cs|t�t�}ddgfdddgfddgfdddgfdgfd	dgfd
ddgff}|D]\}}|�|�|�t�|���|�q'dS)Nrr�rr�rFrGr�r4rIrA)r
r)rGr.rr+r��rrBrMrNrOrrr�test_maildir_to_mh�s
�
��z(TestMessageConversion.test_maildir_to_mhc	Cs~t�t�}ddgfddgfdddgfdddgfdgfd	dd
gfdgd�ff}|D]\}}|�|�|�t�|���|�q(dS)
Nrr�rrF�	forwardedrGr�r4rI�deletedrA)rTr�rS)r
r)rGr.rr,r�rQrrr�test_maildir_to_babyl�s

�
��z+TestMessageConversion.test_maildir_to_babylcCs�tjtjfD]B}|t�}|�dt�d��d}|D]\}}|�|�t�|�}|�	|�
�|�|�	|��d�q|�d�|�	t�|���d�qdS)Nrr))rGr4)�Or)rrIrE)rHrG)rJZFRSTrVr()
r
r*r-rGrr_rLr.r)rr0rr/)rr��msg_mboxMMDFrMrNrOrrrr�test_mboxmmdf_to_maildir�s


��z.TestMessageConversion.test_mboxmmdf_to_maildircCsltjtjfD]-}|t�}|�d�|�d�tjtjfD]}||�}|�|��d�|�|��d�qqdS)NrJr)	r
r*r-rGr.rrr0r�)rr�rWZclass2_r6rrr�test_mboxmmdf_to_mboxmmdf�s

��z/TestMessageConversion.test_mboxmmdf_to_mboxmmdfc	Cs�tjtjfD]9}|t�}dgfddgfddgfdddgfdddgfd	ddgff}|D]\}}|�|�|�t�|���|�q*qdS)
NrGrVr�rrr�rHr�rJ)r
r*r-rGr.rr+r�)rr�rWrMrNrOrrr�test_mboxmmdf_to_mhs


�
���z)TestMessageConversion.test_mboxmmdf_to_mhc	Cs�tjtjfD]9}|t�}dgfddgfdddgfddgfdddgfd	ddgff}|D]\}}|�|�|�t�|���|�q*qdS)
NrGrVr�rrTrrHr�rJ)r
r*r-rGr.rr,r�)rr�rrMrNrOrrr�test_mboxmmdf_to_babyl
s

�
��z,TestMessageConversion.test_mboxmmdf_to_babylcCs�d}|D]$\}}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+rGr�rr)r0r/�rrMrNrOrrrr�test_mh_to_maildirs





z(TestMessageConversion.test_mh_to_maildircCs�d}|D]!\}}t�t�}|�|�tjtjfD]}|�||���|�qqt�t�}|�d�|�d�|�d�tjtjfD]}|�||���d�q@dS)N)�r�rV)r��ROA)r�ZROFr�r�r�ZOFA)r
r+rGr�r*r-rr0)rrMrNrOrr�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+rGr�rr�r�rrr�
test_mh_to_mh7s



�z#TestMessageConversion.test_mh_to_mhcCs�ddgfddgfdgff}|D]\}}t�t�}|�|�|�t�|���|�qt�t�}|�d�|�d�|�d�|�t�|���ddg�dS)Nr�r�r�r�)r
r+rGr�rr,r�r^rrr�test_mh_to_babyl@s�





�z&TestMessageConversion.test_mh_to_babylcCs�d}|D]$\}}t�t�}|�|�|�t�|���|�|�t�|���d�qt�t�}dD]}|�|�q0|�t�|���d�|�t�|���d�dS)N)r\)rTZST)r�r4)r�r])rS�PS)�editedr4)r+rer(�r�rTr�r�rSrfr+ZPRT)r
r,rGr�rr)r0r/�rrMrNrOr�labelrrr�test_babyl_to_maildirOs


z+TestMessageConversion.test_babyl_to_maildircCs�d}|D]!\}}tjtjfD]}t�t�}|�|�|�||���|�qqt�t�}dD]}|�|�q-tjtjfD]}|�||���d�q;dS)N)r`)rTZROD)r�r!)r�ra)rSr!)rfr!)r+r!rgZODA)r
r*r-r,rGr�rr0)rrMrNrOr�rrirrr�test_babyl_to_mboxmmdf`s

�
�z,TestMessageConversion.test_babyl_to_mboxmmdfcCs�ddgfdgfdgfddgfdgfdgfdgff}|D]\}}t�t�}|�|�|�t�|���|�qt�t�}d	D]}|�|�q<|�t�|���ddg�dS)
Nr�rTr�r�r�rSrfr+rg)r
r,rGr�rr+r�rhrrr�test_babyl_to_mhqs�


�z&TestMessageConversion.test_babyl_to_mhcCs�t�t�}|��dD]}|�|�qt�|�}|�|��gd��|�|����|�����|����D]}|�|��||��|�q6dS)Nrg)	r
r,rGr1r�rr�r0rP)rrrir6rrrr�test_babyl_to_babyl�s

�z)TestMessageConversion.test_babyl_to_babylN)r&r'r(r7r8r9r;r@rDrPrRrUrXrYrZr[r_rbrcrdrjrkrlrmrrrrr5�s,
	r5c@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�barr:sarr;sba������r)rurrj�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�fooro�fred�bobr;�or?sfri����sed)rrlrTrur�readliner�rrtrlrrr�_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)
Nrrvrorwrxr;r<r=rq)rrlrTrurr�rr{rrr�_test_readlines�s 

�
�

�z!TestProxyFileBase._test_readlinescCsztj��}|�d�t|�}|�t|�d|�|�t|�d|�|�t|�d|�|�t|�d�|�tt|�dS)Nrrvrorwrx)	rrlrTru�iterr�nextre�
StopIteration)rrtrl�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<r;r:rrrtrorry�d)	rrlrTrur�tellrjrr�r{rrr�_test_seek_and_tell�s


z%TestProxyFileBase._test_seek_and_tellcCs8|�|j�|��|�|j�|��|�|j�dSr)r�r�r7rrsrrr�_test_close�s
zTestProxyFileBase._test_closeN)	r&r'r(rur|r}r�r�r�rrrrrn�s
rnc@�TeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�
TestProxyFilecC�tj|_t|jd�|_dS�Nrq�rr0r1r]r�r4rrrr5��zTestProxyFile.setUpcCr6r�r�r7r%r1r4rrrr8�r9zTestProxyFile.tearDowncCsx|j�d�|j��}t�|j�}|�|��|�|�|j��|�t�|jd�}|�|��d�|�|j��|�dS)Nrvr)r�rtr�r
�
_ProxyFiler)r�posZproxy0Zproxy1rrr�test_initialize�s
zTestProxyFile.test_initializecCs"|j�d�|�t�|j��dS)Nro)r�rtrur
r�r4rrr�	test_read�szTestProxyFile.test_readcC�8|j�tdtjtjtjfd��|�t�|j��dS�Nzfoo%sbar%sfred%sbobr�)r�rt�bytesrrlr|r
r�r4rrr�
test_readline����zTestProxyFile.test_readlinecCr�r�)r�rtr�rrlr}r
r�r4rrr�test_readlinesr�zTestProxyFile.test_readlinescCr�r�)r�rtr�rrlr�r
r�r4rrr�test_iterationr�zTestProxyFile.test_iterationcC�4|j�tdtjtjfd��|�t�|j��dS�Nz
foo%sbar%sr�)r�rtr�rrlr�r
r�r4rrr�test_seek_and_tell�z TestProxyFile.test_seek_and_tellcCr�r�)r�rtr�rrlr�r
r�r4rrrr�r�zTestProxyFile.test_closeN�r&r'r(r5r8r�r�r�r�r�r�r�rrrrr��sr�c@r�)�TestPartialFilecCr�r�r�r4rrrr5r�zTestPartialFile.setUpcCr6rr�r4rrrr8r9zTestPartialFile.tearDowncCs\|j�tdtjdd��|j��}t�|jdd�}|�|��d�|�|j��|�dS)Nr�r�r�r;r>r)	r�rtr�rrlr�r
�_PartialFiler)rr�rtrrrr�s

zTestPartialFile.test_initializecCs,|j�tdd��|�t�|jdd��dS)Nz	***bar***r�r<r?)r�rtr�rur
r�r4rrrr�'szTestPartialFile.test_readc
C�J|j�tdtjtjtjfd��|�t�|jdddttj���dS)Nz!!!!!foo%sbar%sfred%sbob!!!!!r�r>�r<)	r�rtr�rrlr|r
r�rr4rrrr�+�
��
�zTestPartialFile.test_readlinec
Cr�)Nzfoo%sbar%sfred%sbob?????r�r�
r<)	r�rtr�rrlr}r
r�rr4rrrr�1r�zTestPartialFile.test_readlinesc
Cr�)Nz____foo%sbar%sfred%sbob####r�r=�r<)	r�rtr�rrlr�r
r�rr4rrrr�7r�zTestPartialFile.test_iterationc
C�F|j�tdtjtjfd��|�t�|jdddttj���dS)Nz(((foo%sbar%s$$$r�r<�	r;)	r�rtr�rrlr�r
r�rr4rrrr�=�
�z"TestPartialFile.test_seek_and_tellc
Cr�)Nz&foo%sbar%s^r�r:r?r<)	r�rtr�rrlr�r
r�rr4rrrr�Br�zTestPartialFile.test_closeNr�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@sFeZdZdd�Zdd�Zddd�Zdd	�Zd
d�Zdd
�Zdd�Z	dS)�MaildirTestCasecCs�tj|_tj�|j�rt�|j�n
tj�|j�rt�|j�t�	|j�t�	tj�
|jd��t�	tj�
|jd��t�	tj�
|jd��d|_g|_dS)Nr(r%r3r:)
rr0�_dirrrr r!�isfiler#r>r'�_counter�	_msgfilesr4rrrr5Us
zMaildirTestCase.setUpcCsdtttj|j��t�tj�|j	d��t�tj�|j	d��t�tj�|j	d��t�|j	�dS)Nr(r%r3)
r��maprr#r�r�rmdirrr'r�r4rrrr8cs
zMaildirTestCase.tearDownFc	Cs tt��d�}|j}|jd7_d�t|�t|�ddf�}tj�|jd|�}tj�|j||�}t|ddd	��}|j	�
|�|rF|�t�|�t
�Wd�n1sUwYzt�||�Wn%ttfy�t|d��
}|�t
�Wd�n1s�wYYnw|j	�
|�|S)
Ni@Br:�.Z
myhostnameZmydomainr%r[r@rA)r�r_r�r'�strrrr�r]r�rDrt�FROM_�
DUMMY_MESSAGE�link�AttributeError�PermissionError)	r�dirr��trkr�ZtmpnameZnewname�fprrr�
createMessagejs,
����zMaildirTestCase.createMessagecCs4	t�tj�|_|�|j���|�|j���dSr)r
rrr0r�r�rr4rrr�test_empty_maildir~sz"MaildirTestCase.test_empty_maildircC�L|�d�t�tj�|_|�|j���|�|j���|�|j���dS)Nr(�	r�r
rrr0r�rirr�r4rrr�test_nonempty_maildir_cur��

z)MaildirTestCase.test_nonempty_maildir_curcCr�)Nr3r�r4rrr�test_nonempty_maildir_new�r�z)MaildirTestCase.test_nonempty_maildir_newcCsf|�d�|�d�t�tj�|_|�|j���|�|j���|�|j���|�|j���dS)Nr(r3r�r4rrr�test_nonempty_maildir_both�s

z*MaildirTestCase.test_nonempty_maildir_bothN)F)
r&r'r(r5r8r�r�r�r�r�rrrrr�Ss

r�aKReturn-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 -0400r�z."Gregory K. Johnson" <gkj@gregorykjohnson.com>r.zgkj@gregorykjohnson.comr/zSample messagezMime-Versionz1.0zContent-Typez,multipart/mixed; boundary="NMuMz9nt05w80d4+"zContent-DispositionZinliner,zMutt/1.5.9i)z1This is a sample message.

--
Gregory K. Johnson
zRH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs
3FYlAAAA
c@r)�MiscTestCasecCstj|tddhd�dS)NrlZfcntl)Znot_exported)rZcheck__all__r
r4rrr�test__all__�s
�zMiscTestCase.test__all__N)r&r'r(r�rrrrr��sr�cCst��dSr)rZ
reap_childrenrrrr�tearDownModule�r�r��__main__)8rr!r_rCrdrZ
email.messagerfrIrr�testrZtest.supportrr�rr
r�rr/ZTestCaserrr�r�r�r�r�r�r�rr�r�r�rrr#r%r*r4r5rnr�r�r�r�r�rGrTrKrrr�r�r&�mainrrrr�<module>s�}$])
."	
VJ07S15R
/����������������

�