Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_mailbox.cpython-311.opt-2.pyc
�

�Ke�o��4�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
Z
ddlmZddlZddlZddlZddlZejsejd���Gd�d��ZGd�d	e��ZGd
�deej��ZGd�d
eej��ZGd�de��ZGd�de��ZGd�deej��ZGd�deej��ZGd�deej��ZGd�deej��ZGd�d��Z Gd�dej!��Z"Gd�dej��Z#Gd �d!eej��Z$Gd"�d#e$ej��Z%Gd$�d%��Z&Gd&�d'e&e$��Z'Gd(�d)e$ej��Z(Gd*�d+e$ej��Z)Gd,�d-e&e$��Z*Gd.�d/eej��Z+Gd0�d1e��Z,Gd2�d3e,ej��Z-Gd4�d5e,ej��Z.d6Z/d7Z0Gd8�d9ej��Z1d:Z2e2�3d;��Z4id<d=�d>d?�d@d?�dAdB�d@dC�dAdD�dAdE�dAdF�dGdH�dIdJ�dKdL�dMdN�dOdP�dQdR�dSdT�dUdV�Z5dWZ6GdX�dYej��Z7dZ�Z8e9d[krej:��dSdS)\�N)�support)�	os_helper)�
socket_helperztest requires gethostname()c�f�eZdZejejejejejej	fZ
d�Zd�ZdS)�TestBasec�4�|�|tjj��|�|tj��t
���D].\}}|�||�|�����/|�	|�
����|�t|�
����tt����tt��D]�\}}|�
|��}|�|tjj��|�|tj��|�|�
��|����dS�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�parts       �;/usr/local/apps/python3/lib/python3.11/test/test_mailbox.py�
_check_samplezTestBase._check_samplesU�����c�5�=�#8�9�9�9����c�7�?�3�3�3�)�/�/�1�1�	3�	3�J�C���M�M�%����S�!1�!1�2�2�2�2�����(�(�*�*�+�+�+�����S�_�_�.�.�/�/��5E�1F�1F�G�G�G�#�$4�5�5�	:�	:�J�A�w��?�?�1�%�%�D��!�!�$��
�(=�>�>�>��$�$�T�7�?�;�;�;����T�-�-�/�/��9�9�9�9�		:�	:�c���tj�|��rtj|��dStj�|��rtj|��dSdSr	)�os�path�isdirr�rmtree�exists�unlink)r�targets  r"�_delete_recursivelyzTestBase._delete_recursively,sf��
�7�=�=�� � �	%���V�$�$�$�$�$�
�W�^�^�F�
#�
#�	%���V�$�$�$�$�$�	%�	%r$N)
�__name__�
__module__�__qualname__rr
�MaildirMessage�mboxMessage�	MHMessage�BabylMessage�MMDFMessage�all_mailbox_typesr#r-�r$r"rrs[������ ��'�*@� �,�g�.?� �-�w�/B�D��:�:�:�%�%�%�%�%r$rc��eZdZdZdZdZd�Zd�Zd�Ze	j
d��Zd�Zd�Z
d	�Zd
�Ze	j
d���d��Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd5d�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#d �Z$d!�Z%d"�Z&d#�Z'd$�Z(d%�Z)d5d&�Z*d'�Z+d5d(�Z,d)�Z-d5d*�Z.d+�Z/d5d,�Z0d-�Z1d.�Z2d/�Z3d0�Z4d1�Z5d2�Z6d3�Z7d4�Z8dS)6�TestMailboxNzFrom: foo

%s
c��tj|_|�|j��|�|j��|_dSr	)r�TESTFN�_pathr-�_factory�_box�rs r"�setUpzTestMailbox.setUp;s;���%��
�� � ���,�,�,��M�M�$�*�-�-��	�	�	r$c�l�|j���|�|j��dSr	)r>�closer-r<r?s r"�tearDownzTestMailbox.tearDown@s0���	������� � ���,�,�,�,�,r$c
���g}|�|j�|jdz����|�t|j��d��|�|j�t
jt������|�t|j��d��|�|j�tj
t������|�t|j��d��|�|j�tjt������|�t|j��d��|�|j�t����|�t|j��d��|�|j�t����|�t|j��d��|�t��5|�|j�tjtjt��d�	������ddd��n#1swxYwY|�t|j��d
��|�|j�|d��|jdz��dD](}|�|j||���)dS)Nr�������utf-8��encoding�)rErFrGrHrIrJ)�appendr>�add�	_templaterrrr
�_sample_messager�message_from_string�io�BytesIO�_bytes_sample_message�assertWarns�DeprecationWarning�
TextIOWrapper�
get_stringr#)r�keysrs   r"�test_addzTestMailbox.test_addDs��������D�I�M�M�$�.�1�"4�5�5�6�6�6�����T�Y����+�+�+����D�I�M�M�'�/�/�"B�"B�C�C�D�D�D�����T�Y����+�+�+����D�I�M�M�%�";�O�"L�"L�M�M�N�N�N�����T�Y����+�+�+����D�I�M�M�"�*�-B�"C�"C�D�D�E�E�E�����T�Y����+�+�+����D�I�M�M�/�2�2�3�3�3�����T�Y����+�+�+����D�I�M�M�"7�8�8�9�9�9�����T�Y����+�+�+�
�
�
�0�
1�
1�	X�	X��K�K��	�
�
�� ���,A�!B�!B�W�U�U�U�W�W�
X�
X�
X�	X�	X�	X�	X�	X�	X�	X�	X�	X�	X�	X����	X�	X�	X�	X�	
����T�Y����+�+�+������-�-�d�1�g�6�6����8J�K�K�K�#�	3�	3�A����t�y��a��1�2�2�2�2�	3�	3s�2AK�K�Ku{            From: foo
            Subject: Falinaptár házhozszállítással. Már rendeltél?

            0
            c�F�|j�|j�d����}|�t|j��d��|�|j�|��|j�d����dS)N�latin-1rE)r>rP�
_nonascii_msg�encoderr�	get_bytes�rrs  r"�"test_add_invalid_8bit_bytes_headerz.TestMailbox.test_add_invalid_8bit_bytes_headerbs����i�m�m�D�.�5�5�i�@�@�A�A������T�Y����+�+�+������,�,�S�1�1���%�%�i�0�0�	2�	2�	2�	2�	2r$c��|j���d}|j�|�d����}|�|j�|��d��dS)NrEr^zZSubject: =?unknown-8bit?b?RmFsaW5hcHThciBo4Xpob3pzeuFsbO104XNzYWwuIE3hciByZW5kZWx06Ww/?=

)r_�
splitlinesr>rPr`rrZ)r�subjrs   r"�&test_invalid_nonascii_header_as_stringz2TestMailbox.test_invalid_nonascii_header_as_stringhss���!�,�,�.�.�q�1���i�m�m�D�K�K�	�2�2�3�3�������-�-�c�2�2�
-�	.�	.�	.�	.�	.r$c�T�|�td��5|j�|j��ddd��n#1swxYwY|j���|�t|j��d��|���dS�Nz
ASCII-onlyr)	�assertRaisesRegex�
ValueErrorr>rPr_�flushrr�assertMailboxEmptyr?s r"�&test_add_nonascii_string_header_raisesz2TestMailbox.test_add_nonascii_string_header_raisesos���
�
#�
#�J��
=�
=�	.�	.��I�M�M�$�,�-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.��	����������T�Y����+�+�+����!�!�!�!�!s� A�A�Ac��d�}tj|tjjd|��|�t��5|j�tj	d����ddd��n#1swxYwY|�
t|j��d��|j���|�
��dS)Nc� �td���)Nza fake error)�	Exception)�args�kws  r"�raiserzETestMailbox.test_add_that_raises_leaves_mailbox_empty.<locals>.raiserws���N�+�+�+r$�flattenuFrom: Alphösor)r�patchr�	generator�BytesGenerator�assertRaisesrqr>rPrSrrrBrm)rrts  r"�)test_add_that_raises_leaves_mailbox_emptyz5TestMailbox.test_add_that_raises_leaves_mailbox_emptyvs��	,�	,�	,��
�d�E�O�:�I�v�N�N�N�
�
�
�y�
)�
)�	G�	G��I�M�M�%�3�4D�E�E�F�F�F�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G�����T�Y����+�+�+��	���������!�!�!�!�!s�-A=�=B�Bu0        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

        Да, они летят.
        rKc	�.�|j�|j��}|�|j�|��|j��|j�|��5}|�|���|j�dtj	�
������ddd��n#1swxYwY|�|j|���d��dS)N�
uДа, они летят.
)r>rP�_non_latin_bin_msgrra�get_file�read�replacer&�linesepr`r�rr�fs   r"�test_add_8bit_bodyzTestMailbox.test_add_8bit_body�s6���i�m�m�D�3�4�4�������,�,�S�1�1��0�	2�	2�	2�
�Y�
�
��
$�
$�	6�����Q�V�V�X�X�!�4�<�<�U� "�
� 1� 1� 3� 3�5�5�
6�
6�
6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	
�����3��3�3�5�5�4�	6�	6�	6�	6�	6s�-AC�C�Cc��tjd��5}|�t��|�d��|j�|��}ddd��n#1swxYwY|�|j�|���	d��t�	d����dS�N�wb+rr|)
�tempfile�
TemporaryFile�writerV�seekr>rPrra�split�rr�rs   r"�test_add_binary_filez TestMailbox.test_add_binary_file�s���
�
#�E�
*�
*�	#�a�
�G�G�)�*�*�*�
�F�F�1�I�I�I��)�-�-��"�"�C�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�	
�����,�,�S�1�1�7�7��>�>�!�'�'��.�.�	0�	0�	0�	0�	0��A
A+�+A/�2A/c��tjd��5}|�|j��|�d��|j�|��}ddd��n#1swxYwY|�|j�|���	d��|j�	d����dSr�)
r�r�r�r}r�r>rPrrar�r�s   r"�test_add_binary_nonascii_filez)TestMailbox.test_add_binary_nonascii_file�s���
�
#�E�
*�
*�	#�a�
�G�G�D�+�,�,�,�
�F�F�1�I�I�I��)�-�-��"�"�C�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�	
�����,�,�S�1�1�7�7��>�>��#�)�)�%�0�0�	2�	2�	2�	2�	2r�c�
�tjdd���5}|�t��|�d��|�t��5|j�|��}ddd��n#1swxYwYddd��n#1swxYwY|�	|j�
|���d��t�d����dS)N�w+rKrLrr|)
r�r�r�rRr�rWrXr>rPrrar�rVr�s   r"�test_add_text_file_warnsz$TestMailbox.test_add_text_file_warns�s]��
�
#�D�7�
;�
;�
;�	'�q�
�G�G�O�$�$�$�
�F�F�1�I�I�I��!�!�"4�5�5�
'�
'��i�m�m�A�&�&��
'�
'�
'�
'�
'�
'�
'�
'�
'�
'�
'����
'�
'�
'�
'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�
	
