403Webshell
Server IP : 118.27.122.248  /  Your IP : 216.73.216.15
Web Server : Apache
System : Linux web0264.sh.tyo1 4.18.0-553.79.1.lve.el7h.x86_64 #1 SMP Wed Oct 15 16:34:46 UTC 2025 x86_64
User : c9415830 ( 11735)
PHP Version : 8.4.17
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/alt/python36/lib64/python3.6/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/alt/python36/lib64/python3.6/test/__pycache__/test_tarfile.cpython-36.opt-2.pyc
3

�
�^/��@s~ddlZddlZddlZddlmZddlmZddlmZddl	Z	ddl
Z
ddlZ
ddlZddl
mZddlmZyddlZWnek
r�dZYnXyddlZWnek
r�dZYnXyddlZWnek
r�dZYnXdd�Zejjej�d	Zed
Zejd�Zejjed�Zejjed
�Zejjed�Z ejjed�Z!ejjed�Z"dZ#dZ$Gdd�d�Z%ej&Gdd�d��Z'ej(Gdd�d��Z)ej*Gdd�d��Z+Gdd�de%�Z,Gdd�de,e
j-�Z.Gdd �d e'e.�Z/Gd!d"�d"e)e.�Z0Gd#d$�d$e+e.�Z1Gd%d&�d&e,e
j-�Z2Gd'd(�d(e'e2�Z3Gd)d*�d*e)e2�Z4Gd+d,�d,e+e2�Z5Gd-d.�d.e,�Z6Gd/d0�d0e6�Z7Gd1d2�d2e7e
j-�Z8Gd3d4�d4e'e7e
j-�Z9Gd5d6�d6e)e7e
j-�Z:Gd7d8�d8e+e7e
j-�Z;Gd9d:�d:e6e
j-�Z<Gd;d<�d<e'e<�Z=Gd=d>�d>e)e<�Z>Gd?d@�d@e+e<�Z?GdAdB�dBe%e
j-�Z@GdCdD�dDe'e@�ZAGdEdF�dFe)e@�ZBGdGdH�dHe+e@�ZCGdIdJ�dJe,e
j-�ZDGdKdL�dL�ZEGdMdN�dNeEe,e
j-�ZFGdOdP�dPeEe,e
j-�ZGGdQdR�dRe%�ZHGdSdT�dTeHe
j-�ZIGdUdV�dVe'eI�ZJGdWdX�dXe)eI�ZKGdYdZ�dZe+eI�ZLGd[d\�d\eHe
j-�ZMGd]d^�d^e'eM�ZNGd_d`�d`e)eM�ZOGdadb�dbe+eM�ZPGdcdd�dde
j-�ZQGdedf�dfeHe
j-�ZRGdgdh�dhe'eR�ZSGdidj�dje)eR�ZTGdkdl�dle+eR�ZUGdmdn�dneR�ZVe
jWeXedo�dp�Gdqdr�dre
j-��ZYGdsdt�dteQ�ZZGdudv�dv�Z[Gdwdx�dxe[e
j-�Z\Gdydz�dze[e
j-�Z]Gd{d|�d|e[e
j-�Z^Gd}d~�d~�Z_Gdd��d�e_e
j-�Z`Gd�d��d�e'e_e
j-�ZaGd�d��d�e)e_e
j-�ZbGd�d��d�e+e_e
j-�ZcGd�d��d�e
j-�ZdGd�d��d�e
j-�ZeGd�d��d�e
j-�ZfGd�d��d�e
j-�Zge
jheXedo�d��Gd�d��d�e,e
j-��ZiGd�d��d�e)e
j-�Zjd�d��Zke
jWeXed��d��e
jWeXed��d��Gd�d��d�e
j-���Zld�d��Zmd�d��Zneod�k�rze
jp�dS)��N)�md5)�contextmanager)�Random)�support)�
script_helpercCst|�j�S)N)rZ	hexdigest)�data�r�1/opt/alt/python36/lib64/python3.6/test_tarfile.py�md5sumsr
z-tardirz
-extract-testztesttar.tarztesttar.tar.gzztesttar.tar.bz2ztesttar.tar.xzztmp.tarZtesttarZ 65f477c818ad9e15f7feab0c6d37742fZ a54fbc4ca4f4399a90e1b27164012fc6c@s.eZdZeZdZejZej	j
Z
edd��ZdS)�TarTest�cCs|j|jS)N)�prefix�suffix)�selfrrr	�mode4szTarTest.modeN)
�__name__�
__module__�__qualname__�tarnamer�io�FileIO�open�tarfile�TarFile�taropen�propertyrrrrr	r.s
rc@s*eZdZeZdZerejndZe	j
jZdS)�GzipTestZgzN)
rrr�gzipnamerr�gzipZGzipFilerrrZgzopenrrrrr	r8src@s*eZdZeZdZerejndZe	j
jZdS)�Bz2Test�bz2N)
rrr�bz2namerrr �BZ2FilerrrZbz2openrrrrr	r?src@s*eZdZeZdZerejndZe	j
jZdS)�LzmaTestZxzN)
rrr�xznamerr�lzmaZLZMAFilerrrZxzopenrrrrr	r#Fsr#c@s eZdZdZdd�Zdd�ZdS)�ReadTestzr:cCstj|j|jdd�|_dS)Nz	iso8859-1)r�encoding)rrrr�tar)rrrr	�setUpRszReadTest.setUpcCs|jj�dS)N)r(�close)rrrr	�tearDownVszReadTest.tearDownN)rrrr
r)r+rrrr	r&Nsr&c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�
UstarReadTestcCsV|jjd�}|jj|��4}|j�}|jt|�|jd�|jt|�td�WdQRXdS)Nz
ustar/regtypezregular file extraction failed)	r(�	getmember�extractfile�read�assertEqual�len�sizer
�md5_regtype)r�tarinfo�fobjrrrr	�test_fileobj_regular_file\sz'UstarReadTest.test_fileobj_regular_filecCs�|jjdt�|jjd�}ttjjtd�d��}|j�}WdQRX|jj	|��J}t
j|�}|j�}|j||d�|jt
|�dd�|j|ddd�WdQRXdS)Nz
ustar/regtype�rzfileobj.readlines() failed�r�SzOI will gladly admit that Python is not the fastest running scripting language.
)r(�extract�TEMPDIRr-r�os�path�join�	readlinesr.r�
TextIOWrapperr0r1)rr4�fobj1�lines1r5�fobj2�lines2rrr	�test_fileobj_readlineses

z$UstarReadTest.test_fileobj_readlinescCsz|jjdt�|jjd�}ttjjtd�d��}|j�}WdQRX|jj	|��"}t
tj|��}|j
||d�WdQRXdS)Nz
ustar/regtyper7zfileobj.__iter__() failed)r(r:r;r-rr<r=r>r?r.�listrr@r0)rr4rArBrCrDrrr	�test_fileobj_iterwszUstarReadTest.test_fileobj_iterc	Cs�|jjdt�ttjjtd�d��}|j�}WdQRX|jjd�}|jj	|�}|j�}|j
d�|jd|j�d�|j
dd�|jd|j�d�|j
dd�|jd|j�d	�|j
dd�|jd|j�d
�|jd�}|j||dd�d
�|j
dd�|j|j
|j�d�|j|j�dd�|j
|j
d�|jd|j�d�|j
d�|j�}|j
d�|j�}|j||d�|j
d�|jt|j��|j�d�|j
d�|jt|j��d|j�d�|j
d�|j�}|j|j�|t|�d�d�|j�dS)Nz
ustar/regtype�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 failed�z0read() at file's end did not return empty stringz$relative seek() to file's end failedizreadlines() after seek failedztell() after readline() failedz)tell() after seek() and readline() failedzread() after readline() failedi���)r(r:r;rr<r=r>r/r-r.�seekr0�tellr2r?r1�readliner*)	rr5rr4�text�s�s1�s2�linerrr	�test_fileobj_seek�s\






zUstarReadTest.test_fileobj_seekcCsr|jjd��\}tj|�}|j�jd�}|jt|�t�y|j	d�Wnt
k
rb|jd�YnXWdQRXdS)Nz
ustar/regtypez	iso8859-1�dzseeking failed in text mode)r(r.rr@r/�encoder0r
r3rM�AttributeError�fail)rr5rrrr	�test_fileobj_text�s
zUstarReadTest.test_fileobj_textcCsD|jj|��.}|jj|��}|j|j|j�WdQRXWdQRXdS)N)r(r.r0�name)rZlnktype�regtype�a�brrr	�_test_fileobj_link�sz UstarReadTest._test_fileobj_linkcCs|jdd�dS)Nz
ustar/lnktypez
ustar/regtype)r_)rrrr	�test_fileobj_link1�sz UstarReadTest.test_fileobj_link1cCs|jdd�dS)Nz./ustar/linktest2/lnktypezustar/linktest1/regtype)r_)rrrr	�test_fileobj_link2�sz UstarReadTest.test_fileobj_link2cCs|jdd�dS)Nz
ustar/symtypez
ustar/regtype)r_)rrrr	�test_fileobj_symlink1�sz#UstarReadTest.test_fileobj_symlink1cCs|jdd�dS)Nz./ustar/linktest2/symtypezustar/linktest1/regtype)r_)rrrr	�test_fileobj_symlink2�sz#UstarReadTest.test_fileobj_symlink2cCs|jdd�dS)NZsymtype2z
ustar/regtype)r_)rrrr	�test_issue14160�szUstarReadTest.test_issue14160N)rrrr6rErGrUrZr_r`rarbrcrdrrrr	r,Zs	
2r,c@seZdZdS)�GzipUstarReadTestN)rrrrrrr	re�srec@seZdZdS)�Bz2UstarReadTestN)rrrrrrr	rf�srfc@seZdZdS)�LzmaUstarReadTestN)rrrrrrr	rg�srgc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ListTestcCstj|j|jd�|_dS)N)r)rrrrr()rrrr	r)�szListTest.setUpcs8tjtj�ddd�}tjtd|���jjdd�WdQRX|j�j	�}�j
d|��j
d|��j
d	|��j
d
ddd
|��j
d|��j
d|��j
d|��j
d|��fdd�}�j
|d�|��j
|d�|��j
|d�|��j
|d�|��j
|d�|��j|d��jd|��jd|�dS)N�ascii�
)�newline�stdoutF)�verbosesustar/conttypes
ustar/regtypes
ustar/lnktypesustars/12345�(s67/longnames./ustar/linktest2/symtypes./ustar/linktest2/lnktypesustar/dirtype/sustar/dirtype-with-size/cs|j�jjd�}|jdd�S)N�surrogateescaperi�backslashreplace)�decoder(r'rW)r^rQ)rrr	�conv�sz ListTest.test_list.<locals>.convsustar/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->)
rr@�BytesIOr�	swap_attr�sysr(rF�detach�getvalue�assertIn�assertRegex�assertNotIn)r�tio�outrrr)rr	�	test_list�s.

