Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 18.223.214.17
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : test_mailbox.cpython-310.pyc
o

ab)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�i�payload�part�r�:/usr/local/python-3.10/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_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)r4�closer&r2r5rrr�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@)�appendr4�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;)r4rF�
_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;rSzZSubject: =?unknown-8bit?b?RmFsaW5hcHThciBo4Xpob3pzeuFsbO104XNzYWwuIE3hciByZW5kZWx06Ww/?=

)rT�
splitlinesr4rFrUrrP)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�
ValueErrorr4rFrT�flushrr�assertMailboxEmptyr5rrr�&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�assertRaisesrar4rFrIrrr8r_)rrdrrr�)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

        Да, они летят.
        rAc	Cs�|j�|j�}|�|j�|�|j�|j�|��}|�|��|j�dtj	�
���Wd�n1s3wY|�|j|��d�dS)N�
uДа, они летят.
)r4rF�_non_latin_bin_msgrrV�get_file�read�replacer�lineseprUr�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+rrh)
�tempfile�
TemporaryFile�writerL�seekr4rFrrV�split�rrorrrr�test_add_binary_file�s

��z TestMailbox.test_add_binary_filecCsrt�d��}|�|j�|�d�|j�|�}Wd�n1s!wY|�|j�|��	d�|j�	d��dSrq)
rsrtrurirvr4rFrrVrwrxrrr�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+rArBrrh)
rsrtrurHrvrMrNr4rFrrVrwrLrxrrr�test_add_text_file_warns�s

����z$TestMailbox.test_add_text_file_warnscCs`|�t��|j�t�|jd��}Wd�n1swY|�|j�|�|jd�dS)N�0)	rMrNr4rFrJ�StringIOrGrrPrWrrr�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[)
rMrNr\r]r4rFrJr~rTrrr8r_r5rrr�!test_add_nonascii_StringIO_raises�s���
z-TestMailbox.test_add_nonascii_StringIO_raisescC�|�|jj�dSr)�_test_remove_or_delitemr4�remover5rrr�test_remove��zTestMailbox.test_removecCr�r)r�r4�__delitem__r5rrr�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�r4r��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�)r4rFrGrrrf�KeyErrorrP)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�)r4rFrGrr�discardrfr�)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
)r4rFrG�getrr�assertIsNone�assertIsr8r3r2)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�rr5rrr��r�z*TestMailbox.test_getitem.<locals>.<lambda>cr�rr�rr�rrr��r�)r4rFrGrrrfr�r��rrrr�r�test_getitem�s
zTestMailbox.test_getitemcCsn|j�|jd�}|j�t�}|j�|�}|�|tj�|�|dd�|�|�	�d�|�
|j�|��dS)Nrr�r�r�)r4rFrGrH�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�r4rFrGrHrrVrUrL�rr�r�rrr�test_get_bytess�zTestMailbox.test_get_bytescCs\|j�|jd�}|j�t�}|�|j�|�|jd�|�|j�|��d�t�d��dS)Nr�
�r4rFrGrHrrPrwr�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�)r4rFrGrHrjrkr�decoderlrrm)rr�r��fileZdata0Zdata1rrr�
test_get_files
�
���zTestMailbox.test_get_filecCs,|j�t�}|j�|�}|��|��dSr)r4rFrHrjr8rnrrr�!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_iterationr4�iterkeysr5rrr�
test_iterkeys)�zTestMailbox.test_iterkeyscCr�r�)r�r4rQr5rrr�	test_keys-r�zTestMailbox.test_keyscCr��NFTr�)r�r4�
itervaluesr5rrr�test_itervalues1�
�zTestMailbox.test_itervaluescCr�r�)r�r4�__iter__r5rrr�	test_iter6r�zTestMailbox.test_itercCr�r�)r�r4�valuesr5rrr�test_values;r�zTestMailbox.test_valuescC�|j|jjddd�dS�NTr�)r�r4�	iteritemsr5rrr�test_iteritems?r�zTestMailbox.test_iteritemscCr�r�)r�r4rr5rrr�
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�rangerEr4rFrG�listrr�set�
assertLess�intr)
rr�r�r�r�rrQr�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;)�assertNotInr4rFrGr
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�rrr4rErFrGr�)rr�rQrrrr�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)r4�__setitem__rr5rrr���z+TestMailbox.test_set_item.<locals>.<lambda>cr�r�r�rr5rrr��r�r<)
r4rFrGrrPrHrrfr�rr�rr5r�
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)r4rPr�rrrrr���z(TestMailbox.test_clear.<locals>.<lambda>)r�r4rFrGrrrP�clearrrfr�)r�
iterationsrQrrr�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�)	r4rFrGr
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�rEr4rFrG�popitemr
r�rr�r�indexrrfr�)rr�rQr�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�)r4�updaterGrr�rrr��s

�z)TestMailbox.test_update.<locals>.<lambda>)r4rFrGr�rHrrrPrrfr�)rr�r�rr�r�test_update�sR�����������zTestMailbox.test_updatecC�|�|jjd�dS�NT)�_test_flush_or_closer4r^r5rrr�
test_flush��zTestMailbox.test_flushcCsZ|j�|jd�|j�|jd�|j��|j��|j��|j��|j��dS�Nrr;)r4rFrGr^r�r5rrr�test_popitem_and_flush_twice�s



z(TestMailbox.test_popitem_and_flush_twicecCsZ|�tj�|����|j��|�tj�|����|j��|�tj�|����dSr)	�assertFalserr r#�_get_lock_pathr4�lockr�unlockr5rrr�test_lock_unlock�s


zTestMailbox.test_lock_unlockcCr��NF)r�r4r8r5rrr�
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�rG��.0rr5rr�
<listcomp>	�z4TestMailbox._test_flush_or_close.<locals>.<listcomp>r=rr;r<)r�r4rFr8r3r2rQrrr
rP)rr�Zshould_call_close�contentsZoldboxrQrrr5rr�s

z TestMailbox._test_flush_or_closec	srt�t�tt�t�fD]}t����j�|������	�t�
dtj�
���qt�����t��fdd��dS)Nrhcs�j�d��Sr)r4�
_dump_messager��outputrrrr�"r�z/TestMailbox.test_dump_message.<locals>.<lambda>)rrIrHrJrKrLr4r�r�getvaluerlrrmrUrf�	TypeError)r�inputrr�r�test_dump_messages
�
��zTestMailbox.test_dump_messagecCs
|jdS)Nz.lock)r2r5rrrr�$s
zTestMailbox._get_lock_path�r�)9r'r(r)ZmaxDiffr3rGr6r9rR�textwrap�dedentrTrXrZr`rgrUrirpryrzr|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�r�rr�rrrrr0/sl


