a
    ¼3jš ã                   @   s¸  d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dl	Z	d dl
Z
d dlZ
d dlZd dlmZ d dlmZ zd dlZW n ey–   dZY n0 zd dlZW n eyº   dZY n0 zd dlZW n eyÞ   dZY n0 zd dlZW n ey   dZY n0 dd„ Zej ej¡d	 Zed
 Ze d¡Zej ed¡Zej ed¡Z ej ed¡Z!ej ed¡Z"ej ed¡Z#dZ$dZ%G dd„ dƒZ&e '¡ G dd„ dƒƒZ(e )¡ G dd„ dƒƒZ*e +¡ G dd„ dƒƒZ,G dd„ de&ƒZ-G dd„ de-e
j.ƒZ/G dd „ d e(e/ƒZ0G d!d"„ d"e*e/ƒZ1G d#d$„ d$e,e/ƒZ2G d%d&„ d&e-e
j.ƒZ3G d'd(„ d(e(e3ƒZ4G d)d*„ d*e*e3ƒZ5G d+d,„ d,e,e3ƒZ6G d-d.„ d.e-ƒZ7G d/d0„ d0e7ƒZ8G d1d2„ d2e8e
j.ƒZ9G d3d4„ d4e(e8e
j.ƒZ:G d5d6„ d6e*e8e
j.ƒZ;G d7d8„ d8e,e8e
j.ƒZ<G d9d:„ d:e7e
j.ƒZ=G d;d<„ d<e(e=ƒZ>G d=d>„ d>e*e=ƒZ?G d?d@„ d@e,e=ƒZ@G dAdB„ dBe&e
j.ƒZAG dCdD„ dDe(eAƒZBG dEdF„ dFe*eAƒZCG dGdH„ dHe,eAƒZDG dIdJ„ dJe-e
j.ƒZEG dKdL„ dLƒZFG dMdN„ dNeFe-e
j.ƒZGG dOdP„ dPeFe-e
j.ƒZHG dQdR„ dRe&ƒZIG dSdT„ dTeIe
j.ƒZJG dUdV„ dVe(eJƒZKG dWdX„ dXe*eJƒZLG dYdZ„ dZe,eJƒZMG d[d\„ d\eIe
j.ƒZNG d]d^„ d^e(eNƒZOG d_d`„ d`e*eNƒZPG dadb„ dbe,eNƒZQG dcdd„ dde
j.ƒZRG dedf„ dfeIe
j.ƒZSG dgdh„ dheIe
j.ƒZTG didj„ dje(eTƒZUG dkdl„ dle*eTƒZVG dmdn„ dne,eTƒZWG dodp„ dpeTƒZXe
 YeZedqƒdr¡G dsdt„ dte
j.ƒƒZ[G dudv„ dveRƒZ\G dwdx„ dxƒZ]G dydz„ dze]e
j.ƒZ^G d{d|„ d|e]e
j.ƒZ_G d}d~„ d~e]e
j.ƒZ`G dd€„ d€ƒZaG dd‚„ d‚eae
j.ƒZbG dƒd„„ d„e(eae
j.ƒZcG d…d†„ d†e*eae
j.ƒZdG d‡dˆ„ dˆe,eae
j.ƒZeG d‰dŠ„ dŠe
j.ƒZfG d‹dŒ„ dŒe
j.ƒZgG ddŽ„ dŽe
j.ƒZhG dd„ de
j.ƒZie
 jeZedqƒd‘¡G d’d“„ d“e-e
j.ƒƒZkG d”d•„ d•e*e
j.ƒZld–d—„ Zme
 YeZed˜ƒd™¡e
 YeZedšƒd›¡G dœd„ de
j.ƒƒƒZndždŸ„ Zod d¡„ Zpeqd¢kr´e
 r¡  dS )£é    N)Úsha256)Úcontextmanager)ÚRandom)Úsupport)Úscript_helperc                 C   s   t | ƒ ¡ S ©N)r   Ú	hexdigest)Údata© r
   úM/www/server/python_manager/versions/3.9.10/lib/python3.9/test/test_tarfile.pyÚ	sha256sum"   s    r   z-tardirz-extract-testztesttar.tarztesttar.tar.gzztesttar.tar.bz2ztesttar.tar.xzztmp.tarZtesttarZ@e09e4bc8b3c9d9177e77256353b36c159f5f040531bbd4b024a8f9b9196c71ceZ@4f05a776071146756345ceee937b33fc5644f5a96b9780d1c7d6a32cdf164d7bc                   @   s.   e Zd ZeZdZejZej	j
Z
edd„ ƒZdS )ÚTarTestÚ c                 C   s   | j | j S r   )ÚprefixÚsuffix©Úselfr
   r
   r   Úmode<   s    zTarTest.modeN)Ú__name__Ú
__module__Ú__qualname__Útarnamer   ÚioÚFileIOÚopenÚtarfileÚTarFileÚtaropenÚpropertyr   r
   r
   r
   r   r   6   s   r   c                   @   s*   e Zd ZeZdZerejndZe	j
jZdS )ÚGzipTestÚgzN)r   r   r   Úgzipnamer   r   ÚgzipZGzipFiler   r   r   Zgzopenr   r
   r
   r
   r   r   @   s   r   c                   @   s*   e Zd ZeZdZerejndZe	j
jZdS )ÚBz2TestÚbz2N)r   r   r   Úbz2namer   r   r$   ÚBZ2Filer   r   r   Zbz2openr   r
   r
   r
   r   r#   G   s   r#   c                   @   s*   e Zd ZeZdZerejndZe	j
jZdS )ÚLzmaTestÚxzN)r   r   r   Úxznamer   r   ÚlzmaÚLZMAFiler   r   r   Zxzopenr   r
   r
   r
   r   r'   N   s   r'   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚReadTestúr:c                 C   s   t j| j| jdd| _d S )Nú	iso8859-1©r   Úencoding©r   r   r   r   Útarr   r
   r
   r   ÚsetUpZ   s    ÿzReadTest.setUpc                 C   s   | j  ¡  d S r   )r2   Úcloser   r
   r
   r   ÚtearDown^   s    zReadTest.tearDownN)r   r   r   r   r3   r5   r
   r
   r
   r   r,   V   s   r,   c                   @   sd   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚUstarReadTestc                 C   sj   | j  d¡}| j  |¡>}| ¡ }|  t|ƒ|jd¡ |  t|ƒtd¡ W d   ƒ n1 s\0    Y  d S )Núustar/regtypeúregular file extraction failed)	r2   Ú	getmemberÚextractfileÚreadÚassertEqualÚlenÚsizer   Úsha256_regtype©r   ÚtarinfoÚfobjr	   r
   r
   r   Útest_fileobj_regular_filed   s    ÿÿz'UstarReadTest.test_fileobj_regular_filec                 C   sÊ   | j  dt¡ | j  d¡}ttj td¡dƒ}| ¡ }W d   ƒ n1 sL0    Y  | j  	|¡T}t
 |¡}| ¡ }|  ||d¡ |  t|ƒdd¡ |  |d dd¡ W d   ƒ n1 s¼0    Y  d S )Nr7   Úrzfileobj.readlines() failedér   éS   zOI will gladly admit that Python is not the fastest running scripting language.
)r2   ÚextractÚTEMPDIRr9   r   ÚosÚpathÚjoinÚ	readlinesr:   r   ÚTextIOWrapperr<   r=   )r   rA   Úfobj1Úlines1rB   Úfobj2Úlines2r
   r
   r   Útest_fileobj_readlinesm   s"    &
ÿÿ
ýz$UstarReadTest.test_fileobj_readlinesc                 C   s¢   | j  dt¡ | j  d¡}ttj td¡dƒ}| ¡ }W d   ƒ n1 sL0    Y  | j  	|¡,}t
t |¡ƒ}|  ||d¡ W d   ƒ n1 s”0    Y  d S )Nr7   rD   zfileobj.__iter__() failed)r2   rG   rH   r9   r   rI   rJ   rK   rL   r:   Úlistr   rM   r<   )r   rA   rN   rO   rP   rQ   r
   r
   r   Útest_fileobj_iter   s    &ÿzUstarReadTest.test_fileobj_iterc           	      C   s*  | j  dt¡ ttj td¡dƒ}| ¡ }W d   ƒ n1 s@0    Y  | j  d¡}| j  	|¡°}| ¡ }| 
d¡ |  d| ¡ d¡ | 
dd¡ |  d| ¡ d¡ | 
dd¡ |  d	| ¡ d
¡ | 
d	d¡ |  d| ¡ d¡ | d¡}|  ||dd… d¡ | 
dd¡ |  |j| ¡ d¡ |  | ¡ dd¡ | 
|j d¡ |  d| ¡ d¡ | 
d¡ | ¡ }| 
d¡ | ¡ }|  ||d¡ | 
d¡ |  t| ¡ ƒ| ¡ d¡ | 
d¡ |  t| ¡ ƒd | ¡ d¡ | 
d¡ | ¡ }|  | ¡ |t|ƒd … d¡ W d   ƒ n1 s0    Y  d S )Nr7   Úrbr   zseek() to file's start failedi   z"seek() to absolute position failedi üÿÿé   é   z+seek() to negative relative position failedz+seek() to positive relative position failedé
   i
  zread() after seek failedé   zseek() to file's end failedó    z0read() at file's end did not return empty stringz$relative seek() to file's end failedé   zreadlines() after seek failedztell() after readline() failedz)tell() after seek() and readline() failedzread() after readline() failed)r2   rG   rH   r   rI   rJ   rK   r;   r9   r:   Úseekr<   Útellr>   rL   r=   Úreadline)	r   rB   r	   rA   ÚtextÚsÚs1Ús2Úliner
   r
   r   Útest_fileobj_seek‰   sr    &
ÿÿÿÿ
ÿÿÿÿ

ÿ
ÿ
ÿ
ÿzUstarReadTest.test_fileobj_seekc              	   C   s„   | j  d¡d}t |¡}| ¡  d¡}|  t|ƒt¡ z| 	d¡ W n t
y`   |  d¡ Y n0 W d   ƒ n1 sv0    Y  d S )Nr7   r.   éd   zseeking failed in text mode)r2   r:   r   rM   r;   Úencoder<   r   r?   r\   ÚAttributeErrorÚfail©r   rB   r	   r
   r
   r   Útest_fileobj_text¹   s    
zUstarReadTest.test_fileobj_textc              	   C   sl   | j  |¡L}| j  |¡ }|  |j|j¡ W d   ƒ n1 s@0    Y  W d   ƒ n1 s^0    Y  d S r   )r2   r:   r<   Úname)r   ZlnktypeÚregtypeÚaÚbr
   r
   r   Ú_test_fileobj_linkÈ   s
    
ÿz UstarReadTest._test_fileobj_linkc                 C   s   |   dd¡ d S )Núustar/lnktyper7   ©ro   r   r
   r
   r   Útest_fileobj_link1Í   s    z UstarReadTest.test_fileobj_link1c                 C   s   |   dd¡ d S )Nú./ustar/linktest2/lnktypeúustar/linktest1/regtyperq   r   r
   r
   r   Útest_fileobj_link2Ð   s    ÿz UstarReadTest.test_fileobj_link2c                 C   s   |   dd¡ d S )Núustar/symtyper7   rq   r   r
   r
   r   Útest_fileobj_symlink1Ô   s    z#UstarReadTest.test_fileobj_symlink1c                 C   s   |   dd¡ d S )Nú./ustar/linktest2/symtypert   rq   r   r
   r
   r   Útest_fileobj_symlink2×   s    ÿz#UstarReadTest.test_fileobj_symlink2c                 C   s   |   dd¡ d S )NZsymtype2r7   rq   r   r
   r
   r   Útest_issue14160Û   s    zUstarReadTest.test_issue14160N)r   r   r   rC   rR   rT   rd   rj   ro   rr   ru   rw   ry   rz   r
   r
   r
   r   r6   b   s   	
0r6   c                   @   s   e Zd ZdS )ÚGzipUstarReadTestN©r   r   r   r
   r
   r
   r   r{   Þ   s   r{   c                   @   s   e Zd ZdS )ÚBz2UstarReadTestNr|   r
   r
   r
   r   r}   á   s   r}   c                   @   s   e Zd ZdS )ÚLzmaUstarReadTestNr|   r
   r
   r
   r   r~   ä   s   r~   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚListTestc                 C   s   t j| j| jd| _d S )N©r   r1   r   r
   r
   r   r3   ë   s    zListTest.setUpc                    s@  t jt  ¡ ddd}t td|¡ ˆ jjdd W d   ƒ n1 sF0    Y  | ¡  	¡ }ˆ  
