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

�Ke���
�ddlZddlZddlZddlmZddlmZddlmZddl	Z	ddl
Z
ddlZ
ddlZddl
mZddlmZddlmZ	ddlZn
#e$rdZYnwxYw	ddlZn
#e$rdZYnwxYw	ddlZn
#e$rdZYnwxYw	ddlZn
#e$rdZYnwxYwd�Zej�ej��d	zZed
zZejd��Zej�ed��Z ej�ed
��Z!ej�ed��Z"ej�ed��Z#ej�ed��Z$dZ%dZ&Gd�d��Z'ej(��Gd�d����Z)ej*��Gd�d����Z+ej,��Gd�d����Z-Gd�de'��Z.Gd�de.e
j/��Z0Gd�d e)e0��Z1Gd!�d"e+e0��Z2Gd#�d$e-e0��Z3Gd%�d&e.e
j/��Z4Gd'�d(e)e4��Z5Gd)�d*e+e4��Z6Gd+�d,e-e4��Z7Gd-�d.e.��Z8Gd/�d0e8��Z9Gd1�d2e9e
j/��Z:Gd3�d4e)e9e
j/��Z;Gd5�d6e+e9e
j/��Z<Gd7�d8e-e9e
j/��Z=Gd9�d:e8e
j/��Z>Gd;�d<e)e>��Z?Gd=�d>e+e>��Z@Gd?�d@e-e>��ZAGdA�dBe'e
j/��ZBGdC�dDe)eB��ZCGdE�dFe+eB��ZDGdG�dHe-eB��ZEGdI�dJe.e
j/��ZFGdK�dL��ZGGdM�dNeGe.e
j/��ZHGdO�dPeGe.e
j/��ZIGdQ�dRe'��ZJGdS�dTeJe
j/��ZKGdU�dVe)eK��ZLGdW�dXe+eK��ZMGdY�dZe-eK��ZNGd[�d\eJe
j/��ZOGd]�d^e)eO��ZPGd_�d`e+eO��ZQGda�dbe-eO��ZRGdc�dde
j/��ZSGde�dfeJe
j/��ZTGdg�dheJe
j/��ZUGdi�dje)eU��ZVGdk�dle+eU��ZWGdm�dne-eU��ZXGdo�dpeU��ZYe
jZe[edq��dr��Gds�dte
j/����Z\Gdu�dveS��Z]Gdw�dx��Z^Gdy�dze^e
j/��Z_Gd{�d|e^e
j/��Z`Gd}�d~e^e
j/��ZaGd�d���ZbGd��d�ebe
j/��ZcGd��d�e)ebe
j/��ZdGd��d�e+ebe
j/��ZeGd��d�e-ebe
j/��ZfGd��d�e
j/��ZgGd��d�e
j/��ZhGd��d�e
j/��ZiGd��d�e
j/��Zje
jke[edq��d���Gd��d�e.e
j/����ZlGd��d�e+e
j/��Zmd��Zne
jZe[ed���d���e
jZe[ed���d���Gd��d�e
j/������Zod��Zpd��Zqerd�kre
js��dSdS)��N)�sha256)�contextmanager)�Random)�support)�	os_helper)�
script_helperc�D�t|�����S�N)r�	hexdigest)�datas �;/usr/local/apps/python3/lib/python3.11/test/test_tarfile.py�	sha256sumr#s���$�<�<�!�!�#�#�#�z-tardirz
-extract-testztesttar.tarztesttar.tar.gzztesttar.tar.bz2�testtar.tar.xzztmp.tar�testtar�@e09e4bc8b3c9d9177e77256353b36c159f5f040531bbd4b024a8f9b9196c71ce�@4f05a776071146756345ceee937b33fc5644f5a96b9780d1c7d6a32cdf164d7bc�R�eZdZeZdZejZej	j
Z
ed���ZdS)�TarTest�c� �|j|jzSr
)�prefix�suffix��selfs r
�modezTarTest.mode=s���{�T�[�(�(rN)
�__name__�
__module__�__qualname__�tarnamer�io�FileIO�open�tarfile�TarFile�taropen�propertyr�rr
rr7sH�������G�
�F�
�9�D��o�%�G�
�)�)��X�)�)�)rrc�D�eZdZeZdZerejndZe	j
jZdS)�GzipTest�gzN)
rrr�gzipnamer r�gzip�GzipFiler#r$r%�gzopenr&r(rr
r*r*As2�������G�
�F� �*�4�=�=�d�D��o�$�G�G�Grr*c�D�eZdZeZdZerejndZe	j
jZdS)�Bz2Test�bz2N)
rrr�bz2namer rr2�BZ2Filer#r$r%�bz2openr&r(rr
r1r1Hs2�������G�
�F��'�3�;�;�4�D��o�%�G�G�Grr1c�D�eZdZeZdZerejndZe	j
jZdS)�LzmaTest�xzN)
rrr�xznamer r�lzma�LZMAFiler#r$r%�xzopenr&r(rr
r7r7Os2�������G�
�F� �*�4�=�=�d�D��o�$�G�G�Grr7c��eZdZdZd�Zd�ZdS)�ReadTest�r:c�R�tj|j|jd���|_dS)N�	iso8859-1�r�encoding�r$r#r r�tarrs r
�setUpzReadTest.setUp[s)���<���4�9�)4�6�6�6����rc�8�|j���dSr
)rE�closers r
�tearDownzReadTest.tearDown_s����������rN)rrrrrFrIr(rr
r>r>Ws7������
�F�6�6�6�����rr>c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zejeed
��oeed��d��d���ZdS)�
UstarReadTestc�l�|j�d��}|j�|��5}|���}|�t|��|jd��|�t|��td��ddd��dS#1swxYwYdS)N�
ustar/regtype�regular file extraction failed)	rE�	getmember�extractfile�read�assertEqual�len�sizer�sha256_regtype�r�tarinfo�fobjrs    r
�test_fileobj_regular_filez'UstarReadTest.test_fileobj_regular_filees����(�$�$�_�5�5��
�X�
!�
!�'�
*�
*�	6�d��9�9�;�;�D����S��Y�Y���4�
6�
6�
6����Y�t�_�_�n�4�
6�
6�
6�		6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	6�	6s�A'B)�)B-�0B-c��|j�dt��|j�d��}t	t
j�td��d��5}|���}ddd��n#1swxYwY|j�	|��5}tj|��}|���}|�||d��|�t|��dd��|�|ddd��ddd��dS#1swxYwYdS)NrM�rzfileobj.readlines() failed�r�SzOI will gladly admit that Python is not the fastest running scripting language.
)rE�extract�TEMPDIRrOr#�os�path�join�	readlinesrPr!�
TextIOWrapperrRrS)rrW�fobj1�lines1rX�fobj2�lines2s       r
�test_fileobj_readlinesz$UstarReadTest.test_fileobj_readlinesns��������'�2�2�2��(�$�$�_�5�5��
�"�'�,�,�w��8�8�#�
>�
>�	'�%��_�_�&�&�F�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'��X�
!�
!�'�
*�
*�
	2�d��$�T�*�*�E��_�_�&�&�F����V�V�0�
2�
2�
2����S��[�[�#�0�
2�
2�
2����V�B�Z�4�0�
2�
2�
2�
	2�
	2�
	2�
	2�
	2�
	2�
	2�
	2�
	2�
	2�
	2�
	2����
	2�
	2�
	2�
	2�
	2�
	2s%�.B�B�B�4BE�E�	Ec��|j�dt��|j�d��}t	t
j�td��d��5}|���}ddd��n#1swxYwY|j�	|��5}ttj|����}|�
||d��ddd��dS#1swxYwYdS)NrMr[zfileobj.__iter__() failed)rEr^r_rOr#r`rarbrcrP�listr!rdrR)rrWrerfrgrhs      r
�test_fileobj_iterzUstarReadTest.test_fileobj_iter�s^�������'�2�2�2��(�$�$�_�5�5��
�"�'�,�,�w��8�8�#�
>�
>�	'�%��_�_�&�&�F�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�
�X�
!�
!�'�
*�
*�	1�e��"�*�5�1�1�2�2�F����V�V�/�
1�
1�
1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s$�.B�B�B�49C:�:C>�C>c��|j�dt��ttj�td��d��5}|���}ddd��n#1swxYwY|j�d��}|j�	|��5}|���}|�
d��|�d|���d��|�
dd��|�d|���d��|�
dd��|�d	|���d
��|�
d	d��|�d|���d��|�d��}|�||dd
�d��|�
dd��|�|j
|���d��|�|���dd��|�
|j
d��|�d|���d��|�
d��|���}|�
d��|���}|�||d��|�
d��|�t|�����|���d��|�
d��|�t|�����dz|���d��|�
d��|���}|�|���|t|��d�d��ddd��dS#1swxYwYdS)NrM�rbrzseek() to file's start failediz"seek() to absolute position failedi�����z+seek() to negative relative position failedz+seek() to positive relative position failed�
i
zread() after seek failed�zseek() to file's end failedrz0read() at file's end did not return empty stringz$relative seek() to file's end failed�zreadlines() after seek failedztell() after readline() failedz)tell() after seek() and readline() failedzread() after readline() failed)rEr^r_r#r`rarbrQrOrP�seekrR�tellrTrcrS�readline)	rrXrrW�text�s�s1�s2�lines	         r
�test_fileobj_seekzUstarReadTest.test_fileobj_seek�s?�������'�2�2�2�
�"�'�,�,�w��8�8�$�
?�
?�	�4��9�9�;�;�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��(�$�$�_�5�5��
�X�
!�
!�'�
*�
*�(	;�d��9�9�;�;�D��I�I�a�L�L�L����Q��	�	���8�
:�
:�
:��I�I�d�A�������T�4�9�9�;�;�=�
?�
?�
?��I�I�e�Q�������T�4�9�9�;�;�F�
H�
H�
H��I�I�d�A�������T�4�9�9�;�;�F�
H�
H�
H��	�	�"�
�
�A����Q��T�$�Y��3�
5�
5�
5��I�I�a��O�O�O����W�\�4�9�9�;�;�6�
8�
8�
8����T�Y�Y�[�[�#�K�
M�
M�
M��I�I�w�|�m�Q�'�'�'����Q��	�	���?�
A�
A�
A��I�I�c�N�N�N����!�!�B��I�I�c�N�N�N����!�!�B����R��8�
:�
:�
:��I�I�a�L�L�L����S������1�1�4�9�9�;�;�9�
;�
;�
;��I�I�c�N�N�N����S������1�1�C�7������D�
F�
F�
F��I�I�a�L�L�L��=�=�?�?�D����T�Y�Y�[�[�$�s�4�y�y�z�z�*:�9�
;�
;�
;�O(	;�(	;�(	;�(	;�(	;�(	;�(	;�(	;�(	;�(	;�(	;�(	;����(	;�(	;�(	;�(	;�(	;�(	;s%�A5�5A9�<A9�4NQ�Q�Qc��|j�d��5}tj|��}|����d��}|�t|��t��	|�	d��n%#t$r|�d��YnwxYwddd��dS#1swxYwYdS)NrMrA�dzseeking failed in text mode)rErPr!rdrQ�encoderRrrUrt�AttributeError�fail�rrXrs   r
�test_fileobj_textzUstarReadTest.test_fileobj_text�s��
�X�
!�
!�/�
2�
2�		9�d��#�D�)�)�D��9�9�;�;�%�%�k�2�2�D����Y�t�_�_�n�=�=�=�
9��	�	�#������!�
9�
9�
9��	�	�7�8�8�8�8�8�
9����
		9�		9�		9�		9�		9�		9�		9�		9�		9�		9�		9�		9����		9�		9�		9�		9�		9�		9s6�A$C�B�C�B8�5C�7B8�8C�C�Cc��|j�|��5}|j�|��5}|�|j|j��ddd��n#1swxYwYddd��dS#1swxYwYdSr
)rErPrR�name)r�lnktype�regtype�a�bs     r
�_test_fileobj_linkz UstarReadTest._test_fileobj_link�s���
�X�
!�
!�'�
*�
*�	-�a�
�X�
!�
!�'�
*�
*�	-�./����Q�V�Q�V�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-s4�A;�!A#�A;�#A'	�'A;�*A'	�+A;�;A?�A?c�2�|�dd��dS)N�
ustar/lnktyperM�r�rs r
�test_fileobj_link1z UstarReadTest.test_fileobj_link1���������A�A�A�A�Arc�2�|�dd��dS)N�./ustar/linktest2/lnktype�ustar/linktest1/regtyper�rs r
�test_fileobj_link2z UstarReadTest.test_fileobj_link2��*����� ;� 9�	;�	;�	;�	;�	;rc�2�|�dd��dS)N�
ustar/symtyperMr�rs r
�test_fileobj_symlink1z#UstarReadTest.test_fileobj_symlink1�r�rc�2�|�dd��dS)N�./ustar/linktest2/symtyper�r�rs r
�test_fileobj_symlink2z#UstarReadTest.test_fileobj_symlink2�r�rc�2�|�dd��dS)N�symtype2rMr�rs r
�test_issue14160zUstarReadTest.test_issue14160�s�����
�O�<�<�<�<�<rc�Z�|�d��|�d��dS)N�bar�eaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)�add_dir_and_getmemberrs r
�test_add_dir_getmemberz$UstarReadTest.test_add_dir_getmember�s0���"�"�5�)�)�)��"�"�7�+�+�+�+�+r�getuid�getgidz'Missing getuid or getgid implementationc	��d�}tj��5tjtd��5}tj|_	tj|��|�	||���tj
|��n#tj
|��wxYw	ddd��n#1swxYwYtjt��5}|�|�|��|�|dz����ddd��n#1swxYwYddd��dS#1swxYwYdS)Nc�"�dx|_|_|S)Nr~)�uid�gid�rWs r
�filterz3UstarReadTest.add_dir_and_getmember.<locals>.filter�s��(+�+�G�K�'�+��Nr�w)r��/)
r�temp_cwdr$r#�tmpname�USTAR_FORMAT�formatr`�mkdir�add�rmdirrRrO)rr�r�rEs    r
r�z#UstarReadTest.add_dir_and_getmember�s���	�	�	��
�
!�
!�	�	���g�s�+�+�
#�s�$�1��
�#��H�T�N�N�N��G�G�D��G�0�0�0��H�T�N�N�N�N��B�H�T�N�N�N�N����N�

#�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#����
#�
#�
#�
#���g�&�&�
�#�� � ��M�M�$�'�'��M�M�$��*�-�-����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	sq�D3�B+�+B�0B+�B�B+�D3�+B/	�/D3�2B/	�3D3�AD�D3�D	�D3�"D	�#D3�3D7�:D7N)rrrrYrirlr|r�r�r�r�r�r�r�r��unittest�
skipUnless�hasattrr`r�r(rr
rKrKcs"������6�6�6�2�2�2�$1�1�1�.;�.;�.;�`
9�
9�
9�-�-�-�
B�B�B�;�;�;�B�B�B�;�;�;�=�=�=�,�,�,�
�X�����X�.�.�H�7�7�2�x�3H�3H�B�D�D���D�D���rrKc��eZdZdS)�GzipUstarReadTestN�rrrr(rr
r�r����������Drr�c��eZdZdS)�Bz2UstarReadTestNr�r(rr
r�r��r�rr�c��eZdZdS)�LzmaUstarReadTestNr�r(rr
r�r��r�rr�c�&�eZdZd�Zd�Zd�Zd�ZdS)�ListTestc�P�tj|j|j���|_dS)N�rrDrs r
rFzListTest.setUps ���<���4�9�=�=�=����rc�d��tjtj��dd���}tjt
d|��5�j�d���ddd��n#1swxYwY|����	��}��
d|����
d|����
d	|����
d
|����
d|����
d|����
d
|����
d|���fd�}��
|d��|����
|d��|����
|d��|����
|d��|����
|d��|����|d����d|����d|��dS)N�ascii�
��newline�stdoutF��verbose�ustar/conttype�
ustar/regtypes
ustar/lnktypesustar/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/1234567/longnames./ustar/linktest2/symtypes./ustar/linktest2/lnktypesustar/dirtype/sustar/dirtype-with-size/c�p��|��jjd��}|�dd��S)N�surrogateescaper��backslashreplace)�decoderErCr)r�rxrs  �r
�convz ListTest.test_list.<locals>.convs1��������*�,=�>�>�A��8�8�G�%7�8�8�8rsustar/umlauts-�����s'misc/regtype-hpux-signed-chksum-�����s)misc/regtype-old-v7-signed-chksum-�����spax/bad-pax-�spax/hdrcharset-�s)ustar/conttype ?\r?\nustar/regtype ?\r?\nslink tos->)
r!rd�BytesIOr�	swap_attr�sysrErk�detach�getvalue�assertIn�assertRegex�assertNotIn)r�tio�outr�s`   r
�	test_listzListTest.test_list	s������r�z�|�|�W�d�C�C�C��
�
�s�H�c�
2�
2�	)�	)��H�M�M�%�M�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)��j�j�l�l�#�#�%�%���
�
�'��-�-�-��
�
�&��,�,�,��
�
�&��,�,�,��
�
�B�C�H�H�H��
�
�2�C�8�8�8��
�
�2�C�8�8�8��
�
�'��-�-�-��
�
�1�3�7�7�7�	9�	9�	9�	9�	9�	
�
�
�d�d�H�I�I�3�O�O�O��
�
�d�d�;�<�<�=@�	B�	B�	B��
�
�d�d�;�<�<�=@�	B�	B�	B��
�
�d�d�6�7�7��=�=�=��
�
�d�d�9�:�:�C�@�@�@�	
����7�	8�	8�	8�	
����S�)�)�)������$�$�$�$�$s�A-�-A1�4A1c�F�tjtj��dd���}tjt
d|��5|j�d���ddd��n#1swxYwY|����	��}|�
|d��|�d|��|�d	|��|�d
|��|�d|��|�d|��dS)
Nr�r�r�r�Tr�s�\?rw-r--r-- tarfile/tarfile\s+7011 \d{4}-\d\d-\d\d\s+\d\d:\d\d:\d\d ustar/\w+type ?\r?\n\?rw-r--r-- tarfile/tarfile\s+7011 \d{4}-\d\d-\d\d\s+\d\d:\d\d:\d\d ustar/\w+type ?\r?\nsustar/symtype -> regtypes1./ustar/linktest2/symtype -> ../linktest1/regtypes;./ustar/linktest2/lnktype link to ./ustar/linktest1/regtypes	gnu/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longlink link to gnu/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longnames	pax/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longlink link to pax/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longname)r!rdr�rr�r�rErkr�r�r�r�)rr�r�s   r
�test_list_verbosezListTest.test_list_verbose.si����r�z�|�|�W�d�C�C�C��
�
�s�H�c�
2�
2�	(�	(��H�M�M�$�M�'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(��j�j�l�l�#�#�%�%��	
����=�	>�	>�	>�	
�
�
�1�3�7�7�7��
�
�J�C�P�P�P��
�
�3�47�	9�	9�	9��
�
�5�69�	;�	;�	;��
�
�5�69�	;�	;�	;�	;�	;s�A,�,A0�3A0c��tjtj��dd���}d�}tjt
d|��5|j�d||j�����ddd��n#1swxYwY|����	��}|�
d|��|�d	|��dS)
Nr�r�r�c3�RK�|���D]}d|jvr|V��dS)N�reg)�
getmembersr�)rErWs  r
�membersz+ListTest.test_list_members.<locals>.membersHs@�����>�>�+�+�
"�
"���G�L�(�(�!�M�M�M��
"�
"rr�F)r�r�r�r�)r!rdr�rr�r�rErkr�r�r�r�)rr�r�r�s    r
�test_list_memberszListTest.test_list_membersFs����r�z�|�|�W�d�C�C�C��	"�	"�	"��
�s�H�c�
2�
2�	D�	D��H�M�M�%�����1B�1B�M�C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D��j�j�l�l�#�#�%�%���
�
�&��,�,�,����*�C�0�0�0�0�0s�+A>�>B�BN)rrrrFr�r�r�r(rr
r�r�sQ������>�>�>�#%�#%�#%�J;�;�;�0
1�
1�
1�
1�
1rr�c��eZdZdS)�GzipListTestNr�r(rr
r�r�Sr�rr�c��eZdZdS)�Bz2ListTestNr�r(rr
r�r�Wr�rr�c��eZdZdS)�LzmaListTestNr�r(rr
r�r�[r�rr�c�D�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
S)�CommonReadTestc�P�ttd��5	ddd��n#1swxYwY|�tjt����|�tjtjt������ttd��5}|�tj|����ddd��n#1swxYwY|�tjtjd������dS)N�wbrnsinvalid)	r#r��assertFalser$�
is_tarfile�pathlib�Pathr!r��rrXs  r
�test_is_tarfile_erroneousz(CommonReadTest.test_is_tarfile_erroneousasj��
�'�4�
 �
 �	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
����+�G�4�4�5�5�5�	
����+�G�L��,A�,A�B�B�C�C�C��'�4�
 �
 �	7�D����W�/��5�5�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	
����+�B�J�z�,B�,B�C�C�D�D�D�D�Ds�$�(�(�.(C"�"C&�)C&c	�t�|�tj|j����|�tjt	j|j������t
|jd��5}|�tj|����ddd��n#1swxYwYt
|jd��5}|�tjtj|�	��������ddd��dS#1swxYwYdS�Nrn)
�
assertTruer$r�r r�r�r#r!r�rQr�s  r
�test_is_tarfile_validz$CommonReadTest.test_is_tarfile_validrs�������*�4�<�8�8�9�9�9�	
����*�7�<���+E�+E�F�F�G�G�G��$�,��
%�
%�	6���O�O�G�.�t�4�4�5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6��$�,��
%�
%�	I���O�O�G�.�r�z�$�)�)�+�+�/F�/F�G�G�H�H�H�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I����	I�	I�	I�	I�	I�	Is%�(B4�4B8�;B8�AD-�-D1�4D1c��t|jd��5}tj|��|�|���d��ddd��n#1swxYwYt|jd��5}t
j|�����}tj|��|�|���d��ddd��dS#1swxYwYdS)Nrnr)	r#r r$r�rRrur!r�rQ)rrX�	file_likes   r
�test_is_tarfile_keeps_positionz-CommonReadTest.test_is_tarfile_keeps_position�sT���$�,��
%�
%�	-����t�$�$�$����T�Y�Y�[�[�!�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-��$�,��
%�
%�	2���
�4�9�9�;�;�/�/�I���y�)�)�)����Y�^�^�-�-�q�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2s$�=A�A#�&A#�?A#C/�/C3�6C3c��tjt|j�dd����5	ddd��n#1swxYwY	tjt|j��}|���|�|���g��n*#tj$r|�	d��YnwxYw|�
��dS#|�
��wxYw)Nr[r�z&tarfile.open() failed on empty archive)r$r#r�r�replace�getnames�assertListEqualr��	ReadErrorr�rH�rrEs  r
�test_empty_tarfilez!CommonReadTest.test_empty_tarfile�s,��
�\�'�4�9�#4�#4�S�#�#>�#>�
?�
?�	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	��,�w��	�2�2�C��L�L�N�N�N�
� � ����!1�!1�2�6�6�6�6��� �	@�	@�	@��I�I�>�?�?�?�?�?�	@����

�I�I�K�K�K�K�K��C�I�I�K�K�K�K���s;�A�A�	A�3B*�)C*�*$C�C*�C�C*�*Dc��|�td��5tjd|j��ddd��dS#1swxYwYdS)N�xxx)�assertRaisesRegex�FileNotFoundErrorr$r#rrs r
�test_non_existent_tarfilez(CommonReadTest.test_non_existent_tarfile�s����
#�
#�$5�u�
=�
=�	+�	+��L���	�*�*�*�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�	+�	+s�A�A�Ac�.�ttd��5	ddd��n#1swxYwY|�tjtjt|j��|�tjtjt��dS�Nr�)r#r��assertRaisesr$rrrs r
�test_null_tarfilez CommonReadTest.test_null_tarfile�s����'�4�
 �
 �	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	����'�+�W�\�7�D�I�N�N�N����'�+�W�\�7�C�C�C�C�Cs�$�(�(c��td���d��}dD�])}|�td��5}|�|dz��tjd��}t|��|_|�|�	����|�|��ddd��n#1swxYwYtjtdd�	��}	|�
|���dgd
|z��|�����#|���wxYwdS)Nrrs)��ar�rp�foor[T)r�ignore_zerosz3ignore_zeros=True should have skipped the %r-blocks)
r�	randbytesr#r��writer$�TarInforSrT�tobufr�r�rH)rr�charrXrWrEs      r
�test_ignore_zerosz CommonReadTest.test_ignore_zeros�sm���a�y�y�"�"�3�'�'��!�	�	�D����7�C�(�(�
!�D��
�
�4�$�;�'�'�'�!�/�%�0�0��"�4�y�y����
�
�7�=�=�?�?�+�+�+��
�
�4� � � �
!�
!�
!�
!�
!�
!�
!�
!�
!�
!�
!����
!�
!�
!�
!��,�w�S�t�D�D�D�C�
��$�$�S�\�\�^�^�e�W�I�������	�	�������	�	��������!	�	s�A=C�C	�C	�4-D7�7E
c�N�dD�] }tjtd��5}tjd��}d|_|�|t
jd����ddd��n#1swxYwYttd��5}|�|��ddd��n#1swxYwYtjt��5}|�	tj
d��5|D]}�	ddd��n#1swxYwYddd��n#1swxYwYtjt��5}|���}|�	tj
d��5|�|t��ddd��n#1swxYwY|�	tj
d��5|�|�����ddd��n#1swxYwYddd��n#1swxYwY��"dS)N)rsiXrpi��w:rrpsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazr+bzunexpected end of data)r$r#r�rrT�addfiler!r��truncaterr�nextr^r_rPrQ)rrTrE�trXs     r
�test_premature_end_of_archivez,CommonReadTest.test_premature_end_of_archive�s���*�	.�	.�D���g�t�,�,�
8���O�E�*�*��������A�r�z�+�6�6�7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8�
�g�u�%�%�
$���
�
�d�#�#�#�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$����
$�
$�
$�
$���g�&�&�
�#��+�+�G�,=�?W�X�X��� ������������������������
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
��g�&�&�
.�#��H�H�J�J���+�+�G�,=�?W�X�X�,�,��K�K��7�+�+�+�,�,�,�,�,�,�,�,�,�,�,����,�,�,�,��+�+�G�,=�?W�X�X�.�.��O�O�A�&�&�+�+�-�-�-�.�.�.�.�.�.�.�.�.�.�.����.�.�.�.�

.�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.����
.�
.�
.�
.��	.�	.s��AA0�0A4	�7A4	�B2�2B6	�9B6	�!D!�7D
�>D!�
D�D!�D�D!�!D%	�(D%	�5H�:F"�H�"F&�&H�)F&�*#H�
(H�5H�H�H�H�	H�H	�H	c��|�tjd��5tjt	jd����5}	ddd��n#1swxYwYddd��dS#1swxYwYdS)Nz%file could not be opened successfullyz
recursion.tar)rr$rr#r�findfilers  r
�test_length_zero_headerz&CommonReadTest.test_length_zero_header�s����
#�
#�G�$5�7^�
_�
_�	�	���g�.��?�?�@�@�
�C��
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s5�'A.�A�
A.�A	�A.�A	�A.�.A2�5A2N)rrrr�r�r�rrrrrr r(rr
r�r�_s�������E�E�E�"
I�
I�
I�
2�
2�
2����"+�+�+�D�D�D����,.�.�.�0����rr�c�Z�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zejeed��d��ejd�����Zejd���Zejd���Zd�Zd�Zd�Zd�Zeje dud��d���Z!d�Z"dS)�MiscReadTestBasec��dSr
r(rs r
�requires_name_attributez(MiscReadTestBase.requires_name_attribute�s���rc���|���t|jd��5}|�|jt
��t
j||j���5}|�|jt
��|�|jtj
�|j����ddd��n#1swxYwYddd��dS#1swxYwYdS�Nrn��fileobjr)r$r#r �assertIsInstancer��strr$rrRr`ra�abspath�rrXrEs   r
�test_no_name_argumentz&MiscReadTestBase.test_no_name_argument�sk���$�$�&�&�&�
�$�,��
%�
%�	G���!�!�$�)�S�1�1�1���d���;�;�;�
G�s��%�%�c�h��4�4�4�� � ���2�7�?�?�4�9�+E�+E�F�F�F�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G����
G�
G�
G�
G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G�	G�	Gs6�<C(�&AC�C(�C	�C(�C	�C(�(C,�/C,c�^�t|jd��5}|���}ddd��n#1swxYwYtj|��}|�tt|d��tj||j	���}|�
|j��dS)Nrnr�r')r#r rQr!r�r
r��getattrr$r�assertIsNoner��rrXrrEs    r
�test_no_name_attributez'MiscReadTestBase.test_no_name_attribute�s���
�$�,��
%�
%�	���9�9�;�;�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��z�$�������.�'�4��@�@�@��l�4�d�i�8�8�8�����#�(�#�#�#�#�#s�7�;�;c�Z�t|jd��5}|���}ddd��n#1swxYwYtj|��}d|_t
j||j���5}|�|j��ddd��dS#1swxYwYdS)Nrnrr')	r#r rQr!r�r�r$rr0r1s    r
�test_empty_name_attributez*MiscReadTestBase.test_empty_name_attribute�s��
�$�,��
%�
%�	���9�9�;�;�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��z�$������	�
�\�$�T�Y�
7�
7�
7�	(�3����c�h�'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�	(�	(s�7�;�;�8B � B$�'B$c�z�tj|jtj��}t|d��5}|�|jt��tj||j���5}|�	|j��ddd��n#1swxYwYddd��dS#1swxYwYdSr&)
r`r#r �O_RDONLYr)r��intr$rr0)r�fdrXrEs    r
�test_int_name_attributez(MiscReadTestBase.test_int_name_attribute�s���W�T�\�2�;�
/�
/��
�"�d�^�^�	,�t��!�!�$�)�S�1�1�1���d���;�;�;�
,�s��!�!�#�(�+�+�+�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s5�<B0�1B�B0�B	�B0�B	� B0�0B4�7B4c��|���tj|j��}t	|d��5}|�|jt��tj||j	���5}|�|jt��|�
|jtj�|j����ddd��n#1swxYwYddd��dS#1swxYwYdSr&)
r$r`�fsencoder r#r)r��bytesr$rrRrar+)rr rXrEs    r
�test_bytes_name_attributez*MiscReadTestBase.test_bytes_name_attributesz���$�$�&�&�&��+�d�l�+�+��
�'�4�
 �
 �	G�D��!�!�$�)�U�3�3�3���d���;�;�;�
G�s��%�%�c�h��6�6�6�� � ���2�7�?�?�4�9�+E�+E�F�F�F�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G����
G�
G�
G�
G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G�	G�	Gs6�<C<�:AC$�C<�$C(	�(C<�+C(	�,C<�<D�Dc	�<�tj|j��}tj||j���5}|�|jt��|�	|jtj�tj
|������ddd��n#1swxYwY|�|��5}|�|jt��|�	|jtj�tj
|������ddd��n#1swxYwYtj�||j���5}|�|jt��|�	|jtj�tj
|������ddd��n#1swxYwY|jdkr�tj|d���5}|�|jt��|�	|jtj�tj
|������ddd��dS#1swxYwYdSdS)Nr�rr[)r�r�r r$r#rr)r�r*rRr`rar+�fspathr&r%r)rr rEs   r
�test_pathlike_namez#MiscReadTestBase.test_pathlike_namesC���,�t�|�,�,��
�\�'��	�
2�
2�
2�	L�c��!�!�#�(�C�0�0�0����S�X�r�w���r�y��7I�7I�'J�'J�K�K�K�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L��\�\�'�
"�
"�	L�c��!�!�#�(�C�0�0�0����S�X�r�w���r�y��7I�7I�'J�'J�K�K�K�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L��_�
!�
!�'��	�
!�
:�
:�	L�c��!�!�#�(�C�0�0�0����S�X�r�w���r�y��7I�7I�'J�'J�K�K�K�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L��;�"������s�3�3�3�
P�s��%�%�c�h��4�4�4�� � ���2�7�?�?�2�9�W�;M�;M�+N�+N�O�O�O�
P�
P�
P�
P�
P�
P�
P�
P�
P�
P�
P�
P����
P�
P�
P�
P�
P�
P��sK�A+B,�,B0�3B0�A+E�E�
E�4A+G+�+G/�2G/�A+J�J�Jc�8�ttd��5	ddd��n#1swxYwY|�td��5|�td��}ddd��n#1swxYwY|�td��5|�td��}ddd��n#1swxYwY|�td��5|�td��}ddd��dS#1swxYwYdS)Nr�z
mode must be �q�rwr)r#r�r�
ValueErrorr&rs  r
�test_illegal_mode_argz&MiscReadTestBase.test_illegal_mode_arg s���
�'�4�
 �
 �	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
#�
#�J��
@�
@�	-�	-��,�,�w��,�,�C�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�
�
#�
#�J��
@�
@�	.�	.��,�,�w��-�-�C�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�
�
#�
#�J��
@�
@�	,�	,��,�,�w��+�+�C�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,sB�$�(�(�
A2�2A6�9A6�C�C�C�&D�D�Dc��tj|j|j���}	|���|���}|j}|j}|�|��5}|���}ddd��n#1swxYwY|�	��n#|�	��wxYw|�|j��5}|�
|��|�|jd|���5}|���}|�|j|��|���|�|�|�����|d��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�r?)rr(zseek back did not work)
r$r#r rrr��offsetrPrQrHrtrRr�)rrErr�rG�frrXs        r
�test_fileobj_with_offsetz)MiscReadTestBase.test_fileobj_with_offset*sB���l�4�<�d�i�8�8�8��	��H�H�J�J�J����
�
�A��6�D��X�F�����#�#�
 �q��v�v�x�x��
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 ����
 �
 �
 �
 �
�I�I�K�K�K�K��C�I�I�K�K�K�K�����Y�Y�t�|�
$�
$�	2���I�I�f�������$�,�T�4��@�@�
2�C��H�H�J�J��� � ����.�.�.���� � � �� � �����!3�!3�!8�!8�!:�!:�D�0�2�2�2�

2�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2����
2�
2�
2�
2�		2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2sg�AB.�-B�B.�B�B.�B�B.�.C�!3F8�BF �F8� F$	�$F8�'F$	�(F8�8F<�?F<c�2�|�tjtjt|j��ttd��5}|�tjtj||j���ddd��dS#1swxYwYdSr&)r
r$rr#r rr�s  r
�test_fail_compzMiscReadTestBase.test_fail_compFs������'�+�W�\�7�D�I�N�N�N�
�'�4�
 �
 �	<�D����g�/���&*���
�
<�
<�
<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�	<�	<s�3B�B�Bc��|j�d��}|�|jtjd��dS)Nzmisc/dirtype-old-v7zv7 dirtype failed)rErOrR�typer$�DIRTYPE�rrWs  r
�test_v7_dirtypez MiscReadTestBase.test_v7_dirtypeMsG���(�$�$�%:�;�;�������w��#�	%�	%�	%�	%�	%rc��	|j�d��dS#t$r|�d��YdSwxYw)Nzmisc/regtype-xstarz3failed to find misc/regtype-xstar (mangled prefix?))rErO�KeyErrorr�rs r
�test_xstar_typez MiscReadTestBase.test_xstar_typeUs`��	M��H���3�4�4�4�4�4���	M�	M�	M��I�I�K�L�L�L�L�L�L�	M���s��A�Ac��|jD]r}|�t|j��dd|jz��|j�d��s�N|�|jdd|jz���sdS)N鏽>zwrong mtime for %szustar/r$zwrong uname for %s)rErRr7�mtimer��
startswith�unamerOs  r
�test_check_membersz#MiscReadTestBase.test_check_members^s����x�	9�	9�G����S���/�/��(�7�<�7�
9�
9�
9��<�*�*�8�4�4�
�����W�]�I�(�7�<�7�
9�
9�
9�
9�	9�	9rc�x�|�|j���djdd��dS)N���zmisc/eofzcould not find all members)rRrEr�r�rs r
�test_find_membersz"MiscReadTestBase.test_find_membersgsA�������,�,�.�.�r�2�7��,�	.�	.�	.�	.�	.r�link�Missing hardlink implementationc��tjtdd���5}|�dt��|�tjtj	�
td����|�dt��|�tjtj	�
td����ttj	�
td��d��5}|���}ddd��n#1swxYwY|�t|��t��|�dt��|�tjtj	�
td����ttj	�
td��d��5}|���}ddd��n#1swxYwY|�t|��t��ddd��dS#1swxYwYdS)NrorA)�
errorlevelrCrMr�rnr�)r$r#r r^r_�
addCleanupr�unlinkr`rarbrQrRrrU)rrErHrs    r
�test_extract_hardlinkz&MiscReadTestBase.test_extract_hardlinkksc��
�\�'�a�+�
F�
F�
F�	>�#��K�K���1�1�1��O�O�I�,�b�g�l�l�7�O�.T�.T�U�U�U��K�K���1�1�1��O�O�I�,�b�g�l�l�7�O�.T�.T�U�U�U��b�g�l�l�7�O�<�<�d�C�C�
 �q��v�v�x�x��
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 ����
 �
 �
 �
 ����Y�t�_�_�n�=�=�=��K�K���1�1�1��O�O�I�,�b�g�l�l�7�O�.T�.T�U�U�U��b�g�l�l�7�O�<�<�d�C�C�
 �q��v�v�x�x��
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 ����
 �
 �
 �
 ����Y�t�_�_�n�=�=�=�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�	>�	>s[�C0I�
D.�"I�.D2	�2I�5D2	�6B<I�2H�I�H	�I�H	�+I�I�Ic�\�tjtd���}tj�td��}tj|��	d�|D��}|�||��|D]�}tj�||j	��}tjdkr8|�|j
dztj|��jdz��d�}tj�|��}d�||j��||��|��}|�|j||����	|���t)j|��dS#|���t)j|��wxYw)	NrA�rC�
extractallc�:�g|]}|����|��Sr(��isdir��.0rs  r
�
<listcomp>z4MiscReadTestBase.test_extractall.<locals>.<listcomp>��%��7�7�7��Q�W�W�Y�Y�7�1�7�7�7r�win32�c��t|t��r(d�||�����Sd�|��S)Nz{} ({})z
{!r} (int))�
isinstance�floatr��hex)rVs r
�format_mtimez6MiscReadTestBase.test_extractall.<locals>.format_mtime�sF��!�%��/�/�:�(�/�/��u�y�y�{�{�C�C�C�+�2�2�5�9�9�9rz,tar mtime {0} != file time {1} of path {2!a})r$r#r r`rarbr_r�rfr�r��platformrRr�stat�st_mode�getmtimer�rVrHr�rmtree)	rrE�DIR�directoriesrWrart�
file_mtime�errmsgs	         r
�test_extractallz MiscReadTestBase.test_extractall�s����l�7�[�9�9�9���g�l�l�7�L�1�1��
���
�
�
�	"�7�7�c�7�7�7�K��N�N�3��,�,�,�&�
D�
D���w�|�|�C���6�6���<�7�*�*��$�$�W�\�E�%9�%'�W�T�]�]�%:�U�%B�D�D�D�:�:�:�
 �W�-�-�d�3�3�
�G�N�N� �L���/�/� �L��,�,������ � ���
�F�C�C�C�C�!
D�$
�I�I�K�K�K���S�!�!�!�!�!��
�I�I�K�K�K���S�!�!�!�!���s
�DF�*F+c���d}tj�td��}tj|��	tjtd���5}|�|��}|�	||���tj�||��}|�
tj�|��|j��tjdkr0|�
tj|��jdzd��ddd��n#1swxYwYt#j|��dS#t#j|��wxYw)	N�
ustar/dirtype�
extractdirrAre�rarnroi�)r`rarbr_r�r$r#r rOr^rRrxrVr�rurvrwrry�r�dirtyperzrErW�	extracteds      r
�test_extract_directoryz'MiscReadTestBase.test_extract_directory�sn��!���g�l�l�7�L�1�1��
���
�
�
�		"���g��<�<�<�
P���-�-��0�0�����G�#��.�.�.��G�L�L��g�6�6�	�� � ���!1�!1�)�!<�!<�g�m�L�L�L��<�7�*�*��$�$�R�W�Y�%7�%7�%?�%�%G��O�O�O�

P�
P�
P�
P�
P�
P�
P�
P�
P�
P�
P����
P�
P�
P�
P�
��S�!�!�!�!�!��I��S�!�!�!�!���s0�E
�CD)�E
�)D-�-E
�0D-�1E
�
E c���tjt��dz}tj|��5tjtd���5}d�|D��}|�||��|D]D}||j	z}|�
tj�
|��|j���E	ddd��n#1swxYwYddd��dS#1swxYwYdS)NrfrArec�:�g|]}|����|��Sr(rhrjs  r
rlzBMiscReadTestBase.test_extractall_pathlike_name.<locals>.<listcomp>�rmr)r�r�r_r�temp_dirr$r#r rfr�rRr`rarxrV)rrzrEr{rWras      r
�test_extractall_pathlike_namez.MiscReadTestBase.test_extractall_pathlike_name�s����l�7�#�#�l�2��
�
��
$�
$�	H�	H�
�\�'�K�
8�
8�
8�	H�<?�7�7�c�7�7�7�K��N�N�3��,�,�,�&�
H�
H���W�\�)��� � ���!1�!1�$�!7�!7���G�G�G�G�
H�		H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H����	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H����	H�	H�	H�	H�	H�	Hs6�C�
A*C�8C�C	�C�C	�C�C �#C c���d}tjt��dz}tj|��5tjtd���5}|�|��}|�	||���||z}|�
tj�
|��|j��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�rfrArer�)r�r�r_rr�r$r#r rOr^rRr`rarxrVr�s      r
�test_extract_pathlike_namez+MiscReadTestBase.test_extract_pathlike_name�st��!���l�7�#�#�l�2��
�
��
$�
$�	I�	I�
�\�'�K�
8�
8�
8�	I�<?��m�m�G�,�,�G��K�K��c�K�*�*�*��g�
�I����R�W�-�-�i�8�8�'�-�H�H�H�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I����	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I����	I�	I�	I�	I�	I�	Is6�C�A*C�9C�C		�	C�C		�
C�C!�$C!c�.�tj�td��}t	|d��5}|�d��ddd��n#1swxYwY	t�tj	��}	|�
|��|�d��n4#tj$r"|�
|jj��YnwxYwt!j|��dS#t!j|��wxYw)N�emptyr�rzReadError not raised)r`rarbr_r#r�object�__new__r$r%�__init__r�rr�r(�closedrrb)rr�rXrEs    r
�test_init_close_fobjz%MiscReadTestBase.test_init_close_fobj�s>������W�g�.�.��
�%��
�
�	�$��J�J�s�O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�		$��.�.���1�1�C�
2����U�#�#�#��	�	�0�1�1�1�1���$�
4�
4�
4������ 2�3�3�3�3�3�
4����

��U�#�#�#�#�#��I��U�#�#�#�#���sA�A�A�A�$$C>�	B4�C>�4.C%�"C>�$C%�%C>�>Dc�L�tj|j��5}t||��D]_\}}|�|j|j��|�|���|������`	ddd��dS#1swxYwYdSr
)r$r#r �ziprRrG�get_info)rrE�m1�m2s    r
�test_parallel_iterationz(MiscReadTestBase.test_parallel_iteration�s����\�$�,�
'�
'�	?�3��c�3�-�-�
?�
?���B�� � ���B�I�6�6�6�� � ���������
�
�>�>�>�>�
?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?s�A1B�B� BNz
requires zlibc�8�tj�d��5}tj|_|�tj��5tj	|j
��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nztarfile.TarInfo.fromtarfile)r��mock�patch�zlib�error�side_effectr
r$rr#r )rr�s  r
�test_zlib_error_does_not_leakz.MiscReadTestBase.test_zlib_error_does_not_leak�s���]�
 �
 �!>�
?�
?�	+�4�#�z�D���"�"�7�#4�5�5�
+�
+���T�\�*�*�*�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�	+�	+s5�1B�A7�+B�7A;	�;B�>A;	�?B�B�Bc�.�tj��}tj|d���}|���|�d��tj|d���5}|�|���d��ddd��n#1swxYwY|�d��tj|d���5}|�|���d��ddd��dS#1swxYwYdS)Nr�r'r�r|r[)r!r�r$r#rHrtrRr)rr8�tfs   r
�test_next_on_empty_tarfilez+MiscReadTestBase.test_next_on_empty_tarfile�sg��
�Z�\�\��
�\�"�3�
/�
/�
/��
���
�
�
�
����
�
�
�
�\�"�4�
0�
0�
0�	.�B����R�W�W�Y�Y��-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�	����
�
�
�
�\�"�3�
/�
/�
/�	.�2����R�W�W�Y�Y��-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�	.�	.s$�))B�B"�%B"�)D
�
D�D)#rrrr$r-r2r4r9r=r@rErIrKrPrSrYr\r�r�r�r`r�skip_unless_symlinkrc�skip_unless_working_chmodr~r�r�r�r�r��skipIfr�r�r�r(rr
r"r"�s�������
�
�
�G�G�G�$�$�$�(�(�(�,�,�,�G�G�G�P�P�P� ,�,�,�2�2�2�8<�<�<�%�%�%�M�M�M�9�9�9�.�.�.��X�����V�,�,�:�<�<��"�>�>�#�"�<�<�>�$�(�"�"�)�(�"�<�(�
"�
"�)�(�
"�H�H�H�I�I�I�$�$�$�&?�?�?��X�_�T�T�\�?�3�3�+�+�4�3�+�.�.�.�.�.rr"c��eZdZdZdS)�MiscReadTestN)rrrrKr(rr
r�r��s�������N�N�Nrr�c��eZdZdS)�GzipMiscReadTestNr�r(rr
r�r��r�rr�c��eZdZd�ZdS)�Bz2MiscReadTestc�0�|�d��dS)NzBZ2File have no name attribute��skipTestrs r
r$z'Bz2MiscReadTest.requires_name_attribute�s���
�
�6�7�7�7�7�7rN�rrrr$r(rr
r�r��s#������8�8�8�8�8rr�c��eZdZd�ZdS)�LzmaMiscReadTestc�0�|�d��dS)NzLZMAFile have no name attributer�rs r
r$z(LzmaMiscReadTest.requires_name_attribute�s���
�
�7�8�8�8�8�8rNr�r(rr
r�r��s#������9�9�9�9�9rr�c�*�eZdZdZd�Zd�Zd�Zd�ZdS)�StreamReadTestr�c�6�|jD]�}|���s�|j�|��5}		|�d��}n*#tj$r|�d��YnwxYw|sn�E	ddd��n#1swxYwY��dS)NTrsz6simple read-through using TarFile.extractfile() failed)rE�isregrPrQr$�StreamErrorr�)rrWrX�bufs    r
�test_read_throughz StreamReadTest.test_read_throughs���x�	�	�G��=�=�?�?�
����%�%�g�.�.�
�$��B�"�i�i��n�n����"�.�B�B�B��	�	�#A�B�B�B�B�B�B���������
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��	�	s4�B
�A�B
�$A9�6B
�8A9�9B
�
B	�B	c�h�|j���}|j�|��5}|���}ddd��n#1swxYwY|�t|��|jd��|�t|��td��dS)NrN)	rErrPrQrRrSrTrrUrVs    r
rYz(StreamReadTest.test_fileobj_regular_files����(�-�-�/�/��
�X�
!�
!�'�
*�
*�	�d��9�9�;�;�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�����T���G�L�0�	2�	2�	2�����4���.�0�	2�	2�	2�	2�	2s�A�A�Ac���|j���}|j�|d��5}|�tj|j��ddd��dS#1swxYwYdS)Nr)rEr�rPr
r$r�rQ)r�tarinfosrHs   r
�test_provoke_stream_errorz(StreamReadTest.test_provoke_stream_error s����8�&�&�(�(��
�X�
!�
!�(�1�+�
.�
.�	;�!����g�1�1�6�:�:�:�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	;�	;s�&A-�-A1�4A1c��tjtd���}	|j}	|���}|���}|��n|�|d��|���s|���rM|�tj	��5|�
|��ddd��n#1swxYwY��|�
|��}|�
|��}|���|�|d��|�|���|���d����7	|�
��dS#|�
��wxYw)NrAreTzstream.next() failed.zstream.extractfile() failedzstream extraction failed)r$r#r rEr�assertIsNotNone�islnk�issymr
r�rPrRrQrH)r�tar1�tar2�t1�t2�v1�v2s       r
�test_compare_membersz#StreamReadTest.test_compare_members%s����|�G�k�:�:�:��	��8�D�
4��Y�Y�[�[���Y�Y�[�[���:���$�$�R�)@�A�A�A��8�8�:�:���������*�*�7�+>�?�?�-�-��(�(��,�,�,�-�-�-�-�-�-�-�-�-�-�-����-�-�-�-���%�%�b�)�)���%�%�b�)�)���:���$�$�R�)F�G�G�G�� � ������B�G�G�I�I�2�4�4�4�#
4�� 
�J�J�L�L�L�L�L��D�J�J�L�L�L�L���s1�BE3�.C�E3�C�E3�C�BE3�3F	N)rrrrr�rYr�r�r(rr
r�r�sU�������F���� 2�2�2�;�;�;�
����rr�c��eZdZdS)�GzipStreamReadTestNr�r(rr
r�r�@r�rr�c��eZdZdS)�Bz2StreamReadTestNr�r(rr
r�r�Cr�rr�c��eZdZdS)�LzmaStreamReadTestNr�r(rr
r�r�Fr�rr�c�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�DetectReadTestc��	tj||��}|���dS#tj$r}|���Yd}~dSd}~wwxYwr
)r$r#rHrr�)rr�rrE�es     r
�_testfunc_filezDetectReadTest._testfunc_fileKsh��	��,�t�T�*�*�C�
�I�I�K�K�K�K�K��� �	�	�	��I�I�K�K�K�K�K�K�K�K�K�����	���s�-�A�A�Ac��	t|d��5}tj|||���}ddd��n#1swxYwY|���dS#tj$r}|���Yd}~dSd}~wwxYw)Nrn�r()r#r$rHrr�)rr�rrHrEr�s      r
�_testfunc_fileobjz DetectReadTest._testfunc_fileobjSs���	��d�D�!�!�
:�Q��l�4��q�9�9�9��
:�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:����
:�
:�
:�
:�

�I�I�K�K�K�K�K��� �	�	�	��I�I�K�K�K�K�K�K�K�K�K�����	���s2�A�6�A�:�A�:�A�B�&B�Bc��|j�rX|�tj��5tjt
d|jz���ddd��n#1swxYwY|�tj��5tjt
d|jz���ddd��n#1swxYwY|�tj��5tj|jd���ddd��n#1swxYwY|�tj��5tj|jd���ddd��n#1swxYwY||jd��||jd|jz��||jd��||jd|jz��||jd��dS)Nr?r�r�r[zr:*�r|*)rr
r$rr#r )r�testfuncs  r
�_test_modeszDetectReadTest._test_modes\s����;�	6��"�"�7�#4�5�5�
?�
?���W�4�$�+�+=�>�>�>�>�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?����
?�
?�
?�
?��"�"�7�#4�5�5�
?�
?���W�4�$�+�+=�>�>�>�>�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?����
?�
?�
?�
?��"�"�7�#4�5�5�
6�
6���T�\��5�5�5�5�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6��"�"�7�#4�5�5�
6�
6���T�\��5�5�5�5�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6�����s�#�#�#�����t�d�k�1�2�2�2�����u�%�%�%�����t�d�k�1�2�2�2�����u�%�%�%�%�%sG�$A�A�A�$B2�2B6�9B6�D�D�D�.E�E�Ec�:�|�|j��dSr
)r�r�rs r
�test_detect_filezDetectReadTest.test_detect_filels������,�-�-�-�-�-rc�:�|�|j��dSr
)r�r�rs r
�test_detect_fileobjz"DetectReadTest.test_detect_fileobjos������/�0�0�0�0�0rN)rrrr�r�r�r�r�r(rr
r�r�Js_������������&�&�&� .�.�.�1�1�1�1�1rr�c��eZdZdS)�GzipDetectReadTestNr�r(rr
r�r�rr�rr�c��eZdZd�ZdS)�Bz2DetectReadTestc�P�ttd��5}|���}ddd��n#1swxYwYtjt
dd���5}|�|��ddd��n#1swxYwY|�t
d��dS)Nrnr�ro��
compresslevelr�)r#r rQr2r4r�rr�r�s   r
�test_detect_stream_bz2z(Bz2DetectReadTest.test_detect_stream_bz2vs��
�'�4�
 �
 �	�D��9�9�;�;�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��[��$�a�
8�
8�
8�	�D��J�J�t����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
���G�U�+�+�+�+�+s�7�;�;�B�B�BN)rrrr�r(rr
r�r�us#������,�,�,�,�,rr�c��eZdZdS)�LzmaDetectReadTestNr�r(rr
r�r��r�rr�c��eZdZdd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�MemberReadTestNc	���|�p|j�|��5}|�t|�����|d|jz��ddd��n#1swxYwYd|d<d|d<d|d<d|jvr
d	|d
<d	|d<|���D]5\}}|�t||��|d|�d
|j�����6dS)N�wrong sha256sum for %srUrV��r�r~r�zold-v7r$rX�gnamezwrong value in z
 field of )rErPrRrrQr��itemsr/)rrW�chksum�kwargsrH�k�vs       r
�_test_memberzMemberReadTest._test_member�s_������%�%�g�.�.�
A�!�� � ��1�6�6�8�8�!4�!4�f�0�7�<�?�A�A�A�
A�
A�
A�
A�
A�
A�
A�
A�
A�
A�
A����
A�
A�
A�
A�'��w����u�
���u�
��7�<�'�'�'�F�7�O�'�F�7�O��L�L�N�N�	I�	I�D�A�q����W�W�a�0�0�!�!�78�q�q�'�,�,�G�
I�
I�
I�
I�	I�	Is�?A(�(A,�/A,c�t�|j�d��}|�|dt���dS)NrM�c�rTr��rErOr�rUrOs  r
�test_find_regtypez MemberReadTest.test_find_regtype�s8���(�$�$�_�5�5�����'��^��D�D�D�D�Drc�t�|j�d��}|�|dt���dS)Nzustar/conttyper�r�r�rOs  r
�test_find_conttypez!MemberReadTest.test_find_conttype�s9���(�$�$�%5�6�6�����'��^��D�D�D�D�Drc�h�|j�d��}|�|d���dS)Nr�r�rT�rErOr�rOs  r
�test_find_dirtypez MemberReadTest.test_find_dirtype�s6���(�$�$�_�5�5�����'���*�*�*�*�*rc�h�|j�d��}|�|d���dS)Nzustar/dirtype-with-size�r�rrOs  r
�test_find_dirtype_with_sizez*MemberReadTest.test_find_dirtype_with_size�s7���(�$�$�%>�?�?�����'���,�,�,�,�,rc�j�|j�d��}|�|dd���dS)Nr�rrM�rT�linknamerrOs  r
�test_find_lnktypez MemberReadTest.test_find_lnktype�s8���(�$�$�_�5�5�����'��O��D�D�D�D�Drc�j�|j�d��}|�|dd���dS)Nr�rr�rrrOs  r
�test_find_symtypez MemberReadTest.test_find_symtype�s8���(�$�$�_�5�5�����'��I��>�>�>�>�>rc�l�|j�d��}|�|ddd���dS)Nz
ustar/blktyper��rT�devmajor�devminorrrOs  r
�test_find_blktypez MemberReadTest.test_find_blktype��:���(�$�$�_�5�5�����'��A���B�B�B�B�Brc�l�|j�d��}|�|ddd���dS)Nz
ustar/chrtyperrorr
rrOs  r
�test_find_chrtypez MemberReadTest.test_find_chrtype�rrc�h�|j�d��}|�|d���dS)Nzustar/fifotyperr�rrOs  r
�test_find_fifotypez!MemberReadTest.test_find_fifotype�s7���(�$�$�%5�6�6�����'���*�*�*�*�*rc�t�|j�d��}|�|dt���dS)Nzustar/sparse�Pr��rErOr��
sha256_sparserOs  r
�test_find_sparsezMemberReadTest.test_find_sparse�s8���(�$�$�^�4�4�����'��m��D�D�D�D�Drc�t�|j�d��}|�|dt���dS)N�
gnu/sparserr�rrOs  r
�test_find_gnusparsez"MemberReadTest.test_find_gnusparse�s8���(�$�$�\�2�2�����'��m��D�D�D�D�Drc�t�|j�d��}|�|dt���dS)N�gnu/sparse-0.0rr�rrOs  r
�test_find_gnusparse_00z%MemberReadTest.test_find_gnusparse_00��9���(�$�$�%5�6�6�����'��m��D�D�D�D�Drc�t�|j�d��}|�|dt���dS)N�gnu/sparse-0.1rr�rrOs  r
�test_find_gnusparse_01z%MemberReadTest.test_find_gnusparse_01�r!rc�t�|j�d��}|�|dt���dS)N�gnu/sparse-1.0rr�rrOs  r
�test_find_gnusparse_10z%MemberReadTest.test_find_gnusparse_10�r!rc�t�|j�d��}|�|dt���dS)Nuustar/umlauts-ÄÖÜäöüßr�r�r�rOs  r
�test_find_umlautsz MemberReadTest.test_find_umlauts�sB���(�$�$�&D�E�E�����'��^��D�D�D�D�Drc�d�d}|�||j�����dS)Naustar/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/1234567/longname)r�rEr�)rr�s  r
�test_find_ustar_longnamez'MemberReadTest.test_find_ustar_longname�s/��<���
�
�d�D�H�-�-�/�/�0�0�0�0�0rc�t�|j�d��}|�|dt���dS)Nzmisc/regtype-old-v7r�r�r�rOs  r
�test_find_regtype_oldv7z&MemberReadTest.test_find_regtype_oldv7�s9���(�$�$�%:�;�;�����'��^��D�D�D�D�Drc���|j���tj|j|jd���|_|j�d��}|�|dt���dS)NrArBupax/umlauts-ÄÖÜäöüßr�r�)	rErHr$r#r rrOr�rUrOs  r
�test_find_pax_umlautsz$MemberReadTest.test_find_pax_umlauts�sw����������<���4�9�)4�6�6�6����(�$�$�&D�E�E�����'��^��D�D�D�D�Drr
)rrrr�r�r�rrrr
rrrrrr r$r'r)r+r-r/r(rr
r�r��sc������I�I�I�I�"E�E�E�E�E�E�+�+�+�-�-�-�E�E�E�?�?�?�C�C�C�C�C�C�+�+�+�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�E�
1�1�1�E�E�E�E�E�E�E�Err�c�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�LongnameTestc���|jdzdzdz}	|j�|��}n%#t$r|�d��YnwxYw|�|jtjd��dS)Nr���123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/�longnamezlongname not foundzread longname as dirtype)	�subdirrErOrRr��assertNotEqualrMr$rN)rr4rWs   r
�test_read_longnamezLongnameTest.test_read_longname�s����;��$�|�3�j�@��	,��h�(�(��2�2�G�G���	,�	,�	,��I�I�*�+�+�+�+�+�	,�������G�L�'�/�*�	,�	,�	,�	,�	,s�-�A�Ac��|jdzdzdz}|jdzdzdz}	|j�|��}n%#t$r|�d��YnwxYw|�|j|d��dS)Nr�r3r4�longlinkzlonglink not foundzlinkname wrong)r5rErOrRr�rRr)rr4r9rWs    r
�test_read_longlinkzLongnameTest.test_read_longlink�s����;��$�|�3�j�@���;��$�|�3�j�@��	,��h�(�(��2�2�G�G���	,�	,�	,��I�I�*�+�+�+�+�+�	,��������)�8�5E�F�F�F�F�Fs�=�A�Ac��|jdzdzdz}|j�|��}|j}|jj�|��t
j|jj�d����}|�	tj��5tjd|���ddd��dS#1swxYwYdS)Nr�r3r4izfoo.tar)r�r()
r5rErOrGr(rtr!r�rQr
r$rr#)rr4rWrGrXs     r
�test_truncated_longnamez$LongnameTest.test_truncated_longname�s����;��$�|�3�j�@���(�$�$�X�.�.����������f�%�%�%��z�$�(�*�/�/��8�8�9�9��
�
�
�w�0�
1�
1�	7�	7��L�i��6�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�!C�C	�C	c��|jdzdzdz}|j�|��j}t	t
d��5}|�|��tj�	|�
d��dd��}|�|j|j
��ddd��dS#1swxYwYdS)Nr�r3r4rnrsrA�strict)r5rErOrGr#r rtr$r�frombufrQrRrM�longnametype)rr4rGrXrWs     r
�test_header_offsetzLongnameTest.test_header_offsets����;��$�|�3�j�@����#�#�H�-�-�4��
�'�4�
 �
 �	>�D��I�I�f�����o�-�-�d�i�i��n�n�.9�8�E�E�G����W�\�4�+<�=�=�=�		>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�	>�	>s�A*B<�<C�Cc	��d}tj��5tjtd��5}|j|_	t
