Uname:Linux ip-10-0-5-176 6.8.0-1057-aws #60~22.04.1-Ubuntu SMP Wed May 27 08:16:59 UTC 2026 x86_64

403WebShell
403Webshell
Server IP : 3.111.61.48  /  Your IP : 216.73.216.67
Web Server : Apache
System : Linux ip-10-0-5-176 6.8.0-1057-aws #60~22.04.1-Ubuntu SMP Wed May 27 08:16:59 UTC 2026 x86_64
User : ubuntu ( 1000)
PHP Version : 8.2.31
Disable Function : exec,passthru,shell_exec,system
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/lib/python3.10/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python3.10/test/__pycache__/test_mailbox.cpython-310.pyc
o

�9j)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�assertIn�get_all�
assertTrue�is_multipart�assertEqual�len�get_payload�_sample_payloads�	enumerate�assertNotIsInstance)�self�msg�key�value�i�payload�part�r�(/usr/lib/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_typesr r(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)r6�closer(r4r7rrr�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@rArB)�appendr6�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=)r6rH�
_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=rUzZSubject: =?unknown-8bit?b?RmFsaW5hcHThciBo4Xpob3pzeuFsbO104XNzYWwuIE3hciByZW5kZWx06Ww/?=

)rV�
splitlinesr6rHrWrrR)r�subjrrrr�&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�
ValueErrorr6rHrV�flushrr�assertMailboxEmptyr7rrr�&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>.raiser�flattenuFrom: Alphösor)r�patchr�	generator�BytesGenerator�assertRaisesrdr6rHrKrrr:rb)rrgrrr�)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

        Да, они летят.
        rCc	Cs�|j�|j�}|�|j�|�|j�|j�|��}|�|��|j�dtj	�
���Wd�n1s3wY|�|j|��d�dS)N�
uДа, они летят.
)r6rH�_non_latin_bin_msgrrX�get_file�read�replacer!�lineseprWr�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+rrn)
�tempfile�
TemporaryFile�writerN�seekr6rHrrX�split�rrurrrr�test_add_binary_file�s

��z TestMailbox.test_add_binary_filecCsrt�d��}|�|j�|�d�|j�|�}Wd�n1s!wY|�|j�|��	d�|j�	d��dSrw)
ryrzr{ror|r6rHrrXr}r~rrr�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+rCrDrrn)
ryrzr{rJr|rOrPr6rHrrXr}rNr~rrr�test_add_text_file_warns�s

����z$TestMailbox.test_add_text_file_warnscCs`|�t��|j�t�|jd��}Wd�n1swY|�|j�|�|jd�dS)N�0)	rOrPr6rHrL�StringIOrIrrRrYrrr�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��|��dSr^)
rOrPr_r`r6rHrLr�rVrrr:rbr7rrr�!test_add_nonascii_StringIO_raises�s���
z-TestMailbox.test_add_nonascii_StringIO_raisescC�|�|jj�dSr)�_test_remove_or_delitemr6�remover7rrr�test_remove��zTestMailbox.test_removecCr�r)r�r6�__delitem__r7rrr�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�r6r��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�)r6rHrIrrrl�KeyErrorrR)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�)r6rHrIrr�discardrlr�)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
)r6rHrI�getrr�assertIsNone�assertIsr:r5r4)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�rr7rrr��r�z*TestMailbox.test_getitem.<locals>.<lambda>cr�rr�rr�rrr��r�)r6rHrIrrrlr�r��rrrr�r�test_getitem�s
zTestMailbox.test_getitemcCsn|j�|jd�}|j�t�}|j�|�}|�|tj�|�|dd�|�|�	�d�|�
|j�|��dS)Nrr�r�r�)r6rHrIrJ�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�r6rHrIrJrrXrWrN�rr�r�rrr�test_get_bytess�zTestMailbox.test_get_bytescCs\|j�|jd�}|j�t�}|�|j�|�|jd�|�|j�|��d�t�d��dS)Nr�
�r6rHrIrJrrRr}r�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�)r6rHrIrJrprqr�decoderrr!rs)rr�r��file�data0�data1rrr�
test_get_files
�
���zTestMailbox.test_get_filecCs,|j�t�}|j�|�}|��|��dSr)r6rHrJrpr:rtrrr�!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_iterationr6�iterkeysr7rrr�
test_iterkeys)�zTestMailbox.test_iterkeyscCr�r�)r�r6rSr7rrr�	test_keys-r�zTestMailbox.test_keyscCr��NFTr�)r�r6�
itervaluesr7rrr�test_itervalues1�
�zTestMailbox.test_itervaluescCr�r�)r�r6�__iter__r7rrr�	test_iter6r�zTestMailbox.test_itercCr�r�)r�r6�valuesr7rrr�test_values;r�zTestMailbox.test_valuescC�|j|jjddd�dS�NTr�)r�r6�	iteritemsr7rrr�test_iteritems?r�zTestMailbox.test_iteritemscCr�r�)r�r6rr7rrr�
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=)
�fail�rangerGr6rHrI�listrr�set�
assertLess�intr)
rr�r�r�r�rrSr�r�
returned_keys�returned_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=)�assertNotInr6rHrIr
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�rrr6rGrHrIr�)rr�rSrrrr�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)r6�__setitem__rr7rrr���z+TestMailbox.test_set_item.<locals>.<lambda>cr�r�r�rr7rrr��r�r>)
r6rHrIrrRrJr rlr�rr�rr7r�
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)r6rRr�rrrrr���z(TestMailbox.test_clear.<locals>.<lambda>)r�r6rHrIrrrR�clearrrlr�)r�
iterationsrSrrr�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�)	r6rHrIr
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�rGr6rHrI�popitemr
r�rr�r�indexrrlr�)rr�rSr�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�)r6�updaterIrr�rrr��s