d|¡ ˆ  
d|¡ ˆ  
d	|¡ ˆ  
d
|¡ ˆ  
d|¡ ˆ  
d|¡ ˆ  
d|¡ ˆ  
d|¡ ‡ fdd„}ˆ  
|dƒ|¡ ˆ  
|dƒ|¡ ˆ  
|dƒ|¡ ˆ  
|dƒ|¡ ˆ  
|dƒ|¡ ˆ  |d¡ ˆ  d|¡ ˆ  d|¡ d S )NÚasciiÚ
©ÚnewlineÚstdoutF©Úverboseó   ustar/conttypeó   ustar/regtypes   ustar/lnktypes   ustar/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/lnktypes   ustar/dirtype/s   ustar/dirtype-with-size/c                    s   |   ˆ jjd¡}| dd¡S )NÚsurrogateescaper   Úbackslashreplace)Údecoder2   r0   rf   )rn   r`   r   r
   r   Úconvý   s    z ListTest.test_list.<locals>.convs   ustar/umlauts-ÄÖÜäöüßs'   misc/regtype-hpux-signed-chksum-ÄÖÜäöüßs)   misc/regtype-old-v7-signed-chksum-ÄÖÜäöüßs   pax/bad-pax-äöüs   pax/hdrcharset-äöüs)   ustar/conttype ?\r?\nustar/regtype ?\r?\ns   link tos   ->)r   rM   ÚBytesIOr   Ú	swap_attrÚsysr2   rS   ÚdetachÚgetvalueÚassertInÚassertRegexÚassertNotIn)r   ÚtioÚoutr   r
   r   r   Ú	test_listî   s2    ,
ÿ
ÿzListTest.test_listc                 C   s¨   t jt  ¡ ddd}t td|¡ | jjdd W d   ƒ n1 sF0    Y  | ¡  	¡ }|  
|d¡ |  d|¡ |  d	|¡ |  d
|¡ |  d|¡ |  d|¡ d S )Nr   r‚   rƒ   r…   Tr†   s°   \?rw-r--r-- tarfile/tarfile\s+7011 \d{4}-\d\d-\d\d\s+\d\d:\d\d:\d\d ustar/\w+type ?\r?\n\?rw-r--r-- tarfile/tarfile\s+7011 \d{4}-\d\d-\d\d\s+\d\d:\d\d:\d\d ustar/\w+type ?\r?\ns   ustar/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   rM   rŽ   r   r   r   r2   rS   r‘   r’   r”   r“   )r   r–   r—   r
   r
   r   Útest_list_verbose  s     ,ÿÿÿzListTest.test_list_verbosec                 C   sˆ   t jt  ¡ ddd}dd„ }t td|¡& | jjd|| jƒd W d   ƒ n1 sV0    Y  | ¡  	¡ }|  
d	|¡ |  d
|¡ d S )Nr   r‚   rƒ   c                 s   s"   |   ¡ D ]}d|jv r|V  qd S )NZreg)Ú
getmembersrk   )r2   rA   r
   r
   r   Úmembers-  s    
z+ListTest.test_list_members.<locals>.membersr…   F)r‡   r›   r‰   rˆ   )r   rM   rŽ   r   r   r   r2   rS   r‘   r’   r“   r•   )r   r–   r›   r—   r
   r
   r   Útest_list_members+  s    4zListTest.test_list_membersN)r   r   r   r3   r˜   r™   rœ   r
   r
   r
   r   r   è   s   %r   c                   @   s   e Zd ZdS )ÚGzipListTestNr|   r
   r
   r
   r   r   8  s   r   c                   @   s   e Zd ZdS )ÚBz2ListTestNr|   r
   r
   r
   r   rž   <  s   rž   c                   @   s   e Zd ZdS )ÚLzmaListTestNr|   r
   r
   r
   r   rŸ   @  s   rŸ   c                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚCommonReadTestc                 C   s¤   t tdƒ W d   ƒ n1 s 0    Y  |  t t¡¡ |  t t t¡¡¡ t tdƒ }|  t |¡¡ W d   ƒ n1 s€0    Y  |  t t d¡¡¡ d S )NÚwbrU   s   invalid)	r   ÚtmpnameÚassertFalser   Ú
is_tarfileÚpathlibÚPathr   rŽ   ©r   rB   r
   r
   r   Útest_is_tarfile_erroneousF  s    .z(CommonReadTest.test_is_tarfile_erroneousc              	   C   s°   |   t | j¡¡ |   t t | j¡¡¡ t| jdƒ }|   t |¡¡ W d   ƒ n1 s\0    Y  t| jdƒ*}|   t t | 	¡ ¡¡¡ W d   ƒ n1 s¢0    Y  d S ©NrU   )
Ú
assertTruer   r¤   r   r¥   r¦   r   r   rŽ   r;   r§   r
   r
   r   Útest_is_tarfile_validW  s    .z$CommonReadTest.test_is_tarfile_validc                 C   sœ   t  t| j dd¡¡ W d   ƒ n1 s,0    Y  zVzt  t| j¡}| ¡  W n t jyp   |  d¡ Y n0 |  | 	¡ g ¡ W | 
¡  n
| 
¡  0 d S )NrD   Úwz&tarfile.open() failed on empty archive)r   r   r¢   r   ÚreplaceÚgetnamesÚ	ReadErrorrh   ÚassertListEqualrš   r4   ©r   r2   r
   r
   r   Útest_empty_tarfilef  s    z!CommonReadTest.test_empty_tarfilec                 C   s>   |   td¡ t d| j¡ W d   ƒ n1 s00    Y  d S )NZxxx)ÚassertRaisesRegexÚFileNotFoundErrorr   r   r   r   r
   r
   r   Útest_non_existent_tarfilew  s    z(CommonReadTest.test_non_existent_tarfilec                 C   sV   t tdƒ W d   ƒ n1 s 0    Y  |  tjtj t| j¡ |  tjtj t¡ d S ©Nr¡   )r   r¢   ÚassertRaisesr   r¯   r   r   r
   r
   r   Útest_null_tarfile}  s    z CommonReadTest.test_null_tarfilec              	   C   sÂ   t dƒ d¡}dD ]ª}|  td¡J}| |d ¡ t d¡}t|ƒ|_| | 	¡ ¡ | |¡ W d   ƒ n1 sr0    Y  tjtddd	}z$|  
| ¡ dgd
| ¡ W | ¡  q| ¡  0 qd S )Nr   r[   )ó    ó   ar¬   rW   ÚfoorD   T)r   Zignore_zerosz3ignore_zeros=True should have skipped the %r-blocks)r   Ú	randbytesr   r¢   Úwriter   ÚTarInfor=   r>   Útobufr°   r®   r4   )r   r	   ÚcharrB   rA   r2   r
   r
   r   Útest_ignore_zeros†  s     

(ÿÿz CommonReadTest.test_ignore_zerosc              
   C   s¢  dD ]–}t  td¡2}t  d¡}d|_| |t d¡¡ W d   ƒ n1 sN0    Y  ttdƒ}| |¡ W d   ƒ n1 s‚0    Y  t  t¡H}|  	t j
d¡ |D ]}q¬W d   ƒ n1 sÆ0    Y  W d   ƒ n1 sä0    Y  t  t¡’}| ¡ }|  	t j
d¡ | |t¡ W d   ƒ n1 s40    Y  |  	t j
d¡ | |¡ ¡  W d   ƒ n1 sr0    Y  W d   ƒ q1 s’0    Y  qd S )N)r[   iX  rW   i°  úw:r»   rW   s   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazr+bzunexpected end of data)r   r   r¢   r¾   r>   Úaddfiler   rŽ   Útruncater³   r¯   ÚnextrG   rH   r:   r;   )r   r>   r2   ÚtrB   r
   r
   r   Útest_premature_end_of_archiveœ  s"    

0(>,z,CommonReadTest.test_premature_end_of_archivec              	   C   sb   |   tjd¡@ t t d¡¡}W d   ƒ n1 s60    Y  W d   ƒ n1 sT0    Y  d S )Nz%file could not be opened successfullyzrecursion.tar)r³   r   r¯   r   r   Úfindfiler±   r
   r
   r   Útest_length_zero_header´  s    z&CommonReadTest.test_length_zero_headerN)r   r   r   r¨   r«   r²   rµ   r¸   rÁ   rÇ   rÉ   r
   r
   r
   r   r    D  s   	r    c                   @   sä   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Ze eedƒd¡ejdd „ ƒƒZd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Ze ed-u d.¡d/d0„ ƒZ d-S )1ÚMiscReadTestBasec                 C   s   d S r   r
   r   r
   r
   r   Úrequires_name_attribute¼  s    z(MiscReadTestBase.requires_name_attributec              	   C   sœ   |   ¡  t| jdƒt}|  |jt¡ tj|| jd6}|  |jt¡ |  |jt	j
 |j¡¡ W d   ƒ n1 sp0    Y  W d   ƒ n1 sŽ0    Y  d S ©NrU   ©Úfileobjr   )rË   r   r   ÚassertIsInstancerk   Ústrr   r   r<   rI   rJ   Úabspath©r   rB   r2   r
   r
   r   Útest_no_name_argument¿  s    z&MiscReadTestBase.test_no_name_argumentc                 C   sn   t | jdƒ}| ¡ }W d   ƒ n1 s*0    Y  t |¡}|  tt|d¡ tj || j	d}|  
|j¡ d S )NrU   rk   rÍ   )r   r   r;   r   rŽ   r·   rg   Úgetattrr   r   ÚassertIsNonerk   ©r   rB   r	   r2   r
   r
   r   Útest_no_name_attributeÇ  s    &
z'MiscReadTestBase.test_no_name_attributec                 C   s„   t | jdƒ}| ¡ }W d   ƒ n1 s*0    Y  t |¡}d|_tj || jd}|  |j¡ W d   ƒ n1 sv0    Y  d S )NrU   r   rÍ   )	r   r   r;   r   rŽ   rk   r   r   rÕ   rÖ   r
   r
   r   Útest_empty_name_attributeÏ  s    &
z*MiscReadTestBase.test_empty_name_attributec              	   C   sˆ   t  | jt j¡}t|dƒZ}|  |jt¡ tj|| jd}|  	|j¡ W d   ƒ n1 s\0    Y  W d   ƒ n1 sz0    Y  d S rÌ   )
rI   r   r   ÚO_RDONLYrÏ   rk   Úintr   r   rÕ   )r   ÚfdrB   r2   r
   r
   r   Útest_int_name_attribute×  s
    z(MiscReadTestBase.test_int_name_attributec              	   C   s¦   |   ¡  t | j¡}t|dƒt}|  |jt¡ tj|| j	d6}|  |jt¡ |  
|jtj |j¡¡ W d   ƒ n1 sz0    Y  W d   ƒ n1 s˜0    Y  d S rÌ   )rË   rI   Úfsencoder   r   rÏ   rk   Úbytesr   r   r<   rJ   rÑ   )r   r   rB   r2   r
   r
   r   Útest_bytes_name_attributeà  s    z*MiscReadTestBase.test_bytes_name_attributec              	   C   s‚  t  | j¡}tj|| jd:}|  |jt¡ |  	|jt
j t
 |¡¡¡ W d   ƒ n1 s\0    Y  |  |¡:}|  |jt¡ |  	|jt
j t
 |¡¡¡ W d   ƒ n1 s°0    Y  tjj|| jd:}|  |jt¡ |  	|jt
j t
 |¡¡¡ W d   ƒ n1 s0    Y  | jdkr~tj|dd:}|  |jt¡ |  	|jt
j t
 |¡¡¡ W d   ƒ n1 st0    Y  d S )Nr€   r   rD   )r¥   r¦   r   r   r   r   rÏ   rk   rÐ   r<   rI   rJ   rÑ   Úfspathr   r   r   )r   r   r2   r
   r
   r   Útest_pathlike_nameé  s    ::<z#MiscReadTestBase.test_pathlike_namec                 C   sÖ   t tdƒ W d   ƒ n1 s 0    Y  |  td¡ |  td¡}W d   ƒ n1 sX0    Y  |  td¡ |  td¡}W d   ƒ n1 s0    Y  |  td¡ |  td¡}W d   ƒ n1 sÈ0    Y  d S )Nr¡   zmode must be ÚqÚrwr   )r   r¢   r³   Ú
ValueErrorr   r±   r
   r
   r   Útest_illegal_mode_argù  s    **z&MiscReadTestBase.test_illegal_mode_argc              	   C   s  t j| j| jd}zZ| ¡  | ¡ }|j}|j}| |¡}| ¡ }W d   ƒ n1 sX0    Y  W | 	¡  n
| 	¡  0 |  | j¡‚}| 
|¡ |j| jd|dF}| ¡ }|  |j|¡ | ¡  |  | |¡ ¡ |d¡ W d   ƒ n1 sî0    Y  W d   ƒ n1 s0    Y  d S )Nr€   r-   )r   rÎ   zseek back did not work)r   r   r   r   rÅ   rk   Úoffsetr:   r;   r4   r\   r<   rš   )r   r2   rÆ   rk   ræ   Úfr	   rB   r
   r
   r   Útest_fileobj_with_offset  s$    (
ÿz)MiscReadTestBase.test_fileobj_with_offsetc                 C   s\   |   tjtjt| j¡ ttdƒ(}| j tjtj|| jd W d   ƒ n1 sN0    Y  d S rÌ   )r·   r   r¯   r   r   r   r§   r
   r
   r   Útest_fail_comp  s
    ÿzMiscReadTestBase.test_fail_compc                 C   s"   | j  d¡}|  |jtjd¡ d S )Nzmisc/dirtype-old-v7zv7 dirtype failed)r2   r9   r<   Útyper   ÚDIRTYPE©r   rA   r
   r
   r   Útest_v7_dirtype&  s    ÿz MiscReadTestBase.test_v7_dirtypec                 C   s2   z| j  d¡ W n ty,   |  d¡ Y n0 d S )Nzmisc/regtype-xstarz3failed to find misc/regtype-xstar (mangled prefix?))r2   r9   ÚKeyErrorrh   r   r
   r
   r   Útest_xstar_type.  s    z MiscReadTestBase.test_xstar_typec                 C   sN   | j D ]B}|  t|jƒdd|j ¡ |j d¡s2q|  |jdd|j ¡ qd S )Né½>zwrong mtime for %szustar/r   zwrong uname for %s)r2   r<   rÚ   Úmtimerk   Ú
startswithÚunamerì   r
   r
   r   Útest_check_members7  s    
ÿ
ÿz#MiscReadTestBase.test_check_membersc                 C   s   |   | j ¡ d jdd¡ d S )Néÿÿÿÿzmisc/eofzcould not find all members)r<   r2   rš   rk   r   r
   r
   r   Útest_find_members@  s    ÿz"MiscReadTestBase.test_find_membersÚlinkúMissing hardlink implementationc              	   C   s<  t jtddd}| dt¡ |  tjtj	 
td¡¡ | dt¡ |  tjtj	 
td¡¡ ttj	 
td¡dƒ}| ¡ }W d   ƒ n1 sŽ0    Y  |  t|ƒt¡ | dt¡ |  tjtj	 
td¡¡ ttj	 
td¡dƒ}| ¡ }W d   ƒ n1 sþ0    Y  |  t|ƒt¡ W d   ƒ n1 s.0    Y  d S )NrV   r.   )Ú
errorlevelr0   r7   rp   rU   rv   )r   r   r   rG   rH   Ú
addCleanupr   ÚunlinkrI   rJ   rK   r;   r<   r   r?   )r   r2   rç   r	   r
   r
   r   Útest_extract_hardlinkD  s    &&z&MiscReadTestBase.test_extract_hardlinkc           	   	   C   sî   t jtdd}tj td¡}t |¡ z®dd„ |D ƒ}| ||¡ |D ]x}tj ||j	¡}t
jdkr‚|  |jd@ t |¡jd@ ¡ dd	„ }tj |¡}d
 ||jƒ||ƒ|¡}|  |j||¡ qFW | ¡  t |¡ n| ¡  t |¡ 0 d S )Nr.   ©r0   Ú
extractallc                 S   s   g | ]}|  ¡ r|‘qS r
   ©Úisdir©Ú.0rÆ   r
   r
   r   Ú
<listcomp>`  rZ   z4MiscReadTestBase.test_extractall.<locals>.<listcomp>Úwin32éÿ  c                 S   s(   t | tƒrd | |  ¡ ¡S d | ¡S d S )Nz{} ({})z
{!r} (int))Ú
isinstanceÚfloatÚformatÚhex)rñ   r
   r
   r   Úformat_mtimeh  s    
z6MiscReadTestBase.test_extractall.<locals>.format_mtimez,tar mtime {0} != file time {1} of path {2!a})r   r   r   rI   rJ   rK   rH   Úmkdirrþ   rk   r   Úplatformr<   r   ÚstatÚst_modeÚgetmtimer  rñ   r4   r   Úrmtree)	r   r2   ÚDIRÚdirectoriesrA   rJ   r
  Z
file_mtimeÚerrmsgr
   r
   r   Útest_extractallY  s0    