�	







"r0c@�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�)rFr��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)rQrr
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)rPrr
rrr�=r�cr
r)rVrr
rrr�>r�cr
r)rjrr
rrr�?r�csd�vSrrrr
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))rr)r�rr
rrr�Fr�crr)r^rr
rrr�Gr�crr)r�rr
rrr�Hr�crr)r�rr
rrr�Ir�crr)r8rr
rrr�Jr�)r
�Mailboxrf�NotImplementedErrorr5rr
r�test_notimplemented+s<
z)TestMailboxSuperclass.test_notimplementedN)r'r(r)rrrrrr	)�r	c@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�!)r0r6r�name�sys�platformr4�colonr5rrrr6Qs
�zTestMaildir.setUpcCs"|�t�tj�|jd��g�dS�N�tmp)rr�listdirr �joinr2r5rrrr_Vs"zTestMaildir.assertMailboxEmptycCs`t�|jd�}|�d�|�d�|j�|�}|�tj	�
tj	�|jdd||jj
f���dS)Nr�curr�z%s%sfoo)r
r*rG�
set_subdir�set_infor4rFrrr r#r(r2r$)rrrrrr�test_add_MMYs


�zTestMaildir.test_add_MMcCsnt�|jd�}|�d�|�d�|j�|�}|j�|�}|�|tj�|�	|�
�d�|�	|��d�dS)Nrr)�RF�FR)r
r*rGr*�	set_flagsr4rFr�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;rr�r<z2,Sr=�Sz3
)r
r*rGr/r4rFr�rr0r1rr+)rr�rr2�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�sr9�r)r
r*rGr*r/r4rFrr2r$r�r)rrrr9rr7rrr�test_consistent_factory�s



z#TestMaildir.test_consistent_factorycCsH|��t�|j�|_|��|�|j�|j|jdd�|_|��dS)Nr:)r9r
rr2r4�
_check_basicsr&r3r5rrr�test_initialize_new�szTestMaildir.test_initialize_newc	CsJ|��dD]}t�tj�tj�|j|���qt�|j�|_	|�
�dS)N�rr&r4r))r9r�mkdirr �normpathr(r2r
rr4r<)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')rr4r2rr �abspathr3r(�stat�ST_MODEr�S_ISDIR)rrrAr �moderrrr<�s�zTestMaildir._check_basicscC�X|j�d�|j�d�|j�d�|�t|j���d�|�t|j���td��dS�N�one�two�threer=)rJrKrL�r4�
add_folderrr�list_foldersr�r5rrr�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)r4rN�
get_folderrFrGrrr r!r(r2rrPrQ)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�
NrJrKr<)rJrKr;)rKrL)rKrLr�r4rNrrrOr�Z
remove_folderr5rrr�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��wrArB�@i@�r<)rr r(r2�openrur4Zcleanrr#rD�utime�time�st_mtimer�)rZfoo_pathZbar_pathroZfoo_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')�socket�gethostnamerlr�getpid�re�compiler�r4Z_create_tmpr rwr!rrCr(r2�match�assertIsNotNone�groupsZassertGreaterEqualr�rurLrvrkr8rr')
rr��hostname�pid�patternZprevious_groups�xZtmp_file�head�tailrjrlZ
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;r4r<)	rr4�_tocrFrG�_refreshrr r(r�rrr�test_refreshs"
��

�zTestMaildir.test_refreshcCsx|j�|jd�}|j�|jd�}|�|j�|_|�|jji�d|j_|j��|�t	|jj�
��t	||g��dS)Nrr;���)r4rFrGr3r2rrt�_skewfactorru�sortedrQr�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��r4�_lookuprr5rrr�:r�z)TestMaildir.test_lookup.<locals>.<lambda>rr4cr�rr{rr�rrr�Br�)rfr�r4rFrGrr|rr r(r�r2rtr^r5rr�r�test_lookup8s
zTestMaildir.test_lookupcCs|j��|j��dSr)r4r�r�r5rrrr�Es
zTestMaildir.test_lock_unlockcCsLdd�}|j|j|d�}|�d�}|�|j|�|�d�}|�|j|�dS)NcS�dSrr��srrr�
dummy_factoryM�z.TestMaildir.test_folder.<locals>.dummy_factoryr:rU)r3r2rNr�rS)rr�rZfolderZ
folder1_aliasrrr�test_folderJs

zTestMaildir.test_foldercCsHtd�D]}|j�t�t��qt�tj�	|j
dd��|jD]}qdS)Nr�r)z	stray-dir)r�r4rFr
r	rHrr?r r(r2)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*rGrr�r4rFr r(r2r|rD�st_moder�)rr�
orig_umaskrr rGrrr�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�r4rNr r(r2rDr�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)r4r?r<rwcs�jj�uSr)r4rtr�Zorig_tocrrr�	refreshed��z*TestMaildir.test_reread.<locals>.refreshedr)z
stray-file)r4rurr_r r(r2r`rxrtr�rZcreate_empty_filer$r)rrAr��filenamerr�r�test_rereads
�



zTestMaildir.test_rereadrr)r'r(r)r3r6r_r,r3r8r;r=rBr<rPrVrZrbrsrvrzr}r�r�r��unittest�
skipUnless�hasattrrr�r�r�rrrrrMs6
		
		

/


rc@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�)rrDr2�st_inor4rFrGr^rr8r3r)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;)rrDr2r��chmodr4rFrGr�r^r)rrGrrrr�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.*�
�superr9r4r8r&r2�glob�escaperr$�rZlock_remnant��	__class__rrr9��

�z_TestMboxMMDF.tearDowncC�Bt|jd��}|�|��g�Wd�dS1swYdS�N�rb�r^r2r�	readlines�rrorrrr_��"�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��r4rFr�get_fromrrWrrr�test_add_from_string��z"_TestMboxMMDF.test_add_from_stringcCr�)NsFrom foo@bar blah
From: foo

0
r�r�r�rWrrr�test_add_from_bytesr�z!_TestMboxMMDF.test_add_from_bytescCs*tjtjfD]}|d�}|j�|�}qdS)Nr�)r
r+r.r4rF)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�r5rrr�r�z6_TestMboxMMDF.test_open_close_open.<locals>.<listcomp>r=)r�r4rFr8rr �getmtimer2r3rrr�r
rP)rr�r�mtimerrr5r�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�)r4rFrHr�rG�_filer^rvrkr8r^r2rr3)rrr�rorrr�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)rer�Z
addCleanupr8rr�r4r��send�recvr��_exitrfr
ZExternalClashErrorrZwait_process)r�c�prnrrr�test_lock_conflict(s,



�

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

body
)	r4rFr^r8r3r2r�rZ_locked)rrr�r�rrr�test_relockMs