j|��|�|��t
j	|�
d����n,#t
j	|�
d����wxYw	ddd��n#1swxYwYtjt��5}|�|�|����|�|�|�
d������ddd��n#1swxYwYddd��dS#1swxYwYdS)Nzfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/r�r�)rr�r$r#r�r�r`r�r�r��rstripr�rO�removesuffix)r�longdirrEs   r
�test_longname_directoryz$LongnameTest.test_longname_directorys(��#��
�
�
!�
!�
	O�
	O���g�s�+�+�
2�s�!�[��
�2��H�W�%�%�%��G�G�G�$�$�$��H�W�^�^�C�0�0�1�1�1�1��B�H�W�^�^�C�0�0�1�1�1�1����1�

2�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2����
2�
2�
2�
2���g�&�&�
O�#��$�$�S�]�]�7�%;�%;�<�<�<��$�$�S�]�]�7�3G�3G��3L�3L�%M�%M�N�N�N�
O�
O�
O�
O�
O�
O�
O�
O�
O�
O�
O����
O�
O�
O�
O�
	O�
	O�
	O�
	O�
	O�
	O�
	O�
	O�
	O�
	O�
	O�
	O����
	O�
	O�
	O�
	O�
	O�
	Osp�E5�
C	�)B�((C	�)B9�9C	�=E5�	C
	�
E5�C
	�E5�-A$E�E5�E!	�!E5�$E!	�%E5�5E9�<E9N)rrrr7r:r<rArFr(rr
r1r1�sg������,�,�,�G�G�G�7�7�7�	>�	>�	>�
O�
O�
O�
O�
Orr1c�b�eZdZdZejZejZd�Z	d�Z
d�Zd�Zd�Z
ed���ZdS)	�GNUReadTest�gnuc��|j�|t��tj�t|��}t
|d��5}|���}ddd��n#1swxYwY|�t|��td|z��|���r9tj|��}|�
|jdz|j��dSdS)Nrnr�rs)rEr^r_r`rarbr#rQrRrr�_fs_supports_holesrv�
assertLess�	st_blocks�st_size)rr��filenamerXrrxs      r
�_test_sparse_filezGNUReadTest._test_sparse_file.s�������w�'�'�'��7�<�<���.�.��
�(�D�
!�
!�	�T��9�9�;�;�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�����4���-�(�4�/�	1�	1�	1��"�"�$�$�	:����!�!�A��O�O�A�K�#�-�q�y�9�9�9�9�9�	:�	:s�A7�7A;�>A;c�0�|�d��dS)Nr�rPrs r
�test_sparse_file_oldz GNUReadTest.test_sparse_file_old:s�����|�,�,�,�,�,rc�0�|�d��dS)NrrRrs r
�test_sparse_file_00zGNUReadTest.test_sparse_file_00=������/�0�0�0�0�0rc�0�|�d��dS)Nr#rRrs r
�test_sparse_file_01zGNUReadTest.test_sparse_file_01@rVrc�0�|�d��dS)Nr&rRrs r
�test_sparse_file_10zGNUReadTest.test_sparse_file_10CrVrc���tj�d��r�tj�td��}t|d��5}|�d��|�	d��|�
��ddd��n#1swxYwYtj|��}tj
|��|jdz|jkSdS)N�linuxzsparse-testr�isxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrsF)r�rurWr`rarbr_r#rtrrrvrrbrMrN)r�rXrxs   r
rKzGNUReadTest._fs_supports_holesFs����<�"�"�7�+�+�	��7�<�<���7�7�D��d�D�!�!�
 �T��	�	�$�����
�
�;�'�'�'��
�
����	
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 ����
 �
 �
 �
 �
���
�
�A���T�"�"�"��K�#�%��	�1�2��5s�?B � B$�'B$N)rrrr5r$�GNUTYPE_LONGNAMEr@�
GNU_FORMATr�rPrSrUrXrZ�staticmethodrKr(rr
rHrH!s�������
�F��+�L�
�
�F�
:�
:�
:�-�-�-�1�1�1�1�1�1�1�1�1�����\���rrHc�:�eZdZdZejZejZd�Z	d�Z
dS)�PaxReadTest�paxc�n�tjtd���}	|�d��}|�|jd��|�|jd��|�|j�d��d��|�d��}|�|jd	��|�|jd��|�|j�d��d��|�d
��}|�|jd��|�|jd��|�|j�d��d��|�	��dS#|�	��wxYw)NrArezpax/regtype1rr�zVENDOR.umlautsuÄÖÜäöüßzpax/regtype2rzpax/regtype3r$)
r$r#r rOrRrXr��pax_headers�getrH�rrErWs   r
�test_pax_global_headersz#PaxReadTest.test_pax_global_headerscs����l�7�[�9�9�9��	��m�m�N�3�3�G����W�]�E�2�2�2����W�]�E�2�2�2����W�0�4�4�5E�F�F�;�
=�
=�
=��m�m�N�3�3�G����W�]�B�/�/�/����W�]�E�2�2�2����W�0�4�4�5E�F�F�;�
=�
=�
=��m�m�N�3�3�G����W�]�I�6�6�6����W�]�I�6�6�6����W�0�4�4�5E�F�F�;�
=�
=�
=�
�I�I�K�K�K�K�K��C�I�I�K�K�K�K���s�E+F�F4c��tjtd���}	|�d��}|�|jd��|�|jd��|�|jd��|�|jd��|�t|j��t��|�t|jd��d��|�t|jd��d��|���dS#|���wxYw)	NrArezpax/regtype4r��{g��^�A�atime�ctime)
r$r#r rOrRrTr�r�rVrMrrrdrHrfs   r
�test_pax_number_fieldsz"PaxReadTest.test_pax_number_fieldszs���l�7�[�9�9�9��
	��m�m�N�3�3�G����W�\�4�0�0�0����W�[�#�.�.�.����W�[�#�.�.�.����W�]�L�9�9�9����T�'�-�0�0�%�8�8�8����U�7�#6�w�#?�@�@�,�O�O�O����U�7�#6�w�#?�@�@�,�O�O�O��I�I�K�K�K�K�K��C�I�I�K�K�K�K���s�D
D=�=EN)rrrr5r$�XHDTYPEr@�
PAX_FORMATr�rgrlr(rr
rara]sF������
�F��?�L�
�
�F����.
�
�
�
�
rrac��eZdZd�Zd�ZdS)�
WriteTestBasec���tj��}tj||j���5}|�tjd����ddd��n#1swxYwY|�|jd��|�	��}~tj��|�|j��|�||�	����dS)Nr'rz#external fileobjs must never closed)
r!r�r$r#rrrr�r�r�r�
gc_collectrR)rrXrErs    r
�test_fileobj_no_closez#WriteTestBase.test_fileobj_no_close�s���z�|�|��
�\�$�T�Y�
7�
7�
7�	0�3��K�K����.�.�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0������&K�L�L�L��}�}���������������%�%�%�����t�}�}���/�/�/�/�/s�(A#�#A'�*A'c�$�tjt|j��5}tjd��}tjtjz
|_|�|tj
d|jz����ddd��n#1swxYwY|�td��5}|�t|�
����tjdz��ddd��dS#1swxYwYdS)Nrrrnrr)r$r#r�rr�
RECORDSIZE�	BLOCKSIZErTrr!r�rRrSrQ)rrErrXs    r
�test_eof_markerzWriteTestBase.test_eof_marker�sg��
�\�'�4�9�
-�
-�	6�����&�&�A��'�'�*;�;�A�F��K�K��2�:�d�Q�V�m�4�4�5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�
�Y�Y�w��
%�
%�	G�����S������-�-�w�/A�A�/E�F�F�F�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G�	G�	Gs%�A#B�B�B�5AD�D	�D	N)rrrrsrwr(rr
rprp�s7������
0�
0�
0�G�G�G�G�Grrpc���eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	e
jee
d��d	��d
���Zejd���Zd�Zd
�Zdd�Zejd���Zd�Zd�Zd�Zd�ZdS)�	WriteTestrc���d}tjt|j��}	tj|��}|�|��|���n#|���wxYwtjt��}	|�|���d|d��|���dS#|���wxYw)N�d0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789rz!failed to store 100 char filename)	r$r#r�rrrrHrRr�)rr�rErs    r
�test_100_char_namezWriteTest.test_100_char_name�s���
!���l�7�D�I�.�.��	����%�%�A��K�K��N�N�N��I�I�K�K�K�K��C�I�I�K�K�K�K�����l�7�#�#��	����S�\�\�^�^�A�.��7�
9�
9�
9�
�I�I�K�K�K�K�K��C�I�I�K�K�K�K���s�)A!�!A7�/C�C/c��tjt|j��}	tj�td��}t|d��5}|�d��ddd��n#1swxYwY|�	|��|�
��n#|�
��wxYw|�tj�t��dd��dS)N�filer��aaarztarfile is empty)
r$r#r�rr`rarbr_rr�rH�
assertGreater�getsize)rrErarXs    r
�
test_tar_sizezWriteTest.test_tar_size�s
���l�7�D�I�.�.��	��7�<�<���0�0�D��d�D�!�!�
#�T��
�
�6�"�"�"�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#����
#�
#�
#�
#��G�G�D�M�M�M��I�I�K�K�K�K��C�I�I�K�K�K�K�������2�7�?�?�7�3�3�Q�"�	$�	$�	$�	$�	$s/�5B-�A8�,B-�8A<�<B-�?A<�B-�-Cc�v�tjt|j��}	tj�td��}t|d��5	ddd��n#1swxYwY|�|��}|�	|j
d��t|d��5}|�d��ddd��n#1swxYwY|�|��}|�	|j
d��|���dS#|���wxYw)Nr~r�rrr)
r$r#r�rr`rarbr_�
gettarinforRrTrrH)rrErarWrXs     r
�test_file_sizezWriteTest.test_file_size�s����l�7�D�I�.�.��	��7�<�<���0�0�D��d�D�!�!�
�
��
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��n�n�T�*�*�G����W�\�1�-�-�-��d�D�!�!�
#�T��
�
�6�"�"�"�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#����
#�
#�
#�
#��n�n�T�*�*�G����W�\�1�-�-�-��I�I�K�K�K�K�K��C�I�I�K�K�K�K���sT�5D"�A$�D"�$A(�(D"�+A(�,AD"�/C�D"�C�D"�C�3D"�"D8c���tj�td��}tj|��	tjt|j��}	|�	|��}|�
|jd��|���n#|���wxYw	tj|��dS#tj|��wxYw)N�	directoryr)r`rarbr_r�r$r#r�rr�rRrTrHrr��rrarErWs    r
�test_directory_sizezWriteTest.test_directory_size�s����w�|�|�G�[�1�1��
������	"��,�w��	�2�2�C�
��.�.��.�.��� � ���q�1�1�1��	�	�������	�	����������O�D�!�!�!�!�!��I�O�D�!�!�!�!���s#�C�0B �C� B6�6C�C&c��tj�td��}tj|��ttj�|d��d�����ttj�|d��d�����	tjt|j	��}	tj�d��5}ddg|_
|�|��ddd��n#1swxYwYg}|���D]?}|�tj�|j��d���@|�|gd���|���n#|���wxYw	t)jtj�|d����t)jtj�|d����t)j|��dS#t)jtj�|d����t)jtj�|d����t)j|��wxYw)Nr��1r��2z
os.listdirr[)r�r�r�)r`rarbr_r�r#rHr$r�rr�r�r��return_valuer�r��append�splitr�rRrrbr�)rrarE�mock_listdir�paths�ms      r
�test_ordered_recursionz WriteTest.test_ordered_recursion�sY���w�|�|�G�[�1�1��
�������R�W�\�\�$��
$�
$�c�*�*�0�0�2�2�2��R�W�\�\�$��
$�
$�c�*�*�0�0�2�2�2�	"��,�w��	�2�2�C�	
��]�(�(��6�6�"�,�14�c�
�L�-��G�G�D�M�M�M�"�"�"�"�"�"�"�"�"�"�"����"�"�"�"������)�)�<�<�A��L�L�����q�v�!6�!6�r�!:�;�;�;�;�� � ��(?�(?�(?�@�@�@��	�	�������	�	�����������R�W�\�\�$��4�4�5�5�5���R�W�\�\�$��4�4�5�5�5��O�D�!�!�!�!�!��
��R�W�\�\�$��4�4�5�5�5���R�W�\�\�$��4�4�5�5�5��O�D�!�!�!�!���sJ�;I�F3�:D%�F3�%D)�)F3�,D)�-A1F3�I�3G	�	I�A:Kc�V�tjt|j��5}t	jt��dz}t|d��5}|�d��ddd��n#1swxYwY|�|��}|�tj
|����}|�|jt��|�|j|j��|�|jd��ddd��dS#1swxYwYdS)Nr~r�rr)r$r#r�rr�r�r_rr�r`r?r)r�r*rRrT)rrErarXrW�tarinfo2s      r
�test_gettarinfo_pathlike_namez'WriteTest.test_gettarinfo_pathlike_namess��
�\�'�4�9�
-�
-�	.���<��(�(�6�1�D��d�D�!�!�
#�T��
�
�6�"�"�"�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#����
#�
#�
#�
#��n�n�T�*�*�G��~�~�b�i��o�o�6�6�H��!�!�'�,��4�4�4����W�\�8�=�9�9�9����W�\�1�-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�	.�	.s6�-D�
A/�#D�/A3	�3D�6A3	�7BD�D"�%D"r]r^c�t�tj�td��}tj�td��}t	|d��5}|�d��ddd��n#1swxYwY	tj||��n/#t$r"}|�d|z��Yd}~nd}~wwxYw	tjt|j��}	|�|��|�|��}|�
|jd��|���n#|���wxYw	t!j|��t!j|��dS#t!j|��t!j|��wxYw)Nr]�link_targetr�r�
os.link(): %sr)r`rarbr_r#rr]�PermissionErrorr�r$r�rr�rRrTrHrrb)rr]�targetrXr�rErWs       r
�test_link_sizezWriteTest.test_link_sizes����w�|�|�G�V�,�,������g�}�5�5��
�&�$�
�
�	�4��J�J�v����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	/��G�F�D�!�!�!�!���	/�	/�	/��M�M�/�A�-�.�.�.�.�.�.�.�.�����	/����	#��,�w��	�2�2�C�
����v�&�&�&��.�.��.�.��� � ���q�1�1�1��	�	�������	�	�����������V�$�$�$���T�"�"�"�"�"��
��V�$�$�$���T�"�"�"�"���sO�A=�=B�B�	B�
C�)C�C�F
�/AE	�4F
�	E�F
�
*F7c���tj�td��}tjd|��	tjt|j��}	|�	|��}|�
|jd��|���n#|���wxYw	tj|��dS#tj|��wxYw)N�symlinkr�r)r`rarbr_r�r$r#r�rr�rRrTrHrrbr�s    r
�test_symlink_sizezWriteTest.test_symlink_size&s����w�|�|�G�Y�/�/��
�
�=�$�'�'�'�	#��,�w��	�2�2�C�
��.�.��.�.��� � ���q�1�1�1��	�	�������	�	�����������T�"�"�"�"�"��I��T�"�"�"�"���s#�C�0B!�C�!B7�7C�C'c�z�tj�t��}t	jt|j��}	|�|j|d��|�	|��|�|�
��gd��tjt��5|�	|��ddd��n#1swxYwY|�|�
��gd��|���dS#|���wxYw)Nzarchive name must be absolutezadded the archive to itself)r`rar+r�r$r#rrRr�r�r�r�
change_cwdr_rH)r�dstnamerEs   r
�
test_add_selfzWriteTest.test_add_self4sM���'�/�/�'�*�*���l�7�D�I�.�.��	����S�X�w�3�
5�
5�
5��G�G�G�������S�\�\�^�^�R�1�
3�
3�
3��%�g�.�.�
!�
!����� � � �
!�
!�
!�
!�
!�
!�
!�
!�
!�
!�
!����
!�
!�
!�
!����S�\�\�^�^�R�1�
3�
3�
3�
�I�I�K�K�K�K�K��C�I�I�K�K�K�K���s1�A3D$�8C�D$�C�D$�!C�",D$�$D:c�&�tj�td��}tj|��	dD]6}tj�||��}tj|���7d�}tjt|j
d���}	|�|d|���|���n#|���wxYw|�
t��5|�|ddd|��ddd��n#1swxYwYtjtd	��}	|D]8}|�|jd
��|�|jd���9|�t%|�����d��|���n#|���wxYw	tj|��dS#tj|��wxYw)
Nr�)rr��bazc�v�tj�|j��dkrdSd|_d|_|S)Nr�rir)r`ra�basenamer�r�rXr�s r
r�z%WriteTest.test_filter.<locals>.filterNs7���7�#�#�G�L�1�1�U�:�:��F�!��� %��
��rrAre�	empty_dir)�arcnamer�Tr[rirr)r`rarbr_r�r�create_empty_filer$r#r�rr�rHr
�	TypeErrorrRr�rXrSr�ry)r�tempdirr�r�rErWs      r
�test_filterzWriteTest.test_filterFs4���'�,�,�w��1�1��
������	&�-�
2�
2���w�|�|�G�T�2�2���+�D�1�1�1�1�
�
�
��,�w��	�K�H�H�H�C�
������V��D�D�D��	�	�������	�	���������"�"�9�-�-�
B�
B������d�D�&�A�A�A�
B�
B�
B�
B�
B�
B�
B�
B�
B�
B�
B����
B�
B�
B�
B��,�w��,�,�C�
�"�;�;�G��$�$�W�[�#�6�6�6��$�$�W�]�E�:�:�:�:�� � ��S�^�^�%5�%5�!6�!6��:�:�:��	�	�������	�	�����������W�%�%�%�%�%��I��W�%�%�%�%���sa�AG:�C�1G:�C�G:�9D�G:�D#�#G:�&D#�'G:�A0G
�5G:�
G � G:�:HNFc��tj�td��}|st	j|��ntj|��tjt|j
��}	|�||���|���n#|���wxYwtjtd��}	|�
��}|���n#|���wxYw|st	j|��nt	j|��|�|j|p|�tjd����dS)Nr�r�r[r�)r`rarbr_rr�r�r$r#r�rr�rHrrbr�rRr�r��sep)rra�cmp_path�dirrrErs       r
�_test_pathnamezWriteTest._test_pathnamens4���g�l�l�7�E�*�*���	��'��,�,�,�,��H�S�M�M�M��l�7�D�I�.�.��	��G�G�C��G�&�&�&��I�I�K�K�K�K��C�I�I�K�K�K�K�����l�7�C�(�(��	����
�
�A��I�I�K�K�K�K��C�I�I�K�K�K�K�����	!���S�!�!�!�!��O�C� � � �������!F�T�\�\�"�&�#�-F�-F�G�G�G�G�Gs�1B�B3�C:�:Dc��tj�td��}tj�td��}tj|��	tj�|d��}tj�|d��}t|d��5}|�d��ddd��n#1swxYwYtj||��tj|d��5}|�	|d���|�	|d���ddd��n#1swxYwYtj|d�	��5}	|�
|�
��n%#t$r|�d��YnwxYwddd��n#1swxYwYtj|��tj|��dS#tj|��tj|��wxYw)N�testsymlinksztestsymlinks.tar�sourcer�r�z
something
r�rr)r`r�z&extractall failed with symlinked files)r`rarbr_r�r#rr�r$r�rf�OSErrorr�rrbry)rr��temparchive�source_file�target_filerHrEs       r
�test_extractall_symlinksz"WriteTest.test_extractall_symlinks�s����'�,�,�w��7�7���g�l�l�7�,>�?�?��
������	&��'�,�,�w�x�8�8�K��'�,�,�w�y�9�9�K��k�#�&�&�
'�!����
�&�&�&�
'�
'�
'�
'�
'�
'�
'�
'�
'�
'�
'����
'�
'�
'�
'��J�{�K�0�0�0���k�3�/�/�
8�3�����X��6�6�6�����Y��7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8���k�a�8�8�8�
H�C�H��N�N��N�0�0�0�0���H�H�H��I�I�F�G�G�G�G�G�H����	
H�
H�
H�
H�
H�
H�
H�
H�
H�
H�
H����
H�
H�
H�
H�
��[�)�)�)���W�%�%�%�%�%��
��[�)�)�)���W�%�%�%�%���s�� AG"�0C�G"�C�G"�C�-G"�/E�6G"�E�G"�	E�
G"�#F-�%E<�;F-�<F�F-�F�F-�!G"�-F1�1G"�4F1�5G"�"*Hc�v�|�d��|�tj�ddd����|�tj�ddd����|�tj�dd����|�tj�ddd����|�tj�dddd����|�tj�dddd����|�tj�dddd����|�tj�dd����|�tj�ddd����|�tj�dddd����|�tj�dddd����|�dtjztjzdz��|�dtjztjzdd���dS)Nr�.r�z..T)r�)r�r`rarbr�rs r
�test_pathnameszWriteTest.test_pathnames�s�����E�"�"�"����B�G�L�L���U�;�;�<�<�<����B�G�L�L���e�<�<�=�=�=����B�G�L�L��e�4�4�5�5�5����B�G�L�L��e�S�9�9�:�:�:����B�G�L�L��e�S�%�@�@�A�A�A����B�G�L�L��e�T�5�A�A�B�B�B����B�G�L�L��e�T�5�A�A�B�B�B����B�G�L�L��u�5�5�6�6�6����B�G�L�L��u�d�;�;�<�<�<����B�G�L�L��u�c�5�A�A�B�B�B����B�G�L�L��u�d�E�B�B�C�C�C����E�B�F�N�R�V�3�e�;�<�<�<����E�B�F�N�R�V�3�U���E�E�E�E�Erc��tjdkr|�dd��dS|�dd��|�dd��dS)NrnzC:\foorz/fooz///foo)r�rur�rs r
�test_abs_pathnameszWriteTest.test_abs_pathnames�s]���<�7�"�"����	�5�1�1�1�1�1������.�.�.�����%�0�0�0�0�0rc�L�tjt��5tjt
|j��}	|�d��|���n#|���wxYwtjt
d��}	|D]@}|j	dkr3|�
|j	�d��|j	���A	|���n#|���wxYw	ddd��dS#1swxYwYdS)Nr�r[z./)rr�r_r$r#r�rr�rHr�r�rW�rrErs   r
�test_cwdzWriteTest.test_cwd�sC��
�
!�'�
*�
*�
	�
	��,�w��	�2�2�C�
���������	�	�������	�	���������,�w��,�,�C�
��I�I�A��v��}�}������(9�(9�$�(?�(?���H�H�H��I��	�	�������	�	���������
	�
	�
	�
	�
	�
	�
	�
	�
	�
	�
	�
	����
	�
	�
	�
	�
	�
	sA� D�A%�D�%A;�;D�AC2�D�2D�D�D� Dc
�j��tttfD]��G�fd�dtj��}|��}|����5t
jt|j	|tj
ddi���}ddd��n#1swxYwY|�|j����dS)Nc���eZdZdZ�fd�ZdS)�8WriteTest.test_open_nonwritable_fileobj.<locals>.BadFileTc�(��|jr	d|_��dS�NF)�first)rr�exctypes  �r
rz>WriteTest.test_open_nonwritable_fileobj.<locals>.BadFile.write�s#����z�&�%*��
�%�
�&�&rN)rrrr�r)r�s�r
�BadFiler��s3���������&�&�&�&�&�&�&rr��nonr�)r(r�rd)
r��EOFError�RuntimeErrorr!r�r
r$r#r�rrnr�r�)rr�rHrEr�s    @r
�test_open_nonwritable_fileobjz'WriteTest.test_open_nonwritable_fileobj�s*�����,�6�
	'�
	'�G�
&�
&�
&�
&�
&�
&�
&�"�*�
&�
&�
&���	�	�A��"�"�7�+�+�
A�
A��l�7�D�I�q�*1�*<�05�w�/?�A�A�A��
A�
A�
A�
A�
A�
A�
A�
A�
A�
A�
A����
A�
A�
A�
A�
���Q�X�&�&�&�&�
	'�
	's�0B
�
B	�B	r�)rrrrr|r�r�r�r�r�r�r�r�r`r�rr�r�r�r�r�r�r�r�r�r�r(rr
ryry�se������
�F����($�$�$���� "�"�"�"�"�"�,	.�	.�	.��X�����V�,�,�:�<�<�#�#�<�<�#�,�"�#�#�#�"�#����$"&�"&�"&�PH�H�H�H�:�"�&�&�#�"�&�2F�F�F�"1�1�1����"'�'�'�'�'rryc��eZdZdS)�
GzipWriteTestNr�r(rr
r�r��r�rr�c��eZdZdS)�Bz2WriteTestNr�r(rr
r�r��r�rr�c��eZdZdS)�
LzmaWriteTestNr�r(rr
r�r��r�rr�c��eZdZdZdZd�Zejej	dkoe
ed��d��eje
jpe
jd��d�����ZdS)	�StreamWriteTestzw|Nc�z�tjt|j��}|���|jr�|���}ttd��5}|���}ddd��n#1swxYwY|�|��}|�|j	d��nF|�t��5}|���}ddd��n#1swxYwY|�
|�d��tjd��dS)Nrnzfound trailing datar
zincorrect zero padding)
r$r#r�rrH�decompressorrQ�
decompressr��unused_datarR�countru)rrE�decrXrs     r
�test_stream_paddingz#StreamWriteTest.test_stream_padding�s����l�7�D�I�.�.���	�	������	#��#�#�%�%�C��g�t�$�$�
#���y�y�{�{��
#�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#����
#�
#�
#�
#��>�>�$�'�'�D����S�_�.C�D�D�D�D����7�#�#�
#�t��y�y�{�{��
#�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#����
#�
#�
#�
#�������E�*�*�G�,>�0�	2�	2�	2�	2�	2s$�$B�B	�B	�C<�<D�Drn�umaskzMissing umask implementationz$Emscripten's/WASI's umask is a stub.c���tj�t��rt	jt��tjd��}	tjt|j	��}|�
��tjt��jdz}|�
|dd��tj|��dS#tj|��wxYw)N�roi�zwrong file permissions)r`ra�existsr�rrbr�r$r#rrHrvrwrR)r�original_umaskrErs    r
�test_file_modezStreamWriteTest.test_file_modes����7�>�>�'�"�"�	&���W�%�%�%���%����	%��,�w��	�2�2�C��I�I�K�K�K��7�7�#�#�+�e�3�D����T�5�*B�C�C�C��H�^�$�$�$�$�$��B�H�^�$�$�$�$���s
�A+C�C*)rrrrr�r�r�r�r�rur�r`r�r�
is_emscripten�is_wasir�r(rr
r�r��s�������
�F��L�2�2�2� �X�����0�I�W�W�R��5I�5I�7�9�9��X�_���0���.���
%�
%�	��9�9�
%�
%�
%rr�c��eZdZd�ZdS)�GzipStreamWriteTestc��tjt|j�����tjt���d���}tj	�
t��|vsJ�dS)zf
        Ensure the source directory is not included in the tar header
        per bpo-41316.
        zlatin-1reN)r$r#r�rrHr�r��	read_textr`ra�dirname)r�payloads  r
� test_source_directory_not_leakedz4GzipStreamWriteTest.test_source_directory_not_leakedsi��
	��W�d�i�(�(�.�.�0�0�0��,�w�'�'�1�1�9�1�E�E���w���w�'�'�w�6�6�6�6�6�6rN)rrrr�r(rr
r�r�s#������7�7�7�7�7rr�c�$�eZdZerejndZdS)�Bz2StreamWriteTestN)rrrr2�BZ2Decompressorr�r(rr
r�r�!s ������*-�7�3�&�&�4�L�L�Lrr�c�$�eZdZerejndZdS)�LzmaStreamWriteTestN)rrrr:�LZMADecompressorr�r(rr
r�r�$s ������,0�:�4�(�(�d�L�L�Lrr�c�Z�eZdZd�Zdd�Zdd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�ZdS)�GNUWriteTestc�6�t|��dzdz}|dzS)Nrsro)rS)rrx�blockss   r
�_lengthzGNUWriteTest._length,s ���Q���3���"����|�rNc��d}t|��tjkr|dz
}||�|��z
}|�:t|��tjkr|dz
}||�|��z
}|S)Nrs)rSr$�LENGTH_NAMEr��LENGTH_LINK)rr�r]r�s    r
�
_calc_sizezGNUWriteTest._calc_size0sw�����t�9�9�w�*�*�*��S�L�E��T�\�\�$�'�'�'�E����D�	�	�G�,?� ?� ?��S�L�E��T�\�\�$�'�'�'�E��rc��tj|��}|r||_tj|_tjtd��}	tj|_|�	|��|�
||��}|j}|�||d��|�
��n#|�
��wxYwtjt��}	|���}|�|d��|�|j|jd��|�|j|jd��|�
��dS#|�
��wxYw)Nr�z%GNU longname/longlink creation failedzunable to read longname member)r$rr�LNKTYPErMr#r�r^r�rr�rGrRrHrr�r�)rr�r]rWrEr�r��members        r
�_testzGNUWriteTest._test>sZ���/�$�'�'���	+�#�G��"�?�G�L��l�7�C�(�(��	� �+�C�J��K�K�� � � �����t�,�,�B���B����R��%L�M�M�M��I�I�K�K�K�K��C�I�I�K�K�K�K�����l�7�#�#��		��X�X�Z�Z�F�� � ��4�
6�
6�
6����W�\�6�;�4�
6�
6�
6����W�-�v��4�
6�
6�
6�
�I�I�K�K�K�K�K��C�I�I�K�K�K�K���s�
AB9�9C�,A,E.�.Fc�0�|�d��dS)N�longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam�rrs r
�test_longname_1023zGNUWriteTest.test_longname_1023[s���
�
�1�2�2�2�2�2rc�0�|�d��dS)N�longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnamerrs r
�test_longname_1024zGNUWriteTest.test_longname_1024^s���
�
�2�3�3�3�3�3rc�0�|�d��dS)N�longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longname_rrs r
�test_longname_1025zGNUWriteTest.test_longname_1025as���
�
�3�4�4�4�4�4rc�2�|�dd��dS)Nr��longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnkrrs r
�test_longlink_1023zGNUWriteTest.test_longlink_1023ds���
�
�6�9�:�:�:�:�:rc�2�|�dd��dS)Nr��longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlinkrrs r
�test_longlink_1024zGNUWriteTest.test_longlink_1024gs���
�
�6�:�;�;�;�;�;rc�2�|�dd��dS)Nr��longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlink_rrs r
�test_longlink_1025zGNUWriteTest.test_longlink_1025js���
�
�6�;�<�<�<�<�<rc�2�|�dd��dS)Nrrrrs r
�test_longnamelink_1023z#GNUWriteTest.test_longnamelink_1023ms(���
�
�1�1�	3�	3�	3�	3�	3rc�2�|�dd��dS)Nrrrrs r
�test_longnamelink_1024z#GNUWriteTest.test_longnamelink_1024qs(���
�
�2�2�	4�	4�	4�	4�	4rc�2�|�dd��dS)Nr	rrrs r
�test_longnamelink_1025z#GNUWriteTest.test_longnamelink_1025us(���
�
�3�3�	5�	5�	5�	5�	5rr
)rrrr�r�rrrr
r
rrrrrr(rr
r�r�(s������������������:3�3�3�4�4�4�5�5�5�;�;�;�<�<�<�=�=�=�3�3�3�4�4�4�5�5�5�5�5rr�c��eZdZdZd�ZdS)�DeviceHeaderTestrc�|�tj�td��}tj|��	tjt|j��}	tj	d���}tj	d���}t
j
|_t
j|_|�
|��|�
|��|���n#|���wxYwtjtd��}	|�d��}|�d��}|���n#|���wxYw|�|jd��|�|jd��|�|jd��|�|jd��t
td��5}|���}ddd��n#1swxYwY||j|j�}	||j|j�}
t-dd	��}|�|	|d
��|�|
|d��t/j|��dS#t/j|��wxYw)N�device_header_test�my_block_device)r��my_regular_filer[rrniIiYs00000000000000s)r`rarbr_r�r$r#r�rr�BLKTYPErM�REGTYPErrHrOrRrrrQrG�offset_data�slicerry)rr�rE�	input_blk�	input_reg�
output_blk�
output_reg�infiler��buf_blk�buf_reg�device_headerss            r
�*test_headers_written_only_for_device_filesz;DeviceHeaderTest.test_headers_written_only_for_device_files~s����'�,�,�w�(<�=�=��
������#	&��,�w��	�2�2�C�
�#�O�1B�C�C�C�	�#�O�1B�C�C�C�	�!(��	��!(��	�����I�&�&�&����I�&�&�&��	�	�������	�	���������,�w��,�,�C�
� �]�]�+<�=�=�
� �]�]�+<�=�=�
��	�	�������	�	�����������Z�0�!�4�4�4����Z�0�!�4�4�4����Z�0�!�4�4�4����Z�0�!�4�4�4��g�t�$�$�
$���k�k�m�m��
$�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$����
$�
$�
$�
$��*�+�J�,B�B�C�G��*�+�J�,B�B�C�G�#�3��1�1�N����W�^�4�6F�G�G�G����W�^�4�j�A�A�A���W�%�%�%�%�%��I��W�%�%�%�%���sb�J%�A6C&�J%�&C<�<J%�*E�J%�E/�/BJ%�3H�J%�H�J%�H�A3J%�%J;N)rrrrr,r(rr
rrzs(������
�F�'&�'&�'&�'&�'&rrc��eZdZdZej�ed��Zd�Z	e
d���Ze
d���Zd�Z
d�Zd�Zd	�Zd
�Zd�ZdS)
�
CreateTestzx:�
spameggs42c�8�tjt��dSr
)rrbr�rs r
rFzCreateTest.setUp�s�����!�!�!�!�!rc��t|jd��5}|�d��ddd��dS#1swxYwYdS)Nr�r)r#�	file_pathr)�clsrXs  r
�
setUpClasszCreateTest.setUpClass�s���
�#�-��
&�
&�	�$��J�J�v����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s
�9�=�=c�8�tj|j��dSr
)rrbr2)r3s r
�
tearDownClasszCreateTest.tearDownClass�s������'�'�'�'�'rc��tjt|j��5}|�|j��ddd��n#1swxYwY|�t��5}|���}ddd��n#1swxYwY|�t|��d��|�
d|d��dS�Nror/r)r$r#r�rr�r2r&r�rRrSr��r�tobj�namess   r
�test_createzCreateTest.test_create�s)��
�\�'�4�9�
-�
-�	%���H�H�T�^�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%��\�\�'�
"�
"�	$�d��M�M�O�O�E�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�����U���Q�'�'�'��
�
�l�E�!�H�-�-�-�-�-s#�A�A�A�,B
�
B�Bc�T�tjt|j��5}|�|j��ddd��n#1swxYwY|�t��5tjt|j��}ddd��n#1swxYwY|�t��5}|�	��}ddd��n#1swxYwY|�
t|��d��|�d|d��dSr8)
r$r#r�rr�r2r
�FileExistsErrorr&r�rRrSr�r9s   r
�test_create_existingzCreateTest.test_create_existing�s���
�\�'�4�9�
-�
-�	%���H�H�T�^�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%��
�
��
/�
/�	4�	4��<����3�3�D�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4��\�\�'�
"�
"�	$�d��M�M�O�O�E�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�����U���Q�'�'�'��
�
�l�E�!�H�-�-�-�-�-s5�A�A�A�, B�B�B�=C�C"�%C"c��|�td��5}|�|j��ddd��n#1swxYwY|�t��5}|���}ddd��n#1swxYwY|�t
|��d��|�d|d��dS�N�xror/r)r&r�r�r2r�rRrSr�r9s   r
�test_create_taropenzCreateTest.test_create_taropen�s)��
�\�\�'�3�
'�
'�	%�4��H�H�T�^�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%��\�\�'�
"�
"�	$�d��M�M�O�O�E�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�����U���Q�'�'�'��
�
�l�E�!�H�-�-�-�-�-s#�A�A�
A�(B	�	B
�B
c�v�|�td��5}|�|j��ddd��n#1swxYwY|�t
��5|�td��5	ddd��n#1swxYwYddd��n#1swxYwY|�t��5}|���}ddd��n#1swxYwY|�t|��d��|�	d|d��dSrA)
r&r�r�r2r
r>r�rRrSr�r9s   r
�test_create_existing_taropenz'CreateTest.test_create_existing_taropen�s��
�\�\�'�3�
'�
'�	%�4��H�H�T�^�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%��
�
��
/�
/�	�	����g�s�+�+�
�
��
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��\�\�'�
"�
"�	$�d��M�M�O�O�E�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�����U���Q�'�'�'��
�
�l�E�!�H�-�-�-�-�-sY�A�A�
A�(B)�B�B)�B	�B)�B	�B)�)B-�0B-�C/�/C3�6C3c�Z�tjtjt��|j��5}|�|jt��|�	|jtj�t����|�
tj|j����|���}ddd��n#1swxYwY|�	t!|��d��|�d|d��|�t��5}|���}ddd��n#1swxYwY|�	t!|��d��|�d|d��dSr8)r$r#r�r�r�rr)r�r*rRr`rar+r�r2r�rSr�r&r9s   r
�test_create_pathlike_namez$CreateTest.test_create_pathlike_name�s���
�\�'�,�w�/�/���
;�
;�	$�t��!�!�$�)�S�1�1�1����T�Y������(@�(@�A�A�A��H�H�W�\�$�.�1�1�2�2�2��M�M�O�O�E�		$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�
	
����U���Q�'�'�'��
�
�l�E�!�H�-�-�-�
�\�\�'�
"�
"�	$�d��M�M�O�O�E�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�����U���Q�'�'�'��
�
�l�E�!�H�-�-�-�-�-s$�BC�C �#C �E!�!E%�(E%c�R�|�tjt��d��5}|�|jt��|�|jtj	�
t����|�tj|j����|�
��}ddd��n#1swxYwY|�t|��d��|�d|d��|�t��5}|�
��}ddd��n#1swxYwY|�t|��d��|�d|d��dSrA)r&r�r�r�r)r�r*rRr`rar+r�r2r�rSr�r9s   r
�!test_create_taropen_pathlike_namez,CreateTest.test_create_taropen_pathlike_name�s���
�\�\�'�,�w�/�/��
5�
5�	$���!�!�$�)�S�1�1�1����T�Y������(@�(@�A�A�A��H�H�W�\�$�.�1�1�2�2�2��M�M�O�O�E�		$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�
	
����U���Q�'�'�'��
�
�l�E�!�H�-�-�-�
�\�\�'�
"�
"�	$�d��M�M�O�O�E�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�����U���Q�'�'�'��
�
�l�E�!�H�-�-�-�-�-s$�BC�C�C�<E�E!�$E!N)rrrrr`rarbr_r2rF�classmethodr4r6r<r?rCrErGrIr(rr
r.r.�s�������
�F�����W�l�3�3�I�"�"�"�����[���(�(��[�(�.�.�.�
.�
.�
.�.�.�.�.�.�.�.�.�.�.�.�.�.�.rr.c��eZdZd�ZdS)�GzipCreateTestc��tjt|jd���5}|�|j��ddd��n#1swxYwYtjtdd���5}	ddd��dS#1swxYwYdS)Nror�zr:gz�r$r#r�rr�r2�rr:s  r
�test_create_with_compresslevelz-GzipCreateTest.test_create_with_compresslevels���
�\�'�4�9�A�
>�
>�
>�	%�$��H�H�T�^�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%�
�\�'�6��
;�
;�
;�	�t��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	�#�A	�	A
�A
�0A?�?B�BN�rrrrPr(rr
rLrL�#����������rrLc��eZdZd�ZdS)�
Bz2CreateTestc��tjt|jd���5}|�|j��ddd��n#1swxYwYtjtdd���5}	ddd��dS#1swxYwYdS)Nror��r:bz2rNrOs  r
rPz,Bz2CreateTest.test_create_with_compresslevel
s���
�\�'�4�9�A�
>�
>�
>�	%�$��H�H�T�^�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%�
�\�'�7�!�
<�
<�
<�	���	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	rQNrRr(rr
rUrUrSrrUc��eZdZd�ZdS)�LzmaCreateTestc��tjt|jd���5}|�|j��ddd��dS#1swxYwYdS)Nro)�presetrNrOs  r
�test_create_with_presetz&LzmaCreateTest.test_create_with_presets���
�\�'�4�9�Q�
7�
7�
7�	%�4��H�H�T�^�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%�	%�	%s�A
�
A�AN)rrrr\r(rr
rYrYs#������%�%�%�%�%rrYc��eZdZdZdZdZdS)�CreateWithXModeTestrBN)rrrrrCrEr(rr
r^r^s!������
�F���#'� � � rr^r]r^c�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�HardlinkTestc�N�tj�td��|_tj�td��|_t
|jd��5}|�d��ddd��n#1swxYwY	tj|j|j��n/#t$r"}|�
d|z��Yd}~nd}~wwxYwtjtd��|_
|j
�|j��dS)Nrr�r��foor�r�)r`rarbr_rr�r#rr]r�r�r$r�rEr�)rrXr�s   r
rFzHardlinkTest.setUp)s:���7�<�<���/�/����7�<�<���/�/���
�$�(�D�
!�
!�	�T��J�J�v����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	/��G�D�H�d�h�'�'�'�'���	/�	/�	/��M�M�/�A�-�.�.�.�.�.�.�.�.�����	/�����<���-�-�������T�X�����s*�*B�B�B�B8�8
C$�C�C$c��|j���tj|j��tj|j��dSr
)rErHrrbrr�rs r
rIzHardlinkTest.tearDown8s@�������������"�"�"�����"�"�"�"�"rc��|j�|j��}|�|jt
jd��dS)Nzadd file as regular failed)rEr�rrRrMr$r!rOs  r
�test_add_twicezHardlinkTest.test_add_twice=sH���(�%�%�d�h�/�/�������w��,�	.�	.�	.�	.�	.rc��|j�|j��}|�|jt
jd��dS)Nzadd file as hardlink failed)rEr�r�rRrMr$r�rOs  r
�test_add_hardlinkzHardlinkTest.test_add_hardlinkDsF���(�%�%�d�h�/�/�������w��-�	/�	/�	/�	/�	/rc��d|j_|j�|j��}|�|jtjd��dS)NTzdereferencing hardlink failed)rE�dereferencer�r�rRrMr$r!rOs  r
�test_dereference_hardlinkz&HardlinkTest.test_dereference_hardlinkIsP��#�����(�%�%�d�h�/�/�������w��/�	1�	1�	1�	1�	1rN)rrrrFrIrergrjr(rr
r`r`%s_������
�
�
�#�#�#�
.�.�.�/�/�/�
1�1�1�1�1rr`c�(�eZdZdd�Zd�Zd�Zd�ZdS)�PaxWriteTestNc��tj|��}|r||_tj|_tjtdtj���}	|�|��|�	��n#|�	��wxYwtjt��}	|r7|�
��dj}|�||d��n6|�
��dj}|�||d��|�	��dS#|�	��wxYw)Nr��r�rzPAX longlink creation failedzPAX longname creation failed)
r$rrr�rMr#r�rnrrHr�rRr�)rr�r]rWrE�l�ns       r
rzPaxWriteTest._testRs���/�$�'�'���	+�#�G��"�?�G�L��l�7�C��0B�C�C�C��	��K�K�� � � ��I�I�K�K�K�K��C�I�I�K�K�K�K�����l�7�#�#��	��
J��N�N�$�$�Q�'�0��� � ��q�*H�I�I�I�I��N�N�$�$�Q�'�,��� � ��q�*H�I�I�I��I�I�K�K�K�K�K��C�I�I�K�K�K�K���s�B�B�3A/D8�8Ec���dddddd�}tjtdtj|���}	|�tjd����|���n#|���wxYwtjtd	�
��}	|�|j|��|�|�	��dj|��|j�
��D]�\}}|�t|��t��|�t|��t��|tjvrH	tj||���#tt f$r|�d��Y��wxYw��	|���dS#|���wxYw)
Nr��0z1.23�äöü�test)rr�rVrtrsr�)r�rdrArerz"unable to convert pax header field)r$r#r�rnrrrHrRrdr�r��assertIsNotrMr<�PAX_NUMBER_FIELDSr�rDr�)rrdrE�key�vals     r
�test_pax_global_headerz#PaxWriteTest.test_pax_global_headerjs������&� &�(�(���l�7�C��0B�'�)�)�)��	��K�K����/�/�0�0�0��I�I�K�K�K�K��C�I�I�K�K�K�K�����l�7�[�9�9�9��
	����S�_�k�:�:�:����S�^�^�-�-�a�0�<�k�J�J�J��O�1�1�3�3�
H�
H���S�� � ��c���E�2�2�2�� � ��c���E�2�2�2��'�3�3�3�H��1�#�6�s�;�;�;�;��%�z�2�H�H�H��	�	�"F�G�G�G�G�G�H����4�
H�
�I�I�K�K�K�K�K��C�I�I�K�K�K�K���s<�'A-�-B�"C
G�-F�G�&F1�.G�0F1�1G�G"c��ddd�}tjtdtjd���}	tj��}d|_d|_||_|�|��|�	��n#|�	��wxYwtjtd�	��}	|�
��d
}|�|j|��|�|jd��|�|jd��|�	��dS#|�	��wxYw)Nr�123)rar�r�rA�r�rCrs�rerri)r$r#r�rnrr�r�rdrrHr�rR)rrdrErs    r
�test_pax_extended_headerz%PaxWriteTest.test_pax_extended_header�s"�� %�U�3�3���l�7�C��0B�$/�1�1�1��	���!�!�A�#�A�F��A�E�'�A�M��K�K��N�N�N��I�I�K�K�K�K��C�I�I�K�K�K�K�����l�7�[�9�9�9��	���� � ��#�A����Q�]�K�8�8�8����Q�V�U�+�+�+����Q�U�C�(�(�(��I�I�K�K�K�K�K��C�I�I�K�K�K�K���s�=B�B�5A+D6�6Ec�h�tj��}d|_d|_d|_d|_d|_|���}|�|d���}|�	|dd��|�
|d	t��|�	|d	d
��|�	|dd��|�	|dd��|�	|d
d��|�	|dtd��zdztd��zdztd��zdztd��zdztd��zdztd��zdztd��z��tj��}d|_d|_d|_d|_d|_|���}|�|d���}|�	|dd��|�	|d	d��|�	|dd��|�	|dd��|�	|d
d��|�	|dtd��zdztd��zdztd��zdzdzd ztd!��zd"ztd#��zd$ztd��zdztd��z��dS)%Nrg�����@�@r~ri�|rArer�rVr�rTr�r�s././@PaxHeader�Vs90000000000000000000000000000002000000000000010205 xsustar00�s16 mtime=1000.1
i�rb�as90000644000017300001740000000014400000001750006516 0ufoo㍴ld(	r}irs90000000000000000000000000000013000000000000010207 xs15 path=foo㍴
16 uid=16777216
s$16 gid=16777217
20 size=10000000000
s21 mtime=10000000000
i�sfoo?�`s90000644000000000000000000000000000000000000006540 0)
r$rr�rVrTr�r�r��create_pax_headerrRr)r7r<)rr�info�headers    r
�test_create_pax_headerz#PaxWriteTest.test_create_pax_header�so��
�O��������������������z�z�|�|���$�$�T�K�$�@�@������f��u�-�-�-����d�7�m�S�1�1�1�����g���-�-�-�����f��s�+�+�+�����e��c�*�*�*�����e��c�*�*�*�������b�	�	�)�\�
]��C�j�j�
�)�
*�+0��:�:�
6�#�
#�&+�3�Z�Z�
0�39�
9�<A��9�9�
E�]�	
]�
�C�j�j�
�
*�
*�
-2�#�J�J�
7�	8�	8�	8�
�O��������������������z�z�|�|���$�$�T�K�$�@�@������f��{�3�3�3�����g���*�*�*�����f��q�)�)�)�����e��a�(�(�(�����e��a�(�(�(�������b�	�	�)�\�
]��C�j�j�
�)�
*�,1�#�J�J�
7�<�
<�8�	
8�
(�
(�
*/�s���
4�
7>�
>�
AF�b�	�	�
J�]�

]��C�j�j�
�*�
*�-2�#�J�J�
7�	8�	8�	8�	8�	8rr
)rrrrryr~r�r(rr
rlrlPsV����������0���@���258�58�58�58�58rrlc�8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�UnicodeTestc�0�|�d��dS)NrA��_test_unicode_filenamers r
�test_iso8859_1_filenamez#UnicodeTest.test_iso8859_1_filename�s���#�#�K�0�0�0�0�0rc�0�|�d��dS)N�utf7r�rs r
�test_utf7_filenamezUnicodeTest.test_utf7_filename�s���#�#�F�+�+�+�+�+rc�0�|�d��dS)N�utf-8r�rs r
�test_utf8_filenamezUnicodeTest.test_utf8_filename�s���#�#�G�,�,�,�,�,rc���tjtd|j|d���}	d}|�tj|����|���n#|���wxYwtjt|���}	|�|���dj	|��|���dS#|���wxYw)Nr�r>�r�rC�errorsrsrer)
r$r#r�r�rrrHrRr�r�)rrCrEr�s    r
r�z"UnicodeTest._test_unicode_filename�s����l�7�C���$,�X�?�?�?��	�!�D��K�K����-�-�.�.�.��I�I�K�K�K�K��C�I�I�K�K�K�K�����l�7�X�6�6�6��	����S�^�^�-�-�a�0�5�t�<�<�<��I�I�K�K�K�K�K��C�I�I�K�K�K�K���s�)A#�#A9�3C!�!C7c�|�tjtd|jdd���}	tj��}d|_|�t|j|��d|_d|_	|�t|j|��|�
��dS#|�
��wxYw)Nr�r�r>r�rsr)r$r#r�r�rr�r
�UnicodeErrorrrXrHrfs   r
�test_unicode_filename_errorz'UnicodeTest.test_unicode_filename_error�s����l�7�C���$+�H�>�>�>��
	��o�'�'�G�)�G�L����l�C�K��A�A�A� �G�L�*�G�M����l�C�K��A�A�A��I�I�K�K�K�K�K��C�I�I�K�K�K�K���s�A*B%�%B;c��tjtddd���}	|D]�}|�t	|j��t��|�t	|j��t��|�t	|j��t��|�t	|j	��t����	|�
��dS#|�
��wxYw)Nr[rAr>�rCr�)r$r#r �assertIsrMr�r*rrXr�rHr�s   r
�test_unicode_argumentz!UnicodeTest.test_unicode_arguments����l�7�C�$/��B�B�B��	��
2�
2���
�
�d�1�6�l�l�C�0�0�0��
�
�d�1�:�.�.��4�4�4��
�
�d�1�7�m�m�S�1�1�1��
�
�d�1�7�m�m�S�1�1�1�1�	
2�
�I�I�K�K�K�K�K��C�I�I�K�K�K�K���s�B9C/�/Dc�\�tjd��}d|_d|_tjt
d|jd���}	|�|��|���n#|���wxYwtjt
d���}	|�	d��}|�
|jd��|�
|jd��|jtjkrz|���tjt
d���}|�	d��}|�
|jd��|�
|jd��|���dS#|���wxYw)	Nrrsr�rA)rr�rCrer�u	���)r$rrXr�r#r�r�rrHrOrRrn)rrrEs   r
�test_uname_unicodezUnicodeTest.test_uname_unicodesf���O�E�"�"�� ��� ����l�7��T�[�$/�1�1�1��	��K�K��N�N�N��I�I�K�K�K�K��C�I�I�K�K�K�K�����l�7�[�9�9�9��	��
�
�e�$�$�A����Q�W�n�5�5�5����Q�W�n�5�5�5��{�g�0�0�0��	�	�����l�7�W�=�=�=���M�M�%�(�(��� � ���*>�?�?�?�� � ���*>�?�?�?��I�I�K�K�K�K�K��C�I�I�K�K�K�K���s�A0�0B�%CF�F+N)
rrrr�r�r�r�r�r�r�r(rr
r�r��s}������1�1�1�,�,�,�-�-�-�
�
�
�
�
�
�
�
�
�����rr�c�\�eZdZejZd�Zd�Zd�Zd�Z	d�Z
d�Zdd�Zd	�Z
d
�Zdd�ZdS)
�UstarUnicodeTestc���|�d��|�dt��|�d��|�dt��dS�Nr{�e01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890ud01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567ÿue012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678ÿ��_test_ustar_namerDrs r
�test_unicode_name1z#UstarUnicodeTest.test_unicode_name13�`�����/�0�0�0����5�z�B�B�B����?�@�@�@����@�*�M�M�M�M�Mrc�f�|�d��|�dt��dS�Nud012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345ÿÿue0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456ÿÿr�rs r
�test_unicode_name2z#UstarUnicodeTest.test_unicode_name29�4�����A�B�B�B����B�J�O�O�O�O�Orc���|�d��|�dt��|�d��|�dt��dS)Na01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789a0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123/40123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012ÿ/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123ÿ/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789r�rs r
�test_unicode_longname1z'UstarUnicodeTest.test_unicode_longname1?sb�����N�O�O�O����N�PZ�[�[�[����P�Q�Q�Q����Q�S]�^�^�^�^�^rc�r�|�dt��|�dt��dS)Nu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901ÿ/20123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901ÿÿ/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789r�rs r
�test_unicode_longname2z'UstarUnicodeTest.test_unicode_longname2Es8�����P�R\�]�]�]����S�U_�`�`�`�`�`rc��|�dt��|�d��|�dt��dS)Nu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901ÿÿ/20123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567ÿu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678ÿr�rs r
�test_unicode_longname3z'UstarUnicodeTest.test_unicode_longname3IsM�����T�V`�a�a�a����^�_�_�_����_�ak�l�l�l�l�lrc�f�|�d��|�dt��dS)Nu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345ÿÿu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456ÿÿr�rs r
�test_unicode_longname4z'UstarUnicodeTest.test_unicode_longname4Ns5�����`�a�a�a����a�cm�n�n�n�n�nrNc��tjtd|jd���5}tj|��}|�|�|��n|�||j|��ddd��n#1swxYwY|�Wtjtdd���5}|D]}|�||j��ddd��dS#1swxYwYdSdS)Nr�r�r|r[re)	r$r#r�r�rrr
rRr��rr��excrErs     r
r�z!UstarUnicodeTest._test_ustar_nameRs_��
�\�'�3�t�{�W�
M�
M�
M�	7�QT����%�%�A��{����A������!�!�#�s�{�A�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7��;���g�s�W�=�=�=�
�����A��$�$�T�1�6�2�2�2��
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�
��;s$�A	A8�8A<�?A<�!!C�C�Cc���|�d��|�dt��|�d��|�dt��dSr���_test_ustar_linkrDrs r
�test_unicode_link1z#UstarUnicodeTest.test_unicode_link1ar�rc�f�|�d��|�dt��dSr�r�rs r
�test_unicode_link2z#UstarUnicodeTest.test_unicode_link2gr�rc���tjtd|jd���5}tjd��}||_|�|�|��n|�||j|��ddd��n#1swxYwY|�Wtjtdd���5}|D]}|�||j��ddd��dS#1swxYwYdSdS)Nr�r�r|rr[re)	r$r#r�r�rrrr
rRr�s     r
r�z!UstarUnicodeTest._test_ustar_linkksf��
�\�'�3�t�{�W�
M�
M�
M�	7�QT����&�&�A��A�J��{����A������!�!�#�s�{�A�6�6�6�
	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7��;���g�s�W�=�=�=�
�����A��$�$�T�1�:�6�6�6��
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�
��;s$�AA?�?B�B�(!C�C�Cr
)rrrr$r�r�r�r�r�r�r�r�r�r�r�r�r(rr
r�r�,s�������
�
!�F�
N�N�N�P�P�P�_�_�_�a�a�a�m�m�m�
o�o�o�����N�N�N�P�P�P�
�
�
�
�
�
rr�c�"�eZdZejZd�ZdS)�GNUUnicodeTestc��dD]u\}}tjt|d���5}	|�|��}n%#t$r|�d��YnwxYwddd��n#1swxYwY�vdS)N))r�upax/bad-pax-���)rAupax/bad-pax-äöür�r�z%unable to read bad GNU tar pax header�r$r#r rOrRr��rrCr�rErs     r
�test_bad_pax_headerz"GNUUnicodeTest.test_bad_pax_headers���<�	G�	G�N�H�d���g��%6�8�8�8�
G�;>�G��
�
�d�+�+�A�A���G�G�G��I�I�E�F�F�F�F�F�G����	
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G����
G�
G�
G�
G��	G�	G�1�A-�<�A-�A�A-�A�A-�-A1	�4A1	N)rrrr$r^r�r�r(rr
r�r�{s0������
�
�F�G�G�G�G�Grr�c�&�eZdZejZdZd�ZdS)�PAXUnicodeTestNc��dD]u\}}tjt|d���5}	|�|��}n%#t$r|�d��YnwxYwddd��n#1swxYwY�vdS)N))r�upax/hdrcharset-���)rAupax/hdrcharset-äöür�r�z)unable to read POSIX.1-2008 binary headerr�r�s     r
�test_binary_headerz!PAXUnicodeTest.test_binary_header�s���?�	K�	K�N�H�d���g��%6�8�8�8�
K�;>�K��
�
�d�+�+�A�A���K�K�K��I�I�I�J�J�J�J�J�K����	
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K����
K�
K�
K�
K��	K�	Kr�)rrrr$rnr�r�r�r(rr
r�r��s8������
�
�F�#'��
K�
K�
K�
K�
Krr�c�"�eZdZd�Zdd�Zd�ZdS)�AppendTestBasec��t|_tj�|j��rtj|j��dSdSr
)r�r r`rar�rrbrs r
rFzAppendTestBase.setUp�sD�����
�7�>�>�$�,�'�'�	+���T�\�*�*�*�*�*�	+�	+rrc��tjtd���5}|�d��}d|_|�|��5}tj|j|��5}|�||��ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)NrArerMr)r$r#r rOr�rPr)rr�srcrrHrEs      r
�_create_testtarzAppendTestBase._create_testtar�sn��
�\�'�K�
8�
8�
8�	&�C��
�
�o�.�.�A��A�F�����#�#�
&�q��\�$�,��5�5�&���K�K��1�%�%�%�&�&�&�&�&�&�&�&�&�&�&����&�&�&�&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&sY�2B;�B#�)B�B#�B�B#�B�B#�B;�#B'	�'B;�*B'	�+B;�;B?�B?c��|�d|jz��|�tjtjtd��dS)Nrr�)r�rr
r$rr#r�rs r
�test_append_compressedz%AppendTestBase.test_append_compressed�sB�����T�D�K�/�0�0�0����'�+�W�\�7�C�H�H�H�H�HrN)r)rrrrFr�r�r(rr
r�r��sK������+�+�+�
&�&�&�&�I�I�I�I�Irr�c�j�eZdZdZdd�Zdgdfd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�ZdS)�
AppendTestNc��tj|jd|���5}|�tjd����ddd��dS#1swxYwYdS)Nr�r�r�)r$r#r rr)rr(rEs   r
�
_add_testfilezAppendTest._add_testfile�s���
�\�$�,��W�
=�
=�
=�	0���K�K����.�.�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�	0�	0s�(A�A�Ar�c��tj|j|���5}|�|���|��ddd��dS#1swxYwYdS)Nr�)r$r#r rRr�)rr;r(rEs    r
rzAppendTest._test�s���
�\�$�,��
8�
8�
8�	4�C����S�\�\�^�^�U�3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	4�	4s�)A�A�Ac�V�|���|���dSr
)r�rrs r
�test_non_existingzAppendTest.test_non_existing�s%���������
�
�����rc��tj|jd�����|���|���dS)Nr)r$r#r rHr�rrs r
�
test_emptyzAppendTest.test_empty�sE����T�\�4�(�(�.�.�0�0�0��������
�
�����rc��tjd��}|�|��|�d��|�|���dS)Nsrr�)r!r�r�rtrr�s  r
�test_empty_fileobjzAppendTest.test_empty_fileobj�sN���z�,�'�'�����4� � � ��	�	�!�����
�
�4�
� � � � � rc�^�|���t|jd��5}|���}ddd��n#1swxYwYt	j|��}|�|��|�d��|�ddg|���dS)Nrnrrr�)r;r()	r�r#r rQr!r�r�rtrr�s   r
�test_fileobjzAppendTest.test_fileobj�s���������
�$�,��
%�
%�	���9�9�;�;�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��z�$�������4� � � ��	�	�!�����
�
�%����
�6�6�6�6�6s�A�A�Ac��|���|���|�ddg���dS)Nrr�)r;)r�r�rrs r
�
test_existingzAppendTest.test_existing�sD���������������
�
�%���
�(�(�(�(�(rc���t|jd��5}|�|��ddd��n#1swxYwY|�tj|j��dSr	)r#r rr
r$rr�)rrrXs   r
�_test_errorzAppendTest._test_error�s���
�$�,��
%�
%�	���J�J�t����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	����'�+�T�-?�@�@�@�@�@s�8�<�<c�0�|�d��dS)Nr�r�rs r
�	test_nullzAppendTest.test_null�s����������rc�0�|�d��dS)N�
r�rs r
�test_incompletezAppendTest.test_incomplete��������$�$�$�$�$rc�|�tjd�����}|�|��dS)Nr�r$rrr��rrs  r
�test_premature_eofzAppendTest.test_premature_eof�s7����u�%�%�+�+�-�-����������rc��tjd�����}|�|dz��dS)Nrr�r�r�s  r
�test_trailing_garbagez AppendTest.test_trailing_garbage�s<����u�%�%�+�+�-�-������
�*�+�+�+�+�+rc�0�|�d��dS)Nsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar�rs r
�test_invalidzAppendTest.test_invalid�r�rr
)rrrr�r�rr�r�r�r�r�r�r�r�r�r�r�r(rr
r�r��s�������!��0�0�0�0�!�'�4�4�4�4�4�������
!�!�!�7�7�7�)�)�)�A�A�A�
���%�%�%����,�,�,�%�%�%�%�%rr�c��eZdZdS)�GzipAppendTestNr�r(rr
r�r��r�rr�c��eZdZdS)�
Bz2AppendTestNr�r(rr
r�r��r�rr�c��eZdZdS)�LzmaAppendTestNr�r(rr
r�r��r�rr�c� �eZdZd�Zd�Zd�ZdS)�
LimitsTestc�d�tjd��}|�tj��tjd��}|�t
|jtj��tjd��}|�tj��tjd��}|�t
|jtj��tjd��}|�t
|jtj��tjd��}d|_|�t
|jtj��tjd��}d|_|�t
|jtj��dS)	Nr{r�a123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longnamea1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/longname�123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longnamer9r�� )r$rrr�r
rDrr�rOs  r
�test_ustar_limitszLimitsTest.test_ustar_limits	sL���/�"3�4�4���
�
�g�*�+�+�+��/�"9�:�:�����*�g�m�W�5I�J�J�J��/�":�;�;���
�
�g�*�+�+�+��/�">�?�?�����*�g�m�W�5I�J�J�J��/�";�<�<�����*�g�m�W�5I�J�J�J��/�*�-�-��4������*�g�m�W�5I�J�J�J��/�&�)�)�� ������*�g�m�W�5I�J�J�J�J�Jrc�l�tjd��}|�tj��tjd��}d|_|�tj��tjd��}d|_|�t|jtj��dS�Nr�r9r�l)r$rrr^rr�r
rDrOs  r
�test_gnu_limitszLimitsTest.test_gnu_limits 	s����/�";�<�<���
�
�g�(�)�)�)��/�*�-�-��4����
�
�g�(�)�)�)��/�&�)�)��+������*�g�m�W�5G�H�H�H�H�Hrc�T�tjd��}|�tj��tjd��}d|_|�tj��tjd��}d|_|�tj��dSr)r$rrrnrr�rOs  r
�test_pax_limitszLimitsTest.test_pax_limits-	s����/�";�<�<���
�
�g�(�)�)�)��/�*�-�-��4����
�
�g�(�)�)�)��/�&�)�)��+����
�
�g�(�)�)�)�)�)rN)rrrr�rrr(rr
r�r��sG������K�K�K�>I�I�I�
*�
*�
*�
*�
*rr�c�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�MiscTestc�Z�|�tjdddd��d��|�tjdddd��d��|�tjddd��d��|�tjd	dd��d��dS)
Nr�r�r>sfoo�foobarrrbsfoobar)rRr$�stn�ntsrs r
�test_char_fieldszMiscTest.test_char_fields<	s��������U�A�w��A�A�)�	+�	+�	+������X�q�'�8�D�D��	!�	!�	!������%5�w��I�I��	 �	 �	 ������]�G�X�F�F��	 �	 �	 �	 �	 rc���|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd	��d
��|�tjd��d��|�tjd
��d��|�tjd��d��|�tjd��d��dS)N�0000001ro�7777777��� r�������������������r[�����������������r
rs       )rRr$�ntirs r
�test_read_number_fieldsz MiscTest.test_read_number_fieldsF	sT��	
�����^�4�4�a�8�8�8������^�4�4�i�@�@�@������%H�I�I�#�	%�	%�	%������%H�I�I�#�	%�	%�	%������%H�I�I��	�	�	������%H�I�I��	�	�	������%H�I�I�+�	-�	-�	-�	
�����U�+�+�Q�/�/�/������\�2�2�A�6�6�6�6�6rc�
�|�tjd��d��|�tjd��d��|�tjdtj���d��|�tjdtj���d	��|�tjd
tj���d��|�tjdtj���d
��|�tjdtj���d��|�tjdtj���d
��|�tjdtj���d��|�tjtjdtj�����d��dS)Nror
rrr�rnrrrr[rrrrrgY�g0Bs�g��������r)rRr$�itnr^rrs r
�test_write_number_fieldsz!MiscTest.test_write_number_fieldsZ	s��������Q����8�8�8������Y�/�/��@�@�@������Z��8J�K�K�K�<�	>�	>�	>������Z��8J�K�K�K�<�	>�	>�	>������R��0B�C�C�C�<�	>�	>�	>������T�'�2D�E�E�E�<�	>�	>�	>������%7�,3�,>�@�@�@�<�	>�	>�	>�	
�����V�G�4F�G�G�G�<�	>�	>�	>������]�7�;M�N�N�N�<�	>�	>�	>������W�[��g�>P�%Q�%Q�%Q�R�R�TU�V�V�V�V�Vrc��|�t��5tjddtj��ddd��n#1swxYwY|�t��5tjddtj��ddd��n#1swxYwY|�t��5tjddtj��ddd��n#1swxYwY|�t��5tjddtj��ddd��dS#1swxYwYdS)Nr[rr�l�����l)r
rDr$rr�r^rs r
�test_number_field_limitsz!MiscTest.test_number_field_limitsq	s��
�
�
�z�
*�
*�	5�	5��K��A�w�3�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�
�
�
�z�
*�
*�	=�	=��K�
�A�w�';�<�<�<�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�
�
�
�z�
*�
*�	?�	?��K���7�+=�>�>�>�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�
�
�
�z�
*�
*�	>�	>��K�
�q�'�*<�=�=�=�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�	>�	>sG�!A�A�A�-!B�B�!B�?!C,�,C0�3C0�!D?�?E�Ec�F�hd�}tj|t|���dS)N>/�NUL�grprrr
�pwdr	�mainr �CHRTYPErNr�r!�SYMTYPE�XGLTYPErm�version�AREGTYPE�CONTTYPE�FIFOTYPE�filemoderv�	GNU_MAGIC�	GNU_TYPES�
PAX_FIELDSrur�r��POSIX_MAGIC�copyfileobj�ExFileObject�calc_chksums�
LENGTH_PREFIX�
REGULAR_TYPES�EOFHeaderError�GNUTYPE_SPARSE�PAX_NAME_FIELDS�SOLARIS_XHDTYPE�SUPPORTED_TYPES�EmptyHeaderError�GNUTYPE_LONGLINKr]rv�symlink_exception�InvalidHeaderError�TruncatedHeaderError�SubsequentHeaderError)�not_exported)r�check__all__r$)rrAs  r
�test__all__zMiscTest.test__all__{	s3��=�=�=��	��T�7��F�F�F�F�F�Frc�,�tj�tj�t��d��}|�tj��5}t
jd��f}tj
j�tj
d|���5t
j|��ddd��n#1swxYwYddd��n#1swxYwY|�dt!|j����dS)Nrzlzma module is not availabler<)r�z?
- method xz: CompressionError('lzma module is not available')
)r`rarbr��__file__r
r$r�CompressionErrorr�r�r�r�r%r#r�r*�	exception)r�fname�excinfor�s    r
�.test_useful_error_message_when_modules_missingz7MiscTest.test_useful_error_message_when_modules_missing�	s^������R�W�_�_�X�6�6�8H�I�I��
�
�
�w�0�
1�
1�	$�W��,�-K�L�L�M�E���$�+�+�G�O�X�SX�+�Y�Y�
$�
$���U�#�#�#�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$����
$�
$�
$�
$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�
	
�
�
�O���!�"�"�	
�	
�	
�	
�	
s7�"AC!�)C
�>C!�
C	�C!�C	�C!�!C%�(C%N)	rrrrrrrrCrJr(rr
rr:	st������ � � �7�7�7�(W�W�W�.>�>�>�
G�
G�
G�

�

�

�

�

rrc��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�CommandLineTestc��tjddg|�Ri|��\}}}|�tj���d��S)N�-mr$�
)r�assert_python_okr�r`�linesepr)r�argsr��rcr��errs      r
�
tarfilecmdzCommandLineTest.tarfilecmd�	s_��$�5�d�I�@��@�@�@�8>�@�@���C���{�{�2�:�,�,�.�.��6�6�6rc�(�tjddg|�R�S)NrNr$)r�assert_python_failure)rrRs  r
�tarfilecmd_failurez"CommandLineTest.tarfilecmd_failure�	s���2�4��J�T�J�J�J�Jrc�f�tjd��tjd��g}|�tj|��tj|d��5}|D]6}|�|tj	�
|������7	ddd��dS#1swxYwYdS)N�tokenize_tests.txt�9tokenize_tests-no-coding-cookie-and-utf8-bom-sig-only.txtr�r�)rrrarrbr$r#r�r`rar�)r�tar_name�filesr��tardatas     r
�make_simple_tarfilez#CommandLineTest.make_simple_tarfile�	s
���!�"6�7�7��!�#>�?�?�@��	
���	�(�(�3�3�3�
�\�(�C�
(�
(�	C�B� �
C�
C�����w���(8�(8��(A�(A��B�B�B�B�
C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C����	C�	C�	C�	C�	C�	Cs�:B&�&B*�-B*c��|���\}}}|�|d��|�d|�����|�d|�����|�d|�����|�dd��\}}}|�|d��|�|���d��dS)Nrsusageserrorsrequired�-lr)rXrRr��lowerr6�strip)rrSr�rTs    r
�test_bad_usezCommandLineTest.test_bad_use�	s����.�.�0�0���C������c�"�"�"��
�
�h��	�	���,�,�,��
�
�h��	�	���,�,�,��
�
�k�3�9�9�;�;�/�/�/��.�.�t�R�8�8���C������c�"�"�"����C�I�I�K�K��-�-�-�-�-rc�|�tD]3}dD].}|�||��}|�|d���/�4dS)N)�-tz--testr)�testtarnamesrUrR�rr\�optr�s    r
�test_test_commandz!CommandLineTest.test_test_command�	s[��$�	+�	+�H�%�
+�
+���o�o�c�8�4�4��� � ��c�*�*�*�*�
+�	+�	+rc��tD]6}dD]1}|�|d|d���}|�d|���2�7dS)N�z-vz	--verboserfr���PYTHONIOENCODINGsis a tar archive.
)rgrUr�rhs    r
�test_test_command_verbosez)CommandLineTest.test_test_command_verbose�	sj��$�	;�	;�H�(�
;�
;���o�o�c�4��7>�&�@�@���
�
�4�c�:�:�:�:�
;�	;�	;rc�p�tjd��}|�d|��\}}}|�d|��|�|d��|�|d��t
D�]<}|�|���5t|d��5}|���}ddd��n#1swxYwY	ttd��5}|�
|dd	���ddd��n#1swxYwY|�dt��\}}}|�|d��|�|d��tjt��n#tjt��wxYw	ddd��n#1swxYwY��>dS)
N�
zipdir.ziprf� is not a tar archive.rro)r\rnr�ro)
rrrXr�rRrg�subTestr#rQr�rrrb)r�zipnamerSr�rTr\rHrs        r
�test_test_command_invalid_filez.CommandLineTest.test_test_command_invalid_file�	sV���"�<�0�0���.�.�t�W�=�=���C���
�
�/��5�5�5�����c�"�"�"�����Q����$�	.�	.�H����x��0�0�

.�

.��(�D�)�)�$�Q��6�6�8�8�D�$�$�$�$�$�$�$�$�$�$�$����$�$�$�$�.��g�t�,�,�,������T�c�T�
�+�+�+�,�,�,�,�,�,�,�,�,�,�,����,�,�,�,�#'�#:�#:�4��#I�#I�L�B��S��$�$�S�#�.�.�.��$�$�R��+�+�+��$�W�-�-�-�-��I�$�W�-�-�-�-����-�

.�

.�

.�

.�

.�

.�

.�

.�

.�

.�

.����

.�

.�

.�

.��	.�	.ss�F)�"C�7F)�C�F)�
C�F)�E>�$D�E>�D�E>�D�AE>�$F)�>F�F)�)F-	�0F-	c��tD]�}tj��5}tj|d��5}|�d���ddd��n#1swxYwYddd��n#1swxYwY|����dd��}dD]0}|�||d���}|�	||���1��dS)Nr[Fr�r�r�)raz--listrm�
rgr�captured_stdoutr$r#rkr�rrUrR�rr\rr��expectedrir�s       r
�test_list_commandz!CommandLineTest.test_list_command�	sb��$�	0�	0�H��(�*�*�
+�a��\�(�C�0�0�+�B��G�G�E�G�*�*�*�+�+�+�+�+�+�+�+�+�+�+����+�+�+�+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��z�z�|�|�*�*�7�4F�G�G�H�%�
0�
0���o�o�c�8�7>�&�@�@��� � ��h�/�/�/�/�
0�	0�	0�4�A-�A�
A-�A�A-�A�A-�-A1	�4A1	c��tD]�}tj��5}tj|d��5}|�d���ddd��n#1swxYwYddd��n#1swxYwY|����dd��}dD]1}|�|d|d���}|�	||���2��dS)	Nr[Tr�r�r�rlrarmrwrys       r
�test_list_command_verbosez)CommandLineTest.test_list_command_verbose�	sd��$�	0�	0�H��(�*�*�
*�a��\�(�C�0�0�*�B��G�G�D�G�)�)�)�*�*�*�*�*�*�*�*�*�*�*����*�*�*�*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*����
*�
*�
*�
*��z�z�|�|�*�*�7�4F�G�G�H�(�
0�
0���o�o�c�4��7>�&�@�@��� � ��h�/�/�/�/�
0�	0�	0r|c���tjd��}|�d|��\}}}|�d|��|�|d��|�|d��dS)Nrqrarrrro)rrrXr�rR�rrtrSr�rTs     r
�test_list_command_invalid_filez.CommandLineTest.test_list_command_invalid_file�	st���"�<�0�0���.�.�t�W�=�=���C���
�
�/��5�5�5�����c�"�"�"�����Q�����rc��tjd��tjd��g}dD]�}	|j|tg|�R�}|�|d��tjt��5}|���ddd��n#1swxYwYtj	t����#tj	t��wxYwdS)NrZr[)�-cz--creater)
rrrUr�rRr$r#r�rrb�rr]rir�rEs     r
�test_create_commandz#CommandLineTest.test_create_command�	s���!�"6�7�7��!�#>�?�?�@��$�	*�	*�C�
*�%�d�o�c�7�;�U�;�;�;��� � ��c�*�*�*��\�'�*�*�%�c��N�N�$�$�$�%�%�%�%�%�%�%�%�%�%�%����%�%�%�%�� ��)�)�)�)��	� ��)�)�)�)����	*�	*s0�AB7�1B�B7�B	�B7�B	�B7�7Cc��tjd��tjd��g}dD]�}	|j|dtg|�Rddi�}|�d|��tjt��5}|���ddd��n#1swxYwYtj	t����#tj	t��wxYwdS)NrZr[rlr�rnr�s file created.)
rrrUr�r�r$r#r�rrbr�s     r
�test_create_command_verbosez+CommandLineTest.test_create_command_verbose�	s:���!�"6�7�7��!�#>�?�?�@��%�	*�	*�C�
*�%�d�o�c�4��@�5�@�@�@�7>�@�@���
�
�/��5�5�5��\�'�*�*�%�c��N�N�$�$�$�%�%�%�%�%�%�%�%�%�%�%����%�%�%�%�� ��)�)�)�)��	� ��)�)�)�)����	*�	*s0�AB;�5B�
B;�B	�B;�B	�B;�;Cc�~�tjd��g}	|jdtg|�R�}|�|d��tjt��5}|���ddd��n#1swxYwYtj	t��dS#tj	t��wxYw)NrZr�r)
rrrU�dotlessnamerRr$r#r�rrb)rr]r�rEs    r
�$test_create_command_dotless_filenamez4CommandLineTest.test_create_command_dotless_filename
s����!�"6�7�7�8��	*�!�$�/�$��<�e�<�<�<�C����S�#�&�&�&���k�*�*�
!�c���� � � �
!�
!�
!�
!�
!�
!�
!�
!�
!�
!�
!����
!�
!�
!�
!�
��[�)�)�)�)�)��I��[�)�)�)�)���s0�AB!�A;�/B!�;A?�?B!�A?�B!�!B<c��tj�td��}t	jd��g}	|jd|g|�R�}|�|d��tj	|��5}|�
��ddd��n#1swxYwYtj|��dS#tj|��wxYw)Nz.testtarrZr�r)
r`rarbr_rrrUrRr$r#r�rrb)rr\r]r�rEs     r
�(test_create_command_dot_started_filenamez8CommandLineTest.test_create_command_dot_started_filename
s���7�<�<���4�4���!�"6�7�7�8��	'�!�$�/�$��9�5�9�9�9�C����S�#�&�&�&���h�'�'�
!�3���� � � �
!�
!�
!�
!�
!�
!�
!�
!�
!�
!�
!����
!�
!�
!�
!�
��X�&�&�&�&�&��I��X�&�&�&�&���s/�9B7�5B�
B7�B�B7�B�B7�7C
c��tjd��tjd��g}tttfD]�}|js�
	tdz|jz}|jd|g|�R�}|�	|��5}|�
��ddd��n#1swxYwYtj|����#tj|��wxYwdS)NrZr[r�r�)
rrr*r1r7r#r�rrUr&r�rrb)rr]�filetyper\r�rEs      r
�test_create_command_compressedz.CommandLineTest.test_create_command_compressed"
s0���!�"6�7�7��!�#>�?�?�@��"�7�H�5�		+�		+�H��=�
��
+�"�S�=�8�?�:��%�d�o�d�H�=�u�=�=�=���%�%�h�/�/�%�3��N�N�$�$�$�%�%�%�%�%�%�%�%�%�%�%����%�%�%�%�� ��*�*�*�*��	� ��*�*�*�*����		+�		+s0�6B?�>B�B?�B#	�#B?�&B#	�'B?�?Cc�x�|�t��dD]�}	tjt��5|�|t��}ddd��n#1swxYwY|�|d��tjt���#tjt��wxYwdS)N)�-ez	--extractr�r_r�rr��	tarextdirrUrRry�rrir�s   r
�test_extract_commandz$CommandLineTest.test_extract_command1
s���� � ��)�)�)�$�	,�	,�C�
,��'�	�2�2�8�8��/�/�#�w�7�7�C�8�8�8�8�8�8�8�8�8�8�8����8�8�8�8�� � ��c�*�*�*�� ��+�+�+�+��	� ��+�+�+�+����
	,�	,s.�B�A!�B�!A%	�%B�(A%	�)B�B7c�~�|�t��dD]�}	tjt��5|�|dtd���}ddd��n#1swxYwY|�d|��tjt����#tjt��wxYwdS)Nrlr�r�rms file is extracted.)r_r�rr�r�rUr�ryr�s   r
�test_extract_command_verbosez,CommandLineTest.test_extract_command_verbose;
s��� � ��)�)�)�$�	,�	,�C�
,��'�	�2�2�D�D��/�/�#�t�W�;B�*�D�D�C�D�D�D�D�D�D�D�D�D�D�D����D�D�D�D��
�
�4�c�:�:�:�� ��+�+�+�+��	� ��+�+�+�+����	,�	,s.�B�A$�B�$A(	�(B�+A(	�,B�B:c�p�|�t��	tjt��5|�dtd��}ddd��n#1swxYwY|�|d��tjt��dS#tjt��wxYw)Nr��spamdirrr�)rr�s  r
�(test_extract_command_different_directoryz8CommandLineTest.test_extract_command_different_directoryF
s���� � ��)�)�)�	(��#�I�.�.�
@�
@��o�o�d�G�Y�?�?��
@�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@����
@�
@�
@�
@����S�#�&�&�&���Y�'�'�'�'�'��I��Y�'�'�'�'���s.�B�A�B�A"�"B�%A"�&B�B5c�H�tjd��}tjt��5|�d|��\}}}ddd��n#1swxYwY|�d|��|�|d��|�|d��dS)Nrqr�rrrro)rrrr�r�rXr�rRr�s     r
�!test_extract_command_invalid_filez1CommandLineTest.test_extract_command_invalid_fileO
s����"�<�0�0��
�
�	�
*�
*�	B�	B��2�2�4��A�A�L�B��S�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B��
�
�/��5�5�5�����c�"�"�"�����Q�����s�A�A�AN)rrrrUrXr_rdrjrorur{r~r�r�r�r�r�r�r�r�r�r�r(rr
rLrL�	s7������7�7�7�
K�K�K�C�C�C�.�.�.�+�+�+�;�;�;�.�.�.�(	0�	0�	0�	0�	0�	0� � � �*�*�*�*�*�*�*�*�*�	'�	'�	'�
+�
+�
+�,�,�,�	,�	,�	,�(�(�(� � � � � rrLc�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�ContextManagerTestc���tjt��5}|�|jd��ddd��n#1swxYwY|�|jd��dS)Nzclosed inside runtime context�context manager failed)r$r#r r�r�r�rs  r
�
test_basiczContextManagerTest.test_basicZ
s���
�\�'�
"�
"�	J�c����S�Z�)H�I�I�I�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J����	J�	J�	J�	J�����
�$<�=�=�=�=�=s�A�A�	Ac��tjt��}|���|�t
��5|5	ddd��n#1swxYwYddd��dS#1swxYwYdSr
)r$r#r rHr
r�rs  r
�test_closedzContextManagerTest.test_closed_
s����l�7�#�#���	�	����
�
�
�w�
'�
'�	�	��
�
��
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s6�A1�A�
A1�A	�A1� A	�!A1�1A5�8A5c�<�|�t��5}tjt��5}t
�#1swxYwY	ddd��n#1swxYwY|�|jt
d��|�|j	d��dS)Nz)wrong exception raised in context managerr�)
r
�	Exceptionr$r#r r�r)rGr�r�)rr�rEs   r
�test_exceptionz!ContextManagerTest.test_exceptionh
s���
�
�
�y�
)�
)�	�S���g�&�&�
�#��
�
�
�
�
����
�
�
�
�
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
���c�m�W�I�	K�	K�	K�����
�$<�=�=�=�=�=s,�A�=�A	�A�A	�A�A�Ac��	tjtd��5}t�#1swxYwYn#YnxYw|�t
j�t��dd��|�|j	d��dS)Nr�rz-context manager wrote an end-of-archive blockr�)
r$r#r�r�rRr`rar�r�r�rs  r
�test_no_eofzContextManagerTest.test_no_eofq
s���	���g�s�+�+�
 �s���
 �
 �
 �
 ����
 �
 �
 �
 �
 ��	��D������������1�1�1�?�	A�	A�	A�����
�$<�=�=�=�=�=s�0�$�(�0�(�0�4c���tjtd��5	ddd��n#1swxYwY|�tj�t��dd��dS)Nr�rz-context manager wrote no end-of-archive block)r$r#r�r6r`rar�rs r
�test_eofzContextManagerTest.test_eof}
s����\�'�3�
'�
'�	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	����B�G�O�O�G�4�4�a�?�	A�	A�	A�	A�	As�)�-�-c�2�ttd��5}	tj|d���5}t�#1swxYwYn#YnxYw|�|jd��|�|jd��ddd��dS#1swxYwYdS)Nr�r�r'zexternal file object was closedr�)r#r�r$r�r�r�r�r,s   r
r�zContextManagerTest.test_fileobj�
s���'�4�
 �
 �	B�D�
��\�$�S�9�9�9�$�S�#�O�$�$�$�$����$�$�$�$�$��
���������T�[�*K�L�L�L��O�O�C�J�(@�A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	Bs>�B�A�6�:	�A�:	�A�B�A�;B�B�BN)	rrrr�r�r�r�r�r�r(rr
r�r�X
sv������>�>�>�
���>�>�>�
>�
>�
>�A�A�A�
B�
B�
B�
B�
Brr�zrequires os.link to be missingc�H�eZdZd�Zejeejd��d��d���Z	ejeejd��d��d���Z
ejeed��d��d���Zejeed��d��d	���Zd
S)�LinkEmulationTestc�T�|j�|t��ttj�t|��d��5}|���}ddd��n#1swxYwY|�t|��t��dSr�)rEr^r_r#r`rarbrQrRrrU)rr�rHrs    r
�_test_link_extractionz'LinkEmulationTest._test_link_extraction�
s��������w�'�'�'�
�"�'�,�,�w��-�-�t�
4�
4�	���6�6�8�8�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�����4���.�9�9�9�9�9s�A5�5A9�<A9�islinkz3Skip emulation - has os.path.islink but not os.linkc�0�|�d��dS)Nr��r�rs r
�test_hardlink_extraction1z+LinkEmulationTest.test_hardlink_extraction1�
���	
�"�"�?�3�3�3�3�3rc�0�|�d��dS)Nr�r�rs r
�test_hardlink_extraction2z+LinkEmulationTest.test_hardlink_extraction2�
���	
�"�"�#>�?�?�?�?�?rr�z Skip emulation if symlink existsc�0�|�d��dS)Nr�r�rs r
�test_symlink_extraction1z*LinkEmulationTest.test_symlink_extraction1�
r�rc�0�|�d��dS)Nr�r�rs r
�test_symlink_extraction2z*LinkEmulationTest.test_symlink_extraction2�
r�rN)
rrrr�r�r�r�r`rar�r�r�r�r(rr
r�r��
s+������:�:�:��X�_�W�W�R�W�h�/�/�J�L�L�4�4�L�L�4��X�_�W�W�R�W�h�/�/�J�L�L�@�@�L�L�@��X�_�W�W�R��+�+�7�9�9�4�4�9�9�4��X�_�W�W�R��+�+�7�9�9�@�@�9�9�@�@�@rr�c� �eZdZd�Zd�Zd�ZdS)�Bz2PartialReadTestc�j��G�fd�dtj���tjt	jd�������}tt|��dz��D]?}	t	j	�|d|���|����+#tj
$rY�<wxYwdS)Nc�2���eZdZdZ��fd�Z��fd�Z�xZS)�9Bz2PartialReadTest._test_partial_input.<locals>.MyBytesIOFc����|jrtd���|���t|�����k|_t�|���|��S)Nz(infinite loop detected in tarfile.open())�hit_eof�AssertionErrorrurSr��superrQ)rrp�	MyBytesIO�	__class__s  ��r
rQz>Bz2PartialReadTest._test_partial_input.<locals>.MyBytesIO.read�
sf����<�;�(�*:�;�;�;�#�y�y�{�{�c�$�-�-�/�/�.B�.B�B����Y��-�-�2�2�1�5�5�5rc�B��d|_t�|��j|�Sr�)r�r�rt)rrRr�r�s  ��r
rtz>Bz2PartialReadTest._test_partial_input.<locals>.MyBytesIO.seek�
s$���$���2�u�Y��-�-�2�D�9�9r)rrrr�rQrt�
__classcell__)r�r�s@�r
r�r��
sa���������G�
6�
6�
6�
6�
6�
6�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:rr�rror')r!r�r2�compressr$rr�rangerSr#r)rrrrBr�s    @r
�_test_partial_inputz&Bz2PartialReadTest._test_partial_input�
s����
	:�
	:�
	:�
	:�
	:�
	:�
	:��
�
	:�
	:�
	:��|�G�O�E�2�2�8�8�:�:�;�;���s�4�y�y�1�}�%�%�	�	�A�
���Y�Y�t�B�Q�B�x�%8�%8�t�D�D�D�D�D���$�
�
�
���
����	�	s�6'B�B0�/B0c�0�|�d��dS)Nr[�r�rs r
�test_partial_inputz%Bz2PartialReadTest.test_partial_input�
s��� � ��%�%�%�%�%rc�0�|�d��dS)NrWr�rs r
�test_partial_input_bz2z)Bz2PartialReadTest.test_partial_input_bz2�
s��� � ��)�)�)�)�)rN)rrrr�r�r�r(rr
r�r��
sA���������(&�&�&�*�*�*�*�*rr�c��	ddl}ddl}n#t$rYdSwxYw|�d��ddkrdS|�d��ddkrdSdS)NrF�rootT)r#r"�ImportError�getpwuid�getgrgid)r#r"s  r
�root_is_uid_gid_0r��
s������������������u�u�����
�|�|�A���q��V�#�#��u�
�|�|�A���q��V�#�#��u��4s��
��chownzmissing os.chown�geteuidzmissing os.geteuidc� �eZdZed���Zeed�����Zej�	d��ej�	d��ej�	d��d�������Z
ej�	d��ej�	d��ej�	d��d�������Zeje
��d��ej�	d��ej�	d��ej�	d��d	���������Zej�	d��d
���ZdS)�NumericOwnerTestc��tjd��}|ddtj|f|ddtjdf|ddtj|fg}tjtd��5}|D]U\}}}}	}
tj|��}||_||_	d	|_
d	|_|	|_|�
||
���V	ddd��n#1swxYwYtS)
Nscontent�c�b�M�L�X�Wr�r�)r!r�r$r!rNr#r�rr�r�rXr�rMr)�
filename_1�	dirname_1�
filename_2rXr��tarflr�r�r��typ�contentsrs            r
�_make_test_archivez#NumericOwnerTest._make_test_archive�
s!���z�*�%�%���b�"�g�o�t�<��b�"�g�o�t�<��b�"�g�o�t�<����\�'�3�
'�
'�	+�5�16�
+�
+�-��c�3��X��O�D�)�)�������� ��� �������
�
�a��*�*�*�*�
+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+��s�!AC�C�Cc#�
K�d|_d}d}|}|}tj�||��}t�|||��}t
j|��5}||||fV�ddd��dS#1swxYwYdS)Nrznumeric-owner-testfiler�)r�r`rarbr�r�r$r#)�mock_geteuidrHr�r�r�r��tar_filenamer�s        r
�_setup_testzNumericOwnerTest._setup_tests�����%&��!�(�����
��	��W�\�\�'�5�1�1�
�(�:�:�:�;D�;E�G�G���\�,�
'�
'�	;�5���Y�
�:�:�:�:�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	;�	;s�"	A8�8A<�?A<zos.chownzos.chmodz
os.geteuidc� �|�|��5\}}}}|�|td���|�|td���ddd��n#1swxYwYtj�t|��}tj�t|��}	|�tj�	|dd��tj�	|	dd��gd���dS)NT��
numeric_ownerr�r�r�r���	any_order)
r�r^r_r`rarb�assert_has_callsr�r��call)
rr��
mock_chmod�
mock_chownr�r��_r��f_filename_1�f_filename_2s
          r
�test_extract_with_numeric_ownerz0NumericOwnerTest.test_extract_with_numeric_owners@��
�
�
�l�
+�
+�	D�0<��z�1�0:��M�M�*�g�T�M�B�B�B��M�M�*�w�d�M�C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D��w�|�|�G�Z�8�8���w�|�|�G�Z�8�8���#�#�X�]�%7�%7��b�"�%M�%M�%-�]�%7�%7��b�"�%M�%M�%'�/3�	$�	4�	4�	4�	4�	4s�AA"�"A&�)A&c	�n�|�|��5\}}}}|�td���ddd��n#1swxYwYtj�t|��}tj�t|��}	tj�t|��}
|�tj�	|dd��tj�	|	dd��tj�	|
dd��gd�	��dS)
NTr�r�r�r�r�r�r�r�)
r�rfr_r`rarbr�r�r�r�)rr�r�r�r�r�r�r�r��f_dirname_1r�s           r
�"test_extractall_with_numeric_ownerz3NumericOwnerTest.test_extractall_with_numeric_owner)sE��
�
�
�l�
+�
+�	:�0<��z�9�0:����W�D��9�9�9�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:�
�w�|�|�G�Z�8�8���w�|�|�G�Y�7�7���w�|�|�G�Z�8�8���#�#�X�]�%7�%7��b�"�%M�%M�%-�]�%7�%7��R��%L�%L�%-�]�%7�%7��b�"�%M�%M�%'�/3�		$�	4�	4�	4�	4�	4s�"A�A�Az uid=0,gid=0 must be named "root"c��|�|��5\}}}}|�|td���ddd��n#1swxYwYtj�t|��}|�|dd��dS)NFr�r)r�r^r_r`rarb�assert_called_with)rr�r�r�r�r�r�r�s        r
�"test_extract_without_numeric_ownerz3NumericOwnerTest.test_extract_without_numeric_ownerAs����
�
�l�
+�
+�	D�/H��z�1�a��M�M�*�g�U�M�C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D��w�|�|�G�Z�8�8���%�%�l�A�q�9�9�9�9�9s�#A�A	�A	c	��|�|��5\}}}}|�t|j|tdd��ddd��dS#1swxYwYdS)NFT)r�r
r�r^r_)rr�r�r�r�s     r
�test_keyword_onlyz"NumericOwnerTest.test_keyword_onlyPs���
�
�
�l�
+�
+�	O�/H��z�1�a����i�#�m�Z��%��
O�
O�
O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O����	O�	O�	O�	O�	O�	Os�/A�A�AN)rrrr_r�rr�r�r�r�r�r�r�r�r�rr(rr
r�r��
s�����������\��.��;�;��^��\�;�(�]����$�$�
�]����$�$�
�]����&�&�4�4�'�&�%�$�%�$�4� �]����$�$�
�]����$�$�
�]����&�&�4�4�'�&�%�$�%�$�4�*�X��*�*�,�,�;�=�=�
�]����$�$�
�]����$�$�
�]����&�&�:�:�'�&�%�$�%�$�=�=�
:��]����&�&�O�O�'�&�O�O�Orr�c�8�tjt��tjt��t
gatt
d��5}|���}ddd��n#1swxYwYtttfD]�}|jr�tj|j��t�|j��|�|jd��5}|�
|��ddd��n#1swxYwY��dS)Nrnr�)rrbr_r`�makedirsr rgr#rQr*r1r7r�r)rXr�crEs    r
�setUpModulerWsh��
��W�����K������9�L�	
�g�t�	�	����y�y�{�{���������������������w��
(� � ���6�	 ���Q�Y�'�'�'�����	�*�*�*�����	�4�(�(�
 �C��	�	�$����
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 ����
 �
 �
 �
 ��	 � s$�A1�1A5�8A5�,D�D	�D	c��tj�t��rt	jt��dSdSr
)r`rar�r_rryr(rr
�tearDownModulerhs9��	�w�~�~�g���"����!�!�!�!�!�"�"r�__main__)tr�r`r!�hashlibr�
contextlibr�randomrr�r��
unittest.mockr$rtr�test.supportrrr-r�r�r2r:rrar+�TESTFNr_r�rr rbr,r3r9r�r�rUrr�
requires_gzipr*�requires_bz2r1�
requires_lzmar7r>�TestCaserKr�r�r�r�r�r�r�r�r"r�r�r�r�r�r�r�r�r�r�r�r�r�r1rHrarpryr�r�r�r�r�r�r�r�rr.rLrUrYr^r�r�r`rlr�r�r�r�r�r�r�r�r�r�rrLr�r�r�r�r�r�rrrr$r(rr
�<module>rs���
�
�
�
�	�	�	�	�	�	�	�	�������%�%�%�%�%�%�����������������������������"�"�"�"�"�"�&�&�&�&�&�&���K�K�K�K�������D�D�D�������K�K�K�K�������D�D�D�������J�J�J�J������
�C�C�C�������K�K�K�K�������D�D�D�����$�$�$�
�'�/�/�)�*�
+�
+�i�
7���o�%�	�
�'�
�=�
)�
)��
�7�<�<��!1�2�2��
�'�,�,�w� 1�
2�
2��	����g�/�	0�	0��
�'�,�,�w�	�
*�
*���g�l�l�7�I�.�.��G��G��
)�)�)�)�)�)�)�)������%�%�%�%�%�%�%���%������&�&�&�&�&�&�&���&������%�%�%�%�%�%�%���%�	�	�	�	�	�w�	�	�	�T�T�T�T�T�H�h�/�T�T�T�l	�	�	�	�	��-�	�	�	�	�	�	�	�	�w�
�	�	�	�	�	�	�	�	��-�	�	�	�M1�M1�M1�M1�M1�x��*�M1�M1�M1�`	�	�	�	�	�8�X�	�	�	�	�	�	�	�	�'�8�	�	�	�	�	�	�	�	�8�X�	�	�	�A�A�A�A�A�X�A�A�A�FP.�P.�P.�P.�P.�~�P.�P.�P.�d�����#�X�%6����	�	�	�	�	�x�!1�8�3D�	�	�	�8�8�8�8�8�g�/��1B�8�8�8�9�9�9�9�9�x�!1�8�3D�9�9�9�
;�;�;�;�;�^�X�%6�;�;�;�z	�	�	�	�	��>�	�	�	�	�	�	�	�	���	�	�	�	�	�	�	�	��>�	�	�	�&1�&1�&1�&1�&1�W�h�/�&1�&1�&1�P	�	�	�	�	��>�	�	�	�
,�
,�
,�
,�
,���
,�
,�
,�	�	�	�	�	��>�	�	�	�^E�^E�^E�^E�^E�X�x�0�^E�^E�^E�B6O�6O�6O�6O�6O�6O�6O�6O�p9�9�9�9�9�,��(�*;�9�9�9�x*�*�*�*�*�,��(�*;�*�*�*�ZG�G�G�G�G�G�G�G�G�<t'�t'�t'�t'�t'�
�x�0�t'�t'�t'�n		�	�	�	�	�H�i�	�	�	�	�	�	�	�	�7�I�	�	�	�	�	�	�	�	�H�i�	�	�	�(%�(%�(%�(%�(%�m�X�%6�(%�(%�(%�V7�7�7�7�7�(�O�7�7�7�8�8�8�8�8��/�8�8�8�;�;�;�;�;�(�O�;�;�;�O5�O5�O5�O5�O5�8�$�O5�O5�O5�d+&�+&�+&�+&�+&�}�h�&7�+&�+&�+&�\W.�W.�W.�W.�W.��� 1�W.�W.�W.�t�����X�z���������G�Z����%�%�%�%�%�X�z�%�%�%�(�(�(�(�(�*�(�(�(����W�W�R��(�(�*K�L�L�'1�'1�'1�'1�'1�8�$�'1�'1�M�L�'1�TH8�H8�H8�H8�H8�<�H8�H8�H8�VN�N�N�N�N�N�N�N�bL�L�L�L�L�{�H�$5�L�L�L�^G�G�G�G�G�[�(�"3�G�G�G�$K�K�K�K�K�[�(�"3�K�K�K�(I�I�I�I�I�I�I�I�(>%�>%�>%�>%�>%���!2�>%�>%�>%�@	�	�	�	�	�X�~�x�/@�	�	�	�	�	�	�	�	�G�^�X�->�	�	�	�	�	�	�	�	�X�~�x�/@�	�	�	�8*�8*�8*�8*�8*��"�8*�8*�8*�vZ
�Z
�Z
�Z
�Z
�x� �Z
�Z
�Z
�z~ �~ �~ �~ �~ �h�'�~ �~ �~ �B7B�7B�7B�7B�7B��*�7B�7B�7B�t������V�$�$�&F�G�G�@�@�@�@�@��(�"3�@�@�H�G�@�B*�*�*�*�*��(�"3�*�*�*�>	�	�	����W�W�R��)�)�+=�>�>����W�W�R��+�+�-A�B�B�sO�sO�sO�sO�sO�x�(�sO�sO�C�B�?�>�sO�l � � �""�"�"��z����H�M�O�O�O�O�O��sH�A�A�A�A�A$�#A$�(A-�-A7�6A7�;B�B
�	B