ÿýÿz MiscReadTestBase.test_extractallc              	   C   sÈ   d}t j td¡}t  |¡ zštjtddn}| |¡}|j	||d t j ||¡}|  
t j |¡|j¡ tjdkrŒ|  
t  |¡jd@ d¡ W d   ƒ n1 s 0    Y  W t |¡ nt |¡ 0 d S )	Núustar/dirtypeZ
extractdirr.   rý   ©rJ   r  r  ií  )rI   rJ   rK   rH   r  r   r   r   r9   rG   r<   r  rñ   r   r  r  r  r   r  ©r   Zdirtyper  r2   rA   Z	extractedr
   r
   r   Útest_extract_directoryw  s    


8z'MiscReadTestBase.test_extract_directoryc              	   C   s®   t  t¡d }t |¡‚ tjtddT}dd„ |D ƒ}| ||¡ |D ]$}||j	 }|  
tj |¡|j¡ qHW d   ƒ n1 s‚0    Y  W d   ƒ n1 s 0    Y  d S )Nrþ   r.   rý   c                 S   s   g | ]}|  ¡ r|‘qS r
   rÿ   r  r
   r
   r   r  Š  rZ   zBMiscReadTestBase.test_extractall_pathlike_name.<locals>.<listcomp>)r¥   r¦   rH   r   Útemp_dirr   r   r   rþ   rk   r<   rI   rJ   r  rñ   )r   r  r2   r  rA   rJ   r
   r
   r   Útest_extractall_pathlike_name†  s    ÿ
z.MiscReadTestBase.test_extractall_pathlike_namec              	   C   s¤   d}t  t¡d }t |¡t tjtddF}| |¡}|j	||d || }|  
tj |¡|j¡ W d   ƒ n1 sx0    Y  W d   ƒ n1 s–0    Y  d S )Nr  rþ   r.   rý   r  )r¥   r¦   rH   r   r  r   r   r   r9   rG   r<   rI   rJ   r  rñ   r  r
   r
   r   Útest_extract_pathlike_name  s    ÿ
z+MiscReadTestBase.test_extract_pathlike_namec              	   C   sª   t j td¡}t|dƒ}| d¡ W d   ƒ n1 s80    Y  zVt tj	¡}z| 
|¡ W n" tjy€   |  |jj¡ Y n0 |  d¡ W t |¡ nt |¡ 0 d S )NÚemptyr¡   rZ   zReadError not raised)rI   rJ   rK   rH   r   r½   ÚobjectÚ__new__r   r   Ú__init__r¯   rª   rÎ   Úclosedrh   r   rû   )r   r  rB   r2   r
   r
   r   Útest_init_close_fobjš  s    (z%MiscReadTestBase.test_init_close_fobjc                 C   sh   t  | j¡H}t||ƒD ],\}}|  |j|j¡ |  | ¡ | ¡ ¡ qW d   ƒ n1 sZ0    Y  d S r   )r   r   r   Úzipr<   ræ   Zget_info)r   r2   Zm1Zm2r
   r
   r   Útest_parallel_iteration­  s    z(MiscReadTestBase.test_parallel_iterationNzrequires zlibc              	   C   sp   t j d¡P}tj|_|  tj¡ t 	| j
¡ W d   ƒ n1 sD0    Y  W d   ƒ n1 sb0    Y  d S )Nztarfile.TarInfo.fromtarfile)ÚunittestÚmockÚpatchÚzlibÚerrorZside_effectr·   r   r¯   r   r   )r   r%  r
   r
   r   Útest_zlib_error_does_not_leakµ  s    z.MiscReadTestBase.test_zlib_error_does_not_leak)!r   r   r   rË   rÓ   r×   rØ   rÜ   rß   rá   rå   rè   ré   rí   rï   rô   rö   r$  Ú
skipUnlessÚhasattrrI   r   Úskip_unless_symlinkrü   r  r  r  r  r!  r#  ÚskipIfr'  r)  r
   r
   r
   r   rÊ   »  s6   		
		ÿ

rÊ   c                   @   s   e Zd ZdZdS )ÚMiscReadTestN)r   r   r   ré   r
   r
   r
   r   r.  ¿  s   r.  c                   @   s   e Zd ZdS )ÚGzipMiscReadTestNr|   r
   r
   r
   r   r/  Â  s   r/  c                   @   s   e Zd Zdd„ ZdS )ÚBz2MiscReadTestc                 C   s   |   d¡ d S )NzBZ2File have no name attribute©ÚskipTestr   r
   r
   r   rË   Æ  s    z'Bz2MiscReadTest.requires_name_attributeN©r   r   r   rË   r
   r
   r
   r   r0  Å  s   r0  c                   @   s   e Zd Zdd„ ZdS )ÚLzmaMiscReadTestc                 C   s   |   d¡ d S )NzLZMAFile have no name attributer1  r   r
   r
   r   rË   Ê  s    z(LzmaMiscReadTest.requires_name_attributeNr3  r
   r
   r
   r   r4  É  s   r4  c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚStreamReadTestúr|c              
   C   s|   | j D ]p}| ¡ sq| j  |¡F}z| d¡}W n tjyN   |  d¡ Y n0 |s"qXq"W d   ƒ q1 sl0    Y  qd S )Nr[   z6simple read-through using TarFile.extractfile() failed)r2   Zisregr:   r;   r   ÚStreamErrorrh   )r   rA   rB   Úbufr
   r
   r   Útest_read_throughÒ  s    
z StreamReadTest.test_read_throughc                 C   sh   | j  ¡ }| j  |¡}| ¡ }W d   ƒ n1 s40    Y  |  t|ƒ|jd¡ |  t|ƒtd¡ d S )Nr8   )	r2   rÅ   r:   r;   r<   r=   r>   r   r?   r@   r
   r
   r   rC   â  s    
&ÿÿz(StreamReadTest.test_fileobj_regular_filec                 C   sN   | j  ¡ }| j  |d ¡ }|  tj|j¡ W d   ƒ n1 s@0    Y  d S )Nr   )r2   rš   r:   r·   r   r7  r;   )r   Ztarinfosrç   r
   r
   r   Útest_provoke_stream_errorë  s    
z(StreamReadTest.test_provoke_stream_errorc                 C   sà   t jtdd}zÂ| j}| ¡ }| ¡ }|d u r0qÆ|  |d¡ | ¡ sL| ¡ r„|  t j	¡ | 
|¡ W d   ƒ q1 sx0    Y  q| 
|¡}| 
|¡}|d u r¢q|  |d¡ |  | ¡ | ¡ d¡ qW | ¡  n
| ¡  0 d S )Nr.   rý   zstream.next() failed.zstream.extractfile() failedzstream extraction failed)r   r   r   r2   rÅ   ÚassertIsNotNoneZislnkZissymr·   r7  r:   r<   r;   r4   )r   Ztar1Ztar2Út1Út2Úv1Úv2r
   r
   r   Útest_compare_membersð  s*    (

ÿz#StreamReadTest.test_compare_membersN)r   r   r   r   r9  rC   r:  r@  r
   r
   r
   r   r5  Î  s
   	r5  c                   @   s   e Zd ZdS )ÚGzipStreamReadTestNr|   r
   r
   r
   r   rA    s   rA  c                   @   s   e Zd ZdS )ÚBz2StreamReadTestNr|   r
   r
   r
   r   rB    s   rB  c                   @   s   e Zd ZdS )ÚLzmaStreamReadTestNr|   r
   r
   r
   r   rC    s   rC  c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚDetectReadTestc              
   C   sL   zt  ||¡}W n. t jy> } z|  ¡  W Y d }~nd }~0 0 | ¡  d S r   )r   r   r¯   rh   r4   )r   rk   r   r2   Úer
   r
   r   Ú_testfunc_file  s
    zDetectReadTest._testfunc_filec              
   C   sz   z>t |dƒ }tj |||d}W d   ƒ n1 s20    Y  W n. tjyl } z|  ¡  W Y d }~nd }~0 0 | ¡  d S )NrU   ©rÎ   )r   r   r¯   rh   r4   )r   rk   r   rç   r2   rE  r
   r
   r   Ú_testfunc_fileobj  s    2z DetectReadTest._testfunc_fileobjc                 C   sJ  | j rþ|  tj¡$ tjtd| j  d W d   ƒ n1 s<0    Y  |  tj¡$ tjtd| j  d W d   ƒ n1 s|0    Y  |  tj¡  tj| jdd W d   ƒ n1 s¸0    Y  |  tj¡  tj| jdd W d   ƒ n1 sô0    Y  || jdƒ || jd| j  ƒ || jdƒ || jd| j  ƒ || jdƒ d S )Nr-   r€   r6  rD   zr:*úr|*)r   r·   r   r¯   r   r   )r   Ztestfuncr
   r
   r   Ú_test_modes'  s    22..zDetectReadTest._test_modesc                 C   s   |   | j¡ d S r   )rJ  rF  r   r
   r
   r   Útest_detect_file7  s    zDetectReadTest.test_detect_filec                 C   s   |   | j¡ d S r   )rJ  rH  r   r
   r
   r   Útest_detect_fileobj:  s    z"DetectReadTest.test_detect_fileobjN)r   r   r   rF  rH  rJ  rK  rL  r
   r
   r
   r   rD    s
   	rD  c                   @   s   e Zd ZdS )ÚGzipDetectReadTestNr|   r
   r
   r
   r   rM  =  s   rM  c                   @   s   e Zd Zdd„ ZdS )ÚBz2DetectReadTestc                 C   s|   t tdƒ}| ¡ }W d   ƒ n1 s(0    Y  tjtddd}| |¡ W d   ƒ n1 sb0    Y  |  td¡ d S )NrU   r¡   rV   ©ÚcompresslevelrI  )r   r   r;   r$   r&   r¢   r½   rF  ri   r
   r
   r   Útest_detect_stream_bz2A  s
    &(z(Bz2DetectReadTest.test_detect_stream_bz2N)r   r   r   rQ  r
   r
   r
   r   rN  @  s   rN  c                   @   s   e Zd ZdS )ÚLzmaDetectReadTestNr|   r
   r
   r
   r   rR  O  s   rR  c                   @   s¦   e Zd Zd(dd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ ZdS ))ÚMemberReadTestNc                 K   s¶   |d urP| j  |¡,}|  t| ¡ ƒ|d|j ¡ W d   ƒ n1 sF0    Y  d|d< d|d< d|d< d|jvr‚d	|d
< d	|d< | ¡ D ]&\}}|  t||ƒ|d||jf ¡ qŠd S )Núwrong sha256sum for %srð   rñ   iè  Úuidre   Úgidzold-v7r   ró   Úgnamezwrong value in %s field of %s)r2   r:   r<   r   r;   rk   ÚitemsrÔ   )r   rA   ÚchksumÚkwargsrç   ÚkÚvr
   r
   r   Ú_test_memberU  s    ÿ"
ÿzMemberReadTest._test_memberc                 C   s    | j  d¡}| j|dtd d S )Nr7   éc  ©r>   rY  ©r2   r9   r]  r?   rì   r
   r
   r   Útest_find_regtypef  s    z MemberReadTest.test_find_regtypec                 C   s    | j  d¡}| j|dtd d S )Nzustar/conttyper^  r_  r`  rì   r
   r
   r   Útest_find_conttypej  s    z!MemberReadTest.test_find_conttypec                 C   s   | j  d¡}| j|dd d S )Nr  r   ©r>   ©r2   r9   r]  rì   r
   r
   r   Útest_find_dirtypen  s    z MemberReadTest.test_find_dirtypec                 C   s   | j  d¡}| j|dd d S )Nzustar/dirtype-with-sizeéÿ   rc  rd  rì   r
   r
   r   Útest_find_dirtype_with_sizer  s    z*MemberReadTest.test_find_dirtype_with_sizec                 C   s    | j  d¡}| j|ddd d S )Nrp   r   r7   ©r>   Úlinknamerd  rì   r
   r
   r   Útest_find_lnktypev  s    z MemberReadTest.test_find_lnktypec                 C   s    | j  d¡}| j|ddd d S )Nrv   r   rl   rh  rd  rì   r
   r
   r   Útest_find_symtypez  s    z MemberReadTest.test_find_symtypec                 C   s"   | j  d¡}| j|dddd d S )Nzustar/blktyper   é   ©r>   ÚdevmajorÚdevminorrd  rì   r
   r
   r   Útest_find_blktype~  s    z MemberReadTest.test_find_blktypec                 C   s"   | j  d¡}| j|dddd d S )Nzustar/chrtyper   rV   rl  rm  rd  rì   r
   r
   r   Útest_find_chrtype‚  s    z MemberReadTest.test_find_chrtypec                 C   s   | j  d¡}| j|dd d S )Nzustar/fifotyper   rc  rd  rì   r
   r
   r   Útest_find_fifotype†  s    z!MemberReadTest.test_find_fifotypec                 C   s    | j  d¡}| j|dtd d S )Nzustar/sparseé P r_  ©r2   r9   r]  Úsha256_sparserì   r
   r
   r   Útest_find_sparseŠ  s    zMemberReadTest.test_find_sparsec                 C   s    | j  d¡}| j|dtd d S )Nú
gnu/sparsers  r_  rt  rì   r
   r
   r   Útest_find_gnusparseŽ  s    z"MemberReadTest.test_find_gnusparsec                 C   s    | j  d¡}| j|dtd d S )Núgnu/sparse-0.0rs  r_  rt  rì   r
   r
   r   Útest_find_gnusparse_00’  s    z%MemberReadTest.test_find_gnusparse_00c                 C   s    | j  d¡}| j|dtd d S )Núgnu/sparse-0.1rs  r_  rt  rì   r
   r
   r   Útest_find_gnusparse_01–  s    z%MemberReadTest.test_find_gnusparse_01c                 C   s    | j  d¡}| j|dtd d S )Núgnu/sparse-1.0rs  r_  rt  rì   r
   r
   r   Útest_find_gnusparse_10š  s    z%MemberReadTest.test_find_gnusparse_10c                 C   s    | j  d¡}| j|dtd d S )Nu   ustar/umlauts-Ã„Ã–ÃœÃ¤Ã¶Ã¼ÃŸr^  r_  r`  rì   r
   r
   r   Útest_find_umlautsž  s    z MemberReadTest.test_find_umlautsc                 C   s   d}|   || j ¡ ¡ d S )Na   ustar/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/1234567/longname)r“   r2   r®   )r   rk   r
   r
   r   Útest_find_ustar_longname£  s    z'MemberReadTest.test_find_ustar_longnamec                 C   s    | j  d¡}| j|dtd d S )Nzmisc/regtype-old-v7r^  r_  r`  rì   r
   r
   r   Útest_find_regtype_oldv7§  s    z&MemberReadTest.test_find_regtype_oldv7c                 C   s@   | j  ¡  tj| j| jdd| _ | j  d¡}| j|dtd d S )Nr.   r/   u   pax/umlauts-Ã„Ã–ÃœÃ¤Ã¶Ã¼ÃŸr^  r_  )	r2   r4   r   r   r   r   r9   r]  r?   rì   r
   r
   r   Útest_find_pax_umlauts«  s    