�z)TestMailbox.test_update.<locals>.<lambda>)r6rHrIr�rJrrrRr rlr�)rr�r�rr�r�test_update�sR�����������zTestMailbox.test_updatecC�|�|jjd�dS�NT)�_test_flush_or_closer6rar7rrr�
test_flush��zTestMailbox.test_flushcCsZ|j�|jd�|j�|jd�|j��|j��|j��|j��|j��dS�Nrr=)r6rHrIrar�r7rrr�test_popitem_and_flush_twice�s



z(TestMailbox.test_popitem_and_flush_twicecCsZ|�tj�|����|j��|�tj�|����|j��|�tj�|����dSr)	�assertFalser!r"r%�_get_lock_pathr6�lockr�unlockr7rrr�test_lock_unlock�s


zTestMailbox.test_lock_unlockcCr��NF)r�r6r:r7rrr�
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�rI��.0rr7rr�
<listcomp>	�z4TestMailbox._test_flush_or_close.<locals>.<listcomp>r?rr=r>)r�r6rHr:r5r4rSrrr
rR)rr��should_call_close�contents�oldboxrSrrr7rr�s

z TestMailbox._test_flush_or_closec	srt�t�tt�t�fD]}t����j�|������	�t�
dtj�
���qt�����t��fdd��dS)Nrncs�j�d��Sr)r6�
_dump_messager��outputrrrr�"r�z/TestMailbox.test_dump_message.<locals>.<lambda>)rrKrJrLrMrNr6rr�getvaluerrr!rsrWrl�	TypeError)r�inputrrr�test_dump_messages
�
��zTestMailbox.test_dump_messagecCs
|jdS)Nz.lock)r4r7rrrr�$s
zTestMailbox._get_lock_path�r�)9r)r*r+�maxDiffr5rIr8r;rT�textwrap�dedentrVrZr]rcrmrWrorvrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�rr�rrrrr2/sl


�	







"r2c@�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) Nr"c�
��d�S�N�)rHr��boxrrr�.r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>crr)r�rrrrr�/r�crr)r�rrrrr�0r�crr)r�rrrrr�1r�cs��dd�Sr)r�rrrrr�2r�c����Sr)r�rrrrr�3r�crr)rSrrrrr�4r�c������Sr)r��__next__rrrrr�5r�crr)r�rrrrrr�6r�crr)r�rrrrr�7r�crr)r�rrrrrr�8r�crr)rrrrrr�9r�crr)r�rrrrr�:r�crr)�__getitem__rrrrr�;r�crr)r�rrrrr�<r�crr)rRrrrrr�=r�crr)rXrrrrr�>r�crr)rprrrrr�?r�csd�vSrrrrrrr�@r�crr)�__contains__rrrrr�Ar�crr)�__len__rrrrr�Br�crr)r�rrrrr�Cr�crr)r�rrrrr�Dr�crr)r�rrrrr�Er�cr)N))rr)r�rrrrr�Fr�crr)rarrrrr�Gr�crr)r�rrrrr�Hr�crr)r�rrrrr�Ir�crr)r:rrrrr�Jr�)r
�Mailboxrl�NotImplementedErrorr7rrr�test_notimplemented+s<
z)TestMailboxSuperclass.test_notimplementedN)r)r*r+r%rrrrr)�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�!)r2r8r!�name�sys�platformr6�colonr7rrrr8Qs
�zTestMaildir.setUpcCs"|�t�tj�|jd��g�dS�N�tmp)rr!�listdirr"�joinr4r7rrrrbVs"zTestMaildir.assertMailboxEmptycCs`t�|jd�}|�d�|�d�|j�|�}|�tj	�
tj	�|jdd||jj
f���dS)Nr�curr�z%s%sfoo)r
r,rI�
set_subdir�set_infor6rHrr!r"r%r6r4r2)rrrrrr�test_add_MMYs