z_TestMboxMMDF.test_relock)r'r(r)r9r_r�r�r�r�r�r�r�r�r�r�rrer�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)Zcreaterr�)rr�r4r8r$r2r
r�rFrDr�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_payloadr4rFr�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

0rArBrwz0

z
From: foo

0
)r4rFr^r2rkr)rro�datarrr�test_message_separator~s�"�zTestMbox.test_message_separatorr)r'r(r)r3r�r�r�rr�r�r�rrrrr�]s


r�c@seZdZddd�ZdS)�TestMMDFNcCrr)r
ZMMDFrrrrr��r�zTestMMDF.<lambda>r)r'r(r)r3rrrrr��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'r2r5rrrr_�szTestMH.assertMailboxEmptycCrHrIrMr5rrrrP�rQzTestMH.test_list_folderscCs�dd�}|�|j|�|_|j�d�}|j�d�}|�|jd�|�tj	�
tj	�|jd���|j�d�}|�|�
|��d�|jd�|�|j|jj�|�|j|jj�dS)NcSr~rrrrrrr��r�z-TestMH.test_get_folder.<locals>.dummy_factoryrRr�r)r3r2r4rNrSrFrGrrr r!r(rrPrQr�)rr�Z
new_folderrTrUrrrrV�s�zTestMH.test_get_foldercCrWrXrYr5rrrrZ�r[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�r;)r��repliedr��r�r�r��flagged)r�r�r�r�)
rr4�
get_sequencesr
r,rG�add_sequencerF�
set_sequencesr��rr�r�r6r�rrr�test_sequences�s(
�
��zTestMH.test_sequencescCs6t�|jd�}|�d�|j�|�}|j�|�}dS)Nrr�)r
r,rGr�r4rFr�)rr�r�Zrefmsg0rrr�test_issue2625�s
zTestMH.test_issue2625cCs@t�|jd�}|j�|�}|j��|j�|�|j��dS)Nr)r
r,rGr4rFr�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,rGr�r4rFrr�r��packrQr�r�)	rr�r6r7Zmsg3r�r�r�Zkey3rrr�	test_pack�sZ����
�


��zTestMH.test_packcCstj�|jd�S)Nz.mh_sequences.lock)rr r(r2r5rrrr��zTestMH._get_lock_pathr)
r'r(r)r3r_rPrVrZr�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�rrr9r�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�)rr4�
get_labelsr
r-rG�	add_labelrF�
set_labelsr�r�r�rrr�test_labels&s 


� zTestBabyl.test_labelsr)r'r(r)r3r_r9r�r�rrr�rr�s

r�c@�eZdZdd�Zdd�ZdS)�FakeFileLikeObjectcC�
d|_dSr���closedr5rrr�__init__;�
zFakeFileLikeObject.__init__cCr�r�r�r5rrrr8>r�zFakeFileLikeObject.closeN)r'r(r)r�r8rrrrr�9sr�c@r�)�FakeMailBoxcCs,tj�|ddd��dd�td�D�|_dS)NrcSr~rr)r�rrrr�Esz&FakeMailBox.__init__.<locals>.<lambda>cSsg|]}t��qSr)r�r�rrrr�Fsz(FakeMailBox.__init__.<locals>.<listcomp>r�)r
rr�r��filesr5rrrr�DszFakeMailBox.__init__cCs
|j|Sr)r�rWrrrrjHr�zFakeMailBox.get_fileN)r'r(r)r�rjrrrrr�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�Lrr�c@sreZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�Zdd�Zdd�ZdS)�TestMessagecCstj|_dSr)rr1r2r5rrrr6\r�zTestMessage.setUpcCs|�|j�dSr)r&r2r5rrrr9_r�zTestMessage.tearDowncCs,t�t�}|�|�}|�|�|�|�dSr)rrIrHr3�_post_initialize_hookr�r�eMMrrrr�test_initialize_with_eMMbs


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