ÿz$MemberReadTest.test_find_pax_umlauts)N)r   r   r   r]  ra  rb  re  rg  rj  rk  rp  rq  rr  rv  rx  rz  r|  r~  r  r€  r  r‚  r
   r
   r
   r   rS  S  s&   
rS  c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚLongnameTestc                 C   sV   | j d d d }z| j |¡}W n ty>   |  d¡ Y n0 |  |jtjd¡ d S )Nú/áô  123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/Úlongnamezlongname not foundzread longname as dirtype)	Úsubdirr2   r9   rî   rh   ÚassertNotEqualrê   r   rë   )r   r†  rA   r
   r
   r   Útest_read_longname¶  s    ÿzLongnameTest.test_read_longnamec                 C   sf   | j d d d }| j d d d }z| j |¡}W n tyP   |  d¡ Y n0 |  |j|d¡ d S )Nr„  r…  r†  Úlonglinkzlonglink not foundzlinkname wrong)r‡  r2   r9   rî   rh   r<   ri  )r   r†  rŠ  rA   r
   r
   r   Útest_read_longlinkÀ  s    zLongnameTest.test_read_longlinkc                 C   s„   | j d d d }| j |¡}|j}| jj |¡ t | jj d¡¡}|  	t
j¡ t
jd|d W d   ƒ n1 sv0    Y  d S )Nr„  r…  r†  i   zfoo.tar)rk   rÎ   )r‡  r2   r9   ræ   rÎ   r\   r   rŽ   r;   r·   r   r¯   r   )r   r†  rA   ræ   rB   r
   r
   r   Útest_truncated_longnameÉ  s    z$LongnameTest.test_truncated_longnamec                 C   s~   | j d d d }| j |¡j}ttdƒ@}| |¡ tj 	| 
d¡dd¡}|  |j| j¡ W d   ƒ n1 sp0    Y  d S )Nr„  r…  r†  rU   r[   r.   Ústrict)r‡  r2   r9   ræ   r   r   r\   r   r¾   Zfrombufr;   r<   rê   Úlongnametype)r   r†  ræ   rB   rA   r
   r
   r   Útest_header_offsetÒ  s    
ÿzLongnameTest.test_header_offsetN)r   r   r   r‰  r‹  rŒ  r  r
   r
   r
   r   rƒ  ´  s   
		rƒ  c                   @   sJ   e Zd ZdZejZdd„ Zdd„ Zdd„ Z	dd	„ Z
d
d„ Zedd„ ƒZdS )ÚGNUReadTestZgnuc                 C   sŽ   | j  |t¡ tj t|¡}t|dƒ}| ¡ }W d   ƒ n1 sD0    Y  |  t	|ƒt
d| ¡ |  ¡ rŠt |¡}|  |jd |j¡ d S )NrU   rT  r[   )r2   rG   rH   rI   rJ   rK   r   r;   r<   r   ru  Ú_fs_supports_holesr  Z
assertLessÚ	st_blocksÚst_size)r   rk   ÚfilenamerB   r	   r`   r
   r
   r   Ú_test_sparse_fileê  s    &ÿ
zGNUReadTest._test_sparse_filec                 C   s   |   d¡ d S )Nrw  ©r•  r   r
   r
   r   Útest_sparse_file_oldö  s    z GNUReadTest.test_sparse_file_oldc                 C   s   |   d¡ d S )Nry  r–  r   r
   r
   r   Útest_sparse_file_00ù  s    zGNUReadTest.test_sparse_file_00c                 C   s   |   d¡ d S )Nr{  r–  r   r
   r
   r   Útest_sparse_file_01ü  s    zGNUReadTest.test_sparse_file_01c                 C   s   |   d¡ d S )Nr}  r–  r   r
   r
   r   Útest_sparse_file_10ÿ  s    zGNUReadTest.test_sparse_file_10c                  C   sŒ   t j d¡r„tj td¡} t| dƒ,}| d¡ | 	d¡ | 
¡  W d   ƒ n1 sV0    Y  t | ¡}t | ¡ |jd |jk S dS d S )NÚlinuxzsparse-testr¡   i   s   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr[   F)r   r  rò   rI   rJ   rK   rH   r   r\   r½   rÄ   r  r   rû   r’  r“  )rk   rB   r`   r
   r
   r   r‘    s    

&

zGNUReadTest._fs_supports_holesN)r   r   r   r‡  r   ÚGNUTYPE_LONGNAMErŽ  r•  r—  r˜  r™  rš  Ústaticmethodr‘  r
   r
   r
   r   r  Þ  s   	r  c                   @   s&   e Zd ZdZejZdd„ Zdd„ ZdS )ÚPaxReadTestZpaxc                 C   sØ   t jtdd}zº| d¡}|  |jd¡ |  |jd¡ |  |j d¡d¡ | d¡}|  |jd	¡ |  |jd¡ |  |j d¡d¡ | d
¡}|  |jd¡ |  |jd¡ |  |j d¡d¡ W | 	¡  n
| 	¡  0 d S )Nr.   rý   zpax/regtype1r»   ÚbarzVENDOR.umlautsu   Ã„Ã–ÃœÃ¤Ã¶Ã¼ÃŸzpax/regtype2r   zpax/regtype3r   )
r   r   r   r9   r<   ró   rW  Úpax_headersÚgetr4   ©r   r2   rA   r
   r
   r   Útest_pax_global_headers  s*    
ÿ
ÿ
ÿz#PaxReadTest.test_pax_global_headersc                 C   sª   t jtdd}zŒ| d¡}|  |jd¡ |  |jd¡ |  |jd¡ |  |jd¡ |  t	|jƒt
¡ |  t
|jd ƒd¡ |  t
|jd ƒd¡ W | ¡  n
| ¡  0 d S )	Nr.   rý   zpax/regtype4r^  é{   g  €Ç^ÏAZatimeÚctime)r   r   r   r9   r<   r>   rU  rV  rñ   rê   r  r   r4   r¢  r
   r
   r   Útest_pax_number_fields5  s    
z"PaxReadTest.test_pax_number_fieldsN)	r   r   r   r‡  r   ÚXHDTYPErŽ  r£  r¦  r
   r
   r
   r   rž    s   rž  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚWriteTestBasec                 C   sˆ   t  ¡ }tj|| jd }| t d¡¡ W d   ƒ n1 s>0    Y  |  |jd¡ | 	¡ }~t
 ¡  |  |j¡ |  || 	¡ ¡ d S )NrÍ   r»   z#external fileobjs must never closed)r   rŽ   r   r   r   rÃ   r¾   r£   r   r’   r   Ú
gc_collectr<   )r   rB   r2   r	   r
   r
   r   Útest_fileobj_no_closeI  s    .z#WriteTestBase.test_fileobj_no_closec                 C   s¨   t  t| j¡@}t  d¡}t jt j |_| |t	 
d|j ¡¡ W d   ƒ n1 sT0    Y  |  td¡*}|  t| ¡ ƒt jd ¡ W d   ƒ n1 sš0    Y  d S )Nr»   rº   rU   rY   )r   r   r¢   r   r¾   Ú
RECORDSIZEÚ	BLOCKSIZEr>   rÃ   r   rŽ   r<   r=   r;   )r   r2   rÆ   rB   r
   r
   r   Útest_eof_markerU  s    
6zWriteTestBase.test_eof_markerN)r   r   r   rª  r­  r
   r
   r
   r   r¨  E  s   r¨  c                   @   s°   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	e
 eedƒd¡dd„ ƒZejdd„ ƒZdd„ Zdd„ Zd&dd„Zejdd„ ƒZdd„ Zd d!„ Zd"d#„ Zd$d%„ ZdS )'Ú	WriteTestrÂ   c                 C   sz   d}t  t| j¡}z t  |¡}| |¡ W | ¡  n
| ¡  0 t  t¡}z"|  | ¡ d |d¡ W | ¡  n
| ¡  0 d S )NÚd0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789r   z!failed to store 100 char filename)	r   r   r¢   r   r¾   rÃ   r4   r<   r®   )r   rk   r2   rÆ   r
   r
   r   Útest_100_char_nameg  s    

ÿzWriteTest.test_100_char_namec                 C   sŒ   t  t| j¡}zXtj td¡}t|dƒ}| d¡ W d   ƒ n1 sH0    Y  | 	|¡ W | 
¡  n
| 
¡  0 |  tj t¡dd¡ d S )NÚfiler¡   ó   aaar   ztarfile is empty)r   r   r¢   r   rI   rJ   rK   rH   r½   Úaddr4   ZassertGreaterÚgetsize)r   r2   rJ   rB   r
   r
   r   Útest_tar_size{  s    (ÿzWriteTest.test_tar_sizec                 C   sÆ   t  t| j¡}z¨tj td¡}t|dƒ W d   ƒ n1 s>0    Y  | |¡}|  	|j
d¡ t|dƒ}| d¡ W d   ƒ n1 sŠ0    Y  | |¡}|  	|j
d¡ W | ¡  n
| ¡  0 d S )Nr±  r¡   r   r²  rl  )r   r   r¢   r   rI   rJ   rK   rH   Ú
gettarinfor<   r>   r½   r4   )r   r2   rJ   rA   rB   r
   r
   r   Útest_file_size‰  s    
(
zWriteTest.test_file_sizec              	   C   sv   t j td¡}t  |¡ zLt t| j¡}z$| 	|¡}|  
|jd¡ W | ¡  n
| ¡  0 W t |¡ nt |¡ 0 d S )NÚ	directoryr   )rI   rJ   rK   rH   r  r   r   r¢   r   r¶  r<   r>   r4   r   Úrmdir©r   rJ   r2   rA   r
   r
   r   Útest_directory_size™  s    

zWriteTest.test_directory_sizec                 C   sX  t j td¡}t  |¡ tt j |d¡dƒ ¡  tt j |d¡dƒ ¡  zÖt t| j	¡}z†t
j d¡$}ddg|_| |¡ W d   ƒ n1 s0    Y  g }| ¡ D ]}| t j |j¡d ¡ q¦|  |g d¢¡ W | ¡  n
| ¡  0 W t t j |d¡¡ t t j |d¡¡ t |¡ n4t t j |d¡¡ t t j |d¡¡ t |¡ 0 d S )Nr¸  Ú1rm   Ú2z
os.listdirrõ   )r¸  r¼  r½  )rI   rJ   rK   rH   r  r   r4   r   r¢   r   r$  r%  r&  Úreturn_valuer³  rš   ÚappendÚsplitrk   r<   r   rû   r¹  )r   rJ   r2   Zmock_listdirÚpathsÚmr
   r
   r   Útest_ordered_recursion¨  s*    

(þz WriteTest.test_ordered_recursionc              	   C   sº   t  t| j¡˜}t t¡d }t|dƒ}| d¡ W d   ƒ n1 sH0    Y  | |¡}| t	 
|¡¡}|  |jt¡ |  |j|j¡ |  |jd¡ W d   ƒ n1 s¬0    Y  d S )Nr±  r¡   r²  rl  )r   r   r¢   r   r¥   r¦   rH   r½   r¶  rI   rà   rÏ   rk   rÐ   r<   r>   )r   r2   rJ   rB   rA   Ztarinfo2r
   r
   r   Útest_gettarinfo_pathlike_name¾  s    (
z'WriteTest.test_gettarinfo_pathlike_namer÷   rø   c              
   C   s  t j td¡}t j td¡}t|dƒ}| d¡ W d   ƒ n1 sF0    Y  zt  ||¡ W n2 ty’ } z|  d| ¡ W Y d }~n
d }~0 0 z`t	 t
| j¡}z.| |¡ | |¡}|  |jd¡ W | ¡  n
| ¡  0 W t |¡ t |¡ nt |¡ t |¡ 0 d S )Nr÷   Úlink_targetr¡   r²  úos.link(): %sr   )rI   rJ   rK   rH   r   r½   r÷   ÚPermissionErrorr2  r   r¢   r   r¶  r<   r>   r4   r   rû   )r   r÷   ÚtargetrB   rE  r2   rA   r
   r
   r   Útest_link_sizeÉ  s&    ($


ÿ
zWriteTest.test_link_sizec              	   C   sx   t j td¡}t  d|¡ zLt t| j¡}z$| 	|¡}|  
|jd¡ W | ¡  n
| ¡  0 W t |¡ nt |¡ 0 d S )NÚsymlinkrÅ  r   )rI   rJ   rK   rH   rÊ  r   r   r¢   r   r¶  r<   r>   r4   r   rû   rº  r
   r
   r   Útest_symlink_sizeá  s    
zWriteTest.test_symlink_sizec                 C   s¨   t j t¡}t t| j¡}z~|  |j|d¡ | 	|¡ |  | 
¡ g d¡ t t¡ | 	|¡ W d   ƒ n1 sr0    Y  |  | 
¡ g d¡ W | ¡  n
| ¡  0 d S )Nzarchive name must be absolutezadded the archive to itself)rI   rJ   rÑ   r¢   r   r   r   r<   rk   r³  r®   r   Ú
change_cwdrH   r4   )r   Údstnamer2   r
   r
   r   Útest_add_selfï  s     
ÿ
ÿ(ÿzWriteTest.test_add_selfc              	   C   s8  t j td¡}t  |¡ zdD ]}t j ||¡}t |¡ q dd„ }tjt	| j
dd}z|j|d|d W | ¡  n
| ¡  0 |  t¡" | |dd	d |¡ W d   ƒ n1 s²0    Y  t t	d
¡}zF|D ] }|  |jd¡ |  |jd¡ qÎ|  t| ¡ ƒd¡ W | ¡  n
| ¡  0 W t |¡ nt |¡ 0 d S )NÚfilter)r»   rŸ  Zbazc                 S   s&   t j | j¡dkrd S d| _d| _| S )NrŸ  r¤  r»   )rI   rJ   Úbasenamerk   rU  ró   )rA   r
   r
   r   rÏ  	  s
    z%WriteTest.test_filter.<locals>.filterr.   rý   Z	empty_dir)ÚarcnamerÏ  TrD   r¤  r»   rl  )rI   rJ   rK   rH   r  r   Úcreate_empty_filer   r   r¢   r   r³  r4   r·   Ú	TypeErrorr<   rU  ró   r=   rš   r  )r   Útempdirrk   rÏ  r2   rA   r
   r
   r   Útest_filter  s*    
0zWriteTest.test_filterNFc                 C   sÂ   t j td¡}|st |¡ n
t  |¡ t t	| j
¡}z|j||d W | ¡  n
| ¡  0 t t	d¡}z| ¡ }W | ¡  n
| ¡  0 |s˜t |¡ n
t |¡ |  |j|pº| t jd¡¡ d S )Nr»   ©rÑ  rD   r„  )rI   rJ   rK   rH   r   rÒ  r  r   r   r¢   r   r³  r4   rÅ   rû   r¹  r<   rk   r­   Úsep)r   rJ   Zcmp_pathÚdirr»   r2   rÆ   r
   r
   r   Ú_test_pathname)  s     


zWriteTest._test_pathnamec              	   C   s`  t j td¡}t j td¡}t  |¡ zt j |d¡}t j |d¡}t|dƒ}| d¡ W d   ƒ n1 sp0    Y  t  ||¡ t |d¡,}|j	|dd |j	|dd W d   ƒ n1 sÄ0    Y  tj|dd	@}z|j
|d
 W n ty   |  d¡ Y n0 W d   ƒ n1 s$0    Y  W t |¡ t |¡ nt |¡ t |¡ 0 d S )NZtestsymlinksztestsymlinks.tarÚsourcerÊ  r¬   z