zListTest.test_listcCs�tjtj�ddd�}tjtd|��|jjdd�WdQRX|j�j	�}|j
|dd�|jd	|�|jd
|�|jd|�|jdd
ddd
dd|�|jdd
ddd
dd|�dS)Nrirj)rkrlT)rmsX\?rw-r--r-- tarfile/tarfile\s+7011 \d{4}-\d\d-\d\d\s+\d\d:\d\d:\d\d ustar/\w+type ?\r?\nrKsustar/symtype -> regtypes1./ustar/linktest2/symtype -> ../linktest1/regtypes;./ustar/linktest2/lnktype link to ./ustar/linktest1/regtypesgnus/123�}s/longlink link to gnus	/longnamespaxs/longlink link to pax)rr@rsrrtrur(rFrvrwryrx)rr{r|rrr	�test_list_verbose
s zListTest.test_list_verbosecCsttjtj�ddd�}dd�}tjtd|��|jjd||j�d�WdQRX|j�j	�}|j
d	|�|jd
|�dS)Nrirj)rkcss&x |j�D]}d|jkr
|Vq
WdS)NZreg)�
getmembersr[)r(r4rrr	�members's
z+ListTest.test_list_members.<locals>.membersrlF)rmr�s
ustar/regtypesustar/conttype)rr@rsrrtrur(rFrvrwrxrz)rr{r�r|rrr	�test_list_members%s zListTest.test_list_membersN)rrrr)r}rr�rrrr	rh�s%rhc@seZdZdS)�GzipListTestN)rrrrrrr	r�2sr�c@seZdZdS)�Bz2ListTestN)rrrrrrr	r�6sr�c@seZdZdS)�LzmaListTestN)rrrrrrr	r�:sr�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�CommonReadTestcCs�tjt|jjdd���WdQRXzPytjt|j�}|j�Wn tjk
r^|jd�YnX|j|j	�g�Wd|j
�XdS)Nr7�wz&tarfile.open() failed on empty archive)rr�tmpnamer�replace�getnames�	ReadErrorrY�assertListEqualr�r*)rr(rrr	�test_empty_tarfile@s
z!CommonReadTest.test_empty_tarfilec
Cs*|jtd��tjd|j�WdQRXdS)NZxxx)�assertRaisesRegex�FileNotFoundErrorrrr)rrrr	�test_non_existent_tarfileQsz(CommonReadTest.test_non_existent_tarfilecCsBttd��WdQRX|jtjtjt|j�|jtjtjt�dS)N�wb)rr��assertRaisesrr�r)rrrr	�test_null_tarfileWs
z CommonReadTest.test_null_tarfilecCs�td�jd�jdd�}x�dD]�}|jtd��@}|j|d�tjd	�}t|�|_	|j|j
��|j|�WdQRXtjtd
dd�}z|j|j�d	gd
|�Wd|j
�XqWdS)Nri�Zbig��ar�i�foor7T)rZignore_zerosz3ignore_zeros=True should have skipped the %r-blocksi)r�r�)rZgetrandbits�to_bytesrr��writer�TarInfor1r2�tobufr�r�r*)rr�charr5r4r(rrr	�test_ignore_zeros`s


z CommonReadTest.test_ignore_zerosc4Cs�xd
D�]}tjtd��,}tjd�}d|_|j|tjdd��WdQRXttd��}|j|�WdQRXtjt��.}|j	tj
d	��x|D]}q�WWdQRXWdQRXtjt��\}|j�}|j	tj
d	��|j|t
�WdQRX|j	tj
d	��|j|�j�WdQRXWdQRXqWdS)N��X��zw:r�r�zr+bzunexpected end of data)r�r�r�r�)rrr�r�r2�addfilerrs�truncater�r��nextr:r;r.r/)rr2r(�tr5rrr	�test_premature_end_of_archivevs"
 
z,CommonReadTest.test_premature_end_of_archiveN)rrrr�r�r�r�r�rrrr	r�>s
	r�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zejeed�d�ejdd ���Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-S).�MiscReadTestBasecCsdS)Nr)rrrr	�requires_name_attribute�sz(MiscReadTestBase.requires_name_attributecCst|j�t|jd��V}|j|jt�tj||jd��,}|j|jt�|j|jt	j
j|j��WdQRXWdQRXdS)NrH)�fileobjr)r�rr�assertIsInstancer[�strrrr0r<r=�abspath)rr5r(rrr	�test_no_name_argument�sz&MiscReadTestBase.test_no_name_argumentcCsZt|jd��}|j�}WdQRXtj|�}|jtt|d�tj||j	d�}|j
|j�dS)NrHr[)r�r)rrr/rrsr�rX�getattrrr�assertIsNoner[)rr5rr(rrr	�test_no_name_attribute�s
z'MiscReadTestBase.test_no_name_attributecCs\t|jd��}|j�}WdQRXtj|�}d|_tj||jd��}|j|j�WdQRXdS)NrHr)r�r)	rrr/rrsr[rrr�)rr5rr(rrr	�test_empty_name_attribute�s
z*MiscReadTestBase.test_empty_name_attributecCs`tj|jtj�}t|d��<}|j|jt�tj||jd��}|j	|j�WdQRXWdQRXdS)NrH)r�r)
r<rr�O_RDONLYr�r[�intrrr�)r�fdr5r(rrr	�test_int_name_attribute�s
z(MiscReadTestBase.test_int_name_attributecCs~|j�tj|j�}t|d��V}|j|jt�tj||j	d��,}|j|jt�|j
|jtjj|j��WdQRXWdQRXdS)NrH)r�r)
r�r<�fsencoderrr�r[�bytesrrr0r=r�)rrr5r(rrr	�test_bytes_name_attribute�sz*MiscReadTestBase.test_bytes_name_attributec!Cs.tj|j�}tj||jd��0}|j|jt�|j	|jt
jjt
j
|���WdQRX|j|��0}|j|jt�|j	|jt
jjt
j
|���WdQRXtjj||jd��0}|j|jt�|j	|jt
jjt
j
|���WdQRX|jdk�r*tj|dd��0}|j|jt�|j	|jt
jjt
j
|���WdQRXdS)N)rrr7)�pathlib�Pathrrrrr�r[r�r0r<r=r��fspathrrr)rrr(rrr	�test_pathlike_name�s&&&z#MiscReadTestBase.test_pathlike_namecCs�ttd��WdQRX|jtd��|jtd�}WdQRX|jtd��|jtd�}WdQRX|jtd��|jtd�}WdQRXdS)Nr�z
mode must be �q�rwr)rr�r��
ValueErrorr)rr(rrr	�test_illegal_mode_arg�s
z&MiscReadTestBase.test_illegal_mode_argcCs�tj|j|jd�}z>|j�|j�}|j}|j}|j|��}|j�}WdQRXWd|j	�X|j|j��`}|j
|�|j|jd|d�}|j�}|j|j|�|j�|j|j|�j�|d�|j	�WdQRXdS)N)rzr:)rr�zseek back did not work)
rrrrr�r[�offsetr.r/r*rMr0r�)rr(r�r[r��frr5rrr	�test_fileobj_with_offset�s$

z)MiscReadTestBase.test_fileobj_with_offsetc
CsH|jtjtjt|j�ttd��}|jtjtj||jd�WdQRXdS)NrH)r�r)r�rr�rrr)rr5rrr	�test_fail_comp�szMiscReadTestBase.test_fail_compcCs"|jjd�}|j|jtjd�dS)Nzmisc/dirtype-old-v7zv7 dirtype failed)r(r-r0�typer�DIRTYPE)rr4rrr	�test_v7_dirtype�sz MiscReadTestBase.test_v7_dirtypecCs4y|jjd�Wntk
r.|jd�YnXdS)Nzmisc/regtype-xstarz3failed to find misc/regtype-xstar (mangled prefix?))r(r-�KeyErrorrY)rrrr	�test_xstar_typesz MiscReadTestBase.test_xstar_typecCsRxL|jD]B}|jt|j�dd|j�|jjd�s4q|j|jdd|j�qWdS)Ni��>zwrong mtime for %szustar/rzwrong uname for %s)r(r0r��mtimer[�
startswith�uname)rr4rrr	�test_check_memberss
z#MiscReadTestBase.test_check_memberscCs|j|jj�djdd�dS)NrIzmisc/eofzcould not find all members���)r0r(r�r[)rrrr	�test_find_memberssz"MiscReadTestBase.test_find_members�linkzMissing hardlink implementationcCs�tjtddd���}|jdt�|jtjtj	j
td��|jdt�|jtjtj	j
td��ttj	j
td�d��}|j�}WdQRX|jt
|�t�|jdt�|jtjtj	j
td��ttj	j
td�d��}|j�}WdQRX|jt
|�t�WdQRXdS)NrIz	iso8859-1)Z
errorlevelr'z
ustar/regtypez
ustar/lnktyperHz
ustar/symtype)rrrr:r;�
addCleanupr�unlinkr<r=r>r/r0r
r3)rr(r�rrrr	�test_extract_hardlinksz&MiscReadTestBase.test_extract_hardlinkc	Cs�tjtdd�}tjjtd�}tj|�z�dd�|D�}|j||�x�|D]x}tjj||j	�}t
jdkr�|j|j
d@tj|�jd@�dd	�}tjj|�}d
j||j�||�|�}|j|j||�qHWWd|j�tj|�XdS)Nz	iso8859-1)r'�
extractallcSsg|]}|j�r|�qSr)�isdir)�.0r�rrr	�
<listcomp>4sz4MiscReadTestBase.test_extractall.<locals>.<listcomp>�win32i�cSs(t|t�rdj||j��Sdj|�SdS)Nz{} ({})z
{!r} (int))�
isinstance�float�format�hex)r�rrr	�format_mtime<s
z6MiscReadTestBase.test_extractall.<locals>.format_mtimez,tar mtime {0} != file time {1} of path {2!a})rrrr<r=r>r;�mkdirr�r[ru�platformr0r�stat�st_mode�getmtimer�r�r*r�rmtree)	rr(�DIR�directoriesr4r=r�Z
file_mtime�errmsgrrr	�test_extractall-s(


z MiscReadTestBase.test_extractallcCs�d}tjjtd�}tj|�z|tjtdd��d}|j|�}|j	||d�tjj||�}|j
tjj|�|j�t
jdkr�|j
tj|�jd@d�WdQRXWdtj|�XdS)	Nz
ustar/dirtypeZ
extractdirz	iso8859-1)r')r=r�i�i�)r<r=r>r;r�rrrr-r:r0r�r�rur�r�r�rr�)r�dirtyper�r(r4�	extractedrrr	�test_extract_directoryKs


&z'MiscReadTestBase.test_extract_directorycCs�tjt�d}tj|��htjtdd��N}dd�|D�}|j||�x,|D]$}||j	}|j
tjj
|�|j�qJWWdQRXWdQRXdS)Nr�z	iso8859-1)r'cSsg|]}|j�r|�qSr)r�)r�r�rrr	r�^szBMiscReadTestBase.test_extractall_pathlike_name.<locals>.<listcomp>)r�r�r;r�temp_dirrrrr�r[r0r<r=r�r�)rr�r(r�r4r=rrr	�test_extractall_pathlike_nameZs

z.MiscReadTestBase.test_extractall_pathlike_namecCs|d}tjt�d}tj|��Vtjtdd��<}|j|�}|j	||d�||}|j
tjj
|�|j�WdQRXWdQRXdS)Nz
ustar/dirtyper�z	iso8859-1)r')r=)r�r�r;rr�rrrr-r:r0r<r=r�r�)rr�r�r(r4r�rrr	�test_extract_pathlike_nameds
z+MiscReadTestBase.test_extract_pathlike_namecCs�tjjtd�}t|d��}|jd�WdQRXzNtjtj	�}y|j
|�Wn$tjk
rn|j|j
j�YnX|jd�Wdtj|�XdS)N�emptyr�rLzReadError not raised)r<r=r>r;rr��object�__new__rr�__init__r��
assertTruer��closedrYrr�)rr�r5r(rrr	�test_init_close_fobjnsz%MiscReadTestBase.test_init_close_fobjcCsXtj|j��B}x:t||�D],\}}|j|j|j�|j|j�|j��qWWdQRXdS)N)rrr�zipr0r�Zget_info)rr(�m1�m2rrr	�test_parallel_iteration�sz(MiscReadTestBase.test_parallel_iterationN)rrrr�r�r�r�r�r�r�r�r�r�r�r�r�r��unittest�
skipUnless�hasattrr<r�skip_unless_symlinkr�r�r�r�r�r�r�rrrr	r��s.		
		

r�c@seZdZdZdS)�MiscReadTestN)rrrr�rrrr	r��sr�c@seZdZdS)�GzipMiscReadTestN)rrrrrrr	r��sr�c@seZdZdd�ZdS)�Bz2MiscReadTestcCs|jd�dS)NzBZ2File have no name attribute)�skipTest)rrrr	r��sz'Bz2MiscReadTest.requires_name_attributeN)rrrr�rrrr	r��sr�c@seZdZdd�ZdS)�LzmaMiscReadTestcCs|jd�dS)NzLZMAFile have no name attribute)r)rrrr	r��sz(LzmaMiscReadTest.requires_name_attributeN)rrrr�rrrr	r�src@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�StreamReadTestzr|cCsrxl|jD]b}|j�sq|jj|��B}x:y|jd�}Wn tjk
rT|jd�YnX|s&Pq&WWdQRXqWdS)Niz6simple read-through using TarFile.extractfile() failed)r(Zisregr.r/r�StreamErrorrY)rr4r5�bufrrr	�test_read_through�sz StreamReadTest.test_read_throughcCsT|jj�}|jj|��}|j�}WdQRX|jt|�|jd�|jt|�td�dS)Nzregular file extraction failed)	r(r�r.r/r0r1r2r
r3)rr4r5rrrr	r6�s
z(StreamReadTest.test_fileobj_regular_filec
Cs:|jj�}|jj|d��}|jtj|j�WdQRXdS)Nr)r(r�r.r�rrr/)rZtarinfosr�rrr	�test_provoke_stream_error�s
z(StreamReadTest.test_provoke_stream_errorcCs�tjtdd�}z�|j}x�|j�}|j�}|dkr2P|j|d�|j�sN|j�rr|jtj	��|j
|�WdQRXq|j
|�}|j
|�}|dkr�q|j|d�|j|j�|j�d�qWWd|j
�XdS)Nz	iso8859-1)r'zstream.next() failed.zstream.extractfile() failedzstream extraction failed)rrrr(r��assertIsNotNoneZislnkZissymr�rr.r0r/r*)rZtar1Ztar2Zt1Zt2�v1�v2rrr	�test_compare_members�s*

z#StreamReadTest.test_compare_membersN)rrrr
rr6rr
rrrr	r�s
	rc@seZdZdS)�GzipStreamReadTestN)rrrrrrr	r�src@seZdZdS)�Bz2StreamReadTestN)rrrrrrr	r�src@seZdZdS)�LzmaStreamReadTestN)rrrrrrr	r
�sr
c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�DetectReadTestcCsJytj||�}Wn,tjk
r<}z|j�WYdd}~Xn
X|j�dS)N)rrr�rYr*)rr[rr(�errr	�_testfunc_file�s
zDetectReadTest._testfunc_filecCsdy*t|d��}tj|||d�}WdQRXWn,tjk
rV}z|j�WYdd}~Xn
X|j�dS)NrH)r�)rrr�rYr*)rr[rr�r(rrrr	�_testfunc_fileobj�sz DetectReadTest._testfunc_fileobjc Cs�|jr�|jtj��tjtd|jd�WdQRX|jtj��tjtd|jd�WdQRX|jtj��tj|jdd�WdQRX|jtj��tj|jdd�WdQRX||jd�||jd|j�||jd�||jd|j�||jd�dS)Nzr:)rzr|r7zr:*zr|*)rr�rr�rr)rZtestfuncrrr	�_test_modes�szDetectReadTest._test_modescCs|j|j�dS)N)rr)rrrr	�test_detect_fileszDetectReadTest.test_detect_filecCs|j|j�dS)N)rr)rrrr	�test_detect_fileobjsz"DetectReadTest.test_detect_fileobjN)rrrrrrrrrrrr	r�s
	rc@seZdZdS)�GzipDetectReadTestN)rrrrrrr	rsrc@seZdZdd�ZdS)�Bz2DetectReadTestcCsTttd��}|j�}WdQRXtjtddd��}|j|�WdQRX|jtd�dS)NrHr�rI)Z
compresslevelzr|*)rrr/r r"r�r�r)rr5rrrr	�test_detect_stream_bz2s
z(Bz2DetectReadTest.test_detect_stream_bz2N)rrrrrrrr	r
src@seZdZdS)�LzmaDetectReadTestN)rrrrrrr	rsrc@s�eZdZd(dd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�ZdS))�MemberReadTestNcKs�|dk	r<|jj|��"}|jt|j��|d|j�WdQRXd|d<d|d<d|d<d|jkrnd	|d
<d	|d<x2|j�D]&\}}|jt||�|d||jf�qxWdS)
Nzwrong md5sum for %si��>r�i��uidrV�gidzold-v7rr��gnamezwrong value in %s field of %s)r(r.r0r
r/r[�itemsr�)rr4�chksum�kwargsr��k�vrrr	�_test_members
zMemberReadTest._test_membercCs |jjd�}|j|dtd�dS)Nz
ustar/regtypeic)r2r)r(r-r"r3)rr4rrr	�test_find_regtype0sz MemberReadTest.test_find_regtypecCs |jjd�}|j|dtd�dS)Nzustar/conttypeic)r2r)r(r-r"r3)rr4rrr	�test_find_conttype4sz!MemberReadTest.test_find_conttypecCs|jjd�}|j|dd�dS)Nz
ustar/dirtyper)r2)r(r-r")rr4rrr	�test_find_dirtype8sz MemberReadTest.test_find_dirtypecCs|jjd�}|j|dd�dS)Nzustar/dirtype-with-size�)r2)r(r-r")rr4rrr	�test_find_dirtype_with_size<sz*MemberReadTest.test_find_dirtype_with_sizecCs |jjd�}|j|ddd�dS)Nz
ustar/lnktyperz
ustar/regtype)r2�linkname)r(r-r")rr4rrr	�test_find_lnktype@sz MemberReadTest.test_find_lnktypecCs |jjd�}|j|ddd�dS)Nz
ustar/symtyperr\)r2r()r(r-r")rr4rrr	�test_find_symtypeDsz MemberReadTest.test_find_symtypecCs"|jjd�}|j|dddd�dS)Nz
ustar/blktyper�)r2�devmajor�devminor)r(r-r")rr4rrr	�test_find_blktypeHsz MemberReadTest.test_find_blktypecCs"|jjd�}|j|dddd�dS)Nz
ustar/chrtyperrIr+)r2r,r-)r(r-r")rr4rrr	�test_find_chrtypeLsz MemberReadTest.test_find_chrtypecCs|jjd�}|j|dd�dS)Nzustar/fifotyper)r2)r(r-r")rr4rrr	�test_find_fifotypePsz!MemberReadTest.test_find_fifotypecCs |jjd�}|j|dtd�dS)Nzustar/sparseiP)r2r)r(r-r"�
md5_sparse)rr4rrr	�test_find_sparseTszMemberReadTest.test_find_sparsecCs |jjd�}|j|dtd�dS)Nz
gnu/sparseiP)r2r)r(r-r"r1)rr4rrr	�test_find_gnusparseXsz"MemberReadTest.test_find_gnusparsecCs |jjd�}|j|dtd�dS)Nzgnu/sparse-0.0iP)r2r)r(r-r"r1)rr4rrr	�test_find_gnusparse_00\sz%MemberReadTest.test_find_gnusparse_00cCs |jjd�}|j|dtd�dS)Nzgnu/sparse-0.1iP)r2r)r(r-r"r1)rr4rrr	�test_find_gnusparse_01`sz%MemberReadTest.test_find_gnusparse_01cCs |jjd�}|j|dtd�dS)Nzgnu/sparse-1.0iP)r2r)r(r-r"r1)rr4rrr	�test_find_gnusparse_10dsz%MemberReadTest.test_find_gnusparse_10cCs |jjd�}|j|dtd�dS)Nuustar/umlauts-ÄÖÜäöüßic)r2r)r(r-r"r3)rr4rrr	�test_find_umlautshsz MemberReadTest.test_find_umlautscCs&dddd}|j||jj��dS)Nzustar/z12345/�'z1234567/longname)rxr(r�)rr[rrr	�test_find_ustar_longnamemsz'MemberReadTest.test_find_ustar_longnamecCs |jjd�}|j|dtd�dS)Nzmisc/regtype-old-v7ic)r2r)r(r-r"r3)rr4rrr	�test_find_regtype_oldv7qsz&MemberReadTest.test_find_regtype_oldv7cCs@|jj�tj|j|jdd�|_|jjd�}|j|dtd�dS)Nz	iso8859-1)rr'upax/umlauts-ÄÖÜäöüßic)r2r)	r(r*rrrrr-r"r3)rr4rrr	�test_find_pax_umlautsus