�zTestMaildir.test_add_MMcCsnt�|jd�}|�d�|�d�|j�|�}|j�|�}|�|tj�|�	|�
�d�|�	|��d�dS)Nrr7�RF�FR)r
r,rIr8�	set_flagsr6rHr�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)
Nr�TP�new�PTr=rr�r>z2,Sr?�Sz3
)r
r,rIr=r6rHr�rr>r?rr9)rr�rr@�msg1�msg2rrr�test_set_MMms(



zTestMaildir.test_set_MMcCsvt�|jd�}|�d�|�d�|j�|�}Gdd�dtj�}tj|j|d�}|jj	|_	|�
|�}|�||�dS)Nrr7r;c@seZdZdS)z8TestMaildir.test_consistent_factory.<locals>.FakeMessageN)r)r*r+rrrr�FakeMessage�srI�r+)r
r,rIr8r=r6rHr)r4r2r�r)rrrrIrrGrrr�test_consistent_factory�s



z#TestMaildir.test_consistent_factorycCsH|��t�|j�|_|��|�|j�|j|jdd�|_|��dS)NrJ)r;r
r)r4r6�
_check_basicsr(r5r7rrr�test_initialize_new�szTestMaildir.test_initialize_newc	CsJ|��dD]}t�tj�tj�|j|���qt�|j�|_	|�
�dS)N�rr4rCr7)r;r!�mkdirr"�normpathr6r4r
r)r6rL)r�subdirrrr�test_initialize_existing�s
 z$TestMaildir.test_initialize_existingcCsn|�|jjtj�|j��|�|jj|�dD]}tj�|j|�}t�|�tj	}|�
t�|�d|�qdS)NrNzNot a directory: '%s')rr6r4r!r"�abspathr5r6�stat�ST_MODEr�S_ISDIR)rr+rQr"�moderrrrL�s�zTestMaildir._check_basicscC�X|j�d�|j�d�|j�d�|�t|j���d�|�t|j���td��dS�N�one�two�threer?)rZr[r\�r6�
add_folderrr�list_foldersr�r7rrr�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)r6r^�
get_folderrHrIrr!r"r#r6r4rrRrS)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�
NrZr[r>)rZr[r=)r[r\)r[r\r�r6r^rrr_r��
remove_folderr7rrr�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)
Nr4r�r��wrCrD�@i@�r>)r!r"r6r4�openr{r6�cleanrr%rT�utime�time�st_mtimer�)r�foo_path�bar_pathru�foo_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>[^:/]*)r4zFile 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')�socket�gethostnamerrr!�getpid�re�compiler�r6�_create_tmpr"r}r/rrSr6r4�match�assertIsNotNone�groups�assertGreaterEqualr�r{rNr|rqr:rr5)
rr��hostname�pid�pattern�previous_groups�x�tmp_file�head�tailr�r��
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=rCr>)	rr6�_tocrHrI�_refreshr!r"r6r�rrr�test_refreshs"
��

�zTestMaildir.test_refreshcCsx|j�|jd�}|j�|jd�}|�|j�|_|�|jji�d|j_|j��|�t	|jj�
��t	||g��dS)Nrr=���)r6rHrIr5r4rr��_skewfactorr��sortedrSr�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��r6�_lookuprr7rrr�:r�z)TestMaildir.test_lookup.<locals>.<lambda>rrCcr�rr�rr�rrr�Br�)rlr�r6rHrIrr�r!r"r6r�r4r�rar7rr�r�test_lookup8s
zTestMaildir.test_lookupcCs|j��|j��dSr)r6r�r�r7rrrr�Es
zTestMaildir.test_lock_unlockcCsLdd�}|j|j|d�}|�d�}|�|j|�|�d�}|�|j|�dS)NcS�dSrr��srrr�
dummy_factoryM�z.TestMaildir.test_folder.<locals>.dummy_factoryrJre)r5r4r^r�rc)rr�r�folder�
folder1_aliasrrr�test_folderJs

zTestMaildir.test_foldercCsHtd�D]}|j�t�t��qt�tj�	|j
dd��|jD]}qdS)Nr�r7z	stray-dir)r�r6rHr
r	rJr!rOr"r6r4)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,rIr!r�r6rHr"r6r4r�rT�st_moder�)rr�
orig_umaskrr"rWrrr�test_file_permissionscs
z!TestMaildir.test_file_permissionsc	Csdt�d�}z
|j�d�}Wt�|�nt�|�wtj�|jd�}t�|�}|j}|�	|d@�dS)Nr�	subfolder�
maildirfolderr�)
r!r�r6r^r"r6r4rTr�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)r7rCrAr>r�cs�jj�uSr)r6r�r��orig_tocrrr�	refreshed��z*TestMaildir.test_reread.<locals>.refreshedr7z
stray-file)r6r�r!rqr"r6r4rrr�r�r�r�create_empty_filer&r)rrQr��filenamerr�r�test_rereads
�



zTestMaildir.test_rereadrr)r)r*r+r5r8rbr:rArHrKrMrRrLr`rfrkrwr�r�r�r�r�r�r��unittest�
skipUnless�hasattrr!r�r�r�rrrrr'Ms6
		
		

/


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�)r!rTr4�st_inor6rHrIrarr:r5r)r�inode_before�inode_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=)r!rTr4r��chmodr6rHrIr�rar)rrWrrrr�test_permissions_after_flush�s
z,_TestSingleFile.test_permissions_after_flushN)r)r*r+�__doc__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.*�
�superr;r6r:r(r4�glob�escaperr&�r�lock_remnant��	__class__rrr;��

�z_TestMboxMMDF.tearDowncC�Bt|jd��}|�|��g�Wd�dS1swYdS�N�rb�ror4r�	readlines�rrurrrrb��"�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��from_r�Tr��r�unixfromr�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��r6rHr�get_fromrrYrrr�test_add_from_string��z"_TestMboxMMDF.test_add_from_stringcCr�)NsFrom foo@bar blah
From: foo

0
r�r�r�rYrrr�test_add_from_bytesr�z!_TestMboxMMDF.test_add_from_bytescCs*tjtjfD]}|d�}|j�|�}qdS)Nr�)r
r-r0r6rH)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)Ncrrrrr7rrrrz6_TestMboxMMDF.test_open_close_open.<locals>.<listcomp>r?)r�r6rHr:r!r"�getmtimer4r5rrr�r
rR)rr�r�mtimerrr7r�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�)r6rHrJr�rI�_filerar|rqr:ror4rr5)rrr	rurrr�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)�exitcode)rzr��
addCleanupr:r!r�r6r��send�recvr��_exitrlr
�ExternalClashErrorr�wait_process)r�c�pr�rrr�test_lock_conflict(s,



�

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

body
)	r6rHrar:r5r4r�r�_locked)rrr�r�rrr�test_relockMs



z_TestMboxMMDF.test_relock)r)r*r+r;rbr�r�r�r�r�r�r�r�r�r�r!rzr�r��
__classcell__rrr�rr��s#r�c@s@eZdZddd�Ze�eed�d�dd��Zdd	�Z	d
d�Z
dS)
�TestMboxNcCr(r)r
�mboxr*rrrr�_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)�createrr�)r!r�r6r:r&r4r
r�rHrTr�r�)r�	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	�set_payloadr6rHr�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

0rCrDr�z0

z
From: foo

0
)r6rHror4rqr)rru�datarrr�test_message_separator~s�"�zTestMbox.test_message_separatorr)r)r*r+r5r�r�r�r!r�rrrrrrr�]s


r�c@seZdZddd�ZdS)�TestMMDFNcCr(r)r
�MMDFr*rrrr��r�zTestMMDF.<lambda>r)r)r*r+r5rrrrr�src@s^eZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�ZdS)�TestMHNcCr(r)r
�MHr*rrrr��r�zTestMH.<lambda>cCs|�t�|j�dg�dS)Nz
.mh_sequences)rr!r5r4r7rrrrb�szTestMH.assertMailboxEmptycCrXrYr]r7rrrr`�razTestMH.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��r�z-TestMH.test_get_folder.<locals>.dummy_factoryrbr�r)r5r4r6r^rcrHrIrr!r"r#r6rrRrSr�)rr��
new_folderrdrerrrrf�s�zTestMH.test_get_foldercCrgrhrir7rrrrk�rlz"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�rr
)
rr6�
get_sequencesr
r.rI�add_sequencerH�
set_sequencesr��rr�r�rFr�rrr�test_sequences�s(
�
��zTestMH.test_sequencescCs6t�|jd�}|�d�|j�|�}|j�|�}dS)Nrr�)r
r.rIrr6rHr�)rr�r��refmsg0rrr�test_issue2625�s
zTestMH.test_issue2625cCs@t�|jd�}|j�|�}|j��|j�|�|j��dS)Nr)r
r.rIr6rHr�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�rr
r�r)r�rr�r)r=r>r?)r=r>r?r@rA)
r
r.rIr
r6rHrrr��packrSr�r�)	rr�rFrG�msg3r�r�r��key3rrr�	test_pack�sZ����
�


��zTestMH.test_packcCstj�|jd�S)Nz.mh_sequences.lock)r!r"r6r4r7rrrr��zTestMH._get_lock_pathr)
r)r*r+r5rbr`rfrkrrrrr�rrrrr�s
	,rcs6eZdZd
dd�Zdd�Z�fdd�Zdd	�Z�ZS)�	TestBabylNcCr(r)r
�Babylr*rrrr�r�zTestBabyl.<lambda>cCr�r�r�r�rrrrbr�zTestBabyl.assertMailboxEmptycr�r�r�r�r�rrr;r�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)rr6�
get_labelsr
r/rI�	add_labelrH�
set_labelsr�r�rrrr�test_labels&s 


� zTestBabyl.test_labelsr)r)r*r+r5rbr;r!r�rrr�rrs

rc@�eZdZdd�Zdd�ZdS)�FakeFileLikeObjectcC�
d|_dSr��closedr7rrr�__init__;�
zFakeFileLikeObject.__init__cCr$r�r%r7rrrr:>r(zFakeFileLikeObject.closeN)r)r*r+r'r:rrrrr#9sr#c@r")�FakeMailBoxcCs,tj�|ddd��dd�td�D�|_dS)NrcSr�rr)r�rrrr�Esz&FakeMailBox.__init__.<locals>.<lambda>cSsg|]}t��qSr)r#rrrrrFsz(FakeMailBox.__init__.<locals>.<listcomp>r�)r
r#r'r��filesr7rrrr'DszFakeMailBox.__init__cCs
|j|Sr)r*rYrrrrpHr(zFakeMailBox.get_fileN)r)r*r+r'rprrrrr)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)rrrrrr�test_closing_fdNs
�zTestFakeMailBox.test_closing_fdN)r)r*r+r,rrrrr+Lr&r+c@sreZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�Zdd�Zdd�ZdS)�TestMessagecCstj|_dSr)rr3r4r7rrrr8\r�zTestMessage.setUpcCs|�|j�dSr)r(r4r7rrrr;_rzTestMessage.tearDowncCs,t�t�}|�|�}|�|�|�|�dSr)rrKrJr5�_post_initialize_hookr �r�eMMrrrr�test_initialize_with_eMMbs


z$TestMessage.test_initialize_with_eMMcCs"|�t�}|�|�|�|�dSr)r5rJr.r r�rrr�test_initialize_with_stringis

z'TestMessage.test_initialize_with_stringcCsht|jddd��"}|�t�|�d�|�|�}|�|�|�|�Wd�dS1s-wYdS)Nr�rCrDr)ror4r{rJr|r5r.r �rrurrrr�test_initialize_with_fileos



"�z%TestMessage.test_initialize_with_filecCsdt|jd��"}|�t�|�d�|�|�}|�|�|�|�Wd�dS1s+wYdS)Nrxr)ror4r{rNr|r5r.r r3rrr� test_initialize_with_binary_filexs



"�z,TestMessage.test_initialize_with_binary_filecCsn|��}|�|�|�|tjj�|�|tj�|�||j�|�|��g�|�	|�
��|�|���dSr)
r5r.rrrr	r
rrSr�rr�rr�rrr�test_initialize_with_nothing�s
z(TestMessage.test_initialize_with_nothingcs��t�fdd��dS)Ncs��t��Sr)r5�objectrr7rrr��r�z9TestMessage.test_initialize_incorrectly.<locals>.<lambda>)rlrr7rr7r�test_initialize_incorrectly�r�z'TestMessage.test_initialize_incorrectlycCs:t�t�}|�t�}|jD]
}|�||jd�|��q
dS)Nz{} attribute does not exist)rrKrJr5�__dict__r
�format)rr0r�attrrrr�test_all_eMM_attributes_exist�s



��z)TestMessage.test_all_eMM_attributes_existcCs*t�t�}|��}|�|�|�|�dSr)rrKrJr5�_become_messager r/rrr�test_become_message�s

zTestMessage.test_become_messagecsH|���|jD]
}|������qtj���|�t��fdd��dS)Ncs
����Sr)�_explain_tor�r�	other_msgrrr��r�z-TestMessage.test_explain_to.<locals>.<lambda>)r5r1r?rrr	rlr)rr�rr@r�test_explain_to�s

zTestMessage.test_explain_tocCr�rrr�rrrr.�sz!TestMessage._post_initialize_hookN)r)r*r+r
r	r5r8r;r1r2r4r5r6r8r<r>rBr.rrrrr-Xs		
r-c@sBeZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
S)�TestMaildirMessagecCs |�|jd�|�|jd�dS)NrCr)r�_subdir�_infor�rrrr.�sz(TestMaildirMessage._post_initialize_hookcs�t�t��|����d���d�|����d���d�|����d�|�t�fdd��|����d���d�|����d�|���dS)NrCr7crr3)r8r�rrrr��r�z0TestMaildirMessage.test_subdir.<locals>.<lambda>)	r
r,rJrr>r8rlr`r r7rrFr�test_subdir�s



zTestMaildirMessage.test_subdircCs�t�t�}|�|��d�|�|��d�|�d�|�|��d�|�|��d�|�d�|�|��d�|�d�|�|��d�|�d�|�|��d	�|�|��d�|�	|�dS)
NrrC�F�SDTP�DPST�FT�DFPST�TDRP�FS)
r
r,rJrr?r>r=�add_flag�remove_flagr r�rrr�
test_flags�s




zTestMaildirMessage.test_flagscCsDt�t�}|�t|��t���d�|�d�|�|��d�dS)N�<�)	r
r,rJr��abs�get_daterr�set_daterr�rrr�	test_date�s

zTestMaildirMessage.test_datecsVt�t��|����d���d�|����d�|�t�fdd��|���dS)Nrz	1,foo=barcs
��d�Sr)r9rrFrrr��r�z.TestMaildirMessage.test_info.<locals>.<lambda>)	r
r,rJr�get_infor9rlrr r7rrFr�	test_info�s

zTestMaildirMessage.test_infocCs�t�t�}|�|��d�|�d�|�|��d�|�|��d�|�d�|�|��d�|�|��d�|�d�|�|��d�|�|��d�|�	d�|�|��d�|�|��d�|�
|�dS)	Nr�SFrNz2,FSz1,�RPT�Dz2,D)r
r,rJrrXr=r?r9rPrOr r�rrr�test_info_and_flags�s