something
rÖ  rY   )rù   r  z&extractall failed with symlinked files)rI   rJ   rK   rH   r  r   r½   rÊ  r   r³  rþ   ÚOSErrorrh   r   rû   r  )r   rÔ  ZtemparchiveZsource_fileZtarget_filerç   r2   r
   r
   r   Útest_extractall_symlinksF  s*    
(,2
ÿ
z"WriteTest.test_extractall_symlinksc                 C   s<  |   d¡ |   tj ddd¡¡ |   tj ddd¡¡ |   tj dd¡¡ |   tj ddd¡¡ |   tj dddd¡¡ |   tj dddd¡¡ |   tj dddd¡¡ |   tj dd¡¡ |   tj ddd¡¡ |   tj dddd¡¡ |   tj dddd¡¡ |   dtj tj d ¡ | j dtj tj ddd d S )Nr»   Ú.rŸ  z..T)rØ  )rÙ  rI   rJ   rK   r×  r   r
   r
   r   Útest_pathnames`  s    
zWriteTest.test_pathnamesc                 C   s4   t jdkr|  dd¡ n|  dd¡ |  dd¡ d S )Nr  zC:\foor»   z/fooz///foo)r   r  rÙ  r   r
   r
   r   Útest_abs_pathnamesq  s    
zWriteTest.test_abs_pathnamesc              	   C   s¬   t  t¡Ž t t| j¡}z| d¡ W | ¡  n
| ¡  0 t td¡}z6|D ]$}|j	dkrN|  
|j	 d¡|j	¡ qNW | ¡  n
| ¡  0 W d   ƒ n1 sž0    Y  d S )NrÝ  rD   z./)r   rÌ  rH   r   r   r¢   r   r³  r4   rk   rª   rò   ©r   r2   rÆ   r
   r
   r   Útest_cwdx  s    
zWriteTest.test_cwdc              	      s‚   t ttfD ]r‰ G ‡ fdd„dtjƒ}|ƒ }|  ˆ ¡, tjt| j	|tj
ddid}W d   ƒ n1 sf0    Y  |  |j¡ q
d S )Nc                       s   e Zd ZdZ‡ fdd„ZdS )z8WriteTest.test_open_nonwritable_fileobj.<locals>.BadFileTc                    s   | j rd| _ ˆ ‚d S ©NF)Úfirst©r   r	   ©Úexctyper
   r   r½     s    z>WriteTest.test_open_nonwritable_fileobj.<locals>.BadFile.writeN)r   r   r   rã  r½   r
   rå  r
   r   ÚBadFile‹  s   rç  Znonr  )rÎ   r  r   )rÛ  ÚEOFErrorÚRuntimeErrorr   rŽ   r·   r   r   r¢   r   Ú
PAX_FORMATr£   r   )r   rç  rç   r2   r
   rå  r   Útest_open_nonwritable_fileobj‰  s    þ$z'WriteTest.test_open_nonwritable_fileobj)NF)r   r   r   r   r°  rµ  r·  r»  rÃ  rÄ  r$  r*  r+  rI   rÉ  r   r,  rË  rÎ  rÕ  rÙ  rÜ  rÞ  rß  rá  rë  r
   r
   r
   r   r®  c  s,   ÿ

(

r®  c                   @   s   e Zd ZdS )ÚGzipWriteTestNr|   r
   r
   r
   r   rì  š  s   rì  c                   @   s   e Zd ZdS )ÚBz2WriteTestNr|   r
   r
   r
   r   rí  ž  s   rí  c                   @   s   e Zd ZdS )ÚLzmaWriteTestNr|   r
   r
   r
   r   rî  ¢  s   rî  c                   @   s@   e Zd ZdZdZdd„ Ze ej	dko.e
edƒd¡dd	„ ƒZdS )
ÚStreamWriteTestzw|Nc                 C   s¼   t  t| j¡}| ¡  | jrp|  ¡ }ttdƒ}| ¡ }W d   ƒ n1 sL0    Y  | |¡}|  |j	d¡ n2|  t¡}| ¡ }W d   ƒ n1 s˜0    Y  |  
| d¡t jd¡ d S )NrU   zfound trailing datar¹   zincorrect zero padding)r   r   r¢   r   r4   Údecompressorr;   Ú
decompressr£   Úunused_datar<   Úcountr«  )r   r2   ZdecrB   r	   r
   r
   r   Útest_stream_padding«  s    &
&ÿz#StreamWriteTest.test_stream_paddingr  ÚumaskzMissing umask implementationc              	   C   st   t j t¡rt t¡ t  d¡}zBt t| j	¡}| 
¡  t  t¡jd@ }|  |dd¡ W t  |¡ nt  |¡ 0 d S )Né   r  i¤  zwrong file permissions)rI   rJ   Úexistsr¢   r   rû   rõ  r   r   r   r4   r  r  r<   )r   Zoriginal_umaskr2   r   r
   r
   r   Útest_file_mode»  s    

zStreamWriteTest.test_file_mode)r   r   r   r   rð  rô  r$  r*  r   r  r+  rI   rø  r
   r
   r
   r   rï  ¦  s   ÿrï  c                   @   s   e Zd Zdd„ ZdS )ÚGzipStreamWriteTestc                 C   s(   t  t| j¡ ¡  t t¡jdd}d S )Nzlatin-1rý   )r   r   r¢   r   r4   r¥   r¦   Ú	read_text)r   Úpayloadr
   r
   r   Ú test_source_directory_not_leakedÎ  s    z4GzipStreamWriteTest.test_source_directory_not_leakedN)r   r   r   rü  r
   r
   r
   r   rù  Í  s   rù  c                   @   s   e Zd ZerejndZdS )ÚBz2StreamWriteTestN)r   r   r   r$   ÚBZ2Decompressorrð  r
   r
   r
   r   rý  Ø  s   rý  c                   @   s   e Zd ZerejndZdS )ÚLzmaStreamWriteTestN)r   r   r   r*   ÚLZMADecompressorrð  r
   r
   r
   r   rÿ  Û  s   rÿ  c                   @   sp   e Zd Zdd„ Zddd„Zddd„Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚGNUWriteTestc                 C   s   t |ƒd d }|d S )Nr[   rV   )r=   )r   r`   Zblocksr
   r
   r   Ú_lengthã  s    zGNUWriteTest._lengthNc                 C   sX   d}t |ƒtjkr(|d7 }||  |¡7 }|d urTt |ƒtjkrT|d7 }||  |¡7 }|S )Nr[   )r=   r   ÚLENGTH_NAMEr  ÚLENGTH_LINK)r   rk   r÷   ró  r
   r
   r   Ú
_calc_sizeç  s    zGNUWriteTest._calc_sizec                 C   sÐ   t  |¡}|r||_t j|_t  td¡}z>t j|_| 	|¡ |  
||¡}|j}|  ||d¡ W | ¡  n
| ¡  0 t  t¡}zD| ¡ }|  |d¡ |  |j|jd¡ |  |j|jd¡ W | ¡  n
| ¡  0 d S )Nr¬   z%GNU longname/longlink creation failedzunable to read longname member)r   r¾   ri  ÚLNKTYPErê   r   r¢   Ú
GNU_FORMATr  rÃ   r  ræ   r<   r4   rÅ   r;  rk   )r   rk   r÷   rA   r2   r>  r?  Úmemberr
   r
   r   Ú_testõ  s2    


ÿÿÿzGNUWriteTest._testc                 C   s   |   d¡ d S )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   r
   r
   r   Útest_longname_1023  s    zGNUWriteTest.test_longname_1023c                 C   s   |   d¡ d S )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   r
   r
   r   Útest_longname_1024  s    zGNUWriteTest.test_longname_1024c                 C   s   |   d¡ d S )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   r
   r
   r   Útest_longname_1025  s    zGNUWriteTest.test_longname_1025c                 C   s   |   dd¡ d S )Nrk   áÿ  longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/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   r
   r
   r   Útest_longlink_1023  s    zGNUWriteTest.test_longlink_1023c                 C   s   |   dd¡ d S )Nrk   á   longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/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   r
   r
   r   Útest_longlink_1024  s    zGNUWriteTest.test_longlink_1024c                 C   s   |   dd¡ d S )Nrk   á  longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/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   r
   r
   r   Útest_longlink_1025!  s    zGNUWriteTest.test_longlink_1025c                 C   s   |   dd¡ d S )Nr
  r  r  r   r
   r
   r   Útest_longnamelink_1023$  s    ÿz#GNUWriteTest.test_longnamelink_1023c                 C   s   |   dd¡ d S )Nr  r  r  r   r
   r
   r   Útest_longnamelink_1024(  s    ÿz#GNUWriteTest.test_longnamelink_1024c                 C   s   |   dd¡ d S )Nr  r  r  r   r
   r
   r   Útest_longnamelink_1025,  s    ÿz#GNUWriteTest.test_longnamelink_1025)N)N)r   r   r   r  r  r	  r  r  r  r  r  r  r  r  r  r
   r
   r
   r   r  ß  s   

r  c                   @   s   e Zd ZdZdd„ ZdS )ÚDeviceHeaderTestrÂ   c              	   C   sŠ  t j td¡}t  |¡ z^t t| j¡}zHtj	dd}tj	dd}tj
|_tj|_| |¡ | |¡ W | ¡  n
| ¡  0 t td¡}z | d¡}| d¡}W | ¡  n
| ¡  0 |  |jd¡ |  |jd¡ |  |jd¡ |  |jd¡ ttdƒ}| ¡ }W d   ƒ n1 s0    Y  ||j|j… }	||j|j… }
tdd	ƒ}|  |	| d
¡ |  |
| d¡ W t |¡ nt |¡ 0 d S )NZdevice_header_testZmy_block_device)rk   Zmy_regular_filerD   r   rU   iI  iY  s   0000000 0000000 s                   )rI   rJ   rK   rH   r  r   r   r¢   r   r¾   ÚBLKTYPErê   ÚREGTYPErÃ   r4   r9   r<   rn  ro  r;   ræ   Zoffset_dataÚslicer   r  )r   rÔ  r2   Z	input_blkZ	input_regZ
output_blkZ
output_regZinfiler8  Zbuf_blkZbuf_regZdevice_headersr
   r
   r   Ú*test_headers_written_only_for_device_files5  s:    


(
z;DeviceHeaderTest.test_headers_written_only_for_device_filesN)r   r   r   r   r  r
   r
   r
   r   r  1  s   r  c                   @   sn   e Zd ZdZej ed¡Zdd„ Z	e
dd„ ƒZe
dd„ ƒZd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )Ú
CreateTestzx:Ú
spameggs42c                 C   s   t  t¡ d S r   )r   rû   r¢   r   r
   r
   r   r3   e  s    zCreateTest.setUpc                 C   s:   t | jdƒ}| d¡ W d   ƒ n1 s,0    Y  d S )Nr¡   r²  )r   Ú	file_pathr½   )ÚclsrB   r
   r
   r   Ú
setUpClassh  s    zCreateTest.setUpClassc                 C   s   t  | j¡ d S r   )r   rû   r!  )r"  r
   r
   r   ÚtearDownClassm  s    zCreateTest.tearDownClassc                 C   s   t  t| j¡}| | j¡ W d   ƒ n1 s00    Y  |  t¡}| ¡ }W d   ƒ n1 sb0    Y  |  t	|ƒd¡ |  
d|d ¡ d S ©NrV   r   r   )r   r   r¢   r   r³  r!  r   r®   r<   r=   r“   ©r   ÚtobjÚnamesr
   r
   r   Útest_createq  s    *&zCreateTest.test_createc                 C   sÈ   t  t| j¡}| | j¡ W d   ƒ n1 s00    Y  |  t¡ t  t| j¡}W d   ƒ n1 sh0    Y  |  t¡}| 	¡ }W d   ƒ n1 sš0    Y  |  