z$MemberReadTest.test_find_pax_umlauts)N)rrrr"r#r$r%r'r)r*r.r/r0r2r3r4r5r6r7r9r:r;rrrr	rs&
rc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�LongnameTestcCs\|jdddd}y|jj|�}Wntk
rD|jd�YnX|j|jtjd�dS)N�/z123/r~�longnamezlongname not foundzread longname as dirtype)	�subdirr(r-r�rY�assertNotEqualr�rr�)rr>r4rrr	�test_read_longname�szLongnameTest.test_read_longnamecCsp|jdddd}|jdddd}y|jj|�}Wntk
rZ|jd�YnX|j|j|d�dS)Nr=z123/r~r>�longlinkzlonglink not foundzlinkname wrong)r?r(r-r�rYr0r()rr>rBr4rrr	�test_read_longlink�szLongnameTest.test_read_longlinkcCst|jdddd}|jj|�}|j}|jjj|�tj|jjjd	��}|j	t
j��t
jd|d�WdQRXdS)
Nr=z123/r~r>r+izfoo.tar)r[r�i)
r?r(r-r�r�rMrrsr/r�rr�r)rr>r4r�r5rrr	�test_truncated_longname�sz$LongnameTest.test_truncated_longnamecCsn|jdddd}|jj|�j}ttd��6}|j|�tjj	|j
d�dd�}|j|j|j
�WdQRXdS)	Nr=z123/r~r>rHiz	iso8859-1�strict)r?r(r-r�rrrMrr�Zfrombufr/r0r��longnametype)rr>r�r5r4rrr	�test_header_offset�s
zLongnameTest.test_header_offsetN)rrrrArCrDrGrrrr	r<~s
		r<c@sJeZdZdZejZdd�Zdd�Zdd�Z	dd	�Z