z&TestMaildirMessage.test_info_and_flagsN)r)r*r+r
r,r5r.rGrQrWrYr]rrrrrC�s	rCc@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	rJ�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-rJr_�set_fromrr�rr�	localtimer�rrr�	test_froms


z_TestMboxMMDFMessage.test_fromcCs�t�t�}|�|��d�|�d�|�|��d�|�d�|�|��d�|�d�|�|��d�|�d�|�|��d�|�|�dS)	NrrH�XODR�RODX�FA�RODFAX�FDXA�RO)	r
r-rJrr?r=rOrPr r�rrrrQs




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})r�r}r�r�)rr�senderrrrr_s
�z _TestMboxMMDFMessage._check_fromr)r)r*r+r
�_mboxMMDFMessager5r.rarerQr_rrrrr^�sr^c@�eZdZejZdS)�TestMboxMessageN)r)r*r+r
r-r5rrrrro(�
roc@s"eZdZejZdd�Zdd�ZdS)�
TestMHMessagecC�|�|jg�dSr)r�
_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�foobarrr
r)r
r.rJrrr
r�remove_sequencer�rrrr4�(







zTestMHMessage.test_sequencesN)r)r*r+r
r.r5r.rrrrrrq-srqc@s*eZdZejZdd�Zdd�Zdd�ZdS)�TestBabylMessagecCrrr)r�_labelsr�rrrr.Prtz&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)Nrur�resentrr)r
r/rJrrr r�remove_labelr�rrrr!SrwzTestBabylMessage.test_labelscCst�t�}|��}|�|��g�|�|���d|d<d|d<|�|����g�|�|�|��}|�|��ddg�|�|dd�|�|dd�|�|���|�	�|�|��ddg�|�|���|��}|�|��gd��dD]}|�||||�qydS)Nz
FooBar 1.0�
User-Agent�Blahz
X-Whatever)r|�Dater��To�Subject)
r
r/rJ�get_visiblerrSr�r�set_visible�update_visible)rr�visible�headerrrr�test_visiblejs*

�zTestBabylMessage.test_visibleN)	r)r*r+r
r/r5r.r!r�rrrrrxLs
rxc@rn)�TestMMDFMessageN)r)r*r+r
r0r5rrrrr��rpr�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+S),�TestMessageConversioncCs,|jD]}t�t�}||�}|�|�qdSr)r1r
r	rJr )rr��	msg_plainrrrr�test_plain_to_x�s


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


�z%TestMessageConversion.test_x_to_plaincCs"|jD]}|t�}|�|�qdSr)r1rNr )rr�rrrr�test_x_from_bytes�s
�z'TestMessageConversion.test_x_from_bytescs$|jD]�|�t�fdd��qdS)Ncs�d�Srrr�r�rrr��r�z9TestMessageConversion.test_x_to_invalid.<locals>.<lambda>)r1rlrr7rr�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)rJr9)rr�rrr�
<dictcomp>�s�z]TestMessageConversion.test_type_specific_attributes_removed_on_conversion.<locals>.<dictcomp>csg|]
}|��vr|�qSrr)r�a��class2�	referencerrr�s�z]TestMessageConversion.test_type_specific_attributes_removed_on_conversion.<locals>.<listcomp>zwhile converting {} to {})r1rJr�r9r:)r�class1�sourcer'�
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�DFPRSTr7)
r
r,rJr=r8rUr rr?r>)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))r\r�rHrH)�Pr)�R�A)rEr�)�Tr\)r��RDFArSzMAILER-DAEMON %sr7�RODFA)r
r-r0r,rJrVr=rr?r�rr�asctime�gmtimer8)r�pairsr�r��setting�resultrrrr�test_maildir_to_mboxmmdf�s


�
�z.TestMessageConversion.test_maildir_to_mboxmmdfc	Cs|t�t�}ddgfdddgfddgfdddgfdgfd	dgfd
ddgff}|D]\}}|�|�|�t�|���|�q'dS)Nr\rrHr
r�r�rrEr�r�)r
r,rJr=rr.r�rr�r�r�r�rrr�test_maildir_to_mh�s
�
��z(TestMessageConversion.test_maildir_to_mhc	Cs~t�t�}ddgfddgfdddgfdddgfdgfd	dd
gfdgd�ff}|D]\}}|�|�|�t�|���|�q(dS)
Nr\rrHr��	forwardedr�rrEr��deletedr�)r�rr�)r
r,rJr=rr/rr�rrr�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)NrbrS))r�rE)�Or)r\r�r�)r�r�)r��FRSTr�r7)
r
r-r0rJrcrrr�r=r,rr?rUr>)rr��msg_mboxMMDFr�r�r�rrrr�test_mboxmmdf_to_maildir�s