t|ƒd¡ |  d|d ¡ d S r%  )r   r   r¢   r   r³  r!  r·   ÚFileExistsErrorr   r®   r<   r=   r“   r&  r
   r
   r   Útest_create_existingz  s    *,&zCreateTest.test_create_existingc                 C   sŽ   |   td¡}| | j¡ W d   ƒ n1 s.0    Y  |   t¡}| ¡ }W d   ƒ n1 s`0    Y  |  t|ƒd¡ |  d|d ¡ d S ©NÚxrV   r   r   )r   r¢   r³  r!  r®   r<   r=   r“   r&  r
   r
   r   Útest_create_taropen†  s    *&zCreateTest.test_create_taropenc              	   C   sä   |   td¡}| | j¡ W d   ƒ n1 s.0    Y  |  t¡< |   td¡ W d   ƒ n1 sf0    Y  W d   ƒ n1 s„0    Y  |   t¡}| ¡ }W d   ƒ n1 s¶0    Y  |  t|ƒd¡ |  	d|d ¡ d S r,  )
r   r¢   r³  r!  r·   r*  r®   r<   r=   r“   r&  r
   r
   r   Útest_create_existing_taropen  s    *<&z'CreateTest.test_create_existing_taropenc                 C   sè   t  t t¡| j¡N}|  |jt¡ |  	|jt
j t¡¡ | t | j¡¡ | ¡ }W d   ƒ n1 sh0    Y  |  	t|ƒd¡ |  d|d ¡ |  t¡}| ¡ }W d   ƒ n1 sº0    Y  |  	t|ƒd¡ |  d|d ¡ d S r%  )r   r   r¥   r¦   r¢   r   rÏ   rk   rÐ   r<   rI   rJ   rÑ   r³  r!  r®   r=   r“   r   r&  r
   r
   r   Útest_create_pathlike_nameœ  s    &&z$CreateTest.test_create_pathlike_namec                 C   sæ   |   t t¡d¡N}|  |jt¡ |  |jtj	 
t¡¡ | t | j¡¡ | ¡ }W d   ƒ n1 sf0    Y  |  t|ƒd¡ |  d|d ¡ |   t¡}| ¡ }W d   ƒ n1 s¸0    Y  |  t|ƒd¡ |  d|d ¡ d S r,  )r   r¥   r¦   r¢   rÏ   rk   rÐ   r<   rI   rJ   rÑ   r³  r!  r®   r=   r“   r&  r
   r
   r   Ú!test_create_taropen_pathlike_nameª  s    &&z,CreateTest.test_create_taropen_pathlike_nameN)r   r   r   r   rI   rJ   rK   rH   r!  r3   Úclassmethodr#  r$  r)  r+  r.  r/  r0  r1  r
   r
   r
   r   r  _  s   

		r  c                   @   s   e Zd Zdd„ ZdS )ÚGzipCreateTestc                 C   sr   t jt| jdd}| | j¡ W d   ƒ n1 s40    Y  t jtddd}W d   ƒ n1 sd0    Y  d S )NrV   rO  zr:gz©r   r   r¢   r   r³  r!  ©r   r'  r
   r
   r   Útest_create_with_compresslevel»  s    *z-GzipCreateTest.test_create_with_compresslevelN©r   r   r   r6  r
   r
   r
   r   r3  ¹  s   r3  c                   @   s   e Zd Zdd„ ZdS )ÚBz2CreateTestc                 C   sr   t jt| jdd}| | j¡ W d   ƒ n1 s40    Y  t jtddd}W d   ƒ n1 sd0    Y  d S )NrV   rO  úr:bz2r4  r5  r
   r
   r   r6  Ä  s    *z,Bz2CreateTest.test_create_with_compresslevelNr7  r
   r
   r
   r   r8  Â  s   r8  c                   @   s   e Zd Zdd„ ZdS )ÚLzmaCreateTestc                 C   sB   t jt| jdd}| | j¡ W d   ƒ n1 s40    Y  d S )NrV   )Úpresetr4  r5  r
   r
   r   Útest_create_with_presetÏ  s    z&LzmaCreateTest.test_create_with_presetN)r   r   r   r<  r
   r
   r
   r   r:  Ë  s   r:  c                   @   s   e Zd ZdZdZdZdS )ÚCreateWithXModeTestr-  N)r   r   r   r   r.  r/  r
   r
   r
   r   r=  Ô  s   r=  r÷   rø   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚHardlinkTestc              
   C   s¾   t j td¡| _t j td¡| _t| jdƒ}| d¡ W d   ƒ n1 sL0    Y  zt  | j| j¡ W n2 t	yœ } z|  
d| ¡ W Y d }~n
d }~0 0 t td¡| _| j | j¡ d S )Nr»   rŸ  r¡   ó   foorÆ  r¬   )rI   rJ   rK   rH   r»   rŸ  r   r½   r÷   rÇ  r2  r   r¢   r2   r³  )r   rB   rE  r
   r
   r   r3   à  s    ($zHardlinkTest.setUpc                 C   s&   | j  ¡  t | j¡ t | j¡ d S r   )r2   r4   r   rû   r»   rŸ  r   r
   r
   r   r5   ï  s    
zHardlinkTest.tearDownc                 C   s$   | j  | j¡}|  |jtjd¡ d S )Nzadd file as regular failed)r2   r¶  r»   r<   rê   r   r  rì   r
   r
   r   Útest_add_twiceô  s    ÿzHardlinkTest.test_add_twicec                 C   s$   | j  | j¡}|  |jtjd¡ d S )Nzadd file as hardlink failed)r2   r¶  rŸ  r<   rê   r   r  rì   r
   r
   r   Útest_add_hardlinkû  s    ÿzHardlinkTest.test_add_hardlinkc                 C   s,   d| j _| j  | j¡}|  |jtjd¡ d S )NTzdereferencing hardlink failed)r2   Zdereferencer¶  rŸ  r<   rê   r   r  rì   r
   r
   r   Útest_dereference_hardlink   s
    ÿz&HardlinkTest.test_dereference_hardlinkN)r   r   r   r3   r5   r@  rA  rB  r
   r
   r
   r   r>  Ü  s
   r>  c                   @   s&   e Zd Zddd„Zdd„ Zdd„ ZdS )	ÚPaxWriteTestNc                 C   s´   t  |¡}|r||_t j|_t jtdt jd}z| |¡ W | 	¡  n
| 	¡  0 t  t¡}zJ|r~| 
¡ d j}|  ||d¡ n| 
¡ d j}|  ||d¡ W | 	¡  n
| 	¡  0 d S )Nr¬   ©r  r   zPAX longlink creation failedzPAX longname creation failed)r   r¾   ri  r  rê   r   r¢   rê  rÃ   r4   rš   r<   rk   )r   rk   r÷   rA   r2   ÚlÚnr
   r
   r   r	  	  s     

zPaxWriteTest._testc              
   C   s  ddddddœ}t jtdt j|d}z| t  d¡¡ W | ¡  n
| ¡  0 t jtd	d
}z¢|  |j|¡ |  | 	¡ d j|¡ |j 
¡ D ]f\}}|  t|ƒt¡ |  t|ƒt¡ |t jv rŠzt j| |ƒ W qŠ ttfyî   |  d¡ Y qŠ0 qŠW | ¡  n
| ¡  0 d S )NrŸ  Ú0z1.23õ   Ã¤Ã¶Ã¼Útest)r»   rU  rñ   rI  rH  r¬   )r  r   r.   rý   r   z"unable to convert pax header field)r   r   r¢   rê  rÃ   r¾   r4   r<   r   rš   rX  ZassertIsNotrê   rÞ   ÚPAX_NUMBER_FIELDSrÓ  rä   rh   )r   r   r2   ÚkeyÚvalr
   r
   r   Útest_pax_global_header!  s2    ûÿ
z#PaxWriteTest.test_pax_global_headerc                 C   sº   dddœ}t jtdt jdd}z0t  ¡ }d|_d|_||_| |¡ W | 	¡  n
| 	¡  0 t jtdd	}zB| 
¡ d
 }|  |j|¡ |  |jd¡ |  |jd¡ W | 	¡  n
| 	¡  0 d S )Nr»   Z123)rJ   rU  r¬   r.   ©r  r0   rH  i   rý   r   r¤  )r   r   r¢   rê  r¾   rk   rU  r   rÃ   r4   rš   r<   )r   r   r2   rÆ   r
   r
   r   Útest_pax_extended_headerA  s$    
ÿz%PaxWriteTest.test_pax_extended_header)N)r   r   r   r	  rM  rO  r
   r
   r
   r   rC    s   
 rC  c                   @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )ÚUnicodeTestc                 C   s   |   d¡ d S )Nr.   ©Ú_test_unicode_filenamer   r
   r
   r   Útest_iso8859_1_filename]  s    z#UnicodeTest.test_iso8859_1_filenamec                 C   s   |   d¡ d S )NÚutf7rQ  r   r
   r
   r   Útest_utf7_filename`  s    zUnicodeTest.test_utf7_filenamec                 C   s   |   d¡ d S )Núutf-8rQ  r   r
   r
   r   Útest_utf8_filenamec  s    zUnicodeTest.test_utf8_filenamec                 C   s‚   t jtd| j|dd}z d}| t  |¡¡ W | ¡  n
| ¡  0 t jt|d}z"|  | ¡ d j	|¡ W | ¡  n
| ¡  0 d S )Nr¬   r  ©r  r0   ÚerrorsrH  rý   r   )
r   r   r¢   r  rÃ   r¾   r4   r<   rš   rk   )r   r0   r2   rk   r
   r
   r   rR  f  s    ÿz"UnicodeTest._test_unicode_filenamec                 C   sl   t jtd| jddd}zFt  ¡ }d|_|  t|j|¡ d|_d|_	|  t|j|¡ W | 
¡  n
| 
¡  0 d S )Nr¬   r   r  rX  rH  r»   )r   r   r¢   r  r¾   rk   r·   ÚUnicodeErrorrÃ   ró   r4   r¢  r
   r
   r   Útest_unicode_filename_erroru  s    ÿz'UnicodeTest.test_unicode_filename_errorc                 C   s€   t jtdddd}z^|D ]L}|  t|jƒt¡ |  t|jƒt¡ |  t|jƒt¡ |  t|j	ƒt¡ qW | 
¡  n
| 
¡  0 d S )NrD   r.   r  ©r0   rY  )r   r   r   ZassertIsrê   rk   rÐ   ri  ró   rW  r4   rà  r
   r
   r   Útest_unicode_argument„  s    ÿz!UnicodeTest.test_unicode_argumentc                 C   sä   t  d¡}d|_d|_t jtd| jdd}z| |¡ W | ¡  n
| ¡  0 t jtdd}zz| 	d¡}|  
|jd¡ |  
|jd¡ | jt jkrÊ| ¡  t jtdd}| 	d¡}|  
|jd¡ |  
|jd¡ W | ¡  n
| ¡  0 d S )	Nr»   rH  r¬   r.   )r   r  r0   rý   r   u	   í³¤í³¶í³¼)r   r¾   ró   rW  r   r¢   r  rÃ   r4   r9   r<   rê  )r   rÆ   r2   r
   r
   r   Útest_uname_unicode  s*    
ÿ

zUnicodeTest.test_uname_unicodeN)
r   r   r   rS  rU  rW  rR  r[  r]  r^  r
   r
   r
   r   rP  [  s   rP  c                   @   sf   e Zd ZejZdd„ Zdd„ Zdd„ Zdd„ Z	d	d
„ Z
dd„ Zddd„Zdd„ Zdd„ Zddd„ZdS )ÚUstarUnicodeTestc                 C   s0   |   d¡ |   dt¡ |   d¡ |   dt¡ d S ©Nr¯  Úe01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890ud   01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567Ã¿ue   012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678Ã¿©Ú_test_ustar_namerä   r   r
   r
   r   Útest_unicode_name1³  s    

z#UstarUnicodeTest.test_unicode_name1c                 C   s   |   d¡ |   dt¡ d S ©Nud   012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345Ã¿Ã¿ue   0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456Ã¿Ã¿rb  r   r
   r
   r   Útest_unicode_name2¹  s    
z#UstarUnicodeTest.test_unicode_name2c                 C   s0   |   d¡ |   dt¡ |   d¡ |   dt¡ d S )Na   01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789a   0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123/40123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u   012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012Ã¿/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u  0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123Ã¿/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789rb  r   r
   r
   r   Útest_unicode_longname1¿  s    

z'UstarUnicodeTest.test_unicode_longname1c                 C   s   |   dt¡ |   dt¡ d S )Nu   01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901Ã¿/20123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u  01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901Ã¿Ã¿/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789rb  r   r
   r
   r   Útest_unicode_longname2Å  s    z'UstarUnicodeTest.test_unicode_longname2c                 C   s&   |   dt¡ |   d¡ |   dt¡ d S )Nu  01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901Ã¿Ã¿/20123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u   01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567Ã¿u  01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678Ã¿rb  r   r
   r
   r   Útest_unicode_longname3É  s    
z'UstarUnicodeTest.test_unicode_longname3c                 C   s   |   d¡ |   dt¡ d S )Nu   01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345Ã¿Ã¿u  01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456Ã¿Ã¿rb  r   r
   r
   r   Útest_unicode_longname4Î  s    
z'UstarUnicodeTest.test_unicode_longname4Nc                 C   sº   t jtd| jdd>}t  |¡}|d u r4| |¡ n|  ||j|¡ W d   ƒ n1 sX0    Y  |d u r¶t jtddd,}|D ]}|  ||j¡  q˜q€W d   ƒ n1 s¬0    Y  d S )Nr¬   rV  rN  rD   rý   )	r   r   r¢   r  r¾   rÃ   r·   r<   rk   ©r   rk   Úexcr2   rÆ   r
   r
   r   rc  Ò  s    