�����,�,�S�1�1�7�7��>�>�!�'�'��.�.�	0�	0�	0�	0�	0s6�A
B�!B�<B�B	�B�B	�B�B#�&B#c�>�|�t��5|j�t	j|jdz����}ddd��n#1swxYwY|�|j�|��|jdz��dS)N�0)	rWrXr>rPrT�StringIOrQrrZrbs  r"�test_add_StringIO_warnsz#TestMailbox.test_add_StringIO_warns�s���
�
�
�0�
1�
1�	C�	C��)�-�-���D�N�S�,@� A� A�B�B�C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C����	C�	C�	C�	C������-�-�c�2�2�D�N�S�4H�I�I�I�I�Is�5A�A �#A c���|�t��5|�td��5|j�t
j|j����ddd��n#1swxYwYddd��n#1swxYwY|�	t|j��d��|j���|���dSri)
rWrXrjrkr>rPrTr�r_rrrBrmr?s r"�!test_add_nonascii_StringIO_raisesz-TestMailbox.test_add_nonascii_StringIO_raises�sB��
�
�
�0�
1�
1�	?�	?��'�'�
�L�A�A�
?�
?��	�
�
�b�k�$�*<�=�=�>�>�>�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?����
?�
?�
?�
?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	
����T�Y����+�+�+��	���������!�!�!�!�!s4�B�2A5�)B�5A9	�9B�<A9	�=B�B�Bc�D�|�|jj��dSr	)�_test_remove_or_delitemr>�remover?s r"�test_removezTestMailbox.test_remove�s!���$�$�T�Y�%5�6�6�6�6�6r$c�D�|�|jj��dSr	)r�r>�__delitem__r?s r"�test_delitemzTestMailbox.test_delitem�s!���$�$�T�Y�%:�;�;�;�;�;r$c��������j��jdz����j��jdz�����t	�j��d��������t	�j��d����t��fd�����t��fd������j�����jdz���j��jdz�����t	�j��d��������t	�j��d����t��fd�����t��fd������j�����jdz��������t	�j��d����t��fd�����t��fd	���dS)
NrrErFc����j�Sr	�r>��key0rs��r"�<lambda>z5TestMailbox._test_remove_or_delitem.<locals>.<lambda>��
���D�I�d�O�r$c�������Sr	r7)r��methods��r"r�z5TestMailbox._test_remove_or_delitem.<locals>.<lambda>�����F�F�4�L�L�r$c����j�Sr	r�)�key2rs��r"r�z5TestMailbox._test_remove_or_delitem.<locals>.<lambda>�r�r$c�������Sr	r7)r�r�s��r"r�z5TestMailbox._test_remove_or_delitem.<locals>.<lambda>�r�r$c����j�Sr	r�)�key1rs��r"r�z5TestMailbox._test_remove_or_delitem.<locals>.<lambda>�r�r$c�������Sr	r7)r�r�s��r"r�z5TestMailbox._test_remove_or_delitem.<locals>.<lambda>�r�r$)r>rPrQrrry�KeyErrorrZ)rr�r�r�r�s``@@@r"r�z#TestMailbox._test_remove_or_delitem�sD��������y�}�}�T�^�a�/�0�0���y�}�}�T�^�a�/�0�0������T�Y����+�+�+���t��������T�Y����+�+�+����(�$;�$;�$;�$;�$;�<�<�<����(�$8�$8�$8�$8�$8�9�9�9������-�-�d�3�3�T�^�a�5G�H�H�H��y�}�}�T�^�a�/�0�0������T�Y����+�+�+���t��������T�Y����+�+�+����(�$;�$;�$;�$;�$;�<�<�<����(�$8�$8�$8�$8�$8�9�9�9������-�-�d�3�3�T�^�a�5G�H�H�H���t��������T�Y����+�+�+����(�$;�$;�$;�$;�$;�<�<�<����(�$8�$8�$8�$8�$8�9�9�9�9�9r$�
c�f����j��jdz����j��jdz��}��t	�j��d���j������t	�j��d����t��fd����j������t	�j��d����t��fd���dS)NrrErFc����j�Sr	r�r�s��r"r�z*TestMailbox.test_discard.<locals>.<lambda>�r�r$c����j�Sr	r�r�s��r"r�z*TestMailbox.test_discard.<locals>.<lambda>�r�r$)r>rPrQrr�discardryr�)r�repetitionsr�r�s`  @r"�test_discardzTestMailbox.test_discard�s
�����y�}�}�T�^�a�/�0�0���y�}�}�T�^�a�/�0�0������T�Y����+�+�+��	���$��������T�Y����+�+�+����(�$;�$;�$;�$;�$;�<�<�<��	���$��������T�Y����+�+�+����(�$;�$;�$;�$;�$;�<�<�<�<�<r$c�.�|j�|jdz��}|j�|��}|�|dd��|�|���d��|�|j�d����|�|j�dd��d��|j���|�	|j
��|_|j�|jdz��}|j�|��}|�|dd��|�|���d��dS)Nr�from�foo�0
FrE�1
)r>rPrQ�getrr�assertIsNone�assertIsrBr=r<)rr�rr�s    r"�test_getzTestMailbox.test_get�sC���y�}�}�T�^�a�/�0�0���i�m�m�D�!�!������V��e�,�,�,�������*�*�E�2�2�2����$�)�-�-��.�.�/�/�/��
�
�d�i�m�m�E�5�1�1�5�9�9�9��	�������M�M�$�*�-�-��	��y�}�}�T�^�a�/�0�0���i�m�m�D�!�!������V��e�,�,�,�������*�*�E�2�2�2�2�2r$c�����j��jdz����j�}��|dd����|���d����t�fd����j������t��fd���dS)Nrr�r�r�c����jdS�Nr�r�r?s�r"r�z*TestMailbox.test_getitem.<locals>.<lambda>�����D�I�e�,<�r$c����j�Sr	r�r�s��r"r�z*TestMailbox.test_getitem.<locals>.<lambda>�r�r$)r>rPrQrrryr�r�)rrr�s` @r"�test_getitemzTestMailbox.test_getitem�s������y�}�}�T�^�a�/�0�0���i��o������V��e�,�,�,�������*�*�E�2�2�2����(�$<�$<�$<�$<�=�=�=��	���$�������(�$;�$;�$;�$;�$;�<�<�<�<�<r$c���|j�|jdz��}|j�t��}|j�|��}|�|tj��|�|dd��|�|�	��d��|�
|j�|����dS)Nrr�r�r�)r>rPrQrR�get_messager
rr
rrr#)rr�r��msg0s    r"�test_get_messagezTestMailbox.test_get_messages����y�}�}�T�^�a�/�0�0���y�}�}�_�-�-���y�$�$�T�*�*�����d�G�O�4�4�4�����f��u�-�-�-�����)�)�+�+�U�3�3�3����4�9�0�0��6�6�7�7�7�7�7r$c��|j�|jdz��}|j�t��}|�|j�|��|jdz�d����|�|j�|��t��dS)Nr�ascii�r>rPrQrRrrar`rV�rr�r�s   r"�test_get_byteszTestMailbox.test_get_bytes
s����y�}�}�T�^�a�/�0�0���y�}�}�_�-�-�������,�,�T�2�2�
�^�a�
�'�'��0�0�	2�	2�	2������,�,�T�2�2�4I�J�J�J�J�Jr$c��|j�|jdz��}|j�t��}|�|j�|��|jdz��|�|j�|���d��t�d����dS)Nr�
�r>rPrQrRrrZr�r�s   r"�test_get_stringzTestMailbox.test_get_strings����y�}�}�T�^�a�/�0�0���y�}�}�_�-�-�������-�-�d�3�3�T�^�a�5G�H�H�H������-�-�d�3�3�9�9�$�?�?�(�.�.�t�4�4�	6�	6�	6�	6�	6r$c���|j�|jdz��}|j�t��}|j�|��5}|���}ddd��n#1swxYwY|j�|��5}|���}ddd��n#1swxYwY|�|�d���tj
d��|jdz��|�|�d���tj
d��t��dS)Nrr�r�)r>rPrQrRr~rr�decoder�r&r�)rr�r��file�data0�data1s      r"�
test_get_filezTestMailbox.test_get_files����y�}�}�T�^�a�/�0�0���y�}�}�_�-�-��
�Y�
�
��
%�
%�	 ���I�I�K�K�E�	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �
�Y�
�
��
%�
%�	 ���I�I�K�K�E�	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �������g�.�.�6�6�r�z�4�H�H���!�+�	-�	-�	-�������g�.�.�6�6�r�z�4�H�H�(�	*�	*�	*�	*�	*s$�A=�=B�B�"C�C�
Cc���|j�t��}|j�|��}|���|���dSr	)r>rPrRr~rBr�s   r"�!test_get_file_can_be_closed_twicez-TestMailbox.test_get_file_can_be_closed_twice'sH���i�m�m�O�,�,���I���s�#�#��	���	�	�	�	���	�	�	�	�	r$c�J�|�|jjdd���dS�NTF��do_keys�	do_values)�_check_iterationr>�iterkeysr?s r"�
test_iterkeyszTestMailbox.test_iterkeys.s(�����d�i�0�$�%��P�P�P�P�Pr$c�J�|�|jjdd���dSr�)r�r>r[r?s r"�	test_keyszTestMailbox.test_keys2s'�����d�i�n�d�e��L�L�L�L�Lr$c�J�|�|jjdd���dS�NFTr�)r�r>�
itervaluesr?s r"�test_itervalueszTestMailbox.test_itervalues6s5�����d�i�2�E�(,�	�	.�	.�	.�	.�	.r$c�J�|�|jjdd���dSr�)r�r>�__iter__r?s r"�	test_iterzTestMailbox.test_iter;s5�����d�i�0�%�(,�	�	.�	.�	.�	.�	.r$c�J�|�|jjdd���dSr�)r�r>�valuesr?s r"�test_valueszTestMailbox.test_values@s(�����d�i�.����N�N�N�N�Nr$c�J�|�|jjdd���dS�NTr�)r�r>�	iteritemsr?s r"�test_iteritemszTestMailbox.test_iteritemsDs5�����d�i�1�4�(,�	�	.�	.�	.�	.�	.r$c�J�|�|jjdd���dSr�)r�r>rr?s r"�
test_itemszTestMailbox.test_itemsIs'�����d�i�o�t�t��L�L�L�L�Lr$c���|��D]}|�d���gg}}t|��D]T}|�|j�|j|z����|�|j|z���U|r|st
|����}	nZ|r|st
|����}
n>gg}
}	|��D]/\}}|	�|��|
�|���0|r`|�t|��t|	����|�t|��t|	����|r�d}|
D]X}|�|dd��|�
t|�����|��|dz
}�Y|�t|��|��dSdS)Nz	Not emptyrr�r�rE)
�fail�rangerOr>rPrQ�listrr�set�
assertLess�intr)
rr�r�r�r�rr[r�r�
returned_keys�returned_valuesr�counts
             r"r�zTestMailbox._check_iterationMs���V�X�X�	#�	#�E��I�I�k�"�"�"�"��2�f���{�#�#�	.�	.�A��K�K��	�
�
�d�n�q�&8�9�9�:�:�:��M�M�$�.�1�,�-�-�-�-��	.�9�	.� �����N�N�M�M�
�	.�w�	.�"�6�6�8�8�n�n�O�O�-/��?�M�$�f�h�h�
.�
.�
��U��$�$�S�)�)�)��&�&�u�-�-�-�-��	<����S��Y�Y��M�(:�(:�;�;�;����S��Y�Y��M�(:�(:�;�;�;��	1��E�(�
�
��� � ��v���6�6�6�����E�$5�$5�$7�$7� 8� 8�+�F�F�F���
������S��[�[�%�0�0�0�0�0�
	1�	1r$c�~�|�d|j��|j�|jdz��}|�||j��|�d|j��|j�|jdz��}|�||j��|�||j��|�d|j��|j�|��|�||j��|�||j��|�d|j��|j�|��|�||j��|�||j��|�d|j��dS)Nr�rrE)�assertNotInr>rPrQrr�r�s   r"�
test_containszTestMailbox.test_containshs��������	�*�*�*��y�}�}�T�^�a�/�0�0���
�
�d�D�I�&�&�&������	�*�*�*��y�}�}�T�^�a�/�0�0���
�
�d�D�I�&�&�&��
�
�d�D�I�&�&�&������	�*�*�*��	�����������t�y�)�)�)��
�
�d�D�I�&�&�&������	�*�*�*��	�����������t�y�)�)�)�����t�y�)�)�)������	�*�*�*�*�*r$c�T�g}t|��D]�}|�t|j��|��|�|j�|j|z����|�t|j��|dz����t|��D]{}|�t|j��||z
��|j�||��|�t|j��||z
dz
���|dS)NrE)r�rrr>rOrPrQr�)rr�r[rs    r"�test_lenzTestMailbox.test_len{s�����{�#�#�	4�	4�A����S���^�^�Q�/�/�/��K�K��	�
�
�d�n�q�&8�9�9�:�:�:����S���^�^�Q��U�3�3�3�3��{�#�#�	B�	B�A����S���^�^�[�1�_�=�=�=��I���T�!�W�%�%�%����S���^�^�[�1�_�q�-@�A�A�A�A�	B�	Br$c�����j��jdz��}���j�|���jdz���j��jdz��}���j�|���jdz���jdz�j|<���j�|���jdz���jdz�j|<���j�|���jdz��t
�j|<���j|���j|�j|<���j|���jdz�j|<���j�|���jdz�����j|����t�fd�����t�fd�����t�j��d��dS)N�
original 0�
original 1�	changed 0�	changed 1c�:���j�dd��S)Nr��bar)r>�__setitem__r?s�r"r�z+TestMailbox.test_set_item.<locals>.<lambda>�s���$�)�"7�"7��u�"E�"E�r$c����jdSr�r�r?s�r"r�z+TestMailbox.test_set_item.<locals>.<lambda>�r�r$rF)
r>rPrQrrZrRr#ryr�rr�s`  r"�
test_set_itemzTestMailbox.test_set_item�sH����y�}�}�T�^�l�:�;�;�������-�-�d�3�3���,�6�	8�	8�	8��y�}�}�T�^�l�:�;�;�������-�-�d�3�3���,�6�	8�	8�	8��.�;�6��	�$�������-�-�d�3�3���+�5�	7�	7�	7��.�;�6��	�$�������-�-�d�3�3���+�5�	7�	7�	7�)��	�$�����4�9�T�?�+�+�+��)�D�/��	�$�����4�9�T�?�+�+�+��.�<�7��	�$�������-�-�d�3�3��^�l�2�	4�	4�	4����4�9�T�?�+�+�+����(�E�E�E�E�	G�	G�	G����(�$<�$<�$<�$<�=�=�=�����T�Y����+�+�+�+�+r$c����g}t|��D]$}�j��j|z���%t	|��D];\}����j�����j|z���<�j�����t�j��d��t	|��D]$\}���	t��fd����%dS)Nrc�8���j����Sr	)r>rZ�rrs��r"r�z(TestMailbox.test_clear.<locals>.<lambda>�s����	�0D�0D�S�0I�0I�r$)r�r>rPrQrrrZ�clearrryr�)r�
iterationsr[rrs`   @r"�
test_clearzTestMailbox.test_clear�s�������z�"�"�	.�	.�A��I�M�M�$�.�1�,�-�-�-�-���o�o�	L�	L�F�A�s����T�Y�1�1�#�6�6����8J�K�K�K�K��	����������T�Y����+�+�+���o�o�	K�	K�F�A�s����h�(I�(I�(I�(I�(I�J�J�J�J�	K�	Kr$c�R�|j�|jdz��}|�||j��|j�|jdz��}|�||j��|�|j�|�����d��|�||j��|�||j��|j�|jdz��}|�||j��|�|j�|�����d��|�||j��|�||j��|�|j�|�����d��|�||j��|�t|j��d��dS)NrrEr�rFz2
r�)	r>rPrQrr�poprrr�rr�r�r�s    r"�test_popzTestMailbox.test_pop�s����y�}�}�T�^�a�/�0�0���
�
�d�D�I�&�&�&��y�}�}�T�^�a�/�0�0���
�
�d�D�I�&�&�&��������t�,�,�8�8�:�:�E�B�B�B�����t�y�)�)�)��
�
�d�D�I�&�&�&��y�}�}�T�^�a�/�0�0���
�
�d�D�I�&�&�&��������t�,�,�8�8�:�:�E�B�B�B�����t�y�)�)�)��
�
�d�D�I�&�&�&��������t�,�,�8�8�:�:�E�B�B�B�����t�y�)�)�)�����T�Y����+�+�+�+�+r$c����g}td��D]7}|��j��j|z�����8g}td��D]�}�j���\�}���|�����|��|������t|�
����|����������t�j��d��|D]!���
t��fd����"dS)Nr�rc����j�Sr	r�rs��r"r�z*TestMailbox.test_popitem.<locals>.<lambda>�s
����	�#��r$)r�rOr>rPrQ�popitemrrrr�r�indexrryr�)rrr[r�seenrrs`     @r"�test_popitemzTestMailbox.test_popitem�sM�������r���	;�	;�A��K�K��	�
�
�d�n�q�&8�9�9�:�:�:�:����r���	F�	F�A��y�(�(�*�*�H�C���M�M�#�t�$�$�$����S�$�'�'�'��K�K��������S����!2�!2�3�3�T�Z�Z��_�_�E�E�E�E�����T�Y����+�+�+��	@�	@�C����h�(>�(>�(>�(>�(>�?�?�?�?�	@�	@r$c�p����j��jdz����j��jdz��}�j��jdz��}�j���jdz|ti����t
�j��d�����j�����jdz�����j�|���jdz�����j|���j�|�jdzf|�jdzf��jdzfg����t
�j��d�����j�����jdz�����j�|���jdz�����j�|���jdz����	t��fd�����t
�j��d�����j�����jdz�����j�|���jdz�����j�|���jdz��dS)	Nrr	z
original 2r
rGz	changed 2rc�P���j�dd��jdzi��S)Nr�r
r
)r>�updaterQr�s��r"r�z)TestMailbox.test_update.<locals>.<lambda>�s1���$�)�"2�"2�E�5�*.����0L�4N�#O�#O�r$)r>rPrQr#rRrrrZr#ryr�)rr�r�r�s`  @r"�test_updatezTestMailbox.test_update�s)�����y�}�}�T�^�l�:�;�;���y�}�}�T�^�l�:�;�;���y�}�}�T�^�l�:�;�;���	���$���� <���1�	2�	2�	2�����T�Y����+�+�+������-�-�d�3�3��^�k�1�	3�	3�	3������-�-�d�3�3��^�l�2�	4�	4�	4����4�9�T�?�+�+�+��	���4���+�!=�>��4�>�K�7�8��4�>�L�8�9�;�	<�	<�	<�	
����T�Y����+�+�+������-�-�d�3�3��^�l�2�	4�	4�	4������-�-�d�3�3��^�k�1�	3�	3�	3������-�-�d�3�3��^�k�1�	3�	3�	3����(�O�O�O�O�O�	P�	P�	P�	
����T�Y����+�+�+������-�-�d�3�3��^�k�1�	3�	3�	3������-�-�d�3�3��^�k�1�	3�	3�	3������-�-�d�3�3��^�k�1�	3�	3�	3�	3�	3r$c�F�|�|jjd��dS�NT)�_test_flush_or_closer>rlr?s r"�
test_flushzTestMailbox.test_flush�s"���!�!�$�)�/�4�8�8�8�8�8r$c��|j�|jdz��|j�|jdz��|j���|j���|j���|j���|j���dS�NrrE)r>rPrQrlrr?s r"�test_popitem_and_flush_twicez(TestMailbox.test_popitem_and_flush_twice�s����	�
�
�d�n�q�(�)�)�)��	�
�
�d�n�q�(�)�)�)��	�������	�������	�������	�������	�������r$c��|�tj�|�������|j���|�tj�|�������|j���|�tj�|�������dSr	)	�assertFalser&r'r*�_get_lock_pathr>�lockr�unlockr?s r"�test_lock_unlockzTestMailbox.test_lock_unlocks�����������(;�(;�(=�(=�>�>�?�?�?��	�������������t�':�':�'<�'<�=�=�>�>�>��	��������������(;�(;�(=�(=�>�>�?�?�?�?�?r$c�F�|�|jjd��dS�NF)r'r>rBr?s r"�
test_closezTestMailbox.test_close	s"���!�!�$�)�/�5�9�9�9�9�9r$c����fd�td��D��}�j�|d���j�|d���j�|d���j}|��|r�j������j���_�j���}��t|��d��|D]0}��	�j�
|��|���1|���dS)Nc�$��g|]}�j|z��
Sr7�rQ��.0rrs  �r"�
<listcomp>z4TestMailbox._test_flush_or_close.<locals>.<listcomp>s ���9�9�9�1�D�N�Q�&�9�9�9r$rGrrErF)r�r>rPrBr=r<r[rrrrZ)rr��should_call_close�contents�oldboxr[rs`      r"r'z TestMailbox._test_flush_or_close
s���9�9�9�9��a���9�9�9���	�
�
�h�q�k�"�"�"��	�
�
�h�q�k�"�"�"��	�
�
�h�q�k�"�"�"����������	��I�O�O�����M�M�$�*�-�-��	��y�~�~��������T���A�&�&�&��	?�	?�C��M�M�$�)�.�.�s�3�3�X�>�>�>�>��������r$c	����tjt��ttjt
��fD]�}tj����j�|�������	��t
�
dtj�
��������tj�����t��fd���dS)Nr|c�:���j�d���Sr	)r>�
_dump_message)�outputrs��r"r�z/TestMailbox.test_dump_message.<locals>.<lambda>'s���$�)�"9�"9�$��"G�"G�r$)rrSrRrTrUrVr>r@r�getvaluer�r&r�r`ry�	TypeError)r�inputrAs` @r"�test_dump_messagezTestMailbox.test_dump_messages������/��@�@�%�r�z�2G�'H�'H�J�	K�	K�E��Z�\�\�F��I�#�#�E�6�2�2�2����V�_�_�.�.�%�-�-�e�R�Z�5F�5F�5H�5H�I�I�
K�
K�
K�
K���������)�G�G�G�G�G�	I�	I�	I�	I�	Ir$c��|jdzS)Nz.lock)r<r?s r"r.zTestMailbox._get_lock_path)s���z�G�#�#r$�r�)9r.r/r0�maxDiffr=rQr@rCr\�textwrap�dedentr_rcrgrnrzr`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�rrrrrr r$r(r+r1r4r'rEr.r7r$r"r9r94sW�������G��H�#�I�.�.�.�
-�-�-�3�3�3�.$�H�O�%���M�2�2�2�.�.�.�"�"�"�"�"�"�)���
*�

�

��V�G�_�_��	6�	6�	6�0�0�0�2�2�2�0�0�0�J�J�J�
"�"�"�7�7�7�<�<�<�:�:�:�,
=�
=�
=�
=�
3�
3�
3�=�=�=�8�8�8�K�K�K�6�6�6�*�*�*����Q�Q�Q�M�M�M�.�.�.�
.�.�.�
O�O�O�.�.�.�
M�M�M�1�1�1�1�6+�+�+�&
B�
B�
B�
B�,�,�,�6
K�
K�
K�
K�,�,�,�$@�@�@�@�  3� 3� 3�D9�9�9�	�	�	�@�@�@�:�:�:���� 
I�
I�
I�$�$�$�$�$r$r9c��eZdZd�ZdS)�TestMailboxSuperclassc���tjd���|�t�fd���|�t�fd���|�t�fd���|�t�fd���|�t�fd���|�t�fd���|�t�fd���|�t�fd	���|�t�fd
���|�t�fd���|�t�fd���|�t�fd
���|�t�fd���|�t�fd���|�t�fd���|�t�fd���|�t�fd���|�t�fd���|�t�fd���|�t�fd���|�t�fd���|�t�fd���|�t�fd���|�t�fd���|�t�fd���|�t�fd���|�t�fd���|�t�fd���|�t�fd���dS)Nr'c�.����d��S�N�)rP��boxs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>3����s�w�w�r�{�{�r$c�.����d��SrO)r�rQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>4s���s�z�z�"�~�~�r$c�.����d��SrO)r�rQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>5����s���r�7J�7J�r$c�.����d��SrO)r�rQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>6s���s�{�{�2���r$c�0����dd��SrO)rrQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>7s���s���r�2�7N�7N�r$c�,������Sr	)r�rQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>8s���s�|�|�~�~�r$c�,������Sr	)r[rQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>9����s�x�x�z�z�r$c�P���������Sr	)r��__next__rQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>:s���s�~�~�7G�7G�7P�7P�7R�7R�r$c�P���������Sr	)r�r]rQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>;s���s�|�|�~�~�7N�7N�7P�7P�r$c�,������Sr	)r�rQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda><����s�z�z�|�|�r$c�P���������Sr	)r�r]rQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>=s���s�}�}���7O�7O�7Q�7Q�r$c�,������Sr	)rrQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>>����s�y�y�{�{�r$c�.����d��SrO)r�rQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>?rSr$c�.����d��SrO)�__getitem__rQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>@rVr$c�.����d��SrO)r�rQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>ArVr$c�.����d��SrO)rZrQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>Bs���s�~�~�b�7I�7I�r$c�.����d��SrO)rarQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>Cs���s�}�}�R�7H�7H�r$c�.����d��SrO)r~rQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>Ds���s�|�|�B�7G�7G�r$c���d�vSrOr7rQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>Es���r�S�y�r$c�.����d��SrO)�__contains__rQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>Fs���s�7G�7G��7K�7K�r$c�,������Sr	)�__len__rQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>G����s�{�{�}�}�r$c�,������Sr	)rrQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>Hrcr$c�.����d��SrO)rrQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>IrSr$c�,������Sr	)rrQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>Jrpr$c�.����d��S)N))rPrP)r#rQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>Ks���s�z�z�+�7N�7N�r$c�,������Sr	)rlrQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>Lrcr$c�,������Sr	)r/rQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>Mr[r$c�,������Sr	)r0rQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>Nr`r$c�,������Sr	)rBrQs�r"r�z;TestMailboxSuperclass.test_notimplemented.<locals>.<lambda>Orcr$)r�Mailboxry�NotImplementedError)rrRs @r"�test_notimplementedz)TestMailboxSuperclass.test_notimplemented0s�����o�f�%�%�����-�/B�/B�/B�/B�C�C�C����-�/E�/E�/E�/E�F�F�F����-�/J�/J�/J�/J�K�K�K����-�/F�/F�/F�/F�G�G�G����-�/N�/N�/N�/N�O�O�O����-�/E�/E�/E�/E�F�F�F����-�/A�/A�/A�/A�B�B�B����-�/R�/R�/R�/R�S�S�S����-�/P�/P�/P�/P�Q�Q�Q����-�/C�/C�/C�/C�D�D�D����-�/Q�/Q�/Q�/Q�R�R�R����-�/B�/B�/B�/B�C�C�C����-�/B�/B�/B�/B�C�C�C����-�/J�/J�/J�/J�K�K�K����-�/J�/J�/J�/J�K�K�K����-�/I�/I�/I�/I�J�J�J����-�/H�/H�/H�/H�I�I�I����-�/G�/G�/G�/G�H�H�H����-�/@�/@�/@�/@�A�A�A����-�/K�/K�/K�/K�L�L�L����-�/D�/D�/D�/D�E�E�E����-�/B�/B�/B�/B�C�C�C����-�/B�/B�/B�/B�C�C�C����-�/D�/D�/D�/D�E�E�E����-�/N�/N�/N�/N�O�O�O����-�/B�/B�/B�/B�C�C�C����-�/A�/A�/A�/A�B�B�B����-�/C�/C�/C�/C�D�D�D����-�/B�/B�/B�/B�C�C�C�C�Cr$N)r.r/r0r{r7r$r"rLrL.s(������D�D�D�D�Dr$rLc�(�eZdZdd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zdd�Zd�Z
d
�Zd�Zd�Zdd�Zd�Zd�Zd�Zd�Zd�Zd�Zejeed��d��d���Zejeed��d��d���Zd�ZdS)�TestMaildirNc�,�tj||��Sr	)r�Maildir�rr'�factorys   r"r�zTestMaildir.<lambda>Ts�����g�0N�0N�r$c��t�|��tjdkstjdkrd|j_dSdS)N�nt�cygwin�!)r9r@r&�name�sys�platformr>�colonr?s r"r@zTestMaildir.setUpVsB�����$�����G�t�O�O����!9�!9�!�D�I�O�O�O�":�!9r$c��|�tjtj�|jd����g��dS�N�tmp)rr&�listdirr'�joinr<r?s r"rmzTestMaildir.assertMailboxEmpty[s:�������B�G�L�L���U�$C�$C�D�D�b�I�I�I�I�Ir$c��tj|jdz��}|�d��|�d��|j�|��}|�tj	�
tj	�|jd|�|jj
�d�������dS)Nr�curr�)rr1rQ�
set_subdir�set_infor>rPrr&r'r*r�r<r�)rrrs   r"�test_add_MMzTestMaildir.test_add_MM^s����$�T�^�a�%7�8�8�����u�������U�����i�m�m�C� � ���������r�w�|�|�D�J��25�#�t�y����HH�(I�(I�J�J�	K�	K�	K�	K�	Kr$c���tj|jdz��}|�d��|�d��|j�|��}|j�|��}|�|tj��|�	|�
��d��|�	|���d��dS)Nrr��RF�FR)rr1rQr��	set_flagsr>rPr�r
r�
get_subdir�	get_flags)rrr�msg_returneds    r"�test_get_MMzTestMaildir.test_get_MMgs����$�T�^�a�%7�8�8�����u�����
�
�d�����i�m�m�C� � ���y�,�,�S�1�1�����l�G�,B�C�C�C�����0�0�2�2�E�:�:�:�����/�/�1�1�4�8�8�8�8�8r$c��tj|jdz��}|�d��|j�|��}|j�|��}|�|���d��|�|�	��d��tj|jdz��}||j|<|j�|��}|�|���d��|�|�	��d��|�|�
��d��tj|jdz��}|�d	��||j|<|jd
z|j|<|j�|��}|�|���d��|�|�	��d��|�|�
��d��dS)
Nr�TP�new�PTrErPr�rFz2,SrG�Sz3
)rr1rQr�r>rPr�rr�r�rr�)rr�rr��msg1�msg2s      r"�test_set_MMzTestMaildir.test_set_MMrs����%�d�n�q�&8�9�9�����t�����i�m�m�D�!�!���y�,�,�S�1�1������0�0�2�2�E�:�:�:�����/�/�1�1�4�8�8�8��%�d�n�q�&8�9�9����	�#���y�,�,�S�1�1������0�0�2�2�E�:�:�:�����/�/�1�1�2�6�6�6�����1�1�3�3�U�;�;�;��%�d�n�q�&8�9�9���
�
�e������	�#����!�+��	�#���y�,�,�S�1�1������0�0�2�2�E�:�:�:�����/�/�1�1�3�7�7�7�����1�1�3�3�U�;�;�;�;�;r$c��tj|jdz��}|�d��|�d��|j�|��}Gd�dtj��}tj|j|���}|jj	|_	|�
|��}|�||��dS)Nrr�r�c��eZdZdS)�8TestMaildir.test_consistent_factory.<locals>.FakeMessageN)r.r/r0r7r$r"�FakeMessager��s�������Dr$r��r�)rr1rQr�r�r>rPrr<r�r�r
)rrrr�rRr�s      r"�test_consistent_factoryz#TestMaildir.test_consistent_factory�s����$�T�^�a�%7�8�8�����u�����
�
�d�����i�m�m�C� � ��	�	�	�	�	�'�0�	�	�	��o�d�j�+�>�>�>���I�O��	����s�#�#�����d�K�0�0�0�0�0r$c�0�|���tj|j��|_|���|�|j��|�|jd���|_|���dS)Nr�)rCrrr<r>�
_check_basicsr-r=r?s r"�test_initialize_newzTestMaildir.test_initialize_new�s{���
�
�����O�D�J�/�/��	�������� � ���,�,�,��M�M�$�*�d�M�;�;��	��������r$c	�D�|���dD]V}tjtj�tj�|j|�������Wtj|j��|_	|�
��dS)N�rPr�r�r�)rCr&�mkdirr'�normpathr�r<rrr>r�)r�subdirs  r"�test_initialize_existingz$TestMaildir.test_initialize_existing�s����
�
����-�	I�	I�F��H�R�W�%�%�b�g�l�l�4�:�v�&F�&F�G�G�H�H�H�H��O�D�J�/�/��	��������r$c��|�|jjtj�|j����|�|jj|��dD]v}tj�|j|��}tj|��tj	}|�
tj|��d|z���wdS)Nr�zNot a directory: '%s')rr>r<r&r'�abspathr=r��stat�ST_MODEr�S_ISDIR)rr�r�r'�modes     r"r�zTestMaildir._check_basics�s���������"�'�/�/�$�*�*E�*E�F�F�F������+�W�5�5�5�-�	P�	P�F��7�<�<��
�F�3�3�D��7�4�=�=���.�D��O�O�D�L��.�.�0G�$�0N�O�O�O�O�	P�	Pr$c��|j�d��|j�d��|j�d��|�t|j�����d��|�t|j�����td����dS�N�one�two�threerG)r�r�r��r>�
add_folderrr�list_foldersr�r?s r"�test_list_folderszTestMaildir.test_list_folders�����	���U�#�#�#��	���U�#�#�#��	���W�%�%�%�����T�Y�3�3�5�5�6�6��:�:�:�����T�Y�3�3�5�5�6�6��0�1�1�	3�	3�	3�	3�	3r$c��|j�d��|j�d��}|�|jdz��|�tj�tj�	|j
d������|j�d��}|�|�|�
��d��|jdz��dS)N�foo.barr
z.foo.barr)r>r��
get_folderrPrQrr&r'r(r�r<rrZr[)r�folder0�folder1s   r"�test_get_folderzTestMaildir.test_get_folder�s����	���Y�'�'�'��)�&�&�y�1�1�����D�N�U�*�+�+�+������
�
�b�g�l�l�4�:�z�&J�&J�K�K�L�L�L��)�&�&�y�1�1������+�+�G�L�L�N�N�1�,=�>�>���%�/�	1�	1�	1�	1�	1r$c��|j�d��|j�d��|�t|j�����d��|�t|j�����td����|j�d��|�t|j�����d��|�t|j�����td����|j�d��|�t|j�����d��|�t|j�����td����|j�d��|�t|j�����d��|�t|j�����td����|j�d��|�t|j�����d	��|�|j���g��dS�
Nr�r�rF)r�r�rE)r�r�)r�r�r�r>r�rrr�r��
remove_folderr?s r"�test_add_and_remove_foldersz'TestMaildir.test_add_and_remove_folders��Y���	���U�#�#�#��	���U�#�#�#�����T�Y�3�3�5�5�6�6��:�:�:�����T�Y�3�3�5�5�6�6��N�8K�8K�L�L�L��	����&�&�&�����T�Y�3�3�5�5�6�6��:�:�:�����T�Y�3�3�5�5�6�6��H�
�
�F�F�F��	���W�%�%�%�����T�Y�3�3�5�5�6�6��:�:�:�����T�Y�3�3�5�5�6�6��<L�8M�8M�N�N�N��	����(�(�(�����T�Y�3�3�5�5�6�6��:�:�:�����T�Y�3�3�5�5�6�6��H�
�
�F�F�F��	����&�&�&�����T�Y�3�3�5�5�6�6��:�:�:������/�/�1�1�2�6�6�6�6�6r$c��tj�|jdd��}tj�|jdd��}t	|dd���5}|�d��ddd��n#1swxYwYt	|dd���5}|�d��ddd��n#1swxYwY|j���|�tj�	|����|�tj�	|����tj
|��}tj|tj��dz
d	z
|j
f��|j���|�tj�	|����|�tj�	|����dS)
Nr�r�r
�wrKrL�@i@�rF)r&r'r�r<�openr�r>�cleanrr*r��utime�time�st_mtimer-)r�foo_path�bar_pathr��foo_stats     r"�
test_cleanzTestMaildir.test_clean�s���7�<�<��
�E�5�9�9���7�<�<��
�E�5�9�9��
�(�C�'�
2�
2�
2�	�a�
�G�G�C�L�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�(�C�'�
2�
2�
2�	�a�
�G�G�C�L�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��	�������������x�0�0�1�1�1��������x�0�0�1�1�1��7�8�$�$��
���D�I�K�K�&�0�1�4�$�-�/�	0�	0�	0��	��������������1�1�2�2�2��������x�0�0�1�1�1�1�1s$�B�B�B�C�C�Cr�c
�t�tj��}d|vr|�dd��}d|vr|�dd��}tj��}tjd��}d}t|��D�]�}|j�	��}tj
�|j��\}}	|�
|tj
�tj
�|jd����d|z��|�|	��}
|�|
d|	z��|
���}|���|�t+|d	��t+|d	��d
|d	�d|d	�d���t+|d	��t+|d	��krP|�t+|d
��t+|d
��d|d
�d|d
�d���|�
t+|d��|d|d�d|�d���|�
t+|d��t+|d��d
zd|d�d|d�d���|�
|d|d|d�d|�d���|}|�t.��|�d	��|�
|���t.��|������t7tjtj
�|jd������}|�
||d|�d|�d���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'rzNon-monotonic seconds: 'z
' before '�'rEzNon-monotonic milliseconds: 'rFzProcess ID mismatch: 'z
' should be 'rGzNon-sequential counter: 'rHzHost name mismatch: 'zWrong file count: ')�socket�gethostnamer�r&�getpid�re�compiler�r>�_create_tmpr'r�r�rr�r�r<�match�assertIsNotNone�groups�assertGreaterEqualr�r�rVr�rrBrr�)
rr��hostname�pid�pattern�previous_groups�x�tmp_file�head�tailr�r��
file_counts
             r"�test_create_tmpzTestMaildir.test_create_tmp�s����%�'�'���(�?�?��'�'��W�5�5�H��(�?�?��'�'��W�5�5�H��i�k�k���*�>�?�?�����{�#�#�	�	�A��y�,�,�.�.�H�����x�}�5�5�J�D�$����T�2�7�?�?�2�7�<�<��
�@E�4G�4G�$H�$H�;�d�B�
D�
D�
D��M�M�$�'�'�E�� � ��(A�D�(H�I�I�I��\�\�^�^�F��*��'�'��F�1�I����O�A�<N�8O�8O�8O�-�a�0�0�0�&��)�)�)�=�>�>�>��v�a�y�>�>�S���);�%<�%<�<�<��+�+�C��q�	�N�N�C��PQ�@R�<S�<S�<S�!0��!3�!3�!3�V�A�Y�Y�Y�!@�A�A�A�� � ��V�A�Y�����$�Q�i�i�i����.�/�/�/�� � ��V�A�Y����_�Q�5G�1H�1H�1�1L�1L�-�a�0�0�0�&��)�)�)�=�>�>�>�� � ����H�H�$�Q�i�i�i����3�4�4�4�%�O��N�N�0�1�1�1��M�M�!�������X�]�]�_�_�.C�D�D�D��N�N��������B�G�L�L���U�$C�$C�D�D�E�E�
�����[�[� �j�j�+�+�+�/�	0�	0�	0�	0�	0r$c�6�|�|jji��|j�|jdz��}|j�|jdz��}|�|jji��|j���|�|jj|tj�d|��|tj�d|��i��|j�|jdz��}|�|jj|tj�d|��|tj�d|��i��|j���|�|jj|tj�d|��|tj�d|��|tj�d|��i��dS)NrrEr�rF)	rr>�_tocrPrQ�_refreshr&r'r�rs    r"�test_refreshzTestMaildir.test_refreshs����������,�,�,��y�}�}�T�^�a�/�0�0���y�}�}�T�^�a�/�0�0���������,�,�,��	������������$�����U�D�0I�0I�*.�����U�D�0I�0I�*K�	L�	L�	L��y�}�}�T�^�a�/�0�0��������$�����U�D�0I�0I�*.�����U�D�0I�0I�*K�	L�	L�	L��	������������$�����U�D�0I�0I�*.�����U�D�0I�0I�*.�����U�D�0I�0I�*K�	L�	L�	L�	L�	Lr$c���|j�|jdz��}|j�|jdz��}|�|j��|_|�|jji��d|j_|j���|�t|jj�
����t||g����dS)NrrE���)r>rPrQr=r<rr��_skewfactorr��sortedr[r�s   r"� test_refresh_after_safety_periodz,TestMaildir.test_refresh_after_safety_period*s����y�}�}�T�^�a�/�0�0���y�}�}�T�^�a�/�0�0���M�M�$�*�-�-��	��������,�,�,�!#��	���	�����������	�� 3� 3� 5� 5�6�6���d�|�8L�8L�M�M�M�M�Mr$c�������t�fd����j��jdz������j����tj�	d�����tj
tj�	�jd��������jj�tj�	d���i���j�
����t��fd������jji��dS)Nc�8���j�d��Sr��r>�_lookupr?s�r"r�z)TestMaildir.test_lookup.<locals>.<lambda>?s���D�I�,=�,=�e�,D�,D�r$rr�c�8���j����Sr	r�r�s��r"r�z)TestMaildir.test_lookup.<locals>.<lambda>Gs���D�I�,=�,=�d�,C�,C�r$)ryr�r>rPrQrr�r&r'r�r�r<r�rl)rr�s`@r"�test_lookupzTestMaildir.test_lookup=s�������(�$D�$D�$D�$D�E�E�E��y�}�}�T�^�a�/�0�0�������*�*�4�0�0�"�'�,�,�u�d�2K�2K�L�L�L�
�	�"�'�,�,�t�z�5�$�7�7�8�8�8�������$�����U�D�0I�0I�)J�K�K�K�	
�	���������(�$C�$C�$C�$C�$C�D�D�D��������,�,�,�,�,r$c�j�|j���|j���dSr	)r>r/r0r?s r"r1zTestMaildir.test_lock_unlockJs.���	�������	�������r$c��d�}|�|j|���}|�d��}|�|j|��|�d��}|�|j|��dS)Nc��dSr	r7��ss r"�
dummy_factoryz.TestMaildir.test_folder.<locals>.dummy_factoryR����4r$r�r�)r=r<r�r�r�)rrrR�folder�
folder1_aliass     r"�test_folderzTestMaildir.test_folderOs}��	�	�	��m�m�D�J�
�m�>�>�����	�*�*���
�
�f�o�}�5�5�5����y�1�1�
��
�
�m�,�m�<�<�<�<�<r$c��td��D]3}|j�tjt
�����4t
jtj�	|j
dd����|jD]}�dS)Nr�r�z	stray-dir)r�r>rPrr
rRr&r�r'r�r<)rrrs   r"�test_directory_in_folderz$TestMaildir.test_directory_in_folder[s����r���	<�	<�A��I�M�M�'�/�/�:�:�;�;�;�;�	������d�j�%��=�=�>�>�>��9�	�	�C��	�	r$�umask�test needs os.umask()c���tj|jdz��}tjd��}	|j�|��}tj|��n#tj|��wxYwtj�|j	|j�
|����}tj|��j}|�
|dz��dS)Nr�I)rr1rQr&rr>rPr'r�r<r�r��st_moder-)rr�
orig_umaskrr'r�s      r"�test_file_permissionsz!TestMaildir.test_file_permissionshs����$�T�^�a�%7�8�8���X�a�[�[�
�	!��)�-�-��$�$�C��H�Z� � � � ��B�H�Z� � � � �����w�|�|�D�J��	�(9�(9�#�(>�(>�?�?���w�t�}�}�$��������&�&�&�&�&s�A!�!A7c�p�tjd��}	|j�d��}tj|��n#tj|��wxYwtj�|jd��}tj|��}|j}|�	|dz��dS)Nr�	subfolder�
maildirfolderr)
r&rr>r�r'r�r<r�rr-)rrrr'�st�permss      r"�test_folder_file_permsz"TestMaildir.test_folder_file_permsus����X�a�[�[�
�	!��	�,�,�[�9�9�I��H�Z� � � � ��B�H�Z� � � � �����w�|�|�I�O�_�=�=��
�W�T�]�]���
�����%�%�-�)�)�)�)�)s�A�Ac�����j���dD]W}tjtj��jj|��tj��dz
fdz���Xd�j_�jj	���fd�}�j�����
|����tj��jdd��}tj|��tj
|���j�����|����dS)N)r�r�rIrFr�c� ���jj�uSr	)r>r�)�orig_tocrs��r"�	refreshedz*TestMaildir.test_reread.<locals>.refreshed�s����9�>��1�1r$r�z
stray-file)r>r�r&r�r'r�r<r�r�r�r-r�create_empty_filer+r)rr�r�filenamers`   @r"�test_rereadzTestMaildir.test_reread�s@�����	������%�	)�	)�F��H�R�W�\�\�$�)�/�6�:�:��i�k�k�!�m�%�a�'�
)�
)�
)�
)�!#��	��
�9�>��	2�	2�	2�	2�	2�	2�	
�	�������������%�%�%�
�7�<�<��
�E�<�@�@���#�H�-�-�-�
�	�(�����	���������	�	���$�$�$�$�$r$r	rG)r.r/r0r=r@rmr�r�r�r�r�r�r�r�r�r�r�r�r�r�rr1rr
�unittest�
skipUnless�hasattrr&rrr!r7r$r"r}r}Rs�������N�N�N�H�"�"�"�
J�J�J�K�K�K�	9�	9�	9�<�<�<�.
1�
1�
1�������P�P�P�P�3�3�3�1�1�1�7�7�7�&2�2�2�$-0�-0�-0�-0�^L�L�L�"N�N�N�&-�-�-����

=�
=�
=�����X�����W�-�-�/F�G�G�
'�
'�H�G�
'��X�����W�-�-�/F�G�G�*�*�H�G�*�&%�&%�&%�&%�&%r$r}c��eZdZ	d�Zd�ZdS)�_TestSingleFilec���tj|j��j}|j�|jdz��|j���tj|j��j}|�||��|j�	��|�
|j��|_|�t|j��d��dSr*)r&r�r<�st_inor>rPrQrlrrBr=r)r�inode_before�inode_afters   r"�test_add_doesnt_rewritez'_TestSingleFile.test_add_doesnt_rewrite�s����w�t�z�*�*�1���	�
�
�d�n�q�(�)�)�)��	�������g�d�j�)�)�0������{�3�3�3�	
�	�������M�M�$�*�-�-��	�����T�Y����+�+�+�+�+r$c���tj|j��jdz}tj|j|��|j�|jdz��|j�|jdz��}|j�|��|j�	��|�
tj|j��j|��dS)Ni�rrE)r&r�r<r�chmodr>rPrQr�rlr)rr�rs   r"�test_permissions_after_flushz,_TestSingleFile.test_permissions_after_flush�s����w�t�z�"�"�*�U�2��
����T�"�"�"��	�
�
�d�n�q�(�)�)�)��I�M�M�$�.�1�,�-�-���	��������	�������������,�,�4�d�;�;�;�;�;r$N)r.r/r0r+r.r7r$r"r&r&�s5������0�,�,�,�(<�<�<�<�<r$r&c����eZdZ�fd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zej
��ejeed
��d��d�����Zd
�Z�xZS)�
_TestMboxMMDFc�8��t�����|j���|�|j��t
jt
j|j��dz��D]}tj	|���dS�Nz.*�
�superrCr>rBr-r<�glob�escaperr+�r�lock_remnant�	__class__s  �r"rCz_TestMboxMMDF.tearDown�����
���������	������� � ���,�,�,� �I�d�k�$�*�&=�&=��&D�E�E�	+�	+�L���\�*�*�*�*�	+�	+r$c��t|jd��5}|�|���g��ddd��dS#1swxYwYdS�N�rb�r�r<r�	readlines�rr�s  r"rmz _TestMboxMMDF.assertMailboxEmpty����
�$�*�d�
#�
#�	0�q����Q�[�[�]�]�B�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�	0�	0��)A�A�Ac���d}|j�||jdzz��}|j�|tz��}|�|j�|d���|jdz�d����|�|j�|d���t��|�|j�|d���||jdzz�d����|�|j�|d���|�d��tz��dS)N�From foo@bar blah
rF��from_r�Tr��r�unixfromr�r�s    r"�test_get_bytes_fromz!_TestMboxMMDF.test_get_bytes_from�sQ��(���y�}�}�X����(:�:�;�;���y�}�}�X��7�8�8�������,�,�T��,�?�?�
�^�a�
�'�'��0�0�	2�	2�	2������,�,�T��,�?�?�!�	#�	#�	#������,�,�T��,�>�>�
����*�
*�2�2�7�;�;�	=�	=�	=������,�,�T��,�>�>��O�O�G�$�$�'<�<�	>�	>�	>�	>�	>r$c���d}|j�||jdzz��}|j�|tz��}|�|j�|d���|jdz��|�|j�|d����d��t�d����|�|j�|d���||jdzz��|�|j�|d����d��|tz�d����dS)NrDrFrEr�Tr�rGs    r"�test_get_string_fromz"_TestMboxMMDF.test_get_string_from�se��(���y�}�}�X����(:�:�;�;���y�}�}�X��7�8�8�������-�-�d�%�-�@�@���!�+�	-�	-�	-������-�-�d�%�-�@�@�F�F�t�L�L�(�.�.�t�4�4�	6�	6�	6������-�-�d�$�-�?�?�!�D�N�Q�$6�6�	8�	8�	8������-�-�d�$�-�?�?�E�E�d�K�K�"�_�4�;�;�D�A�A�	C�	C�	C�	C�	Cr$c��|j�d��}|�|j|���d��|�|j|���d��dS)N�From foo@bar blah
From: foo

0
�foo@bar blahr��r>rPr�get_fromrrbs  r"�test_add_from_stringz"_TestMboxMMDF.test_add_from_string�sl���i�m�m�A�B�B�������3��0�0�2�2�N�C�C�C������3��3�3�5�5�u�=�=�=�=�=r$c��|j�d��}|�|j|���d��|�|j|���d��dS)NsFrom foo@bar blah
From: foo