d
d�Zedd
��Z
dS)�GNUReadTestZgnucCsz|jj|t�tjjt|�}t|d��}|j�}WdQRX|jt	|�t
d|�|j�rvtj|�}|j
|jd|j�dS)NrHzwrong md5sum for %si)r(r:r;r<r=r>rr/r0r
r1�_fs_supports_holesr�Z
assertLess�	st_blocks�st_size)rr[�filenamer5rrQrrr	�_test_sparse_file�s

zGNUReadTest._test_sparse_filecCs|jd�dS)Nz
gnu/sparse)rM)rrrr	�test_sparse_file_old�sz GNUReadTest.test_sparse_file_oldcCs|jd�dS)Nzgnu/sparse-0.0)rM)rrrr	�test_sparse_file_00�szGNUReadTest.test_sparse_file_00cCs|jd�dS)Nzgnu/sparse-0.1)rM)rrrr	�test_sparse_file_01�szGNUReadTest.test_sparse_file_01cCs|jd�dS)Nzgnu/sparse-1.0)rM)rrrr	�test_sparse_file_10�szGNUReadTest.test_sparse_file_10c	Cshtjjd�r`tjjtd�}t|d��}|jd�|j	�WdQRXtj
|�}tj|�|j
dkSdSdS)N�linuxzsparse-testr�irF)rur�r�r<r=r>r;rrMr�r�rr�rJ)r[r5rQrrr	rI�s



zGNUReadTest._fs_supports_holesN)rrrr?r�GNUTYPE_LONGNAMErFrMrNrOrPrQ�staticmethodrIrrrr	rH�s	rHc@s&eZdZdZejZdd�Zdd�ZdS)�PaxReadTestZpaxc
Cs�tjtdd�}z�|jd�}|j|jd�|j|jd�|j|jjd�d�|jd�}|j|jd	�|j|jd�|j|jjd�d�|jd
�}|j|jd�|j|jd�|j|jjd�d�Wd|j	�XdS)Nz	iso8859-1)r'zpax/regtype1r��barzVENDOR.umlautsuÄÖÜäöüßzpax/regtype2rzpax/regtype3r)
rrrr-r0r�r�pax_headers�getr*)rr(r4rrr	�test_pax_global_headers�s$



z#PaxReadTest.test_pax_global_headersc
Cs�tjtdd�}z�|jd�}|j|jd�|j|jd�|j|jd�|j|jd�|jt	|j�t
�|jt
|jd�d�|jt
|jd�d�Wd|j�XdS)	Nz	iso8859-1)r'zpax/regtype4ic�{g��^�AZatimeZctime)
rrrr-r0r2rrr�r�r�rWr*)rr(r4rrr	�test_pax_number_fields�s
z"PaxReadTest.test_pax_number_fieldsN)	rrrr?r�XHDTYPErFrYr[rrrr	rU�srUc@seZdZdd�Zdd�ZdS)�
WriteTestBasecCsptj�}tj||jd�}|jtjd��|j�|j|j	d�|j
�}~tj�|j|j	�|j
||j
��dS)N)r�rr�z#external fileobjs must never closed)rrsrrrr�r�r*�assertFalser�rwrZ
gc_collectr0)rr5r(rrrr	�test_fileobj_no_closesz#WriteTestBase.test_fileobj_no_closecCs�tjt|j��6}tjd�}tjtj|_|j|t	j
d|j��WdQRX|jtd�� }|jt|j
��tjd�WdQRXdS)Nr�r�rHrK)rrr�rr��
RECORDSIZE�	BLOCKSIZEr2r�rrsr0r1r/)rr(r�r5rrr	�test_eof_markers
"zWriteTestBase.test_eof_markerN)rrrr_rbrrrr	r]
s
r]c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Ze	j
eed�d
�dd��Z
ejdd��Zdd�Zdd�Zdd�Zd&dd�Zejdd��Zdd�Zd d!�Zd"d#�Zd$d%�ZdS)'�	WriteTestzw:cCsndd}tjt|j�}ztj|�}|j|�Wd|j�Xtjt�}z|j|j�d|d�Wd|j�XdS)N�
0123456789rJrz!failed to store 100 char filename)	rrr�rr�r�r*r0r�)rr[r(r�rrr	�test_100_char_name-s



zWriteTest.test_100_char_namecCsptjt|j�}z<tjjtd�}t|d��}|jd�WdQRX|j	|�Wd|j
�X|jtjjt�dd�dS)N�filer�saaarztarfile is empty)
rrr�rr<r=r>r;r��addr*Z
assertGreater�getsize)rr(r=r5rrr	�
test_tar_sizeAs
zWriteTest.test_tar_sizecCs�tjt|j�}zxtjjtd�}t|d��WdQRX|j|�}|j	|j
d�t|d��}|jd�WdQRX|j|�}|j	|j
d�Wd|j�XdS)Nrfr�rsaaar+)
rrr�rr<r=r>r;�
gettarinfor0r2r�r*)rr(r=r4r5rrr	�test_file_sizeOs


zWriteTest.test_file_sizecCsdtjjtd�}tj|�z:tjt|j�}z|j	|�}|j
|jd�Wd|j�XWdt
j|�XdS)NZ	directoryr)r<r=r>r;r�rrr�rrjr0r2r*r�rmdir)rr=r(r4rrr	�test_directory_size_s

zWriteTest.test_directory_sizecCs�tjt|j��z}tjt�d}t|d��}|jd�WdQRX|j|�}|jt	j
|��}|j|jt
�|j|j|j�|j|jd�WdQRXdS)Nrfr�saaar+)rrr�rr�r�r;r�rjr<r�r�r[r�r0r2)rr(r=r5r4Ztarinfo2rrr	�test_gettarinfo_pathlike_namels
z'WriteTest.test_gettarinfo_pathlike_namer�zMissing hardlink implementationcCs�tjjtd�}tjjtd�}t|d��}|jd�WdQRXtj||�zDtjt|j	�}z&|j
|�|j
|�}|j|jd�Wd|j
�XWdtj|�tj|�XdS)Nr��link_targetr�saaar)r<r=r>r;rr�r�rr�rrjr0r2r*rr�)rr��targetr5r(r4rrr	�test_link_sizews


zWriteTest.test_link_sizecCsftjjtd�}tjd|�z:tjt|j�}z|j	|�}|j
|jd�Wd|j�XWdt
j|�XdS)N�symlinkror)r<r=r>r;rrrrr�rrjr0r2r*rr�)rr=r(r4rrr	�test_symlink_size�s
zWriteTest.test_symlink_sizecCs�tjjt�}tjt|j�}zb|j|j|d�|j	|�|j|j
�gd�tjt
��|j	|�WdQRX|j|j
�gd�Wd|j�XdS)Nzarchive name must be absolutezadded the archive to itself)r<r=r�r�rrrr0r[rgr�r�
change_cwdr;r*)rZdstnamer(rrr	�
test_add_self�s


zWriteTest.test_add_selfcCs�tjjtd�}tj|�z�x$d
D]}tjj||�}tj|�q Wtjj}tj	t
|jdd�}z.tjdt
f��|j|d|d	�WdQRXWd|j�Xtj	t
d
�}z,|jt|j��d�|j|j�dd�Wd|j�XWdtj|�XdS)N�excluder�rV�bazz	iso8859-1)r'zuse the filter argument�	empty_dir)�arcnamervr7rIr)r�rVrw)r<r=r>r;r�r�create_empty_file�isfilerrr�rZcheck_warnings�DeprecationWarningrgr*r0r1r�r�r�)r�tempdirr[rvr(rrr	�test_exclude�s&



zWriteTest.test_excludec Cstjjtd�}tj|�z�x$dD]}tjj||�}tj|�q Wdd�}tjt	|j
dd�}z|j|d	|d
�Wd|j�X|j
t��|j|d	dd|�WdQRXtjt	d�}zBx(|D] }|j|jd
�|j|jd�q�W|jt|j��d�Wd|j�XWdtj|�XdS)N�filterr�rVrwcSs&tjj|j�dkrdSd|_d|_|S)NrVrZr�)r<r=�basenamer[rr�)r4rrr	r�s
z%WriteTest.test_filter.<locals>.filterz	iso8859-1)r'rx)ryrTr7rZr+)r�rVrw)r<r=r>r;r�rrzrrr�rrgr*r��	TypeErrorr0rr�r1r�r�)rr}r[rr(r4rrr	�test_filter�s*



zWriteTest.test_filterNFcCs�tjjtd�}|stj|�n
tj|�tjt	|j
�}z|j||d�Wd|j�Xtjt	d�}z|j
�}Wd|j�X|s�tj|�n
tj|�|j|j|p�|jtjd��dS)Nr�)ryr7r=)r<r=r>r;rrzr�rrr�rrgr*r�r�rlr0r[r��sep)rr=Zcmp_path�dirr�r(r�rrr	�_test_pathname�s 



zWriteTest._test_pathnamecCstjjtd�}tjjtd�}tj|�z�tjj|d�}tjj|d�}t|d��}|jd�WdQRXtj||�tj|d�}|j	|�|j	|�|j
�tj|d�}z4y|j|d�Wntk
r�|j
d	�YnXWd|j
�XWdtj|�tj|�XdS)
NZtestsymlinksztestsymlinks.tar�sourcerrr�z
something
r7)r=z&extractall failed with symlinked files)r<r=r>r;r�rr�rrrrgr*r��OSErrorrYrr�r�)rr}ZtemparchiveZsource_fileZtarget_filer�r(rrr	�test_extractall_symlinkss*



z"WriteTest.test_extractall_symlinkscCs<|jd�|jtjjddd��|jtjjddd��|jtjjdd��|jtjjddd��|jtjjdddd��|jtjjdddd��|jtjjdddd��|jtjjdd��|jtjjddd��|jtjjdddd��|jtjjdddd��|jdtjtjd�|jdtjtjddd�dS)Nr��.rVz..T)r�)r�r<r=r>r�)rrrr	�test_pathnames)s
zWriteTest.test_pathnamescCs4tjdkr|jdd�n|jdd�|jdd�dS)Nr�zC:\foor�z/fooz///foo)rur�r�)rrrr	�test_abs_pathnames:s
zWriteTest.test_abs_pathnamescCs�tjt��xtjt|j�}z|jd�Wd|j�Xtjtd�}z2x,|D]$}|j	dkrH|j
|j	jd�|j	�qHWWd|j�XWdQRXdS)Nr�r7z./)rrtr;rrr�rrgr*r[r�r�)rr(r�rrr	�test_cwdAs


zWriteTest.test_cwdcsrxltttfD]^�G�fdd�dtj�}|�}|j���"tjt|j	|tj
ddid�}WdQRX|j|j�qWdS)NcseZdZdZ�fdd�ZdS)z8WriteTest.test_open_nonwritable_fileobj.<locals>.BadFileTcs|jrd|_��dS)NF)�first)rr)�exctyperr	r�Vsz>WriteTest.test_open_nonwritable_fileobj.<locals>.BadFile.writeN)rrrr�r�r)r�rr	�BadFileTsr�Znonr�)r�r�rW)
r��EOFError�RuntimeErrorrrsr�rrr�r�
PAX_FORMATr^r�)rr�r�r(r)r�r	�test_open_nonwritable_fileobjRsz'WriteTest.test_open_nonwritable_fileobj)NF)rrrr
rerirkrmrnr�r�r�r<rqrr�rsrur~r�r�r�r�r�r�r�rrrr	rc)s$
(
rcc@seZdZdS)�
GzipWriteTestN)rrrrrrr	r�bsr�c@seZdZdS)�Bz2WriteTestN)rrrrrrr	r�esr�c@seZdZdS)�
LzmaWriteTestN)rrrrrrr	r�hsr�c@s@eZdZdZdZdd�Zejej	dko.e
ed�d�dd	��ZdS)
�StreamWriteTestzw|NcCs�tjt|j�}|j�|jr\|j�}ttd��}|j�}WdQRX|j|�}|j|j	d�n|jt��}|j�}WdQRX|j
|jd�tjd�dS)NrHzfound trailing datar�zincorrect zero padding)
rrr�rr*�decompressorr/Z
decompressr^Zunused_datar0�countr`)rr(Zdecr5rrrr	�test_stream_paddingqs
z#StreamWriteTest.test_stream_paddingr��umaskzMissing umask implementationcCsjtjjt�rtjt�tjd�}z8tjt|j	�}|j
�tjt�jd@}|j
|dd�Wdtj|�XdS)N�i�i�zwrong file permissions)r<r=�existsr�rr�r�rrrr*r�r�r0)rZoriginal_umaskr(rrrr	�test_file_mode�s

zStreamWriteTest.test_file_mode)
rrrr
r�r�r�r�rur�r�r<r�rrrr	r�ls
r�c@seZdZdS)�GzipStreamWriteTestN)rrrrrrr	r��sr�c@seZdZerejndZdS)�Bz2StreamWriteTestN)rrrr ZBZ2Decompressorr�rrrr	r��sr�c@seZdZerejndZdS)�LzmaStreamWriteTestN)rrrr%ZLZMADecompressorr�rrrr	r��sr�c@speZdZdd�Zddd�Zddd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�GNUWriteTestcCst|�dd}|dS)NirI)r1)rrQZblocksrrr	�_length�szGNUWriteTest._lengthNcCsXd}t|�tjkr(|d7}||j|�7}|dk	rTt|�tjkrT|d7}||j|�7}|S)Ni)r1r�LENGTH_NAMEr��LENGTH_LINK)rr[r�r�rrr	�
_calc_size�szGNUWriteTest._calc_sizecCs�tj|�}|r||_tj|_tjtd�}z6tj|_|j	|�|j
||�}|j}|j||d�Wd|j
�Xtjt�}z<|j�}|j|d�|j|j|jd�|j|j|jd�Wd|j
�XdS)Nr�z%GNU longname/longlink creation failedzunable to read longname member)rr�r(�LNKTYPEr�rr��
GNU_FORMATr�r�r�r�r0r*r�rr[)rr[r�r4r(rr	�memberrrr	�_test�s,




zGNUWriteTest._testcCs|jddd�dS)Nzlongnam/��longnam)r�)rrrr	�test_longname_1023�szGNUWriteTest.test_longname_1023cCs|jddd�dS)Nzlongnam/r�r>)r�)rrrr	�test_longname_1024�szGNUWriteTest.test_longname_1024cCs|jddd�dS)Nzlongnam/r��	longname_)r�)rrrr	�test_longname_1025�szGNUWriteTest.test_longname_1025cCs|jdddd�dS)Nr[zlonglnk/r��longlnk)r�)rrrr	�test_longlink_1023�szGNUWriteTest.test_longlink_1023cCs|jdddd�dS)Nr[zlonglnk/r�rB)r�)rrrr	�test_longlink_1024�szGNUWriteTest.test_longlink_1024cCs|jdddd�dS)Nr[zlonglnk/r��	longlink_)r�)rrrr	�test_longlink_1025�szGNUWriteTest.test_longlink_1025cCs |jdddddd�dS)Nzlongnam/r�r�zlonglnk/r�)r�)rrrr	�test_longnamelink_1023�sz#GNUWriteTest.test_longnamelink_1023cCs |jdddddd�dS)Nzlongnam/r�r>zlonglnk/rB)r�)rrrr	�test_longnamelink_1024�sz#GNUWriteTest.test_longnamelink_1024cCs |jdddddd�dS)Nzlongnam/r�r�zlonglnk/r�)r�)rrrr	�test_longnamelink_1025�sz#GNUWriteTest.test_longnamelink_1025)N)N)rrrr�r�r�r�r�r�r�r�r�r�r�r�rrrr	r��s