.z!UstarUnicodeTest._test_ustar_namec                 C   s0   |   d¡ |   dt¡ |   d¡ |   dt¡ d S r`  ©Ú_test_ustar_linkrä   r   r
   r
   r   Útest_unicode_link1á  s    

z#UstarUnicodeTest.test_unicode_link1c                 C   s   |   d¡ |   dt¡ d S re  rm  r   r
   r
   r   Útest_unicode_link2ç  s    
z#UstarUnicodeTest.test_unicode_link2c                 C   sÀ   t jtd| jddD}t  d¡}||_|d u r:| |¡ n|  ||j|¡ W d   ƒ n1 s^0    Y  |d u r¼t jtddd,}|D ]}|  ||j¡  qžq†W d   ƒ n1 s²0    Y  d S )Nr¬   rV  rN  r»   rD   rý   )	r   r   r¢   r  r¾   ri  rÃ   r·   r<   rk  r
   r
   r   rn  ë  s    
.z!UstarUnicodeTest._test_ustar_link)N)N)r   r   r   r   ÚUSTAR_FORMATr  rd  rf  rg  rh  ri  rj  rc  ro  rp  rn  r
   r
   r
   r   r_  ¬  s   
r_  c                   @   s   e Zd ZejZdd„ ZdS )ÚGNUUnicodeTestc              
   C   sn   dD ]d\}}t jt|dd<}z| |¡}W n tyH   |  d¡ Y n0 W d   ƒ q1 s^0    Y  qd S )N))rV  u   pax/bad-pax-í³¤í³¶í³¼)r.   u   pax/bad-pax-Ã¤Ã¶Ã¼rŠ   r\  z%unable to read bad GNU tar pax header©r   r   r   r9   rî   rh   ©r   r0   rk   r2   rÆ   r
   r
   r   Útest_bad_pax_headerÿ  s    ÿz"GNUUnicodeTest.test_bad_pax_headerN)r   r   r   r   r  r  ru  r
   r
   r
   r   rr  û  s   rr  c                   @   s   e Zd ZejZdZdd„ ZdS )ÚPAXUnicodeTestNc              
   C   sn   dD ]d\}}t jt|dd<}z| |¡}W n tyH   |  d¡ Y n0 W d   ƒ q1 s^0    Y  qd S )N))rV  u   pax/hdrcharset-í³¤í³¶í³¼)r.   u   pax/hdrcharset-Ã¤Ã¶Ã¼rŠ   r\  z)unable to read POSIX.1-2008 binary headerrs  rt  r
   r
   r   Útest_binary_header  s    ÿz!PAXUnicodeTest.test_binary_header)r   r   r   r   rê  r  r[  rw  r
   r
   r
   r   rv    s   rv  c                   @   s&   e Zd Zdd„ Zd	dd„Zdd„ ZdS )
ÚAppendTestBasec                 C   s$   t | _tj | j¡r t | j¡ d S r   )r¢   r   rI   rJ   r÷  r   rû   r   r
   r
   r   r3   $  s    zAppendTestBase.setUprÂ   c              
   C   s¦   t jtdd„}| d¡}d|_| |¡J}t  | j|¡}| ||¡ W d   ƒ n1 s\0    Y  W d   ƒ n1 sz0    Y  W d   ƒ n1 s˜0    Y  d S )Nr.   rý   r7   r»   )r   r   r   r9   rk   r:   rÃ   )r   r   ÚsrcrÆ   rç   r2   r
   r
   r   Ú_create_testtar)  s    
zAppendTestBase._create_testtarc                 C   s(   |   d| j ¡ |  tjtjtd¡ d S )NrÂ   rm   )rz  r   r·   r   r¯   r   r¢   r   r
   r
   r   Útest_append_compressed1  s    z%AppendTestBase.test_append_compressedN)rÂ   )r   r   r   r3   rz  r{  r
   r
   r
   r   rx  !  s   
rx  c                   @   s‚   e Zd ZdZddd„Zdgdfdd„Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )Ú
AppendTestNc                 C   sF   t j| jd|d }| t  d¡¡ W d   ƒ n1 s80    Y  d S )Nrm   rG  rŸ  )r   r   r   rÃ   r¾   )r   rÎ   r2   r
   r
   r   Ú_add_testfile8  s    zAppendTest._add_testfilerŸ  c                 C   sD   t j| j|d }|  | ¡ |¡ W d   ƒ n1 s60    Y  d S )NrG  )r   r   r   r<   r®   )r   r(  rÎ   r2   r
   r
   r   r	  <  s    zAppendTest._testc                 C   s   |   ¡  |  ¡  d S r   )r}  r	  r   r
   r
   r   Útest_non_existing@  s    zAppendTest.test_non_existingc                 C   s&   t  | jd¡ ¡  |  ¡  |  ¡  d S )NrÂ   )r   r   r   r4   r}  r	  r   r
   r
   r   Ú
test_emptyD  s    zAppendTest.test_emptyc                 C   s.   t  d¡}|  |¡ | d¡ | j|d d S )Ns                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   r   rG  )r   rŽ   r}  r\   r	  r§   r
   r
   r   Útest_empty_fileobjI  s    


zAppendTest.test_empty_fileobjc                 C   sp   |   ¡  t| jdƒ}| ¡ }W d   ƒ n1 s20    Y  t |¡}|  |¡ | d¡ | jddg|d d S )NrU   r   r»   rŸ  )r(  rÎ   )	rz  r   r   r;   r   rŽ   r}  r\   r	  ri   r
   r
   r   Útest_fileobjO  s    &


zAppendTest.test_fileobjc                 C   s$   |   ¡  |  ¡  | jddgd d S )Nr»   rŸ  )r(  )rz  r}  r	  r   r
   r
   r   Útest_existingX  s    zAppendTest.test_existingc                 C   sJ   t | jdƒ}| |¡ W d   ƒ n1 s,0    Y  |  tj| j¡ d S r¶   )r   r   r½   r·   r   r¯   r}  )r   r	   rB   r
   r
   r   Ú_test_error_  s    (zAppendTest._test_errorc                 C   s   |   d¡ d S )NrZ   ©rƒ  r   r
   r
   r   Ú	test_nulld  s    zAppendTest.test_nullc                 C   s   |   d¡ d S )Nó                r„  r   r
   r
   r   Útest_incompleteg  s    zAppendTest.test_incompletec                 C   s   t  d¡ ¡ }|  |¡ d S )Nr»   ©r   r¾   r¿   rƒ  rä  r
   r
   r   Útest_premature_eofj  s    zAppendTest.test_premature_eofc                 C   s    t  d¡ ¡ }|  |d ¡ d S )Nr»   r†  rˆ  rä  r
   r
   r   Útest_trailing_garbagen  s    z AppendTest.test_trailing_garbagec                 C   s   |   d¡ d S )Ns   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar„  r   r
   r
   r   Útest_invalidr  s    zAppendTest.test_invalid)N)r   r   r   r{  r}  r	  r~  r  r€  r  r‚  rƒ  r…  r‡  r‰  rŠ  r‹  r
   r
   r
   r   r|  5  s   
	r|  c                   @   s   e Zd ZdS )ÚGzipAppendTestNr|   r
   r
   r
   r   rŒ  u  s   rŒ  c                   @   s   e Zd ZdS )ÚBz2AppendTestNr|   r
   r
   r
   r   r  x  s   r  c                   @   s   e Zd ZdS )ÚLzmaAppendTestNr|   r
   r
   r
   r   rŽ  {  s   rŽ  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú
LimitsTestc                 C   sÈ   t  d¡}| t j¡ t  d¡}|  t|jt j¡ t  d¡}| t j¡ t  d¡}|  t|jt j¡ t  d¡}|  t|jt j¡ t  d¡}d|_|  t|jt j¡ t  d¡}d|_|  t|jt j¡ d S )	Nr¯  ra  a   123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longnamea   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/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Š  rk   é    )r   r¾   r¿   rq  r·   rä   ri  rU  rì   r
   r
   r   Útest_ustar_limits  s     






zLimitsTest.test_ustar_limitsc                 C   sX   t  d¡}| t j¡ t  d¡}d|_| t j¡ t  d¡}d|_|  t|jt j¡ d S ©Nr  rŠ  rk   l          )r   r¾   r¿   r  ri  rU  r·   rä   rì   r
   r
   r   Útest_gnu_limits   s    


zLimitsTest.test_gnu_limitsc                 C   sR   t  d¡}| t j¡ t  d¡}d|_| t j¡ t  d¡}d|_| t j¡ d S r“  )r   r¾   r¿   rê  ri  rU  rì   r
   r
   r   Útest_pax_limits­  s    


zLimitsTest.test_pax_limitsN)r   r   r   r’  r”  r•  r
   r
   r
   r   r    s   r  c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚMiscTestc                 C   s`   |   t dddd¡d¡ |   t dddd¡d¡ |   t ddd¡d¡ |   t d	dd¡d¡ d S )
Nr»   é   r   r  s   foo     Zfoobarrl  r?  s   foo bar )r<   r   ÚstnÚntsr   r
   r
   r   Útest_char_fields¼  s    ÿÿÿÿzMiscTest.test_char_fieldsc                 C   s¦   |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d	¡d
¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ d S )Nó   0000001 rV   ó   7777777 éÿÿ ó   €       r‘  ó   €   ÿÿÿÿì   ÿÿ ó   ÿÿÿÿÿÿÿÿrõ   ó   ÿÿÿÿÿÿÿœéœÿÿÿó   ÿ       ìüÿÿÿ       r¹   r   s           )r<   r   Úntir   r
   r
   r   Útest_read_number_fieldsÆ  s&    ÿÿÿÿÿz MiscTest.test_read_number_fieldsc                 C   sî   |   t d¡d¡ |   t d¡d¡ |   tjdtjdd¡ |   tjdtjdd	¡ |   tjd
tjdd¡ |   tjdtjdd¡ |   tjdtjdd¡ |   tjdtjdd¡ |   tjdtjdd¡ |   t tjdtjd¡d¡ d S )NrV   r›  r  rœ  r‘  rD  rž  r   rŸ  rõ   r¡  r£  r¢  r¥  r¤  g      YÀg      0Bs   €      gš™™™™™¹¿r   )r<   r   Úitnr  r¦  r   r
   r
   r   Útest_write_number_fieldsÚ  s4    ÿÿÿÿ
ÿþÿÿz!MiscTest.test_write_number_fieldsc                 C   sì   |   t¡  t ddtj¡ W d   ƒ n1 s00    Y  |   t¡  t ddtj¡ W d   ƒ n1 sj0    Y  |   t¡  t ddtj¡ W d   ƒ n1 s¤0    Y  |   t¡  t ddtj¡ W d   ƒ n1 sÞ0    Y  d S )Nrõ   r—  r‘  lýÿÿÿ    é   l        )r·   rä   r   r¨  rq  r  r   r
   r
   r   Útest_number_field_limitsñ  s    ...z!MiscTest.test_number_field_limitsc                 C   s   h d£}t j| t|d d S )N>/   ZFIFOTYPEZCHRTYPEZCONTTYPEÚfilemodeZLENGTH_PREFIXÚcopyfileobjZSubsequentHeaderErrorZPAX_NAME_FIELDSr«  Zcalc_chksumsr¬  Z	GNU_TYPESr§  ZAREGTYPEÚmainZInvalidHeaderErrorZ
PAX_FIELDSrë   Úgrpr˜  ZTruncatedHeaderErrorZSUPPORTED_TYPESr  r  r  r¦  r™  rJ  Z	GNU_MAGICÚpwdÚNULZSOLARIS_XHDTYPEZExFileObjectr  r  ZGNUTYPE_LONGLINKZREGULAR_TYPESZSYMTYPEZPOSIX_MAGICr¨  ÚversionZXGLTYPErœ  ZEmptyHeaderErrorZGNUTYPE_SPARSEZEOFHeaderErrorZsymlink_exception)Ú	blacklist)r   Zcheck__all__r   )r   r³  r
   r
   r   Útest__all__û  s    zMiscTest.test__all__N)r   r   r   rš  r§  r©  r«  r´  r
   r
   r
   r   r–  º  s
   

r–  c                   @   s¤   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'S )(ÚCommandLineTestc                 O   s2   t jddg|¢R i |¤Ž\}}}| tj ¡ d¡S )Nú-mr   ó   
)r   Zassert_python_okr­   rI   Úlineseprf   )r   ÚargsrZ  Úrcr—   Úerrr
   r
   r   Ú
tarfilecmd	  s    ÿzCommandLineTest.tarfilecmdc                 G   s   t jddg|¢R Ž S )Nr¶  r   )r   Zassert_python_failure©r   r¹  r
   r
   r   Útarfilecmd_failure	  s    z"CommandLineTest.tarfilecmd_failurec                 C   sr   t  d¡t  d¡g}|  t j|¡ t |d¡0}|D ]}|j|tj 	|¡d q4W d   ƒ n1 sd0    Y  d S )Nútokenize_tests.txtú9tokenize_tests-no-coding-cookie-and-utf8-bom-sig-only.txtr¬   rÖ  )
r   rÈ   rú   rû   r   r   r³  rI   rJ   rÐ  )r   Útar_nameÚfilesÚtfZtardatar
   r
   r   Úmake_simple_tarfile	  s    ÿz#CommandLineTest.make_simple_tarfilec                 C   s|   |   ¡ \}}}|  |d¡ |  d| ¡ ¡ |  d| ¡ ¡ |  d| ¡ ¡ |   dd¡\}}}|  |d¡ |  | ¡ d¡ d S )NrZ   s   usages   errors   requiredú-lr   )r¾  r<   r“   Úlowerrˆ  Ústrip)r   rº  r—   r»  r
   r
   r   Útest_bad_use!	  s    zCommandLineTest.test_bad_usec                 C   s0   t D ]&}dD ]}|  ||¡}|  |d¡ qqd S )N)ú-tz--testrZ   )Útesttarnamesr¼  r<   ©r   rÁ  Úoptr—   r
   r
   r   Útest_test_command+	  s    z!CommandLineTest.test_test_commandc                 C   s6   t D ],}dD ]"}| j|d|dd}|  d|¡ qqd S )N©z-vz	--verboserÉ  rV  ©ÚPYTHONIOENCODINGs   is a tar archive.
)rÊ  r¼  r“   rË  r
   r
   r   Útest_test_command_verbose1	  s    
ÿz)CommandLineTest.test_test_command_verbosec                 C   s0  t  d¡}|  d|¡\}}}|  d|¡ |  |d¡ |  |d¡ tD ]æ}| j|dÄ t|dƒ}| ¡ }W d   ƒ n1 s~0    Y  zttt	dƒ"}| 
|d d	… ¡ W d   ƒ n1 s¼0    Y  |  dt	¡\}}}|  |d¡ |  |d¡ W t  t	¡ nt  t	¡ 0 W d   ƒ qD1 s 0    Y  qDd S )
Nú
zipdir.ziprÉ  ó    is not a tar archive.rZ   rV   )rÁ  rU   r¡   r  )r   rÈ   r¾  r“   r<   rÊ  ZsubTestr   r;   r¢   r½   rû   )r   Úzipnamerº  r—   r»  rÁ  rç   r	   r
   r
   r   Útest_test_command_invalid_file8	  s     
&0z.CommandLineTest.test_test_command_invalid_filec              
   C   s¤   t D ]š}t ¡ H}t |d¡}|jdd W d   ƒ n1 s@0    Y  W d   ƒ n1 s^0    Y  | ¡  dd¡}dD ] }| j||dd}|  	||¡ q|qd S )NrD   Fr†   r   r‹   )rÅ  z--listrÏ  ©
rÊ  r   Zcaptured_stdoutr   r   rS   r’   rf   r¼  r<   ©r   rÁ  rÆ   rÃ  ZexpectedrÌ  r—   r
   r
   r   Útest_list_commandL	  s    
Hÿz!CommandLineTest.test_list_commandc              
   C   s¦   t D ]œ}t ¡ H}t |d¡}|jdd W d   ƒ n1 s@0    Y  W d   ƒ n1 s^0    Y  | ¡  dd¡}dD ]"}| j|d|dd}|  	||¡ q|qd S )	NrD   Tr†   r   r‹   rÎ  rÅ  rÏ  rÖ  r×  r
   r
   r   Útest_list_command_verboseW	  s    
H
ÿz)CommandLineTest.test_list_command_verbosec                 C   sD   t  d¡}|  d|¡\}}}|  d|¡ |  |d¡ |  |d¡ d S )NrÒ  rÅ  rÓ  rZ   rV   )r   rÈ   r¾  r“   r<   ©r   rÔ  rº  r—   r»  r
   r
   r   Útest_list_command_invalid_fileb	  s
    