z'TestMessage.test_initialize_with_stringcCsht|jddd��"}|�t�|�d�|�|�}|�|�|�|�Wd�dS1s-wYdS)Nr{rArBr)r^r2rurHrvr3r�r�rrorrrr�test_initialize_with_fileos



"�z%TestMessage.test_initialize_with_filecCsdt|jd��"}|�t�|�d�|�|�}|�|�|�|�Wd�dS1s+wYdS)Nrrr)r^r2rurLrvr3r�rrrrr� test_initialize_with_binary_filexs



"�z,TestMessage.test_initialize_with_binary_filecCsn|��}|�|�|�|tjj�|�|tj�|�||j�|�|��g�|�	|�
��|�|���dSr)
r3r�rrrr	r
rrQr�rr�rr�rrr�test_initialize_with_nothing�s
z(TestMessage.test_initialize_with_nothingcs��t�fdd��dS)Ncs��t��Sr)r3�objectrr5rrr��r�z9TestMessage.test_initialize_incorrectly.<locals>.<lambda>)rfrr5rr5r�test_initialize_incorrectly�r�z'TestMessage.test_initialize_incorrectlycCs:t�t�}|�t�}|jD]
}|�||jd�|��q
dS)Nz{} attribute does not exist)rrIrHr3�__dict__r
�format)rr�r�attrrrr�test_all_eMM_attributes_exist�s



��z)TestMessage.test_all_eMM_attributes_existcCs*t�t�}|��}|�|�|�|�dSr)rrIrHr3Z_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>)r3r/rrrr	rfr)rr�rr
r�test_explain_to�s

zTestMessage.test_explain_tocCr~rrr�rrrr��sz!TestMessage._post_initialize_hookN)r'r(r)r
r	r3r6r9r�rrrrrr
rrr�rrrrr�Xs		
r�c@sBeZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
S)�TestMaildirMessagecCs |�|jd�|�|jd�dS)Nr4r)rZ_subdir�_infor�rrrr��sz(TestMaildirMessage._post_initialize_hookcs�t�t��|����d���d�|����d���d�|����d�|�t�fdd��|����d���d�|����d�|���dS)Nr4r)cr
r%)r*r�rrrr��r�z0TestMaildirMessage.test_subdir.<locals>.<lambda>)	r
r*rHrr0r*rfr]rr5rrr�test_subdir�s



zTestMaildirMessage.test_subdircCs�t�t�}|�|��d�|�|��d�|�d�|�|��d�|�|��d�|�d�|�|��d�|�d�|�|��d�|�d�|�|��d	�|�|��d�|�	|�dS)
Nrr4�FZSDTPZDPSTZFTZDFPSTZTDRP�FS)
r
r*rHrr1r0r/�add_flag�remove_flagrr�rrr�
test_flags�s




zTestMaildirMessage.test_flagscCsDt�t�}|�t|��t���d�|�d�|�|��d�dS)N�<�)	r
r*rHr��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+rrrrr��r�z.TestMaildirMessage.test_info.<locals>.<lambda>)	r
r*rHr�get_infor+rfrrr5rrr�	test_info�s

zTestMaildirMessage.test_infocCs�t�t�}|�|��d�|�d�|�|��d�|�|��d�|�d�|�|��d�|�|��d�|�d�|�|��d�|�|��d�|�	d�|�|��d�|�|��d�|�
|�dS)	NrZSFrz2,FSz1,ZRPT�Dz2,D)r
r*rHrrr/r1r+rrrr�rrr�test_info_and_flags�s




z&TestMaildirMessage.test_info_and_flagsN)r'r(r)r
r*r3r�rrrrr!rrrrr�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	rHZ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+rHr#�set_fromrr�r`�	localtimer�rrr�	test_froms