r�c@sneZdZdZejjed�Zdd�Z	e
dd��Ze
dd��Zd	d
�Z
dd�Zd
d�Zdd�Zdd�Zdd�ZdS)�
CreateTestzx:�
spameggs42cCstjt�dS)N)rr�r�)rrrr	r)�szCreateTest.setUpc	Cs&t|jd��}|jd�WdQRXdS)Nr�saaa)r�	file_pathr�)�clsr5rrr	�
setUpClass�szCreateTest.setUpClasscCstj|j�dS)N)rr�r�)r�rrr	�
tearDownClass�szCreateTest.tearDownClasscCshtjt|j��}|j|j�WdQRX|jt��}|j�}WdQRX|jt	|�d�|j
d|d�dS)NrIr�r)rrr�rrgr�rr�r0r1rx)r�tobj�namesrrr	�test_createszCreateTest.test_createcCs�tjt|j��}|j|j�WdQRX|jt��tjt|j�}WdQRX|jt��}|j	�}WdQRX|j
t|�d�|jd|d�dS)NrIr�r)
rrr�rrgr�r��FileExistsErrorrr�r0r1rx)rr�r�rrr	�test_create_existing	szCreateTest.test_create_existingcCsf|jtd��}|j|j�WdQRX|jt��}|j�}WdQRX|jt|�d�|jd|d�dS)N�xrIr�r)rr�rgr�r�r0r1rx)rr�r�rrr	�test_create_taropenszCreateTest.test_create_taropenc Cs�|jtd��}|j|j�WdQRX|jt��|jtd��WdQRXWdQRX|jt��}|j�}WdQRX|jt|�d�|j	d|d�dS)Nr�rIr�r)
rr�rgr�r�r�r�r0r1rx)rr�r�rrr	�test_create_existing_taropensz'CreateTest.test_create_existing_taropencCs�tjtjt�|j��D}|j|jt�|j	|jt
jjt��|j
tj|j��|j�}WdQRX|j	t|�d�|jd|d�|jt��}|j�}WdQRX|j	t|�d�|jd|d�dS)NrIr�r)rrr�r�r�rr�r[r�r0r<r=r�rgr�r�r1rxr)rr�r�rrr	�test_create_pathlike_name+sz$CreateTest.test_create_pathlike_namecCs�|jtjt�d��D}|j|jt�|j|jtj	j
t��|jtj|j��|j
�}WdQRX|jt|�d�|jd|d�|jt��}|j
�}WdQRX|jt|�d�|jd|d�dS)Nr�rIr�r)rr�r�r�r�r[r�r0r<r=r�rgr�r�r1rx)rr�r�rrr	�!test_create_taropen_pathlike_name9sz,CreateTest.test_create_taropen_pathlike_nameN)rrrr
r<r=r>r;r�r)�classmethodr�r�r�r�r�r�r�r�rrrr	r��s		
r�c@seZdZdS)�GzipCreateTestN)rrrrrrr	r�Hsr�c@seZdZdS)�
Bz2CreateTestN)rrrrrrr	r�Lsr�c@seZdZdS)�LzmaCreateTestN)rrrrrrr	r�Psr�c@seZdZdZdZdZdS)�CreateWithXModeTestr�N)rrrr
r�r�rrrr	r�Tsr�r�zMissing hardlink implementationc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�HardlinkTestc
Csrtjjtd�|_tjjtd�|_t|jd��}|jd�WdQRXtj|j|j�t	jt
d�|_|jj|j�dS)Nr�rVr�sfoor�)
r<r=r>r;r�rVrr�r�rr�r(rg)rr5rrr	r)`szHardlinkTest.setUpcCs&|jj�tj|j�tj|j�dS)N)r(r*rr�r�rV)rrrr	r+ls
zHardlinkTest.tearDowncCs$|jj|j�}|j|jtjd�dS)Nzadd file as regular failed)r(rjr�r0r�r�REGTYPE)rr4rrr	�test_add_twiceqszHardlinkTest.test_add_twicecCs$|jj|j�}|j|jtjd�dS)Nzadd file as hardlink failed)r(rjrVr0r�rr�)rr4rrr	�test_add_hardlinkxszHardlinkTest.test_add_hardlinkcCs,d|j_|jj|j�}|j|jtjd�dS)NTzdereferencing hardlink failed)r(ZdereferencerjrVr0r�rr�)rr4rrr	�test_dereference_hardlink}sz&HardlinkTest.test_dereference_hardlinkN)rrrr)r+r�r�r�rrrr	r�\s
r�c@s&eZdZddd�Zdd�Zdd�ZdS)	�PaxWriteTestNcCs�tj|�}|r||_tj|_tjtdtjd�}z|j|�Wd|j	�Xtjt�}zB|rv|j
�dj}|j||d�n|j
�dj}|j||d�Wd|j	�XdS)Nr�)r�rzPAX longlink creation failedzPAX longname creation failed)
rr�r(r�r�rr�r�r�r*r�r0r[)rr[r�r4r(�l�nrrr	r��s 


zPaxWriteTest._testcCsdddddd�}tjtdtj|d�}z|jtjd��Wd|j�Xtjtd	d
�}z�|j|j|�|j|j	�dj|�xv|jj
�D]h\}}|jt|�t
�|jt|�t
�|tjkr�ytj||�Wq�ttfk
r�|jd�Yq�Xq�WWd|j�XdS)
NrV�0z1.23uäöü�test)r�rr�r�uäöür�)r�rWz	iso8859-1)r'rz"unable to convert pax header field)rrr�r�r�r�r*r0rWr�rZassertIsNotr�r��PAX_NUMBER_FIELDSr�r�rY)rrWr(�key�valrrr	�test_pax_global_header�s.

z#PaxWriteTest.test_pax_global_headercCs�ddd�}tjtdtjdd�}z(tj�}d|_d|_||_|j|�Wd|j	�Xtjtdd	�}z:|j
�d
}|j|j|�|j|jd�|j|jd�Wd|j	�XdS)
Nr�Z123)r=rr�z	iso8859-1)r�r'uäöür�)r'rrZi)rrr�r�r�r[rrWr�r*r�r0)rrWr(r�rrr	�test_pax_extended_header�s"

z%PaxWriteTest.test_pax_extended_header)N)rrrr�r�r�rrrr	r��s
 r�c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�UnicodeTestcCs|jd�dS)Nz	iso8859-1)�_test_unicode_filename)rrrr	�test_iso8859_1_filename�sz#UnicodeTest.test_iso8859_1_filenamecCs|jd�dS)N�utf7)r�)rrrr	�test_utf7_filename�szUnicodeTest.test_utf7_filenamecCs|jd�dS)Nzutf-8)r�)rrrr	�test_utf8_filename�szUnicodeTest.test_utf8_filenamecCsrtjtd|j|dd�}zd}|jtj|��Wd|j�Xtjt|d�}z|j|j�dj	|�Wd|j�XdS)Nr�rE)r�r'�errorsuäöü)r'r)
rrr�r�r�r�r*r0r�r[)rr'r(r[rrr	r��s

z"UnicodeTest._test_unicode_filenamec
Csdtjtd|jddd�}z>tj�}d|_|jt|j|�d|_d|_	|jt|j|�Wd|j
�XdS)Nr�rirE)r�r'r�uäöür�)rrr�r�r�r[r��UnicodeErrorr�r�r*)rr(r4rrr	�test_unicode_filename_error�s
z'UnicodeTest.test_unicode_filename_errorc
Cs|tjtdddd�}zZxT|D]L}|jt|j�t�|jt|j�t�|jt|j�t�|jt|j	�t�qWWd|j
�XdS)Nr7z	iso8859-1rE)r'r�)rrrZassertIsr�r[r�r(r�rr*)rr(r�rrr	�test_unicode_arguments

z!UnicodeTest.test_unicode_argumentcCs�tjd�}d|_d|_tjtd|jdd�}z|j|�Wd|j�Xtjtdd�}zr|j	d�}|j
|jd�|j
|jd�|jtjkr�|j�tjtdd�}|j	d�}|j
|jd�|j
|jd�Wd|j�XdS)	Nr�uäöür�z	iso8859-1)rr�r')r'riu	���)rr�r�rrr�r�r�r*r-r0r�)rr�r(rrr	�test_uname_unicode
s(



zUnicodeTest.test_uname_unicodeN)
rrrr�r�r�r�r�r�r�rrrr	r��sr�c@sfeZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zddd�Zdd�Z
dd�Zddd�Zd
S)�UstarUnicodeTestcCsL|jdd�|jdddt�|jddd�|jdddt�dS)NrdrJr��	u
01234567ÿu012345678ÿ)�_test_ustar_namer�)rrrr	�test_unicode_name10sz#UstarUnicodeTest.test_unicode_name1cCs*|jddd�|jdddt�dS)Nrdr�u
012345ÿÿu0123456ÿÿ)r�r�)rrrr	�test_unicode_name26sz#UstarUnicodeTest.test_unicode_name2cCsp|jddddd�|jdddddt�|jddddd�|jdddddt�dS)Nrd�z01234/rJz0123/4u012ÿ/u0123ÿ/)r�r�)rrrr	�test_unicode_longname1<sz'UstarUnicodeTest.test_unicode_longname1cCs<|jdddddt�|jdddddt�dS)Nrdr�u01ÿ/2rJu01ÿÿ/)r�r�)rrrr	�test_unicode_longname2Bsz'UstarUnicodeTest.test_unicode_longname2cCs^|jdddddt�|jdddddd�|jddddddt�dS)	Nrdr�u01ÿÿ/2rJz01234/r�u
01234567ÿu012345678ÿ)r�r�)rrrr	�test_unicode_longname3Fsz'UstarUnicodeTest.test_unicode_longname3cCsB|jdddddd�|jddddddt�dS)Nrdr�z01234/r�u
012345ÿÿu0123456ÿÿ)r�r�)rrrr	�test_unicode_longname4Ksz'UstarUnicodeTest.test_unicode_longname4NcCs�tjtd|jdd��4}tj|�}|dkr4|j|�n|j||j|�WdQRX|dkr�tjtddd��$}x|D]}|j||j�PqnWWdQRXdS)Nr�zutf-8)r�r'r7)r')	rrr�r�r�r�r�r0r[)rr[�excr(r�rrr	r�Os

z!UstarUnicodeTest._test_ustar_namecCsL|jdd�|jdddt�|jddd�|jdddt�dS)NrdrJr�r�u
01234567ÿu012345678ÿ)�_test_ustar_linkr�)rrrr	�test_unicode_link1^sz#UstarUnicodeTest.test_unicode_link1cCs*|jddd�|jdddt�dS)Nrdr�u
012345ÿÿu0123456ÿÿ)r�r�)rrrr	�test_unicode_link2dsz#UstarUnicodeTest.test_unicode_link2cCs�tjtd|jdd��:}tjd�}||_|dkr:|j|�n|j||j|�WdQRX|dkr�tjtddd��$}x|D]}|j||j�PqtWWdQRXdS)Nr�zutf-8)r�r'r�r7)r')	rrr�r�r�r(r�r�r0)rr[r�r(r�rrr	r�hs

z!UstarUnicodeTest._test_ustar_link)N)N)rrrr�USTAR_FORMATr�r�r�r�r�r�r�r�r�r�r�rrrr	r�)s
r�c@seZdZejZdd�ZdS)�GNUUnicodeTestcCs`xZd
D]R\}}tjt|dd��4}y|j|�}Wntk
rL|jd�YnXWdQRXqWdS)N�utf-8�pax/bad-pax-����	iso8859-1�pax/bad-pax-äöüro)r'r�z%unable to read bad GNU tar pax header�r�r��r�r�)r�r�)rrrr-r�rY)rr'r[r(r�rrr	�test_bad_pax_header|s
z"GNUUnicodeTest.test_bad_pax_headerN)rrrrr�r�r�rrrr	r�xsr�c@seZdZejZdZdd�ZdS)�PAXUnicodeTestNcCs`xZd
D]R\}}tjt|dd��4}y|j|�}Wntk
rL|jd�YnXWdQRXqWdS)N�utf-8�pax/hdrcharset-����	iso8859-1�pax/hdrcharset-äöüro)r'r�z)unable to read POSIX.1-2008 binary header�rr�rr)rr)rrrr-r�rY)rr'r[r(r�rrr	�test_binary_header�s
z!PAXUnicodeTest.test_binary_header)rrrrr�r�r�rrrrr	r��sr�c@s&eZdZdd�Zd	dd�Zdd�ZdS)
�AppendTestBasecCs$t|_tjj|j�r tj|j�dS)N)r�rr<r=r�rr�)rrrr	r)�szAppendTestBase.setUp�w:cCsjtjtdd��R}|jd�}d|_|j|��,}tj|j|��}|j||�WdQRXWdQRXWdQRXdS)Nz	iso8859-1)r'z
ustar/regtyper�)rrrr-r[r.r�)rr�srcr�r�r(rrr	�_create_testtar�s
zAppendTestBase._create_testtarcCs(|jd|j�|jtjtjtd�dS)Nzw:r])r
rr�rr�rr�)rrrr	�test_append_compressed�sz%AppendTestBase.test_append_compressedN)r)rrrr)r
rrrrr	r�s
rc@s�eZdZdZddd�Zdgdfdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�
AppendTestNc
Cs2tj|jd|d��}|jtjd��WdQRXdS)Nr])r�rV)rrrr�r�)rr�r(rrr	�
_add_testfile�szAppendTest._add_testfilerVc
Cs0tj|j|d��}|j|j�|�WdQRXdS)N)r�)rrrr0r�)rr�r�r(rrr	r��szAppendTest._testcCs|j�|j�dS)N)r
r�)rrrr	�test_non_existing�szAppendTest.test_non_existingcCs&tj|jd�j�|j�|j�dS)Nzw:)rrrr*r
r�)rrrr	�
test_empty�szAppendTest.test_emptycCs2tjdd�}|j|�|jd�|j|d�dS)Nr�ir)r�)rrsr
rMr�)rr5rrr	�test_empty_fileobj�s