z.CommandLineTest.test_list_command_invalid_filec              
   C   s   t  d¡t  d¡g}dD ]r}z`| j|tg|¢R Ž }|  |d¡ t t¡}| ¡  W d   ƒ n1 sf0    Y  W t  t¡ qt  t¡ 0 qd S )Nr¿  rÀ  )ú-cz--createrZ   )	r   rÈ   r¼  r¢   r<   r   r   rš   rû   ©r   rÂ  rÌ  r—   r2   r
   r
   r   Útest_create_commandi	  s    ÿ(z#CommandLineTest.test_create_commandc              
   C   s˜   t  d¡t  d¡g}dD ]z}zh| j|dtg|¢R ddiŽ}|  d|¡ t t¡}| ¡  W d   ƒ n1 sn0    Y  W t  t¡ qt  t¡ 0 qd S )Nr¿  rÀ  rÎ  rÜ  rÐ  rV  s    file created.)	r   rÈ   r¼  r¢   r“   r   r   rš   rû   rÝ  r
   r
   r   Útest_create_command_verbosev	  s    ÿÿ(z+CommandLineTest.test_create_command_verbosec              	   C   s~   t  d¡g}z`| jdtg|¢R Ž }|  |d¡ t t¡}| ¡  W d   ƒ n1 sV0    Y  W t  t¡ nt  t¡ 0 d S )Nr¿  rÜ  rZ   )	r   rÈ   r¼  Údotlessnamer<   r   r   rš   rû   )r   rÂ  r—   r2   r
   r
   r   Ú$test_create_command_dotless_filename„	  s    (z4CommandLineTest.test_create_command_dotless_filenamec              	   C   sŒ   t j td¡}t d¡g}z`| jd|g|¢R Ž }|  |d¡ t 	|¡}| 
¡  W d   ƒ n1 sd0    Y  W t |¡ nt |¡ 0 d S )Nz.testtarr¿  rÜ  rZ   )rI   rJ   rK   rH   r   rÈ   r¼  r<   r   r   rš   rû   )r   rÁ  rÂ  r—   r2   r
   r
   r   Ú(test_create_command_dot_started_filenameŽ	  s    (z8CommandLineTest.test_create_command_dot_started_filenamec              
   C   s    t  d¡t  d¡g}tttfD ]|}|js*qzbtd |j }| jd|g|¢R Ž }| 	|¡}| 
¡  W d   ƒ n1 sv0    Y  W t  |¡ qt  |¡ 0 qd S )Nr¿  rÀ  rÝ  rÜ  )r   rÈ   r   r#   r'   r   r¢   r   r¼  r   rš   rû   )r   rÂ  ZfiletyperÁ  r—   r2   r
   r
   r   Útest_create_command_compressed™	  s    ÿ(z.CommandLineTest.test_create_command_compressedc              
   C   sv   |   t¡ dD ]b}zPt t¡ |  |t¡}W d   ƒ n1 s@0    Y  |  |d¡ W t t¡ qt t¡ 0 qd S )N)ú-ez	--extractrZ   ©rÄ  r¢   r   Útemp_cwdÚ	tarextdirr¼  r<   r  ©r   rÌ  r—   r
   r
   r   Útest_extract_command¨	  s    
*z$CommandLineTest.test_extract_commandc              
   C   s|   |   t¡ dD ]h}zVt t¡" | j|dtdd}W d   ƒ n1 sF0    Y  |  d|¡ W t t¡ qt t¡ 0 qd S )NrÎ  rä  rV  rÏ  s    file is extracted.)rÄ  r¢   r   ræ  rç  r¼  r“   r  rè  r
   r
   r   Útest_extract_command_verbose²	  s    

ÿ$z,CommandLineTest.test_extract_command_verbosec              	   C   sn   |   t¡ zRt t¡ |  dtd¡}W d   ƒ n1 s:0    Y  |  |d¡ W t t¡ nt t¡ 0 d S )Nrä  ZspamdirrZ   rå  )r   r—   r
   r
   r   Ú(test_extract_command_different_directory½	  s    
,z8CommandLineTest.test_extract_command_different_directoryc                 C   sn   t  d¡}t  t¡" |  d|¡\}}}W d   ƒ n1 s<0    Y  |  d|¡ |  |d¡ |  |d¡ d S )NrÒ  rä  rÓ  rZ   rV   )r   rÈ   ræ  rç  r¾  r“   r<   rÚ  r
   r
   r   Ú!test_extract_command_invalid_fileÆ	  s    
0z1CommandLineTest.test_extract_command_invalid_fileN)r   r   r   r¼  r¾  rÄ  rÈ  rÍ  rÑ  rÕ  rØ  rÙ  rÛ  rÞ  rß  rá  râ  rã  ré  rê  rë  rì  r
   r
   r
   r   rµ  	  s&   	


	rµ  c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚContextManagerTestc                 C   sJ   t  t¡}|  |jd¡ W d   ƒ n1 s.0    Y  |  |jd¡ d S )Nzclosed inside runtime contextúcontext manager failed)r   r   r   r£   r   rª   r±   r
   r
   r   Ú
test_basicÑ	  s    ,zContextManagerTest.test_basicc              	   C   sd   t  t¡}| ¡  |  t¡4 | W d   ƒ n1 s80    Y  W d   ƒ n1 sV0    Y  d S r   )r   r   r   r4   r·   rÛ  r±   r
   r
   r   Útest_closedÖ	  s
    
zContextManagerTest.test_closedc              	   C   sz   |   t¡>}t t¡}t‚W d   ƒ n1 s00    Y  W d   ƒ n1 sN0    Y  |  |jtd¡ |  |j	d¡ d S )Nz)wrong exception raised in context managerrî  )
r·   Ú	Exceptionr   r   r   rÛ  rÏ   Ú	exceptionrª   r   )r   rl  r2   r
   r
   r   Útest_exceptionß	  s    @
ÿz!ContextManagerTest.test_exceptionc                 C   sj   z4t  td¡}t‚W d   ƒ n1 s(0    Y  W n   Y n0 |  tj t¡dd¡ |  |j	d¡ d S )Nr¬   r   z-context manager wrote an end-of-archive blockrî  )
r   r   r¢   rñ  r<   rI   rJ   r´  rª   r   r±   r
   r
   r   Útest_no_eofè	  s    &ÿzContextManagerTest.test_no_eofc                 C   sF   t  td¡ W d   ƒ n1 s"0    Y  |  tj t¡dd¡ d S )Nr¬   r   z-context manager wrote no end-of-archive block)r   r   r¢   rˆ  rI   rJ   r´  r   r
   r
   r   Útest_eofô	  s
    ÿzContextManagerTest.test_eofc              	   C   sŽ   t tdƒp}z6tj |dd}t‚W d   ƒ n1 s60    Y  W n   Y n0 |  |jd¡ |  |jd¡ W d   ƒ n1 s€0    Y  d S )Nr¡   r¬   rÍ   zexternal file object was closedrî  )r   r¢   r   rñ  r£   r   rª   rÒ   r
   r
   r   r  ü	  s    &zContextManagerTest.test_fileobjN)	r   r   r   rï  rð  ró  rô  rõ  r  r
   r
   r
   r   rí  Ï	  s   		rí  zrequires os.link to be missingc                   @   s€   e Zd Zdd„ Ze eejdƒd¡dd„ ƒZ	e eejdƒd¡dd„ ƒZ
e eed	ƒd
¡dd„ ƒZe eed	ƒd
¡dd„ ƒZdS )ÚLinkEmulationTestc                 C   s^   | j  |t¡ ttj t|¡dƒ}| ¡ }W d   ƒ n1 s@0    Y  |  t	|ƒt
¡ d S r©   )r2   rG   rH   r   rI   rJ   rK   r;   r<   r   r?   )r   rk   rç   r	   r
   r
   r   Ú_test_link_extraction
  s    &z'LinkEmulationTest._test_link_extractionÚislinkz3Skip emulation - has os.path.islink but not os.linkc                 C   s   |   d¡ d S )Nrp   ©r÷  r   r
   r
   r   Útest_hardlink_extraction1
  s    z+LinkEmulationTest.test_hardlink_extraction1c                 C   s   |   d¡ d S )Nrs   rù  r   r
   r
   r   Útest_hardlink_extraction2
  s    z+LinkEmulationTest.test_hardlink_extraction2rÊ  z Skip emulation if symlink existsc                 C   s   |   d¡ d S )Nrv   rù  r   r
   r
   r   Útest_symlink_extraction1 
  s    z*LinkEmulationTest.test_symlink_extraction1c                 C   s   |   d¡ d S )Nrx   rù  r   r
   r
   r   Útest_symlink_extraction2%
  s    z*LinkEmulationTest.test_symlink_extraction2N)r   r   r   r÷  r$  r-  r+  rI   rJ   rú  rû  rü  rý  r
   r
   r
   r   rö  	
  s"   ÿ
ÿ
ÿ
ÿrö  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚBz2PartialReadTestc              	      sx   G ‡ fdd„dt jƒ‰ t t d¡ ¡ ¡}tt|ƒd ƒD ]8}ztj	ˆ |d |… ƒ|d W q: tj
yp   Y q:0 q:d S )Nc                       s0   e Zd ZdZ‡‡ fdd„Z‡‡ fdd„Z‡  ZS )z9Bz2PartialReadTest._test_partial_input.<locals>.MyBytesIOFc                    s4   | j rtdƒ‚|  ¡ t|  ¡ ƒk| _ tˆ | ƒ |¡S )Nz(infinite loop detected in tarfile.open())Úhit_eofÚAssertionErrorr]   r=   r’   Úsuperr;   )r   rF  ©Ú	MyBytesIOÚ	__class__r
   r   r;   2
  s    z>Bz2PartialReadTest._test_partial_input.<locals>.MyBytesIO.readc                    s   d| _ tˆ | ƒj|Ž S râ  )rÿ  r  r\   r½  r  r
   r   r\   8
  s    z>Bz2PartialReadTest._test_partial_input.<locals>.MyBytesIO.seek)r   r   r   rÿ  r;   r\   Ú__classcell__r
   ©r  )r  r   r  0
  s   r  r»   rV   rÍ   )r   rŽ   r$   Úcompressr   r¾   r¿   Úranger=   r   r¯   )r   r   r	   r-  r
   r  r   Ú_test_partial_input/
  s    z&Bz2PartialReadTest._test_partial_inputc                 C   s   |   d¡ d S )NrD   ©r	  r   r
   r
   r   Útest_partial_inputC
  s    z%Bz2PartialReadTest.test_partial_inputc                 C   s   |   d¡ d S )Nr9  r
  r   r
   r
   r   Útest_partial_input_bz2F
  s    z)Bz2PartialReadTest.test_partial_input_bz2N)r   r   r   r	  r  r  r
   r
   r
   r   rþ  +
  s   rþ  c                  C   sZ   zdd l } dd l}W n ty(   Y dS 0 |  d¡d dkr@dS | d¡d dkrVdS dS )Nr   FÚrootT)r°  r¯  ÚImportErrorÚgetpwuidÚgetgrgid)r°  r¯  r
   r
   r   Úroot_is_uid_gid_0J
  s    r  Úchownzmissing os.chownÚgeteuidzmissing os.geteuidc                   @   sÎ   e Zd Zedd„ ƒZeedd„ ƒƒZej 	d¡ej 	d¡ej 	d¡dd	„ ƒƒƒZ
ej 	d¡ej 	d¡ej 	d¡d
d„ ƒƒƒZe eƒ d¡ej 	d¡ej 	d¡ej 	d¡dd„ ƒƒƒƒZej 	d¡dd„ ƒZdS )ÚNumericOwnerTestc                 C   s°   t  d¡}| ddtj|f|ddtjd f|ddtj|fg}t td¡X}|D ]B\}}}}	}
t |¡}||_||_	d	|_
d	|_|	|_| ||
¡ qJW d   ƒ n1 s¢0    Y  tS )
Ns   contentéc   éb   éM   éL   éX   éW   r¬   r  )r   rŽ   r   r  rë   r   r¢   r¾   rU  rV  ró   rW  rê   rÃ   )Ú
filename_1Ú	dirname_1Ú
filename_2rB   rX  Útarflrk   rU  rV  ÚtypÚcontentsrÆ   r
   r
   r   Ú_make_test_archive_
  s    
þ
,z#NumericOwnerTest._make_test_archivec                 c   sn   d| _ d}d}|}|}tj ||¡}t |||¡}t |¡}||||fV  W d   ƒ n1 s`0    Y  d S )Nr   znumeric-owner-testfilerØ  )r¾  rI   rJ   rK   r  r!  r   r   )Úmock_geteuidZfnameÚdirnamer  r  r  Ztar_filenamer  r
   r
   r   Ú_setup_testw
  s    þzNumericOwnerTest._setup_testzos.chownzos.chmodz
os.geteuidc           
      C   sœ   |   |¡8\}}}}|j|tdd |j|tdd W d   ƒ n1 sH0    Y  tj t|¡}tj t|¡}	|jtj 	|dd¡tj 	|	dd¡gdd d S )NT©Znumeric_ownerr  r  r  r  ©Z	any_order)
r$  rG   rH   rI   rJ   rK   Úassert_has_callsr$  r%  Úcall)
r   r"  Ú
mock_chmodÚ
mock_chownr  r  Ú_r  Úf_filename_1Úf_filename_2r
   r
   r   Útest_extract_with_numeric_owner
  s    .ÿýz0NumericOwnerTest.test_extract_with_numeric_ownerc                 C   s¦   |   |¡&\}}}}|jtdd W d   ƒ n1 s60    Y  tj t|¡}tj t|¡}	tj t|¡}
|jtj 	|dd¡tj 	|	dd¡tj 	|
dd¡gdd	 d S )
NTr%  r  r  r  r  r  r  r&  )
r$  rþ   rH   rI   rJ   rK   r'  r$  r%  r(  )r   r"  r)  r*  r  r  r  r  r,  Zf_dirname_1r-  r
   r
   r   Ú"test_extractall_with_numeric_owner 
  s    ,þüz3NumericOwnerTest.test_extractall_with_numeric_ownerz uid=0,gid=0 must be named "root"c                 C   sb   |   |¡(\}}}}|j|tdd W d   ƒ n1 s80    Y  tj t|¡}| |dd¡ d S )NFr%  r   )r$  rG   rH   rI   rJ   rK   Zassert_called_with)r   r"  r)  r*  r  r  r+  r,  r
   r
   r   Ú"test_extract_without_numeric_owner¸
  s    .z3NumericOwnerTest.test_extract_without_numeric_ownerc              	   C   sL   |   |¡.\}}}}|  t|j|tdd¡ W d   ƒ n1 s>0    Y  d S )NFT)r$  r·   rÓ  rG   rH   )r   r"  r  r  r+  r
   r
   r   Útest_keyword_onlyÇ
  s    ÿz"NumericOwnerTest.test_keyword_onlyN)r   r   r   r  r!  r   r$  r$  r%  r&  r.  r/  r*  r  r0  r1  r
   r
   r
   r   r  V
  s,   	






ÿ




r  c               	   C   s¶   t  t¡ t t¡ tgattdƒ} |  ¡ }W d   ƒ n1 sB0    Y  t	t
tfD ]Z}|jrVt  |j¡ t |j¡ | |jd¡}| |¡ W d   ƒ qV1 s¦0    Y  qVd S )NrU   r¡   )r   rû   rH   rI   Úmakedirsr   rÊ  r   r;   r   r#   r'   r¿  r½   )rB   r	   Úcr2   r
   r
   r   ÚsetUpModuleÎ
  s    

&r4  c                   C   s   t j t¡rt t¡ d S r   )rI   rJ   r÷  rH   r   r  r
   r
   r
   r   ÚtearDownModuleß
  s    r5  Ú__main__)sr   rI   r   Zhashlibr   Ú
contextlibr   Úrandomr   r¥   r$  Zunittest.mockr   rI  r   Ztest.supportr   r"   r  r'  r$   r*   r   rJ   rÑ   ZTESTFNrH   rç  rÈ   r   rK   r!   r%   r)   r¢   rà  r?   ru  r   Zrequires_gzipr   Zrequires_bz2r#   Zrequires_lzmar'   r,   ZTestCaser6   r{   r}   r~   r   r   rž   rŸ   r    rÊ   r.  r/  r0  r4  r5  rA  rB  rC  rD  rM  rN  rR  rS  rƒ  r  rž  r¨  r®  rì  rí  rî  rï  rù  rý  rÿ  r  r  r  r3  r8  r:  r=  r*  r+  r>  rC  rP  r_  rr  rv  rx  r|  rŒ  r  rŽ  r  r–  rµ  rí  r-  rö  rþ  r  r  r4  r5  r   r®  r
   r
   r
   r   Ú<module>   sô   




ÿÿ
|Pw  =(a*;,  9'R.Z			*TQO@;T B:!v