z_TestMboxMMDFMessage.test_fromcCs�t�t�}|�|��d�|�d�|�|��d�|�d�|�|��d�|�d�|�|��d�|�d�|�|��d�|�|�dS)	NrrZXODRZRODXZFAZRODFAXZFDXA�RO)	r
r+rHrr1r/rrrr�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})rkrhrjr�)rrZsenderrrrr#s
�z _TestMboxMMDFMessage._check_fromr)r'r(r)r
Z_mboxMMDFMessager3r�r$r(rr#rrrrr"�sr"c@�eZdZejZdS)�TestMboxMessageN)r'r(r)r
r+r3rrrrr+(�
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,rHrr�r�r�Zremove_sequencer�rrrr�4�(







zTestMHMessage.test_sequencesN)r'r(r)r
r,r3r�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)Nr0r��resentr�r�)r
r-rHrr�r�r�Zremove_labelr�rrrr�Sr1zTestBabylMessage.test_labelscCst�t�}|��}|�|��g�|�|���d|d<d|d<|�|����g�|�|�|��}|�|��ddg�|�|dd�|�|dd�|�|���|�	�|�|��ddg�|�|���|��}|�|��gd��dD]}|�||||�qydS)Nz
FooBar 1.0�
User-AgentZBlahz
X-Whatever)r4�Dater��To�Subject)
r
r-rH�get_visiblerrQr�rZset_visible�update_visible)rrZvisible�headerrrr�test_visiblejs*

�zTestBabylMessage.test_visibleN)	r'r(r)r
r-r3r�r�r;rrrrr2Ls
r2c@r*)�TestMMDFMessageN)r'r(r)r
r.r3rrrrr<�r,r<c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+S),�TestMessageConversioncCs,|jD]}t�t�}||�}|�|�qdSr)r/r
r	rHr)rr��	msg_plainrrrr�test_plain_to_x�s


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


�z%TestMessageConversion.test_x_to_plaincCs"|jD]}|t�}|�|�qdSr)r/rLr)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/rfrr5rrBr�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)rHr)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/rHr�rr)rZclass1�sourcer%Z
type_specificr	rrFr�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*rHr/r*rrrr1r0)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�rr)�Pr)�R�A)r5rO)�Tr )rIZRDFArzMAILER-DAEMON %sr)�RODFA)r
r+r.r*rHrr/rr1r�r`�asctime�gmtimer*)r�pairsr�rJ�setting�resultrrrr�test_maildir_to_mboxmmdf�s


�
�z.TestMessageConversion.test_maildir_to_mboxmmdfc	Cs|t�t�}ddgfdddgfddgfdddgfdgfd	dgfd
ddgff}|D]\}}|�|�|�t�|���|�q'dS)Nr r�rr�rNrOr�r5rQrI)r
r*rHr/rr,r��rrJrUrVrWrrr�test_maildir_to_mh�s
�
��z(TestMessageConversion.test_maildir_to_mhc	Cs~t�t�}ddgfddgfdddgfdddgfdgfd	dd
gfdgd�ff}|D]\}}|�|�|�t�|���|�q(dS)
Nr r�rrN�	forwardedrOr�r5rQ�deletedrI)r\r�r[)r
r*rHr/rr-r�rYrrr�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)Nr%r))rOr5)�Or)r rQrM)rPrO)rRZFRSTr^r))
r
r+r.rHr&r`rTr/r*rr1rr0)rr��msg_mboxMMDFrUrVrWrrrr�test_mboxmmdf_to_maildir�s


��z.TestMessageConversion.test_mboxmmdf_to_maildircCsltjtjfD]-}|t�}|�d�|�d�tjtjfD]}||�}|�|��d�|�|��d�qqdS)NrRr%)	r
r+r.rHr/r&rr1r�)rr�r_Zclass2_r7rrr�test_mboxmmdf_to_mboxmmdf�s

��z/TestMessageConversion.test_mboxmmdf_to_mboxmmdfc	Cs�tjtjfD]9}|t�}dgfddgfddgfdddgfdddgfd	ddgff}|D]\}}|�|�|�t�|���|�q*qdS)
NrOr^r�r rr�rPr�rR)r
r+r.rHr/rr,r�)rr�r_rUrVrWrrr�test_mboxmmdf_to_mhs