zAppendTest.test_empty_fileobjcCs\|j�t|jd��}|j�}WdQRXtj|�}|j|�|jd�|jddg|d�dS)NrHrr�rV)r�r�)	r
rrr/rrsr
rMr�)rr5rrrr	�test_fileobj�s


zAppendTest.test_fileobjcCs$|j�|j�|jddgd�dS)Nr�rV)r�)r
r
r�)rrrr	�
test_existing�szAppendTest.test_existingc
Cs6t|jd��}|j|�WdQRX|jtj|j�dS)Nr�)rrr�r�rr�r
)rrr5rrr	�_test_error�szAppendTest._test_errorcCs|jd�dS)NrL)r)rrrr	�	test_null�szAppendTest.test_nullcCs|jd�dS)Nr��
s
)r)rrrr	�test_incomplete�szAppendTest.test_incompletecCstjd�j�}|j|�dS)Nr�)rr�r�r)rrrrr	�test_premature_eof�szAppendTest.test_premature_eofcCs tjd�j�}|j|d�dS)Nr�r�rs
)rr�r�r)rrrrr	�test_trailing_garbage�sz AppendTest.test_trailing_garbagecCs|jdd�dS)Nr�i)r)rrrr	�test_invalid�szAppendTest.test_invalid)N)rrrrr
r�rrrrrrrrrrrrrrr	r�s
	rc@seZdZdS)�GzipAppendTestN)rrrrrrr	r�src@seZdZdS)�
Bz2AppendTestN)rrrrrrr	r�src@seZdZdS)�LzmaAppendTestN)rrrrrrr	r�src@s$eZdZdd�Zdd�Zdd�ZdS)�
LimitsTestcCs�tjdd�}|jtj�tjddd�}|jt|jtj�tjddd�}|jtj�tjddd�}|jt|jtj�tjdd	d�}|jt|jtj�tjd
�}dd	d|_|jt|jtj�tjd�}d|_|jt|jtj�dS)
NrdrJr�z123/�>r>z1234567/��~rBr[i )rr�r�r�r�r�r(r)rr4rrr	�test_ustar_limits�s 

zLimitsTest.test_ustar_limitscCshtjddd�}|jtj�tjd�}ddd|_|jtj�tjd�}d|_|jt|jtj�dS)Nz123/r r>rBr[l)rr�r�r�r(rr�r�)rr4rrr	�test_gnu_limitss

zLimitsTest.test_gnu_limitscCsbtjddd�}|jtj�tjd�}ddd|_|jtj�tjd�}d|_|jtj�dS)Nz123/r r>rBr[l)rr�r�r�r(r)rr4rrr	�test_pax_limits*s

zLimitsTest.test_pax_limitsN)rrrr!r"r#rrrr	r�s
rc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�MiscTestcCs`|jtjdddd�d�|jtjdddd�d�|jtjddd�d�|jtjd	dd�d�dS)
Nr�r�rirEsfooZfoobarr+sfoosfoobar)r0r�stn�nts)rrrr	�test_char_fields9szMiscTest.test_char_fieldscCs�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd	�d�|jtjd
�d�|jtjd�d�|jtjd�d�|jtjd�d�dS)Ns0000001rIs7777777i��s� i s�����l��s��������s��������rVs�lr�rs       r�i����l����)r0r�nti)rrrr	�test_read_number_fieldsCsz MiscTest.test_read_number_fieldscCs�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d	�|jtjd�d�|jtjd�d
�|jtjdtjd�d�|jtjdtjd�d�|jtjtjdtjd��d�dS)NrIs0000001i��s7777777i s� l��s�����s��������rVs��������ls�gY@)r�r��gs�g�������?rr�i����l����gY�l@g0Bg��������)r0r�itnr�r()rrrr	�test_write_number_fieldsWs"z!MiscTest.test_write_number_fieldsc Cs�|jt��tjddtj�WdQRX|jt��tjddtj�WdQRX|jt��tjddtj�WdQRX|jt��tjddtj�WdQRXdS)	NrIr�i l�lr�l����)r�r�rr+r�r�)rrrr	�test_number_field_limitsmsz!MiscTest.test_number_field_limitsc/Csvddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/h/}tj|t|d0�dS)1N�version�grp�pwdZsymlink_exceptionZNULrar`Z	GNU_MAGICZPOSIX_MAGICr�r�Z
LENGTH_PREFIXr�ZAREGTYPEr�ZSYMTYPEZCHRTYPEZBLKTYPEr�ZFIFOTYPEZCONTTYPErSZGNUTYPE_LONGLINKZGNUTYPE_SPARSEr\ZXGLTYPEZSOLARIS_XHDTYPEZSUPPORTED_TYPESZ
REGULAR_TYPESZ	GNU_TYPESZ
PAX_FIELDSZPAX_NAME_FIELDSr�r%r&r(r+Zcalc_chksumsZcopyfileobj�filemodeZEmptyHeaderErrorZTruncatedHeaderErrorZEOFHeaderErrorZInvalidHeaderErrorZSubsequentHeaderErrorZExFileObject�main)�	blacklist)rZcheck__all__r)rr4rrr	�test__all__ws 
zMiscTest.test__all__N)rrrr'r)r,r.r5rrrr	r$7s


r$c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%S)&�CommandLineTestcOs(tjd|�|�\}}}|jtjj�d�S)N�-mr�
)r7r)rZassert_python_okr�r<�lineseprW)r�argsr�rcr|�errrrr	�
tarfilecmd�s
zCommandLineTest.tarfilecmdcGstjd|��S)N�-mr)r>r)rZassert_python_failure)rr:rrr	�tarfilecmd_failure�sz"CommandLineTest.tarfilecmd_failurecCsbtjd�tjd�g}|jtj|�tj|d��*}x"|D]}|j|tjj	|�d�q6WWdQRXdS)Nztokenize_tests.txtz9tokenize_tests-no-coding-cookie-and-utf8-bom-sig-only.txtr�)ry)
r�findfiler�r�rrrgr<r=r�)r�tar_name�files�tfZtardatarrr	�make_simple_tarfile�s
z#CommandLineTest.make_simple_tarfilecCs8x2tD]*}x$dD]}|j||�}|j|d�qWqWdS)N�-t�--testrL)rErF)�testtarnamesr=r0)rrA�optr|rrr	�test_test_command�s

z!CommandLineTest.test_test_commandcCs:x4tD],}x&dD]}|j|d|�}|jd|�qWqWdS)N�-v�	--verbosez-tsis a tar archive.
)rJrK)rGr=rx)rrArHr|rrr	�test_test_command_verbose�s

z)CommandLineTest.test_test_command_verbosec Cs�tjd�}|jd|�\}}}|jd|�|j|d�|j|d�x�tD]�}|j|d���t|d��}|j�}WdQRXzVtt	d��}|j
|dd	��WdQRX|jdt	�\}}}|j|d�|j|d�Wdtjt	�XWdQRXqFWdS)
Nz
zipdir.zipz-ts is not a tar archive.rLrI)rArHr�i�)rr@r?rxr0rGZsubTestrr/r�r�r�)r�zipnamer;r|r<rAr�rrrr	�test_test_command_invalid_file�s 

z.CommandLineTest.test_test_command_invalid_filecCs�x~tD]v}tj��*}tj|d��}|jdd�WdQRXWdQRX|j�jdd�}x(d	D] }|j||dd�}|j	||�qXWqWdS)
Nr7F)rmrirp�-l�--list)�PYTHONIOENCODING)rOrP)
rGr�captured_stdoutrrrFrwrWr=r0)rrAr�rC�expectedrHr|rrr	�test_list_command�s

 
z!CommandLineTest.test_list_commandcCs�x�tD]x}tj��*}tj|d��}|jdd�WdQRXWdQRX|j�jdd�}x*d
D]"}|j|d|dd	�}|j	||�qXWqWdS)Nr7T)rmrirp�-v�	--verbosez-l)rQ)rUrV)
rGrrRrrrFrwrWr=r0)rrAr�rCrSrHr|rrr	�test_list_command_verbose�s

 

z)CommandLineTest.test_list_command_verbosecCsDtjd�}|jd|�\}}}|jd|�|j|d�|j|d�dS)Nz
zipdir.zipz-ls is not a tar archive.rLrI)rr@r?rxr0)rrMr;r|r<rrr	�test_list_command_invalid_file�s

z.CommandLineTest.test_list_command_invalid_filecCsttjd�tjd�g}xZdD]R}z@|j|tf|��}|j|d�tjt��}|j�WdQRXWdtjt�XqWdS)Nztokenize_tests.txtz9tokenize_tests-no-coding-cookie-and-utf8-bom-sig-only.txt�-c�--createrL)rYrZ)	rr@r=r�r0rrr�r�)rrBrHr|r(rrr	�test_create_command�s
z#CommandLineTest.test_create_commandcCsvtjd�tjd�g}x\dD]T}zB|j|dtf|��}|jd|�tjt��}|j�WdQRXWdtjt�XqWdS)Nztokenize_tests.txtz9tokenize_tests-no-coding-cookie-and-utf8-bom-sig-only.txt�-v�	--verbosez-cs file created.)r\r])	rr@r=r�rxrrr�r�)rrBrHr|r(rrr	�test_create_command_verbose�s
z+CommandLineTest.test_create_command_verbosecCs^tjd�g}z@|jdtf|��}|j|d�tjt��}|j�WdQRXWdtjt�XdS)Nztokenize_tests.txtz-crL)	rr@r=�dotlessnamer0rrr�r�)rrBr|r(rrr	�$test_create_command_dotless_filename�sz4CommandLineTest.test_create_command_dotless_filenamecCsltjjtd�}tjd�g}z@|jd|f|��}|j|d�tj	|��}|j
�WdQRXWdtj|�XdS)Nz.testtarztokenize_tests.txtz-crL)r<r=r>r;rr@r=r0rrr�r�)rrArBr|r(rrr	�(test_create_command_dot_started_filename�sz8CommandLineTest.test_create_command_dot_started_filenamecCs�tjd�tjd�g}xjtttfD]\}|js,q zBtd|j}|jd|f|��}|j	|��}|j
�WdQRXWdtj|�Xq WdS)Nztokenize_tests.txtz9tokenize_tests-no-coding-cookie-and-utf8-bom-sig-only.txtr�z-c)rr@rrr#rr�rr=rr�r�)rrBZfiletyperAr|r(rrr	�test_create_command_compressed		sz.CommandLineTest.test_create_command_compressedcCs\|jt�xLdD]D}z2tjt��|j|t�}WdQRX|j|d�Wdtjt�XqWdS)N�-e�	--extractrL)rcrd)rDr�r�temp_cwd�	tarextdirr=r0r�)rrHr|rrr	�test_extract_command	s