��z.TestMessageConversion.test_mboxmmdf_to_maildircCsltjtjfD]-}|t�}|�d�|�d�tjtjfD]}||�}|�|��d�|�|��d�qqdS)Nr�rb)	r
r-r0rJr=rcrr?r�)rr�r��class2_rGrrr�test_mboxmmdf_to_mboxmmdf�s

��z/TestMessageConversion.test_mboxmmdf_to_mboxmmdfc	Cs�tjtjfD]9}|t�}dgfddgfddgfdddgfdddgfd	ddgff}|D]\}}|�|�|�t�|���|�q*qdS)
Nr�r�rr\rHr
r�rr�)r
r-r0rJr=rr.r)rr�r�r�r�r�rrr�test_mboxmmdf_to_mhs


�
���z)TestMessageConversion.test_mboxmmdf_to_mhc	Cs�tjtjfD]9}|t�}dgfddgfdddgfddgfdddgfd	ddgff}|D]\}}|�|�|�t�|���|�q*qdS)
Nr�r�rr\r�rHr�rr�)r
r-r0rJr=rr/r)rr�rr�r�r�rrr�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)�rr)r�RS)r
rNr7rrr
r<)r
r.rJrrr,r?r>�rr�r�r�rrrr�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)�rr�)r�ROA)r
�ROFrrr
�OFA)r
r.rJrr-r0rr?)rr�r�r�rr�rrr�test_mh_to_mboxmmdf(s

�



�z)TestMessageConversion.test_mh_to_mboxmmdfcCsFt�t�}|�d�|�d�|�d�|�t�|���gd��dS)Nrrr
)rrr
)r
r.rJrrrr�rrr�
test_mh_to_mh7s