�
���z)TestMessageConversion.test_mboxmmdf_to_mhc	Cs�tjtjfD]9}|t�}dgfddgfdddgfddgfdddgfd	ddgff}|D]\}}|�|�|�t�|���|�q*qdS)
NrOr^r�r r\rrPr�rR)r
r+r.rHr/rr-r�)rr�rrUrVrWrrr�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�rr)r�r�r�r.)r
r,rHr�rr*r1r0�rrUrVrWrrrr�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�r^)r��ROA)r�ZROFr�r�r�ZOFA)r
r,rHr�r+r.rr1)rrUrVrWrr�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,rHr�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,rHr�rr-r�rfrrr�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)rd)r\ZST)r�r5)r�re)r[�PS)�editedr5)r3rmr)�r�r\r�r�r[rnr3ZPRT)r
r-rHr�rr*r1r0�rrUrVrWr�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)rh)r\ZROD)r�r))r�ri)r[r))rnr))r3r)roZODA)r
r+r.r-rHr�rr1)rrUrVrWr�rrqrrr�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�r\r�r�r�r[rnr3ro)r
r-rHr�rr,r�rprrr�test_babyl_to_mhqs�


�z&TestMessageConversion.test_babyl_to_mhcCs�t�t�}|��dD]}|�|�qt�|�}|�|��gd��|�|����|�����|����D]}|�|��||��|�q6dS)Nro)	r
r-rHr9r�rr�r8rQ)rrrqr7rrrr�test_babyl_to_babyl�s

�z)TestMessageConversion.test_babyl_to_babylN)r'r(r)r?r@rArCrHrLrXrZr]r`rarbrcrgrjrkrlrrrsrtrurrrrr=�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)rvrrk�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�foorw�fred�bobr<�or@sfri����sed)rrmrUrvr�readliner�rr|rmrrr�_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~rwrr�r<r=r>ry)rrmrUrvrr�rr�rrr�_test_readlines�s 

�
�

�z!TestProxyFileBase._test_readlinescCsztj��}|�d�t|�}|�t|�d|�|�t|�d|�|�t|�d|�|�t|�d�|�tt|�dS)Nrr~rwrr�)	rrmrUrv�iterr�nextrf�
StopIteration)rr|rm�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;rzrwrwrr��d)	rrmrUrvr�tellrkrr�r�rrr�_test_seek_and_tell�s


z%TestProxyFileBase._test_seek_and_tellcCs8|�|j�|��|�|j�|��|�|j�dSr)r�r�r8rr{rrr�_test_close�s
zTestProxyFileBase._test_closeN)	r'r(r)r}r�r�r�r�r�rrrrrv�s
rvc@�TeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�
TestProxyFilecC�tj|_t|jd�|_dS�Nrr�rr1r2r^r�r5rrrr6��zTestProxyFile.setUpcCr7r�r�r8r&r2r5rrrr9�r:zTestProxyFile.tearDowncCsx|j�d�|j��}t�|j�}|�|��|�|�|j��|�t�|jd�}|�|��d�|�|j��|�dS)Nr~r)r�rur�r
�
_ProxyFiler)r�posZproxy0Zproxy1rrr�test_initialize�s
zTestProxyFile.test_initializecCs"|j�d�|�t�|j��dS)Nrw)r�rur}r
r�r5rrr�	test_read�szTestProxyFile.test_readcC�8|j�tdtjtjtjfd��|�t�|j��dS�Nzfoo%sbar%sfred%sbobr�)r�ru�bytesrrmr�r
r�r5rrr�
test_readline����zTestProxyFile.test_readlinecCr�r�)r�rur�rrmr�r
r�r5rrr�test_readlinesr�zTestProxyFile.test_readlinescCr�r�)r�rur�rrmr�r
r�r5rrr�test_iterationr�zTestProxyFile.test_iterationcC�4|j�tdtjtjfd��|�t�|j��dS�Nz
foo%sbar%sr�)r�rur�rrmr�r
r�r5rrr�test_seek_and_tell�z TestProxyFile.test_seek_and_tellcCr�r�)r�rur�rrmr�r
r�r5rrrr�r�zTestProxyFile.test_closeN�r'r(r)r6r9r�r�r�r�r�r�r�rrrrr��sr�c@r�)�TestPartialFilecCr�r�r�r5rrrr6r�zTestPartialFile.setUpcCr7rr�r5rrrr9r:zTestPartialFile.tearDowncCs\|j�tdtjdd��|j��}t�|jdd�}|�|��d�|�|j��|�dS)Nr�r�r�r<r?r)	r�rur�rrmr�r
�_PartialFiler)rr�r|rrrr�s