0
rNr�rOrbs  r"�test_add_from_bytesz!_TestMboxMMDF.test_add_from_bytessl���i�m�m�B�C�C�������3��0�0�2�2�N�C�C�C������3��3�3�5�5�u�=�=�=�=�=r$c��tjtjfD]'}|d��}|j�|��}�(dS)NrM)rr2r5r>rP)r�class_rrs    r"�test_add_mbox_or_mmdf_messagez+_TestMboxMMDF.test_add_mbox_or_mmdf_messagesK���*�G�,?�@�	%�	%�F��&�>�?�?�C��)�-�-��$�$�C�C�	%�	%r$c����fd�td��D��}|D]}�j�|����j���tj��j��}���j���_��	t�j��d���j���D]0}���j�
|��|���1�j�����	|tj��j����dS)Nc�$��g|]}�j|z��
Sr7r7r8s  �r"r:z6_TestMboxMMDF.test_open_close_open.<locals>.<listcomp>s ���7�7�7��$�.�1�$�7�7�7r$rG)r�r>rPrBr&r'�getmtimer<r=rrr�rrZ)rr�r�mtimers`    r"�test_open_close_openz"_TestMboxMMDF.test_open_close_opens(���7�7�7�7�e�A�h�h�7�7�7���	!�	!�E��I�M�M�%� � � � ��	�������� � ���,�,���M�M�$�*�-�-��	�����T�Y����+�+�+��9�%�%�'�'�	=�	=�C��M�M�$�)�.�.�s�3�3�V�<�<�<�<��	������������ 0� 0��� <� <�=�=�=�=�=r$c��|j�t��td��D]$}|j�|j|z���%|j�t��|jj���|jj�d��|jj���}|j�	��t|jd��5}|�||�����ddd��n#1swxYwY|�
|j��|_dS)NrGrr=)r>rPrRr�rQ�_filerlr�rrBr�r<rr=)rrr<r�s    r"�test_add_and_closez _TestMboxMMDF.test_add_and_closesM���	�
�
�o�&�&�&��q���	.�	.�A��I�M�M�$�.�1�,�-�-�-�-��	�
�
�o�&�&�&��	��������	����Q�����9�?�'�'�)�)���	������
�$�*�d�
#�
#�	1�q����X�q�v�v�x�x�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1��M�M�$�*�-�-��	�	�	s�<)D1�1D5�8D5�
socketpairzTest needs socketpair().c�~�tj��\}}|�|j��|�|j��t	j��}|dkr�	|j���|�d��|�	d��|j�
��t	jd��n#t	jd��wxYw|�	d��	|�tj|jj��|�d��tj|d���n0#|�d��tj|d���wxYw|j���|j�
��dS)Nr�crE�p)�exitcode)r�r_�
addCleanuprBr&�forkr>r/�send�recvr0�_exitryr�ExternalClashErrorr�wait_process)r�c�pr�s    r"�test_lock_conflictz _TestMboxMMDF.test_lock_conflict-s|��
� �"�"���1������ � � ������ � � ��g�i�i���!�8�8�	
��	��� � � ����t�������q�	�	�	��	� � �"�"�"�������������������	
���q�	�	�	�	2����g�8�"�i�n�
.�
.�
.�
�F�F�4�L�L�L�� ��q�1�1�1�1�1��
�F�F�4�L�L�L�� ��q�1�1�1�1�1�����	�������	�������s�%AC�C,�*E�-Fc���d}|j�|��}|j���|j���|�|j��|_|j���|j�|��}|j���|�|jj��|j���dS)NzSubject: sub

body
)	r>rPrlrBr=r<r/r�_locked)rrr�r�s    r"�test_relockz_TestMboxMMDF.test_relockRs���'���y�}�}�S�!�!���	�������	�������M�M�$�*�-�-��	��	�������y�}�}�S�!�!���	����������	�)�*�*�*��	�������r$)r.r/r0rCrmrIrKrQrSrVr[r^r�
requires_forkr"r#r$r�rmrp�
__classcell__�r9s@r"r0r0�s�������+�+�+�+�+�0�0�0�>�>�>�C�C�C�>�>�>�>�>�>�%�%�%�>�>�>�.�.�.��W�����X������6�6�8R�S�S�!�!�T�S���!�F
�
�
�
�
�
�
r$r0c�j�eZdZdd�Zejeed��d��d���Zd�Z	d�Z
dS)	�TestMboxNc�,�tj||��Sr	)r�mboxr�s   r"r�zTestMbox.<lambda>d�����T�7�0K�0K�r$rrc��	tjd��}|j���tj|j��t
j|jd���|_|j�d��|j���tj|��n#tj|��wxYwtj	|j��}|j
}|�|dz��dS)N�?T)�createrPr)r&rr>rBr+r<rrwrPr�rr-)r�	old_umaskrrs    r"�test_file_permszTestMbox.test_file_permsfs���
	 ������I��I�O�O�����I�d�j�!�!�!���T�Z��=�=�=�D�I��I�M�M�"�����I�O�O�����H�Y������B�H�Y��������
�W�T�Z�
 �
 ���
�����%�%�-�)�)�)�)�)s�BB0�0Cc�.�tj���}d|d<|�d��|j�|��}|j�|��}|�|���d��dS)Nzjohn@example.com�FromzNo newline at the endzNo newline at the end
)	rrr
�set_payloadr>rPr�rr)rrrs   r"�test_terminating_newlinez!TestMbox.test_terminating_newlineys����-�'�'�)�)��,�������3�4�4�4��I�M�M�'�"�"���)�-�-��"�"������,�,�.�.�0I�J�J�J�J�Jr$c���|j�d��t|jd���5}|���}|�|dd�d��ddd��n#1swxYwY|j�d��t|jd���5}|���}|�|dd�d��ddd��dS#1swxYwYdS)NzFrom: foo

0rKrLr�z0

z
From: foo

0
)r>rPr�r<rr)rr��datas   r"�test_message_separatorzTestMbox.test_message_separator�sa���	�
�
�&�'�'�'�
�$�*�w�
/�
/�
/�	1�1��6�6�8�8�D����T�"�#�#�Y��0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	
�	�
�
�(�)�)�)�
�$�*�w�
/�
/�
/�	1�1��6�6�8�8�D����T�"�#�#�Y��0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s#�3A0�0A4�7A4�+3C+�+C/�2C/r	)r.r/r0r=r"r#r$r&r}r�r�r7r$r"rurubsw������K�K�K�H��X�����W�-�-�/F�G�G�*�*�H�G�*�$K�K�K�
1�
1�
1�
1�
1r$ruc��eZdZdd�ZdS)�TestMMDFNc�,�tj||��Sr	)r�MMDFr�s   r"r�zTestMMDF.<lambda>�rxr$r	)r.r/r0r=r7r$r"r�r��s������K�K�K�H�H�Hr$r�c�L�eZdZdd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�ZdS)
�TestMHNc�,�tj||��Sr	)r�MHr�s   r"r�zTestMH.<lambda>�s���
�4��0I�0I�r$c�b�|�tj|j��dg��dS)Nz
.mh_sequences)rr&r�r<r?s r"rmzTestMH.assertMailboxEmpty�s-�������D�J�/�/�/�1B�C�C�C�C�Cr$c��|j�d��|j�d��|j�d��|�t|j�����d��|�t|j�����td����dSr�r�r?s r"r�zTestMH.test_list_folders�r�r$c���d�}|�|j|��|_|j�d��}|j�d��}|�|jdz��|�tj	�
tj	�|jd������|j�d��}|�|�
|���d��|jdz��|�|j|jj��|�|j|jj��dS)Nc��dSr	r7rs r"rz-TestMH.test_get_folder.<locals>.dummy_factory�rr$r�r
r)r=r<r>r�r�rPrQrr&r'r(r�rrZr[r�)rr�
new_folderr�r�s     r"r�zTestMH.test_get_folder�s1��	�	�	��M�M�$�*�m�<�<��	��Y�)�)�)�4�4�
��)�&�&�y�1�1�����D�N�U�*�+�+�+������
�
�b�g�l�l�4�:�y�&I�&I�J�J�K�K�K��)�&�&�y�1�1������+�+�G�L�L�N�N�1�,=�>�>���%�/�	1�	1�	1�
	