�z#TestMessageConversion.test_mh_to_mhcCs�ddgfddgfdgff}|D]\}}t�t�}|�|�|�t�|���|�qt�t�}|�d�|�d�|�d�|�t�|���ddg�dS)Nrrrr
)r
r.rJrrr/rr�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�)r��ST)rrE)rr�)r��PS)�editedrE)rzr�r7�rr�rrr�r�rz�PRT)r
r/rJrrr,r?r>�rr�r�r�r�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�)r��ROD)rrk)rr�)r�rk)r�rk)rzrkr��ODA)r
r-r0r/rJrrr?)rr�r�r�r�rr�rrr�test_babyl_to_mboxmmdf`s

�
�z,TestMessageConversion.test_babyl_to_mboxmmdfcCs�ddgfdgfdgfddgfdgfdgfdgff}|D]\}}t�t�}|�|�|�t�|���|�qt�t�}d	D]}|�|�q<|�t�|���ddg�dS)
Nrr�rrrr�r�rzr�)r
r/rJrrr.rr�rrr�test_babyl_to_mhqs�


�z&TestMessageConversion.test_babyl_to_mhcCs�t�t�}|��dD]}|�|�qt�|�}|�|��gd��|�|����|�����|����D]}|�|��||��|�q6dS)Nr�)	r
r/rJr�rrrr�rS)rrr�rGrrrr�test_babyl_to_babyl�s

�z)TestMessageConversion.test_babyl_to_babylN)r)r*r+r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr��s,
	r�c@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)r|rrq�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�bobr>�orBsfri����sed)r!rsrWr|r�readliner�rr�rsrrr�_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)
Nrr�r�r�r�r>r?r@r�)r!rsrWr|rr�rr�rrr�_test_readlines�s 

�
�

�z!TestProxyFileBase._test_readlinescCsztj��}|�d�t|�}|�t|�d|�|�t|�d|�|�t|�d|�|�t|�d�|�tt|�dS)Nrr�r�r�r�)	r!rsrWr|�iterr�nextrl�
StopIteration)rr�rs�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=r�r�r�rr��d)	r!rsrWr|r�tellrqrr�r�rrr�_test_seek_and_tell�s


z%TestProxyFileBase._test_seek_and_tellcCs8|�|j�|��|�|j�|��|�|j�dSr)r�r&r:rr�rrr�_test_close�s
zTestProxyFileBase._test_closeN)	r)r*r+r�r�r�r�r�r�rrrrr��s
r�c@�TeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�
TestProxyFilecC�tj|_t|jd�|_dS�Nrx�rr3r4ror�r7rrrr8��zTestProxyFile.setUpcCr9r�r�r:r(r4r7rrrr;�r<zTestProxyFile.tearDowncCsx|j�d�|j��}t�|j�}|�|��|�|�|j��|�t�|jd�}|�|��d�|�|j��|�dS)Nr�r)r�r{r�r
�
_ProxyFiler)r�pos�proxy0�proxy1rrr�test_initialize�s
zTestProxyFile.test_initializecCs"|j�d�|�t�|j��dS)Nr�)r�r{r�r
r�r7rrr�	test_read�szTestProxyFile.test_readcC�8|j�tdtjtjtjfd��|�t�|j��dS�Nzfoo%sbar%sfred%sbobr�)r�r{�bytesr!rsr�r
r�r7rrr�
test_readline����zTestProxyFile.test_readlinecCr�r�)r�r{r�r!rsr�r
r�r7rrr�test_readlinesr�zTestProxyFile.test_readlinescCr�r�)r�r{r�r!rsr�r
r�r7rrr�test_iterationr�zTestProxyFile.test_iterationcC�4|j�tdtjtjfd��|�t�|j��dS�Nz
foo%sbar%sr�)r�r{r�r!rsr�r
r�r7rrr�test_seek_and_tell�z TestProxyFile.test_seek_and_tellcCr�r�)r�r{r�r!rsr�r
r�r7rrrrr�zTestProxyFile.test_closeN�r)r*r+r8r;r�r�r�r�r�r�rrrrrr��sr�c@r�)�TestPartialFilecCr�r�r�r7rrrr8r�zTestPartialFile.setUpcCr9rr�r7rrrr;r<zTestPartialFile.tearDowncCs\|j�tdtjdd��|j��}t�|jdd�}|�|��d�|�|j��|�dS)Nr�r�r�r>rAr)	r�r{r�r!rsr�r
�_PartialFiler)rr�r�rrrr�s

zTestPartialFile.test_initializecCs,|j�tdd��|�t�|jdd��dS)Nz	***bar***r�r?rB)r�r{r�r�r
rr7rrrr�'szTestPartialFile.test_readc
C�J|j�tdtjtjtjfd��|�t�|jdddttj���dS)Nz!!!!!foo%sbar%sfred%sbob!!!!!r�rA�r?)	r�r{r�r!rsr�r
rrr7rrrr�+�
��
�zTestPartialFile.test_readlinec
Cr)Nzfoo%sbar%sfred%sbob?????r�r�
r?)	r�r{r�r!rsr�r
rrr7rrrr�1rzTestPartialFile.test_readlinesc
Cr)Nz____foo%sbar%sfred%sbob####r�r@�r?)	r�r{r�r!rsr�r
rrr7rrrr�7rzTestPartialFile.test_iterationc
C�F|j�tdtjtjfd��|�t�|jdddttj���dS)Nz(((foo%sbar%s$$$r�r?�	r>)	r�r{r�r!rsr�r
rrr7rrrr�=�
�z"TestPartialFile.test_seek_and_tellc
Cr)Nz&foo%sbar%s^r�r=rBr?)	r�r{r�r!rsr�r
rrr7rrrrBr	zTestPartialFile.test_closeNr�rrrrrsrz6From 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)Nr7r4rCr=)
rr3�_dirr!r"r#r$�isfiler&rOr6�_counter�	_msgfilesr7rrrr8Us
zMaildirTestCase.setUpcCsdtttj|j��t�tj�|j	d��t�tj�|j	d��t�tj�|j	d��t�|j	�dS)Nr7r4rC)
r��mapr!r&rr�rmdirr"r6rr7rrrr;cs
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=�.�
myhostname�mydomainr4rmrCrD)r�rrr
r6�strr!r"rrorrGr{�FROM_�
DUMMY_MESSAGE�link�AttributeError�PermissionError)	r�dirr��tr�r��tmpname�newname�fprrr�
createMessagejs,
����zMaildirTestCase.createMessagecCs2t�tj�|_|�|j���|�|j���dS)zTest an empty maildir mailboxN)r
r)rr3r�r�r�r7rrr�test_empty_maildir~sz"MaildirTestCase.test_empty_maildircC�L|�d�t�tj�|_|�|j���|�|j���|�|j���dS)Nr7�	rr
r)rr3r�r�r�r�r7rrr�test_nonempty_maildir_cur��

z)MaildirTestCase.test_nonempty_maildir_curcCr!)NrCr"r7rrr�test_nonempty_maildir_new�r$z)MaildirTestCase.test_nonempty_maildir_newcCsf|�d�|�d�t�tj�|_|�|j���|�|j���|�|j���|�|j���dS)Nr7rCr"r7rrr�test_nonempty_maildir_both�s

z*MaildirTestCase.test_nonempty_maildir_bothN)F)
r)r*r+r8r;rr 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-To�Receivedz�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>rzgkj@gregorykjohnson.comr�zSample messagezMime-Versionz1.0zContent-Typez,multipart/mixed; boundary="NMuMz9nt05w80d4+"zContent-Disposition�inliner|zMutt/1.5.9i)z1This is a sample message.

--
Gregory K. Johnson
zRH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs
3FYlAAAA
c@r)�MiscTestCasecCstj|tddhd�dS)Nrs�fcntl)�not_exported)r�check__all__r
r7rrr�test__all__�s
�zMiscTestCase.test__all__N)r)r*r+r-rrrrr)�sr)cCst��dSr)r�
reap_childrenrrrr�tearDownModule�r�r/�__main__)8r!r0rrrTrzr�
email.messager}rLry�testr�test.supportrr�rr
r�rr2�TestCaserr'r�r�r�rrrr#r#r)r+r-rCr^rorqrxr�r�r�r�rrrr
rJrWrNrrr)r/r)�mainrrrr�<module>s�}$])
."	
VJ07S15R
/����������������

�

Youez - 2016 - github.com/yon3zu
LinuXploit