zTestPartialFile.test_initializecCs,|j�tdd��|�t�|jdd��dS)Nz	***bar***r�r=r@)r�rur�r}r
r�r5rrrr�'szTestPartialFile.test_readc
C�J|j�tdtjtjtjfd��|�t�|jdddttj���dS)Nz!!!!!foo%sbar%sfred%sbob!!!!!r�r?�r=)	r�rur�rrmr�r
r�rr5rrrr�+�
��
�zTestPartialFile.test_readlinec
Cr�)Nzfoo%sbar%sfred%sbob?????r�r�
r=)	r�rur�rrmr�r
r�rr5rrrr�1r�zTestPartialFile.test_readlinesc
Cr�)Nz____foo%sbar%sfred%sbob####r�r>�r=)	r�rur�rrmr�r
r�rr5rrrr�7r�zTestPartialFile.test_iterationc
C�F|j�tdtjtjfd��|�t�|jdddttj���dS)Nz(((foo%sbar%s$$$r�r=�	r<)	r�rur�rrmr�r
r�rr5rrrr�=�
�z"TestPartialFile.test_seek_and_tellc
Cr�)Nz&foo%sbar%s^r�r;r@r=)	r�rur�rrmr�r
r�rr5rrrr�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&r4r;)
rr1�_dirrr r!r"�isfiler$r?r(�_counter�	_msgfilesr5rrrr6Us
zMaildirTestCase.setUpcCsdtttj|j��t�tj�|j	d��t�tj�|j	d��t�tj�|j	d��t�|j	�dS)Nr)r&r4)
r��maprr$r�r�rmdirr r(r�r5rrrr9cs
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\rArB)r�r`r�r(�strrr r�r^r�rEru�FROM_�
DUMMY_MESSAGE�link�AttributeError�PermissionError)	r�dirr��trnr�ZtmpnameZnewname�fprrr�
createMessagejs,
����zMaildirTestCase.createMessagecCs2t�tj�|_|�|j���|�|j���dS)zTest an empty maildir mailboxN)r
rrr1r�r�r�r5rrr�test_empty_maildir~sz"MaildirTestCase.test_empty_maildircC�L|�d�t�tj�|_|�|j���|�|j���|�|j���dS)Nr)�	r�r
rrr1r�rkr�r�r5rrr�test_nonempty_maildir_cur��

z)MaildirTestCase.test_nonempty_maildir_curcCr�)Nr4r�r5rrr�test_nonempty_maildir_new�r�z)MaildirTestCase.test_nonempty_maildir_newcCsf|�d�|�d�t�tj�|_|�|j���|�|j���|�|j���|�|j���dS)Nr)r4r�r5rrr�test_nonempty_maildir_both�s

z*MaildirTestCase.test_nonempty_maildir_bothN)F)
r'r(r)r6r9r�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)r5zWed, 13 Jul 2005 17:23:11 -0400r�z."Gregory K. Johnson" <gkj@gregorykjohnson.com>r6zgkj@gregorykjohnson.comr7zSample messagezMime-Versionz1.0zContent-Typez,multipart/mixed; boundary="NMuMz9nt05w80d4+"zContent-DispositionZinliner4zMutt/1.5.9i)z1This is a sample message.

--
Gregory K. Johnson
zRH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs
3FYlAAAA
c@r)�MiscTestCasecCstj|tddhd�dS)Nrm�fcntl)Znot_exported)rZcheck__all__r
r5rrr�test__all__�s
�zMiscTestCase.test__all__N)r'r(r)r�rrrrr��sr�cCst��dSr)r�
reap_childrenrrrr�tearDownModule�r�r��__main__)8rr"r`rDrerZ
email.messagerhrJrs�testrZtest.supportrr�rr
r�rr0ZTestCaser	rr�r�r�r�r�r�r�rr�r�r�rr"r+r-r2r<r=rvr�r�r�r�r�rHrUrLrrr�r�r'�mainrrrr�<module>s�}$])
."	
VJ07S15R
/����������������

�
© 2025 GrazzMean