403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.217.51
Web Server : Microsoft-IIS/10.0
System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64
User : IUSR ( 0)
PHP Version : 8.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Python313/Lib/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Python313/Lib/test/__pycache__/test_tarfile.cpython-313.opt-1.pyc
�

��i���SSKrSSKrSSKrSSKrSSKJr SSKJrJr SSK	J
r
 SSKrSSKrSSK
r
SSKrSSKrSSKrSSKrSSKrSSKJr SSKJr SSKJr SSKJr SS	KJr SSKrSSKrSSKrSSKrS
r\R@RC\RD5S-r#\#S-r$\RJ"S
SS9r&\R@RO\#S5r(\R@RO\#S5r)\R@RO\#S5r*\R@RO\#S5r+\R@RO\#S5r,Sr-Sr.Sr/"SS5r0\Rb"5"SS55r2\Rf"5"SS55r4\Rj"5"SS55r6"S S!\05r7"S"S#\75r8"S$S%\7\Rr5r:"S&S'\2\:5r;"S(S)\4\:5r<"S*S+\6\:5r="S,S-\7\Rr5r>"S.S/\2\>5r?"S0S1\4\>5r@"S2S3\6\>5rA"S4S5\75rB"S6S7\B5rC"S8S9\C\Rr5rD"S:S;\2\C\Rr5rE"S<S=\4\C\Rr5rF"S>S?\6\C\Rr5rG"S@SA\B\Rr5rH"SBSC\2\H5rI"SDSE\4\H5rJ"SFSG\6\H5rK"SHSI\8\Rr5rL"SJSK\2\L5rM"SLSM\4\L5rN"SNSO\6\L5rO"SPSQ\0\Rr5rP"SRSS\2\P5rQ"STSU\4\P5rR"SVSW\6\P5rS"SXSY\2\Rr5rT"SZS[\7\Rr5rU"S\S]5rV"S^S_\V\7\Rr5rW"S`Sa\V\7\Rr5rX"SbSc\05rY"SdSe\Y\Rr5rZ"SfSg\2\Z5r["ShSi\4\Z5r\"SjSk\6\Z5r]"SlSm\Y\Rr5r^"SnSo\2\^5r_"SpSq\4\^5r`"SrSs\6\^5ra"StSu\05rb"SvSw\4\b\Rr5rc"SxSy\4\b\Rr5rd"SzS{\2\b\Rr5re"S|S}\2\b\Rr5rf"S~S\Rr5rg"S�S�\Rr5rh"S�S�\Y\Rr5ri"S�S�\Y\Rr5rj"S�S�\2\j5rk"S�S�\4\j5rl"S�S�\6\j5rm"S�S�\j5rn\R�"\p"\S�5S�5"S�S�\Rr55rq"S�S�\h5rr"S�S�5rs"S�S�\s\Rr5rt"S�S�\s\Rr5ru"S�S�\s\Rr5rv"S�S�5rw"S�S�\w\Rr5rx"S�S�\2\w\Rr5ry"S�S�\4\w\Rr5rz"S�S�\6\w\Rr5r{"S�S�\Rr5r|"S�S�\Rr5r}"S�S�\Rr5r~"S�S�\Rr5r\GR"\p"\S�5S�5"S�S�\7\Rr55r�"S�S�\4\Rr5r�S�r�\R�"\p"\S�5S�5\R�"\p"\S�5S�5"S�S�\Rr555r�"S�S�\7\Rr5r�"S�S�\75r�"S�S�\�\Rr5r�"S�S�\�\Rr5r�"S�S�\�\Rr5r�"S�S�\�\Rr5r�"S�S�\Rr5r�S�r�"S�S�5r�\GR(aS�r�OS�r�"S�S�\Rr5r�"S�S�\GR"\Rr5r�"S�S�\Rr5r�S�r�S�r�\�S�:Xa\GR,"5 gg!\a SrGN�f=f!\a SrGN�f=f!\a SrGN�f=f!\a SrGN�f=f)��N)�sha256)�contextmanager�	ExitStack)�Random)�archiver_tests)�support)�	os_helper)�
script_helper)�warnings_helperc�4�[U5R5$�N)r�	hexdigest)�datas �&C:\Python313\\Lib\test\test_tarfile.py�	sha256sumr*s���$�<�!�!�#�#�z-tardirz
-extract-testztesttar.tar�archivetestdata��subdirztesttar.tar.gzztesttar.tar.bz2�testtar.tar.xzztmp.tar�testtar� �@e09e4bc8b3c9d9177e77256353b36c159f5f040531bbd4b024a8f9b9196c71ce�@4f05a776071146756345ceee937b33fc5644f5a96b9780d1c7d6a32cdf164d7bc�p�\rSrSr\rSr\Rr\	RRr\S5r
Srg)�TarTest�?�c�4�URUR-$r
)�prefix�suffix��selfs r�mode�TarTest.modeEs���{�{�T�[�[�(�(r�N)�__name__�
__module__�__qualname__�__firstlineno__�tarnamer!�io�FileIO�open�tarfile�TarFile�taropen�propertyr$�__static_attributes__r&rrrr?s6���G�
�F�
�9�9�D��o�o�%�%�G�
�)��)rrc�r�\rSrSr\rSr\(a\ROSr	\
RRr
Srg)�GzipTest�I�gzNr&)r'r(r)r*�gzipnamer+r!�gzip�GzipFiler.r/r0�gzopenr1r3r&rrr5r5Is(���G�
�F� �4�=�=�d�D��o�o�$�$�Grr5c�r�\rSrSr\rSr\(a\ROSr	\
RRr
Srg)�Bz2Test�P�bz2Nr&)r'r(r)r*�bz2namer+r!r?�BZ2Filer.r/r0�bz2openr1r3r&rrr=r=Ps(���G�
�F��3�;�;�4�D��o�o�%�%�Grr=c�r�\rSrSr\rSr\(a\ROSr	\
RRr
Srg)�LzmaTest�W�xzNr&)r'r(r)r*�xznamer+r!�lzma�LZMAFiler.r/r0�xzopenr1r3r&rrrDrDWs(���G�
�F� �4�=�=�d�D��o�o�$�$�GrrDc�$�\rSrSrSrSrSrSrg)�ReadTest�_�r:c�b�[R"URURSS9Ulg)N�	iso8859-1�r$�encoding�r/r.r+r$�tarr"s r�setUp�ReadTest.setUpcs!���<�<����4�9�9�)4�6��rc�8�URR5 gr
)rT�closer"s r�tearDown�ReadTest.tearDowngs�������r�rTN)r'r(r)r*r rUrYr3r&rrrLrL_s��
�F�6�rrLc��\rSrSrSrSrg)�StreamModeTest�jc�d�[R"URURSSS9Ulg)NrPT)r$rR�streamrSr"s rrU�StreamModeTest.setUpns$���<�<����4�9�9�)4�'+�-��rr[N)r'r(r)r*rUr3r&rrr]r]js��-rr]c��\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
r\R""\"\S5=(a	 \"\S5S5S5rSrg)�
UstarReadTest�sc�P�URRS5nURRU5nUR5nUR	[U5URS5 UR	[U5[S5 SSS5 g!,(df   g=f)N�
ustar/regtype�regular file extraction failed)	rT�	getmember�extractfile�read�assertEqual�len�sizer�sha256_regtype�r#�tarinfo�fobjrs    r�test_fileobj_regular_file�'UstarReadTest.test_fileobj_regular_fileusw���(�(�$�$�_�5��
�X�X�
!�
!�'�
*�d��9�9�;�D����S��Y����4�
6����Y�t�_�n�4�
6�	+�
*�
*�s�AB�
B%c�h�URRS[SS9 URRS5n[	[
RR[S5S5nUR5nSSS5 URRU5n[R"U5nUR5nURWUS5 UR[U5SS5 URUSSS5 SSS5 g!,(df   N�=f!,(df   g=f)	Nrfr��filter�rzfileobj.readlines() failed�r�SzOI will gladly admit that Python is not the fastest running scripting language.
)rT�extract�TEMPDIRrhr.�os�path�join�	readlinesrir,�
TextIOWrapperrkrl)r#rp�fobj1�lines1rq�fobj2�lines2s       r�test_fileobj_readlines�$UstarReadTest.test_fileobj_readlines~s���������'�&��A��(�(�$�$�_�5��
�"�'�'�,�,�w��8�#�
>�%��_�_�&�F�?��X�X�
!�
!�'�
*�d��$�$�T�*�E��_�_�&�F����V�V�0�
2����S��[�#�0�
2����V�B�Z�4�0�
2�+�
*�?�
>��+�
*�s�)D�A,D#�
D �#
D1c��URRS[SS9 URRS5n[	[
RR[S5S5nUR5nSSS5 URRU5n[[R"U55nURWUS5 SSS5 g!,(df   Ne=f!,(df   g=f)Nrfrrurwzfileobj.__iter__() failed)rTrzr{rhr.r|r}r~rri�listr,r�rk)r#rpr�r�r�r�s      r�test_fileobj_iter�UstarReadTest.test_fileobj_iter�s���������'�&��A��(�(�$�$�_�5��
�"�'�'�,�,�w��8�#�
>�%��_�_�&�F�?�
�X�X�
!�
!�'�
*�e��"�*�*�5�1�2�F����V�V�/�
1�+�
*�?�
>��
*�
*�s�)C�3C*�
C'�*
C8c�>�URRS[SS9 [[R
R
[S5S5nUR5nSSS5 URRS5nURRU5nUR5nURS5 URSUR5S5 URSS5 URSUR5S5 URS	S
5 URSUR5S5 URSS
5 URSUR5S
5 URS5nURUWSSS5 URSS5 URURUR5S5 URUR5SS5 URUR*S5 URSUR5S5 URS5 UR5nURS5 UR5nURXgS5 URS5 UR[UR!55UR5S5 URS5 UR[UR!55S-UR5S5 URS5 UR!5nURUR5U[U5SS5 SSS5 g!,(df   GN$=f!,(df   g=f)Nrfrru�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)rTrzr{r.r|r}r~rjrhri�seekrk�tellrmrrl�readline)	r#rqrrp�text�s�s1�s2�lines	         r�test_fileobj_seek�UstarReadTest.test_fileobj_seek�s���������'� &�	�	(�
�"�'�'�,�,�w��8�$�
?�4��9�9�;�D�@��(�(�$�$�_�5��
�X�X�
!�
!�'�
*�d��9�9�;�D��I�I�a�L����Q��	�	��8�
:��I�I�d�A�����T�4�9�9�;�=�
?��I�I�e�Q�����T�4�9�9�;�F�
H��I�I�d�A�����T�4�9�9�;�F�
H��	�	�"�
�A����Q��T�$��3�
5��I�I�a��O����W�\�\�4�9�9�;�6�
8����T�Y�Y�[�#�K�
M��I�I�w�|�|�m�Q�'����Q��	�	��?�
A��I�I�c�N����!�B��I�I�c�N����!�B����R�8�
:��I�I�a�L����S�����1�4�9�9�;�9�
;��I�I�c�N����S�����1�C�7�����D�
F��I�I�a�L��=�=�?�D����T�Y�Y�[�$�s�4�y�z�*:�9�
;�O+�
*�	@�
?��+�
*�s�M<�KN�<
N�
Nc�|�URRS5n[R"U5nUR	5RS5nUR
[U5[5 URS5 SSS5 g![a URS5 N&f=f!,(df   g=f)NrfrP�dzseeking failed in text mode)rTrir,r�rj�encoderkrrnr��AttributeError�fail�r#rqrs   r�test_fileobj_text�UstarReadTest.test_fileobj_text�s���
�X�X�
!�
!�/�
2�d��#�#�D�)�D��9�9�;�%�%�k�2�D����Y�t�_�n�=�
9��	�	�#��3�
2��"�
9��	�	�7�8�
9��
3�
2�s*�AB-�2B�B*�'B-�)B*�*B-�-
B;c�$�URRU5nURRU5nURURUR5 SSS5 SSS5 g!,(df   N=f!,(df   g=fr
)rTrirk�name)r#�lnktype�regtype�a�bs     r�_test_fileobj_link� UstarReadTest._test_fileobj_link�s_��
�X�X�
!�
!�'�
*�a�
�X�X�
!�
!�'�
*�a����Q�V�V�Q�V�V�,�+�+�
*�
*�
*��+�
*�s"�B�'A0�B�0
A>	�:B�
Bc�(�URSS5 g)N�
ustar/lnktyperf�r�r"s r�test_fileobj_link1� UstarReadTest.test_fileobj_link1���������Arc�(�URSS5 g)N�./ustar/linktest2/lnktype�ustar/linktest1/regtyper�r"s r�test_fileobj_link2� UstarReadTest.test_fileobj_link2������� ;� 9�	;rc�(�URSS5 g)N�
ustar/symtyperfr�r"s r�test_fileobj_symlink1�#UstarReadTest.test_fileobj_symlink1�r�rc�(�URSS5 g)N�./ustar/linktest2/symtyper�r�r"s r�test_fileobj_symlink2�#UstarReadTest.test_fileobj_symlink2�r�rc�(�URSS5 g)N�symtype2rfr�r"s r�test_issue14160�UstarReadTest.test_issue14160�s�����
�O�<rc�H�URS5 URS5 g)N�bar�eaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)�add_dir_and_getmemberr"s r�test_add_dir_getmember�$UstarReadTest.test_add_dir_getmember�s���"�"�5�)��"�"�7�+r�getuid�getgidz'Missing getuid or getgid implementationc	�z�Sn[R"5 [R"[S5n[R
Ul[R"U5 URXS9 [R"U5 SSS5 [R"[5nURURU5URUS-55 SSS5 SSS5 g![R"U5 f=f!,(df   N�=f!,(df   NC=f!,(df   g=f)Nc�"�S=UlUlU$)Nr�)�uid�gid�rps rrv�3UstarReadTest.add_dir_and_getmember.<locals>.filter�s��(+�+�G�K�'�+��Nr�wru�/)
r	�temp_cwdr/r.�tmpname�USTAR_FORMAT�formatr|�mkdir�add�rmdirrkrh)r#r�rvrTs    rr��#UstarReadTest.add_dir_and_getmember�s���	��
�
�
!����g�s�+�s�$�1�1��
�#��H�H�T�N��G�G�D�G�0��H�H�T�N�
,����g�&�#�� � ��M�M�$�'��M�M�$��*�-��'�"�
!���H�H�T�N��
,�+��'�&��"�
!�sR�D,�D
�%C/�1D
�"D,�*4D�D,�/D�D
�

D	�D,�
D)	�%D,�,
D:r&N)r'r(r)r*rrr�r�r�r�r�r�r�r�r�r�r��unittest�
skipUnless�hasattrr|r�r3r&rrrcrcssz��6�2�$1�/;�b
9�-�
B�;�B�;�=�,�
�����X�.�H�7�2�x�3H�B�D��D�rrcc��\rSrSrSrg)�GzipUstarReadTesti
r&N�r'r(r)r*r3r&rrr�r�
���rr�c��\rSrSrSrg)�Bz2UstarReadTesti
r&Nr�r&rrr�r�
r�rr�c��\rSrSrSrg)�LzmaUstarReadTestir&Nr�r&rrr�r�r�rr�c�,�\rSrSrSrSrSrSrSrg)�ListTestic�`�[R"URURS9Ulg)N�r$rSr"s rrU�ListTest.setUps���<�<����4�9�9�=��rc�^�[R"[R"5SSS9n[R"[
SU5 TRRSS9 SSS5 UR5R5nTRSU5 TRSU5 TRS	U5 TRS
U5 TRSU5 TRSU5 TRS
U5 TRSU5 U4SjnTRU"S5U5 TRU"S5U5 TRU"S5U5 TRU"S5U5 TRU"S5U5 TRUS5 TRSU5 TRSU5 g!,(df   GNr=f)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�t>�URTRRS5nURSS5$)N�surrogateescaper��backslashreplace)�decoderTrRr�)r�r�r#s  �r�conv� ListTest.test_list.<locals>.conv)s0���������*�*�,=�>�A��8�8�G�%7�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,r��BytesIOr�	swap_attr�sysrTr��detach�getvalue�assertIn�assertRegex�assertNotIn)r#�tio�outr�s`   r�	test_list�ListTest.test_lists�������r�z�z�|�W�d�C��
�
�
�s�H�c�
2��H�H�M�M�%�M�(�3��j�j�l�#�#�%���
�
�'��-��
�
�&��,��
�
�&��,��
�
�B�C�H��
�
�2�C�8��
�
�2�C�8��
�
�'��-��
�
�1�3�7�	9�	
�
�
�d�H�I�3�O��
�
�d�;�<�=@�	B��
�
�d�;�<�=@�	B��
�
�d�6�7��=��
�
�d�9�:�C�@�	
����7�	8�	
����S�)������$�C3�
2�s�G�
Gc�|�[R"[R"5SSS9n[R"[
SU5 URRSS9 SSS5 UR5R5nSnURUSRUVVVs/sHupEnUS	XV4-S
--PM snnn55 URSU5 URSU5 URS
U5 URSU5 URSU5 g!,(df   N�=fs snnnf)Nr�r�r�r�Tr�)	)�\?�	rw-r--r--�7011)�-r
r)�d�	rwxr-xr-x�0)r
rs255)r	r
r)�ls	rwxrwxrwxr)�bs	rw-rw----s3,0)�cs	rw-rw-rw-s1,3)�pr
rrs%s tarfile/tarfile\s+%s s;\d{4}-\d\d-\d\d\s+\d\d:\d\d:\d\d ustar/\w+type[/>\sa-z-]*\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,r�r�rr�r�rTr�r�rrr~r)r#rr�type_perm_lengths�tp�perm�lns       r�test_list_verbose�ListTest.test_list_verbose?s)�����r�z�z�|�W�d�C��
�
�
�s�H�c�
2��H�H�M�M�$�M�'�3��j�j�l�#�#�%��(��	
����c�h�h�"�
#�"�:F��2��0�D�:�=�3�3�4�"�
#�$�	%�	
�
�
�1�3�7��
�
�J�C�P��
�
�3�47�	9��
�
�5�69�	;��
�
�5�69�	;�?3�
2��(
#s�D&�%D7�&
D4c��[R"[R"5SSS9nSn[R"[
SU5 URRSU"UR5S9 SSS5 UR5R5nURSU5 URS	U5 g!,(df   NQ=f)
Nr�r�r�c3�f# �UR5HnSUR;dMUv� M g7f)N�reg)�
getmembersr�)rTrps  r�members�+ListTest.test_list_members.<locals>.memberses'����>�>�+���G�L�L�(�!�M�,�s�"1�	1r�F)r�rr�r�)r,r�r�rr�r�rTr�r�rrr)r#rrrs    r�test_list_members�ListTest.test_list_memberscs������r�z�z�|�W�d�C��	"��
�
�s�H�c�
2��H�H�M�M�%�����1B�M�C�3��j�j�l�#�#�%���
�
�&��,����*�C�0�	3�
2�s�	+B?�?
C
r[N)	r'r(r)r*rUrrr r3r&rrr�r�s��>�#%�J";�H
1rr�c��\rSrSrSrg)�GzipListTestipr&Nr�r&rrr#r#pr�rr#c��\rSrSrSrg)�Bz2ListTestitr&Nr�r&rrr%r%tr�rr%c��\rSrSrSrg)�LzmaListTestixr&Nr�r&rrr'r'xr�rr'c�P�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
Srg
)�CommonReadTesti|c�6�[[S5 SSS5 UR[R"[55 UR[R"[
R"[555 [[S5nUR[R"U55 SSS5 UR[R"[R"S555 g!,(df   N�=f!,(df   NY=f)N�wbr�sinvalid)	r.r��assertFalser/�
is_tarfiler	�FakePathr,r��r#rqs  r�test_is_tarfile_erroneous�(CommonReadTest.test_is_tarfile_erroneous~s���
�'�4�
 ��!�	
����+�+�G�4�5�	
����+�+�I�,>�,>�w�,G�H�I��'�4�
 �D����W�/�/��5�6�!�	
����+�+�B�J�J�z�,B�C�D�!�
 ��!�
 �s�C9�&D
�9
D�

Dc	��UR[R"UR55 UR[R"[R
"UR555 [
URS5nUR[R"U55 SSS5 [
URS5nUR[R"[R"UR5555 SSS5 g!,(df   Nu=f!,(df   g=f�Nr�)
�
assertTruer/r-r+r	r.r.r,r�rjr/s  r�test_is_tarfile_valid�$CommonReadTest.test_is_tarfile_valid�s�������*�*�4�<�<�8�9�	
����*�*�9�+=�+=�d�l�l�+K�L�M��$�,�,��
%���O�O�G�.�.�t�4�5�&��$�,�,��
%���O�O�G�.�.�r�z�z�$�)�)�+�/F�G�H�&�
%�	&�
%��&�
%�s�	&D�
AD/�
D,�/
D=c���[URS5n[R"U5 UR	UR5S5 SSS5 [URS5n[R"UR55n[R"U5 UR	UR5S5 SSS5 g!,(df   N�=f!,(df   g=f)Nr�r)	r.r+r/r-rkr�r,r�rj)r#rq�	file_likes   r�test_is_tarfile_keeps_position�-CommonReadTest.test_is_tarfile_keeps_position�s����$�,�,��
%�����t�$����T�Y�Y�[�!�,�&��$�,�,��
%���
�
�4�9�9�;�/�I����y�)����Y�^�^�-�q�1�&�
%�	&�
%��&�
%�s�7C�,AC!�
C�!
C/c���[R"[URR	SS55 SSS5 [R"[UR5nUR5 UR
UR5/5 WR5 g!,(df   Nu=f![Ra URS5 NIf=f!WR5 f=f)Nrwr�z&tarfile.open() failed on empty archive)r/r.r�r$�replace�getnames�assertListEqualr�	ReadErrorr�rX�r#rTs  r�test_empty_tarfile�!CommonReadTest.test_empty_tarfile�s���
�\�\�'�4�9�9�#4�#4�S�#�#>�
?��@�	��,�,�w��	�	�2�C��L�L�N�
� � ����!1�2�6��I�I�K�@�
?��
� � �	@��I�I�>�?�	@��

�I�I�K�s5�B'�5B8�6 C#�'
B5�8%C �C#�C � C#�#C5c��UR[S5 [R"SUR5 SSS5 g!,(df   g=f)N�xxx)�assertRaisesRegex�FileNotFoundErrorr/r.r$r"s r�test_non_existent_tarfile�(CommonReadTest.test_non_existent_tarfile�s3���
#�
#�$5�u�
=��L�L���	�	�*�>�
=�
=�s�"A�
Ac�<�[[S5 SSS5 UR[R[R[UR
5 UR[R[R[5 g!,(df   N�=f�Nr+)r.r��assertRaisesr/r?r$r"s r�test_null_tarfile� CommonReadTest.test_null_tarfile�s]���'�4�
 ��!����'�+�+�W�\�\�7�D�I�I�N����'�+�+�W�\�\�7�C�!�
 �s�B
�
Bc�H�[S5RS5nSH�nUR[S5nUR	US-5 [
R"S5n[U5UlUR	UR55 UR	U5 SSS5 [
R"[SSS	9nURUR5S/S
U-5 UR5 M� g!,(df   Nc=f!UR5 f=f)Nrr�)��ar�r��foorwT)r$�ignore_zerosz3ignore_zeros=True should have skipped the %r-blocks)
r�	randbytesr.r��writer/�TarInforlrm�tobufr>r=rX)r#r�charrqrprTs      r�test_ignore_zeros� CommonReadTest.test_ignore_zeros�s����a�y�"�"�3�'��!�D����7�C�(�D��
�
�4�$�;�'�!�/�/�%�0��"�4�y����
�
�7�=�=�?�+��
�
�4� �)��,�,�w�S�t�D�C�
��$�$�S�\�\�^�e�W�I�����	�	��!"�)�(���	�	��s�A+C>�%D�>
D	�D!c	�P�SGH�n[R"[S5n[R"S5nSUlURU[R"S55 SSS5 [[S5nURU5 SSS5 [R"[5nUR[RS5 UHnM SSS5 SSS5 [R"[5nUR5nUR[RS5 URU[SS	9 SSS5 UR[RS5 URU5R5 SSS5 SSS5 GM� g!,(df   GNM=f!,(df   GN5=f!,(df   N�=f!,(df   GN=f!,(df   N�=f!,(df   Nt=f!,(df   GM"=f)
N)r�iXr�i��w:rQr�saaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazr+bzunexpected end of datarru)r/r.r�rUrm�addfiler,r��truncaterEr?�nextrzr{rirj)r#rmrT�trqs     r�test_premature_end_of_archive�,CommonReadTest.test_premature_end_of_archive�sq��*�D����g�t�,���O�O�E�*��������A�r�z�z�+�6�7�-�
�g�u�%���
�
�d�#�&����g�&�#��+�+�G�,=�,=�?W�X� ���!�Y�'�
���g�&�#��H�H�J���+�+�G�,=�,=�?W�X��K�K��7�6�K�:�Y��+�+�G�,=�,=�?W�X��O�O�A�&�+�+�-�Y�
'�&�+�,�,��
&�%��Y�X��'�&��Y�X��Y�X��
'�&�sx�AF,�>F>�2!G!�
G�G!�1H�8G3�(H�6 H�H�,
F;	�>
G
	�
G�G!�!
G0	�3
H�=H�
H�H�
H%	c��UR[RS5 [R"[R
"SSS95 SSS5 SSS5 g!,(df   N=f!,(df   g=f)N�%file could not be opened successfullyz
recursion.tarrr)rEr/r?r.r�findfiler"s r�test_length_zero_header�&CommonReadTest.test_length_zero_header�sX���
#�
#�G�$5�$5�7^�
_����g�.�.��GX�Y�Z��[�`�
_�Z�Z��`�
_�s#�*A/�A�
A/�
A,	�(A/�/
A=c��URRS5nURRU5nURURS5 UR[UR5 URURS5 URUR5S5 URUR5S5 UR(a!UR[UR5 O URUR5S5 URURS5 SSS5 URWRS5 URURS5 UR[UR5 URURS5 URUR5S5 URUR5S5 UR(a!UR[UR5 gURUR5S5 g!,(df   GN=f)Nrfr�TF)rTrhrirkr�rKr��filenor$�assertIs�readable�writable�	is_stream�seekable�closed)r#�filerqs   r�test_extractfile_attrs�%CommonReadTest.test_extractfile_attrs�s����x�x�!�!�/�2��
�X�X�
!�
!�$�
'�4����T�Y�Y��8����n�d�k�k�:����T�Y�Y��-��M�M�$�-�-�/�4�0��M�M�$�-�-�/�5�1��~�~��!�!�.�$�-�-�@��
�
�d�m�m�o�t�4��M�M�$�+�+�u�-�(�	
�
�
�d�k�k�4�(�������O�4����.�$�+�+�6�������D�)��
�
�d�m�m�o�t�,��
�
�d�m�m�o�u�-��>�>����n�d�m�m�<��M�M�$�-�-�/�4�0�)(�
'�s�DI
�
Ir&N)r'r(r)r*r0r5r9rArGrLrXr`rerpr3r&rrr)r)|s7��E�"
I�
2��"+�D��,.�0�1rr)c�>�\rSrSrSrSrSrSrSrSr	S%S	jr
S
rSrSr
S
rSrSrSrSr\R("\"\S5S5\R0S55r\R4S5r\R4S5rSrSrSrSr Sr!Sr"\RF"\$SLS5S5r%Sr&S r'S!r(\R("\"\S5S5\R0S"55r)\R("\"\S5S5\R0S#55r*S$r+g)&�MiscReadTestBaseiFc���[URS5nURUR[5 [
R"XRS9nURUR[5 URUR[RRUR55 SSS5 SSS5 g!,(df   N=f!,(df   g=f�Nr���fileobjr$)r.r+�assertIsInstancer��strr/r$rkr|r}�abspath�r#rqrTs   r�test_no_name_argument�&MiscReadTestBase.test_no_name_arguments���
�$�,�,��
%���!�!�$�)�)�S�1����d���;�s��%�%�c�h�h��4�� � ����2�7�7�?�?�4�9�9�+E�F�<�&�
%�;�;��&�
%�s$�?C�A$C�:C�
C	�C�
C*c�Z�[URS5nUR5nSSS5 [R"W5nUR[[US5 [R"XRS9nURUR5 g!,(df   Nz=f)Nr�r�rv)r.r+rjr,r�rKr��getattrr/r$�assertIsNoner��r#rqrrTs    r�test_no_name_attribute�'MiscReadTestBase.test_no_name_attribute#sq��
�$�,�,��
%���9�9�;�D�&��z�z�$������.�'�4��@��l�l�4�i�i�8�����#�(�(�#�&�
%�s�B�
B*c�d�[URS5nUR5nSSS5 [R"W5nSUl[R"XRS9nURUR
5 SSS5 g!,(df   Nn=f!,(df   g=f)Nr�rrv)	r.r+rjr,r�r�r/r$r�r�s    r�test_empty_name_attribute�*MiscReadTestBase.test_empty_name_attribute+su��
�$�,�,��
%���9�9�;�D�&��z�z�$�����	�
�\�\�$�Y�Y�
7�3����c�h�h�'�8�
7�	&�
%��8�
7�s�B�+B!�
B�!
B/c��[R"UR[R5n[US5nUR	UR
[5 [R"X RS9nURUR
5 SSS5 SSS5 g!,(df   N=f!,(df   g=fru)
r|r.r+�O_RDONLYrxr��intr/r$r�)r#�fdrqrTs    r�test_int_name_attribute�(MiscReadTestBase.test_int_name_attribute3sz���W�W�T�\�\�2�;�;�
/��
�"�d�^�t��!�!�$�)�)�S�1����d���;�s��!�!�#�(�(�+�<��^�;�;���^�s#�?B9�;B(�B9�(
B6	�2B9�9
Cc��[R"UR5n[US5nUR	UR
[5 [R"X RS9nUR	UR
[5 URUR
[RRUR
55 SSS5 SSS5 g!,(df   N=f!,(df   g=fru)r|�fsencoder+r.rxr��bytesr/r$rkr}rz)r#r+rqrTs    r�test_bytes_name_attribute�*MiscReadTestBase.test_bytes_name_attribute<s����+�+�d�l�l�+��
�'�4�
 �D��!�!�$�)�)�U�3����d���;�s��%�%�c�h�h��6�� � ����2�7�7�?�?�4�9�9�+E�F�<�!�
 �;�;��!�
 �s$�?C2�,A$C!�C2�!
C/	�+C2�2
DNc�4�UcURn[RRU5n[R
"U5n[R"XRS9nURURU5 SSS5 URU5nURURU5 SSS5 [RRXRS9nURURU5 SSS5 URS:Xa;[R"USS9nURURU5 SSS5 gg!,(df   N�=f!,(df   N�=f!,(df   N|=f!,(df   g=f)Nr�rrw)r+r|r}rzr	r.r/r.r$rkr�r1r0r!)r#r+�expectedrTs    r�test_pathlike_name�#MiscReadTestBase.test_pathlike_nameDs���?��l�l�G��7�7�?�?�7�+���$�$�W�-��
�\�\�'�	�	�
2�c����S�X�X�x�0�3�
�\�\�'�
"�c����S�X�X�x�0�#�
�_�_�
!�
!�'�	�	�
!�
:�c����S�X�X�x�0�;��;�;�"������s�3�s�� � ����8�4�4�3��
3�
2��
"�
"��
:�
:��4�3�s0�#E�E'�%E8�/F	�
E$�'
E5�8
F�	
Fc�b�UR[R"UR55 gr
)r�r|r�r+r"s r�test_pathlike_bytes_name�)MiscReadTestBase.test_pathlike_bytes_nameSs��������D�L�L� 9�:rc��[[S5 SSS5 UR[S5 UR	[S5nSSS5 UR[S5 UR	[S5nSSS5 UR[S5 UR	[S5nSSS5 g!,(df   N�=f!,(df   N�=f!,(df   Nf=f!,(df   g=f)Nr+z
mode must be �q�rwr)r.r�rE�
ValueErrorr1r@s  r�test_illegal_mode_arg�&MiscReadTestBase.test_illegal_mode_argVs���
�'�4�
 ��!�
�
#�
#�J��
@��,�,�w��,�C�A�
�
#�
#�J��
@��,�,�w��-�C�A�
�
#�
#�J��
@��,�,�w��+�C�A�
@�
!�
 ��
@�
@��
@�
@��
@�
@�s.�B;�C�&C�C.�;
C	�
C�
C+�.
C<c�V�[R"URURS9nUR	5 UR	5nUR
nURnURU5nUR5nSSS5 UR5 URUR5nURU5 URURSUS9nUR	5nURUR
U5 UR5 URURU5R5WS5 SSS5 SSS5 g!,(df   N�=f!UR5 f=f!,(df   N==f!,(df   g=f)Nr�rN�r$rwzseek back did not work)
r/r.r+r$r^r��offsetrirjrXr�rkr)r#rTr_r�r��frrqs        r�test_fileobj_with_offset�)MiscReadTestBase.test_fileobj_with_offset`s2���l�l�4�<�<�d�i�i�8��	��H�H�J����
�A��6�6�D��X�X�F�����#�q��v�v�x��$�
�I�I�K��Y�Y�t�|�|�
$���I�I�f�����$�,�,�T�4��@�C��H�H�J��� � �����.���� �� � �����!3�!8�!8�!:�D�0�2�
A�	%�
$�
$�#��
�I�I�K��A�@��	%�
$�sI�A	E4�4E#�E4�8-F�%A-F	�F�#
E1�-E4�4F�	
F	�F�
F(c�B�UR[R[R[UR
5 [[S5nUR[R[RXR
S9 SSS5 g!,(df   g=fru)rKr/r?r.r+r$r/s  r�test_fail_comp�MiscReadTestBase.test_fail_comp|sd�����'�+�+�W�\�\�7�D�I�I�N�
�'�4�
 �D����g�/�/����&*���
�
<�!�
 �
 �s�8B�
Bc��URRS5nURUR[R
S5 g)Nzmisc/dirtype-old-v7zv7 dirtype failed)rTrhrk�typer/�DIRTYPE�r#rps  r�test_v7_dirtype� MiscReadTestBase.test_v7_dirtype�s6���(�(�$�$�%:�;��������w���#�	%rc�~�URRS5 g![a URS5 gf=f)Nzmisc/regtype-xstarz3failed to find misc/regtype-xstar (mangled prefix?))rTrh�KeyErrorr�r"s r�test_xstar_type� MiscReadTestBase.test_xstar_type�s9��	M��H�H���3�4���	M��I�I�K�L�	M�s��<�<c�(�URH�nUR[UR5SSUR-5 URRS5(dMXURURSSUR-5 M� g)N鏽>zwrong mtime for %szustar/r/zwrong uname for %s)rTrkr��mtimer��
startswith�unamer�s  r�test_check_members�#MiscReadTestBase.test_check_members�sq���x�x�G����S����/��(�7�<�<�7�
9��<�<�*�*�8�4�4�����W�]�]�I�(�7�<�<�7�
9� rc�t�URURR5SRSS5 g)N���zmisc/eofzcould not find all members)rkrTrr�r"s r�test_find_members�"MiscReadTestBase.test_find_members�s/��������,�,�.�r�2�7�7��,�	.r�link�Missing hardlink implementationc�R�[R"[SSS9nURS[SS9 UR[R[RR[S55 URS[SS9 UR[R[RR[S55 [[RR[S5S5nUR5nSSS5 UR[W5[5 URS	[SS9 UR[R[RR[S	55 [[RR[S	5S5nUR5nSSS5 UR[U5[5 SSS5 g!,(df   N�=f!,(df   NG=f!,(df   g=f)
Nr�rP)�
errorlevelrRrfrrur�r�r�)r/r.r+rzr{�
addCleanupr	�unlinkr|r}r~rjrkrrn)r#rTr�rs    r�test_extract_hardlink�&MiscReadTestBase.test_extract_hardlink�s\��
�\�\�'�a�+�
F�#��K�K����K�@��O�O�I�,�,�b�g�g�l�l�7�O�.T�U��K�K����K�@��O�O�I�,�,�b�g�g�l�l�7�O�.T�U��b�g�g�l�l�7�O�<�d�C�q��v�v�x��D����Y�t�_�n�=��K�K����K�@��O�O�I�,�,�b�g�g�l�l�7�O�.T�U��b�g�g�l�l�7�O�<�d�C�q��v�v�x��D����Y�t�_�n�=�G�
F�D�C��D�C��G�
F�s=�CH�8G6�	B,H�5H�'H�6
H	�H�
H	�H�
H&c��[R"[SS9n[RR[S5n[R"U5 UVs/sHo3R5(dMUPM nnURX$SS9 UH�n[RRX%R5n[RS:waKURURS-[R"U5R S-UR5 Sn[RR#U5nS	R%U"UR&5U"U5U5n	URUR&X�5 M� UR)5 [*R,"U5 gs snf!UR)5 [*R,"U5 f=f)
NrP�rR�
extractall�
fully_trustedru�win32�c��[U[5(aSRXR55$SRU5$)Nz{} ({})z
{!r} (int))�
isinstance�floatr��hex)r�s r�format_mtime�6MiscReadTestBase.test_extractall.<locals>.format_mtime�s7��!�%��/�/�(�/�/��y�y�{�C�C�+�2�2�5�9�9rz,tar mtime {0} != file time {1} of path {2!a})r/r.r+r|r}r~r{r��isdirr�r�r��platformrkr$�stat�st_mode�getmtimer�r�rXr	�rmtree)
r#rT�DIRr_�directoriesrpr}r��
file_mtime�errmsgs
          r�test_extractall� MiscReadTestBase.test_extractall�sU���l�l�7�[�9���g�g�l�l�7�L�1��
����
�	"�&)�7�c��W�W�Y�1�c�K�7��N�N�3�O�N�D�&���w�w�|�|�C���6���<�<�7�*��$�$�W�\�\�E�%9�%'�W�W�T�]�%:�%:�U�%B�%,�\�\�3�:�
 �W�W�-�-�d�3�
�G�N�N� ����/� ��,����� � ����
�C�#'�&
�I�I�K����S�!��-8��*
�I�I�K����S�!�s%�F1�F,�5F,�;D
F1�,F1�1(Gc���Sn[RR[S5n[R"U5 [
R"[SS9nURU5nURXBSS9 [RRX!5nUR[RRU5UR5 [RS:wa3UR[R"U5R S-S	5 SSS5 ["R$"U5 g!,(df   N%=f!["R$"U5 f=f)
N�
ustar/dirtype�
extractdirrPr�r��r}rvr�r�i�)r|r}r~r{r�r/r.r+rhrzrkr�r�r�r�r�r�r	r��r#�dirtyper�rTrp�	extracteds      r�test_extract_directory�'MiscReadTestBase.test_extract_directory�s���!���g�g�l�l�7�L�1��
����
�		"����g��<���-�-��0�����G�o��F��G�G�L�L��6�	�� � ����!1�!1�)�!<�g�m�m�L��<�<�7�*��$�$�R�W�W�Y�%7�%?�%?�%�%G��O�
=�
���S�!�=�<��
���S�!�s$�E�CD7�E�7
E�E�E c� �[R"[5S-n[R"U5 [
R"[SS9nUVs/sHo3R5(dMUPM nnUR[S5nURX5 SSS5 URWR[5 SSS5 SSS5 gs snf!,(df   ND=f!,(df   N-=f!,(df   g=f)Nr�rPr��Use the filter argument)�pathlib�Pathr{r	�temp_dirr/r.r+r��assertWarnsRegex�DeprecationWarningr�rk�filename�__file__)r#r�rTr_r��cms      r�2test_deprecation_if_no_filter_passed_to_extractall�CMiscReadTestBase.test_deprecation_if_no_filter_passed_to_extractall�s����l�l�7�#�l�2�����s�#��L�L��;�7�3�&)�7�c��W�W�Y�1�c�K�7��&�&�'9�;T�U�Y[����s�0�V�
���R�[�[�(�3�

8�
$�#��8�U�U��
8�7��
$�#�sS�C?�C.�C�/C�5C.�
C�(C.�C?�C.�
C+�'C.�.
C<	�8C?�?
D
c���Sn[R"[5S-n[R"U5 [
R"[SS9nURU5nUR[S5nURXBS9 SSS5 URWR[5 SSS5 SSS5 g!,(df   N?=f!,(df   N(=f!,(df   g=f)Nr�r�rPr�r��r})r�r�r{r	r�r/r.r+rhr�r�rzrkr�r�)r#r�r�rTrpr�s      r�/test_deprecation_if_no_filter_passed_to_extract�@MiscReadTestBase.test_deprecation_if_no_filter_passed_to_extract�s���!���l�l�7�#�l�2�����s�#��L�L��;�7�3��m�m�G�,�G��&�&�'9�;T�U�Y[����G��.�V�
���R�[�[�(�3�

8�
$�#�V�U��
8�7��
$�#�s;�C#�(C�8C�(C�0C#�
C�C�
C 	�C#�#
C1c��[RR[S5n[R
"U5 [R"[SS9nUVs/sHo3R5(dMUPM nnUR[R"U5USS9 UHen[RRXR5nURRU5UR5 Mg SSS5 SSS5 gs snf!,(df   N=f!,(df   g=f)Nr�rPr�r�ru)r|r}r~r{r	r�r/r.r+r�r�r.r�rkr�r�)r#r�rTr_r�rpr}s       r�test_extractall_pathlike_dir�-MiscReadTestBase.test_extractall_pathlike_dir�s����g�g�l�l�7�L�1��
�
�
��
$�
�\�\�'�K�
8�C�&)�7�c��W�W�Y�1�c�K�7��N�N�9�-�-�c�2�K��N�X�&���w�w�|�|�C���6��� � ����!1�!1�$�!7����G�'�9�%�
$��7�9�
8��%�
$�s<�D5�D$�D�6D�<BD$�D5�D$�$
D2	�.D5�5
Ec�2�Sn[RR[S5n[R
"U5 [R"[SS9nURU5nURU[R"U5SS9 [RRX!5nUR[RRU5UR5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nr�r�rPr�r�r�)r|r}r~r{r	r�r/r.r+rhrzr.rkr�r�r�s      r�test_extract_pathlike_dir�*MiscReadTestBase.test_extract_pathlike_dir	s���!���g�g�l�l�7�L�1��
�
�
��
$�
�\�\�'�K�
8�C��m�m�G�,�G��K�K��i�&8�&8��&=�o�K�V������S�2�I����R�W�W�-�-�i�8�'�-�-�H�	9�%�
$�
8�
8��%�
$�s$�D�BC7�&D�7
D	�D�
Dc�(�[RR[S5n[	US5nURS5 SSS5 [R[R5nURU5 URS5 [ R""U5 g!,(df   Nl=f![Ra( URURR5 Ncf=f![ R""U5 f=f)N�emptyr+rzReadError not raised)r|r}r~r{r.rT�object�__new__r/r0�__init__r�r?r4rwrnr	r�)r#r�rqrTs    r�test_init_close_fobj�%MiscReadTestBase.test_init_close_fobjs��������W�g�.��
�%��
�$��J�J�s�O��		$��.�.����1�C�
2����U�#��	�	�0�1����U�#��
���$�$�
4������� 2� 2�3�
4��

���U�#�s;�B)�#C9�0B:�C9�)
B7�:9C6�3C9�5C6�6C9�9Dc�H�[R"UR5n[X5HYup#UR	UR
UR
5 UR	UR
5UR
55 M[ SSS5 g!,(df   g=fr
)r/r.r+�ziprkr��get_info)r#rT�m1�m2s    r�test_parallel_iteration�(MiscReadTestBase.test_parallel_iteration&sf���\�\�$�,�,�
'�3��c�-���� � ����B�I�I�6�� � ��������
�>�(�(�
'�
'�s�A)B�
B!z
requires zlibc�R�[RRS5n[RUlUR
[R5 [R"UR5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nztarfile.TarInfo.fromtarfile)r��mock�patch�zlib�error�side_effectrKr/r?r.r+)r#rs  r�test_zlib_error_does_not_leak�.MiscReadTestBase.test_zlib_error_does_not_leak.sh���]�]�
 �
 �!>�
?�4�#�z�z�D���"�"�7�#4�#4�5����T�\�\�*�6�@�
?�5�5��@�
?�s#�5B�!B�6B�
B	�B�
B&c��[R"5n[R"USS9nUR	5 URS5 [R"USS9nUR
UR5S5 SSS5 URS5 [R"USS9nUR
UR5S5 SSS5 g!,(df   N^=f!,(df   g=f)Nr�rvr�r|rw)r,r�r/r.rXr�rkr^)r#r��tfs   r�test_next_on_empty_tarfile�+MiscReadTestBase.test_next_on_empty_tarfile7s���
�Z�Z�\��
�\�\�"�3�
/��
���
�
����
�
�\�\�"�4�
0�B����R�W�W�Y��-�1�	����
�
�\�\�"�3�
/�2����R�W�W�Y��-�0�
/�	1�
0��0�
/�s�!!C�0!C+�
C(�+
C9c��[RRUS5n[RRUS5n[RRUS5n[US5nUR	S5 SSS5 [R
"U5 [R"X$5 X$4$!,(df   N==f)N�target�ustarr�r+�target)r|r}r~r.rT�makedirs�symlink)r#�temp_dirpath�target_filepath�
ustar_dirpath�hardlink_filepathr�s      r�_setup_symlink_to_target�)MiscReadTestBase._setup_symlink_to_targetDs����'�'�,�,�|�X�>�������\�7�;�
��G�G�L�L��	�B��
�/�4�
(�A�
�G�G�I��)�
���M�"�
�
�
�?�6��1�1�	)�
(�s�-B6�6
Cc��[US5nUR5nSSS5 UR[W5U5 g!,(df   N*=fr3)r.rjrkr)r#�filepath�digestr�rs     r�_assert_on_file_content�(MiscReadTestBase._assert_on_file_contentNs;��
�(�D�
!�Q��6�6�8�D�"�����4��&�1�"�
!�s�A�
Ac��[R"5nURU5up#[R"[
SS9nUR
SUSS9 UR
SUSS9 URU[S55 URU[5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)	�w
This test verifies that extracting a hardlink will not follow an
existing symlink after a FileExistsError on os.link.
rPr�rfrrur�rN)
r	r�r!r/r.r+rzr&rrn�r#r�rr rTs     r� test_extract_hardlink_on_symlink�1MiscReadTestBase.test_extract_hardlink_on_symlinkSs����
�
�
!�S�15�1N�1N�s�1S�.�O����g��<�����O�S���@����O�S���@��,�,�_�i�	�>R�S��,�,�->��O�	=�"�
!�<�<��"�
!�s$�-B9�AB(�B9�(
B6	�2B9�9
Cc�v�[R"5nURU5up#[R"[
SS9nUR
USS/SS9 URU[S55 URU[5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)	r)rPr�rfr�r)rrvrN)
r	r�r!r/r.r+r�r&rrnr*s     r�#test_extractall_hardlink_on_symlink�4MiscReadTestBase.test_extractall_hardlink_on_symlinkds����
�
�
!�S�15�1N�1N�s�1S�.�O����g��<������/�?�!C�F����,�,�_�i�	�>R�S��,�,�->��O�=�"�
!�<�<��"�
!�s$�-B*�AB�B*�
B'	�#B*�*
B8r&r
),r'r(r)r*rlr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r|r	�skip_unless_symlinkr��skip_unless_working_chmodr�r�r�r�r�r�rr�skipIfr
rrr!r&r+r.r3r&rrrsrss����I�G�$�(�,�G�
5�;�,�2�8<�%�M�9�.������V�,�:�<��"�"�>�#�<�>�$�(�(�"�)�"�>�(�(�
"�)�
"�
4�4�H�I�$�&?��_�_�T�T�\�?�3�+�4�+�.�2�2�
�����F��>���"�"�P�#��P������F��>���"�"�P�#��Prrsc��\rSrSrSrSrg)�MiscReadTestiwNr&)r'r(r)r*r�r3r&rrr4r4ws���Nrr4c��\rSrSrSrg)�GzipMiscReadTestizr&Nr�r&rrr6r6zr�rr6c��\rSrSrSrg)�Bz2MiscReadTesti}r&Nr�r&rrr8r8}r�rr8c��\rSrSrSrg)�LzmaMiscReadTesti�r&Nr�r&rrr:r:�r�rr:c�4�\rSrSrSrSrSrSrSrSr	Sr
g	)
�StreamReadTesti�rTc�T�URH[nUR5(dMURRU5nURS5nW(dOMSSS5 M] g![R
a UR
S5 N>f=f!,(df   M�=f)Nr�z6simple read-through using TarFile.extractfile() failed)rT�isregrirjr/�StreamErrorr�)r#rprq�bufs    r�test_read_through� StreamReadTest.test_read_through�s����x�x�G��=�=�?�?�����%�%�g�.�$��B�"�i�i��n�����/�.� ��#�.�.�B��	�	�#A�B�B��	/�.�s0�B�A-�
B�-%B�B�B�B�
B'	c�N�URR5nURRU5nUR5nSSS5 UR	[W5URS5 UR	[U5[S5 g!,(df   NU=f)Nrg)	rTr^rirjrkrlrmrrnros    rrr�(StreamReadTest.test_fileobj_regular_file�st���(�(�-�-�/��
�X�X�
!�
!�'�
*�d��9�9�;�D�+�����T��G�L�L�0�	2�����4��.�0�	2�	+�
*�s�B�
B$c��URR5nURRUS5nUR[R
UR5 SSS5 g!,(df   g=f�Nr)rTrrirKr/r?rj)r#�tarinfosr�s   r�test_provoke_stream_error�(StreamReadTest.test_provoke_stream_error�sR���8�8�&�&�(��
�X�X�
!�
!�(�1�+�
.�!����g�1�1�1�6�6�:�/�
.�
.�s�+A-�-
A;c���[R"[SS9nURnUR	5nUR	5nUcO�URUS5 UR
5(dUR5(a;UR[R5 URU5 SSS5 M�URU5nURU5nUcM�URUS5 URUR5UR5S5 GMUR5 g!,(df   N�=f!UR5 f=f)NrPr�zstream.next() failed.zstream.extractfile() failedzstream extraction failed)r/r.r+rTr^�assertIsNotNone�islnk�issymrKr?rirkrjrX)r#�tar1�tar2�t1�t2�v1�v2s       r�test_compare_members�#StreamReadTest.test_compare_members�s���|�|�G�k�:��	��8�8�D���Y�Y�[���Y�Y�[���:���$�$�R�)@�A��8�8�:�:�������*�*�7�+>�+>�?��(�(��,�@���%�%�b�)���%�%�b�)���:���$�$�R�)F�G�� � �����B�G�G�I�2�4�#�(
�J�J�L�@�?��
�J�J�L�s%�BE�'D?�9A5E�?
E
�	E�E"r&N)r'r(r)r*r rlrArrrHrTr3r&rrr<r<�s ���F��I�� 2�;�
rr<c��\rSrSrSrg)�GzipStreamReadTesti�r&Nr�r&rrrWrW�r�rrWc��\rSrSrSrg)�Bz2StreamReadTesti�r&Nr�r&rrrYrY�r�rrYc��\rSrSrSrg)�LzmaStreamReadTesti�r&Nr�r&rrr[r[�r�rr[c��\rSrSrSrSrg)�TarStreamModeReadTesti�c�v�URHnM URURR/5 gr
)rTrkr)r#�_s  r�test_stream_mode_no_cache�/TarStreamModeReadTest.test_stream_mode_no_cache�s-�����A���������)�)�2�.rr&N)r'r(r)r*r`r3r&rrr]r]�s��/rr]c��\rSrSrSrg)�GzipStreamModeReadTesti�r&Nr�r&rrrcrc�r�rrcc��\rSrSrSrg)�Bz2StreamModeReadTesti�r&Nr�r&rrrere�r�rrec��\rSrSrSrg)�LzmaStreamModeReadTesti�r&Nr�r&rrrgrg�r�rrgc�2�\rSrSrSrSrSrSrSrSr	g)	�DetectReadTesti�c��[R"X5nUR5 g![RanUR	5 SnAgSnAff=fr
)r/r.rXr?r�)r#r�r$rT�es     r�_testfunc_file�DetectReadTest._testfunc_file�sC��	��,�,�t�*�C�
�I�I�K��� � �	��I�I�K�K��	�s�)�A�A�Ac��[US5n[R"XUS9nSSS5 WR5 g!,(df   N=f![RanUR	5 SnAgSnAff=f)Nr��rw)r.r/rXr?r�)r#r�r$r�rTrks      r�_testfunc_fileobj� DetectReadTest._testfunc_fileobj�s\��	��d�D�!�Q��l�l�4�q�9��"�

�I�I�K�"�!��� � �	��I�I�K�K��	�s+�A�=�A�
A�A�A<�"A7�7A<c��UR(Ga*UR[R5 [R"[
SUR-S9 SSS5 UR[R5 [R"[
SUR-S9 SSS5 UR[R5 [R"UR
SS9 SSS5 UR[R5 [R"UR
SS9 SSS5 U"UR
S5 U"UR
SUR-5 U"UR
S5 U"UR
SUR-5 U"UR
S5 g!,(df   GNe=f!,(df   GN)=f!,(df   N�=f!,(df   N�=f)NrNr�rrwzr:*�r|*)r!rKr/r?r.r+)r#�testfuncs  r�_test_modes�DetectReadTest._test_modes�s7���;�;�;��"�"�7�#4�#4�5����W�4�$�+�+�+=�>�6��"�"�7�#4�#4�5����W�4�$�+�+�+=�>�6��"�"�7�#4�#4�5����T�\�\��5�6��"�"�7�#4�#4�5����T�\�\��5�6�����s�#�����t�d�k�k�1�2�����u�%�����t�d�k�k�1�2�����u�%�6�5��5�5��5�5��5�5�s/�'F7�'G	� G� G,�7
G�	
G�
G)�,
G:c�:�URUR5 gr
)rurlr"s r�test_detect_file�DetectReadTest.test_detect_file�s������,�,�-rc�:�URUR5 gr
)rurpr"s r�test_detect_fileobj�"DetectReadTest.test_detect_fileobjs������/�/�0rr&N)
r'r(r)r*rlrprurxr{r3r&rrriri�s����&� .�1rric��\rSrSrSrg)�GzipDetectReadTestir&Nr�r&rrr~r~r�rr~c��\rSrSrSrSrg)�Bz2DetectReadTestic�.�[[S5nUR5nSSS5 [R"[
SSS9nUR
W5 SSS5 UR[
S5 g!,(df   NY=f!,(df   N6=f)Nr�r+r���
compresslevelrs)r.r+rjr?rAr�rTrlr�s   r�test_detect_stream_bz2�(Bz2DetectReadTest.test_detect_stream_bz2si��
�'�4�
 �D��9�9�;�D�!��[�[��$�a�
8�D��J�J�t��9�	
���G�U�+�!�
 ��9�
8�s�A5�B�5
B�
Br&N)r'r(r)r*r�r3r&rrr�r�s��,rr�c��\rSrSrSrg)�LzmaDetectReadTestir&Nr�r&rrr�r�r�rr�c��\rSrSrSrSrSrg)� GzipBrokenHeaderCorrectExceptioniz6
See: https://github.com/python/cpython/issues/107396
c���[R"S5nUR[R5 [R
"USS9 SSS5 g!,(df   g=f)Ns�zr|gzrv)r,r�rKr/r?r.)r#r�s  r�runTest�(GzipBrokenHeaderCorrectException.runTestsE���J�J�
�
���
�
�w�0�0�
1��L�L���0�2�
1�
1�s�A�
A#r&N)r'r(r)r*�__doc__r�r3r&rrr�r�s���
1rr�c��\rSrSrSSjrSrSrSrSrSr	S	r
S
rSrSr
S
rSrSrSrSrSrSrSrSrSrg)�MemberReadTesti*Nc	���Ub[URRU5nUR[UR	55USUR
-5 SSS5 SUS'SUS'SUS'SUR
;a
S	US
'S	US'UR
5H3upVUR[X5USU<S
UR
<35 M5 g!,(df   N=f)N�wrong sha256sum for %sr�r���r�r�r�zold-v7r/r��gnamezwrong value in z
 field of )rTrirkrrjr��itemsr)r#rp�chksum�kwargsr��k�vs       r�_test_member�MemberReadTest._test_member,s��������%�%�g�.�!�� � ��1�6�6�8�!4�f�0�7�<�<�?�A�/�'��w����u�
���u�
��7�<�<�'�'�F�7�O�'�F�7�O��L�L�N�D�A����W�W�0�!�78�'�,�,�G�
I�#�/�.�s�8C�
Cc�d�URRS5nURUS[S9 g)Nrf�c�rmr��rTrhr�rnr�s  r�test_find_regtype� MemberReadTest.test_find_regtype=s+���(�(�$�$�_�5�����'��^��Drc�d�URRS5nURUS[S9 g)Nzustar/conttyper�r�r�r�s  r�test_find_conttype�!MemberReadTest.test_find_conttypeAs,���(�(�$�$�%5�6�����'��^��Drc�Z�URRS5nURUSS9 g)Nr�r�rm�rTrhr�r�s  r�test_find_dirtype� MemberReadTest.test_find_dirtypeEs)���(�(�$�$�_�5�����'���*rc�Z�URRS5nURUSS9 g)Nzustar/dirtype-with-size�r�r�r�s  r�test_find_dirtype_with_size�*MemberReadTest.test_find_dirtype_with_sizeIs*���(�(�$�$�%>�?�����'���,rc�\�URRS5nURUSSS9 g)Nr�rrf�rm�linknamer�r�s  r�test_find_lnktype� MemberReadTest.test_find_lnktypeMs+���(�(�$�$�_�5�����'��O��Drc�\�URRS5nURUSSS9 g)Nr�rr�r�r�r�s  r�test_find_symtype� MemberReadTest.test_find_symtypeQs+���(�(�$�$�_�5�����'��I��>rc�^�URRS5nURUSSSS9 g)N�
ustar/blktyper��rm�devmajor�devminorr�r�s  r�test_find_blktype� MemberReadTest.test_find_blktypeU�-���(�(�$�$�_�5�����'��A���Brc�^�URRS5nURUSSSS9 g)N�
ustar/chrtyperr�r�r�r�r�s  r�test_find_chrtype� MemberReadTest.test_find_chrtypeYr�rc�Z�URRS5nURUSS9 g)N�ustar/fifotyperr�r�r�s  r�test_find_fifotype�!MemberReadTest.test_find_fifotype]s*���(�(�$�$�%5�6�����'���*rc�d�URRS5nURUS[S9 g)Nzustar/sparse�Pr��rTrhr��
sha256_sparser�s  r�test_find_sparse�MemberReadTest.test_find_sparseas+���(�(�$�$�^�4�����'��m��Drc�d�URRS5nURUS[S9 g)N�
gnu/sparser�r�r�r�s  r�test_find_gnusparse�"MemberReadTest.test_find_gnusparsees+���(�(�$�$�\�2�����'��m��Drc�d�URRS5nURUS[S9 g)N�gnu/sparse-0.0r�r�r�r�s  r�test_find_gnusparse_00�%MemberReadTest.test_find_gnusparse_00i�,���(�(�$�$�%5�6�����'��m��Drc�d�URRS5nURUS[S9 g)N�gnu/sparse-0.1r�r�r�r�s  r�test_find_gnusparse_01�%MemberReadTest.test_find_gnusparse_01mr�rc�d�URRS5nURUS[S9 g)N�gnu/sparse-1.0r�r�r�r�s  r�test_find_gnusparse_10�%MemberReadTest.test_find_gnusparse_10qr�rc�d�URRS5nURUS[S9 g)Nuustar/umlauts-ÄÖÜäöüßr�r�r�r�s  r�test_find_umlauts� MemberReadTest.test_find_umlautsus2���(�(�$�$�&D�E�����'��^��Drc�Z�SnURXRR55 g)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)rrTr=)r#r�s  r�test_find_ustar_longname�'MemberReadTest.test_find_ustar_longnamezs ��<���
�
�d�H�H�-�-�/�0rc�d�URRS5nURUS[S9 g)Nzmisc/regtype-old-v7r�r�r�r�s  r�test_find_regtype_oldv7�&MemberReadTest.test_find_regtype_oldv7~s,���(�(�$�$�%:�;�����'��^��Drc��URR5 [R"URUR
SS9UlURR
S5nURUS[S9 g)NrPrQupax/umlauts-ÄÖÜäöüßr�r�)	rTrXr/r.r+r$rhr�rnr�s  r�test_find_pax_umlauts�$MemberReadTest.test_find_pax_umlauts�s_���������<�<����4�9�9�)4�6����(�(�$�$�&D�E�����'��^��Drr[r
)r'r(r)r*r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r3r&rrr�r�*so��I�"E�E�+�-�E�?�C�C�+�E�E�E�E�E�E�
1�E�Err�c�8�\rSrSrSrSrSrSrSrSr	Sr
g	)
�LongnameTesti�c��URS-S-S-nURRU5nURWR[RS5 g![a UR	S5 NIf=f)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)	rrTrhr�r��assertNotEqualr�r/r�)r#r�rps   r�test_read_longname�LongnameTest.test_read_longname�sp���;�;��$�|�3�j�@��	,��h�h�(�(��2�G�	
���G�L�L�'�/�/�*�	,���	,��I�I�*�+�	,�s�A�A<�;A<c��URS-S-S-nURS-S-S-nURRU5nURWRUS5 g![a UR	S5 N;f=f)Nr�r�r��longlinkzlonglink not foundzlinkname wrong)rrTrhr�r�rkr�)r#r�r�rps    r�test_read_longlink�LongnameTest.test_read_longlink�s����;�;��$�|�3�j�@���;�;��$�|�3�j�@��	,��h�h�(�(��2�G�	
����)�)�8�5E�F���	,��I�I�*�+�	,�s�A%�%B�Bc���URS-S-S-nURRU5nURnURRRU5 [R"URRRS55nUR[R5 [R"SUS9 SSS5 g!,(df   g=f)Nr�r�r�izfoo.tar)r�rw)
rrTrhr�rwr�r,r�rjrKr/r?r.)r#r�rpr�rqs     r�test_truncated_longname�$LongnameTest.test_truncated_longname�s����;�;��$�|�3�j�@���(�(�$�$�X�.�������������f�%��z�z�$�(�(�*�*�/�/��8�9��
�
�
�w�0�0�
1��L�L�i��6�2�
1�
1�s�:C�
C'c��URS-S-S-nURRU5Rn[	[
S5nUR
U5 [RRURS5SS5nURURUR5 SSS5 g!,(df   g=f)Nr�r�r�r�r�rP�strict)rrTrhr�r.r+r�r/rU�frombufrjrkr��longnametype)r#r�r�rqrps     r�test_header_offset�LongnameTest.test_header_offset�s����;�;��$�|�3�j�@�����#�#�H�-�4�4��
�'�4�
 �D��I�I�f���o�o�-�-�d�i�i��n�.9�8�E�G����W�\�\�4�+<�+<�=�	!�
 �
 �s
�A(B<�<
C
c	���Sn[R"5 [R"[S5nUR
Ul[R"U5 URU5 [R"URS55 SSS5 [R"[5nURURU55 URURURS555 SSS5 SSS5 g![R"URS55 f=f!,(df   N�=f!,(df   NR=f!,(df   g=f)Nzfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/r�r�)r	r�r/r.r�r�r|r�r�r��rstriprKrh�removesuffix)r#�longdirrTs   r�test_longname_directory�$LongnameTest.test_longname_directory�s���#��
�
�
�
!����g�s�+�s�!�[�[��
�2��H�H�W�%��G�G�G�$��H�H�W�^�^�C�0�1�
,����g�&�#��$�$�S�]�]�7�%;�<��$�$�S�]�]�7�3G�3G��3L�%M�N�'�"�
!���H�H�W�^�^�C�0�1��
,�+��'�&��"�
!�sS�E#�E�'D�.%E�"E#�6AE�E#�'D>�>E�
E	�E#�
E 	�E#�#
E1c��[R"5n[R"SXRS9n[R
"5n[RUlSUlURU5 UR5Vs0sHoDRUR_M nnSSS5 URS5 [R"SUS9nUR5Vs0sHoDRUR_M nnSSS5 URWW5 gs snf!,(df   N�=fs snf!,(df   N<=f)Nr�)r$rwr�zgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbrrwr�)
r,r�r/r.r�rU�AREGTYPEr�r�r\rr�rk)r#r@rT�tir_r��actuals       r� test_longname_file_not_directory�-LongnameTest.test_longname_file_not_directory�s����j�j�l��
�\�\�s�C���
D�����"�B��&�&�B�G�2�B�G��K�K��O�03���0@�A�0@�1�������0@�H�A�
E�	�����
�\�\�s�C�
0�C�.1�n�n�.>�?�.>��f�f�a�f�f�n�.>�F�?�1�	
����6�*��
B�
E�
D��@�1�
0�s<�AD/�
 D*�*D/�E�- E�
E�*D/�/
D=�E�
Er&N)r'r(r)r*r�r�r�r�rrr3r&rrr�r��s"��,�G�7�	>�
O�+rr�c�v�\rSrSrSr\Rr\Rr	Sr
SrSrSr
Sr\S5rS	rg
)�GNUReadTesti��gnuc���URRU[SS9 [RR[U5n[
US5nUR5nSSS5 UR[W5[SU-5 UR5(a@[R"U5nURURS-UR5 gg!,(df   N�=f)Nrrur�r�r�)rTrzr{r|r}r~r.rjrkrr��_fs_supports_holesr��
assertLess�	st_blocks�st_size)r#r�r�rqrr�s      r�_test_sparse_file�GNUReadTest._test_sparse_file�s���������w�v��6��7�7�<�<���.��
�(�D�
!�T��9�9�;�D�"�����4��-�(�4�/�	1��"�"�$�$�����!�A��O�O�A�K�K�#�-�q�y�y�9�%�"�
!�s�C"�"
C0c�&�URS5 g)Nr��rr"s r�test_sparse_file_old� GNUReadTest.test_sparse_file_old�s�����|�,rc�&�URS5 g)Nr�rr"s r�test_sparse_file_00�GNUReadTest.test_sparse_file_00�������/�0rc�&�URS5 g)Nr�rr"s r�test_sparse_file_01�GNUReadTest.test_sparse_file_01�rrc�&�URS5 g)Nr�rr"s r�test_sparse_file_10�GNUReadTest.test_sparse_file_10�rrc���[RRS5(a�[RR[S5n[US5nURS5 URS5 UR5 SSS5 [R"U5n[R"U5 URS-UR:$g!,(df   NW=f)N)�linux�androidzsparse-testr+isxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr�F)r�r�r�r|r}r~r{r.r�rTr]r�r	r�rr)r�rqr�s   rr�GNUReadTest._fs_supports_holes�s����<�<�"�"�#7�8�8��7�7�<�<���7�D��d�D�!�T��	�	�$���
�
�;�'��
�
��	"�
����
�A����T�"��K�K�#�%��	�	�1�2��"�!�s�3C�
C'r&N)r'r(r)r*rr/�GNUTYPE_LONGNAMEr��
GNU_FORMATr�rrrrr �staticmethodrr3r&rrrr�sJ��
�F��+�+�L�
�
�
�F�
:�-�1�1�1����rrc�Z�\rSrSrSr\Rr\Rr	Sr
SrSrSr
g)�PaxReadTesti�paxc�:�[R"[SS9nURS5nUR	UR
S5 UR	URS5 UR	URRS5S5 URS5nUR	UR
S	5 UR	URS5 UR	URRS5S5 URS
5nUR	UR
S5 UR	URS5 UR	URRS5S5 UR5 g!UR5 f=f)NrPr��pax/regtype1rQr�zVENDOR.umlautsuÄÖÜäöüßzpax/regtype2rzpax/regtype3r/)
r/r.r+rhrkr�r��pax_headers�getrX�r#rTrps   r�test_pax_global_headers�#PaxReadTest.test_pax_global_headerssA���l�l�7�[�9��	��m�m�N�3�G����W�]�]�E�2����W�]�]�E�2����W�0�0�4�4�5E�F�;�
=��m�m�N�3�G����W�]�]�B�/����W�]�]�E�2����W�0�0�4�4�5E�F�;�
=��m�m�N�3�G����W�]�]�I�6����W�]�]�I�6����W�0�0�4�4�5E�F�;�
=�
�I�I�K��C�I�I�K�s�EF�Fc�v�[R"[SS9nURS5nUR	UR
S5 UR	URS5 UR	URS5 UR	URS5 UR	[UR5[5 UR	[URS5S5 UR	[URS5S5 UR5 g!UR5 f=f)	NrPr�zpax/regtype4r��{g��^�A�atime�ctime)
r/r.r+rhrkrmr�r�r�r�r�r.rXr0s   r�test_pax_number_fields�"PaxReadTest.test_pax_number_fields/s����l�l�7�[�9��
	��m�m�N�3�G����W�\�\�4�0����W�[�[�#�.����W�[�[�#�.����W�]�]�L�9����T�'�-�-�0�%�8����U�7�#6�#6�w�#?�@�,�O����U�7�#6�#6�w�#?�@�,�O��I�I�K��C�I�I�K�s�C:D&�&D8c	��SnSS0nUGHYnURUS9 [R"[S[RSS9n[R
"5nSUlS	UlX%lURU5 UR5 [[S
5nUR5nURSU5 URSU5nSSS5 [[S5nUR5 URW5 SSS5 UR![R"S
5 [R"[SS9 SSS5 SSS5 GM\ g!UR5 f=f!,(df   N�=f!,(df   N�=f!,(df   NS=f!,(df   GM�=f)N)
s	 foo=bar
s0 
s1 
s2 
s3 =
s4 =a
s1000000 foo=bar
s
0 foo=bar
s-12 foo=bar
s$000000000000000000000000036 foo=bar
rQr�)�headerr�rP�r�rRr+r�r�s11 foo=bar
r+z)method tar: ReadError\('invalid header'\)r�)�subTestr/r.r��
PAX_FORMATrUr�r�r.r\rXrjrr<r]rTrEr?)r#�pax_header_replacementsr.�replacementrTr_r�rs        r�test_pax_header_bad_formats�'PaxReadTest.test_pax_header_bad_formats>sH��#
���e�n��2�K����[��1��l�l�7�C��8J�8J�,7�9�� ����)�A�"�A�F��A�E�$/�M��K�K��N��I�I�K��'�4�(�A��6�6�8�D��M�M�/�4�8��<�<���E�D�)�
�'�4�(�A��J�J�L��G�G�D�M�)��+�+�G�,=�,=�?k�l��L�L��;�?�m�+2�1�3���I�I�K��(�(��
)�(��m�l��+2�1�sk�*F0�:E(� F0�!5E=�F0�."F�(F0�8F�F0�(E:�:F0�=
F�F0�
F�F0�
F-�)F0�0
G	r&N)r'r(r)r*rr/�XHDTYPEr�r=r�r1r7r@r3r&rrr*r*s+��
�F��?�?�L�
�
�
�F��.
�(@rr*c� �\rSrSrSrSrSrg)�
WriteTestBaseiic���[R"5n[R"XRS9nUR[R"S55 SSS5 URURS5 UR5nA[R"5 URUR5 URX1R55 g!,(df   N�=f)NrvrQz#external fileobjs must never closed)
r,r�r/r.r$r\rUr,rnrr�
gc_collectrk)r#rqrTrs    r�test_fileobj_no_close�#WriteTestBase.test_fileobj_no_closems����z�z�|��
�\�\�$�Y�Y�
7�3��K�K�����.�/�8�������&K�L��}�}��������������%�����}�}��/�8�
7�s�&C�
C-c�4�[R"[UR5n[R"S5n[R
[R-
UlURU[R"SUR-55 SSS5 UR[S5nUR[UR55[R
S-5 SSS5 g!,(df   Nh=f!,(df   g=f)NrQrPr�r�)r/r.r�r$rU�
RECORDSIZE�	BLOCKSIZErmr\r,r�rkrlrj)r#rTr_rqs    r�test_eof_marker�WriteTestBase.test_eof_markerys���
�\�\�'�4�9�9�
-������&�A��'�'�'�*;�*;�;�A�F��K�K��2�:�:�d�Q�V�V�m�4�5�.�
�Y�Y�w��
%�����S�����-�w�/A�/A�A�/E�F�&�
%�.�
-��
&�
%�s�A0C8�4;D	�8
D�	
Dr&N)r'r(r)r*rGrLr3r&rrrDrDis
��
0�GrrDc��\rSrSrSrSrSrSrSrSr	Sr
\R"\
"\S	5S
5S5r\R"S5rS
rSrSSjr\R"S5rSrSrSrSrSrSrg)�	WriteTesti�r[c��Sn[R"[UR5n[R"U5nURU5 UR
5 [R"[5nURUR5SUS5 UR
5 g!UR
5 f=f!UR
5 f=f)N�d0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789rz!failed to store 100 char filename)	r/r.r�r$rUr\rXrkr=)r#r�rTr_s    r�test_100_char_name�WriteTest.test_100_char_name�s���
!���l�l�7�D�I�I�.��	�����%�A��K�K��N��I�I�K��l�l�7�#��	����S�\�\�^�A�.��7�
9�
�I�I�K��
�I�I�K��
�I�I�K�s�'B0�;$C�0C�Cc���[R"[UR5n[R
R
[S5n[US5nURS5 SSS5 URU5 UR5 UR[R
R[5SS5 g!,(df   Nd=f!UR5 f=f)Nror+�aaarztarfile is empty)
r/r.r�r$r|r}r~r{rTr�rX�
assertGreater�getsize)r#rTr}rqs    r�
test_tar_size�WriteTest.test_tar_size�s����l�l�7�D�I�I�.��	��7�7�<�<���0�D��d�D�!�T��
�
�6�"�"��G�G�D�M��I�I�K����2�7�7�?�?�7�3�Q�"�	$�"�!��
�I�I�K�s#�0C�C�)C�
C�C�C*c�R�[R"[UR5n[R
R
[S5n[US5 SSS5 URU5nURURS5 [US5nURS5 SSS5 URU5nURURS5 UR5 g!,(df   N�=f!,(df   N]=f!UR5 f=f)Nror+rrUr�)
r/r.r�r$r|r}r~r{�
gettarinforkrmrTrX)r#rTr}rprqs     r�test_file_size�WriteTest.test_file_size�s����l�l�7�D�I�I�.��	��7�7�<�<���0�D��d�D�!��"��n�n�T�*�G����W�\�\�1�-��d�D�!�T��
�
�6�"�"��n�n�T�*�G����W�\�\�1�-��I�I�K�"�!��
"�!��

�I�I�K�s<�0D�C2�AD�D�,5D�2
D�<D�
D�
D�D&c���[RR[S5n[R"U5 [
R"[UR5nURU5nURURS5 UR5 [R"U5 g!UR5 f=f![R"U5 f=f)N�	directoryr)r|r}r~r{r�r/r.r�r$r[rkrmrXr	r��r#r}rTrps    r�test_directory_size�WriteTest.test_directory_size�s����w�w�|�|�G�[�1��
�����	"��,�,�w��	�	�2�C�
��.�.��.��� � ����q�1��	�	���O�O�D�!���	�	����O�O�D�!�s#�%C�"-B7�C�7C	�	C�C$c�l�[RR[S5n[R"U5 [[RRUS5S5R
5 [[RRUS5S5R
5 [R
"[UR5n[RRS5nSS/Ul
URU5 SSS5 /nUR5H>nUR![RR#UR$5S5 M@ UR'U/SQ5 UR
5 [(R*"[RRUS55 [(R*"[RRUS55 [(R,"U5 g!,(df   GN=f!UR
5 f=f![(R*"[RRUS55 [(R*"[RRUS55 [(R,"U5 f=f)Nr_�1r��2z
os.listdirr�)r_rdre)r|r}r~r{r�r.rXr/r�r$r�rr�return_valuer�r�append�splitr�rkr	r�r�)r#r}rT�mock_listdir�paths�ms      r�test_ordered_recursion� WriteTest.test_ordered_recursion�s����w�w�|�|�G�[�1��
������R�W�W�\�\�$��
$�c�*�0�0�2��R�W�W�\�\�$��
$�c�*�0�0�2�	"��,�,�w��	�	�2�C�	
��]�]�(�(��6�,�14�c�
�L�-��G�G�D�M�7������)�A��L�L������q�v�v�!6�r�!:�;�*�� � ��(?�@��	�	�����R�W�W�\�\�$��4�5����R�W�W�\�\�$��4�5��O�O�D�!�7�6���	�	������R�W�W�\�\�$��4�5����R�W�W�\�\�$��4�5��O�O�D�!�s>�,%H3�H�1H�A0H�<H3�
H�H�H0�0H3�3BJ3c�h�[R"[UR5n[R
R
[S5n[US5nURS5 SSS5 UR[R"U55nURU5nURUR[5 URURUR5 URUR S5 SSS5 g!,(df   N�=f!,(df   g=f)Nror+rUr�)r/r.r�r$r|r}r~r{rTr[r	r.rxr�ryrkrm)r#rTr}rqrp�tarinfo2s      r�test_gettarinfo_pathlike_name�'WriteTest.test_gettarinfo_pathlike_name�s���
�\�\�'�4�9�9�
-���7�7�<�<���0�D��d�D�!�T��
�
�6�"�"��n�n�Y�%7�%7��%=�>�G��~�~�d�+�H��!�!�'�,�,��4����W�\�\�8�=�=�9����W�\�\�1�-�.�
-�!�!��.�
-�s$�1D#�D�)B D#�
D 	�D#�#
D1r�r�c�V�[RR[S5n[RR[S5n[	US5nURS5 SSS5 [R"X!5 [R"[UR5nURU5 URU5nURURS5 UR5 [ R""U5 [ R""U5 g!,(df   N�=f![anURSU-5 SnAN�SnAff=f!UR5 f=f![ R""U5 [ R""U5 f=f)Nr��link_targetr+rU�
os.link(): %sr)r|r}r~r{r.rTr��PermissionError�skipTestr/r�r$r[rkrmrXr	r�)r#r�rrqrkrTrps       r�test_link_size�WriteTest.test_link_size�s"���w�w�|�|�G�V�,�������g�}�5��
�&�$�
�4��J�J�v�� �	/��G�G�F�!�	#��,�,�w��	�	�2�C�
����v�&��.�.��.��� � ����q�1��	�	�����V�$����T�"�# �
���	/��M�M�/�A�-�.�.��	/���	�	������V�$����T�"�sH�D)�0D:�%E:�->E%�+E:�)
D7�:
E"�E�E"�%E7�7E:�:.F(c���[RR[S5n[R"SU5 [
R"[UR5nURU5nURURS5 UR5 [R"U5 g!UR5 f=f![R"U5 f=f)Nrrsr)r|r}r~r{rr/r.r�r$r[rkrmrXr	r�r`s    r�test_symlink_size�WriteTest.test_symlink_sizes����w�w�|�|�G�Y�/��
�
�
�=�$�'�	#��,�,�w��	�	�2�C�
��.�.��.��� � ����q�1��	�	�����T�"���	�	������T�"�s#�%C
�#-B8�C
�8C
�
C
�
C%c�J�[RR[5n[R
"[UR5nURURUS5 URU5 URUR5/S5 [R"[5 URU5 SSS5 URUR5/S5 UR5 g!,(df   N@=f!UR5 f=f)Nzarchive name must be absolutezadded the archive to itself)r|r}rzr�r/r.r$rkr�r�r=r	�
change_cwdr{rX)r#�dstnamerTs   r�
test_add_self�WriteTest.test_add_selfs����'�'�/�/�'�*���l�l�7�D�I�I�.��	����S�X�X�w�3�
5��G�G�G�����S�\�\�^�R�1�
3��%�%�g�.����� �/����S�\�\�^�R�1�
3�
�I�I�K�/�.��

�I�I�K�s%�
A)D�3C?�)D�?
D
�	D�D"c���[RR[S5n[R"U5 SH8n[RRX5n[
R"U5 M: Sn[R"[URSS9nURUSUS9 UR5 UR[5 URUSSSU5 SSS5 [R"[S	5nUH;nURUR S
5 URUR"S5 M= UR[%UR'55S5 UR5 [
R("U5 g!UR5 f=f!,(df   N�=f!UR5 f=f![
R("U5 f=f)
Nrv)rQr��bazc�~�[RRUR5S:XagSUlSUlU$)Nr�r4rQ)r|r}�basenamer�r�r�r�s rrv�%WriteTest.test_filter.<locals>.filter-s3���7�7�#�#�G�L�L�1�U�:��!��� %��
��rrPr��	empty_dir)�arcnamervTrwr4rQr�)r|r}r~r{r�r	�create_empty_filer/r.r�r$r�rXrK�	TypeErrorrkr�r�rlrr�)r#�tempdirr�rvrTrps      r�test_filter�WriteTest.test_filter%sf���'�'�,�,�w��1��
�����	&�-���w�w�|�|�G�2���+�+�D�1�.�
��,�,�w��	�	�K�H�C�
������V��D��	�	���"�"�9�-������d�D�&�A�.��,�,�w��,�C�
�"�G��$�$�W�[�[�#�6��$�$�W�]�]�E�:� #�� � ��S�^�^�%5�!6��:��	�	�����W�%���	�	���.�-���	�	������W�%�sU�A%G�"F$�3%G�F9�.#G�A*G
�<G�$F6�6G�9
G�G�
G�G�G7Nc��[RR[S5nU(d[R
"U5 O[R"U5 [R"[UR5nURXAS9 UR5 [R"[S5nUR5nUR5 U(d[R"U5 O[R"U5 UR!UR"U=(d  UR%[R&S55 g!UR5 f=f!UR5 f=f)NrQ�r�rwr�)r|r}r~r{r	r�r�r/r.r�r$r�rXr^r�r�rkr�r<�sep)r#r}�cmp_path�dirrQrTr_s       r�_test_pathname�WriteTest._test_pathnameMs����g�g�l�l�7�E�*����'�'��,��H�H�S�M��l�l�7�D�I�I�.��	��G�G�C�G�&��I�I�K��l�l�7�C�(��	����
�A��I�I�K�����S�!��O�O�C� ��������!F�T�\�\�"�&�&�#�-F�G��
�I�I�K��
�I�I�K�s�?E�:E'�E$�'E9c��[RR[S5n[RR[S5n[R"U5 [RRUS5n[RRUS5n[US5nUR
S5 SSS5 [R"X45 [R
"US5nURUSS9 URUSS9 SSS5 [R
"USS	9nURUS
S9 SSS5 [R"U5 [R"U5 g!,(df   N�=f!,(df   N{=f![a URS5 Ntf=f!,(df   N~=f![R"U5 [R"U5 f=f)
N�testsymlinksztestsymlinks.tar�sourcerr�z
something
r�r��r�r�r�z&extractall failed with symlinked files)r|r}r~r{r�r.rTrr/r�r��OSErrorr�r	r�r�)r#r��temparchive�source_file�target_filer�rTs       r�test_extractall_symlinks�"WriteTest.test_extractall_symlinksjsn���'�'�,�,�w��7���g�g�l�l�7�,>�?��
�����	&��'�'�,�,�w�x�8�K��'�'�,�,�w�y�9�K��k�#�&�!����
�&�'��J�J�{�0����k�3�/�3�����X��6�����Y��7�0����k�a�8�C�H��N�N��*9�#�;�9�
���[�)����W�%�!'�&��0�/���H��I�I�F�G�H��9�8��
���[�)����W�%�ss� AG�,E8�>5G�3!F	�G�1F;�3F�G�8
F�G�	
F�G�F8�5F;�7F8�8F;�;
G	�G�.G:c��URS5 UR[RRSSS55 UR[RRSSS55 UR[RRSS55 UR[RRSSS55 UR[RRSSSS55 UR[RRSSSS55 UR[RRSSSS55 UR[RRSS55 UR[RRSSS55 UR[RRSSSS55 UR[RRSSSS55 URS[R-[R-S-5 URS[R-[R-SSS9 g)NrQ�.r��..T)r�)r�r|r}r~r�r"s r�test_pathnames�WriteTest.test_pathnames�s������E�"����B�G�G�L�L���U�;�<����B�G�G�L�L���e�<�=����B�G�G�L�L��e�4�5����B�G�G�L�L��e�S�9�:����B�G�G�L�L��e�S�%�@�A����B�G�G�L�L��e�T�5�A�B����B�G�G�L�L��e�T�5�A�B����B�G�G�L�L��u�5�6����B�G�G�L�L��u�d�;�<����B�G�G�L�L��u�c�5�A�B����B�G�G�L�L��u�d�E�B�C����E�B�F�F�N�R�V�V�3�e�;�<����E�B�F�F�N�R�V�V�3�U���Erc��[RS:XaURSS5 gURSS5 URSS5 g)Nr�zC:\foorQz/fooz///foo)r�r�r�r"s r�test_abs_pathnames�WriteTest.test_abs_pathnames�s>���<�<�7�"����	�5�1������.�����%�0rc�H�[R"[5 [R"[
UR5nURS5 UR5 [R"[
S5nUHJnURS:wdMURURRS5UR5 ML UR5 SSS5 g!UR5 f=f!UR5 f=f!,(df   g=f)Nr�rw�./)r	r}r{r/r.r�r$r�rXr�r4r��r#rTr_s   r�test_cwd�WriteTest.test_cwd�s���
�
!�
!�'�
*��,�,�w��	�	�2�C�
�������	�	���,�,�w��,�C�
��A��v�v��}�������(9�(9�$�(?����H���	�	��+�
*��
�	�	����	�	���+�
*�sA�&D�C)�+D�?C>�9C>�D�)C;�;D�>D�D�
D!c��^�[[[4H�m"U4SjS[R5nU"5n[
R"U5 URT5 [R"[URU[RSS0S9 SSS5 SSS5 URUR5 M� g!,(df   N6=f!,(df   N?=f)Nc�&>�\rSrSrSrU4SjrSrg)�8WriteTest.test_open_nonwritable_fileobj.<locals>.BadFilei�Tc�:>�UR(a	SUlTeg�NF��first)r#r�exctypes  �rrT�>WriteTest.test_open_nonwritable_fileobj.<locals>.BadFile.write�s����z�z�%*��
�%�
�"rr�N)r'r(r)r*r�rTr3)r�s�r�BadFiler��s�����&�&rr��nonr�)rwr�r.)r��EOFError�RuntimeErrorr,r�r�check_no_resource_warningrKr/r.r�r$r=r,rn)r#r�r�r�s   @r�test_open_nonwritable_fileobj�'WriteTest.test_open_nonwritable_fileobj�s������,�6�G�
&�"�*�*�
&��	�A��9�9�$�?��!�!�'�*����W�d�i�i��$+�$6�$6�*/��)9�;�+�@�
���Q�X�X�&�!7�+�*��@�?�s$�C�!7C�C�
C�C�
C'	c�,�[R"[UR5nUR	[
5nUR
[5 URU5 SSS5 SSS5 g!,(df   N=f!,(df   g=fr
)	r/r.r�r$r[r+rKr�r\r0s   r�test_missing_fileobj�WriteTest.test_missing_fileobj�s[��
�\�\�'�4�9�9�
-���n�n�W�-�G��"�"�:�.����G�$�/�.�
-�.�.��.�
-�s#�+B�A4�#B�4
B	�>B�
Br&r�)r'r(r)r*r rRrXr\rarlrpr�r�r�r|rwr	r0rzrr�r�r�r�r�r�r�r�r3r&rrrOrO�s���
�F��($�� "�"�,	.������V�,�:�<�#�<�#�,�"�"�#�#�#��$"&�PH�:�"�"�&�#�&�4F�"1��"'�&%rrOc��\rSrSrSrg)�
GzipWriteTesti�r&Nr�r&rrr�r��r�rr�c��\rSrSrSrg)�Bz2WriteTesti�r&Nr�r&rrr�r��r�rr�c��\rSrSrSrg)�
LzmaWriteTesti�r&Nr�r&rrr�r��r�rr�c��\rSrSrSrSrSr\R"\	RS:g=(a	 \"\S5S5\R"\R=(d \R S5S	55rS
rSrg)�StreamWriteTesti��w|Nc�^�[R"[UR5nUR	5 UR
(agUR5n[[S5nUR
5nSSS5 URW5nURURS5 O.UR[5nUR
5nSSS5 URWRS5[RS5 g!,(df   N�=f!,(df   NP=f)Nr�zfound trailing datarOzincorrect zero padding)
r/r.r�r$rX�decompressorrj�
decompressr,�unused_datark�countrJ)r#rT�decrqrs     r�test_stream_padding�#StreamWriteTest.test_stream_padding�s����l�l�7�D�I�I�.���	�	������#�#�%�C��g�t�$���y�y�{��%��>�>�$�'�D����S�_�_�.C�D����7�#�t��y�y�{��$�������E�*�G�,>�,>�0�	2�%�$��
$�#�s�'D
�D�
D�
D,r��umaskzMissing umask implementationz$Emscripten's/WASI's umask is a stub.c��[RR[5(a[R
"[5 [R"S5n[R"[UR5nUR5 [R"[5RS-nURUSS5 [R"U5 g![R"U5 f=f)N�r�i�zwrong file permissions)r|r}�existsr�r	r�r�r/r.r$rXr�r�rk)r#�original_umaskrTr$s    r�test_file_mode�StreamWriteTest.test_file_mode�s����7�7�>�>�'�"�"����W�%����%���	%��,�,�w��	�	�2�C��I�I�K��7�7�7�#�+�+�e�3�D����T�5�*B�C��H�H�^�$��B�H�H�^�$�s
�A/C � C8c��[RR[5n[R
"[5n[R[RR4HmnUR5 U"X R5nURURU5 SSS5 [R"[5 SSS5 Mo g!,(df   N5=f!,(df   M�=fr
)r|r}rzr�r	r.r/r.r0r<r$rkr�r�)r#�
expected_name�tarpath�funcrTs     rr��"StreamWriteTest.test_pathlike_name�s���������0�
��$�$�W�-���\�\�7�?�?�#7�#7�8�D������'�9�9�-���$�$�S�X�X�}�=�.�� � ��)� ��9�-�-�� ��s$�;C+�C�+"C+�
C(�$C+�+
C:	r&)r'r(r)r*r r�r�r�r�r�r�r�r|r2r�
is_emscripten�is_wasir�r�r3r&rrr�r��su��
�F��L�2� �������0�I�W�R��5I�7�9�
�_�_����0����.��
%�	�9�
%�*rr�c��\rSrSrSrSrg)�GzipStreamWriteTesti	c��[R"[UR5R	5 [
R"[5RSS9ng)zN
Ensure the source directory is not included in the tar header
per bpo-41316.
zlatin-1r�N)r/r.r�r$rXr�r��	read_text)r#�payloads  r� test_source_directory_not_leaked�4GzipStreamWriteTest.test_source_directory_not_leaked
s;��
	���W�d�i�i�(�.�.�0��,�,�w�'�1�1�9�1�E�rr&N)r'r(r)r*r�r3r&rrr�r�	s��7rr�c�>�\rSrSr\(a\R
OSrSrg)�Bz2StreamWriteTestiNr&)r'r(r)r*r?�BZ2Decompressorr�r3r&rrr�r�s��*-�3�&�&�4�Lrr�c�>�\rSrSr\(a\R
OSrSrg)�LzmaStreamWriteTestiNr&)r'r(r)r*rH�LZMADecompressorr�r3r&rrr�r�s��,0�4�(�(�d�Lrr�c�*�\rSrSrSrSrSrSrSrg)�_CompressedWriteTestisFAnd we move to Bristol where they have a special, Very Silly candidatec�8�[R"5n[R"[UR
UUS9nUR
[R"S5[R"UR55 SSS5 U$!,(df   U$=f)Nr�rQ)	r,r�r/r.r�r$r\rUr�)r#r�rq�tarfls    r�_compressed_tar�$_CompressedWriteTest._compressed_tar sk���z�z�|��
�\�\�'�4�9�9�d�(5�7�:?��M�M�'�/�/�%�0�"�*�*�T�[�[�2I�J�7���7�7���s�AB
�

Bc�r�URU5nURUR5SSSU-5 g)Nrr�sBZh%d1AY&SY�r�rkr�r#r�rqs   r�_test_bz2_header�%_CompressedWriteTest._test_bz2_header's7���#�#�M�2����������2�.�'�-�7�	9rc�l�URU5nURUR5SSS5 g)Nr�s�r�r�s   r�_test_gz_header�$_CompressedWriteTest._test_gz_header,s/���#�#�M�2����������!�,�o�>rr&N)	r'r(r)r*r�r�r�r�r3r&rrr�r�s��&�F��9�
?rr�c��\rSrSrSrSrSrg)�Bz2CompressWriteTesti0r[c�j�URS5 URS5 URS5 g�Nr���	�r�r"s r�test_compression_levels�,Bz2CompressWriteTest.test_compression_levels2�,�����a� ����a� ����a� rr&N�r'r(r)r*r r�r3r&rrr�r�0s��
�F�!rr�c��\rSrSrSrSrSrg)�Bz2CompressStreamWriteTesti7r�c�j�URS5 URS5 URS5 gr�r�r"s rr��2Bz2CompressStreamWriteTest.test_compression_levels:rrr&Nrr&rrrr7s��
�F�!rrc��\rSrSrSrSrSrg)�GzCompressWriteTesti?r[c�j�URS5 URS5 URS5 gr��r�r"s rr��+GzCompressWriteTest.test_compression_levelsA�,�����Q�����Q�����Q�rr&Nrr&rrrr?s��
�F� rrc��\rSrSrSrSrSrg)�GzCompressStreamWriteTestiFr�c�j�URS5 URS5 URS5 gr�r
r"s rr��1GzCompressStreamWriteTest.test_compression_levelsIrrr&Nrr&rrrrFs��
�F� rrc�H�\rSrSrSr\R"5S5rSrg)�CompressLevelRaisesiNc���Sn[R"5nUR[5 [R
"[SX!S9 SSS5 g!,(df   g=f)Nr�r[r�)r,r�rKr�r/r.r�r�s   r�test_compresslevel_wrong_modes�2CompressLevelRaises.test_compresslevel_wrong_modesOs<���
��z�z�|��
�
�
�y�
)��L�L��$��J�*�
)�
)�s�A�
Ac���[R"5nUR[5 [R
"[SUSS9 SSS5 UR[5 [R
"[SUSS9 SSS5 UR[5 [R
"[SUSS9 SSS5 g!,(df   N�=f!,(df   NY=f!,(df   g=f)Nzw:bz2rr�r�zw|bz2)r,r�rKr�r/r.r�r/s  r�test_wrong_compresslevels�-CompressLevelRaises.test_wrong_compresslevelsUs����z�z�|��
�
�
�z�
*��L�L��'�4�q�A�+�
�
�
�z�
*��L�L��'�4�r�B�+�
�
�
�z�
*��L�L��'�4�r�B�+�
*�	+�
*��
*�
*��
*�
*�s#�C�$C�C$�
C�
C!�$
C2r&N)	r'r(r)r*rr�requires_bz2rr3r&rrrrNs'��K�
����C��Crrc�d�\rSrSrSrSSjrSSjrSrSrSr	S	r
S
rSrSr
S
rSrSrg)�GNUWriteTesti`c�.�[U5S-S-nUS-$)Nr�r�)rl)r#r��blockss   r�_length�GNUWriteTest._lengthds���Q��3���"����|�rNc���Sn[U5[R:�aUS-
nX0RU5-
nUb5[U5[R:�aUS-
nX0RU5-
nU$)Nr�)rlr/�LENGTH_NAMEr�LENGTH_LINK)r#r�r�r�s    r�
_calc_size�GNUWriteTest._calc_sizehsi�����t�9�w�*�*�*��S�L�E��\�\�$�'�'�E����D�	�G�,?�,?� ?��S�L�E��\�\�$�'�'�E��rc��[R"U5nU(aX#l[RUl[R
"[S5n[RUlURU5 URX5nURnURXVS5 UR5 [R
"[5nUR5nURUS5 URUR UR S5 URURURS5 UR5 g!UR5 f=f!UR5 f=f)Nr�z%GNU longname/longlink creation failedzunable to read longname member)r/rUr��LNKTYPEr�r.r�r'r�r\r#r�rkrXr^rKr�)r#r�r�rprTrRrS�members        r�_test�GNUWriteTest._testvs���/�/�$�'���#��"�?�?�G�L��l�l�7�C�(��	� �+�+�C�J��K�K�� �����,�B����B����R�%L�M��I�I�K��l�l�7�#��		��X�X�Z�F�� � ��4�
6����W�\�\�6�;�;�4�
6����W�-�-�v���4�
6�
�I�I�K��
�I�I�K��
�I�I�K�s�AE�A0E+�E(�+E=c�&�URS5 g)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�r(r"s r�test_longname_1023�GNUWriteTest.test_longname_1023�s���
�
�1�2rc�&�URS5 g)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/longnamer,r"s r�test_longname_1024�GNUWriteTest.test_longname_1024�s���
�
�2�3rc�&�URS5 g)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_r,r"s r�test_longname_1025�GNUWriteTest.test_longname_1025�s���
�
�3�4rc�(�URSS5 g)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/longlnkr,r"s r�test_longlink_1023�GNUWriteTest.test_longlink_1023�s���
�
�6�9�:rc�(�URSS5 g)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/longlinkr,r"s r�test_longlink_1024�GNUWriteTest.test_longlink_1024�s���
�
�6�:�;rc�(�URSS5 g)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_r,r"s r�test_longlink_1025�GNUWriteTest.test_longlink_1025�s���
�
�6�;�<rc�(�URSS5 g)Nr+r8r,r"s r�test_longnamelink_1023�#GNUWriteTest.test_longnamelink_1023�s���
�
�1�1�	3rc�(�URSS5 g)Nr0r<r,r"s r�test_longnamelink_1024�#GNUWriteTest.test_longnamelink_1024�s���
�
�2�2�	4rc�(�URSS5 g)Nr4r@r,r"s r�test_longnamelink_1025�#GNUWriteTest.test_longnamelink_1025�s���
�
�3�3�	5rr&r
)r'r(r)r*rr#r(r-r1r5r9r=rArDrGrJr3r&rrrr`s>�����:3�4�5�;�<�=�3�4�5rrc��\rSrSrSrSrSrg)�DeviceHeaderTesti�r[c�>�[RR[S5n[R"U5 [
R"[UR5n[
R"SS9n[
R"SS9n[
RUl[
RUlURU5 URU5 UR5 [
R"[S5nURS5nURS5nUR5 UR!UR"S5 UR!UR$S5 UR!UR"S5 UR!UR$S5 [
[S5nUR'5nSSS5 WUR(UR*n	X�R(UR*n
[-SS	5nUR!X�S
5 UR!X�S5 [.R0"U5 g!UR5 f=f!UR5 f=f!,(df   N�=f![.R0"U5 f=f)N�device_header_test�my_block_device�r��my_regular_filerwrr�iIiYs00000000000000s)r|r}r~r{r�r/r.r�r$rU�BLKTYPEr��REGTYPEr\rXrhrkr�r�rjr��offset_data�slicer	r�)r#r�rT�	input_blk�	input_reg�
output_blk�
output_reg�infiler@�buf_blk�buf_reg�device_headerss            r�*test_headers_written_only_for_device_files�;DeviceHeaderTest.test_headers_written_only_for_device_files�s����'�'�,�,�w�(<�=��
�����#	&��,�,�w��	�	�2�C�
�#�O�O�1B�C�	�#�O�O�1B�C�	�!(���	��!(���	�����I�&����I�&��	�	���,�,�w��,�C�
� �]�]�+<�=�
� �]�]�+<�=�
��	�	�����Z�0�0�!�4����Z�0�0�!�4����Z�0�0�!�4����Z�0�0�!�4��g�t�$���k�k�m��%��*�+�+�J�,B�,B�C�G��+�+�J�,B�,B�C�G�#�3��1�N����W�4�6F�G����W�4�j�A����W�%��3�	�	����	�	���%�$��
���W�%�sV�%J�"A4I	�+J�"I�$BJ�4I3�A-J�	I�J�I0�0J�3
J�=J�Jr&N)r'r(r)r*r r_r3r&rrrMrM�s��
�F�'&rrMc��\rSrSrSr\RR\S5r	Sr
\S5r\S5r
SrSrS	rS
rSrSrS
rg)�
CreateTesti�zx:�
spameggs42c�8�[R"[5 gr
)r	r�r�r"s rrU�CreateTest.setUp�s������!rc��[URS5nURS5 SSS5 g!,(df   g=f)Nr+rU)r.�	file_pathrT)�clsrqs  r�
setUpClass�CreateTest.setUpClass�s*��
�#�-�-��
&�$��J�J�v��'�
&�
&��	�2�
Ac�D�[R"UR5 gr
)r	r�rg�rhs r�
tearDownClass�CreateTest.tearDownClass�s��������'rc��[R"[UR5nUR	UR
5 SSS5 UR
[5nUR5nSSS5 UR[W5S5 URSUS5 g!,(df   Nm=f!,(df   NP=f�Nr�rcr)r/r.r�r$r�rgr1r=rkrlr�r#�tobj�namess   r�test_create�CreateTest.test_create�s���
�\�\�'�4�9�9�
-���H�H�T�^�^�$�.��\�\�'�
"�d��M�M�O�E�#�����U��Q�'��
�
�l�E�!�H�-�
.�
-��#�
"�s�B)�B:�)
B7�:
Cc�>�[R"[UR5nUR	UR
5 SSS5 UR
[5 [R"[UR5nSSS5 UR[5nUR5nSSS5 UR[W5S5 URSUS5 g!,(df   N�=f!,(df   N~=f!,(df   Na=frq)
r/r.r�r$r�rgrK�FileExistsErrorr1r=rkrlrrrs   r�test_create_existing�CreateTest.test_create_existing�s���
�\�\�'�4�9�9�
-���H�H�T�^�^�$�.��
�
��
/��<�<�����3�D�0��\�\�'�
"�d��M�M�O�E�#�����U��Q�'��
�
�l�E�!�H�-�.�
-��0�
/��#�
"�s#�C,�&C=�"D�,
C:�=
D�
Dc�x�UR[S5nURUR5 SSS5 UR[5nUR	5nSSS5 UR[
W5S5 URSUS5 g!,(df   Nm=f!,(df   NP=f�N�xr�rcr)r1r�r�rgr=rkrlrrrs   r�test_create_taropen�CreateTest.test_create_taropens��
�\�\�'�3�
'�4��H�H�T�^�^�$�(��\�\�'�
"�d��M�M�O�E�#�����U��Q�'��
�
�l�E�!�H�-�
(�
'��#�
"�s�B�B+�
B(�+
B9c�8�UR[S5nURUR5 SSS5 UR	[
5 UR[S5 SSS5 SSS5 UR[5nUR
5nSSS5 UR[W5S5 URSUS5 g!,(df   N�=f!,(df   N�=f!,(df   N�=f!,(df   Nr=fr|)
r1r�r�rgrKrxr=rkrlrrrs   r�test_create_existing_taropen�'CreateTest.test_create_existing_taropens���
�\�\�'�3�
'�4��H�H�T�^�^�$�(��
�
��
/����g�s�+��,�0��\�\�'�
"�d��M�M�O�E�#�����U��Q�'��
�
�l�E�!�H�-�(�
'��,�+��0�
/��#�
"�s;�C�C:�'C)�)C:�D�
C&�)
C7	�3C:�:
D�
Dc� �[R"[R"[5UR
5nUR
UR[5 URUR[RR[55 UR[R"UR55 UR5nSSS5 UR[!W5S5 UR#SUS5 UR%[5nUR5nSSS5 UR[!U5S5 UR#SUS5 g!,(df   N�=f!,(df   NP=frq)r/r.r	r.r�r$rxr�ryrkr|r}rzr�rgr=rlrr1rrs   r�test_create_pathlike_name�$CreateTest.test_create_pathlike_names��
�\�\�)�,�,�W�5�t�y�y�
A�T��!�!�$�)�)�S�1����T�Y�Y�������(@�A��H�H�Y�'�'����7�8��M�M�O�E�	B�
	
����U��Q�'��
�
�l�E�!�H�-�
�\�\�'�
"�d��M�M�O�E�#�����U��Q�'��
�
�l�E�!�H�-�B�
A��#�
"�s�BE.�$E?�.
E<�?
F
c��UR[R"[5S5nUR	UR
[5 URUR
[RR[55 UR[R"UR55 UR5nSSS5 UR[W5S5 URSUS5 UR[5nUR5nSSS5 UR[U5S5 URSUS5 g!,(df   N�=f!,(df   NP=fr|)r1r	r.r�rxr�ryrkr|r}rzr�rgr=rlrrrs   r�!test_create_taropen_pathlike_name�,CreateTest.test_create_taropen_pathlike_name+s���
�\�\�)�,�,�W�5�s�
;�t��!�!�$�)�)�S�1����T�Y�Y�������(@�A��H�H�Y�'�'����7�8��M�M�O�E�	<�
	
����U��Q�'��
�
�l�E�!�H�-�
�\�\�'�
"�d��M�M�O�E�#�����U��Q�'��
�
�l�E�!�H�-�<�
;��#�
"�s�BE�E0�
E-�0
E>r&N)r'r(r)r*r r|r}r~r{rgrU�classmethodrirnruryr~r�r�r�r3r&rrrbrb�sf��
�F������W�l�3�I�"������(��(�.�
.�.�.�.�.rrbc��\rSrSrSrSrg)�GzipCreateTesti:c� �[R"[URSS9nUR	UR
5 SSS5 [R"[SSS9nSSS5 g!,(df   N3=f!,(df   g=f)Nr�r�zr:gz�r/r.r�r$r�rg�r#rss  r�test_create_with_compresslevel�-GzipCreateTest.test_create_with_compresslevel<sZ��
�\�\�'�4�9�9�A�
>�$��H�H�T�^�^�$�?�
�\�\�'�6��
;�t��<�
;�?�
>��
;�
;���A.�#A?�.
A<�?
B
r&N�r'r(r)r*r�r3r&rrr�r�:���rr�c��\rSrSrSrSrg)�
Bz2CreateTestiCc� �[R"[URSS9nUR	UR
5 SSS5 [R"[SSS9nSSS5 g!,(df   N3=f!,(df   g=f)Nr�r��r:bz2r�r�s  rr��,Bz2CreateTest.test_create_with_compresslevelEsZ��
�\�\�'�4�9�9�A�
>�$��H�H�T�^�^�$�?�
�\�\�'�7�!�
<���=�
<�?�
>��
<�
<�r�r&Nr�r&rrr�r�Cr�rr�c��\rSrSrSrSrg)�LzmaCreateTestiLc��[R"[URSS9nUR	UR
5 SSS5 g!,(df   g=f)Nr�)�presetr�r�s  r�test_create_with_preset�&LzmaCreateTest.test_create_with_presetPs4��
�\�\�'�4�9�9�Q�
7�4��H�H�T�^�^�$�8�
7�
7�s�A
�

Ar&N)r'r(r)r*r�r3r&rrr�r�Ls��%rr�c� �\rSrSrSrSrSrSrg)�CreateWithXModeTestiUr}Nr&)r'r(r)r*r r~r�r3r&rrr�r�Us��
�F���#'� rr�r�r�c�2�\rSrSrSrSrSrSrSrSr	g)	�HardlinkTesti]c�b�[RR[S5Ul[RR[S5Ul[
URS5nURS5 SSS5 [R"URUR
5 [R"[S5Ul
URRUR5 g!,(df   N�=f![anURSU-5 SnANzSnAff=f)NrQr�r+�foortr�)r|r}r~r{rQr�r.rTr�rurvr/r�rTr�)r#rqrks   rrU�HardlinkTest.setUpas����7�7�<�<���/����7�7�<�<���/���
�$�(�(�D�
!�T��J�J�v��"�	/��G�G�D�H�H�d�h�h�'��<�<���-��������T�X�X��"�
!��
�	/��M�M�/�A�-�.�.��	/�s$�)C5�+D�5
D�
D.�D)�)D.c��URR5 [R"UR5 [R"UR
5 gr
)rTrXr	r�rQr�r"s rrY�HardlinkTest.tearDownps4��������������"�������"rc��URRUR5nURUR[
RS5 g)Nzadd file as regular failed)rTr[rQrkr�r/rTr�s  r�test_add_twice�HardlinkTest.test_add_twiceus9���(�(�%�%�d�h�h�/��������w���,�	.rc��URRUR5nURUR[
RS5 g)Nzadd file as hardlink failed)rTr[r�rkr�r/r&r�s  r�test_add_hardlink�HardlinkTest.test_add_hardlink|s7���(�(�%�%�d�h�h�/��������w���-�	/rc���SURlURRUR5nUR	UR
[RS5 g)NTzdereferencing hardlink failed)rT�dereferencer[r�rkr�r/rTr�s  r�test_dereference_hardlink�&HardlinkTest.test_dereference_hardlink�sC��#������(�(�%�%�d�h�h�/��������w���/�	1r)r�rQrTN)
r'r(r)r*rUrYr�r�r�r3r&rrr�r�]s��
�#�
.�/�
1rr�c�0�\rSrSrSSjrSrSrSrSrg)	�PaxWriteTesti�Nc�~�[R"U5nU(aX#l[RUl[R
"[S[RS9nURU5 UR5 [R
"[5nU(a0UR5SRnURX%S5 O/UR5SRnURXS5 UR5 g!UR5 f=f!UR5 f=f)Nr��r�rzPAX longlink creation failedzPAX longname creation failed)
r/rUr�r&r�r.r�r=r\rXrrkr�)r#r�r�rprT�l�ns       rr(�PaxWriteTest._test�s����/�/�$�'���#��"�?�?�G�L��l�l�7�C��0B�0B�C��	��K�K�� ��I�I�K��l�l�7�#��	���N�N�$�Q�'�0�0��� � ��*H�I��N�N�$�Q�'�,�,��� � ��*H�I��I�I�K��
�I�I�K��
�I�I�K�s�"D�A&D*�D'�*D<c�~�SSSSSS.n[R"[S[RUS9nUR	[R
"S55 UR
5 [R"[S	S
9nURURU5 URUR5SRU5 URR5Hsup4UR[U5[5 UR[U5[5 U[R;dMY[RU"U5 Mu UR
5 g!UR
5 f=f![[ 4a UR#S5 M�f=f!UR
5 f=f)
Nr��0z1.23�äöü�test)rQr�r�r�r�r�)r�r.rPr�rz"unable to convert pax header field)r/r.r�r=r\rUrXrkr.rr��assertIsNotr�r��PAX_NUMBER_FIELDSr�r�r�)r#r.rT�key�vals     r�test_pax_global_header�#PaxWriteTest.test_pax_global_header�sW�����&� &�(���l�l�7�C��0B�0B�'�)��	��K�K�����/�0��I�I�K��l�l�7�[�9��
	����S�_�_�k�:����S�^�^�-�a�0�<�<�k�J��O�O�1�1�3���� � ��c��E�2�� � ��c��E�2��'�3�3�3�H��1�1�#�6�s�;�4�
�I�I�K��#
�I�I�K��&�z�2�H��	�	�"F�G�H��
�I�I�K�s<�%E-�B8F*�?F�F*�-E?�!F'�#F*�&F'�'F*�*F<c�l�SSS.n[R"[S[RSS9n[R"5nSUlSUlXlURU5 UR5 [R"[SS	9nUR5S
nURURU5 URUR
S5 URURS5 UR5 g!UR5 f=f!UR5 f=f)NrQ�123)r}r�r�rPr;r��r�rr4)r/r.r�r=rUr�r�r.r\rXrrk)r#r.rTr_s    r�test_pax_extended_header�%PaxWriteTest.test_pax_extended_header�s��� %�U�3���l�l�7�C��0B�0B�$/�1��	����!�A�#�A�F��A�E�'�M��K�K��N��I�I�K��l�l�7�[�9��	���� ��#�A����Q�]�]�K�8����Q�V�V�U�+����Q�U�U�C�(��I�I�K��
�I�I�K��
�I�I�K�s�:D�A'D!�D�!D3c�&�[R"5nSUlSUlSUlSUlSUlUR5nURUSS9nURUSS5 URUS	[5 URUS	S
5 URUSS5 URUSS5 URUS
S5 URUS[S5-S-[S5-S-[S5-S-[S5-S-[S5-S-[S5-S-[S5-5 [R"5nSUlSUlSUlSUlSUlUR5nURUSS9nURUSS5 URUS	S5 URUSS5 URUSS5 URUS
S5 URUS[S5-S-[S5-S-[S5-S-S-S -[S!5-S"-[S#5-S$-[S5-S-[S5-5 g)%NrQg�����@�@r�r4�|rPr�r�r�r�rmr�r�s././@PaxHeader�Vs90000000000000000000000000000002000000000000010205 xsustar00�s16 mtime=1000.1
i�r��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/rUr�r�rmr�r�r�create_pax_headerrkrxr�r�)r#r_�infor:s    r�test_create_pax_header�#PaxWriteTest.test_create_pax_header�s���
�O�O�������������������z�z�|���$�$�T�K�$�@������f��u�-����d�7�m�S�1�����g���-�����f��s�+�����e��c�*�����e��c�*�������b�	�)�\�
]��C�j�
�)�
*�+0��:�
6�#�
#�&+�3�Z�
0�39�
9�<A��9�
E�]�	
]�
�C�j�
�
*�
*�
-2�#�J�
7�	8�
�O�O�������������������z�z�|���$�$�T�K�$�@������f��{�3�����g���*�����f��q�)�����e��a�(�����e��a�(�������b�	�)�\�
]��C�j�
�)�
*�,1�#�J�
7�<�
<�8�	
8�
(�
(�
*/�s��
4�
7>�
>�
AF�b�	�
J�]�

]��C�j�
�*�
*�-2�#�J�
7�	8rr&r
)	r'r(r)r*r(r�r�r�r3r&rrr�r��s���0�@�258rr�c�>�\rSrSrSrSrSrSrSrSr	Sr
S	rg
)�UnicodeTesti	c�&�URS5 g)NrP��_test_unicode_filenamer"s r�test_iso8859_1_filename�#UnicodeTest.test_iso8859_1_filename	s���#�#�K�0rc�&�URS5 g)N�utf7r�r"s r�test_utf7_filename�UnicodeTest.test_utf7_filename	s���#�#�F�+rc�&�URS5 g)N�utf-8r�r"s r�test_utf8_filename�UnicodeTest.test_utf8_filename	s���#�#�G�,rc���[R"[SURUSS9nSnUR	[R
"U55 UR
5 [R"[US9nURUR5SRU5 UR
5 g!UR
5 f=f!UR
5 f=f)Nr�r��r�rR�errorsr�r�r)
r/r.r�r�r\rUrXrkrr�)r#rRrTr�s    rr��"UnicodeTest._test_unicode_filename	s����l�l�7�C����$,�X�?��	�!�D��K�K�����-�.��I�I�K��l�l�7�X�6��	����S�^�^�-�a�0�5�5�t�<��I�I�K��

�I�I�K��
�I�I�K�s�'B7�9-C�7C	�Cc�t�[R"[SURSSS9n[R"5nSUlUR
[URU5 SUlSUl	UR
[URU5 UR5 g!UR5 f=f)Nr�r�r�r�r�rQ)r/r.r�r�rUr�rK�UnicodeErrorr\r�rXr0s   r�test_unicode_filename_error�'UnicodeTest.test_unicode_filename_error-	s����l�l�7�C����$+�H�>��
	��o�o�'�G�)�G�L����l�C�K�K��A� �G�L�*�G�M����l�C�K�K��A��I�I�K��C�I�I�K�s�A,B%�%B7c���[R"[SSSS9nUH�nUR[	UR
5[5 UR[	UR5[5 UR[	UR5[5 UR[	UR5[5 M� UR5 g!UR5 f=f)NrwrPr��rRr�)r/r.r+rir�r�ryr�r�r�rXr�s   r�test_unicode_argument�!UnicodeTest.test_unicode_argument<	s����l�l�7�C�$/��B��	����
�
�d�1�6�6�l�C�0��
�
�d�1�:�:�.��4��
�
�d�1�7�7�m�S�1��
�
�d�1�7�7�m�S�1�	�
�I�I�K��C�I�I�K�s�B-C�C-c�4�[R"S5nSUlSUl[R"[
SURSS9nURU5 UR5 [R"[
SS9nURS5nURURS5 URURS5 UR[R:warUR5 [R"[
SS9nURS5nURURS5 URURS5 UR5 g!UR5 f=f!UR5 f=f)	NrQr�r�rP)r$r�rRr�r�u	���)r/rUr�r�r.r�r�r\rXrhrkr=)r#r_rTs   r�test_uname_unicode�UnicodeTest.test_uname_unicodeH	s"���O�O�E�"�� ��� ����l�l�7��T�[�[�$/�1��	��K�K��N��I�I�K��l�l�7�[�9��	��
�
�e�$�A����Q�W�W�n�5����Q�W�W�n�5��{�{�g�0�0�0��	�	���l�l�7�W�=���M�M�%�(��� � ����*>�?�� � ����*>�?��I�I�K��
�I�I�K��
�I�I�K�s�E0�CF�0F�Fr&N)r'r(r)r*r�r�r�r�r�r�r�r3r&rrr�r�	s%��1�,�-�
�
�
�rr�c�p�\rSrSr\R
rSrSrSr	Sr
SrSrSS	jr
S
rSrSSjrS
rg)�UstarUnicodeTestid	c��URS5 URS[5 URS5 URS[5 g�NrQ�e01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890ud01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567ÿue012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678ÿ��_test_ustar_namer�r"s r�test_unicode_name1�#UstarUnicodeTest.test_unicode_name1k	�B�����/�0����5�z�B����?�@����@�*�Mrc�R�URS5 URS[5 g�Nud012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345ÿÿue0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456ÿÿr�r"s r�test_unicode_name2�#UstarUnicodeTest.test_unicode_name2q	�"�����A�B����B�J�Orc��URS5 URS[5 URS5 URS[5 g)Na01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789a0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123/40123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012ÿ/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123ÿ/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789r�r"s r�test_unicode_longname1�'UstarUnicodeTest.test_unicode_longname1w	sD�����N�O����N�PZ�[����P�Q����Q�S]�^rc�\�URS[5 URS[5 g)Nu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901ÿ/20123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901ÿÿ/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789r�r"s r�test_unicode_longname2�'UstarUnicodeTest.test_unicode_longname2}	s&�����P�R\�]����S�U_�`rc�~�URS[5 URS5 URS[5 g)Nu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901ÿÿ/20123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567ÿu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678ÿr�r"s r�test_unicode_longname3�'UstarUnicodeTest.test_unicode_longname3�	s5�����T�V`�a����^�_����_�ak�lrc�R�URS5 URS[5 g)Nu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345ÿÿu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456ÿÿr�r"s r�test_unicode_longname4�'UstarUnicodeTest.test_unicode_longname4�	s#�����`�a����a�cm�nrNc���[R"[SURSS9n[R"U5nUcURU5 OUR
X#R
U5 SSS5 UcH[R"[SSS9nUHnURXR5  O SSS5 gg!,(df   NZ=f!,(df   g=f)Nr�r�r;rwr�)	r/r.r�r�rUr\rKrkr��r#r��excrTr_s     rr��!UstarUnicodeTest._test_ustar_name�	s���
�\�\�'�3�t�{�{�W�
M�QT�����%�A��{����A���!�!�#�{�{�A�6�N��;����g�s�W�=���A��$�$�T�6�6�2���>�=��N�
M��>�=�s�AC�%C�
C�
C!c��URS5 URS[5 URS5 URS[5 gr���_test_ustar_linkr�r"s r�test_unicode_link1�#UstarUnicodeTest.test_unicode_link1�	r�rc�R�URS5 URS[5 gr�rr"s r�test_unicode_link2�#UstarUnicodeTest.test_unicode_link2�	r�rc���[R"[SURSS9n[R"S5nXlUcUR
U5 OURX#RU5 SSS5 UcH[R"[SSS9nUHnURXR
5  O SSS5 gg!,(df   NZ=f!,(df   g=f)Nr�r�r;rQrwr�)	r/r.r�r�rUr�r\rKrkrs     rr�!UstarUnicodeTest._test_ustar_link�	s���
�\�\�'�3�t�{�{�W�
M�QT�����&�A��J��{����A���!�!�#�{�{�A�6�
N��;����g�s�W�=���A��$�$�T�:�:�6���>�=��N�
M��>�=�s�AC�%C�
C�
C'r&r
)r'r(r)r*r/r�r�r�r�rrrr	r�rrrr3r&rrr�r�d	sG��
�
!�
!�F�
N�P�_�a�m�
o��N�P�
rr�c�2�\rSrSr\R
rSrSrg)�GNUUnicodeTesti�	c���SH:up[R"[USS9nURU5nSSS5 M< g![a URS5 N*f=f!,(df   Mo=f)N))r�upax/bad-pax-���)rPupax/bad-pax-äöür�r�z%unable to read bad GNU tar pax header�r/r.r+rhr�r��r#rRr�rTr_s     r�test_bad_pax_header�"GNUUnicodeTest.test_bad_pax_header�	sq��<�N�H����g��%6�8�;>�G��
�
�d�+�A�8�8�<�� �G��I�I�E�F�G��	8�8��(�A#�A�A �A#�A � A#�#
A2	r&N)	r'r(r)r*r/r'r�rr3r&rrrr�	s��
�
�
�F�Grrc�6�\rSrSr\R
rSrSrSr	g)�PAXUnicodeTesti�	Nc���SH:up[R"[USS9nURU5nSSS5 M< g![a URS5 N*f=f!,(df   Mo=f)N))r�upax/hdrcharset-���)rPupax/hdrcharset-äöür�r�z)unable to read POSIX.1-2008 binary headerrrs     r�test_binary_header�!PAXUnicodeTest.test_binary_header�	sq��?�N�H����g��%6�8�;>�K��
�
�d�+�A�8�8�?�� �K��I�I�I�J�K��	8�8�r r&)
r'r(r)r*r/r=r�r�r$r3r&rrr"r"�	s��
�
�
�F�#'��
Krr"c�*�\rSrSrSrSSjrSrSrg)�AppendTestBasei�	c��[Ul[RR	UR5(a![
R"UR5 ggr
)r�r+r|r}r�r	r�r"s rrU�AppendTestBase.setUp�	s7�����
�7�7�>�>�$�,�,�'�'����T�\�\�*�(rc��[R"[SS9nURS5nSUlURU5n[R"URU5nUR
X45 SSS5 SSS5 SSS5 g!,(df   N=f!,(df   N(=f!,(df   g=f)NrPr�rfrQ)r/r.r+rhr�rir\)r#r$�srcr_r�rTs      r�_create_testtar�AppendTestBase._create_testtar�	s���
�\�\�'�K�
8�C��
�
�o�.�A��A�F�����#�q��\�\�$�,�,��5���K�K��%�6�$�9�
8�6�5��$�#��9�
8�s;�*B3�"B"�&B�8B"�B3�
B�B"�"
B0	�,B3�3
Cc��URSUR-5 UR[R[R
[S5 g)Nr[r�)r,r!rKr/r?r.r�r"s r�test_append_compressed�%AppendTestBase.test_append_compressed�	s7�����T�D�K�K�/�0����'�+�+�W�\�\�7�C�Hr)r+N)r[)r'r(r)r*rUr,r/r3r&rrr'r'�	s��+�
&�Irr'c�t�\rSrSrSrSSjrS/S4SjrSrSrSr	S	r
S
rSrSr
S
rSrSrSrSrg)�
AppendTesti�	Nc���[R"URSUS9nUR[R"S55 SSS5 g!,(df   g=f)Nr�ror�)r/r.r+r\rU)r#rwrTs   r�
_add_testfile�AppendTest._add_testfile�	s9��
�\�\�$�,�,��W�
=���K�K�����.�/�>�
=�
=�s�&A�
Ar�c��[R"URUS9nURUR	5U5 SSS5 g!,(df   g=f)Nro)r/r.r+rkr=)r#rtrwrTs    rr(�AppendTest._test�	s8��
�\�\�$�,�,��
8�C����S�\�\�^�U�3�9�
8�
8�s�!A
�

Ac�D�UR5 UR5 gr
)r4r(r"s r�test_non_existing�AppendTest.test_non_existing�	s�������
�
�rc��[R"URS5R5 UR	5 UR5 g)Nr[)r/r.r+rXr4r(r"s r�
test_empty�AppendTest.test_empty�	s2�����T�\�\�4�(�.�.�0������
�
�rc��[R"S5nURU5 URS5 UR	US9 g)Nsrro)r,r�r4r�r(r/s  r�test_empty_fileobj�AppendTest.test_empty_fileobj
s7���z�z�,�'�����4� ��	�	�!���
�
�4�
� rc�8�UR5 [URS5nUR5nSSS5 [R
"W5nUR
U5 URS5 URSS/US9 g!,(df   NY=f)Nr�rrQr�)rtrw)	r,r.r+rjr,r�r4r�r(r�s   r�test_fileobj�AppendTest.test_fileobj
sr������
�$�,�,��
%���9�9�;�D�&��z�z�$������4� ��	�	�!���
�
�%����
�6�&�
%�s�B�
Bc�f�UR5 UR5 URSS/S9 g)NrQr�)rt)r,r4r(r"s r�
test_existing�AppendTest.test_existing
s,�����������
�
�%���
�(rc���[URS5nURU5 SSS5 UR[R
UR5 g!,(df   N9=frJ)r.r+rTrKr/r?r4)r#rrqs   r�_test_error�AppendTest._test_error
sH��
�$�,�,��
%���J�J�t��&����'�+�+�T�-?�-?�@�&�
%�s�A�
A*c�&�URS5 g)Nr�rHr"s r�	test_null�AppendTest.test_null
s������rc�&�URS5 g)N�
rKr"s r�test_incomplete�AppendTest.test_incomplete
�������$rc�n�[R"S5R5nURU5 g)NrQ�r/rUrVrH�r#rs  r�test_premature_eof�AppendTest.test_premature_eof"
s'�����u�%�+�+�-������rc�t�[R"S5R5nURUS-5 g)NrQrOrTrUs  r�test_trailing_garbage� AppendTest.test_trailing_garbage&
s,�����u�%�+�+�-������
�*�+rc�&�URS5 g)NsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarKr"s r�test_invalid�AppendTest.test_invalid*
rRrr&r
)r'r(r)r*r/r4r(r9r<r?rBrErHrLrPrVrYr\r3r&rrr2r2�	sS��!��0�!�'�4�4���
!�7�)�A�
�%��,�%rr2c��\rSrSrSrg)�GzipAppendTesti-
r&Nr�r&rrr_r_-
r�rr_c��\rSrSrSrg)�
Bz2AppendTesti0
r&Nr�r&rrrara0
r�rrac��\rSrSrSrg)�LzmaAppendTesti3
r&Nr�r&rrrcrc3
r�rrcc�&�\rSrSrSrSrSrSrg)�
LimitsTesti7
c��[R"S5nUR[R5 [R"S5nUR	[
UR[R5 [R"S5nUR[R5 [R"S5nUR	[
UR[R5 [R"S5nUR	[
UR[R5 [R"S5nSUlUR	[
UR[R5 [R"S5nSUlUR	[
UR[R5 g)	NrQr�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/longnamer�r�� )r/rUrVr�rKr�r�r�r�s  r�test_ustar_limits�LimitsTest.test_ustar_limits9
s4���/�/�"3�4���
�
�g�*�*�+��/�/�"9�:�����*�g�m�m�W�5I�5I�J��/�/�":�;���
�
�g�*�*�+��/�/�">�?�����*�g�m�m�W�5I�5I�J��/�/�";�<�����*�g�m�m�W�5I�5I�J��/�/�*�-��4������*�g�m�m�W�5I�5I�J��/�/�&�)�� ������*�g�m�m�W�5I�5I�Jrc�~�[R"S5nUR[R5 [R"S5nSUlUR[R5 [R"S5nSUlUR
[UR[R5 g�Nrgr�r�l)r/rUrVr'r�r�rKr�r�s  r�test_gnu_limits�LimitsTest.test_gnu_limitsX
s~���/�/�";�<���
�
�g�(�(�)��/�/�*�-��4����
�
�g�(�(�)��/�/�&�)��+������*�g�m�m�W�5G�5G�Hrc�^�[R"S5nUR[R5 [R"S5nSUlUR[R5 [R"S5nSUlUR[R5 grl)r/rUrVr=r�r�r�s  r�test_pax_limits�LimitsTest.test_pax_limitse
sr���/�/�";�<���
�
�g�(�(�)��/�/�*�-��4����
�
�g�(�(�)��/�/�&�)��+����
�
�g�(�(�)rr&N)r'r(r)r*rirmrpr3r&rrrere7
s��K�>I�
*rrec��\rSrSrSrSrSrSrSrSr	\
R"\R"5S5\
R"\"\S	5S
5\
R R#S5S555rS
rg)�MiscTestir
c�H�UR[R"SSSS5S5 UR[R"SSSS5S5 UR[R"SSS5S5 UR[R"S	SS5S5 g)
NrQ�r�r�sfoo�foobarr�r�sfoobar)rkr/�stn�ntsr"s r�test_char_fields�MiscTest.test_char_fieldst
s���������U�A�w��A�)�	+�������X�q�'�8�D��	!�������%5�w��I��	 �������]�G�X�F��	 rc��UR[R"S5S5 UR[R"S5S5 UR[R"S5S5 UR[R"S5S5 UR[R"S	5S
5 UR[R"S5S5 UR[R"S
5S5 UR[R"S5S5 UR[R"S5S5 g)N�0000001r��7777777��� rh������������������r������������������rOrs       )rkr/�ntir"s r�test_read_number_fields� MiscTest.test_read_number_fields~
s���	
������^�4�a�8�������^�4�i�@�������%H�I�#�	%�������%H�I�#�	%�������%H�I��	�������%H�I��	�������%H�I�+�	-�	
������U�+�Q�/�������\�2�A�6rc	���UR[R"S5S5 UR[R"S5S5 UR[R"S[RS9S5 UR[R"S[RS9S	5 UR[R"S
[RS9S5 UR[R"S[RS9S
5 UR[R"S[RS9S5 UR[R"S[RS9S
5 UR[R"S[RS9S5 UR[R"[R"S[RS95S5 g)Nr�r|r~r}rhr�rr�r�r�r�r�r�r�r�gY�g0Bs�g��������r)rkr/�itnr'r�r"s r�test_write_number_fields�!MiscTest.test_write_number_fields�
sa��������Q���8�������Y�/��@�������Z��8J�8J�K�<�	>�������Z��8J�8J�K�<�	>�������R��0B�0B�C�<�	>�������T�'�2D�2D�E�<�	>�������%7�,3�,>�,>�@�<�	>�	
������V�G�4F�4F�G�<�	>�������]�7�;M�;M�N�<�	>�������W�[�[��g�>P�>P�%Q�R�TU�Vrc��UR[5 [R"SS[R5 SSS5 UR[5 [R"SS[R5 SSS5 UR[5 [R"SS[R
5 SSS5 UR[5 [R"SS[R
5 SSS5 g!,(df   N�=f!,(df   N�=f!,(df   Nu=f!,(df   g=f)Nr�rurhl�����l)rKr�r/r�r�r'r"s r�test_number_field_limits�!MiscTest.test_number_field_limits�
s���
�
�
�z�
*��K�K��A�w�3�3�4�+�
�
�
�z�
*��K�K�
�A�w�';�';�<�+�
�
�
�z�
*��K�K���7�+=�+=�>�+�
�
�
�z�
*��K�K�
�q�'�*<�*<�=�+�
*�
+�
*��
*�
*��
*�
*��
*�
*�s/�'D�'D#�'D4�"'E�
D �#
D1�4
E�
Ec�@�1Skn[R"U[US9 g)N>/�NUL�grpr�r�rx�pwdrw�mainrS�CHRTYPEr�r&rT�SYMTYPE�XGLTYPErB�versionr�CONTTYPE�FIFOTYPE�filemoderK�	GNU_MAGIC�	GNU_TYPES�
PAX_FIELDSrJr"r!�POSIX_MAGIC�copyfileobj�ExFileObject�calc_chksums�
LENGTH_PREFIX�
REGULAR_TYPES�EOFHeaderError�GNUTYPE_SPARSE�PAX_NAME_FIELDS�SOLARIS_XHDTYPE�SUPPORTED_TYPES�EmptyHeaderError�GNUTYPE_LONGLINKr&r��symlink_exception�InvalidHeaderError�TruncatedHeaderError�SubsequentHeaderError)�not_exported)r�check__all__r/)r#r�s  r�test__all__�MiscTest.test__all__�
s��=��	���T�7��Frc�@�[RR[RR[5SS5nUR[R5n[R"S54n[RRR[RSUS9 [R"U5 SSS5 SSS5 URS[!WR"55 g!,(df   N<=f!,(df   NE=f)Nrrzlzma module is not availablerJ)rz?
- method xz: CompressionError('lzma module is not available')
)r|r}r~�dirnamer�rKr/r?�CompressionErrorr�rrr�r0r.rry�	exception)r#�fname�excinfors    r�.test_useful_error_message_when_modules_missing�7MiscTest.test_useful_error_message_when_modules_missing�
s��������R�W�W�_�_�X�6�8I�K[�\��
�
�
�w�0�0�
1�W��,�,�-K�L�M�E����$�$�+�+�G�O�O�X�SX�+�Y����U�#�Z�2�
	
�
�
�O���!�!�"�	
�Z�Y��2�
1�s%�"AD�1C>�D�>
D	�D�
Dzrequires symlink support�chmodzmissing os.chmod�os.chmodc�^�[RR[S5mU4SjnX!l[RR[S5n[5nUR
SSS9 UR
S[RSS9 UR
SUS9 SSS5 [R"U5 WR5RTS	S
9 [R"U5 [R"T5 g!,(df   Np=f![R"U5 [R"T5 f=f)N�
test127987c�>�[RRU5n[RRUT/5T:wa[	SU5eg)Nz8should not try to chmod anything outside the destination)r|r}�realpath�
commonpath�	Exception)r}r$r��target_pathr�s    �r�mock_chmod_side_effect�RMiscTest.test_deferred_directory_attributes_update.<locals>.mock_chmod_side_effect�
sH����'�'�*�*�4�0�K��w�w�!�!�;��"8�9�W�D�� Z�\g�h�h�Er�outside_tree_dirr}r���
symlink_to�
?rwsrwsrwt�r�r$rTr�)r|r}r~r{r�ArchiveMakerr�r/r�rr.r�r	r�)r#�
mock_chmodr�r��arcr�s     @r�)test_deferred_directory_attributes_update�2MiscTest.test_deferred_directory_attributes_update�
s����
�'�'�,�,�w��5��	i�"8���7�7�<�<��1C�D��
�^�s��G�G�C�C�G�(��G�G�C�g�o�o�L�G�A��G�G�C�$4�G�5��
	���$�%�	&��H�H�J�!�!�w�u�!�=����-�.����W�%��^��
���-�.����W�%�s� AD
�?D�

D�.E	r&N)r'r(r)r*ryr�r�r�r�r�r�r�r	�can_symlinkr�r|rrr�r3r&rrrsrsr
s��� �7�(W�.>�
G�

�����.�.�0�2L�M�
�����W�-�/A�B�
�]�]����$�&�%�C�N�&rrsc��\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrSrSrSrSrSrg)�CommandLineTesti�
c��[R"SS/UQ70UD6up4nUR[RR5S5$)N�-mr/�
)r
�assert_python_okr<r|�linesepr�)r#�argsr��rcr�errs      r�
tarfilecmd�CommandLineTest.tarfilecmd�
sJ��$�5�5�d�I�@��@�8>�@�����{�{�2�:�:�,�,�.��6�6rc�2�[R"SS/UQ76$)Nr�r/)r
�assert_python_failure)r#r�s  r�tarfilecmd_failure�"CommandLineTest.tarfilecmd_failure�
s���2�2�4��J�T�J�Jrc�f�[R"SSS9[R"SSS9/nUR[RU5 [
R"US5nUH0nURU[RRU5S9 M2 SSS5 g!,(df   g=f)N�tokenize_tests.txt�tokenizedatar�9tokenize_tests-no-coding-cookie-and-utf8-bom-sig-only.txtr�r�)rrdr�r	r�r/r.r�r|r}r�)r#�tar_name�filesr�tardatas     r�make_simple_tarfile�#CommandLineTest.make_simple_tarfile�
s����!�!�"6�)7�9��!�!�#>�)7�9�:��
	
���	�(�(�(�3�
�\�\�(�C�
(�B� �����w����(8�(8��(A��B�!�)�
(�
(�s�"7B"�"
B0c��UR[RU5 [R"US5n[R
"S5nUR
U[R"S5S9 [R
"S5nUR
U[R"S5S9 SSS5 g!,(df   g=f)Nr��benignrro�../evil)	r�r	r�r/r.rUr\r,r�)r#r�rr��evils     r�make_evil_tarfile�!CommandLineTest.make_evil_tarfile�
s~�����	�(�(�(�3�
�\�\�(�C�
(�B��_�_�X�.�F��J�J�v�r�z�z�#��J�7��?�?�9�-�D��J�J�t�R�Z�Z��_�J�5�	)�
(�
(�s�A5B6�6
Cc��UR5upnURUS5 URSUR55 URSUR55 URSUR55 URSS5upnURUS5 UR	UR5S5 g)Nrsusageserrorsrequired�-lr)r�rkr�lowerr��strip)r#r�rr�s    r�test_bad_use�CommandLineTest.test_bad_uses����.�.�0��������c�"��
�
�h��	�	��,��
�
�h��	�	��,��
�
�k�3�9�9�;�/��.�.�t�R�8��������c�"����C�I�I�K��-rc�v�[H/nSH&nURX!5nURUS5 M( M1 g)N)�-tz--testr)�testtarnamesr�rk�r#r��optrs    r�test_test_command�!CommandLineTest.test_test_commands4��$�H�%���o�o�c�4��� � ��c�*�&�%rc	�x�[H0nSH'nURUSUSS9nURSU5 M) M2 g)N��-vz	--verboser�r���PYTHONIOENCODINGsis a tar archive.
)r�r�rr�s    r�test_test_command_verbose�)CommandLineTest.test_test_command_verbosesB��$�H�(���o�o�c�4��7>�&�@���
�
�4�c�:�)�%rc��[R"SSS9nURSU5up#nURSU5 UR	US5 UR	US5 [
H�nUR
US9 [US	5nUR5nSSS5 [[S
5nURWSS5 SSS5 URS[5up#nUR	US5 UR	US5 [R"[5 SSS5 M� g!,(df   N�=f!,(df   N�=f![R"[5 f=f!,(df   GM=f)N�
zipdir.ziprrr�� is not a tar archive.rr�)r�r�r+r�)
rrdr�rrkr�r<r.rjr�rTr	r�)r#�zipnamer�rr�r�r�rs        r�test_test_command_invalid_file�.CommandLineTest.test_test_command_invalid_files,���"�"�<�8I�J���.�.�t�W�=�����
�
�/��5�����c�"�����Q��$�H����x��0��(�D�)�Q��6�6�8�D�*�.��g�t�,������T�c�
�+�-�#'�#:�#:�4��#I�L�B�S��$�$�S�#�.��$�$�R��+��$�$�W�-�1�0�%�)�)��-�,���$�$�W�-��1�0�sU�9
E3�D2�E3� E�0E�AE�
E3�2
E�<E3�
E�
E�E0�0E3�3
F	c��[H�n[R"5n[R"US5nURSS9 SSS5 SSS5 WR
5RSS5nSH$nURXQSS9nURXd5 M& M� g!,(df   Ne=f!,(df   Nn=f)NrwFr�r�r�)r�z--listr�
r�r�captured_stdoutr/r.r�rr�r�rk�r#r�r_rr�r�rs       r�test_list_command�!CommandLineTest.test_list_command0s���$�H��(�(�*�a��\�\�(�C�0�B��G�G�E�G�*�1�+��z�z�|�*�*�7�4F�G�H�%���o�o�c�7>�&�@��� � ��/�&�%�0�0��+�*�s"�B7�B&�B7�&
B4�0B7�7
C	c	��[H�n[R"5n[R"US5nURSS9 SSS5 SSS5 WR
5RSS5nSH&nURUSUSS9nURXd5 M( M� g!,(df   Ng=f!,(df   Np=f)	NrwTr�r�r�rr�rrrs       r�test_list_command_verbose�)CommandLineTest.test_list_command_verbose;s���$�H��(�(�*�a��\�\�(�C�0�B��G�G�D�G�)�1�+��z�z�|�*�*�7�4F�G�H�(���o�o�c�4��7>�&�@��� � ��/�)�%�0�0��+�*�s"�B9�B(�B9�(
B6�2B9�9
C	c���[R"SSS9nURSU5up#nURSU5 UR	US5 UR	US5 g)Nrrrr�r	rr�)rrdr�rrk�r#r
r�rr�s     r�test_list_command_invalid_file�.CommandLineTest.test_list_command_invalid_fileFsZ���"�"�<�8I�J���.�.�t�W�=�����
�
�/��5�����c�"�����Q�rc��[R"SSS9[R"SSS9/nSH{nUR"U[/UQ76nUR	US5 [
R"[5nUR5 SSS5 [R"[5 M} g!,(df   N-=f![R"[5 f=f)Nr�r�rr�)�-cz--creater)
rrdr�r�rkr/r.rr	r��r#r�r�rrTs     r�test_create_command�#CommandLineTest.test_create_commandMs����!�!�"6�)7�9��!�!�#>�)7�9�:��
$�C�
*��o�o�c�7�;�U�;��� � ��c�*��\�\�'�*�c��N�N�$�+�� � ��)�$�+�*��� � ��)�s$�AB>�5B-�B>�-
B;	�7B>�>Cc���[R"SSS9[R"SSS9/nSHnUR"US[/UQ7SS06nUR	S	U5 [
R"[5nUR5 SSS5 [R"[5 M� g!,(df   N-=f![R"[5 f=f)
Nr�r�rr�rrrr�s file created.)
rrdr�r�rr/r.rr	r�rs     r�test_create_command_verbose�+CommandLineTest.test_create_command_verbose\s����!�!�"6�)7�9��!�!�#>�)7�9�:��
%�C�
*��o�o�c�4��@�5�@�7>�@���
�
�/��5��\�\�'�*�c��N�N�$�+�� � ��)�%�
+�*��� � ��)�s$�AC�9B1�
C�1
B?	�;C�Cc��[R"SSS9/nUR"S[/UQ76nUR	US5 [
R"[5nUR5 SSS5 [R"[5 g!,(df   N)=f![R"[5 f=f)Nr�r�rrr)
rrdr��dotlessnamerkr/r.rr	r�)r#r�rrTs    r�$test_create_command_dotless_filename�4CommandLineTest.test_create_command_dotless_filenamels����!�!�"6�~�N�O��	*��/�/�$��<�e�<�C����S�#�&����k�*�c���� �+�
���[�)�+�*��
���[�)�s$�AB!�B�-B!�
B�B!�!B=c��[RR[S5n[R
"SSS9/nUR"SU/UQ76nURUS5 [R"U5nUR5 SSS5 [R"U5 g!,(df   N%=f![R"U5 f=f)Nz.testtarr�r�rrr)
r|r}r~r{rrdr�rkr/r.rr	r�)r#r�r�rrTs     r�(test_create_command_dot_started_filename�8CommandLineTest.test_create_command_dot_started_filenamevs����7�7�<�<���4���!�!�"6�~�N�O��	'��/�/�$��9�5�9�C����S�#�&����h�'�3���� �(�
���X�&�(�'��
���X�&�s#�<B9�8B(�	B9�(
B6�2B9�9Cc���[R"SSS9[R"SSS9/n[[[4H�nUR
(dM[S-UR-nUR"SU/UQ76nURU5nUR5 SSS5 [R"U5 M� g!,(df   N)=f![R"W5 f=f)Nr�r�rr�r�r)
rrdr5r=rDr.r�r!r�r1rr	r�)r#r��filetyper�rrTs      r�test_create_command_compressed�.CommandLineTest.test_create_command_compressed�s����!�!�"6�)7�9��!�!�#>�)7�9�:��
"�7�H�5�H��=�=��
+�"�S�=�8�?�?�:���o�o�d�H�=�u�=���%�%�h�/�3��N�N�$�0�� � ��*�6�0�/��� � ��*�s$�;C�C�C�
C	�C�C+c�l�UR[5 SHin[R"[5 URU[5nSSS5 UR
WS5 [R"[5 Mk g!,(df   N?=f![R"[5 f=f)N)�-ez	--extractr�r�r�r	r��	tarextdirr�rkr��r#r�rs   r�test_extract_command�$CommandLineTest.test_extract_command�sx��� � ��)�$�C�
,��'�'�	�2��/�/�#�w�7�C�3�� � ��c�*�� � ��+�
%�2�2��� � ��+��"�B�B�
B�
B	�B�B3c	�l�UR[5 SHin[R"[5 URUS[SS9nSSS5 UR
SW5 [R"[5 Mk g!,(df   N?=f![R"[5 f=f)Nrr.r�r� file is extracted.)r�r�r	r�r0r�rr�r1s   r�test_extract_command_verbose�,CommandLineTest.test_extract_command_verbose�s���� � ��)�$�C�
,��'�'�	�2��/�/�#�t�W�;B�*�D�C�3��
�
�4�c�:�� � ��+�%�2�2��
� � ��+�r4c
��UR[5 [RR	[
S5n[R"[
5 [R"U5 URS[SSS5 URS[SSSSS9nURS	U5 SSS5 [R"[
5 g!,(df   N)=f![R"[
5 f=f)
N�destr.rz--filterrr�r�rr6)
r�r�r|r}r~r0r�r	r�r�r�rr�)r#�destdirrs   r�test_extract_command_filter�+CommandLineTest.test_extract_command_filter�s������w�'��'�'�,�,�y�&�1��
�����	(��#�#�G�,��'�'��g�(,�(2�F�<��o�o�d�G�&*�&0�/�7>�&�@���
�
�4�c�:�-�
���Y�'�-�,��
���Y�'�s%�C#�+AC�/C#�
C �C#�#C?c�\�UR[5 [R"[5 URS[S5nSSS5 UR
WS5 [R"[5 g!,(df   N;=f![R"[5 f=f)Nr.�spamdirrr/)r#rs  r�(test_extract_command_different_directory�8CommandLineTest.test_extract_command_different_directory�sr��� � ��)�	(��#�#�I�.��o�o�d�G�Y�?��/����S�#�&����Y�'�	/�.��
���Y�'�s"�B�A>�	B�>
B�B�B+c�,�[R"SSS9n[R"[5 URSU5up#nSSS5 UR
SW5 URWS5 URWS5 g!,(df   NE=f)Nrrrr.r	rr�)rrdr	r�r0r�rrkrs     r�!test_extract_command_invalid_file�1CommandLineTest.test_extract_command_invalid_file�sv���"�"�<�8I�J��
�
�
�	�
*��2�2�4��A�L�B�S�+��
�
�/��5�����c�"�����Q��	+�
*�s�B�
Br&N)r'r(r)r*r�r�r�r�r�r�rrrrrrr r$r'r+r2r7r<r@rCr3r&rrr�r��
sm��7�
K�	C�6�.�+�;�.�(	0�	0� �
*�*� *�	'�+�",�	,�(�&(� rr�c�8�\rSrSrSrSrSrSrSrSr	Sr
g	)
�ContextManagerTesti�c���[R"[5nURURS5 SSS5 URWRS5 g!,(df   N+=f)Nzclosed inside runtime context�context manager failed)r/r.r+r,rnr4r@s  r�
test_basic�ContextManagerTest.test_basic�sF��
�\�\�'�
"�c����S�Z�Z�)H�I�#�����
�
�$<�=�#�
"�s�A�
A+c���[R"[5nUR5 UR	[
5 U SSS5 SSS5 g!,(df   N=f!,(df   g=fr
)r/r.r+rXrKr�r@s  r�test_closed�ContextManagerTest.test_closed�sK���l�l�7�#���	�	��
�
�
�w�
'����(�
'����(�
'�s$�A'�A�A'�
A$	� A'�'
A5c�D�UR[5n[R"[5n[
e!,(df   O=fSSS5 O!,(df   O=fUR
WR[
S5 URWRS5 g)Nz)wrong exception raised in context managerrH)
rKr�r/r.r+r�rxr�r4rn)r#r
rTs   r�test_exception�!ContextManagerTest.test_exception�sl��
�
�
�y�
)�S����g�&�#��
�'�&��&�*�
)�
)��	
���c�m�m�W�I�	K�����
�
�$<�=s�A�8�
A	�A�
A!c��[R"[S5n[e!,(df   O
=f! O=fUR	[
RR[5SS5 URWRS5 g)Nr�rz-context manager wrote an end-of-archive blockrH)
r/r.r�r�rkr|r}rWr4rnr@s  r�test_no_eof�ContextManagerTest.test_no_eof�sd��	����g�s�+�s���,�+��	������������1�1�?�	A�����
�
�$<�=s�5�$�
2�5�5�9c���[R"[S5 SSS5 UR[R
R
[5SS5 g!,(df   NC=f)Nr�rz-context manager wrote no end-of-archive block)r/r.r�r�r|r}rWr"s r�test_eof�ContextManagerTest.test_eof�sF���\�\�'�3�
'��(����B�G�G�O�O�G�4�a�?�	A�(�
'�s�A�
A)c�2�[[S5n[R"USS9n[e!,(df   O
=f! O=fUR	UR
S5 UR
WR
S5 SSS5 g!,(df   g=f)Nr+r�rvzexternal file object was closedrH)r.r�r/r�r,rnr4r{s   rrB�ContextManagerTest.test_fileobj�sp���'�4�
 �D�
��\�\�$�S�9�S�#�O�:�9��
������T�[�[�*K�L��O�O�C�J�J�(@�A�!�
 �
 �s3�B�A�/�
=	�A�B�A�A�=B�
Br&N)r'r(r)r*rIrLrOrRrUrBr3r&rrrFrF�s"��>�
�>�
>�A�
BrrFzrequires os.link to be missingc�B�\rSrSrSr\R"\"\RS5S5S5r
\R"\"\RS5S5S5r\R"\"\S5S5S	5r\R"\"\S5S5S
5r
Srg)
�LinkEmulationTestic�0�URRU[SS9 [[R
R
[U5S5nUR5nSSS5 UR[W5[5 g!,(df   N.=f)Nr�rur�)rTrzr{r.r|r}r~rjrkrrn)r#r�r�rs    r�_test_link_extraction�'LinkEmulationTest._test_link_extractionsc��������w���?�
�"�'�'�,�,�w��-�t�
4���6�6�8�D�5�����4��.�9�5�
4�s�B�
B�islinkz3Skip emulation - has os.path.islink but not os.linkc�&�URS5 g)Nr��r\r"s r�test_hardlink_extraction1�+LinkEmulationTest.test_hardlink_extraction1���	
�"�"�?�3rc�&�URS5 g)Nr�r`r"s r�test_hardlink_extraction2�+LinkEmulationTest.test_hardlink_extraction2���	
�"�"�#>�?rrz Skip emulation if symlink existsc�&�URS5 g)Nr�r`r"s r�test_symlink_extraction1�*LinkEmulationTest.test_symlink_extraction1rcrc�&�URS5 g)Nr�r`r"s r�test_symlink_extraction2�*LinkEmulationTest.test_symlink_extraction2"rgrr&N)r'r(r)r*r\r�r2r�r|r}rarerirlr3r&rrrZrZs���:��_�_�W�R�W�W�h�/�J�L�4�L�4��_�_�W�R�W�W�h�/�J�L�@�L�@��_�_�W�R��+�7�9�4�9�4��_�_�W�R��+�7�9�@�9�@rrZc�&�\rSrSrSrSrSrSrg)�Bz2PartialReadTesti(c�^^�"U4SjS[R5m[R"[R
"S5R
55n[[U5S-5H"n[R"T"USU5US9 M$ g![Ra M>f=f)Nc�>>^�\rSrSrSrUU4SjrUU4SjrSrU=r$)�9Bz2PartialReadTest._test_partial_input.<locals>.MyBytesIOi-Fc�>�UR(a[S5eUR5[UR	55:HUl[
TU]U5$)Nz(infinite loop detected in tarfile.open())�hit_eof�AssertionErrorr�rlr�superrj)r#r��	MyBytesIO�	__class__s  ��rrj�>Bz2PartialReadTest._test_partial_input.<locals>.MyBytesIO.read/sK����<�<�(�*:�;�;�#�y�y�{�c�$�-�-�/�.B�B����Y��2�1�5�5rc�,>�SUl[TU]
"U6$r�)rtrvr�)r#r�rwrxs  ��rr��>Bz2PartialReadTest._test_partial_input.<locals>.MyBytesIO.seek5s���$����Y��2�D�9�9r)rt)	r'r(r)r*rtrjr�r3�
__classcell__)rxrws@�rrwrr-s����G�
6�
:�
:rrwrQr�rv)r,r�r?�compressr/rUrV�rangerlr.r?)r#r$rr}rws    @r�_test_partial_input�&Bz2PartialReadTest._test_partial_input,s����
	:��
�
�
	:��|�|�G�O�O�E�2�8�8�:�;���s�4�y�1�}�%�A�
����Y�t�B�Q�x�%8�t�D�&���$�$�
��
�s�1B�B,�+B,c�&�URS5 g�Nrw�rr"s r�test_partial_input�%Bz2PartialReadTest.test_partial_input@s��� � ��%rc�&�URS5 g)Nr�r�r"s r�test_partial_input_bz2�)Bz2PartialReadTest.test_partial_input_bz2Cs��� � ��)rr&N)r'r(r)r*rr�r�r3r&rrroro(s���(&�*rroc��SSKnSSKnURS5SS:wagUR	S5SS:wagg![a gf=f)NrF�rootT)r�r��ImportError�getpwuid�getgrgid)r�r�s  r�root_is_uid_gid_0r�GsS�����|�|�A��q��V�#��
�|�|�A��q��V�#����
����s�=�
A
�	A
�chownzmissing os.chown�geteuidzmissing os.geteuidc���\rSrSr\S5r\\S55r\RRS5\RRS5\RRS5S555r\RRS5\RRS5\RRS5S555r\R"\"5S	5\RRS5\RRS5\RRS5S
5555r\RRS5S5rSrg
)�NumericOwnerTestiSc���[R"S5nUSS[RU4USS[RS4USS[RU4/n[R
"[S5nUHNupgp�n
[R"U5nX{lX�l	S	Ul
S	UlX�lURX�5 MP SSS5 [$!,(df   [$=f)
Nscontent�c�b�M�L�XrEr�r�)r,r�r/rTr�r.r�rUr�r�r�r�r�r\)�
filename_1�	dirname_1�
filename_2rqr�r�r�r�r��typ�contentsr_s            r�_make_test_archive�#NumericOwnerTest._make_test_archive\s����z�z�*�%���b�"�g�o�o�t�<��b�"�g�o�o�t�<��b�"�g�o�o�t�<����\�\�'�3�
'�5�16�-��3�X��O�O�D�)������ ��� ������
�
�a�*�27�(���(�
'���s
�0AC�
C&c#�# �SUlSnSnUnUn[RRX!5n[RUUU5n[R"U5nXsXE4v� SSS5 g!,(df   g=f7f)Nrznumeric-owner-testfiler�)rfr|r}r~r�r�r/r.)�mock_geteuidr�r�r�r�r��tar_filenamer�s        r�_setup_test�NumericOwnerTest._setup_testtsx���%&��!�(�����
��	��W�W�\�\�'�1�
�(�:�:�:�;D�;E�G���\�\�,�
'�5��Y�:�:�(�
'�
'�s�AA?�A.�%	A?�.
A<�8A?zos.chownr�z
os.geteuidc���URU5upEnnURU[SSS9 URU[SSS9 SSS5 [RR[W5n[RR[W5n	UR
[RRUSS5[RRU	SS5/SS9 g!,(df   N�=f)	NTr���
numeric_ownerrvr�r�r�rE��	any_order)
r�rzr{r|r}r~�assert_has_callsr�r�call)
r#r�r��
mock_chownr�r�r_r��f_filename_1�f_filename_2s
          r�test_extract_with_numeric_owner�0NumericOwnerTest.test_extract_with_numeric_owner�s���
�
�
�l�
+�0<��1�0:��M�M�*�g�T�!0�
�
2��M�M�*�w�d�!0�
�
2�	,��w�w�|�|�G�Z�8���w�w�|�|�G�Z�8���#�#�X�]�]�%7�%7��b�"�%M�%-�]�]�%7�%7��b�"�%M�%'�/3�	$�	4�,�
+�s�1C$�$
C2c	�D�URU5upEnnUR[SSS9 SSS5 [RR[W5n[RR[W5n	[RR[W5n
UR
[RRUSS5[RRU	SS5[RRU
SS	5/SS
9 g!,(df   N�=f)NTr�r�r�r�r�r�r�rEr�)
r�r�r{r|r}r~r�r�rr�)r#r�r�r�r�r�r�r�r��f_dirname_1r�s           r�"test_extractall_with_numeric_owner�3NumericOwnerTest.test_extractall_with_numeric_owner�s���
�
�
�l�
+�0<��9�0:����W�D�$3�
�
5�,��w�w�|�|�G�Z�8���w�w�|�|�G�Y�7���w�w�|�|�G�Z�8���#�#�X�]�]�%7�%7��b�"�%M�%-�]�]�%7�%7��R��%L�%-�]�]�%7�%7��b�"�%M�%'�/3�		$�	4�,�
+�s�D�
Dz uid=0,gid=0 must be named "root"c��URU5upE nURU[SSS9 SSS5 [RR[W5nUR
USS5 g!,(df   NF=f)NFr�r�r)r�rzr{r|r}r~�assert_called_with)r#r�r�r�r�r�r_r�s        r�"test_extract_without_numeric_owner�3NumericOwnerTest.test_extract_without_numeric_owner�sk���
�
�l�
+�/H��1�a��M�M�*�g�U�!0�
�
2�,�
�w�w�|�|�G�Z�8���%�%�l�A�q�9�,�
+�s�A-�-
A;c	��URU5up# nUR[URU[SS5 SSS5 g!,(df   g=f)NFT)r�rKr�rzr{)r#r�r�r�r_s     r�test_keyword_only�"NumericOwnerTest.test_keyword_only�sE��
�
�
�l�
+�/H��1�a����i�#�m�m�Z��%��
O�,�
+�
+�s�-A�
Ar&N)r'r(r)r*r(r�rr�r�rrr�r�r�r�r�r�r3r&rrr�r�Ssf������.��;���;�(�]�]����$�
�]�]����$�
�]�]����&�4�'�%�%�4�$�]�]����$�
�]�]����$�
�]�]����&�4�'�%�%�4�,���*�,�;�=�
�]�]����$�
�]�]����$�
�]�]����&�	:�'�%�%�=�
	:��]�]����&�O�'�Orr�c�2�\rSrSrSrSrSrSrSrSr	g)	�ReplaceTestsi�c�2�URRS5nURSS9nURURS5 URURS5 URURRS5RS5 g)Nrfz
misc/otherrQ)rTrhr<rkr��r#r'�replaceds   r�test_replace_name�ReplaceTests.test_replace_name�sv�����#�#�O�4���>�>�|�>�4���������5�������o�6�������+�+�O�<�A�A�(�	*rc�&�URRS5nUR5nSURS'UR	URSS5 UR	URRS5RSS5 g)Nr-�not-barr�r��rTrhr<r.rkr�s   r�test_replace_deep�ReplaceTests.test_replace_deep�s{�����#�#�N�3���>�>�#��(1����W�%�����+�+�G�4�e�<�����H�H���~�.�:�:�7�C�U�	Lrc�$�URRS5nURSS9nSURS'UR	URSS5 UR	URRS5RSS5 g)Nr-F)�deepr�r�r�r�s   r�test_replace_shallow�!ReplaceTests.test_replace_shallow�s�����#�#�N�3���>�>�u�>�-��(1����W�%�����+�+�G�4�i�@�����H�H���~�.�:�:�7�C�Y�	Prc�4�URRS5nSHenURUS9 UR"S0US0D6nUR	[X25S5 UR
[X5S5 SSS5 Mg g!,(df   My=f)Nrf)r�r�r$r�r�r�r�r���	attr_namer&)rTrhr<r<rkrr�)r#r'r�r�s    r�test_replace_all�ReplaceTests.test_replace_all�s�����#�#�O�4��:�I����	��2�!�>�>�>�Y��,=�>��� � ���!=�t�D��#�#�G�F�$>��E�3�2�:�2�2�s�AB�
B	c��URRS5nUR[5 UR	SS9 SSS5 g!,(df   g=f)Nrfi�[)r�)rTrhrKr�r<)r#r's  r�test_replace_internal�"ReplaceTests.test_replace_internal�s>�����#�#�O�4��
�
�
�y�
)��N�N�)�N�,�*�
)�
)�s�A
�

Ar&N)
r'r(r)r*r�r�r�r�r�r3r&rrr�r��s��*�L�P�F�-rr�c�x�\rSrSrSr\S5r\S5rSr\	S5r
SrSrS	r
S
rSrSrS
rSrg)�NoneInfoExtractTestsi�Nc�4^�[R"[SSS9n[R"[
5S-TlSUl[5nTRc(UR[R"S[S95 URTRTRS9 SSS5 UR5 [!U4S	j[R"TR5R#S
555Tlg!,(df   Nf=f)NrwrPrQ�extractall_ctrlr�ignore)�action�categoryruc3�Z># �UH nURTR5v� M" g7fr
)�relative_to�control_dir)�.0�prhs  �r�	<genexpr>�2NoneInfoExtractTests.setUpClass.<locals>.<genexpr>
s)���� A�?��
�M�M�#�/�/�*�*�?�s�(+�**/*)r/r.r+r�r�r{r�r�r�extraction_filter�
enter_context�warnings�catch_warningsr�r�rX�set�glob�
control_paths)rhrTr�s`  rri�NoneInfoExtractTests.setUpClass
s�����l�l�7��{�C��!�,�,�w�/�2C�C������
�[�B��$�$�,�� � ��!8�!8�#�.@�"B�C��N�N�3�?�?�3�3H�3H�N�I�	�
	�	�	��� A��\�\�#�/�/�2�7�7��?� A�A���
�[�s
�AD	�	
Dc�D�[R"UR5 gr
)�shutilr�r�rms rrn�"NoneInfoExtractTests.tearDownClass
s���
�
�c�o�o�&rc�*^�[U4Sj[R"T5RS555nURS:Xa.SH(nUR[R"U55 M* UR
URU5 g)Nc3�F># �UHnURT5v� M g7fr
)r�)r�r�r_s  �rr��;NoneInfoExtractTests.check_files_present.<locals>.<genexpr>
s$����;�9��
�M�M�)�$�$�9�s�!r�r)r�r�r�)r�r�r�r�r��discardrkr�)r#r_�	got_pathsr}s `  r�check_files_present�(NoneInfoExtractTests.check_files_present
sv����;��\�\�)�,�1�1�&�9�;�;�	��!�!�V�+�J���!�!�'�,�,�t�"4�5�K�����+�+�Y�7rc'�# �[R"[5S-nSURlURR5HnUHn[
X4S5 M M [R"U5 URRUSS9 URU5 Uv� SSS5 g!,(df   g=f7f)N�extractall_nonerr�ru)r�r�r{rTr�r�setattrr	r�r�r�)r#�
attr_namesr�r'r�s     r�extract_with_none�&NoneInfoExtractTests.extract_with_none
s�����l�l�7�#�&7�7��������h�h�)�)�+�F�'�	���4�0�(�,��
�
��
$��H�H����O��<��$�$�S�)��I�%�
$�
$�s�A;C�=0B6�-	C�6
C�Cc�@�[R"[5R5RnURS5n[R"U5R
S5H`nURUS9 UR5RnURUR5RU5 SSS5 Mb SSS5 g![a UR5(deN7f=f!,(df   M�=f!,(df   g=f)Nr�r�r�)r�r�r{r��st_mtimer�r�r<�assertGreaterEqualr��
is_symlink)r#�nowr�r}r�s     r�test_extractall_none_mtime�/NoneInfoExtractTests.test_extractall_none_mtime)
s����l�l�7�#�(�(�*�3�3��
�
#�
#�G�
,�����S�)�.�.�v�6���\�\�t�\�,�K� $�	�	�� 4� 4���/�/��	�	��0D�0D�c�J�-�,�7�-�
,��
#�"�#���0�0�!� 1�"��-�,��-�
,�sH�8D�<C=�>C�*C=�D� C:	�7C=�9C:	�:C=�=
D�D�
Dc��[R"[5R5Rn[R"[5S-nURS5 UR5RnUR
S5n[R"U5RS5H�nURUS9 UR5(a+URUR5RU5 O?UR5(a*URUR5RU5 SSS5 M� SSS5 g!,(df   M�=f!,(df   g=f)N�regular_filerr$r�r�)r�r�r{r�r��
write_textr�r�r<�is_dirrk�is_file)r#�dir_moder�regular_file_moder�r}s      r�test_extractall_none_mode�.NoneInfoExtractTests.test_extractall_none_mode9
s���<�<��(�-�-�/�7�7���|�|�G�,�~�=������#�(�-�-�/�7�7��
�
#�
#�F�
+�s����S�)�.�.�v�6���\�\�t�\�,��{�{�}�}��(�(�����)<�)<�h�G�������(�(�����)<�)<�):�<�	-�,�7�,�
+�,�,��,�
+�s%�8E+�BE�E+�
E(�#E+�+
E9c�\�URS5 SSS5 g!,(df   g=f)Nr��r�r"s r�test_extractall_none_uid�-NoneInfoExtractTests.test_extractall_none_uidI
���
�
#�
#�E�
*��+�
*�
*����
+c�\�URS5 SSS5 g!,(df   g=f)Nr�rr"s r�test_extractall_none_gid�-NoneInfoExtractTests.test_extractall_none_gidM
rrc�\�URS5 SSS5 g!,(df   g=f)Nr�rr"s r�test_extractall_none_uname�/NoneInfoExtractTests.test_extractall_none_unameQ
���
�
#�
#�G�
,��-�
,�
,�rc�\�URS5 SSS5 g!,(df   g=f)Nr�rr"s r�test_extractall_none_gname�/NoneInfoExtractTests.test_extractall_none_gnameU
rrc�b�URSSSS5 SSS5 g!,(df   g=f)Nr�r�r�r�rr"s r�test_extractall_none_ownership�3NoneInfoExtractTests.test_extractall_none_ownershipY
s&��
�
#�
#�E�5�'�7�
C��D�
C�
C�s� �
.r&)r'r(r)r*r�r�rirnr�rr�rr	r
rrrrr3r&rrr�r��so�����A��A��'��'�8��	��	�K� <� ����rr�c��\rSrSrSrSrg)�NoneInfoExtractTests_Datai]
rr&N�r'r(r)r*r�r3r&rrrr]
s���rrc��\rSrSrSrSrg)�!NoneInfoExtractTests_FullyTrustedi`
r�r&Nr r&rrr"r"`
s��'�rr"c��\rSrSrSrSrg)�NoneInfoExtractTests_Tarid
rTr&Nr r&rrr$r$d
s���rr$c��\rSrSrSrSrg)�NoneInfoExtractTests_Defaultig
Nr&r r&rrr&r&g
s���rr&c� �\rSrSrSrSrSrg)�NoneInfoTests_Miscik
c�n�[R"5n[R[R[R
4H�nUR
US9 [R"USUS9nUR[5n[[S5nURXE5 SSS5 SHynUR
US9 UR"S0US0D6nUR[U5 [[S5nURXu5 SSS5 SSS5 SSS5 M{ SSS5 M� g!,(df   N�=f!,(df   N@=f!,(df   NI=f!,(df   M�=f![a U[R:XaNref=f!,(df   GMo=f)N)�	tarformatr�)rwr$r�r�)r�r$r�r�r�r�r�r&)r,r�r/r�r'r=r<r.r[r+r\r<rEr�r�)r#�bior*rTrpr�r�r�s        r�test_add�NoneInfoTests_Misc.test_addl
sS���j�j�l��!�.�.��0B�0B�!�,�,�.�I����	��2��l�l�3�S��K���.�.��1��=��g�t�,�����G�/�-�&6�	�!�\�\�I�\�>�'.���'K�)�T�9J�'K�H�!%�!7�!7�
�;D�+�"H�%)�'�4�%8�A�$'�K�K��$<�&9�"H�?�>�&6�3�2�.�-�,�� &9�%8��"H�"H��?�>��!�� �G�$8�$8�8���
��
3�2�s��,F$�E?�D:�&E?�.F$�,E-	�.E�?E
�E�E-	�!F$�:
E�E?�
E�E�
E*�&E-	�-
E<
�7F$�?F!�F$�F!�!F$�$
F4	c
�D
�S1S1S1S1S1S1SS1SS14GH�nURUS9 [R"[SS	9n[R
"[R"5S
SS9n[R"[S
U5 UR5 SSS5 UR5HnUHn[XES5 M M [R
"[R"5S
SS9n[R"[S
U5 UR5 SSS5 [UR5R5R!5UR5R5R!55GH4upxUS1:Xa0["R$"SU5(aUR'US5 M=US1:Xa0["R$"SU5(aUR'US5 MtUS1:Xa0["R$"SU5(aUR'US5 M�US1:XabUR)S5(aLUR!S5up�UR!S5up�UR'X�5 UR+US5 GMUS1:XabUR-S5(aLUR!S5up�UR!S5up�UR'X�5 UR+US5 GM}US1:XabUR)S5(aLUR!S5up�UR!S5up�UR'X�5 UR'US5 GM�US1:XabUR-S5(aLUR!S5up�UR!S5up�UR'X�5 UR'US5 GMOUSS1:XabUR)S5(aLUR!S5up�UR!S5up�UR'X�5 UR'US5 GM�USS1:XabUR-S5(aLUR!S5up�UR!S5up�UR'X�5 UR'US5 GM#UR'Xx5 GM7 SSS5 SSS5 GM� g!,(df   GNH=f!,(df   GN�=f!,(df   N@=f!,(df   GM
=f)Nr�r$r�r�r�r�)r�rPr�r�r�r�r�s2003-01-\d\ds
????-??-??s\d\d:\d\d:\d\ds??:??:??s.([r-][w-][x-]){3}s
??????????)�tarfile/�lars/�foo/�/s[0-9]+)�/tarfile�/users�/bar�1000/sNone�/100)r/r0r1r6)r3r4r5r7)r<r/r.r+r,r�r�rr�r�r�rr�rr�rrh�re�matchrkr�r�endswith)
r#r�rT�tio_prevr'r��tio_newr��got�exp_user�	exp_group�got_user�	got_groups
             rr�NoneInfoTests_Misc.test_list�
sA��
$�9�v�h���%��#�9�w�i�!�7�+�e�W�-=�?�J��,�,�*�,�5��,�,�w��=���+�+�B�J�J�L�'�4�P���&�&�s�H�h�?��H�H�J�@�!�n�n�.�F�%/�	���4�8�&0�/��*�*�2�:�:�<��$�O���&�&�s�H�g�>��H�H�J�?�%(����):�)C�)C�)E�)K�)K�)M�)0���)9�)B�)B�)D�)J�)J�)L�&N�M�H�!�g�Y�.�2�8�8�<L�h�3W�3W��(�(��m�<�#��y�0�R�X�X�>P�RZ�5[�5[��(�(��k�:�#��x�/�B�H�H�2�H�5>�5>��(�(��m�<�#��y�0�X�5H�5H�<�6>�6>�.6�n�n�T�.B�+��.1�i�i��o�+���(�(��>��(�(��9�=�#��y�0�X�5F�5F�=�6?�6?�.6�n�n�T�.B�+��.1�i�i��o�+���(�(��<��(�(��I�>�#��w�.�8�3F�3F�%�4(�4(�.6�n�n�T�.B�+��.1�i�i��o�+���(�(��>��(�(��7�;�#��w�.�8�3D�3D�g�3O�3O�.6�n�n�T�.B�+��.1�i�i��o�+���(�(��<��(�(��G�<�#��w�'7�7�H�<O�<O�F�=H�=H�.6�n�n�T�.B�+��.1�i�i��o�+���(�(��>��(�(��7�;�#���'7�7�H�<M�<M�F�=H�=H�.6�n�n�T�.B�+��.1�i�i��o�+���(�(��<��(�(��G�<��(�(��7�]&N�>�6�5�?�@�?��?�>��>�=��6�5�sV�T�AS>�S	�A9S>�S,	�#N!S>�T�
S)
�$S>�,
S;
�6S>�>
T�T�
T	r&N)r'r(r)r*r,rr3r&rrr(r(k
s
��=�8A8rr(c��USSn[RSS.US[RSS.US-[RS[R[R-[RS.US-[R
SS.US-[RSS.US	-[RS[R[R-[RS.US
-[RSS.US-[RSS.US-[RS[R[R-[RS
.US-nU$)z~Inverse of `stat.filemode` (for permission bits)

Using mode strings rather than numbers makes the later tests more readable.
r�Nr)rw�-)r�rD)r}rDr��Sr�r��r�r��)r}rDr_�Tru)
r��S_IRUSR�S_IWUSR�S_IXUSR�S_ISUID�S_IRGRP�S_IWGRP�S_IXGRP�S_ISGID�S_IROTH�S_IWOTH�S_IXOTH�S_ISVTX)r$�str_mode�results   r�_filemode_to_intrW�
s`��
�A�B�x�H����1�
%�h�q�k�
2����1�
%�h�q�k�
2�3����1����t�|�|�+�����&�q�k�+�+�
���1�
%�h�q�k�
2�3����1�
%�h�q�k�
2�
3����1����t�|�|�+�����&�q�k�+�	+����1�
%�h�q�k�
2�
3����1�
%�h�q�k�
2�3����1����t�|�|�+�����&�q�k�+�+��(�Mrc�H�\rSrSrSrSrSrSrSSSSSSS.SjrS	r	S
r
g)r�i�
z�Helper to create a tar file with specific contents

Usage:

    with ArchiveMaker() as t:
        t.add('filename', ...)

    with t.open() as tar:
        ... # `tar` is now a TarFile with 'filename' in it!
c�X�[R"5Ul[U5Ulgr
)r,r�r+�dict�
tar_kwargs)r#r�s  rr�ArchiveMaker.__init__�
s���:�:�<����v�,��rc�j�[R"SSURS.URD6UlU$)Nr�r�r&)r/r0r+r[�tar_wr"s r�	__enter__�ArchiveMaker.__enter__�
s)���_�_�S�#�t�x�x�S�4�?�?�S��
��rc��URR5 URR5UlSUlgr
)r^rXr+rr�)r#r
s  r�__exit__�ArchiveMaker.__exit__�
s-���
�
�������)�)�+��
���rN)r�r��hardlink_tor$rm�contentc��[U5n[R"U5R"S0UD6n	Ub0[	U[5(aUR5n[
U5nUbXilUc[U	R5nU(a[U5U	l
Ub [Rn[U5U	lUb [Rn[U5U	lURS5(aUc[RnUbX)lU	R#5(a[$R&"U5n
OSn
UR(R+X�5 g)abAdd a member to the test archive. Call within `with`.

Provides many shortcuts:
- default `type` is based on symlink_to, hardlink_to, and trailing `/`
  in name (which is stripped)
- size & content defaults are based on each other
- content can be str or bytes
- mode should be textual ('-rwxrwxrwx')

(add more! this is unstable internal test-only API)
Nr�r&)ryr/rUr<r�r�rlrmr�rWr$r�r�r&r:r�r�r>r,r�r^r\)r#r�r�r�rdr$rmrer�rprws           rr��ArchiveMaker.add�
s���4�y���/�/�$�'�/�/�9�&�9�����'�3�'�'�!�.�.�*���w�<�D����L�������-���+�D�1�G�L��!��?�?�D�"�:��G���"��?�?�D�"�;�/�G���=�=����$�,��?�?�D����L��=�=�?�?��j�j��)�G��G��
�
���7�,rc�r�[R"UR5n[R"SSU0UD6$)z9Open the resulting archive as TarFile. Call after `with`.rwr&)r,r�r�r/r.)r#r�r+s   rr.�ArchiveMaker.open(s+���j�j����'���|�|�2�C�2�6�2�2r)r+r�r[r^)r'r(r)r*r�rr_rbr�r.r3r&rrr�r��
s1��	�'���
!%��4��D�$�'-�R3rr�c�:�[R"S5"U5$)NzWASI: Skip symlink test for now)r��skip�r�s r�symlink_testrm3s���}�}�>�?��B�Brc��U$r
r&rls rrmrm6s���rc�V�\rSrSr\R
"\5S-r\S-r\	SS.Sj5r
S.SjrS	rS/S
jr
SrSr\S
5r\\R&S55r\S5r\S5rSr\S5r\S5r\S5r\S5r\S5r\S5r\S5rSrSr Sr!Sr"Sr#Sr$Sr%\&RN"\(RRS :HS!5S"5r*\&RN"\(RRS :HS!5S#5r+S$r,S%r-S&r.S'r/S(r0S)r1S*r2S+r3S,r4S-r5g)0�TestExtractionFiltersi:�outerdirr:T)�
check_flagc#�n# �[R"UR5 URS-nURS5 UR	UR
US9 SUlSUl[URRS55Ul
URRUR
5 URRU5 Uv� UR5 UR(aUReURUR[55 U(a URUR5S5 SSS5 g![a&nXPlSUl[5Ul
SnAN�SnAff=f!UR5 f=f!,(df   g=f7f)a�Extracts `tar` to `self.destdir` and allows checking the result

If an error occurs, it must be checked using `expect_exception`

Otherwise, all resulting files must be checked using `expect_file`,
except the destination directory itself and parent directories of
other files.
When checking directories, do so before their contents.

A file called 'flag' is made in outerdir (i.e. outside destdir)
before extraction; it should not be altered nor should its contents
be read/copied.
�flagz
capture meruNFr�T)r	r�rqrr�r;�raised_exception�reraise_exceptionr�r��expected_pathsr�r�rXrkr�)r#rTrvrr�	flag_pathr
s      r�
check_context�#TestExtractionFilters.check_contextDsM����
�
��
�
�
.��
�
��.�I�� � ��.�
7����t�|�|�F��;�)-��%�).��&�&)�$�-�-�*<�*<�V�*D�&E��#��#�#�+�+�D�L�L�9��#�#�+�+�I�6�
��
��	�	���%�%��+�+�+����T�0�0�#�%�8��� � ��!4�!4�!6��E�//�
.��
�
,�(+�%�)-��&�&)�e��#�#��
,���	�	���%/�
.�s`�!F5�!F$�E�A7F$�F�A8F$�	F5�
F�&F�F$�F�F$�F!�!F$�$
F2�.F5Nc�x�UR(aURe[R"[RRURU-55nURXpR5 URRU5 Ub�[R"5(ag[RS:waS[R"[R"UR5R 55nUR#X�5 Uc;[%U[&5(a&UR)S5(a[*R,nUbZURU-R/5n[R"U5n	X�:wa UR1UR3U	55 O�U[*R8:XdUc UR1UR;55 O�U[*R,:Xa UR1UR=55 OsU[*R>:Xa UR1URA55 O?U[*RB:Xa UR1URE55 O[GU5eUb*UR#UR5RHU5 Ub UR#URK5U5 URLHnURROU5 M  g![4an
U
R7SU	<SU<35 eSn
A
ff=f)z'Check a single file. See check_context.N�ntr�z	expected=z, got=)(rur�r�r|r}�normpathr;rrw�remover	�	can_chmodr�r�r��S_IMODEr�rkr�ryr:r/r��readlinkr4�samefiler��add_noterTrrr��is_fifor�r��NotImplementedErrorrr��parentsr�)r#r�r�r�r$rmrer}r=r�rk�parents            r�expect_file�!TestExtractionFilters.expect_filensB��� � ��'�'�'��|�|�B�G�G�,�,�T�\�\�D�-@�A�B���
�
�d�/�/�0����"�"�4�(���	� 3� 3� 5� 5�"�'�'�T�/��-�-����T�Y�Y�[�-@�-@� A�B�C����S�'��<�J�t�S�1�1�d�m�m�C�6H�6H��?�?�D��!��<�<�$�&�0�0�2�C��|�|�J�/�H�
��?��O�O�C�L�L��$:�;��
�W�_�_�
$����O�O�D�L�L�N�+�
�W�_�_�
$��O�O�D�K�K�M�*�
�W�%�%�
%��O�O�D�L�L�N�+�
�W�_�_�
$��O�O�D�O�O�-�.�%�d�+�+������T�Y�Y�[�0�0�$�7������T�^�^�-�w�7��l�l�F����'�'��/�#��%�
��
�
�i�h�[��3�&�1�2���
�s�
%L�
L9�L4�4L9c���URU-R5nURU[RS9 UR
Vs1sHnX#R;dMUiM snUlgs snf)z-Check a directory; forget about its contents.�r�N)r;�resolver�r/r�rwr�)r#r��	tree_pathr�s    r�expect_any_tree�%TestExtractionFilters.expect_any_tree�se���\�\�D�(�1�1�3�	���������9��*�*�
�*�!��	�	�)�
�*�
����
s�
A0�!A0c��URX5 URbUReSSS5 SUlUR$!,(df   N!=fr�)rErurv)r#�exc_type�
message_res   r�expect_exception�&TestExtractionFilters.expect_exception�sQ��
�
#�
#�H�
9��$�$�0��+�+�+�1�:�"'����$�$�$�	:�
9�s�A�
Ac��[5nURS5 SSS5 SH=nURWR5U5 UR	S5 SSS5 M? g!,(df   NR=f!,(df   Mb=f)Nz
benign.txt)r�rTr�r�r�ryr.r��r#r�rvs   r�test_benign_file�&TestExtractionFilters.test_benign_file�sa��
�^�s��G�G�L�!��4�F��#�#�C�H�H�J��7�� � ��.�8�7�5��^��8�7�s�A)�
A:�)
A7�:
B		c��[5nURURS-5 SSS5 URWR	5S5 URS5 SSS5 SH�nURUR	5U5 [
UR5RS5(a9[
UR5RS5nURUS35 O UR[RS5 SSS5 M� g!,(df   N�=f!,(df   N�=f!,(df   M�=f)Nzescaped.evilr�z../escaped.evil�rTrr�z
/escaped.evilz+['"].*escaped.evil['"] has an absolute path)r�r�rqryr.r�ryr��lstripr�r/�AbsolutePathError)r#r�rv�outerdir_strippeds    r�
test_absolute�#TestExtractionFilters.test_absolute�s����^�s��G�G�D�M�M�N�2�3���
�
����
�O�
<����.�/�=�$�F��#�#�C�H�H�J��7��t�}�}�%�0�0��5�5�),�D�M�M�(:�(A�(A�#�(F�%��$�$�(9�':�-�%H�I��)�)��1�1�I�K�8�7�$�
�^��=�
<��8�7�s$�D!�D2�BE�!
D/�2
E�
E	c�F�[5nURSSS9 URSSS9 URS5 SSS5 [R"5(GaUR	WR5S5 URbUR[5 SSS5 gURSSS9 URSSS9 URS5 SSS5 UR	UR5S	5 UR[RS
5 SSS5 UR	UR5S5 UR[RS5 SSS5 gUR	WR5S5 URS5 SSS5 UR	UR5S	5 URS5 SSS5 UR	UR5S5 URS5 SSS5 g!,(df   GN�=f!,(df   GNc=f!,(df   GN,=f!,(df   g=f!,(df   N�=f!,(df   N�=f!,(df   g=f)
N�currentr�r�r�z
current/..�parent/evilr�r�rT�T'parent/evil' would be extracted to ['"].*evil['"], which is outside the destinationrzK'parent' would link to ['"].*outerdir['"], which is outside the destination)
r�r�r	r�ryr.rur�rxr�r/�OutsideDestinationError�LinkOutsideDestinationError�r#r�s  r�test_parent_symlink�)TestExtractionFilters.test_parent_symlink�s���^�s�

�G�G�I�#�G�.�
�G�G�H��G�6��G�G�M�"��� � �"�"��#�#�C�H�H�J��@��(�(�4��)�)�/�:��A�@��$�$�Y�3�$�?��$�$�X�,�$�G��$�$�Y�/�A��#�#�C�H�H�J��6��%�%��3�3�9�:�7��#�#�C�H�H�J��7��%�%��7�7�9�:�8�7��#�#�C�H�H�J��@�� � ��/�A��#�#�C�H�H�J��6�� � ��/�7��#�#�C�H�H�J��7�� � ��/�8�7�Y�^��A�@��7�6��8�7��A�@��6�6��7�7�sY�2H)�$H;�-1H;�!I
�!I�I0�J�J�)
H8�;
I
�
I�
I-�0
I>�
J�
J c���[5nSn[RS:XaSnO�S[R;ag[R
"URRS5nSn[[UR55U-nXF-
[U5U--nSU-nO[S5eSnSn	UH�n
UR[RRX�5[R S	S
9 UR[RRX�5US9 [RRX�5n[RRX�5n	M� [RR"/UQSP76nS
/[U5-nURU[RR"U6S9 URS[RRUS
5S9 URS[RRSS5S9 URSSS9 URSSS9 SSS5 UR#S5 UR%WR'5SSS9 [RS:XaUR)[*[,45 O�UR.(aUR)[05 O_UR3W5 UR5SSS9 UR5SSS9 UR5S[R6S9 UR5SUS9 SSS5 SSS5 SH�n
UR#U
5 UR%WR'5U
S9 UR)[8[045n[;U[85(a[[RS:XaUR=UR>S5 O*URAURB[BRD5 SSS5 SSS5 M� g!,(df   GN�=f!,(df   N�=f!,(df   GN=f!,(df   NP=f!,(df   GM*=f)N�abcdefghijklmnopr��ddddddddddddddddddddddddd�PC_PATH_MAXr��dz1Need to guess component length for {sys.platform}r�
drwxrwxrwxr�r��llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllr��escape�flaglinkrt�rd�	overwrite)rezescape/newfile�newr�F)rvrrz
../newfiler�r�r�ru)r�r���)#r�r�r�r|�pathconf_names�pathconfrqr�rlryr;r�r�r}r~r/r�r<ryr.r�rFrxrur�r�r�r�r�r�r�winerrorrk�errno�ENAMETOOLONG)r#r��steps�	component�max_path_len�path_sep_len�dest_len�
component_lenr}�	step_path�i�linkpath�parent_segmentsrvr
s               r�test_realpath_limit_attack�0TestExtractionFilters.test_realpath_limit_attack�sY��
�^�s�
'�E��|�|�w�&�$�	��"�"3�"3�3�!�{�{�4�=�=�+?�+?��O�� ���s�4�<�<�0�1�L�@��!-�!8�c�%�j�<�>W� X�
��-�/�	�)�*]�^�^��D��I�����������T�5�G�O�O�)��+���������T�-�)��D��w�w�|�|�D�4���G�G�L�L��6�	���w�w�|�|�4�U�4�G�4�H�#�f�s�5�z�1�O��G�G�H�������)G�G�H��G�G�H������h��)E�G�F�
�G�G�J�B�G�G�L�L��6�,J�G�K��G�G�J��G�4��G�G�$�e�G�4�O�R�l�l�?�+�� � �����O�,1�!�3��|�|�w�&��%�%�'8�/�&J�K��&�&��%�%�h�/��$�$�Y�/�� � ��[� �A�� � ��u� �=�� � ����� �@�� � ��� �;�3�,� $�F����f�%�t�'9�'9�#�(�(�*�V�'9�'T��+�+�W�h�,?�@���c�7�+�+��|�|�w�.��
�
�c�l�l�K�@��(�(����E�4F�4F�G�(U�%�%�$�s�^��T3�3��,�+��"(U�'T��%�%�sV�H,P
� P0�0B7P�'P0�
Q�,BQ�8Q�
P�
P-	�)P0�0
P?�
Q�Q�
Q#	c�~�[R"5(Ga;[RR	[
S5n[R"U5 [R"S[RR	US55 [[RR	USSS5S5 SSS5 [RR[RR	US55(aSnOQ[RR[RR	USS55(aSnO[S	5e[5nURSSS
9 URSSS
9 URS5 SSS5 URWR5S
5 [R"5(a2URSSS
9 URSSS
9 URS5 O"URS5 URS5 SSS5 URUR5S5 [R"5(a!UR[ R"S5 O"URS5 URS5 SSS5 URUR5S5 [R"5(aIW(a!UR[ R"S5 OCUR[ R$S5 O"URS5 URS5 SSS5 g!,(df   GN�=f!,(df   GN�=f!,(df   GNh=f!,(df   N�=f!,(df   g=f)N�resolution_testr�r�r�ror�TFz#Could not determine link resolutionr�zcurrent/parentr�r�r�r�zcurrent/rTr�rzS'current/parent' would link to ['"].*outerdir['"], which is outside the destination)r	r�r|r}r~r{r�rr.r�rur�r�ryr�r�r/r�r�)r#�testpath�dotdot_resolves_earlyr�s    r�test_parent_symlink2�*TestExtractionFilters.test_parent_symlink2Gs���� � �"�"��w�w�|�|�G�->�?�H��H�H�X��
�J�J�s�B�G�G�L�L��9�=�>��b�g�g�l�l�8�Y��f�E�s�K��L��w�w�~�~�b�g�g�l�l�8�V�<�=�=�)-�%�����������X�t�V� D�E�E�).�%�$�%J�K�K�
�^�s�
�G�G�I�#�G�.�
�G�G�$��G�6��G�G�M�"���
�
����
�O�
<��$�$�&�&�� � ��s� �;�� � ��d� �;�� � ��+�� � ��,�� � ��/�=��
�
����
�E�
2��$�$�&�&��%�%��7�7�,�-�� � ��,�� � ��/�3��
�
����
�F�
3��$�$�&�&�(��)�)�#�;�;�0�1��)�)�#�?�?�0�1�� � ��,�� � ��/�%4�
3�_L�K���^��=�
<��3�
2��4�
3�s?�7M'�!2M9�;A/N�AN�BN.�'
M6�9
N�
N�
N+�.
N<c��[5nURSURS9 URS5 SSS5 URWR	5S5 [
R"5(a,URSURS9 URS5 OURS5 SSS5 URUR	5S5 [
R"5(a!UR[RS5 OURS5 SSS5 URUR	5S5 UR[RS	5 SSS5 g!,(df   GNN=f!,(df   N�=f!,(df   N{=f!,(df   g=f)
Nr�r�r�r�r�rTr�r�&'parent' is a link to an absolute path)r�r�rqryr.r	r�r�r�r/r��AbsoluteLinkErrorr�s  r�test_absolute_symlink�+TestExtractionFilters.test_absolute_symlink�sD���^�s��G�G�H����G�7��G�G�M�"���
�
����
�O�
<��$�$�&�&�� � ��d�m�m� �D�� � ��+�� � ��/�=��
�
����
�E�
2��$�$�&�&��%�%��7�7�,�-�� � ��/�3��
�
����
�F�
3��!�!��)�)�8�
:�4�
3�+�^��=�
<��3�
2��4�
3�s1�,E>�AF�A
F!�!F2�>
F
�
F�!
F/�2
Gc�z�[5nURSURS-S9 SSS5 URWR	5S5 UR[S5 SSS5 URUR	5S5 UR[S5 SSS5 URUR	5S5 UR[RS5 SSS5 g!,(df   N�=f!,(df   N�=f!,(df   Nz=f!,(df   g=f)	Nr�rQr�r�z.*foo. not foundrTrr�)	r�r�rqryr.r�r�r/r�r�s  r�test_absolute_hardlink�,TestExtractionFilters.test_absolute_hardlink�s����^�s��G�G�H�$�-�-�%�*?�G�@���
�
����
�O�
<��!�!�(�,>�?�=��
�
����
�E�
2��!�!�(�,>�?�3��
�
����
�F�
3��!�!��)�)�8�
:�4�
3��^��=�
<��3�
2��4�
3�s/�C9�D
�D�!D,�9
D�

D�
D)�,
D:c��[5nURSSS9 SSS5 URWR5SS9 [R
"5(aF[
UR[5(aUR[5 OURSSS9 OSSS5 SHLnURWR5U5 UR[RS5 SSS5 MN g!,(df   N�=f!,(df   Nr=f![a N�f=f!,(df   M�=f)N�../mooz..//tmp/moor�r�rur�zH'../moo' would be extracted to '.*moo', which is outside the destination)
r�r�ryr.r	r�r�rurxr�r�r/r�r�s   r�test_sly_relative0�(TestExtractionFilters.test_sly_relative0�s���^�s��G�G�H��G�7��	��#�#�C�H�H�J��#�G��(�(�*�*�!�$�"7�"7��I�I��-�-�o�>��(�(��m�(�L��H�&$�F��#�#�C�H�H�J��7��%�%��7�7�,�-�8�7�$�1�^��
H�G�� �	��	��8�7�sG�D�D"�A"D�%D"�!D2�
D�
D�D"�D"�"
D/�.D/�2
E	c�Z�[5nURS5 URSSS9 SSS5 URWR5S5 UR	S[
RS9 [R"5(aUR	SS	S9 SSS5 S
HLnURUR5U5 UR[
RS5 SSS5 MN g!,(df   N�=f!,(df   Nr=f!,(df   M�=f)Nztmp/z
tmp/../../mooztmp/../..//tmp/moor�r��tmpr�r�ztmp/../../tmp/moor�zU'tmp/../../moo' would be extracted to ['"].*moo['"], which is outside the destination)r�r�ryr.r�r/r�r	r�r�r�r�s   r�test_sly_relative2�(TestExtractionFilters.test_sly_relative2�s����^�s��G�G�F�O��G�G�O�0D�G�E���
�
����
�O�
<����U�����9��$�$�&�&�� � ��6I� �J�=�
$�F��#�#�C�H�H�J��7��%�%��3�3�$�%�8�7�$��^��=�
<��8�7�s$�"C9�A	D
�!D�9
D�

D�
D*	c	�f�[5nURSSS9 URS[RR	SS5S9 URS[RR	S	SS5S
9 SSS5 SH�nURWR
5U5 URSSS9 URSSS9 [R"5(aURSSSS
9 OURSSS9 SSS5 M� g!,(df   N�=f!,(df   M�=f)N�targetdir/targetr�r��linkdir/hardlink�	targetdirrr��linkdir/symlinkr�r��rTrr�z../targetdir/target�rmr��
r�r�r|r}r~ryr.r�r	r�r�s   r�test_deep_symlink�'TestExtractionFilters.test_deep_symlinks��
�^�s��G�G�&�Q�G�/��G�G�&�B�G�G�L�L��X�5'�G�
(�
�G�G�%�"�'�'�,�,��k�8�3-�G�
.�
�5�F��#�#�C�H�H�J��7�� � �!3�!� �<�� � �!3�!� �<��(�(�*�*��$�$�%6�Q�0E�%�G��$�$�%6�Q�$�?�8�7�5��^��8�7�s�A.D�&AD!�
D�!
D0	c�B�[5nURSSS9 URS[RR	SS5S9 URSSS	9 URS
[RR	SS5S
9 URS[RR	SS5S
9 SSS5 SH�nURWR
5U5 URSSS	9 URS
SS	9 URSSS	9 [R"5(a#URSSSS9 URSSSS9 O URSSS	9 URSSS	9 SSS5 M� g!,(df   N�=f!,(df   M�=f)Nr��hardlinkr��symlink2�linkdir�	hardlink2r�r�r�r�r�rr�zlinkdir/hardlink2rr�r�r�r�s   r�test_chains�!TestExtractionFilters.test_chainss{���^�s��G�G�%�*�G�=��G�G�J�2�7�7�<�<��;�,(�G�
)��G�G�&�Q�G�/��G�G�&�B�G�G�L�L��h�4W�G�X��G�G�'�R�W�W�\�\�)�Y�5W�G�X�
�5�F��#�#�C�H�H�J��7�� � �!3�!� �<�� � �!3�!� �<�� � �!4�1� �=��(�(�*�*��$�$�%6�Q�0:�%�<��$�$�Z�a�0C�%�E��$�$�%6�Q�$�?��$�$�Z�a�$�8�8�7�5��^��8�7�s�B+E>�#BF�>
F�
F	c	���[5nURS5 URS5 URS[RR	SS5S9 URS[RR	SSS	5S9 URSS
S9 URS[RR	SS5S
9 SSS5 URWR
5S5 [R"5(d UR[R5 O~[RS:Xa UR[R5 OJUR[RS5nURUR [R5 SSS5 SH�nUR#U5 URUR
5U5 [R"5(d4UR%S5 UR%S5 UR%S5 ORUR%S5 UR%S5 UR%SSS9 UR%SSS9 UR%SS
S9 SSS5 SSS5 M� g!,(df   GN�=f!,(df   GN=f!,(df   N?=f!,(df   GM0=f)Nz	a/t/dummyzb/�cr�r_r�zc/escaper��	link_herer��boomr�r�rr�zJlink 'boom' would be extracted as a copy of 'c/escape', which was rejected)rTr�zc/z
a/t/escapez../../link_here)r�r�r|r}r~ryr.r	r�r�r/r�r�r��LinkFallbackErrorrx�	__cause__r<r�)r#r�rkrvs    r�test_sneaky_hardlink_fallback�3TestExtractionFilters.test_sneaky_hardlink_fallback6s2��
�^�s�
�G�G�K� ��G�G�D�M��G�G�C�B�G�G�L�L��c�$:�G�;��G�G�J�2�7�7�<�<��d�8C�,E�G�
F�
�G�G�C�C�G�(�
�G�G�F������S�(�(C�G�D��"�
�
����
�F�
3��(�(�*�*��%�%��7�7�9�����(��%�%�g�&I�&I�J��)�)��-�-�7�8���%�%�a�k�k�&-�&I�&I�K�4�"-�F����f�%�t�'9�'9�#�(�(�*�f�'M� �,�,�.�.��$�$�[�1��$�$�T�*��$�$�T�*��$�$�[�1��$�$�T�*��$�$�\�>O�$�P��$�$�V�8I�$�J��$�$�S�S�$�9�(N�%�%�-�E�^��"4�
3��$(N�'M��%�%�s>�B>J�1B9J1�!K�)B!K�
K�
J.�1
K�
K�
K�
K$	c��[5nURS[RR	SSSSS5S9 URSSS9 SSS5 SHnURWR
5U5 [R"5(a8URSSS9 US:XaURSSS9 OURSS	S9 OSSS5 M� g!,(df   N�=f!,(df   M�=f)
Nr�r�r�z	link-herer�r�r�rzlink/link/../../link-here)
r�r�r|r}r~ryr.r	r�r�r�s   r�test_exfiltration_via_symlink�3TestExtractionFilters.test_exfiltration_via_symlinkjs����^�s��G�G�H������f�f�d�D�R]�)^�G�_��G�G�F�t�G�,��5�F��#�#�C�H�H�J��7��(�(�*�*��$�$�V��$�=���'��(�(��k�(�J��(�(��4O�)�Q��8�7�5�	�^��
8�7�s�AC�:AC,�
C)�,
C;	c���[5nURSSS9 URSSS9 URSSS9 URSS	S9 SSS5 S
H�nURWR5U5n[R
"5(dUR
S5 OGUS:Xa!UR
SS	S9 UR
SSS9 O UR
SS	S9 UR
SSS9 [RS:wa9URR5RnURUS
-S
5 SSS5 M� g!,(df   GN=f!,(df   GM=f)Nza/pwnr�r�za/pwn/r�r�zx/../za/xz../r�rr�r�)
r�r�ryr.r	r�r�r�r�rqr�r�r�)r#r�rv�ccr�s     r�test_chmod_outside_dir�,TestExtractionFilters.test_chmod_outside_dir�s:��
�^�s��G�G�G��G�,�
�G�G�H�<�G�0��G�G�G��G�0�
�G�G�E�u�G�.��5�F��#�#�C�H�H�J��7�2� �,�,�.�.��$�$�X�.��v�%��$�$�U�u�$�=��$�$�W��$�=��$�$�U�u�$�=��$�$�W��$�A��<�<�7�*� �k�k�.�.�0�8�8�G��'�'��%���?�8�7�5��^��8�7�s�AE�9CE�
E�
E)	c���[5nURS5 URS5 URSSS9 URSSS9 SSS5 SHpnURWR5U5nUR	S5 UR	S5 UR	S5 UR	S5 SSS5 Mr g!,(df   N�=f!,(df   M�=f)	N�dir/zdir/../afile�link1r��link2zdir/../dir/../afiler��afiler�)r#r�rvr�s    r�test_link_fallback_normalizes�3TestExtractionFilters.test_link_fallback_normalizes�s����^�s��G�G�F�O��G�G�N�#��G�G�G��G�8��G�G�G�)>�G�?�	�5�F��#�#�C�H�H�J��7�2�� � ��(�� � ��)�� � ��)�� � ��)�	8�7�5�
�^��8�7�s�AC
�;AC�
C�
C-	c
�R�[5nURSSS9 URSSS9 URSSS9 URSS	S9 URS
SS9 URSS
S9 URSSS9 SSS5 [RR	[
S5n[
US5 SSS5 [R"U5R[R-[R-[R-n[R"X#5 [R"U5RnU[R-(aSOSnU[R-(aSOSnU[R-(aSOSn[R""U5 [R$"U5 [R"U5R[R-[R-[R-n[R"X#5 [R"U5RnU[R-(aSOSn	U[R-(aSOSn
U[R-(aSOSn[R&"U5 UR)WR
5S5 UR+SSUSUSU3S9 UR+SSS9 UR+SSS9 UR+SS	S9 UR+S
SS9 UR+SSUSU	3S9 UR+SSU
SUSU	3S9 SSS5 UR)UR
5S5 UR+SSS9 UR+SSS9 UR+SSS9 UR+SS	S9 UR+S
SS9 UR+SSS9 UR+SSS9 SSS5 UR)UR
5S5 [R,"[R."UR0R5R55nUR+SSS9 UR+SSS9 UR+SS S9 UR+SS!S9 UR+S
S"S9 UR+SUS9 UR+SUS9 SSS5 g!,(df   GNw=f!,(df   GNO=f![a<nUR[[SS5:XaUR!S5 SnAGN'eSnAff=f![R""U5 f=f!,(df   GN=f!,(df   GN�=f!,(df   g=f)#N�all_bitsr�r��	perm_bitsz
?rwxrwxrwx�exec_group_otherz
?rw-rwxrwx�read_group_onlyz
?---r-----�no_bitsz
?---------r�z
?---rwsrwtz
dir_all_bits/ztmp.filer��EFTYPErz?chmod() failed with EFTYPE: regular users cannot set sticky bitr_r}r�r�z?rwr�z?---rwrTz
?rwxr-xr-xz
?rw-r-xr-xz
?---r-xr-xrz
?rw-r--r--z
?rw-r-----z
?rw-------)r�r�r|r}r~r{r.r�r�rTrPrLr�r�r�rrvr�r�r�ryr�r�r�rq)
r#r��tmp_filename�new_moder
�got_mode�_t_file�
_suid_file�
_sgid_file�_t_dir�	_suid_dir�	_sgid_dir�normal_dir_modes
             r�
test_modes� TestExtractionFilters.test_modes�s����^�s��G�G�J�\�G�2��G�G�K�l�G�3��G�G�&�\�G�:��G�G�%�L�G�9��G�G�I�L�G�1��G�G�F��G�.��G�G�O�,�G�7���w�w�|�|�G�Z�8��
�,��
$��%�	$�����-�5�5��,�,�'�)-���6�8<���E�H�	
�����0��w�w�|�,�4�4�H�&����5�c�C�G�!)�D�L�L�!8��s�J�!)�D�L�L�!8��s�J��I�I�l�#�
������G�G�L�)�1�1��l�l�#�%)�\�\�2�48�L�L�A��
����(��7�7�<�(�0�0��!�D�L�L�0��s��$�t�|�|�3�C�#�	�$�t�|�|�3�C�#�	�
�����
�
�
����
�O�
<����Z�$'�
�|�2�j�\��G�9�"M�
�
O����[�|��<����/�l��C����.�\��B����Y�\��:����V�F�9�+�R��x�*H��I����_�$'�	�{�"�Y�K�r�&��"J�
�
L�=��
�
����
�E�
2����Z�l��;����[�|��<����/�l��C����.�\��B����Y�\��:����V�,��7����_�<��@�3��
�
����
�F�
3�"�m�m�D�L�L��
�
�"�"�$�,�,�-.�/�O����Z�l��;����[�|��<����/�l��C����.�\��B����Y�\��:����V�/��:����_�?��C�4�
3�E�^��%�
$���
��9�9���x�� ;�;��M�M�#H�I�I���
��
�I�I�l�#��=�
<��3�
2��4�
3�s}�A1S,�4S>�?AU�T�)A4U�B	U4�
A1V�&B=V�,
S;�>
T
�
U�0U�
U�U�U�U�U1�4
V�
V�
V&c�.�[5nURS[RS9 SSS5 SHanUR	WR5U5 [
[S5(aURS[RS9 OSSS5 Mc UR	WR5S5 UR[RS5 SSS5 g!,(df   N�=f!,(df   M�=f!,(df   g=f)NrQr�)r�rT�mkfiforz'foo' is a special file)r�r�r/r�ryr.r�r|r�r��SpecialFileErrorr�s   r�	test_pipe�TestExtractionFilters.test_pipes���
�^�s��G�G�E�� 0� 0�G�1��-�F��#�#�C�H�H�J��7��2�x�(�(��$�$�U��1A�1A�$�B��8�7�-��
�
����
�F�
3��!�!��(�(�)�
+�4�
3��^��8�7��4�
3�s#�C#�6C4�9!D�#
C1�4
D	�
Dc���[R[R[R4GHn[R"S5nXl[R"US5nURX25 [R"US5nURUR
U5 UR[R5n[R"US5 SSS5 URWRR[R5 URURRR S5 GM! g!,(df   Nx=f)NrQr)r/r�r�rSrUr��fully_trusted_filterri�
tar_filterrkrKr�data_filterrxr�rpr�)r#�special_typerp�trustedrTr�s      r�test_special_files�(TestExtractionFilters.test_special_filess���$�,�,�g�o�o�w���N�L��o�o�e�,�G�'�L��2�2�7�B�?�G��M�M�'�+��$�$�W�b�1�C����S�X�X�|�4��"�"�7�#;�#;�<���#�#�G�R�0�=��!�!�"�,�,�"6�"6����H����R�\�\�1�1�6�6��>�O�=�<�s�
E�
E"	c��[RR[5nUR	5H+n[R
"US5nUR
X25 M- SSS5 g!,(df   g=f)Nr)r/r0r.r+rrri�r#rTrp�filtereds    r�test_fully_trusted_filter�/TestExtractionFilters.test_fully_trusted_filter"sQ��
�_�_�
!�
!�'�
*�c��>�>�+��"�7�7���D���
�
�h�0�,�+�
*�
*�s�AA-�-
A;c��[RR[SS9nUR	5Hgn[R
"US5nURURUR5 URURUR5 Mi SSS5 g![a M�f=f!,(df   g=f�NrPr�r)
r/r0r.r+rr�UnicodeEncodeErrorrir�r�r&s    r�test_tar_filter�%TestExtractionFilters.test_tar_filter)s����_�_�
!�
!�'�K�
!�
@�C��>�>�+���&�1�1�'�2�>�H��
�
�h�m�m�W�\�\�:��
�
�h�m�m�W�\�\�:�
,�A�
@��*�����	A�
@�s/�B9�B(�AB9�(
B6�2B9�5B6�6B9�9
Cc��[RR[SS9nUR	5Hgn[R
"US5nURURUR5 URURUR5 Mi SSS5 g![R[4a M�f=f!,(df   g=fr+)r/r0r.r+rr �FilterErrorr,rir�r�r&s    r�test_data_filter�&TestExtractionFilters.test_data_filter6s����_�_�
!�
!�'�K�
!�
@�C��>�>�+���&�2�2�7�B�?�H��
�
�h�m�m�W�\�\�:��
�
�h�m�m�W�\�\�:�
,�A�
@�� �+�+�-?�@�����	A�
@�s/�C	�B(�AC	�(C�C	�C�C	�	
Cr�zrequires native bytes pathsc���[R"[R5n[R"US5nURURUR5 [R"US5nURURUR5 [R"S5nUR[[RUS5 UR[[RUS5 [R"S5nUR[[RUS5 UR[[RUS5 g)Nrztest��)r/rUr	�TESTFNrrir�r rKr�r,)r#rpr's   r�test_filter_unencodable�-TestExtractionFilters.test_filter_unencodableBs����/�/�)�"2�"2�3���%�%�g�r�2���
�
�h�m�m�W�\�\�2��&�&�w��3���
�
�h�m�m�W�\�\�2��/�/�*�-�����*�g�&8�&8�'�2�F����*�g�&9�&9�7�B�G��/�/�(�+�����,�g�.@�.@�'�2�N����,�g�.A�.A�7�B�Orc�Z�[SSS9nURS5 SSS5 [R"5nWR	SSSS9nURUR
5S	/5 UR[5 UR[RS
9 SSS5 UR[R"5/5 UR	SSSSS9n[R"5nUR[RS
9 SSS5 UR[R"5/5 UR!S
WR#55 SSS5 g!,(df   GNR=f!,(df   N�=f!,(df   N=f!,(df   g=f)Nr�r�r�u	���r��
surrogatepassr�)rRr�r�r4rur)rRr�r��debugztarfile: UnicodeEncodeError )r�r�r	r�r.rkr=rKr,r�r/rr|�listdirr�captured_stderrrr)r#r�r�rT�stderrs     r�test_extract_unencodable�.TestExtractionFilters.test_extract_unencodableRs>���7�3D�
E���G�G�(�)�F�
�
�
�
!�S��(�(�G�O�&'��)�C����S�\�\�^�h�Z�8��"�"�#5�6����g�&8�&8��9�7����R�Z�Z�\�2�.��(�(�G�O�&'�q��2�C��(�(�*�f����g�&8�&8��9�+����R�Z�Z�\�2�.��M�M�8�&�/�/�:K�L�"�
!�F�
E��7�6��+�*��"�
!�sI�E(�AF�E:� AF�4F�A
F�(
E7�:
F	�F�
F	�F�
F*c�p�[5nURS5 SSS5 [R"S[45 URWR
5S5 URS5 SSS5 SSS5 g!,(df   Nn=f!,(df   N(=f!,(df   g=f)zEnsure the default filter warnsrQNzPython 3.14)r�r�r�check_warningsr�ryr.r�r�s  r�test_default_filter_warns�/TestExtractionFilters.test_default_filter_warnsgs��
�^�s��G�G�E�N��
�
+�
+�� 2�3�5��#�#�C�H�H�J��5�� � ��'�6�5�5��^��6�5��5�5�s/�B�!B'�"B�4B'�
B�
B$	� B'�'
B5c���[R"[S5nSnX!lUR	US5 URS5 SSS5 g!,(df   g=f)Nrwc�(�URS:XaU$g�NrfrQ�rpr}s  r�
strict_filter�STestExtractionFilters.test_change_default_filter_on_instance.<locals>.strict_filterr����|�|��.���rrf)r/r0r+r�ryr�)r#rTrHs   r�&test_change_default_filter_on_instance�<TestExtractionFilters.test_change_default_filter_on_instancepsI���o�o�g�s�+��	�
!.��
�
�
��T�
*����_�-�+�
*�
*�s�A�
A c�L�Sn[R"[S5n[R"[RS[U55 UR
US5 URS5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nc�(�URS:XaU$grFrQrGs  rrH�PTestExtractionFilters.test_change_default_filter_on_class.<locals>.strict_filter|rJrrwr�rf)r/r0r+rr�r(ryr�)r#rHrTs   r�#test_change_default_filter_on_class�9TestExtractionFilters.test_change_default_filter_on_class{sw��	�
�o�o�g�s�+��
�
�
�w���0C�+�M�:�<��#�#�C��.�� � ��1�/�<�<�.�.��<�<�s$�B�!B�3B�
B	�B�
B#c���"SS[R5nU"[S5nURUS5 UR	S5 SSS5 g!,(df   g=f)Nc��\rSrSrSrSrg)�QTestExtractionFilters.test_change_default_filter_on_subclass.<locals>.TarSubclassi�c�(�URS:XaU$grFrQ�r#rpr}s   rr��cTestExtractionFilters.test_change_default_filter_on_subclass.<locals>.TarSubclass.extraction_filter�s���<�<�?�2�"�N�rr&Nr r&rr�TarSubclassrT�s��
 rrXrwrf)r/r0r+ryr�)r#rXrTs   r�&test_change_default_filter_on_subclass�<TestExtractionFilters.test_change_default_filter_on_subclass�sJ��	 �'�/�/�	 ��'�3�'��
�
�
��T�
*����_�-�+�
*�
*�s�A�
A"c���[R"[S5nSUlUR	US5 UR[5 SSS5 g!,(df   g=f)Nrwr)r/r0r+r�ryr�r�r@s  r�$test_change_default_filter_to_string�:TestExtractionFilters.test_change_default_filter_to_string�sD���o�o�g�s�+�� &���
�
�
��T�
*��!�!�)�,�+�
*�
*�s�A�
A"c�x^�U4Sjn[5nURS5 URS5 URS5 SSS5 TRWR5U5 TR	S5 TR	S5 SSS5 g!,(df   NZ=f!,(df   g=f)Nc�>�TRUTR5 URS:XaURSS9$URS:XagU$)N�	move_this�movedrQ�ignore_this)rir;r�r<)rpr}r#s  �r�
custom_filter�?TestExtractionFilters.test_custom_filter.<locals>.custom_filter�sF����M�M�$����-��|�|�{�*����G��4�4��|�|�}�,���Nrr`rb�keeprar�)r#rcr�s`  r�test_custom_filter�(TestExtractionFilters.test_custom_filter�s����	��^�s��G�G�K� ��G�G�M�"��G�G�F�O���
�
����
�M�
:����W�%����V�$�;�
:�	�^��;�
:�s�4B�.#B+�
B(�+
B9c��[5nURS5 SSS5 URWR5S5 UR	[
5 SSS5 g!,(df   NM=f!,(df   g=f)NrQzbad filter name)r�r�ryr.r�r�r�s  r�test_bad_filter_name�*TestExtractionFilters.test_bad_filter_name�sU��
�^�s��G�G�E�N��
�
�
����
�,=�
>��!�!�*�-�?�
>��^��
>�
>�s�A$�A5�$
A2�5
Bc��"SS5n[5nURS5 URSSS9 URS5 SSS5 U"5nURWR5U5 UR	S5 SSS5 SSS5 URWRS5 URURS5 g!,(df   N�=f!,(df   N`=f!,(df   Ni=f)	Nc�&�\rSrSrSrSrSrSrg)�BTestExtractionFilters.test_stateful_filter.<locals>.StatefulFilteri�c��SUlU$rF)�num_files_processedr"s rr_�LTestExtractionFilters.test_stateful_filter.<locals>.StatefulFilter.__enter__�s��+,��(��rc��[R"X5nU=RS-
slU$![Ra gf=f)Nr�)r/r r0rorVs   r�__call__�KTestExtractionFilters.test_stateful_filter.<locals>.StatefulFilter.__call__�sI�� �%�1�1�'�@�G��(�(�A�-�(�����*�*� �� �s�/�A�Ac��SUlg)NT)�done)r#�exc_infos  rrb�KTestExtractionFilters.test_stateful_filter.<locals>.StatefulFilter.__exit__�s	�� ��	r)ruroN)r'r(r)r*r_rrrbr3r&rr�StatefulFilterrm�s��
�
�
!rrx�good�badr�r�r�T)r�r�ryr.r�rkroru)r#rxr�rcs    r�test_stateful_filter�*TestExtractionFilters.test_stateful_filter�s���	!�	!� �^�s��G�G�F�O��G�G�E�c�G�*��G�G�F�O���
���#�#�C�H�H�J�
�>�� � ��(�?��	
����:�:�A�>�����+�+�T�2��^��
?�>���
�s/�3C�!C5�8C$�
C5�
C!�$
C2	�.C5�5
Dc�D
�SnSnSnSnSn[5nURS5 SSS5 URWRSS9U5 SSS5 URURSS9U5 SSS5 URURSS9U5 SSS5 URURSS9U5 UR	[
R5 SSS5 URURSS9U5 UR	[5 SSS5 URURS	S9U5 SSS5 URURS	S9U5 UR	[
R5 SSS5 URURS	S9U5 UR	[5 SSS5 URURS	S9U5 UR	[
R5 SSS5 URURS	S9U5 UR	[5 SSS5 URURS
S9U5 UR	[
R5 SSS5 URURS
S9U5 UR	[
R5 SSS5 URURS
S9U5 UR	[5 SSS5 URURS
S9U5 UR	[
R5 SSS5 URURS
S9U5 UR	[5 SSS5 URURSS9U5 UR	[5 SSS5 g!,(df   GN�=f!,(df   GN�=f!,(df   GN�=f!,(df   GN�=f!,(df   GNR=f!,(df   GN'=f!,(df   GN=f!,(df   GN�=f!,(df   GN�=f!,(df   GN{=f!,(df   GNP=f!,(df   GN=f!,(df   GN�=f!,(df   GN�=f!,(df   GN�=f!,(df   GN[=f!,(df   g=f)Nc�.�[R"S5e)Nzfailed with ExtractError)r/�ExtractErrorrGs  r�extracterror_filter�BTestExtractionFilters.test_errorlevel.<locals>.extracterror_filter�s���&�&�'A�B�Brc�.�[R"S5e)Nzfailed with FilterError)r/r0rGs  r�filtererror_filter�ATestExtractionFilters.test_errorlevel.<locals>.filtererror_filter�s���%�%�&?�@�@rc��[S5e)Nzfailed with OSError)r�rGs  r�oserror_filter�=TestExtractionFilters.test_errorlevel.<locals>.oserror_filter�s���/�0�0rc�.�[R"S5e)Nzfailed with base TarError)r/�TarErrorrGs  r�tarerror_filter�>TestExtractionFilters.test_errorlevel.<locals>.tarerror_filter�s���"�"�#>�?�?rc��[S5e)Nzfailed with ValueError)r�rGs  r�valueerror_filter�@TestExtractionFilters.test_errorlevel.<locals>.valueerror_filter�s���5�6�6rrorr�r�r�zboo!)r�r�ryr.r�r/r�r�r0r�rr�)r#r�r�r�r�r�r�s       r�test_errorlevel�%TestExtractionFilters.test_errorlevel�s���	C�	A�	1�	@�	7��^�s��G�G�F�O��
�
�
����A�� 6�8K�
L��M��
�
����A�� 6�8J�
K��L��
�
����A�� 6��
G��H��
�
����A�� 6��
H��!�!�'�"2�"2�3�I��
�
����A�� 6�8I�
J��!�!�*�-�K�
�
�
����A�� 6�8K�
L��M��
�
����A�� 6�8J�
K��!�!�'�"5�"5�6�L��
�
����A�� 6��
G��!�!�'�*�H��
�
����A�� 6��
H��!�!�'�"2�"2�3�I��
�
����A�� 6�8I�
J��!�!�*�-�K�
�
�
����A�� 6�8K�
L��!�!�'�"6�"6�7�M��
�
����A�� 6�8J�
K��!�!�'�"5�"5�6�L��
�
����A�� 6��
G��!�!�'�*�H��
�
����A�� 6��
H��!�!�'�"2�"2�3�I��
�
����A�� 6�8I�
J��!�!�*�-�K�
�
�
����F�� ;�=O�
P��!�!�)�,�Q�
P�q�^��
M�
L��L�
K��H�
G��I�
H��K�
J��
M�
L��L�
K��H�
G��I�
H��K�
J��
M�
L��L�
K��H�
G��I�
H��K�
J��
Q�
P�s��O1�P�<P�%P'� P9�Q�Q�; Q/�R�? R�R%� R7�
 S	�S� S-�S?�T�1
P�
P�
P$�'
P6�9
Q�
Q�
Q,�/
Q>�
R�
R"�%
R4�7
S�	
S�
S*�-
S<�?
T�
T)rwrurv)NNNNN)r�)6r'r(r)r*r�r�r{rqr;rryr�r�r�r�r�rmr�r	r0r�r�r�r�r�r�r�r�r�r�r�rrrr#r(r-r1r�r2r�r�r6r>rBrKrPrYr\rfrir{r�r3r&rrrprp:s��
�|�|�G�$�z�1�H����G��7;�'1��'1�RBF�'+�*0�X
�%�/�K�2�00��00�d��"�"�FH�#��FH�P�T0��T0�l�:��:�::�"� -�� -�D�%��%�&�@��@�.�9��9�2�1:��1:�f����,�@��@�>*� ND�`+�$
?�1�;�
;��_�_�S�\�\�W�,�.K�L�
P�M�
P��_�_�S�\�\�W�,�.K�L�M�M�M�((�	.�
2�
.�-�%�".�3�<E-rrpc�h�\rSrSr\R
R
\S5r\	S5r
SrSrSr
g)�OverwriteTestsi�
testoverwritec�R�[RR[S5=olUR[RU5 [R"US5n[R"S5nSUlURU[R"S55 SSS5 [RR[S5=olUR[RU5 [R"US5nURUR![R"S55 SSS5 [RR[S5nXlUR[RU5 [R"US5n[R"S5nSUlURU[R"S55 SSS5 g!,(df   GNV=f!,(df   N�=f!,(df   g=f)	Nztar-with-file.tarr�r�r�s
newcontentztar-with-dir.tarztar-with-implicit-dir.tarz	test/file)r|r}r~r{�ar_with_file�addClassCleanupr	r�r/r.rUrmr\r,r��ar_with_dirr[�curdir�ar_with_implicit_dir)rhr�rTr_s    rri�OverwriteTests.setUpClasssh��!�w�w�|�|�G�5H�I�I������I�,�,�a�0�
�\�\�!�S�
!�S�����'�A��A�F��K�K��2�:�:�m�4�5�"�
!�g�g�l�l�7�4F�G�G��O����I�,�,�a�0�
�\�\�!�S�
!�S��K�K����r�y�y�&�9�:�"�
�G�G�L�L��"=�>��#$� ����I�,�,�a�0�
�\�\�!�S�
!�S�����,�A��A�F��K�K��2�:�:�m�4�5�"�
!�"�
!��"�
!��"�
!�s&�"AG5�0H�(AH�5
H�
H�
H&c�0�[R"US5$r�)r/r.)r#r}s  rr.�OverwriteTests.open/s���|�|�D�#�&�&rc�8�URURSS9 g)Nr�ru)r��testdir)r#�ars  rr��OverwriteTests.extractall2s��
�
�
�d�l�l�?�
�;rr&N)r'r(r)r*r|r}r~r{r�r�rir.r�r3r&rrr�r�s2���g�g�l�l�7�O�4�G��6��6�*'�<rr�c�|�\rSrSr\r\R\R-S-\	-\R-S-\	-\R-S-\	-\R-S-\	-\RS--\	-S-\R-\R-\R\R--\R-\RS--\RS--\RS--\	-\R-\RS--\	-\R-\R\R--\RS	--r\R\R-S
-\R-S-\R-S-\R-S-\	-\RS--\	-S-\R-\R-\R\R--\R-\RS--\RS--\RS
--\RS
--\RS--r\R\R-S-\	-\R-S-\	-\R-S-\	-\R-S-\	-\RS--\	-S-\R-\R-\R\R--\RS--r\R$"S5R'\R(5rS\R,-rSrSSjrSrSrSrSrSrSrg)�OffsetValidationTestsi6s000755s000001s������������s0011407� r��s0000755s0000001s0011327ru�s0010070r�r���c��[URS5nURU5 SSS5 g!,(df   g=frJ)r.r+rT)r#�bufferr�s   r�
_write_buffer�#OffsetValidationTests._write_buffer�s)��
�$�,�,��
%��
�G�G�F�O�&�
%�
%�rkNc��[URS5n[R"SX!S9nUR5sSSS5 sSSS5 $!,(df   O=fSSS5 g!,(df   g=f)Nr�rw)r$rwrR)r.r+r/r)r#rRr�rTs    r�_get_members�"OffsetValidationTests._get_members�s^��
�$�,�,��
%������!����~�~�'���&�
%�����&�
%�
%�s!�A+�A�	A+�
A	�A+�+
A9c��UR[RS5 UR5 SSS5 g!,(df   g=f)Nrc)rEr/r?r�r"s r�#_assert_raises_read_error_exception�9OffsetValidationTests._assert_raises_read_error_exception�s:��
�
#�
#����F�
�
����
�
�
�s	�;�
A	c��SUR4SUR4SUR44H>upURUS9 UR	U5 UR5 SSS5 M@ g!,(df   MR=f)N�posixr�v7r�)�invalid_posix_header�invalid_gnu_header�invalid_v7_headerr<r�r�)r#�
tar_format�invalid_headers   r�&test_invalid_offset_header_validations�<OffsetValidationTests.test_invalid_offset_header_validations�sv��
�d�/�/�0�
�D�+�+�,�
�4�)�)�*�+
�&�J�
���Z��0��"�"�>�2��8�8�:�1�0�+
�
1�0�s�"A-�-
A<	c�D�URUR-UR-nURU5 UR5nUR	[U5S5 UR	USRS5 UR	USRS5 g)Nr�rr�)�valid_gnu_headerr�r�r�rkrlr�r��r#r�rs   r�(test_early_stop_at_invalid_offset_header�>OffsetValidationTests.test_early_stop_at_invalid_offset_header�s����&�&��)@�)@�@�4�CX�CX�X�����6�"��#�#�%������W��q�)���������*�5�������*�*�A�.rc��URUR-S-nURU5 URSS9nUR	[U5S5 g)Nr�T�rRr)r��
data_blockr�r�rkrlr�s   r�test_ignore_invalid_archive�1OffsetValidationTests.test_ignore_invalid_archive�sP���)�)�D�O�O�;�q�@�����6�"��#�#��#�6������W��q�)rc��URURUR-S4URUR-URS44H�upnURX-5 UR	SS9nUR[
U5S5 URUSRS5 URUSRU5 M� g)Nrr�Tr�r�r�)	r�r�r�r�r�rkrlr�r�)r#�first_block�second_block�expected_offsetrs     r�"test_ignore_invalid_offset_headers�8OffsetValidationTests.test_ignore_invalid_offset_headers�s����&�&��(�(�4�?�?�:��
��(�(�4�?�?�:��&�&��
�
;
�6�K��
���{�9�:��'�'�T�'�:�G����S��\�1�-����W�Q�Z�_�_�j�9����W�Q�Z�.�.��@�!;
rr&r
) r'r(r)r*r�r+r/r�r!�SPACErTr"r�r�r�r�r�r�rUrVr'r�rKr�r�r�r�r�r�r�r�r3r&rrr�r�6s4���G�	���g�)�)�)�
�	��	�%�k�k�	*��		��		�&�k�k�		*��
	��
	�&�k�k�
	*��	��	��+�+��
�
	�#�
	#��	��{�{�	#��/�/�	� �+�+��+�+�
+�!	,�$�
�
�%	�(�+�+��
�)	�,�+�+��
�-	�0�+�+��/�1	�0"�1	"�0%,�K�K�1	0�4�+�+��/�5	�4"�5	"�4%,�K�K�5	0�8�+�+��-�-�
-�9	.�<�+�+��
�=	��H	���g�)�)�)�
�	��{�{�	#��		��{�{�		#��
	��{�{�
	#��	��	��+�+��
�
	�#�
	#��	��{�{�	#��/�/�	� �+�+��+�+�
+�!	,�$�
�
�%	�(�+�+��
�)	�,�+�+��
�-	�0�+�+��/�1	�4�+�+��/�5	�8�+�+��
�9	��D	���g�)�)�)�
�	��	�%�k�k�	*��		��		�&�k�k�		*��
	��
	�&�k�k�
	*��	��	��+�+��
�
	�#�
	#��	��{�{�	#��/�/�	� �+�+��+�+�
+�!	,�$�+�+��
�%	��,���z�2�8�8��9K�9K�L���7�,�,�,�J��(� �;�/�*�Arr�c�R�[R"[5 [R"[5 [
/q[[
S5nUR5nSSS5 [[[4H�nUR(dM[R"UR
5 [RUR
5 URUR
S5nURW5 SSS5 M� g!,(df   N�=f!,(df   M�=f)Nr�r+)r	r�r{r|rr+r�r.rjr5r=rDrgrT)rqrr�rTs    r�setUpModuler��s���
���W���K�K����9�L�	
�g�t�	���y�y�{��
��w��
(���6�6�6����Q�Y�Y�'�����	�	�*�����	�	�4�(�C��	�	�$��)�(�	)�	
�	��)�(�s�D�'D�
D�
D&	c��[RR[5(a[R
"[5 ggr
)r|r}r�r{r	r�r&rr�tearDownModuler��s(��	�w�w�~�~�g�������!�r�__main__)�r�r�r|r,�hashlibr�
contextlibrr�randomrr�r�r8r�r�r��
unittest.mockr/r�rr�test.supportr	r
rr9r�r
r?rHrr}rzr5r{r0rdr+r~r8r@rGr�r#r�rnr�r�
requires_gzipr5rr=�
requires_lzmarDrLr]�TestCasercr�r�r�r�r#r%r'r)rsr4r6r8r:r<rWrYr[r]rcrergrir~r�r�r�r�r�rr*rDrOr�r�r�r�r�r�r�r�r�rrrrrrMrbr�r�r�r�r�r�r�r�r�r�rr"r'r2r_rarcrersr�rFr2rZror�r�r�r�rr"r$r&r(rWr�r�rmrpr�r�r�r�r'r�r&rr�<module>r�s����
�	�	��0���
�	��������"�&�(���������$�
�'�'�/�/�)�*�*�
+�i�
7���o�%�	�
�
�
�=�1B�
C��
�7�7�<�<��!1�2��
�'�'�,�,�w� 1�
2��	�����g�/�	0��
�'�'�,�,�w�	�
*���g�g�l�l�7�I�.����G��G��
)�)�	����%�%��%�	����&�&��&�	����%�%��%�	�w�	�-�X�-�U�H�h�/�/�U�n	��-�	�	�w�
�	�	��-�	�Y1�x��*�*�Y1�x	�8�X�	�	�'�8�	�	�8�X�	�Z1�X�Z1�z[P�~�[P�|
�#�X�%6�%6��	�x�!1�8�3D�3D�	�	�g�/��1B�1B�	�	�x�!1�8�3D�3D�	�<�^�X�%6�%6�<�|	��>�	�	���	�	��>�	�/�N�H�,=�,=�/�	�X�'<�	�	�G�%:�	�	�X�'<�	�&1�W�h�/�/�&1�P	��>�	�
,���
,�	��>�	�1�x��1B�1B�1�"^E�X�x�0�0�^E�BH+�H+�V9�,��(�*;�*;�9�xT@�,��(�*;�*;�T@�nG�G�G�<~%�
�x�0�0�~%�B
	�H�i�	�	�7�I�	�	�H�i�	�2*�m�X�%6�%6�2*�j7�(�O�7�8��/�8�;�(�O�;�?�7�?�,!�7�$8�(�:K�:K�!�!��*>����!� �(�%9�8�;L�;L� � ��*>���� �C�(�+�+�C�$O5�8�$�$�O5�d+&�}�h�&7�&7�+&�\W.��� 1� 1�W.�t�X�z���G�Z��%�X�z�%�(�*�(�
���W�R��(�*K�L�'1�8�$�$�'1�M�'1�TH8�<�H8�VN�N�bL�{�H�$5�$5�L�^G�[�(�"3�"3�G�$K�[�(�"3�"3�K�(I�I�(>%���!2�!2�>%�@	�X�~�x�/@�/@�	�	�G�^�X�->�->�	�	�X�~�x�/@�/@�	�8*��"�"�8*�vs&�x� � �s&�la �h�'�'�a �H7B��*�*�7B�t
�����V�$�&F�G�@��(�"3�"3�@�H�@�B*��(�"3�"3�*�>	�
���W�R��)�+=�>�	���W�R��+�-A�B�wO�x�(�(�wO�C�?�wO�t%-�8�X�.�.�%-�Pd�8�d�L� 4�h�6G�6G��(�(<�(0�(9�(9�(��3�X�5F�5F���#7�#+�#4�#4��^8��*�*�^8�@�8D3�D3�V�?�?�?�C��Y-�H�-�-�Y-�x<�^�2�2�H�4E�4E�<�@XA�H�-�-�XA�v �""��z���M�M�O���WV���D������D�����
�C������D��sH�$`#�)`2�.a�3a�#`/�.`/�2`>�=`>�a
�a
�a�a

Youez - 2016 - github.com/yon3zu
LinuXploit