�
�
�j�)�4�9�+=�>�>�>��
�
�g�&��	�(:�;�;�;�;�;r$c��|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��dSr�r�r?s r"r�z"TestMH.test_add_and_remove_folders�r�r$c��|�|j���i��tj|jdz��}|�d��|j�|��}|�|j���d|gi��tj|jdz��}|�gd���|j�|��}|�|j���||g|g|gd���|�dg��||j|<|�|j���|g|g|g|gd���|j�	|��|�|j���d|gi��dS)Nrr�rE)r
�repliedr��r�r
r��flagged)r�r
r�r�)
rr>�
get_sequencesrr3rQ�add_sequencerP�
set_sequencesr��rr�r�r�r�s     r"�test_sequenceszTestMH.test_sequences�s��������0�0�2�2�B�7�7�7�� ���!�!3�4�4�����%� � � ��y�}�}�T�"�"�������0�0�2�2�U�D�6�N�C�C�C�� ���!�!3�4�4�����4�4�4�5�5�5��y�}�}�T�"�"�������0�0�2�2�!�4�L���4�&�I�I�	K�	K�	K����I�;�'�'�'���	�$�������0�0�2�2�!�F�4�&�T�F�!%��(�(�	)�	)�	)�	
�	������������0�0�2�2�Y��v�4F�G�G�G�G�Gr$c���tj|jdz��}|�d��|j�|��}|j�|��}dS)Nrr�)rr3rQr�r>rPr�)rr�r��refmsg0s    r"�test_issue2625zTestMH.test_issue2625�sY��� ���!�!3�4�4�����%� � � ��y�}�}�T�"�"���)�'�'��-�-���r$c�
�tj|jdz��}|j�|��}|j���|j�|��|j���dS)Nr)rr3rQr>rPr/r�r0)rr�r�s   r"�test_issue7627zTestMH.test_issue7627�sn��� ���!�!3�4�4���y�}�}�T�"�"���	�������	��������	�������r$c	���tj|jdz��}tj|jdz��}tj|jdz��}tj|jdz��}|�ddg��|�dg��|�ddg��|�gd���|j�|��}|j�|��}|j�|��}|j�|��}|�|j���||||g|g|g|g|gd	���|j�|��|�|j���|||g|g|g|gd
���|j�	��|�|j�
��gd���|}|dz}|dz}|�|j���gd�dgdgdgd
���|j�|��}|j�|��}|j�|��}|j�|��}|j�|��|j�|��|j���|j�	��|j���|�|j���gd�dgdgdgd
���dS)
NrrErFrGr��unseenr�r�)r�r�r�r
r�)r�r�r
r�)rErFrG)rErFrGrHrI)
rr3rQr�r>rPrr�r��packr[r/r0)	rr�r�r��msg3r�r�r��key3s	         r"�	test_packzTestMH.test_pack�sY��� ���!�!3�4�4��� ���!�!3�4�4��� ���!�!3�4�4��� ���!�!3�4�4�����E�8�,�-�-�-����E�7�#�#�#����E�9�-�.�.�.����4�4�4�5�5�5��y�}�}�T�"�"���y�}�}�T�"�"���y�}�}�T�"�"���y�}�}�T�"�"�������0�0�2�2�!�$�t�D�1�T�F�!%��t�f���H�H�	I�	I�	I�	
�	������������0�0�2�2�!�$�t�,��v�d�V�!%��(�(�	)�	)�	)�	
�	�������������)�)�9�9�9�5�5�5����a�x���a�x�������0�0�2�2�%�I�I���A�3�1�#�N�N�	P�	P�	P��y�}�}�T�"�"���y�}�}�T�"�"���y�}�}�T�"�"���y�}�}�T�"�"���	��������	��������	�������	�������	�����������0�0�2�2�+�O�O� !�s�1�#�!��>�>�	?�	?�	?�	?�	?r$c�L�tj�|jd��S)Nz.mh_sequences.lock)r&r'r�r<r?s r"r.zTestMH._get_lock_paths���w�|�|�D�J�(<�=�=�=r$r	)
r.r/r0r=rmr�r�r�r�r�r�r�r.r7r$r"r�r��s�������I�I�I�H�D�D�D�3�3�3�<�<�<�&7�7�7�&H�H�H�(.�.�.����*?�*?�*?�X>�>�>�>�>r$r�c�2��eZdZdd�Zd�Z�fd�Zd�Z�xZS)�	TestBabylNc�,�tj||��Sr	)r�Babylr�s   r"r�zTestBabyl.<lambda>s���
�d�G�0L�0L�r$c��t|jd��5}|�|���g��ddd��dS#1swxYwYdSr<r>r@s  r"rmzTestBabyl.assertMailboxEmpty rArBc�8��t�����|j���|�|j��t
jt
j|j��dz��D]}tj	|���dSr2r3r7s  �r"rCzTestBabyl.tearDown$r:r$c��|�|j���g��tj|jdz��}|�d��|j�|��}|�|j���dg��tj|jdz��}|�gd���|j�|��}|�t|j�����tddg����|�ddg��||j|<|�t|j�����tgd�����|j�
|��|�t|j�����tdg����dS)	Nrr�rE)r
�answeredr�r
�blah�filed)r�r
r�)rr>�
get_labelsrr4rQ�	add_labelrP�
set_labelsr�r�r�s     r"�test_labelszTestBabyl.test_labels+s��������-�-�/�/��4�4�4��#�D�N�Q�$6�7�7�����u�����y�}�}�T�"�"�������-�-�/�/�%��9�9�9��#�D�N�Q�$6�7�7�����2�2�2�3�3�3��y�}�}�T�"�"������T�Y�1�1�3�3�4�4�c�5�%�.�6I�6I�J�J�J������)�*�*�*���	�$������T�Y�1�1�3�3�4�4��/�/�/�0�0�	2�	2�	2��	�����������T�Y�1�1�3�3�4�4�c�6�(�m�m�D�D�D�D�Dr$r	)r.r/r0r=rmrCr�rrrss@r"r�r�sh�������L�L�L�H�0�0�0�+�+�+�+�+�E�E�E�E�E�E�Er$r�c��eZdZd�Zd�ZdS)�FakeFileLikeObjectc��d|_dSr3��closedr?s r"�__init__zFakeFileLikeObject.__init__@s
������r$c��d|_dSr&r�r?s r"rBzFakeFileLikeObject.closeCs
������r$N)r.r/r0r�rBr7r$r"r�r�>s2�������������r$r�c��eZdZd�Zd�ZdS)�FakeMailBoxc��tj�|dd���d�td��D��|_dS)NrPc��dSr	r7)r�s r"r�z&FakeMailBox.__init__.<locals>.<lambda>Js���r$c�*�g|]}t����Sr7)r�)r9rs  r"r:z(FakeMailBox.__init__.<locals>.<listcomp>Ks��>�>�>�q�(�*�*�>�>�>r$r�)rryr�r��filesr?s r"r�zFakeMailBox.__init__Is?���� � ��r�+<�+<�=�=�=�>�>�E�"�I�I�>�>�>��
�
�
r$c��|j|Sr	)r�rbs  r"r~zFakeMailBox.get_fileMs���z�#��r$N)r.r/r0r�r~r7r$r"r�r�Gs2������?�?�?�����r$r�c��eZdZd�ZdS)�TestFakeMailBoxc�2�t��}td��D]'}|�|j|j���(td��D]
}||�td��D]'}|�|j|j���(dS)Nr�)r�r�r-r�r�r)rrRrs   r"�test_closing_fdzTestFakeMailBox.test_closing_fdSs����m�m���r���	2�	2�A����S�Y�q�\�0�1�1�1�1��r���	�	�A���F�F�F��r���	1�	1�A��O�O�C�I�a�L�/�0�0�0�0�	1�	1r$N)r.r/r0r�r7r$r"r�r�Qs#������1�1�1�1�1r$r�c�d�eZdZejZd�Zd�Zd�Zd�Z	d�Z
d�Zd�Zd�Z
d	�Zd
�Zd�Zd�Zd
S)�TestMessagec�(�tj|_dSr	)rr;r<r?s r"r@zTestMessage.setUpas���%��
�
�
r$c�:�|�|j��dSr	)r-r<r?s r"rCzTestMessage.tearDownds��� � ���,�,�,�,�,r$c��tjt��}|�|��}|�|��|�|��dSr	)rrSrRr=�_post_initialize_hookr#�r�eMMrs   r"�test_initialize_with_eMMz$TestMessage.test_initialize_with_eMMgsQ���'��8�8���m�m�C� � ���"�"�3�'�'�'����3�����r$c��|�t��}|�|��|�|��dSr	)r=rRr�r#�rrs  r"�test_initialize_with_stringz'TestMessage.test_initialize_with_stringnsA���m�m�O�,�,���"�"�3�'�'�'����3�����r$c�B�t|jdd���5}|�t��|�d��|�|��}|�|��|�|��ddd��dS#1swxYwYdS)Nr�rKrLr)r�r<r�rRr�r=r�r#�rr�rs   r"�test_initialize_with_filez%TestMessage.test_initialize_with_filets���
�$�*�d�W�
5�
5�
5�	$��
�G�G�O�$�$�$�
�F�F�1�I�I�I��-�-��"�"�C��&�&�s�+�+�+����s�#�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�	$�	$s�A/B�B�Bc�>�t|jd��5}|�t��|�d��|�|��}|�|��|�|��ddd��dS#1swxYwYdS)Nr�r)r�r<r�rVr�r=r�r#r�s   r"� test_initialize_with_binary_filez,TestMessage.test_initialize_with_binary_file}s���
�$�*�e�
$�
$�	$��
�G�G�)�*�*�*�
�F�F�1�I�I�I��-�-��"�"�C��&�&�s�+�+�+����s�#�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�	$�	$s�A/B�B�Bc��|���}|�|��|�|tjj��|�|tj��|�||j��|�|���g��|�	|�
����|�|�����dSr	)
r=r�r
rrr
rrr[r-rr�rr�s  r"�test_initialize_with_nothingz(TestMessage.test_initialize_with_nothing�s����m�m�o�o���"�"�3�'�'�'����c�5�=�#8�9�9�9����c�7�?�3�3�3����c�4�=�1�1�1���������R�(�(�(�����)�)�+�+�,�,�,����#�/�/�+�+�,�,�,�,�,r$c�D����t�fd���dS)Nc�F����t����Sr	)r=�objectr?s�r"r�z9TestMessage.test_initialize_incorrectly.<locals>.<lambda>�s���T�]�]�6�8�8�-D�-D�r$)ryrCr?s`r"�test_initialize_incorrectlyz'TestMessage.test_initialize_incorrectly�s)������)�%D�%D�%D�%D�E�E�E�E�Er$c���tjt��}|�t��}|jD]1}|�||jd�|�����2dS)Nz{} attribute does not exist)rrSrRr=�__dict__r�format)rr�r�attrs    r"�test_all_eMM_attributes_existz)TestMessage.test_all_eMM_attributes_exist�sp���'��8�8���m�m�O�,�,���L�	<�	<�D��M�M�$���-�4�4�T�:�:�
<�
<�
<�
<�	<�	<r$c��tjt��}|���}|�|��|�|��dSr	)rrSrRr=�_become_messager#r�s   r"�test_become_messagezTestMessage.test_become_message�sM���'��8�8���m�m�o�o�����C� � � ����3�����r$c����|����|jD]!}|���������"tj����|�t��fd���dS)Nc�.�������Sr	)�_explain_to)r�	other_msgs��r"r�z-TestMessage.test_explain_to.<locals>.<lambda>�s���S�_�_�Y�-G�-G�r$)r=r6r�rrr
ryrC)rrUrr�s  @@r"�test_explain_tozTestMessage.test_explain_to�s������m�m�o�o���,�	'�	'�F�����I��O�O�I�&�&�&�&��M�)�)�+�+�	����)�%G�%G�%G�%G�%G�H�H�H�H�Hr$c��dSr	r7r�s  r"r�z!TestMessage._post_initialize_hook�s���r$N)r.r/r0rr
r=r@rCr�r�r�r�r�r�r�r�r�r�r7r$r"r�r�]s���������H�&�&�&�-�-�-� � � � � � �$�$�$�$�$�$�	-�	-�	-�F�F�F�<�<�<� � � �I�I�I�
�
�
�
�
r$r�c�@�eZdZejZd�Zd�Zd�Zd�Z	d�Z
d�ZdS)�TestMaildirMessagec�r�|�|jd��|�|jd��dS)Nr�rP)r�_subdir�_infor�s  r"r�z(TestMaildirMessage._post_initialize_hook�s8�������e�,�,�,������B�'�'�'�'�'r$c���tjt���|�����d����d��|�����d����d��|�����d��|�t�fd���|�����d����d��|�����d��|����dS)Nr�r�c�.����d��Sr�)r��rs�r"r�z0TestMaildirMessage.test_subdir.<locals>.<lambda>�s���c�n�n�U�.C�.C�r$)	rr1rRrr�r�ryrkr#r�s @r"�test_subdirzTestMaildirMessage.test_subdir�s#����$�_�5�5��������)�)�5�1�1�1����u����������)�)�5�1�1�1����u����������)�)�5�1�1�1����*�&C�&C�&C�&C�D�D�D�������)�)�5�1�1�1����u����������)�)�5�1�1�1����3�����r$c��tjt��}|�|���d��|�|���d��|�d��|�|���d��|�|���d��|�d��|�|���d��|�d��|�|���d��|�d��|�|���d	��|�|���d��|�	|��dS)
NrPr��F�SDTP�DPST�FT�DFPST�TDRP�FS)
rr1rRrr�r�r��add_flag�remove_flagr#r�s  r"�
test_flagszTestMaildirMessage.test_flags�sj���$�_�5�5����������"�-�-�-�������)�)�5�1�1�1��
�
�c����������)�)�5�1�1�1���������#�.�.�.��
�
�f������������&�1�1�1����T������������'�2�2�2����������������$�/�/�/�������)�)�5�1�1�1����3�����r$c�D�tjt��}|�t	|���t
j��z
��d��|�d��|�|���d��dS)N�<�)	rr1rRr��abs�get_dater��set_daterr�s  r"�	test_datezTestMaildirMessage.test_date�sw���$�_�5�5������C�L�L�N�N�T�Y�[�[�8�9�9�2�>�>�>����S�������������-�-�-�-�-r$c�j��tjt���|�����d����d��|�����d��|�t�fd���|����dS)NrPz	1,foo=barc�.����d��Sr	)r�r�s�r"r�z.TestMaildirMessage.test_info.<locals>.<lambda>�s���S�\�\�$�-?�-?�r$)	rr1rRr�get_infor�ryrCr#r�s @r"�	test_infozTestMaildirMessage.test_info�s�����$�_�5�5�����������,�,�,����[�!�!�!����������5�5�5����)�%?�%?�%?�%?�@�@�@����3�����r$c���tjt��}|�|���d��|�d��|�|���d��|�|���d��|�d��|�|���d��|�|���d��|�d��|�|���d��|�|���d��|�	d��|�|���d��|�|���d��|�
|��dS)	NrP�SFr�z2,FSz1,�RPT�Dz2,D)rr1rRrr
r�r�r�r�r�r#r�s  r"�test_info_and_flagsz&TestMaildirMessage.test_info_and_flags�s����$�_�5�5�����������,�,�,��
�
�d������������$�/�/�/����������0�0�0����T������������"�-�-�-����������.�.�.����������������"�-�-�-����������.�.�.����S������������#�.�.�.����������/�/�/����3�����r$N)r.r/r0rr1r=r�r�rrrrr7r$r"r�r��sv�������%�H�(�(�(� � � � � � �".�.�.� � � � � � � � r$r�c�<�eZdZejZd�Zd�Zd�Zd�Z	dd�Z
dS)�_TestMboxMMDFMessagec�0�|�|��dSr	)�_check_fromr�s  r"r�z*_TestMboxMMDFMessage._post_initialize_hooks����������r$c��tjt��}|�d��tj|��}|�|���d|�����dS)NzFrom foo@bar blahrN)rr
rR�set_unixfromr2rrPr�s  r"�test_initialize_with_unixfromz2_TestMboxMMDFMessage.test_initialize_with_unixfromsd���o�o�.�.�����,�-�-�-��!�#�&�&����������������H�H�H�H�Hr$c��tjt��}|�|��|�d��|�|���d��|�dd��|�|d��|�dtj����|�|d��dS)Nzfoo bar�foo@barTz	blah@temp)	rr2rRr�set_fromrrPr��	localtimer�s  r"�	test_fromz_TestMboxMMDFMessage.test_froms����!�/�2�2������������Y�������������3�3�3����Y��%�%�%�����i�(�(�(����[�$�.�"2�"2�3�3�3�����k�*�*�*�*�*r$c��tjt��}|�|���d��|�d��|�|���d��|�d��|�|���d��|�d��|�|���d��|�d��|�|���d��|�|��dS)	NrPr��XODR�RODX�FA�RODFAX�FDXA�RO)	rr2rRrr�r�r�r�r#r�s  r"rz_TestMboxMMDFMessage.test_flagss
���!�/�2�2����������"�-�-�-��
�
�c������������#�.�.�.��
�
�f������������&�1�1�1����T������������(�3�3�3����������������$�/�/�/����3�����r$Nc��|�d}|�tj|dz|�������dS)Nz
MAILER-DAEMONz. \w{3} \w{3} [\d ]\d [\d ]\d:\d{2}:\d{2} \d{4})r�r�r�rP)rr�senders   r"rz _TestMboxMMDFMessage._check_from$sP���>�$�F����R�X��J�J������ � �	!�	!�	!�	!�	!r$r	)r.r/r0r�_mboxMMDFMessager=r�rrrrr7r$r"rr�so�������'�H����I�I�I�	+�	+�	+� � � �!�!�!�!�!�!r$rc��eZdZejZdS)�TestMboxMessageN)r.r/r0rr2r=r7r$r"r(r(-��������"�H�H�Hr$r(c�(�eZdZejZd�Zd�ZdS)�
TestMHMessagec�<�|�|jg��dSr	)r�
_sequencesr�s  r"r�z#TestMHMessage._post_initialize_hook6s ��������,�,�,�,�,r$c���tjt��}|�|���g��|�dg��|�|���dg��|�g��|�|���g��|�d��|�|���dg��|�d��|�|���ddg��|�d��|�|���ddg��|�d��|�|���dg��|�d��|�|���ddg��|�d��|�|���ddg��|�ddg��|�|���ddg��dS)N�foobarr�r�r�)rr3rRrr�r�r��remove_sequencer�s  r"r�zTestMHMessage.test_sequences9sF�����0�0������*�*�,�,�b�1�1�1����8�*�%�%�%�����*�*�,�,�x�j�9�9�9����"��������*�*�,�,�b�1�1�1�����"�"�"�����*�*�,�,�x�j�9�9�9�����#�#�#�����*�*�,�,�x��.C�D�D�D�����#�#�#�����*�*�,�,�x��.C�D�D�D����H�%�%�%�����*�*�,�,�y�k�:�:�:�����"�"�"�����*�*�,�,�y�(�.C�D�D�D����I�&�&�&�����*�*�,�,�y�(�.C�D�D�D����8�Y�/�0�0�0�����*�*�,�,�x��.C�D�D�D�D�Dr$N)r.r/r0rr3r=r�r�r7r$r"r+r+2s?������� �H�-�-�-�E�E�E�E�Er$r+c�.�eZdZejZd�Zd�Zd�ZdS)�TestBabylMessagec�<�|�|jg��dSr	)r�_labelsr�s  r"r�z&TestBabylMessage._post_initialize_hookUs �������b�)�)�)�)�)r$c���tjt��}|�|���g��|�dg��|�|���dg��|�g��|�|���g��|�d��|�|���dg��|�d��|�|���ddg��|�d��|�|���ddg��|�d��|�|���dg��|�d��|�|���ddg��|�d��|�|���ddg��|�ddg��|�|���ddg��dS)Nr/r��resentr�r�)rr4rRrr�r�r��remove_labelr�s  r"r�zTestBabylMessage.test_labelsXs$���"�?�3�3��������)�)�2�.�.�.�����z�"�"�"�������)�)�H�:�6�6�6����r����������)�)�2�.�.�.��
�
�g����������)�)�G�9�5�5�5��
�
�h����������)�)�G�X�+>�?�?�?��
�
�h����������)�)�G�X�+>�?�?�?�����!�!�!�������)�)�H�:�6�6�6��
�
�h����������)�)�H�h�+?�@�@�@�����"�"�"�������)�)�H�h�+?�@�@�@�����*�-�.�.�.�������)�)�H�j�+A�B�B�B�B�Br$c�~�tjt��}|���}|�|���g��|�|�����d|d<d|d<|�|������g��|�|��|���}|�|���ddg��|�|dd��|�|dd��|�|�����|�	��|�|���ddg��|�|�����|���}|�|���gd���dD]$}|�||||���%dS)Nz
FooBar 1.0�
User-Agent�Blahz
X-Whatever)r9�Dater�To�Subject)
rr4rR�get_visiblerr[r�r�set_visible�update_visible)rr�visible�headers    r"�test_visiblezTestBabylMessage.test_visibleos���"�?�3�3���/�/�#�#�����������,�,�,����'�-�-�/�/�0�0�0� ,���� &����������*�*�/�/�1�1�2�6�6�6����� � � ��/�/�#�#����������,��)E�F�F�F������.��=�=�=������.��7�7�7����'�-�-�/�/�0�0�0���������������,��)E�F�F�F����'�-�-�/�/�0�0�0��/�/�#�#����������*5�*5�*5�	6�	6�	6�E�	;�	;�F����W�V�_�c�&�k�:�:�:�:�	;�	;r$N)	r.r/r0rr4r=r�r�rCr7r$r"r2r2QsL�������#�H�*�*�*�C�C�C�.;�;�;�;�;r$r2c��eZdZejZdS)�TestMMDFMessageN)r.r/r0rr5r=r7r$r"rErE�r)r$rEc��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�TestMessageConversionc��|jD];}tjt��}||��}|�|���<dSr	)r6rr
rRr#)rrU�	msg_plainrs    r"�test_plain_to_xz%TestMessageConversion.test_plain_to_x�sS���,�	$�	$�F����8�8�I��&��#�#�C����s�#�#�#�#�	$�	$r$c��|jD];}|t��}tj|��}|�|���<dSr	)r6rRrr
r#)rrUrrIs    r"�test_x_to_plainz%TestMessageConversion.test_x_to_plain�sS���,�	*�	*�F��&��)�)�C����,�,�I����y�)�)�)�)�	*�	*r$c�d�|jD]'}|t��}|�|���(dSr	)r6rVr#)rrUrs   r"�test_x_from_bytesz'TestMessageConversion.test_x_from_bytes�sE���,�	$�	$�F��&�.�/�/�C����s�#�#�#�#�	$�	$r$c�X��|jD] �|�t�fd����!dS)Nc����d��Sr3r7)rUs�r"r�z9TestMessageConversion.test_x_to_invalid.<locals>.<lambda>�s��������r$)r6ryrC)rrUs @r"�test_x_to_invalidz'TestMessageConversion.test_x_to_invalid�sF����,�	@�	@�F����i�)>�)>�)>�)>�?�?�?�?�	@�	@r$c�(���d�|jD���|jD]v}|jD]l�|�ur�|t��}�|��}��fd��|D��}|D]2}|�||jd�|������3�m�wdS)Nc�:�i|]}||t��j��Sr7)rRr�)r9rUs  r"�
<dictcomp>z]TestMessageConversion.test_type_specific_attributes_removed_on_conversion.<locals>.<dictcomp>�s7��>�>�>�"��V�V�O�4�4�=�>�>�>r$c�(��g|]}|��v�|��Sr7r7)r9�a�class2�	references  ��r"r:z]TestMessageConversion.test_type_specific_attributes_removed_on_conversion.<locals>.<listcomp>�s5���!B�!B�!B�q�&'�y��/@�&@�&@�"#�&@�&@�&@r$zwhile converting {} to {})r6rRrr�r�)r�class1�sourcer,�
type_specificr�rWrXs      @@r"�3test_type_specific_attributes_removed_on_conversionzITestMessageConversion.test_type_specific_attributes_removed_on_conversion�s����>�>�&*�&<�>�>�>�	��,�
	L�
	L�F��0�	
L�	
L���V�#�#�����0�0��������!B�!B�!B�!B�!B�I�f�,=�!B�!B�!B�
�)�L�L�D��$�$�T�6�?�3�:�:�6�6�J�J�L�L�L�L�L�	
L�
	L�
	Lr$c��tjt��}|�d��|�d��|���}tj|��}|�|��|�|���d��|�|�	��d��|�|���|��dS)N�DFPRSTr�)
rr1rRr�r�rr#rr�r�)r�msg_maildir�daters    r"�test_maildir_to_maildirz-TestMessageConversion.test_maildir_to_maildir�s����,�_�=�=�����h�'�'�'����u�%�%�%��#�#�%�%���$�[�1�1�����3������������(�3�3�3�������)�)�5�1�1�1����������.�.�.�.�.r$c�j�d}tjtjfD�]}tjt��}|�d��|D]�\}}|�|��||��}|�|���|��|�|�	��dtjtjd����z����|�
d��|�||�����d����dS)N))rrP�r�r�)�PrP)�R�A)r�re)�Tr)r^�RDFArzMAILER-DAEMON %sr��RODFA)rr2r5r1rRrr�rr�rPr��asctime�gmtimer�)r�pairsrUr_�setting�resultrs       r"�test_maildir_to_mboxmmdfz.TestMessageConversion.test_maildir_to_mboxmmdf�s2��1���*�G�,?�@�
	G�
	G�F�!�0��A�A�K�� � ��%�%�%�#(�
=�
=�����%�%�g�.�.�.��f�[�)�)��� � ������&�9�9�9�� � ������1C�!�\�$�+�c�*:�*:�;�;�2<�=�=�=�=��"�"�5�)�)�)����V�V�K�0�0�:�:�<�<�g�F�F�F�F�
	G�
	Gr$c	�&�tjt��}ddgfdddgfddgfdddgfdgfd	dgfd
ddgff}|D]T\}}|�|��|�tj|�����|���UdS)Nrr�r�r�rdrer�r�rgr^)rr1rRr�rr3r��rr_rlrmrns     r"�test_maildir_to_mhz(TestMessageConversion.test_maildir_to_mh�s����,�_�=�=����z�"�S�8�Y�*?�$@���z�"�S�8�Y�*?�$@�3��)���z�"�X�	�9�/E�$F�H�� %�	%�	%�O�G�V��!�!�'�*�*�*����W�.�{�;�;�I�I�K�K�#�
%�
%�
%�
%�	%�	%r$c	�(�tjt��}ddgfddgfdddgfdddgfdgfd	dd
gfdgd�ff}|D]T\}}|�|��|�tj|�����|���UdS)
Nrr�r�rd�	forwardedrer�r�rg�deletedr^)rur�rt)rr1rRr�rr4r�rqs     r"�test_maildir_to_babylz+TestMessageConversion.test_maildir_to_babyl�s����,�_�=�=����z�"�S�8�*�$5���+�.�/�#��*�7M�1N��r��S�8�Y�"7�8��@�@�@�A�C�� %�	%�	%�O�G�V��!�!�'�*�*�*����W�1�+�>�>�I�I�K�K�#�
%�
%�
%�
%�	%�	%r$c�T�tjtjfD�]
}|t��}|�dtjd����d}|D]~\}}|�|��tj|��}|�	|�
��|��|�	|���d���|�d��|�	tj|�����d����dS)Nrr))rer�)�OrP)rrgrc)rfre)ri�FRSTrxr�)
rr2r5rRrr�rkr�r1rr�rr�)rrU�msg_mboxMMDFrlrmrnrs       r"�test_mboxmmdf_to_maildirz.TestMessageConversion.test_mboxmmdf_to_maildir�s���*�G�,?�@�	$�	$�F�!�6�/�2�2�L��!�!�)�T�[��-=�-=�>�>�>�(�E�#(�
6�
6�����&�&�w�/�/�/��,�\�:�:��� � ������&�9�9�9�� � �������5�5�5�5��"�"�3�'�'�'����W�3�L�A�A�L�L�N�N�"�
$�
$�
$�
$�	$�	$r$c��tjtjfD]�}|t��}|�d��|�d��tjtjfD]]}||��}|�|���d��|�|���d���^��dS)Nrir)	rr2r5rRr�rrr�rP)rrUrz�class2_r�s     r"�test_mboxmmdf_to_mboxmmdfz/TestMessageConversion.test_mboxmmdf_to_mboxmmdf�s����*�G�,?�@�	=�	=�F�!�6�/�2�2�L��"�"�7�+�+�+��!�!�)�,�,�,�#�/��1D�E�
=�
=���w�|�,�,��� � ����!1�!1�7�;�;�;�� � ������)�<�<�<�<�
=�		=�	=r$c	�B�tjtjfD]�}|t��}dgfddgfddgfdddgfdddgfd	ddgff}|D]T\}}|�|��|�tj|�����|���U��dS)
Nrerxr�rr�r�rfr�ri)rr2r5rRr�rr3r�)rrUrzrlrmrns      r"�test_mboxmmdf_to_mhz)TestMessageConversion.test_mboxmmdf_to_mhs����*�G�,?�@�		)�		)�F�!�6�/�2�2�L��2�Y��x�j� 1�C�(��3D��H�i�0�1��H�i�0�1��	�9�5�6�8�E�$)�
)�
)�����&�&�w�/�/�/�� � ��!2�<�!@�!@�!N�!N�!P�!P�!'�)�)�)�)�
)�
		)�		)r$c	�B�tjtjfD]�}|t��}dgfddgfdddgfddgfdddgfd	ddgff}|D]T\}}|�|��|�tj|�����|���U��dS)
Nrerxr�rrur�rfr�ri)rr2r5rRr�rr4r�)rrUrrlrmrns      r"�test_mboxmmdf_to_babylz,TestMessageConversion.test_mboxmmdf_to_babyls����*�G�,?�@�	Q�	Q�F��&��)�)�C��2�Y��x�j� 1��H�i�0�1�C�(��3D��H�j�1�2��	�:�6�7�9�E�$)�
Q�
Q�����
�
�g�&�&�&�� � ��!5�c�!:�!:�!E�!E�!G�!G��P�P�P�P�
Q�
	Q�	Qr$c��d}|D]�\}}tjt��}|�|��|�tj|�����|��|�tj|�����d����tjt��}|�d��|�d��|�d��|�tj|�����d��|�tj|�����d��dS)N)�r�rP)r��RS)r�r�r�r�r�r�r�)rr3rRr�rr1r�r��rrlrmrnrs     r"�test_mh_to_maildirz(TestMessageConversion.test_mh_to_maildirsI��F��$�	N�	N�O�G�V��#�O�4�4�C����W�%�%�%����W�3�C�8�8�B�B�D�D�f�M�M�M����W�3�C�8�8�C�C�E�E�u�M�M�M�M����0�0������"�"�"�����#�#�#�����#�#�#�����/��4�4�>�>�@�@�$�G�G�G�����/��4�4�?�?�A�A�5�I�I�I�I�Ir$c�V�d}|D]\}}tjt��}|�|��tjtjfD]3}|�||�����|���4��tjt��}|�d��|�d��|�d��tjtjfD]3}|�||�����d���4dS)N)�r�rx)r��ROA)r��ROFr�r�r��OFA)rr3rRr�r2r5rr�)rrlrmrnrrUs      r"�test_mh_to_mboxmmdfz)TestMessageConversion.test_mh_to_mboxmmdf-s,��I��$�	B�	B�O�G�V��#�O�4�4�C����W�%�%�%�"�.��0C�D�
B�
B��� � ������!6�!6�!8�!8�&�A�A�A�A�
B����0�0������"�"�"�����#�#�#�����#�#�#��*�G�,?�@�	=�	=�F����V�V�C�[�[�2�2�4�4�e�<�<�<�<�	=�	=r$c�.�tjt��}|�d��|�d��|�d��|�tj|�����gd���dS)Nr�r�r�)r�r�r�)rr3rRr�rr�r�s  r"�
test_mh_to_mhz#TestMessageConversion.test_mh_to_mh<s������0�0������"�"�"�����#�#�#�����#�#�#�����*�3�/�/�=�=�?�?�9�9�9�	;�	;�	;�	;�	;r$c�(�ddgfddgfdgff}|D]m\}}tjt��}|�|��|�tj|�����|���ntjt��}|�d��|�d��|�d��|�tj|�����ddg��dS)Nr�r�r�r�)rr3rRr�rr4r�r�s     r"�test_mh_to_babylz&TestMessageConversion.test_mh_to_babylEs���X�J�'�)�j�\�)B��R��"��$�	M�	M�O�G�V��#�O�4�4�C����W�%�%�%����W�1�#�6�6�A�A�C�C�V�L�L�L�L����0�0������"�"�"�����#�#�#�����#�#�#�����-�c�2�2�=�=�?�?�"�J�/�	1�	1�	1�	1�	1r$c��d}|D]�\}}tjt��}|�|��|�tj|�����|��|�tj|�����d����tjt��}dD]}|�|���|�tj|�����d��|�tj|�����d��dS)N)r�)ru�ST)r�r�)r�r�)rt�PS)�editedr�)r6r�r��r�rur�r�rtr�r6�PRT)rr4rRr�rr1r�r��rrlrmrnr�labels      r"�test_babyl_to_maildirz+TestMessageConversion.test_babyl_to_maildirTs5��#�� %�	N�	N�O�G�V��&��7�7�C��M�M�'�"�"�"����W�3�C�8�8�B�B�D�D�f�M�M�M����W�3�C�8�8�C�C�E�E�u�M�M�M�M��"�?�3�3��*�	!�	!�E��M�M�%� � � � �����/��4�4�>�>�@�@�%�H�H�H�����/��4�4�?�?�A�A�5�I�I�I�I�Ir$c��d}|D]\}}tjtjfD]a}tjt��}|�|��|�||�����|���b��tjt��}dD]}|�|���tjtjfD]3}|�||�����d���4dS)N)r�)ru�ROD)r�r#)r�r�)rtr#)r�r#)r6r#r��ODA)rr2r5r4rRr�rr�)rrlrmrnrUrr�s       r"�test_babyl_to_mboxmmdfz,TestMessageConversion.test_babyl_to_mboxmmdfes��#�� %�	B�	B�O�G�V�"�.��0C�D�
B�
B���*�?�;�;���
�
�g�&�&�&�� � ������!6�!6�!8�!8�&�A�A�A�A�
B��"�?�3�3��*�	!�	!�E��M�M�%� � � � ��*�G�,?�@�	=�	=�F����V�V�C�[�[�2�2�4�4�e�<�<�<�<�	=�	=r$c��ddgfdgfdgfddgfdgfdgfdgff}|D]m\}}tjt��}|�|��|�tj|�����|���ntjt��}d	D]}|�|���|�tj|�����ddg��dS)
Nr�rur�r�r�rtr�r6r�)rr4rRr�rr3r�r�s      r"�test_babyl_to_mhz&TestMessageConversion.test_babyl_to_mhvs���X�J�'�)�R��7�B�-��y�k�*�[�"�,=��"�~��B��!�� %�	M�	M�O�G�V��&��7�7�C��M�M�'�"�"�"����W�.�s�3�3�A�A�C�C�V�L�L�L�L��"�?�3�3��*�	!�	!�E��M�M�%� � � � �����*�3�/�/�=�=�?�?�"�I�.�	0�	0�	0�	0�	0r$c��tjt��}|���dD]}|�|���tj|��}|�|���gd���|�|������|��������|������D]H}|�|���||���|���IdS)Nr�)	rr4rRr@r�rr�r>r[)rrr�r�rs     r"�test_babyl_to_babylz)TestMessageConversion.test_babyl_to_babyl�s?���"�?�3�3��������*�	!�	!�E��M�M�%� � � � ��#�C�(�(��������*�*�-7�-7�-7�	8�	8�	8�	
������*�*�/�/�1�1�4�3C�3C�3E�3E�3J�3J�3L�3L�M�M�M��?�?�$�$�)�)�+�+�	N�	N�C����S�_�_�.�.�s�3�T�5E�5E�5G�5G��5L�M�M�M�M�	N�	Nr$N)r.r/r0rJrLrNrQr\rarorrrvr{r~r�r�r�r�r�r�r�r�r�r�r7r$r"rGrG�sf������$�$�$�*�*�*�$�$�$�@�@�@�

L�
L�
L�
/�
/�
/�G�G�G� 	%�	%�	%�
%�
%�
%�$�$�$� 	=�	=�	=�)�)�)�
Q�
Q�
Q�
J�
J�
J�
=�
=�
=�;�;�;�
1�
1�
1�J�J�J�"=�=�=�"0�0�0� 
N�
N�
N�
N�
Nr$rGc�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�TestProxyFileBasec�n�|�d��|�|���d��|�d��|�|���d��|�d��|�|�d��d��|�d��|�|�d��d��|�d��|�|�d��d	��dS)
Nr�barrEsarrFsba������r)r�rr�r�proxys  r"�
_test_readzTestProxyFileBase._test_read�s���
�
�
�1�
�
�
���������v�.�.�.�
�
�
�1�
�
�
���������u�-�-�-�
�
�
�1�
�
�
�������A����.�.�.�
�
�
�1�
�
�
�������B����/�/�/�
�
�
�1�
�
�
�������D�)�)�4�0�0�0�0�0r$c��tj���}|�d��|�|���d|z��|�|���d|z��|�|���d|z��|�|���d��|�d��|�|���d|z��|�ddt
tj��zz��|�|���d|z��|�ddt
tj��zz��|�|�d��d	��|�|�d
��d|z��dS)Nr�foor��fred�bobrF�orJsfri����sed)r&r�r`r�r�readliner�rr�r�s   r"�_test_readlinez TestProxyFileBase._test_readline�s����*�#�#�%�%��
�
�
�1�
�
�
�������)�)�6�G�+;�<�<�<�������)�)�6�G�+;�<�<�<�������)�)�7�W�+<�=�=�=�������)�)�6�2�2�2�
�
�
�1�
�
�
�������)�)�4�'�>�:�:�:�
�
�
�1�q�3�r�z�?�?�*�*�+�+�+�������)�)�7�W�+<�=�=�=�
�
�
�1�q�3�r�z�?�?�*�*�+�+�+��������*�*�E�2�2�2��������,�,�e�g�o�>�>�>�>�>r$c��tj���}|�d��|�|���d|zd|zd|zdg��|�d��|�|�d��d|zg��|�dt
|��z��|�|�dt
|��z��d|zd|zg��|�d��|�|�d	��|d|zd|zdg��dS)
Nrr�r�r�r�rFrGrHr�)r&r�r`r�rr?rr�s   r"�_test_readlinesz!TestProxyFileBase._test_readlines�sb���*�#�#�%�%��
�
�
�1�
�
�
�������*�*�V�g�-=�+1�G�+;�+2�W�+<�f�-F�	G�	G�	G�	�
�
�1�
�
�
��������+�+�f�w�.>�-?�@�@�@�
�
�
�1�s�7�|�|�#�$�$�$��������S��\�\�)9�:�:��w�&��'�(9�:�	<�	<�	<�
�
�
�1�
�
�
��������.�.��&�7�:J�/6��/@�&�1J�	K�	K�	K�	K�	Kr$c��tj���}|�d��t	|��}|�t
|��d|z��|�t
|��d|z��|�t
|��d|z��|�t
|��d��|�tt|��dS)Nrr�r�r�r�)	r&r�r`r��iterr�nextry�
StopIteration)rr�r��iterators    r"�_test_iterationz!TestProxyFileBase._test_iteration�s����*�#�#�%�%��
�
�
�1�
�
�
���;�;������h����'�)9�:�:�:�����h����'�)9�:�:�:�����h����7�):�;�;�;�����h����0�0�0����-��x�8�8�8�8�8r$c�p�tj���}|�d��|�|���d��|�|�t|����|��|�dd��|�|�dt|��z��d|z��|�dt|��z
d��|�|�d��d��|�dd��|�|���d|zdz|z��|�d	��|�|�����dS)
NrGrFrEr�r�r�rr��d)	r&r�r`r�r�tellrrr-r�s   r"�_test_seek_and_tellz%TestProxyFileBase._test_seek_and_tell�s_���*�#�#�%�%��
�
�
�1�
�
�
���������q�)�)�)�������C��L�L�1�1�7�;�;�;�
�
�
�1�a����������A��G���$4�5�5�t�g�~�F�F�F�
�
�
�2��G���$�a�(�(�(�������A����/�/�/�
�
�
�1�a������������t�g�~��'>��'H�I�I�I�
�
�
�3������������&�&�&�&�&r$c���|�|j��|���|�|j��|���|�|j��dSr	)r-r�rBrr�s  r"�_test_closezTestProxyFileBase._test_close�s`�������&�&�&�
���
�
�
������%�%�%�
���
�
�
������%�%�%�%�%r$N)	r.r/r0r�r�r�r�r�r�r7r$r"r�r��sq������1�1�1�?�?�?� K�K�K� 	9�	9�	9�
'�
'�
'�&�&�&�&�&r$r�c�D�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
S)�
TestProxyFilec�\�tj|_t|jd��|_dS�Nr��rr;r<r�r]r?s r"r@zTestProxyFile.setUp��#���%��
��$�*�e�,�,��
�
�
r$c�l�|j���|�|j��dSr	�r]rBr-r<r?s r"rCzTestProxyFile.tearDown��2���
������� � ���,�,�,�,�,r$c�&�|j�d��|j���}tj|j��}|�|���|��|�|j���|��tj|jd��}|�|���d��|�|j���|��dS)Nr�r)r]r�r�r�
_ProxyFiler)r�pos�proxy0�proxy1s    r"�test_initializezTestProxyFile.test_initialize�s����
���� � � ��j�o�o�����#�D�J�/�/�����������,�,�,��������*�*�C�0�0�0��#�D�J��2�2�����������*�*�*��������*�*�C�0�0�0�0�0r$c��|j�d��|�tj|j����dS)Nr�)r]r�r�rr�r?s r"�	test_readzTestProxyFile.test_read�s=���
���� � � �����*�4�:�6�6�7�7�7�7�7r$c��|j�tdtj�dtj�dtj�d�d����|�t
j|j����dS�Nr�r
�fred�bobr�)r]r��bytesr&r�r�rr�r?s r"�
test_readlinezTestProxyFile.test_readlinesw���
������
�
�
�B�J�J�J�24�*�*�*� >�?F�H�H�	I�	I�	I����G�.�t�z�:�:�;�;�;�;�;r$c��|j�tdtj�dtj�dtj�d�d����|�t
j|j����dSr�)r]r�r�r&r�r�rr�r?s r"�test_readlineszTestProxyFile.test_readlines�w���
������
�
�
�B�J�J�J�24�*�*�*� >�?F�H�H�	I�	I�	I����W�/��
�;�;�<�<�<�<�<r$c��|j�tdtj�dtj�dtj�d�d����|�t
j|j����dSr�)r]r�r�r&r�r�rr�r?s r"�test_iterationzTestProxyFile.test_iterationr�r$c���|j�tdtj�dtj��d����|�t
j|j����dS�Nr�r
r�)r]r�r�r&r�r�rr�r?s r"�test_seek_and_tellz TestProxyFile.test_seek_and_tellsZ���
�����r�z�z�z�2�:�:�F��P�P�Q�Q�Q�� � ��!3�D�J�!?�!?�@�@�@�@�@r$c���|j�tdtj�dtj��d����|�t
j|j����dSr�)r]r�r�r&r�r�rr�r?s r"r4zTestProxyFile.test_closesZ���
�����r�z�z�z�2�:�:�F��P�P�Q�Q�Q�����+�D�J�7�7�8�8�8�8�8r$N�r.r/r0r@rCr�r�r�r�r�r�r4r7r$r"r�r��s�������-�-�-�-�-�-�	1�	1�	1�8�8�8�<�<�<�
=�=�=�
=�=�=�
A�A�A�9�9�9�9�9r$r�c�D�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
S)�TestPartialFilec�\�tj|_t|jd��|_dSr�r�r?s r"r@zTestPartialFile.setUpr�r$c�l�|j���|�|j��dSr	r�r?s r"rCzTestPartialFile.tearDown r�r$c��|j�tdtjzdzd����|j���}t
j|jdd��}|�|���d��|�|j���|��dS)Nr�r
r�rFrIr)	r]r�r�r&r�r�r�_PartialFiler)rr�r�s   r"r�zTestPartialFile.test_initialize$s����
����u�r�z�1�E�9�7�C�C�D�D�D��j�o�o�����$�T�Z��A�6�6����������q�)�)�)��������*�*�C�0�0�0�0�0r$c��|j�tdd����|�t	j|jdd����dS)Nz	***bar***r�rGrJ)r]r�r�r�rr�r?s r"r�zTestPartialFile.test_read,sK���
����{�G�4�4�5�5�5�����,�T�Z��A�>�>�?�?�?�?�?r$c�<�|j�tdtj�dtj�dtj�d�d����|�t
j|jdddttj��zz����dS)	Nz!!!!!foor
r�zbob!!!!!r�rI�rG)	r]r�r�r&r�r�rr�rr?s r"r�zTestPartialFile.test_readline0s����
������*�*�*�b�j�j�j�"�*�*�*� >�?F�H�H�	I�	I�	I����G�0���Q�13�a�#�b�j�/�/�6I�1I�K�K�	L�	L�	L�	L�	Lr$c�<�|j�tdtj�dtj�dtj�d�d����|�t
j|jdddttj��zz����dS)	Nr�r
r�zbob?????r�r�
rG)	r]r�r�r&r�r�rr�rr?s r"r�zTestPartialFile.test_readlines6����
������*�*�*�b�j�j�j�"�*�*�*� >�?F�H�H�	I�	I�	I����W�1�$�*�a�24�q�3�r�z�?�?�7J�2J�L�L�	M�	M�	M�	M�	Mr$c�<�|j�tdtj�dtj�dtj�d�d����|�t
j|jdddttj��zz����dS)	N�____foor
r�zbob####r�rH�rG)	r]r�r�r&r�r�rr�rr?s r"r�zTestPartialFile.test_iteration<r�r$c�"�|j�tdtj�dtj�d�d����|�t
j|jdddttj��zz����dS)Nz(((foor
z$$$r�rG�	rF)	r]r�r�r&r�r�rr�rr?s r"r�z"TestPartialFile.test_seek_and_tellBs����
�����R�Z�Z�Z�����L�g�V�V�W�W�W�� � ��!5�d�j�!�67�!�c�"�*�o�o�:M�6M�"O�"O�	P�	P�	P�	P�	Pr$c�"�|j�tdtj�dtj�d�d����|�t
j|jdddttj��zz����dS)Nz&foor
�^r�rErJrG)	r]r�r�r&r�r�rr�rr?s r"r4zTestPartialFile.test_closeGs����
���������R�Z�Z�Z�H�'�R�R�S�S�S�����-�d�j�!�./�!�c�"�*�o�o�2E�.E�G�G�	H�	H�	H�	H�	Hr$Nr�r7r$r"r�r�s�������-�-�-�-�-�-�1�1�1�@�@�@�L�L�L�M�M�M�M�M�M�P�P�P�
H�H�H�H�Hr$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�:�eZdZd�Zd�Zd
d�Zd�Zd�Zd�Zd�Z	d	S)�MaildirTestCasec��tj|_tj�|j��rtj|j��n=tj�|j��rtj|j��tj	|j��tj	tj�
|jd����tj	tj�
|jd����tj	tj�
|jd����d|_g|_dS)Nr�r�r�rE)
rr;�_dirr&r'r(r)�isfiler+r�r��_counter�	_msgfilesr?s r"r@zMaildirTestCase.setUpZs����$��	�
�7�=�=���#�#�	(���T�Y�'�'�'�'�
�W�^�^�D�I�
&�
&�	(���T�Y�'�'�'�
�������
������d�i��/�/�0�0�0�
������d�i��/�/�0�0�0�
������d�i��/�/�0�0�0���
�����r$c���tttj|j����tjtj�|j	d����tjtj�|j	d����tjtj�|j	d����tj|j	��dS)Nr�r�r�)
r��mapr&r+r�r�rmdirr'r�r�r?s r"rCzMaildirTestCase.tearDownhs����S���D�N�
+�
+�,�,�,�������T�Y��6�6�7�7�7�������T�Y��6�6�7�7�7�������T�Y��6�6�7�7�7����	�"�"�"�"�"r$Fc��ttj��dz��}|j}|xjdz
c_d�t	|��t	|��ddf��}t
j�|jd|��}t
j�|j||��}t|dd�	��5}|j	�
|��|r|�t��|�t��ddd��n#1swxYwY	tj||��nY#tt f$rEt|d��5}|�t��ddd��n#1swxYwYYnwxYw|j	�
|��|S)
Ni@BrE�.�
myhostname�mydomainr�r�rKrL)r�r�r�r��strr&r'r�r�r�rOr��FROM_�
DUMMY_MESSAGE�link�AttributeError�PermissionError)	r�dirrw�tr�r �tmpname�newname�fps	         r"�
createMessagezMaildirTestCase.createMessageos�����	���g�%�&�&���m���
�
���
�
��8�8�S��V�V�S��X�X�|�Z�H�I�I���'�,�,�t�y�%��:�:���'�,�,�t�y�#�x�8�8��
�'�3��
1�
1�
1�	$�R��N�!�!�'�*�*�*��
 ���������H�H�]�#�#�#�		$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�
	(��G�G�W�%�%�%�%����0�	(�	(�	(��g�s�#�#�
(�r�����'�'�'�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(���	(����	
����g�&�&�&��sI�AD)�)D-�0D-�5E�!F!�,F�F!�F	�F!�F	�F!� F!c��	tjtj��|_|�|j�����|�|j�����dSr	)rrrr;rwr�r�r?s r"�test_empty_maildirz"MaildirTestCase.test_empty_maildir�sc��+��O�I�$4�5�5��	�	
���$�)�.�.�*�*�+�+�+����$�)�.�.�*�*�+�+�+�+�+r$c�~�|�d��tjtj��|_|�|j�����|�|j�����|�|j�����dS)Nr��	rrrrr;rwr�r�r�r?s r"�test_nonempty_maildir_curz)MaildirTestCase.test_nonempty_maildir_cur�������5�!�!�!��O�I�$4�5�5��	����T�Y�^�^�-�-�.�.�.����$�)�.�.�*�*�+�+�+����$�)�.�.�*�*�+�+�+�+�+r$c�~�|�d��tjtj��|_|�|j�����|�|j�����|�|j�����dS)Nr�rr?s r"�test_nonempty_maildir_newz)MaildirTestCase.test_nonempty_maildir_new�rr$c��|�d��|�d��tjtj��|_|�|j�����|�|j�����|�|j�����|�|j�����dS)Nr�r�rr?s r"�test_nonempty_maildir_bothz*MaildirTestCase.test_nonempty_maildir_both�s������5�!�!�!����5�!�!�!��O�I�$4�5�5��	����T�Y�^�^�-�-�.�.�.����T�Y�^�^�-�-�.�.�.����$�)�.�.�*�*�+�+�+����$�)�.�.�*�*�+�+�+�+�+r$N)F)
r.r/r0r@rCrrrrrr7r$r"r�r�Xs����������#�#�#�����(,�,�,�,�,�,�,�,�,�,�,�,�,�,r$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 -0400rz."Gregory K. Johnson" <gkj@gregorykjohnson.com>r<zgkj@gregorykjohnson.comr=zSample messagezMime-Versionz1.0zContent-Typez,multipart/mixed; boundary="NMuMz9nt05w80d4+"zContent-Disposition�inliner9zMutt/1.5.9i)z1This is a sample message.