z$CommandLineTest.test_extract_commandcCs^|jt�xNdD]F}z4tjt��|j|dt�}WdQRX|jd|�Wdtjt�XqWdS)N�-v�	--verbosez-es file is extracted.)rhri)rDr�rrerfr=rxr�)rrHr|rrr	�test_extract_command_verbose"	s

z,CommandLineTest.test_extract_command_verbosecCsP|jt�z4tjt��|jdtd�}WdQRX|j|d�Wdtjt�XdS)Nz-eZspamdirrL)rDr�rrerfr=r0r�)rr|rrr	�(test_extract_command_different_directory,	s
z8CommandLineTest.test_extract_command_different_directoryc
CsZtjd�}tjt��|jd|�\}}}WdQRX|jd|�|j|d�|j|d�dS)Nz
zipdir.zipz-es is not a tar archive.rLrI)rr@rerfr?rxr0)rrMr;r|r<rrr	�!test_extract_command_invalid_file5	s
z1CommandLineTest.test_extract_command_invalid_fileN)rrrr=r?rDrIrLrNrTrWrXr[r^r`rarbrgrjrkrlrrrr	r6�s$	




	r6c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�ContextManagerTestc
Cs6tjt��}|j|jd�WdQRX|j|jd�dS)Nzclosed inside runtime contextzcontext manager failed)rrrr^r�r�)rr(rrr	�
test_basic@	szContextManagerTest.test_basiccCs<tjt�}|j�|jt��|�WdQRXWdQRXdS)N)rrrr*r�r�)rr(rrr	�test_closedE	s

zContextManagerTest.test_closedcCsR|jt�� }tjt��
}t�WdQRXWdQRX|j|jtd�|j|j	d�dS)Nz)wrong exception raised in context managerzcontext manager failed)
r��	Exceptionrrrr�r�Z	exceptionr�r�)rr�r(rrr	�test_exceptionN	s
z!ContextManagerTest.test_exceptioncCsVy tjtd��
}t�WdQRXWnYnX|jtjjt�dd�|j|j	d�dS)Nr�rz-context manager wrote an end-of-archive blockzcontext manager failed)
rrr�rpr0r<r=rhr�r�)rr(rrr	�test_no_eofW	szContextManagerTest.test_no_eofcCs2tjtd��WdQRX|jtjjt�dd�dS)Nr�rz-context manager wrote no end-of-archive block)rrr�r@r<r=rh)rrrr	�test_eofc	s
zContextManagerTest.test_eofcCsfttd��R}y"tj|dd��
}t�WdQRXWnYnX|j|jd�|j|jd�WdQRXdS)Nr�r�)r�rzexternal file object was closedzcontext manager failed)rr�rrpr^r�r�)rr5r(rrr	rk	szContextManagerTest.test_fileobjN)	rrrrnrorqrrrsrrrrr	rm>	s		rmzrequires os.link to be missingc@s�eZdZdd�Zejeejd�d�dd��Z	ejeejd�d�dd��Z
ejeed	�d
�dd��Zejeed	�d
�d
d��ZdS)�LinkEmulationTestc
CsJ|jj|t�ttjjt|�d��}|j�}WdQRX|jt	|�t
�dS)NrH)r(r:r;rr<r=r>r/r0r
r3)rr[r�rrrr	�_test_link_extraction~	sz'LinkEmulationTest._test_link_extraction�islinkz3Skip emulation - has os.path.islink but not os.linkcCs|jd�dS)Nz
ustar/lnktype)ru)rrrr	�test_hardlink_extraction1�	sz+LinkEmulationTest.test_hardlink_extraction1cCs|jd�dS)Nz./ustar/linktest2/lnktype)ru)rrrr	�test_hardlink_extraction2�	sz+LinkEmulationTest.test_hardlink_extraction2rrz Skip emulation if symlink existscCs|jd�dS)Nz
ustar/symtype)ru)rrrr	�test_symlink_extraction1�	sz*LinkEmulationTest.test_symlink_extraction1cCs|jd�dS)Nz./ustar/linktest2/symtype)ru)rrrr	�test_symlink_extraction2�	sz*LinkEmulationTest.test_symlink_extraction2N)
rrrrur��skipIfr�r<r=rwrxryrzrrrr	rtx	srtc@s$eZdZdd�Zdd�Zdd�ZdS)�Bz2PartialReadTestcs~G�fdd�dtj��tjtjd�j��}xNtt|�d�D]:}ytj	�|d|��|d�Wq<tj
k
rtYq<Xq<WdS)Ncs0eZdZdZ��fdd�Z��fdd�Z�ZS)z9Bz2PartialReadTest._test_partial_input.<locals>.MyBytesIOFcs4|jrtd��|j�t|j��k|_t�|�j|�S)Nz(infinite loop detected in tarfile.open())�hit_eof�AssertionErrorrNr1rw�superr/)rr�)�	MyBytesIO�	__class__rr	r/�	sz>Bz2PartialReadTest._test_partial_input.<locals>.MyBytesIO.readcsd|_t�|�j|�S)NF)r}rrM)rr:)r�r�rr	rM�	sz>Bz2PartialReadTest._test_partial_input.<locals>.MyBytesIO.seek)rrrr}r/rM�
__classcell__r)r�)r�r	r��	sr�r�rI)r�r)rrsr �compressrr�r��ranger1rr�)rrrr�r)r�r	�_test_partial_input�	sz&Bz2PartialReadTest._test_partial_inputcCs|jd�dS)Nr7)r�)rrrr	�test_partial_input�	sz%Bz2PartialReadTest.test_partial_inputcCs|jd�dS)Nzr:bz2)r�)rrrr	�test_partial_input_bz2�	sz)Bz2PartialReadTest.test_partial_input_bz2N)rrrr�r�r�rrrr	r|�	sr|cCsZyddl}ddl}Wntk
r(dSX|jd�ddkr@dS|jd�ddkrVdSdS)NrF�rootT)r1r0�ImportError�getpwuidZgetgrgid)r1r0rrr	�root_is_uid_gid_0�	sr��chownzmissing os.chown�geteuidzmissing os.geteuidc@s�eZdZedd��Zeedd���Zejj	d�ejj	d�ejj	d�dd	����Z
ejj	d�ejj	d�ejj	d�d
d����Zeje
�d�ejj	d�ejj	d�ejj	d�d
d�����Zejj	d�dd��ZdS)�NumericOwnerTestc
Cs�tjd�}|ddtj|f|ddtjdf|ddtj|fg}tjtd��R}xJ|D]B\}}}}	}
tj|�}||_||_	d	|_
d	|_|	|_|j
||
�qLWWdQRXtS)
Nscontent�c�b�M�L�X�Wr�r�)rrsrr�r�rr�r�rrr�rr�r�)�
filename_1�	dirname_1�
filename_2r5r�tarflr[rr�typ�contentsr�rrr	�_make_test_archive�	s

z#NumericOwnerTest._make_test_archiveccsZd|_d}d}|}|}tjj||�}tj|||�}tj|��}||||fVWdQRXdS)Nrznumeric-owner-testfiler�)Zreturn_valuer<r=r>r�r�rr)�mock_geteuidZfname�dirnamer�r�r�Ztar_filenamer�rrr	�_setup_test�	szNumericOwnerTest._setup_testzos.chownzos.chmodz
os.geteuidc

Cs�|j|��.\}}}}|j|tdd�|j|tdd�WdQRXtjjt|�}tjjt|�}	|jtjj	|dd�tjj	|	dd�gdd�dS)NT)�
numeric_ownerr�r�r�r�)�	any_order)
r�r:r;r<r=r>�assert_has_callsr��mock�call)
rr��
mock_chmod�
mock_chownr�r��_r��f_filename_1�f_filename_2rrr	�test_extract_with_numeric_owner�	sz0NumericOwnerTest.test_extract_with_numeric_ownercCs�|j|��\}}}}|jtdd�WdQRXtjjt|�}tjjt|�}	tjjt|�}
|jtjj	|dd�tjj	|	dd�tjj	|
dd�gdd	�dS)
NT)r�r�r�r�r�r�r�)r�)
r�r�r;r<r=r>r�r�r�r�)rr�r�r�r�r�r�r�r�Zf_dirname_1r�rrr	�"test_extractall_with_numeric_owner
sz3NumericOwnerTest.test_extractall_with_numeric_ownerz uid=0,gid=0 must be named "root"cCsN|j|��\}}}}|j|tdd�WdQRXtjjt|�}|j|dd�dS)NF)r�r)r�r:r;r<r=r>Zassert_called_with)rr�r�r�r�r�r�r�rrr	�"test_extract_without_numeric_owner'
sz3NumericOwnerTest.test_extract_without_numeric_ownercCs8|j|��$\}}}}|jt|j|tdd�WdQRXdS)NFT)r�r�r�r:r;)rr�r�r�r�rrr	�test_keyword_only6
sz"NumericOwnerTest.test_keyword_onlyN)rrrrTr�rr�r�r�Zpatchr�r�r�r�r�r�rrrr	r��	s	





r�cCs�tjt�tjt�tgattd��}|j�}WdQRXxTt	t
tfD]F}|jrDtj|j�tj|j�|j|jd��}|j
|�WdQRXqDWdS)NrHr�)rr�r;r<�makedirsrrGrr/rrr#�appendr�)r5r�cr(rrr	�setUpModule=
s

r�cCstjjt�rtjt�dS)N)r<r=r�r;rr�rrrr	�tearDownModuleN
sr��__main__)qrur<rZhashlibr�
contextlibrZrandomrr�r�Z
unittest.mockrr�rZtest.supportrrr�r r%r
r=r�ZTESTFNr;rfr@rr>rr!r$r�r_r3r1rZ
requires_gziprZrequires_bz2rZ
requires_lzmar#r&ZTestCaser,rerfrgrhr�r�r�r�r�r�r�r�rrrrr
rrrrrr<rHrUr]rcr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrr$r6rmr{rtr|r�r�r�r�rr3rrrr	�<module>s�




~PP|=(a*6,;&RZ
'TQO@;S5:!v


Youez - 2016 - github.com/yon3zu
LinuXploit