--
Gregory K. Johnson
zRH4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs
3FYlAAAA
c��eZdZd�ZdS)�MiscTestCasec�B�tj|tddh���dS)Nr��fcntl)�not_exported)r�check__all__rr?s r"�test__all__zMiscTestCase.test__all__�s8����T�7�+4�g�*>�	@�	@�	@�	@�	@�	@r$N)r.r/r0r#r7r$r"rr�s(������@�@�@�@�@r$rc�,�tj��dSr	)r�
reap_childrenr7r$r"�tearDownModuler&	s��������r$�__main__);r&r�r�r�r�r�
email.messager�rTr��testr�test.supportrrr"rIrr5�has_gethostname�SkipTestrr9�TestCaserLr}r&r0rur�r�r�r�ryr�r�r�r�rr(r+r2rErGr�r�r�rrr�rRr`rVrrrr&r.�mainr7r$r"�<module>r/sF��	�	�	�	�
�
�
�
���������
�
�
�
���������	�	�	�	�	�	�	�	�����������"�"�"�"�"�"�&�&�&�&�&�&������������������$�;�
�(�
�9�
:�
:�:�%�%�%�%�%�%�%�%�8w$�w$�w$�w$�w$�(�w$�w$�w$�t!D�!D�!D�!D�!D�H�h�&7�!D�!D�!D�HX%�X%�X%�X%�X%�+�x�0�X%�X%�X%�v
&<�&<�&<�&<�&<�k�&<�&<�&<�RI�I�I�I�I�O�I�I�I�X+1�+1�+1�+1�+1�}�h�/�+1�+1�+1�\L�L�L�L�L�}�h�/�L�L�L�
D>�D>�D>�D>�D>�[�(�+�D>�D>�D>�NE�E�E�E�E���!2�E�E�E�D�������������'�/����	1�	1�	1�	1�	1�h�'�	1�	1�	1�S
�S
�S
�S
�S
�(�H�-�S
�S
�S
�lG �G �G �G �G ��h�&7�G �G �G �T-!�-!�-!�-!�-!�-!�-!�-!�`#�#�#�#�#�*�K�#�#�#�
E�E�E�E�E�K��!2�E�E�E�>4;�4;�4;�4;�4;�{�H�$5�4;�4;�4;�n#�#�#�#�#�*�K�#�#�#�
FN�FN�FN�FN�FN�H�h�&7�FN�FN�FN�RP&�P&�P&�P&�P&��P&�P&�P&�f.9�.9�.9�.9�.9�%�x�'8�.9�.9�.9�b0H�0H�0H�0H�0H�'��):�0H�0H�0H�j	B���
�M,�M,�M,�M,�M,�h�'�M,�M,�M,�d-��^(�.�.�w�7�7��"��-�"��*�"��)�"��M�	"��5�"��Y�"��P�"��@�"� �,�!"�"�?�#"�$	�	"�%"�&��'"�(�5�)"�*�F�+"�,�(�-"�.�-�/"��2��@�@�@�@�@�8�$�@�@�@�����z����H�M�O�O�O�O�O��r$