python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_tarfile.cpython-311.opt-2.pyc

e}kddlZddlZddlZddlZddlmZddlmZddlm	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlmZddlmZddlmZddlmZ	ddlZn
#e$rdZYnwxYw	ddlZn
#e$rdZYnwxYw	ddlZn
#e$rdZYnwxYw	ddlZn
#e$rdZYnwxYwd	Zejej d
zZ!e!dzZ"ej#dZ$ej%e!d
Z&ej%e!dZ'ej%e!dZ(ej%e!dZ)ej%e!dZ*dZ+dZ,GddZ-ej.GddZ/ej0GddZ1ej2GddZ3Gdde-Z4Gdde4ej5Z6Gd d!e/e6Z7Gd"d#e1e6Z8Gd$d%e3e6Z9Gd&d'e4ej5Z:Gd(d)e/e:Z;Gd*d+e1e:Z<Gd,d-e3e:Z=Gd.d/e4Z>Gd0d1e>Z?Gd2d3e?ej5Z@Gd4d5e/e?ej5ZAGd6d7e1e?ej5ZBGd8d9e3e?ej5ZCGd:d;e>ej5ZDGd<d=e/eDZEGd>d?e1eDZFGd@dAe3eDZGGdBdCe-ej5ZHGdDdEe/eHZIGdFdGe1eHZJGdHdIe3eHZKGdJdKe/ej5ZLGdLdMe4ej5ZMGdNdOZNGdPdQeNe4ej5ZOGdRdSeNe4ej5ZPGdTdUe-ZQGdVdWeQej5ZRGdXdYe/eRZSGdZd[e1eRZTGd\d]e3eRZUGd^d_eQej5ZVGd`dae/eVZWGdbdce1eVZXGdddee3eVZYGdfdgej5ZZGdhdieQej5Z[GdjdkeQej5Z\Gdldme/e\Z]Gdndoe1e\Z^Gdpdqe3e\Z_Gdrdse\Z`ejaebedtduGdvdwej5ZcGdxdyeZZdGdzd{ZeGd|d}eeej5ZfGd~deeej5ZgGddeeej5ZhGddZiGddeiej5ZjGdde/eiej5ZkGdde1eiej5ZlGdde3eiej5ZmGddej5ZnGddej5ZoGddej5ZpGddej5ZqejrebedtdGdde4ej5ZsGdde1ej5ZtdZuejaebeddejaebeddGddej5ZvGdde4ej5ZwGdde4ZxGddexej5ZyGddexej5ZzGddexej5Z{Gddexej5Z|Gddej5Z}dZ~GddZejrdZndZGddej5ZdZdZedkrejdSdS)N)sha256)contextmanager)Random)support)	os_helper)
script_helper)warnings_helpercDt|SN)r	hexdigest)datas E/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_tarfile.py	sha256sumr)s$<<!!###z-tardirz
-extract-testztesttar.tarztesttar.tar.gzztesttar.tar.bz2testtar.tar.xzztmp.tartesttar@e09e4bc8b3c9d9177e77256353b36c159f5f040531bbd4b024a8f9b9196c71ce@4f05a776071146756345ceee937b33fc5644f5a96b9780d1c7d6a32cdf164d7bcReZdZeZdZejZej	j
Z
edZdS)TarTestc |j|jzSr)prefixsuffixselfs rmodezTarTest.modeCs{T[((rN)
__name__
__module____qualname__tarnamerioFileIOopentarfileTarFiletaropenpropertyrrrrr=sHG
F
9Do%G
))X)))rrcDeZdZeZdZerejndZe	j
jZdS)GzipTestgzN)
rrr gzipnamer!rgzipGzipFiler$r%r&gzopenr'r)rrr+r+Gs2G
F *4==dDo$GGGrr+cDeZdZeZdZerejndZe	j
jZdS)Bz2Testbz2N)
rrr bz2namer!rr3BZ2Filer$r%r&bz2openr'r)rrr2r2Ns2G
F'3;;4Do%GGGrr2cDeZdZeZdZerejndZe	j
jZdS)LzmaTestxzN)
rrr xznamer!rlzmaLZMAFiler$r%r&xzopenr'r)rrr8r8Us2G
F *4==dDo$GGGrr8ceZdZdZdZdZdS)ReadTestr:cRtj|j|jd|_dS)N	iso8859-1rencodingr%r$r!rtarrs rsetUpzReadTest.setUpas)<49)4666rc8|jdSr)rFclosers rtearDownzReadTest.tearDownesrN)rrr rrGrJr)rrr?r?]s7
F666rr?ceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZejeed
oeedddZdS)
UstarReadTestcl|jd}|j|5}|}|t||jd|t|tdddddS#1swxYwYdS)N
ustar/regtyperegular file extraction failed)	rF	getmemberextractfilereadassertEquallensizersha256_regtypertarinfofobjr
s    rtest_fileobj_regular_filez'UstarReadTest.test_fileobj_regular_fileks($$_55
X
!
!'
*
*	6d99;;DSYY4
6
6
6Yt__n4
6
6
6		6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6sA'B))B-0B-c|jdtd|jd}t	t
jtdd5}|}dddn#1swxYwY|j	|5}tj|}|}|||d|t|dd||dddddddS#1swxYwYdS)	NrNr
filterrzfileobj.readlines() failedrSzOI will gladly admit that Python is not the fastest running scripting language.
)rFextractTEMPDIRrPr$ospathjoin	readlinesrQr"
TextIOWrapperrSrT)rrXfobj1lines1rYfobj2lines2s       rtest_fileobj_readlinesz$UstarReadTest.test_fileobj_readlinests'&AAA($$_55
"',,w88#
>
>	'%__&&F	'	'	'	'	'	'	'	'	'	'	'	'	'	'	'X
!
!'
*
*
	2d$T**E__&&FVV0
2
2
2S[[#0
2
2
2VBZ40
2
2
2
	2
	2
	2
	2
	2
	2
	2
	2
	2
	2
	2
	2
	2
	2
	2
	2
	2
	2s%0BBB6BEEEc|jdtd|jd}t	t
jtdd5}|}dddn#1swxYwY|j	|5}ttj|}|
||dddddS#1swxYwYdS)NrNr
r\r^zfileobj.__iter__() failed)rFrarbrPr$rcrdrerfrQlistr"rgrS)rrXrhrirjrks      rtest_fileobj_iterzUstarReadTest.test_fileobj_itersc'&AAA($$_55
"',,w88#
>
>	'%__&&F	'	'	'	'	'	'	'	'	'	'	'	'	'	'	'
X
!
!'
*
*	1e"*51122FVV/
1
1
1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1s$0BBB69C<<DDc|jdtdttjtdd5}|}dddn#1swxYwY|jd}|j	|5}|}|
d|d|d|
dd|d|d|
d	d
|d|d|
dd
|d|d
|d}|||ddd|
dd||j
|d||dd|
|j
d|d|d|
d|}|
d|}|||d|
d|t||d|
d|t|dz|d|
d|}|||t|ddddddS#1swxYwYdS)NrNr
r\rbrzseek() to file's start failediz"seek() to absolute position failediz+seek() to negative relative position failedz+seek() to positive relative position failed
i
zread() after seek failedzseek() to file's end failedrz0read() at file's end did not return empty stringz$relative seek() to file's end failedzreadlines() after seek failedztell() after readline() failedz)tell() after seek() and readline() failedzread() after readline() failed)rFrarbr$rcrdrerRrPrQseekrStellrUrfrTreadline)	rrYr
rXtextss1s2lines	         rtest_fileobj_seekzUstarReadTest.test_fileobj_seeksM' &		(	(	(
"',,w88$
?
?	499;;D															($$_55
X
!
!'
*
*(	;d99;;DIIaLLLQ		8
:
:
:IIdAT499;;=
?
?
?IIeQT499;;F
H
H
HIIdAT499;;F
H
H
H		"

AQT$Y3
5
5
5IIaOOOW\499;;6
8
8
8TYY[[#K
M
M
MIIw|mQ'''Q		?
A
A
AIIcNNN!!BIIcNNN!!BR8
:
:
:IIaLLLS11499;;9
;
;
;IIcNNNS11C7D
F
F
FIIaLLL==??DTYY[[$s4yyzz*:9
;
;
;O(	;(	;(	;(	;(	;(	;(	;(	;(	;(	;(	;(	;(	;(	;(	;(	;(	;(	;s%A77A;>A;6NQQ

Q
c|jd5}tj|}|d}|t|t	|	dn%#t$r|dYnwxYwddddS#1swxYwYdS)NrNrBdzseeking failed in text mode)rFrQr"rgrRencoderSrrVrwAttributeErrorfailrrYr
s   rtest_fileobj_textzUstarReadTest.test_fileobj_texts
X
!
!/
2
2		9d#D))D99;;%%k22DYt__n===
9		#!
9
9
9		788888
9
		9		9		9		9		9		9		9		9		9		9		9		9		9		9		9		9		9		9s6A$CBCB85C7B88CCCc|j|5}|j|5}||j|jdddn#1swxYwYddddS#1swxYwYdSr)rFrQrSname)rlnktyperegtypeabs     r_test_fileobj_linkz UstarReadTest._test_fileobj_links
X
!
!'
*
*	-a
X
!
!'
*
*	-./QVQV,,,	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-s4A;!A#A;#A'	'A;*A'	+A;;A?A?c2|dddS)N
ustar/lnktyperNrrs rtest_fileobj_link1z UstarReadTest.test_fileobj_link1AAAAArc2|dddS)N./ustar/linktest2/lnktypeustar/linktest1/regtyperrs rtest_fileobj_link2z UstarReadTest.test_fileobj_link2* ; 9	;	;	;	;	;rc2|dddS)N
ustar/symtyperNrrs rtest_fileobj_symlink1z#UstarReadTest.test_fileobj_symlink1rrc2|dddS)N./ustar/linktest2/symtyperrrs rtest_fileobj_symlink2z#UstarReadTest.test_fileobj_symlink2rrc2|dddS)Nsymtype2rNrrs rtest_issue14160zUstarReadTest.test_issue14160s
O<<<<<rcZ|d|ddS)Nbareaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)add_dir_and_getmemberrs rtest_add_dir_getmemberz$UstarReadTest.test_add_dir_getmembers0""5)))""7+++++rgetuidgetgidz'Missing getuid or getgid implementationc	d}tj5tjtd5}tj|_	tj||	||tj
|n#tj
|wxYw	dddn#1swxYwYtjt5}|||||dzdddn#1swxYwYddddS#1swxYwYdS)Nc"dx|_|_|S)Nr)uidgidrXs rr]z3UstarReadTest.add_dir_and_getmember.<locals>.filters(++GK'+Nrwr\/)
rtemp_cwdr%r$tmpnameUSTAR_FORMATformatrcmkdiraddrmdirrSrP)rrr]rFs    rrz#UstarReadTest.add_dir_and_getmembers			

!
!		gs++
#s$1
#HTNNNGGDG000HTNNNNBHTNNNNN

#
#
#
#
#
#
#
#
#
#
#
#
#
#
#g&&
#  MM$''MM$*--














																		sqD3B++B0B+BB+D3+B/	/D32B/	3D3ADD3D	D3"D	#D33D7:D7N)rrr rZrlrorrrrrrrrrunittest
skipUnlesshasattrrcrr)rrrLrLis"666222$111/;/;/;b
9
9
9---
BBB;;;BBB;;;===,,,
XX..H772x3H3HBDDDDrrLceZdZdS)GzipUstarReadTestNrrr r)rrrrDrrceZdZdS)Bz2UstarReadTestNrr)rrrrrrrceZdZdS)LzmaUstarReadTestNrr)rrrrrrrc&eZdZdZdZdZdZdS)ListTestcPtj|j|j|_dS)NrrErs rrGzListTest.setUp
s <49===rcdtjtjdd}tjt
d|5jddddn#1swxYwY|	}
d|
d|
d	|
d
|
d|
d|
d
|
d|fd}
|d|
|d|
|d|
|d|
|d||dd|d|dS)Nascii
newlinestdoutFverboseustar/conttype
ustar/regtypes
ustar/lnktypesustar/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/1234567/longnames./ustar/linktest2/symtypes./ustar/linktest2/lnktypesustar/dirtype/sustar/dirtype-with-size/cp|jjd}|ddS)Nsurrogateescaperbackslashreplace)decoderFrDr)rr{rs  rconvz ListTest.test_list.<locals>.convs1*,=>>A88G%7888rsustar/umlauts-s'misc/regtype-hpux-signed-chksum-s)misc/regtype-old-v7-signed-chksum-spax/bad-pax-spax/hdrcharset-s)ustar/conttype ?\r?\nustar/regtype ?\r?\nslink tos->)
r"rgBytesIOr	swap_attrsysrFrndetachgetvalueassertInassertRegexassertNotIn)rtiooutrs`   r	test_listzListTest.test_listsrz||WdCCC

sHc
2
2	)	)HMM%M(((	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)jjll##%%

'---

&,,,

&,,,

BCHHH

2C888

2C888

'---

13777	9	9	9	9	9	


ddHII3OOO

dd;<<=@	B	B	B

dd;<<=@	B	B	B

dd677===

dd9::C@@@	
7	8	8	8	
S)))$$$$$sA--A14A1cFtjtjdd}tjt
d|5|jddddn#1swxYwY|	}|
|d|d||d	||d
||d||d|dS)
NrrrrTrs\?rw-r--r-- tarfile/tarfile\s+7011 \d{4}-\d\d-\d\d\s+\d\d:\d\d:\d\d ustar/\w+type ?\r?\n\?rw-r--r-- tarfile/tarfile\s+7011 \d{4}-\d\d-\d\d\s+\d\d:\d\d:\d\d ustar/\w+type ?\r?\nsustar/symtype -> regtypes1./ustar/linktest2/symtype -> ../linktest1/regtypes;./ustar/linktest2/lnktype link to ./ustar/linktest1/regtypes	gnu/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longlink link to gnu/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longnames	pax/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longlink link to pax/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longname)r"rgrrrrrFrnrrrr)rrrs   rtest_list_verbosezListTest.test_list_verbose5sirz||WdCCC

sHc
2
2	(	(HMM$M'''	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(jjll##%%	
=	>	>	>	


13777

JCPPP

347	9	9	9

569	;	;	;

569	;	;	;	;	;sA,,A03A0ctjtjdd}d}tjt
d|5|jd||jdddn#1swxYwY|	}|
d||d	|dS)
Nrrrc3RK|D]}d|jvr|VdS)Nreg)
getmembersr)rFrXs  rmembersz+ListTest.test_list_members.<locals>.membersOs@>>++
"
"GL((!MMM
"
"rrF)rrrr)r"rgrrrrrFrnrrrr)rrrrs    rtest_list_memberszListTest.test_list_membersMsrz||WdCCC	"	"	"
sHc
2
2	D	DHMM%1B1BMCCC	D	D	D	D	D	D	D	D	D	D	D	D	D	D	Djjll##%%

&,,,*C00000s+A>>BBN)rrr rGrrrr)rrrr
sQ>>>#%#%#%J;;;0
1
1
1
1
1rrceZdZdS)GzipListTestNrr)rrrrZrrrceZdZdS)Bz2ListTestNrr)rrrr^rrrceZdZdS)LzmaListTestNrr)rrrrbrrrcDeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
S)CommonReadTestcPttd5	dddn#1swxYwY|tjt|tjtjtttd5}|tj|dddn#1swxYwY|tjtjddS)Nwbrqsinvalid)	r$rassertFalser%
is_tarfilepathlibPathr"rrrYs  rtest_is_tarfile_erroneousz(CommonReadTest.test_is_tarfile_erroneoushsj
'4
 
 																		
+G44555	
+GL,A,ABBCCC'4
 
 	7DW/55666	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	
+BJz,B,BCCDDDDDs$((.(C""C&)C&c	t|tj|j|tjt	j|jt
|jd5}|tj|dddn#1swxYwYt
|jd5}|tjtj|	ddddS#1swxYwYdS)Nrq)

assertTruer%rr!rrr$r"rrRrs  rtest_is_tarfile_validz$CommonReadTest.test_is_tarfile_validys*4<88999	
*7<+E+EFFGGG$,
%
%	6OOG.t44555	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6$,
%
%	IOOG.rz$))++/F/FGGHHH	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	Is%(B44B8;B8AD--D14D1ct|jd5}tj|||ddddn#1swxYwYt|jd5}t
j|}tj|||dddddS#1swxYwYdS)Nrqr)	r$r!r%rrSrxr"rrR)rrY	file_likes   rtest_is_tarfile_keeps_positionz-CommonReadTest.test_is_tarfile_keeps_positionsT$,
%
%	-t$$$TYY[[!,,,	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-$,
%
%	2
499;;//Iy)))Y^^--q111	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2s$=AA#&A#?A#C//C36C3ctjt|jdd5	dddn#1swxYwY	tjt|j}|||gn*#tj$r|	dYnwxYw|
dS#|
wxYw)Nr^rz&tarfile.open() failed on empty archive)r%r$rrreplacegetnamesassertListEqualr	ReadErrorrrIrrFs  rtest_empty_tarfilez!CommonReadTest.test_empty_tarfiles,
\'49#4#4S##>#>
?
?																		,w	22CLLNNN
  !1!126666 	@	@	@II>?????	@

IIKKKKKCIIKKKKs;AA	A3B*)C**$CC*CC**Dc|td5tjd|jddddS#1swxYwYdS)Nxxx)assertRaisesRegexFileNotFoundErrorr%r$rrs rtest_non_existent_tarfilez(CommonReadTest.test_non_existent_tarfiles
#
#$5u
=
=	+	+L	***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+sAAAc.ttd5	dddn#1swxYwY|tjtjt|j|tjtjtdSNr)r$rassertRaisesr%rrrs rtest_null_tarfilez CommonReadTest.test_null_tarfiles'4
 
 																	'+W\7DINNN'+W\7CCCCCs$((ctdd}dD])}|td5}||dztjd}t||_||	||dddn#1swxYwYtjtdd	}	|
|dgd
|z|#|wxYwdS)Nrrv)arrsfoor^T)rignore_zerosz3ignore_zeros=True should have skipped the %r-blocks)
r	randbytesr$rwriter%TarInforTrUtobufrrrI)rr
charrYrXrFs      rtest_ignore_zerosz CommonReadTest.test_ignore_zerossmayy""3''!		D7C((
!D

4$;'''!/%00"4yy

7==??+++

4   
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!,wStDDDC
$$S\\^^eWI				!		sA=CC	C	4-D77E
cRdD]"}tjtd5}tjd}d|_||t
jddddn#1swxYwYttd5}||dddn#1swxYwYtjt5}|	tj
d5|D]}	dddn#1swxYwYdddn#1swxYwYtjt5}|}|	tj
d5||td	dddn#1swxYwY|	tj
d5||dddn#1swxYwYdddn#1swxYwY$dS)
N)rviXrsiw:rrssaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazr+bzunexpected end of datar
r\)r%r$rrrUaddfiler"rtruncaterrnextrarbrQrR)rrUrFtrYs     rtest_premature_end_of_archivez,CommonReadTest.test_premature_end_of_archives*	.	.Dgt,,
8OE**Arz+66777
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
gu%%
$

d###
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$g&&
#++G,=?WXX 















g&&
.#HHJJ++G,=?WXX;;KK76K:::;;;;;;;;;;;;;;;++G,=?WXX..OOA&&++---...............

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.	.	.sAA00A4	7A4	B22B6	9B6	!D!7D
>D!
DD!DD!!D%	(D%	5H:F$H$F((H+F(,#H(H7HHH
HHH	!H	c|tjd5tjt	jd5}	dddn#1swxYwYddddS#1swxYwYdS)Nz%file could not be opened successfullyz
recursion.tar)rr%rr$rfindfilers  rtest_length_zero_headerz&CommonReadTest.test_length_zero_headers
#
#G$57^
_
_		g.??@@
C














																		s5'A.A
A.A	A.A	A..A25A2N)rrr rrrrrrrrr!r)rrrrfsEEE"
I
I
I
2
2
2"+++DDD,...0rrcZeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZejeeddejdZejdZejdZdZdZdZdZeje duddZ!dZ"dS)MiscReadTestBasecdSrr)rs rrequires_name_attributez(MiscReadTestBase.requires_name_attributesrc|t|jd5}||jt
t
j||j5}||jt
||jtj
|jdddn#1swxYwYddddS#1swxYwYdSNrqfileobjr)r%r$r!assertIsInstancerstrr%rrSrcrdabspathrrYrFs   rtest_no_name_argumentz&MiscReadTestBase.test_no_name_argumentsk$$&&&
$,
%
%	G!!$)S111d;;;
Gs%%ch444  27??49+E+EFFF
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	Gs6<C(&ACC(C	C(C	C((C,/C,c^t|jd5}|}dddn#1swxYwYtj|}|tt|dtj||j	}|
|jdS)Nrqrr()r$r!rRr"rrrgetattrr%rassertIsNonerrrYr
rFs    rtest_no_name_attributez'MiscReadTestBase.test_no_name_attributes
$,
%
%	99;;D															z$.'4@@@l4di888#(#####s7;;cZt|jd5}|}dddn#1swxYwYtj|}d|_t
j||j5}||jddddS#1swxYwYdS)Nrqrr()	r$r!rRr"rrr%rr1r2s    rtest_empty_name_attributez*MiscReadTestBase.test_empty_name_attributes
$,
%
%	99;;D															z$	
\$TY
7
7
7	(3ch'''	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(s7;;8B  B$'B$cztj|jtj}t|d5}||jttj||j5}|	|jdddn#1swxYwYddddS#1swxYwYdSr')
rcr$r!O_RDONLYr*rintr%rr1)rfdrYrFs    rtest_int_name_attributez(MiscReadTestBase.test_int_name_attributesWT\2;
/
/
"d^^	,t!!$)S111d;;;
,s!!#(+++
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,s5<B01BB0B	B0B	 B00B47B4c|tj|j}t	|d5}||jttj||j	5}||jt|
|jtj|jdddn#1swxYwYddddS#1swxYwYdSr')
r%rcfsencoder!r$r*rbytesr%rrSrdr,)rr!rYrFs    rtest_bytes_name_attributez*MiscReadTestBase.test_bytes_name_attributesz$$&&&+dl++
'4
 
 	GD!!$)U333d;;;
Gs%%ch666  27??49+E+EFFF
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	Gs6<C<:AC$C<$C(	(C<+C(	,C<<DDc	<tj|j}tj||j5}||jt|	|jtjtj
|dddn#1swxYwY||5}||jt|	|jtjtj
|dddn#1swxYwYtj||j5}||jt|	|jtjtj
|dddn#1swxYwY|jdkrtj|d5}||jt|	|jtjtj
|ddddS#1swxYwYdSdS)Nrrr^)rrr!r%r$rr*rr+rSrcrdr,fspathr'r&r)rr!rFs   rtest_pathlike_namez#MiscReadTestBase.test_pathlike_namesC,t|,,
\'	
2
2
2	Lc!!#(C000SXrwry7I7I'J'JKKK	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L\\'
"
"	Lc!!#(C000SXrwry7I7I'J'JKKK	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L_
!
!'	
!
:
:	Lc!!#(C000SXrwry7I7I'J'JKKK	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L;"s333
Ps%%ch444  27??29W;M;M+N+NOOO
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
PsKA+B,,B03B0A+EE
E4A+G++G/2G/A+JJJc8ttd5	dddn#1swxYwY|td5|td}dddn#1swxYwY|td5|td}dddn#1swxYwY|td5|td}ddddS#1swxYwYdS)Nrz
mode must be qrwr)r$rr
ValueErrorr'rs  rtest_illegal_mode_argz&MiscReadTestBase.test_illegal_mode_arg's
'4
 
 																	

#
#J
@
@	-	-,,w,,C	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-

#
#J
@
@	.	.,,w--C	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.

#
#J
@
@	,	,,,w++C	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,sB$((
A22A69A6CCC&DDDctj|j|j}	||}|j}|j}||5}|}dddn#1swxYwY|	n#|	wxYw||j5}|
|||jd|5}|}||j||||||ddddn#1swxYwYddddS#1swxYwYdS)Nrr@rr)zseek back did not work)
r%r$r!rrroffsetrQrRrIrwrSr)rrFrrrIfr
rYs        rtest_fileobj_with_offsetz)MiscReadTestBase.test_fileobj_with_offset1sBl4<di888	HHJJJ

A6DXF##
 qvvxx
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
IIKKKKCIIKKKKYYt|
$
$	2IIf$,T4@@
2CHHJJ  ...     !3!3!8!8!:!:D0222

2
2
2
2
2
2
2
2
2
2
2
2
2
2
2		2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2sgAB.-BB.BB.BB..C!3F8BF F8 F$	$F8'F$	(F88F<?F<c2|tjtjt|jttd5}|tjtj||jddddS#1swxYwYdSr')rr%rr$r!rrs  rtest_fail_compzMiscReadTestBase.test_fail_compMs'+W\7DINNN
'4
 
 	<Dg/&*

<
<
<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<s3BBBc|jd}||jtjddS)Nzmisc/dirtype-old-v7zv7 dirtype failed)rFrPrStyper%DIRTYPErrXs  rtest_v7_dirtypez MiscReadTestBase.test_v7_dirtypeTsG($$%:;;w#	%	%	%	%	%rc	|jddS#t$r|dYdSwxYw)Nzmisc/regtype-xstarz3failed to find misc/regtype-xstar (mangled prefix?))rFrPKeyErrorrrs rtest_xstar_typez MiscReadTestBase.test_xstar_type\s`	MH344444	M	M	MIIKLLLLLL	MsAAc|jD]r}|t|jdd|jz|jdsN||jdd|jzsdS)N鏽>zwrong mtime for %szustar/r%zwrong uname for %s)rFrSr8mtimer
startswithunamerQs  rtest_check_membersz#MiscReadTestBase.test_check_membersesx	9	9GS//(7<7
9
9
9<**844
W]I(7<7
9
9
9
9	9	9rcx||jdjdddS)Nzmisc/eofzcould not find all members)rSrFrrrs rtest_find_membersz"MiscReadTestBase.test_find_membersnsA,,..r27,	.	.	.	.	.rlinkMissing hardlink implementationctjtdd5}|dtd|tjtj	
td|dtd|tjtj	
tdttj	
tdd5}|}dddn#1swxYwY|t|t|d	td|tjtj	
td	ttj	
td	d5}|}dddn#1swxYwY|t|tddddS#1swxYwYdS)
NrrrB)
errorlevelrDrNr
r\rrqr)r%r$r!rarb
addCleanuprunlinkrcrdrerRrSrrV)rrFrJr
s    rtest_extract_hardlinkz&MiscReadTestBase.test_extract_hardlinkrso
\'a+
F
F
F	>#KKK@@@OOI,bgll7O.T.TUUUKKK@@@OOI,bgll7O.T.TUUUbgll7O<<dCC
 qvvxx
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Yt__n===KKK@@@OOI,bgll7O.T.TUUUbgll7O<<dCC
 qvvxx
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Yt__n===	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>s[C4ID2&I2D6	6I9D6	:B>I8H
IH	I H	!+II Icltjtd}tjtd}tj|	d|D}|||d|D]}tj||j	}tjdkr>||j
dztj|jdz|j	d	}tj|}d
||j|||}||j||	|t)j|dS#|t)j|wxYw)NrBrD
extractallc:g|]}||Sr)isdir.0rs  r
<listcomp>z4MiscReadTestBase.test_extractall.<locals>.<listcomp>%777QWWYY71777r
fully_trustedr\win32ct|tr(d||Sd|S)Nz{} ({})z
{!r} (int))
isinstancefloatrhex)rXs rformat_mtimez6MiscReadTestBase.test_extractall.<locals>.format_mtimesF!%//:(//uyy{{CCC+225999rz,tar mtime {0} != file time {1} of path {2!a})r%r$r!rcrdrerbrrhrrplatformrSrstatst_modegetmtimerrXrIrrmtree)	rrFDIRdirectoriesrXrdrw
file_mtimeerrmsgs	         rtest_extractallz MiscReadTestBase.test_extractallsl7[999gll7L11



	"77c777KNN3ONDDD&
D
Dw||C66<7**$$W\E%9%'WT]]%:U%B%,\333:::
 W--d33
GNN L// L,,  
FCCCC#
D&
IIKKKS!!!!!
IIKKKS!!!!s
DF		*F3cd}tjtd}tj|	tjtd5}||}|	||dtj||}|
tj||jtjdkr0|
tj|jdzd	dddn#1swxYwYt#j|dS#t#j|wxYw)
N
ustar/dirtype
extractdirrBrgrprdr]rqrri)rcrdrerbrr%r$r!rPrarSr{rXrrxryrzrr|rdirtyper}rFrX	extracteds      rtest_extract_directoryz'MiscReadTestBase.test_extract_directorysp!gll7L11



		"g<<<
P--00G#oFFFGLLg66	  !1!1)!<!<gmLLL<7**$$RWY%7%7%?%%GOOO

P
P
P
P
P
P
P
P
P
P
P
P
P
P
P
S!!!!!IS!!!!s0ECD*E*D..E1D.2EE!ctjtdz}tj|5tjtd5}d|D}|||d|D]D}||j	z}|
tj
||jE	dddn#1swxYwYddddS#1swxYwYdS)NrhrBrgc:g|]}||Sr)rjrls  rrnzBMiscReadTestBase.test_extractall_pathlike_name.<locals>.<listcomp>rorrpr\)rrrbrtemp_dirr%r$r!rhrrSrcrdr{rX)rr}rFr~rXrds      rtest_extractall_pathlike_namez.MiscReadTestBase.test_extractall_pathlike_namesl7##l2


$
$	H	H
\'K
8
8
8	H<?77c777KNN3ONDDD&
H
HW\)  !1!1$!7!7GGGG
H		H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	Hs6C
A,C:CC
	
C
C
	CC"%C"cd}tjtdz}tj|5tjtd5}||}|	||d||z}|
tj
||jdddn#1swxYwYddddS#1swxYwYdS)NrrhrBrgrpr)rrrbrrr%r$r!rPrarSrcrdr{rXrs      rtest_extract_pathlike_namez+MiscReadTestBase.test_extract_pathlike_namesv!l7##l2


$
$	I	I
\'K
8
8
8	I<?mmG,,GKKc/KBBBg
IRW--i88'-HHH	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	Is6CA+C:CC
	
C
C
	CC"%C"c.tjtd}t	|d5}|ddddn#1swxYwY	ttj	}	|
||dn4#tj$r"|
|jjYnwxYwt!j|dS#t!j|wxYw)NemptyrrzReadError not raised)rcrdrerbr$robject__new__r%r&__init__rrrr)closedrrd)rrrYrFs    rtest_init_close_fobjz%MiscReadTestBase.test_init_close_fobjs>Wg..
%

	$JJsOOO																	$..11C
2U###		01111$
4
4
4 233333
4

U#####IU####sAAAA$$C>	B4C>4.C%"C>$C%%C>>DcLtj|j5}t||D]_\}}||j|j|||`	ddddS#1swxYwYdSr)r%r$r!ziprSrIget_info)rrFm1m2s    rtest_parallel_iterationz(MiscReadTestBase.test_parallel_iterations\$,
'
'	?3c3--
?
?B  BI666  

>>>>
?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?sA1BB BNz
requires zlibc8tjd5}tj|_|tj5tj	|j
dddn#1swxYwYddddS#1swxYwYdS)Nztarfile.TarInfo.fromtarfile)rmockpatchzliberrorside_effectrr%rr$r!)rrs  rtest_zlib_error_does_not_leakz.MiscReadTestBase.test_zlib_error_does_not_leaks]
 
 !>
?
?	+4#zD""7#455
+
+T\***
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+s51BA7+B7A;	;B>A;	?BBBc.tj}tj|d}||dtj|d5}||ddddn#1swxYwY|dtj|d5}||dddddS#1swxYwYdS)Nrr(rr|r^)r"rr%r$rIrwrSr)rr9tfs   rtest_next_on_empty_tarfilez+MiscReadTestBase.test_next_on_empty_tarfilesg
Z\\
\"3
/
/
/








\"4
0
0
0	.BRWWYY---	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	



\"3
/
/
/	.2RWWYY---	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.s$))BB"%B")D

DD)#rrr r%r.r3r5r:r>rArFrKrMrRrUr[r^rrrrcrskip_unless_symlinkreskip_unless_working_chmodrrrrrrskipIfrrrr)rrr#r#s


GGG$$$(((,,,GGGPPP ,,,2228<<<%%%MMM999...XV,,:<<">>#"<<>$("")(">(
"
")(
"HHHIII$$$&???X_TT\?33++43+.....rr#ceZdZdZdS)MiscReadTestN)rrr rMr)rrrrsNNNrrceZdZdS)GzipMiscReadTestNrr)rrrrrrrceZdZdZdS)Bz2MiscReadTestc0|ddS)NzBZ2File have no name attributeskipTestrs rr%z'Bz2MiscReadTest.requires_name_attributes

677777rNrrr r%r)rrrrs#88888rrceZdZdZdS)LzmaMiscReadTestc0|ddS)NzLZMAFile have no name attributerrs rr%z(LzmaMiscReadTest.requires_name_attributes

788888rNrr)rrrrs#99999rrc*eZdZdZdZdZdZdZdS)StreamReadTestrc6|jD]}|s|j|5}		|d}n*#tj$r|dYnwxYw|snE	dddn#1swxYwYdS)NTrvz6simple read-through using TarFile.extractfile() failed)rFisregrQrRr%StreamErrorr)rrXrYbufs    rtest_read_throughz StreamReadTest.test_read_throughsx		G==??
%%g..
$B"iinn".BBB		#ABBBBBB














		s4B
AB
$A96B
8A99B

B	B	ch|j}|j|5}|}dddn#1swxYwY|t||jd|t|tddS)NrO)	rFrrQrRrSrTrUrrVrWs    rrZz(StreamReadTest.test_fileobj_regular_files(--//
X
!
!'
*
*	d99;;D															TGL0	2	2	24.0	2	2	2	2	2sAAAc|j}|j|d5}|tj|jddddS#1swxYwYdSNr)rFrrQrr%rrR)rtarinfosrJs   rtest_provoke_stream_errorz(StreamReadTest.test_provoke_stream_error(s8&&((
X
!
!(1+
.
.	;!g116:::	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;s&A--A14A1ctjtd}	|j}	|}|}|n||d|s|rM|tj	5|
|dddn#1swxYwY|
|}|
|}|||d|||d7	|
dS#|
wxYw)NrBrgTzstream.next() failed.zstream.extractfile() failedzstream extraction failed)r%r$r!rFrassertIsNotNoneislnkissymrrrQrSrRrI)rtar1tar2t1t2v1v2s       rtest_compare_membersz#StreamReadTest.test_compare_members-s|Gk:::	8D
4YY[[YY[[:$$R)@AAA88::**7+>??--((,,,---------------%%b))%%b)):$$R)FGGG  BGGII2444#
4 
JJLLLLLDJJLLLLs1BE3.CE3CE3CBE33F	N)rrr rrrZrrr)rrrrsUF 222;;;
rrceZdZdS)GzipStreamReadTestNrr)rrrrHrrrceZdZdS)Bz2StreamReadTestNrr)rrrrKrrrceZdZdS)LzmaStreamReadTestNrr)rrrrNrrrc,eZdZdZdZdZdZdZdS)DetectReadTestc	tj||}|dS#tj$r}|Yd}~dSd}~wwxYwr)r%r$rIrr)rrrrFes     r_testfunc_filezDetectReadTest._testfunc_fileSsh	,tT**C
IIKKKKK 			IIKKKKKKKKK	s-AAAc	t|d5}tj|||}dddn#1swxYwY|dS#tj$r}|Yd}~dSd}~wwxYw)Nrqr))r$r%rIrr)rrrrJrFrs      r_testfunc_fileobjz DetectReadTest._testfunc_fileobj[s	dD!!
:Ql4q999
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:

IIKKKKK 			IIKKKKKKKKK	s2A6A:A:AB&BBc|jrX|tj5tjt
d|jzdddn#1swxYwY|tj5tjt
d|jzdddn#1swxYwY|tj5tj|jddddn#1swxYwY|tj5tj|jddddn#1swxYwY||jd||jd|jz||jd||jd|jz||jddS)Nr@rrr^zr:*r|*)rrr%rr$r!)rtestfuncs  r_test_modeszDetectReadTest._test_modesds;	6""7#455
?
?W4$++=>>>>
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?""7#455
?
?W4$++=>>>>
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?""7#455
6
6T\5555
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6""7#455
6
6T\5555
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6s###tdk1222u%%%tdk1222u%%%%%sG$AAA$B22B69B6DDD.EEEc:||jdSr)rrrs rtest_detect_filezDetectReadTest.test_detect_filets,-----rc:||jdSr)rrrs rtest_detect_fileobjz"DetectReadTest.test_detect_fileobjws/00000rN)rrr rrrrrr)rrrrRs_&&& ...11111rrceZdZdS)GzipDetectReadTestNrr)rrrrzrrrceZdZdZdS)Bz2DetectReadTestcPttd5}|}dddn#1swxYwYtjt
dd5}||dddn#1swxYwY|t
ddS)Nrqrrr
compresslevelr)r$r!rRr3r5rrrrs   rtest_detect_stream_bz2z(Bz2DetectReadTest.test_detect_stream_bz2~s
'4
 
 	D99;;D															[$a
8
8
8	DJJt																
GU+++++s7;;BBBN)rrr rr)rrrr}s#,,,,,rrceZdZdS)LzmaDetectReadTestNrr)rrrrrrrceZdZ	dZdS) GzipBrokenHeaderCorrectExceptionctjd}|tj5tj|dddddS#1swxYwYdS)Nszr|gzr()r"rrr%rr$)rrJs  rrunTestz(GzipBrokenHeaderCorrectException.runTestsJ




w0
1
1	1	1L0000	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1sAAAN)rrr rr)rrrrs(
1
1
1
1
1rrceZdZddZdZdZdZdZdZdZ	d	Z
d
ZdZdZ
d
ZdZdZdZdZdZdZdZdS)MemberReadTestNc	|p|j|5}|t||d|jzdddn#1swxYwYd|d<d|d<d|d<d|jvr
d	|d
<d	|d<|D]5\}}|t|||d|d
|j6dS)Nwrong sha256sum for %srWrXrrrzold-v7r%rZgnamezwrong value in z
 field of )rFrQrSrrRritemsr0)rrXchksumkwargsrJkvs       r_test_memberzMemberReadTest._test_members_%%g..
A!  16688!4!4f07<?AAA
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A'wu
u
7<'''F7O'F7OLLNN	I	IDAqWWa00!!78qq',,G
I
I
I
I	I	Is?A((A,/A,ct|jd}||dtdS)NrNcrUrrFrPrrVrQs  rtest_find_regtypez MemberReadTest.test_find_regtypes8($$_55'^DDDDDrct|jd}||dtdS)Nzustar/conttyperrrrQs  rtest_find_conttypez!MemberReadTest.test_find_conttypes9($$%566'^DDDDDrch|jd}||ddS)NrrrUrFrPrrQs  rtest_find_dirtypez MemberReadTest.test_find_dirtypes6($$_55'*****rch|jd}||ddS)Nzustar/dirtype-with-sizerrrQs  rtest_find_dirtype_with_sizez*MemberReadTest.test_find_dirtype_with_sizes7($$%>??',,,,,rcj|jd}||dddS)NrrrNrUlinknamerrQs  rtest_find_lnktypez MemberReadTest.test_find_lnktypes8($$_55'ODDDDDrcj|jd}||dddS)NrrrrrrQs  rtest_find_symtypez MemberReadTest.test_find_symtypes8($$_55'I>>>>>rcl|jd}||ddddS)Nz
ustar/blktyperrUdevmajordevminorrrQs  rtest_find_blktypez MemberReadTest.test_find_blktype:($$_55'ABBBBBrcl|jd}||ddddS)Nz
ustar/chrtyperrrrrrrQs  rtest_find_chrtypez MemberReadTest.test_find_chrtyperrch|jd}||ddS)Nzustar/fifotyperrrrQs  rtest_find_fifotypez!MemberReadTest.test_find_fifotypes7($$%566'*****rct|jd}||dtdS)Nzustar/sparsePrrFrPr
sha256_sparserQs  rtest_find_sparsezMemberReadTest.test_find_sparses8($$^44'mDDDDDrct|jd}||dtdS)N
gnu/sparserrr rQs  rtest_find_gnusparsez"MemberReadTest.test_find_gnusparses8($$\22'mDDDDDrct|jd}||dtdS)Ngnu/sparse-0.0rrr rQs  rtest_find_gnusparse_00z%MemberReadTest.test_find_gnusparse_009($$%566'mDDDDDrct|jd}||dtdS)Ngnu/sparse-0.1rrr rQs  rtest_find_gnusparse_01z%MemberReadTest.test_find_gnusparse_01r)rct|jd}||dtdS)Ngnu/sparse-1.0rrr rQs  rtest_find_gnusparse_10z%MemberReadTest.test_find_gnusparse_10r)rct|jd}||dtdS)Nuustar/umlauts-ÄÖÜäöüßrrrrQs  rtest_find_umlautsz MemberReadTest.test_find_umlautssB($$&DEE'^DDDDDrcdd}|||jdS)Naustar/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/1234567/longname)rrFr)rrs  rtest_find_ustar_longnamez'MemberReadTest.test_find_ustar_longnames/<

dDH--//00000rct|jd}||dtdS)Nzmisc/regtype-old-v7rrrrQs  rtest_find_regtype_oldv7z&MemberReadTest.test_find_regtype_oldv7s9($$%:;;'^DDDDDrc|jtj|j|jd|_|jd}||dtdS)NrBrCupax/umlauts-ÄÖÜäöüßrr)	rFrIr%r$r!rrPrrVrQs  rtest_find_pax_umlautsz$MemberReadTest.test_find_pax_umlautssw<49)4666($$&DEE'^DDDDDrr)rrr rrrr	rrrrrrr"r%r(r,r/r1r3r5r7r)rrrrscIIII"EEEEEE+++---EEE???CCCCCC+++EEEEEEEEEEEEEEEEEE
111EEEEEEEErrc,eZdZdZdZdZdZdZdS)LongnameTestc|jdzdzdz}	|j|}n%#t$r|dYnwxYw||jtjddS)Nr123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longnamezlongname not foundzread longname as dirtype)	subdirrFrPrTrassertNotEqualrOr%rP)rr<rXs   rtest_read_longnamezLongnameTest.test_read_longnames;$|3j@	,h((22GG	,	,	,II*+++++	,GL'/*	,	,	,	,	,s-AAc|jdzdzdz}|jdzdzdz}	|j|}n%#t$r|dYnwxYw||j|ddS)Nrr;r<longlinkzlonglink not foundzlinkname wrong)r=rFrPrTrrSr)rr<rArXs    rtest_read_longlinkzLongnameTest.test_read_longlinks;$|3j@;$|3j@	,h((22GG	,	,	,II*+++++	,)85EFFFFFs=AAc|jdzdzdz}|j|}|j}|jj|t
j|jjd}|	tj5tjd|ddddS#1swxYwYdS)Nrr;r<izfoo.tar)rr))
r=rFrPrIr)rwr"rrRrr%rr$)rr<rXrIrYs     rtest_truncated_longnamez$LongnameTest.test_truncated_longnames;$|3j@($$X..f%%%z$(*//8899


w0
1
1	7	7Li6666	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7s!CC	C	c|jdzdzdz}|j|j}t	t
d5}||tj	|
ddd}||j|j
ddddS#1swxYwYdS)Nrr;r<rqrvrBstrict)r=rFrPrIr$r!rwr%rfrombufrRrSrOlongnametype)rr<rIrYrXs     rtest_header_offsetzLongnameTest.test_header_offset s;$|3j@##H--4
'4
 
 	>DIIfo--diinn.98EEGW\4+<===		>	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>sA*B<<CCc	d}tj5tjtd5}|j|_	t
j|||t
j	|
dn,#t
j	|
dwxYw	dddn#1swxYwYtjt5}||||||
ddddn#1swxYwYddddS#1swxYwYdS)Nzfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/rr)rrr%r$rrrcrrrrstriprrPremovesuffix)rlongdirrFs   rtest_longname_directoryz$LongnameTest.test_longname_directory+s(#


!
!
	O
	Ogs++
2s![
2HW%%%GGG$$$HW^^C001111BHW^^C0011111

2
2
2
2
2
2
2
2
2
2
2
2
2
2
2g&&
O#$$S]]7%;%;<<<$$S]]73G3G3L3L%M%MNNN
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
	O
	O
	O
	O
	O
	O
	O
	O
	O
	O
	O
	O
	O
	O
	O
	O
	O
	OspE5
C	)B((C	)B99C	=E5	C
	
E5C
	E5-A$EE5E!	!E5$E!	%E55E9<E9N)rrr r?rBrDrIrNr)rrr9r9sg,,,GGG777	>	>	>
O
O
O
O
Orr9cbeZdZdZejZejZdZ	dZ
dZdZdZ
edZdS)	GNUReadTestgnuc|j|tdtjt|}t
|d5}|}dddn#1swxYwY|t|td|z|r9tj|}|
|jdz|jdSdS)Nr
r\rqrrv)rFrarbrcrdrer$rRrSrr!_fs_supports_holesry
assertLess	st_blocksst_size)rrfilenamerYr
r{s      r_test_sparse_filezGNUReadTest._test_sparse_fileGswv6667<<..
(D
!
!	T99;;D															4-(4/	1	1	1""$$	:!!AOOAK#-qy99999	:	:sA99A=A=c0|ddS)Nr$rXrs rtest_sparse_file_oldz GNUReadTest.test_sparse_file_oldSs|,,,,,rc0|ddS)Nr'rZrs rtest_sparse_file_00zGNUReadTest.test_sparse_file_00V/00000rc0|ddS)Nr+rZrs rtest_sparse_file_01zGNUReadTest.test_sparse_file_01Yr^rc0|ddS)Nr.rZrs rtest_sparse_file_10zGNUReadTest.test_sparse_file_10\r^rctjdrtjtd}t|d5}|d|	d|
dddn#1swxYwYtj|}tj
||jdz|jkSdS)Nlinuxzsparse-testrisxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrvF)rrxrYrcrdrerbr$rwrrryrrdrUrV)rrYr{s   rrSzGNUReadTest._fs_supports_holes_s<""7++	7<<77DdD!!
 T		$

;'''

	
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


AT"""K#%	125s?B  B$'B$N)rrr r=r%GNUTYPE_LONGNAMErH
GNU_FORMATrrXr[r]r`rbstaticmethodrSr)rrrPrP:s
F+L

F
:
:
:---111111111\rrPc:eZdZdZejZejZdZ	dZ
dS)PaxReadTestpaxcntjtd}	|d}||jd||jd||jdd|d}||jd	||jd||jdd|d
}||jd||jd||jdd|	dS#|	wxYw)NrBrgpax/regtype1rrzVENDOR.umlautsuÄÖÜäöüßzpax/regtype2rzpax/regtype3r%)
r%r$r!rPrSrZrpax_headersgetrIrrFrXs   rtest_pax_global_headersz#PaxReadTest.test_pax_global_headers|sl7[999	mmN33GW]E222W]E222W0445EFF;
=
=
=mmN33GW]B///W]E222W0445EFF;
=
=
=mmN33GW]I666W]I666W0445EFF;
=
=
=
IIKKKKKCIIKKKKsE+FF4ctjtd}	|d}||jd||jd||jd||jd|t|jt|t|jdd|t|jdd|dS#|wxYw)	NrBrgzpax/regtype4r{g^Aatimectime)
r%r$r!rPrSrUrrrXrOrurmrIros   rtest_pax_number_fieldsz"PaxReadTest.test_pax_number_fieldssl7[999
	mmN33GW\4000W[#...W[#...W]L999T'-00%888U7#6w#?@@,OOOU7#6w#?@@,OOOIIKKKKKCIIKKKKsD
D==EN)rrr r=r%XHDTYPErH
PAX_FORMATrrprur)rrririvsF
F?L

F.




rriceZdZdZdZdS)
WriteTestBasectj}tj||j5}|tjddddn#1swxYwY||jd|	}~tj||j|||	dS)Nr(rz#external fileobjs must never closed)
r"rr%r$rrrrrrr
gc_collectrS)rrYrFr
s    rtest_fileobj_no_closez#WriteTestBase.test_fileobj_no_closesz||
\$TY
7
7
7	03KK..///	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0&KLLL}}%%%t}}/////s(A##A'*A'c$tjt|j5}tjd}tjtjz
|_||tj
d|jzdddn#1swxYwY|td5}|t|
tjdzddddS#1swxYwYdS)Nrrrqru)r%r$rrr
RECORDSIZE	BLOCKSIZErUrr"rrSrTrR)rrFrrYs    rtest_eof_markerzWriteTestBase.test_eof_markersg
\'49
-
-	6&&A''*;;AFKK2:dQVm44555	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6
YYw
%
%	GS--w/AA/EFFF	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	Gs%A#BBB5ADD	D	N)rrr r|rr)rrryrys7
0
0
0GGGGGrryceZdZdZdZdZdZdZdZdZ	e
jee
dd	d
ZejdZdZd
ZddZejdZdZdZdZdZdS)	WriteTestrcd}tjt|j}	tj|}|||n#|wxYwtjt}	||d|d|dS#|wxYw)Nd0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789rz!failed to store 100 char filename)	r%r$rrrrrIrSr)rrrFrs    rtest_100_char_namezWriteTest.test_100_char_names
!l7DI..	%%AKKNNNIIKKKKCIIKKKKl7##	S\\^^A.7
9
9
9
IIKKKKKCIIKKKKs)A!!A7/CC/ctjt|j}	tjtd}t|d5}|ddddn#1swxYwY|	||
n#|
wxYw|tjtdddS)Nfileraaarztarfile is empty)
r%r$rrrcrdrerbrrrI
assertGreatergetsize)rrFrdrYs    r
test_tar_sizezWriteTest.test_tar_sizes
l7DI..	7<<00DdD!!
#T

6"""
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#GGDMMMIIKKKKCIIKKKK27??733Q"	$	$	$	$	$s/5B-A8,B-8A<<B-?A<B--Ccvtjt|j}	tjtd}t|d5	dddn#1swxYwY||}|	|j
dt|d5}|ddddn#1swxYwY||}|	|j
d|dS#|wxYw)Nrrrrr)
r%r$rrrcrdrerb
gettarinforSrUrrI)rrFrdrXrYs     rtest_file_sizezWriteTest.test_file_sizesl7DI..	7<<00DdD!!
















nnT**GW\1---dD!!
#T

6"""
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#nnT**GW\1---IIKKKKKCIIKKKKsT5D"A$D"$A((D"+A(,AD"/CD"CD"C3D""D8ctjtd}tj|	tjt|j}	|	|}|
|jd|n#|wxYw	tj|dS#tj|wxYw)N	directoryr)rcrdrerbrr%r$rrrrSrUrIrrrrdrFrXs    rtest_directory_sizezWriteTest.test_directory_sizesw||G[11
	",w	22C
....  q111				OD!!!!!IOD!!!!s#C0B C B66CC&ctjtd}tj|ttj|ddttj|dd	tjt|j	}	tjd5}ddg|_
||dddn#1swxYwYg}|D]?}|tj|jd@||gd|n#|wxYw	t)jtj|dt)jtj|dt)j|dS#t)jtj|dt)jtj|dt)j|wxYw)Nr1r2z
os.listdirr])rrr)rcrdrerbrr$rIr%rrrrrreturn_valuerrappendsplitrrSrrdr)rrdrFmock_listdirpathsms      rtest_ordered_recursionz WriteTest.test_ordered_recursionsYw||G[11
RW\\$
$
$c**00222RW\\$
$
$c**00222	",w	22C	
]((66",14c
L-GGDMMM"""""""""""""""))<<ALLqv!6!6r!:;;;;  (?(?(?@@@				RW\\$44555RW\\$44555OD!!!!!
RW\\$44555RW\\$44555OD!!!!sJ;IF3:D%F3%D))F3,D)-A1F3I3G		IA:KcVtjt|j5}t	jtdz}t|d5}|ddddn#1swxYwY||}|tj
|}||jt||j|j||jdddddS#1swxYwYdS)Nrrrr)r%r$rrrrrbrrrcr@r*rr+rSrU)rrFrdrYrXtarinfo2s      rtest_gettarinfo_pathlike_namez'WriteTest.test_gettarinfo_pathlike_namess
\'49
-
-	.<((61DdD!!
#T

6"""
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#nnT**G~~bioo66H!!',444W\8=999W\1---	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.s6-D
A/#D/A3	3D6A3	7BDD"%D"r_r`cttjtd}tjtd}t	|d5}|ddddn#1swxYwY	tj||n/#t$r"}|d|zYd}~nd}~wwxYw	tjt|j}	||||}|
|jd|n#|wxYw	t!j|t!j|dS#t!j|t!j|wxYw)Nr_link_targetrr
os.link(): %sr)rcrdrerbr$rr_PermissionErrorrr%rrrrSrUrIrrd)rr_targetrYrrFrXs       rtest_link_sizezWriteTest.test_link_size'sw||GV,,g}55
&$

	4JJv																/GFD!!!!	/	/	/MM/A-........	/	#,w	22C
v&&&....  q111				V$$$T"""""
V$$$T""""sOA==BB	B
C)CCF
/AE	4F
	EF

*F7ctjtd}tjd|	tjt|j}	|	|}|
|jd|n#|wxYw	tj|dS#tj|wxYw)Nsymlinkrr)rcrdrerbrr%r$rrrrSrUrIrrdrs    rtest_symlink_sizezWriteTest.test_symlink_size?sw||GY//

=$'''	#,w	22C
....  q111				T"""""IT""""s#C0B!C!B77CC'cztjt}t	jt|j}	||j|d|	|||
gdtjt5|	|dddn#1swxYwY||
gd|dS#|wxYw)Nzarchive name must be absolutezadded the archive to itself)rcrdr,rr%r$rrSrrrr
change_cwdrbrI)rdstnamerFs   r
test_add_selfzWriteTest.test_add_selfMsM'//'**l7DI..	SXw3
5
5
5GGGS\\^^R1
3
3
3%g..
!
!   
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!S\\^^R1
3
3
3
IIKKKKKCIIKKKKs1A3D$8CD$CD$!C",D$$D:c&tjtd}tj|	dD]6}tj||}tj|7d}tjt|j
d}	||d||n#|wxYw|
t5||ddd|dddn#1swxYwYtjtd	}	|D]8}||jd
||jd9|t%|d|n#|wxYw	tj|dS#tj|wxYw)
Nr])rrbazcvtj|jdkrdSd|_d|_|S)Nrrrr)rcrdbasenamerrrZrs rr]z%WriteTest.test_filter.<locals>.filtergs77##GL11U::F! %
rrBrg	empty_dir)arcnamer]Tr^rrrr)rcrdrerbrrcreate_empty_filer%r$rrrrIr	TypeErrorrSrrZrTrr|)rtempdirrr]rFrXs      rtest_filterzWriteTest.test_filter_s4',,w11
	&-
2
2w||GT22+D1111


,w	KHHHC
VDDD				""9--
B
BdD&AAA
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B,w,,C
";;G$$W[#666$$W]E::::  S^^%5%5!6!6:::				W%%%%%IW%%%%saAG:C1G:CG:9DG:D##G:&D#'G:A0G
5G:
G  G::HNFctjtd}|st	j|ntj|tjt|j
}	||||n#|wxYwtjtd}	|
}|n#|wxYw|st	j|nt	j|||j|p|tjddS)Nrrr^r)rcrdrerbrrrr%r$rrrrIrrdrrSrrsep)rrdcmp_pathdirrrFrs       r_test_pathnamezWriteTest._test_pathnames4gll7E**	',,,,HSMMMl7DI..	GGCG&&&IIKKKKCIIKKKKl7C((	

AIIKKKKCIIKKKK	!S!!!!OC   !FT\\"&#-F-FGGGGGs1BB3C::Dc tjtd}tjtd}tj|	tj|d}tj|d}t|d5}|ddddn#1swxYwYtj||tj|d5}|	|d|	|ddddn#1swxYwYtj|d	5}	|
|d
n%#t$r|dYnwxYwdddn#1swxYwYtj|tj|dS#tj|tj|wxYw)
Ntestsymlinksztestsymlinks.tarsourcerrz
something
rrurbrprz&extractall failed with symlinked files)rcrdrerbrr$rrr%rrhOSErrorrrrdr|)rrtemparchivesource_filetarget_filerJrFs       rtest_extractall_symlinksz"WriteTest.test_extractall_symlinkss',,w77gll7,>??
	&',,wx88K',,wy99Kk#&&
'!
&&&
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'J{K000k3//
83X666Y777
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8ka888
HCHNN*9#;;;;HHHIIFGGGGGH
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
[)))W%%%%%
[)))W%%%%s AG#0CG#CG#C-G#/E6G#EG#	E
G##F.%E=<F.=FF.FF."G#.F22G#5F26G##*H
cv|d|tjddd|tjddd|tjdd|tjddd|tjdddd|tjdddd|tjdddd|tjdd|tjddd|tjdddd|tjdddd|dtjztjzdz|dtjztjzdddS)Nr.r..T)r)rrcrdrerrs rtest_pathnameszWriteTest.test_pathnamessE"""BGLLU;;<<<BGLLe<<===BGLLe44555BGLLeS99:::BGLLeS%@@AAABGLLeT5AABBBBGLLeT5AABBBBGLLu55666BGLLud;;<<<BGLLuc5AABBBBGLLudEBBCCCEBFNRV3e;<<<EBFNRV3UEEEEErctjdkr|dddS|dd|dddS)NrqzC:\foorz/fooz///foo)rrxrrs rtest_abs_pathnameszWriteTest.test_abs_pathnamess]<7""	511111...%00000rcLtjt5tjt
|j}	|d|n#|wxYwtjt
d}	|D]@}|j	dkr3|
|j	d|j	A	|n#|wxYw	ddddS#1swxYwYdS)Nrr^z./)rrrbr%r$rrrrIrrrYrrFrs   rtest_cwdzWriteTest.test_cwdsC

!'
*
*
	
	,w	22C
				,w,,C
IIAv}}(9(9$(?(?HHHI				
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	sA DA%D%A;;DAC2D2DDD Dc
jtttfD]Gfddtj}|}|5t
jt|j	|tj
ddi}dddn#1swxYwY||jdS)NceZdZdZfdZdS)8WriteTest.test_open_nonwritable_fileobj.<locals>.BadFileTc(|jr	d|_dSNF)first)rr
exctypes  rrz>WriteTest.test_open_nonwritable_fileobj.<locals>.BadFile.writes#z&%*
%
&&rN)rrr rr)rsrBadFilers3&&&&&&&rrnonr)r)rrm)
rEOFErrorRuntimeErrorr"rrr%r$rrrwrr)rrrJrFrs    @rtest_open_nonwritable_fileobjz'WriteTest.test_open_nonwritable_fileobjs*,6
	'
	'G
&
&
&
&
&
&
&"*
&
&
&		A""7++
A
Al7DIq*1*<05w/?AAA
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
QX&&&&
	'
	's0B

B	B	r)rrr rrrrrrrrrrrcrrrrrrrrrrrrr)rrrrse
F($$$ """""",	.	.	.XV,,:<<##<<#,"###"#$"&"&"&PHHHH:"&&#"&4FFF"111"'''''rrceZdZdS)
GzipWriteTestNrr)rrrrrrrceZdZdS)Bz2WriteTestNrr)rrrrrrrceZdZdS)
LzmaWriteTestNrr)rrrrrrrceZdZdZdZdZejej	dkoe
eddeje
jpe
jddZdS)	StreamWriteTestzw|Ncztjt|j}||jr|}ttd5}|}dddn#1swxYwY||}||j	dnF|t5}|}dddn#1swxYwY|
|dtjddS)Nrqzfound trailing datarzincorrect zero padding)
r%r$rrrIdecompressorrR
decompressrunused_datarScountr~)rrFdecrYr
s     rtest_stream_paddingz#StreamWriteTest.test_stream_padding
sl7DI..			###%%Cgt$$
#yy{{
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#>>$''DS_.CDDDD7##
#tyy{{
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#E**G,>0	2	2	2	2	2s$$BB	B	C<<DDrqumaskzMissing umask implementationz$Emscripten's/WASI's umask is a stub.ctjtrt	jttjd}	tjt|j	}|
tjtjdz}|
|ddtj|dS#tj|wxYw)Nrrizwrong file permissions)rcrdexistsrrrdrr%r$rrIryrzrS)roriginal_umaskrFrs    rtest_file_modezStreamWriteTest.test_file_modes7>>'""	&W%%%%	%,w	22CIIKKK77##+e3DT5*BCCCH^$$$$$BH^$$$$s
A+CC*)rrr rrrrrrrxrrcrr
is_emscriptenis_wasirr)rrrrs
FL222 X0IWWR5I5I799X_0.
%
%	99
%
%
%rrceZdZdZdS)GzipStreamWriteTestc	tjt|jtjtd}dS)Nzlatin-1rg)r%r$rrrIrr	read_text)rpayloads  r test_source_directory_not_leakedz4GzipStreamWriteTest.test_source_directory_not_leaked1sM		Wdi((..000,w''1191EErN)rrr rr)rrrr0s#77777rrc$eZdZerejndZdS)Bz2StreamWriteTestN)rrr r3BZ2Decompressorrr)rrrr;s *-73&&4LLLrrc$eZdZerejndZdS)LzmaStreamWriteTestN)rrr r;LZMADecompressorrr)rrrr>s ,0:4((dLLLrrcZeZdZdZddZddZdZdZdZdZ	d	Z
d
ZdZdZ
d
ZdS)GNUWriteTestc6t|dzdz}|dzS)Nrvrr)rT)rr{blockss   r_lengthzGNUWriteTest._lengthFs Q3"|rNcd}t|tjkr|dz
}|||z
}|:t|tjkr|dz
}|||z
}|S)Nrv)rTr%LENGTH_NAMErLENGTH_LINK)rrr_rs    r
_calc_sizezGNUWriteTest._calc_sizeJswt99w***SLET\\$'''ED		G,? ? ?SLET\\$'''Erctj|}|r||_tj|_tjtd}	tj|_|	||
||}|j}|||d|
n#|
wxYwtjt}	|}||d||j|jd||j|jd|
dS#|
wxYw)Nrz%GNU longname/longlink creation failedzunable to read longname member)r%rrLNKTYPErOr$rrfrrrrIrSrIrrr)rrr_rXrFrrmembers        r_testzGNUWriteTest._testXsZ/$''	+#G"?GLl7C((	 +CJKK   t,,BBR%LMMMIIKKKKCIIKKKKl7##		XXZZF  4
6
6
6W\6;4
6
6
6W-v4
6
6
6
IIKKKKKCIIKKKKs
AB99C,A,E..Fc0|ddS)Nlongnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnamr
rs rtest_longname_1023zGNUWriteTest.test_longname_1023us

122222rc0|ddS)Nlongnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/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
rs rtest_longname_1024zGNUWriteTest.test_longname_1024xs

233333rc0|ddS)Nlongnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/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
rs rtest_longname_1025zGNUWriteTest.test_longname_1025{s

344444rc2|dddS)Nrlonglnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/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
rs rtest_longlink_1023zGNUWriteTest.test_longlink_1023~s

69:::::rc2|dddS)Nrlonglnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/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
rs rtest_longlink_1024zGNUWriteTest.test_longlink_1024s

6:;;;;;rc2|dddS)Nrlonglnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/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
rs rtest_longlink_1025zGNUWriteTest.test_longlink_1025s

6;<<<<<rc2|dddS)Nrrr
rs rtest_longnamelink_1023z#GNUWriteTest.test_longnamelink_1023s(

11	3	3	3	3	3rc2|dddS)Nrrr
rs rtest_longnamelink_1024z#GNUWriteTest.test_longnamelink_1024s(

22	4	4	4	4	4rc2|dddS)Nrrr
rs rtest_longnamelink_1025z#GNUWriteTest.test_longnamelink_1025s(

33	5	5	5	5	5rr)rrr rrr
rrrrrrrr!r#r)rrrrBs:333444555;;;<<<===33344455555rrceZdZdZdZdS)DeviceHeaderTestrc|tjtd}tj|	tjt|j}	tj	d}tj	d}t
j
|_t
j|_|
||
||n#|wxYwtjtd}	|d}|d}|n#|wxYw||jd||jd||jd||jdt
td5}|}dddn#1swxYwY||j|j}	||j|j}
t-dd	}||	|d
||
|dt/j|dS#t/j|wxYw)Ndevice_header_testmy_block_devicermy_regular_filer^rrqiIiYs00000000000000s)rcrdrerbrr%r$rrrBLKTYPErOREGTYPErrIrPrSrrrRrIoffset_dataslicerr|)rrrF	input_blk	input_reg
output_blk
output_reginfilerbuf_blkbuf_regdevice_headerss            r*test_headers_written_only_for_device_filesz;DeviceHeaderTest.test_headers_written_only_for_device_filess',,w(<==
#	&,w	22C
#O1BCCC	#O1BCCC	!(	!(	I&&&I&&&				,w,,C
 ]]+<==
 ]]+<==
				Z0!444Z0!444Z0!444Z0!444gt$$
$kkmm
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$*+J,BBCG*+J,BBCG#311NW^46FGGGW^4jAAAW%%%%%IW%%%%sbJ%A6C&J%&C<<J%*EJ%E//BJ%3HJ%HJ%HA3J%%J;N)rrr rr7r)rrr%r%s(
F'&'&'&'&'&rr%ceZdZdZejedZdZ	e
dZe
dZdZ
dZdZd	Zd
ZdZdS)
CreateTestzx:
spameggs42c8tjtdSr)rrdrrs rrGzCreateTest.setUps!!!!!rct|jd5}|dddddS#1swxYwYdS)Nrr)r$	file_pathr)clsrYs  r
setUpClasszCreateTest.setUpClasss
#-
&
&	$JJv																		s
9==c8tj|jdSr)rrdr=r>s r
tearDownClasszCreateTest.tearDownClasss'''''rctjt|j5}||jdddn#1swxYwY|t5}|}dddn#1swxYwY|t|d|
d|ddSNrrr:r)r%r$rrrr=r'rrSrTrrtobjnamess   rtest_createzCreateTest.test_creates)
\'49
-
-	%HHT^$$$	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%\\'
"
"	$dMMOOE	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$UQ'''

lE!H-----s#AAA,B

BBcTtjt|j5}||jdddn#1swxYwY|t5tjt|j}dddn#1swxYwY|t5}|	}dddn#1swxYwY|
t|d|d|ddSrD)
r%r$rrrr=rFileExistsErrorr'rrSrTrrEs   rtest_create_existingzCreateTest.test_create_existings
\'49
-
-	%HHT^$$$	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%


/
/	4	4<33D	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4\\'
"
"	$dMMOOE	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$UQ'''

lE!H-----s5AAA, BBB=CC"%C"c|td5}||jdddn#1swxYwY|t5}|}dddn#1swxYwY|t
|d|d|ddSNxrrr:r)r'rrr=rrSrTrrEs   rtest_create_taropenzCreateTest.test_create_taropens)
\\'3
'
'	%4HHT^$$$	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%\\'
"
"	$dMMOOE	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$UQ'''

lE!H-----s#AA
A(B		B
B
cv|td5}||jdddn#1swxYwY|t
5|td5	dddn#1swxYwYdddn#1swxYwY|t5}|}dddn#1swxYwY|t|d|	d|ddSrM)
r'rrr=rrJrrSrTrrEs   rtest_create_existing_taropenz'CreateTest.test_create_existing_taropens
\\'3
'
'	%4HHT^$$$	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%


/
/		gs++
















															\\'
"
"	$dMMOOE	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$UQ'''

lE!H-----sYAA
A(B)BB)B	B)B	B))B-0B-C//C36C3cZtjtjt|j5}||jt|	|jtjt|
tj|j|}dddn#1swxYwY|	t!|d|d|d|t5}|}dddn#1swxYwY|	t!|d|d|ddSrD)r%r$rrrrr*rr+rSrcrdr,rr=rrTrr'rEs   rtest_create_pathlike_namez$CreateTest.test_create_pathlike_names
\',w//
;
;	$t!!$)S111TY(@(@AAAHHW\$.11222MMOOE		$	$	$	$	$	$	$	$	$	$	$	$	$	$	$
	
UQ'''

lE!H---
\\'
"
"	$dMMOOE	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$UQ'''

lE!H-----s$BCC #C E!!E%(E%cR|tjtd5}||jt||jtj	
t|tj|j|
}dddn#1swxYwY|t|d|d|d|t5}|
}dddn#1swxYwY|t|d|d|ddSrM)r'rrrr*rr+rSrcrdr,rr=rrTrrEs   r!test_create_taropen_pathlike_namez,CreateTest.test_create_taropen_pathlike_name
s
\\',w//
5
5	$!!$)S111TY(@(@AAAHHW\$.11222MMOOE		$	$	$	$	$	$	$	$	$	$	$	$	$	$	$
	
UQ'''

lE!H---
\\'
"
"	$dMMOOE	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$UQ'''

lE!H-----s$BCCC<EE!$E!N)rrr rrcrdrerbr=rGclassmethodr?rBrHrKrOrQrSrUr)rrr9r9s
FWl33I"""[(([(...
.
.
...............rr9ceZdZdZdS)GzipCreateTestctjt|jd5}||jdddn#1swxYwYtjtdd5}	ddddS#1swxYwYdS)Nrrrzr:gzr%r$rrrr=rrFs  rtest_create_with_compresslevelz-GzipCreateTest.test_create_with_compresslevels
\'49A
>
>
>	%$HHT^$$$	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%
\'6
;
;
;	t																		#A		A
A
0A??BBNrrr r\r)rrrXrX#rrXceZdZdZdS)
Bz2CreateTestctjt|jd5}||jdddn#1swxYwYtjtdd5}	ddddS#1swxYwYdS)Nrrrr:bz2rZr[s  rr\z,Bz2CreateTest.test_create_with_compresslevel's
\'49A
>
>
>	%$HHT^$$$	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%
\'7!
<
<
<																			r]Nr^r)rrrara%r_rraceZdZdZdS)LzmaCreateTestctjt|jd5}||jddddS#1swxYwYdS)Nrr)presetrZr[s  rtest_create_with_presetz&LzmaCreateTest.test_create_with_preset2s
\'49Q
7
7
7	%4HHT^$$$	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%sA

AAN)rrr rhr)rrrere.s#%%%%%rreceZdZdZdZdZdS)CreateWithXModeTestrNN)rrr rrOrQr)rrrjrj7s!
F#'   rrjr_r`c,eZdZdZdZdZdZdZdS)HardlinkTestcNtjtd|_tjtd|_t
|jd5}|ddddn#1swxYwY	tj|j|jn/#t$r"}|
d|zYd}~nd}~wwxYwtjtd|_
|j
|jdS)Nrrrfoorr)rcrdrerbrrr$rr_rrr%rrFr)rrYrs   rrGzHardlinkTest.setUpCs:7<<//7<<//
$(D
!
!	TJJv																/GDHdh''''	/	/	/MM/A-........	/<--TXs**BBBB88
C$CC$c|jtj|jtj|jdSr)rFrIrrdrrrs rrJzHardlinkTest.tearDownRs@""""""""rc|j|j}||jt
jddS)Nzadd file as regular failed)rFrrrSrOr%r,rQs  rtest_add_twicezHardlinkTest.test_add_twiceWsH(%%dh//w,	.	.	.	.	.rc|j|j}||jt
jddS)Nzadd file as hardlink failed)rFrrrSrOr%rrQs  rtest_add_hardlinkzHardlinkTest.test_add_hardlink^sF(%%dh//w-	/	/	/	/	/rcd|j_|j|j}||jtjddS)NTzdereferencing hardlink failed)rFdereferencerrrSrOr%r,rQs  rtest_dereference_hardlinkz&HardlinkTest.test_dereference_hardlinkcsP#(%%dh//w/	1	1	1	1	1rN)rrr rGrJrqrsrvr)rrrlrl?s_


###
...///
11111rrlc(eZdZddZdZdZdZdS)PaxWriteTestNctj|}|r||_tj|_tjtdtj}	|||	n#|	wxYwtjt}	|r7|
dj}|||dn6|
dj}|||d|	dS#|	wxYw)NrrrzPAX longlink creation failedzPAX longname creation failed)
r%rrrrOr$rrwrrIrrSr)rrr_rXrFlns       rr
zPaxWriteTest._testls/$''	+#G"?GLl7C0BCCC	KK   IIKKKKCIIKKKKl7##	
JNN$$Q'0  q*HIIIINN$$Q',  q*HIIIIIKKKKKCIIKKKKsBB3A/D88Ecdddddd}tjtdtj|}	|tjd|n#|wxYwtjtd	
}	||j|||	dj||j
D]\}}|t|t|t|t|tjvrH	tj||#tt f$r|dYwxYw	|dS#|wxYw)
Nr0z1.23äöütest)rrrXrrr)rrmrBrgrz"unable to convert pax header field)r%r$rrwrrrIrSrmrrassertIsNotrOr=PAX_NUMBER_FIELDSrrEr)rrmrFkeyvals     rtest_pax_global_headerz#PaxWriteTest.test_pax_global_headers& &((l7C0B')))	KK//000IIKKKKCIIKKKKl7[999
	S_k:::S^^--a0<kJJJO1133
H
HS  cE222  cE222'333H1#6s;;;;%z2HHH		"FGGGGGH4
H
IIKKKKKCIIKKKKs<'A--B"C
G-FG&F1.G0F11GG"cddd}tjtdtjd}	tj}d|_d|_||_|||	n#|	wxYwtjtd	}	|
d
}||j|||jd||jd|	dS#|	wxYw)Nr123)rdrrrBrrDrrgrrr)r%r$rrwrrrrmrrIrrS)rrmrFrs    rtest_pax_extended_headerz%PaxWriteTest.test_pax_extended_headers" %U33l7C0B$/111	!!A#AFAE'AMKKNNNIIKKKKCIIKKKKl7[999	  #AQ]K888QVU+++QUC(((IIKKKKKCIIKKKKs=BB5A+D66Echtj}d|_d|_d|_d|_d|_|}||d}|	|dd|
|d	t|	|d	d
|	|dd|	|dd|	|d
d|	|dtdzdztdzdztdzdztdzdztdzdztdzdztdztj}d|_d|_d|_d|_d|_|}||d}|	|dd|	|d	d|	|dd|	|dd|	|d
d|	|dtdzdztdzdztdzdzdzd ztd!zd"ztd#zd$ztdzdztdzdS)%Nrg@@rrr|rBrgrrXrrUrrs././@PaxHeaderVs90000000000000000000000000000002000000000000010205 xsustar00s16 mtime=1000.1
irnas90000644000017300001740000000014400000001750006516 0ufoo㍴ld(	rirs90000000000000000000000000000013000000000000010207 xs15 path=foo㍴
16 uid=16777216
s$16 gid=16777217
20 size=10000000000
s21 mtime=10000000000
isfoo?`s90000644000000000000000000000000000000000000006540 0)
r%rrrXrUrrrcreate_pax_headerrSr*r8r=)rrinfoheaders    rtest_create_pax_headerz#PaxWriteTest.test_create_pax_headerso
Ozz||$$TK$@@fu---d7mS111g---fs+++ec***ec***b		)\
]Cjj
)
*+0::
6#
#&+3ZZ
039
9<A99
E]	
]
Cjj

*
*
-2#JJ
7	8	8	8
Ozz||$$TK$@@f{333g***fq)))ea(((ea(((b		)\
]Cjj
)
*,1#JJ
7<
<8	
8
(
(
*/s
4
7>
>
AFb		
J]

]Cjj
*
*-2#JJ
7	8	8	8	8	8rr)rrr r
rrrr)rrrxrxjsV0@25858585858rrxc8eZdZdZdZdZdZdZdZdZ	dS)	UnicodeTestc0|ddS)NrB_test_unicode_filenamers rtest_iso8859_1_filenamez#UnicodeTest.test_iso8859_1_filenames##K00000rc0|ddS)Nutf7rrs rtest_utf7_filenamezUnicodeTest.test_utf7_filenames##F+++++rc0|ddS)Nutf-8rrs rtest_utf8_filenamezUnicodeTest.test_utf8_filenames##G,,,,,rctjtd|j|d}	d}|tj||n#|wxYwtjt|}	||dj	||dS#|wxYw)NrrFrrDerrorsrrgr)
r%r$rrrrrIrSrr)rrDrFrs    rrz"UnicodeTest._test_unicode_filenamesl7C$,X???	!DKK--...IIKKKKCIIKKKKl7X666	S^^--a05t<<<IIKKKKKCIIKKKKs)A##A93C!!C7c|tjtd|jdd}	tj}d|_|t|j|d|_d|_	|t|j||
dS#|
wxYw)NrrrFrrr)r%r$rrrrrUnicodeErrorrrZrIros   rtest_unicode_filename_errorz'UnicodeTest.test_unicode_filename_errorsl7C$+H>>>
	o''G)GLlCKAAA GL*GMlCKAAAIIKKKKKCIIKKKKsA*B%%B;ctjtddd}	|D]}|t	|jt|t	|jt|t	|jt|t	|j	t	|
dS#|
wxYw)Nr^rBrFrDr)r%r$r!assertIsrOrr+rrZrrIrs   rtest_unicode_argumentz!UnicodeTest.test_unicode_argumentsl7C$/BBB	
2
2

d16llC000

d1:..444

d17mmS111

d17mmS1111	
2
IIKKKKKCIIKKKKsB9C//Dc\tjd}d|_d|_tjt
d|jd}	|||n#|wxYwtjt
d}	|	d}|
|jd|
|jd|jtjkrz|tjt
d}|	d}|
|jd|
|jd|dS#|wxYw)	NrrrrB)rrrDrgru	)r%rrZrr$rrrrIrPrSrw)rrrFs   rtest_uname_unicodezUnicodeTest.test_uname_unicode*sfOE""  l7T[$/111	KKNNNIIKKKKCIIKKKKl7[999	

e$$AQWn555QWn555{g000		l7W===MM%((  *>???  *>???IIKKKKKCIIKKKKsA00B%CFF+N)
rrr rrrrrrrr)rrrrs}111,,,---








rrc\eZdZejZdZdZdZdZ	dZ
dZddZd	Z
d
ZddZdS)
UstarUnicodeTestc|d|dt|d|dtdSNre01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890ud01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567ÿue012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678ÿ_test_ustar_namerErs rtest_unicode_name1z#UstarUnicodeTest.test_unicode_name1M`/0005zBBB?@@@@*MMMMMrcf|d|dtdSNud012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345ÿÿue0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456ÿÿrrs rtest_unicode_name2z#UstarUnicodeTest.test_unicode_name2S4ABBBBJOOOOOrc|d|dt|d|dtdS)Na01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789a0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123/40123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012ÿ/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123ÿ/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789rrs rtest_unicode_longname1z'UstarUnicodeTest.test_unicode_longname1YsbNOOONPZ[[[PQQQQS]^^^^^rcr|dt|dtdS)Nu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901ÿ/20123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901ÿÿ/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789rrs rtest_unicode_longname2z'UstarUnicodeTest.test_unicode_longname2_s8PR\]]]SU_`````rc|dt|d|dtdS)Nu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901ÿÿ/20123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567ÿu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678ÿrrs rtest_unicode_longname3z'UstarUnicodeTest.test_unicode_longname3csMTV`aaa^____aklllllrcf|d|dtdS)Nu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345ÿÿu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456ÿÿrrs rtest_unicode_longname4z'UstarUnicodeTest.test_unicode_longname4hs5`aaaacmnnnnnrNctjtd|jd5}tj|}|||n|||j|dddn#1swxYwY|Wtjtdd5}|D]}|||jddddS#1swxYwYdSdS)Nrrrr^rg)	r%r$rrrrrrSrrrexcrFrs     rrz!UstarUnicodeTest._test_ustar_namels_
\'3t{W
M
M
M	7QT%%A{A!!#s{A666	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7;gsW===
A$$T16222

















;s$A	A88A<?A<!!CCCc|d|dt|d|dtdSr_test_ustar_linkrErs rtest_unicode_link1z#UstarUnicodeTest.test_unicode_link1{rrcf|d|dtdSrrrs rtest_unicode_link2z#UstarUnicodeTest.test_unicode_link2rrctjtd|jd5}tjd}||_|||n|||j|dddn#1swxYwY|Wtjtdd5}|D]}|||jddddS#1swxYwYdSdS)Nrrrrr^rg)	r%r$rrrrrrrSrs     rrz!UstarUnicodeTest._test_ustar_linksf
\'3t{W
M
M
M	7QT&&AAJ{A!!#s{A666
	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7;gsW===
A$$T1:666

















;s$AA??BB(!CCCr)rrr r%rrrrrrrrrrrrr)rrrrFs

!F
NNNPPP___aaammm
oooNNNPPP





rrc"eZdZejZdZdS)GNUUnicodeTestcdD]u\}}tjt|d5}	||}n%#t$r|dYnwxYwdddn#1swxYwYvdS)N))rupax/bad-pax-)rBupax/bad-pax-äöürrz%unable to read bad GNU tar pax headerr%r$r!rPrTrrrDrrFrs     rtest_bad_pax_headerz"GNUUnicodeTest.test_bad_pax_headers<	G	GNHdg%6888
G;>G

d++AAGGGIIEFFFFFG	
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G	G	G1A-<A-AA-AA--A1	4A1	N)rrr r%rfrrr)rrrrs0

FGGGGGrrc&eZdZejZdZdZdS)PAXUnicodeTestNcdD]u\}}tjt|d5}	||}n%#t$r|dYnwxYwdddn#1swxYwYvdS)N))rupax/hdrcharset-)rBupax/hdrcharset-äöürrz)unable to read POSIX.1-2008 binary headerrrs     rtest_binary_headerz!PAXUnicodeTest.test_binary_headers?	K	KNHdg%6888
K;>K

d++AAKKKIIIJJJJJK	
K
K
K
K
K
K
K
K
K
K
K
K
K
K
K	K	Kr)rrr r%rwrrrr)rrrrs8

F#'
K
K
K
K
Krrc"eZdZdZddZdZdS)AppendTestBasect|_tj|jrtj|jdSdSr)rr!rcrdrrrdrs rrGzAppendTestBase.setUpsD
7>>$,''	+T\*****	+	+rrctjtd5}|d}d|_||5}tj|j|5}|||dddn#1swxYwYdddn#1swxYwYddddS#1swxYwYdS)NrBrgrNr)r%r$r!rPrrQr)rrsrcrrJrFs      r_create_testtarzAppendTestBase._create_testtarsn
\'K
8
8
8	&C

o..AAF##
&q\$,55&KK1%%%&&&&&&&&&&&&&&&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&sY2B;B#)BB#BB#BB#B;#B'	'B;*B'	+B;;B?B?c|d|jz|tjtjtddS)Nrr)rrrr%rr$rrs rtest_append_compressedz%AppendTestBase.test_append_compressedsBTDK/000'+W\7CHHHHHrN)r)rrr rGrrr)rrrrsK+++
&&&&IIIIIrrcjeZdZdZddZdgdfdZdZdZdZdZ	d	Z
d
ZdZdZ
d
ZdZdZdS)
AppendTestNctj|jd|5}|tjdddddS#1swxYwYdS)Nrrr)r%r$r!rr)rr)rFs   r
_add_testfilezAppendTest._add_testfiles
\$,W
=
=
=	0KK..///	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0s(AAArctj|j|5}|||ddddS#1swxYwYdS)Nr)r%r$r!rSr)rrGr)rFs    rr
zAppendTest._tests
\$,
8
8
8	4CS\\^^U333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4s)AAAcV||dSr)rr
rs rtest_non_existingzAppendTest.test_non_existings%

rctj|jd||dS)Nr)r%r$r!rIrr
rs r
test_emptyzAppendTest.test_emptysET\4((..000

rctjd}|||d||dS)Nsrr)r"rrrwr
rs  rtest_empty_fileobjzAppendTest.test_empty_fileobjsNz,''4   		!

4
     rc^|t|jd5}|}dddn#1swxYwYt	j|}|||d|ddg|dS)Nrqrrr)rGr))	rr$r!rRr"rrrwr
rs   rtest_fileobjzAppendTest.test_fileobjs
$,
%
%	99;;D															z$4   		!

%
66666sAAAc|||ddgdS)Nrr)rG)rrr
rs r
test_existingzAppendTest.test_existingsD

%
(((((rct|jd5}||dddn#1swxYwY|tj|jdSr
)r$r!rrr%rr)rr
rYs   r_test_errorzAppendTest._test_errors
$,
%
%	JJt															'+T-?@@@@@s8<<c0|ddS)Nrrrs r	test_nullzAppendTest.test_nullsrc0|ddS)N
rrs rtest_incompletezAppendTest.test_incomplete	$$$$$rc|tjd}||dSNrr%rrrrr
s  rtest_premature_eofzAppendTest.test_premature_eof	s7u%%++--rctjd}||dzdS)Nrrrrs  rtest_trailing_garbagez AppendTest.test_trailing_garbage	s<u%%++--
*+++++rc0|ddS)Nsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarrs rtest_invalidzAppendTest.test_invalid	rrr)rrr rrr
rrrrrrrrrrrr)rrrrs!0000!'44444
!!!777)))AAA
%%%,,,%%%%%rrceZdZdS)GzipAppendTestNrr)rrrr	rrrceZdZdS)
Bz2AppendTestNrr)rrrr	rrrceZdZdS)LzmaAppendTestNrr)rrrr	rrrc eZdZdZdZdZdS)
LimitsTestcdtjd}|tjtjd}|t
|jtjtjd}|tjtjd}|t
|jtjtjd}|t
|jtjtjd}d|_|t
|jtjtjd}d|_|t
|jtjdS)	Nrra123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longnamea1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/longname123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longnamerAr )r%rrrrrErrrQs  rtest_ustar_limitszLimitsTest.test_ustar_limits	sL/"344

g*+++/"9::*gmW5IJJJ/":;;

g*+++/">??*gmW5IJJJ/";<<*gmW5IJJJ/*--4*gmW5IJJJ/&)) *gmW5IJJJJJrcltjd}|tjtjd}d|_|tjtjd}d|_|t|jtjdSNr	rArl)r%rrrfrrrrErQs  rtest_gnu_limitszLimitsTest.test_gnu_limits:	s/";<<

g()))/*--4

g()))/&))+*gmW5GHHHHHrcTtjd}|tjtjd}d|_|tjtjd}d|_|tjdSr
)r%rrrwrrrQs  rtest_pax_limitszLimitsTest.test_pax_limitsG	s/";<<

g()))/*--4

g()))/&))+

g()))))rN)rrr rrrr)rrrr	sGKKK>III
*
*
*
*
*rrc2eZdZdZdZdZdZdZdZdS)MiscTestcZ|tjddddd|tjddddd|tjdddd|tjd	ddddS)
NrrrFsfoofoobarrrnsfoobar)rSr%stnntsrs rtest_char_fieldszMiscTest.test_char_fieldsV	sUAwAA)	+	+	+Xq'8DD	!	!	!%5wII	 	 	 ]GXFF	 	 	 	 	 rc|tjdd|tjdd|tjdd|tjdd|tjd	d
|tjdd|tjd
d|tjdd|tjdddS)N0000001rr7777777 r
r]rrs       )rSr%ntirs rtest_read_number_fieldsz MiscTest.test_read_number_fields`	sT	
^44a888^44i@@@%HII#	%	%	%%HII#	%	%	%%HII			%HII			%HII+	-	-	-	
U++Q///\22A66666rc
|tjdd|tjdd|tjdtjd|tjdtjd	|tjd
tjd|tjdtjd
|tjdtjd|tjdtjd
|tjdtjd|tjtjdtjddS)Nrrrrrr
rzrrrr]r r"r!r$r#gYg0Bsgr)rSr%itnrfr%rs rtest_write_number_fieldsz!MiscTest.test_write_number_fieldst	sQ888Y//@@@Z8JKKK<	>	>	>Z8JKKK<	>	>	>R0BCCC<	>	>	>T'2DEEE<	>	>	>%7,3,>@@@<	>	>	>	
VG4FGGG<	>	>	>]7;MNNN<	>	>	>W[g>P%Q%Q%QRRTUVVVVVrc|t5tjddtjdddn#1swxYwY|t5tjddtjdddn#1swxYwY|t5tjddtjdddn#1swxYwY|t5tjddtjddddS#1swxYwYdS)Nr]rr
ll)rrEr%r(rrfrs rtest_number_field_limitsz!MiscTest.test_number_field_limits	s


z
*
*	5	5KAw3444	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5


z
*
*	=	=K
Aw';<<<	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=


z
*
*	?	?K7+=>>>	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?


z
*
*	>	>K
q'*<===	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>sG!AAA-!BB!B?!C,,C03C0!D??EEcFhd}tj|t|dS)N>8NULgrpr(r%rpwdrmainr+CHRTYPErPrr,SYMTYPEXGLTYPErvversionAREGTYPECONTTYPEFIFOTYPEfilemoder	GNU_MAGIC	GNU_TYPES
PAX_FIELDSr~
tar_filterFilterErrorrrPOSIX_MAGICcopyfileobjdata_filterExFileObjectcalc_chksums
LENGTH_PREFIX
REGULAR_TYPESEOFHeaderErrorGNUTYPE_SPARSEPAX_NAME_FIELDSSOLARIS_XHDTYPESUPPORTED_TYPESEmptyHeaderErrorGNUTYPE_LONGLINKreSpecialFileErrorAbsoluteLinkErrorAbsolutePathErrorrsymlink_exceptionInvalidHeaderErrorTruncatedHeaderErrorfully_trusted_filterSubsequentHeaderErrorOutsideDestinationErrorLinkOutsideDestinationError)not_exported)rcheck__all__r%)rrWs  rtest__all__zMiscTest.test__all__	s3"	T7FFFFFFrc,tjtjtd}|tj5}t
jdf}tj
jtj
d|5t
j|dddn#1swxYwYdddn#1swxYwY|dt!|jdS)Nrzlzma module is not availabler=)rz?
- method xz: CompressionError('lzma module is not available')
)rcrdredirname__file__rr%rCompressionErrorrrrrr&r$rr+	exception)rfnameexcinfors    r.test_useful_error_message_when_modules_missingz7MiscTest.test_useful_error_message_when_modules_missing	s^RW__X668HII


w0
1
1	$W,-KLLME$++GOXSX+YY
$
$U###
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$
	


O!""	
	
	
	
	
s7"AC!)C
>C!
C	C!C	C!!C%(C%N)	rrr rr&r)r,rYrar)rrrrT	st   777(WWW.>>>GGG(









rrceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdS)CommandLineTestctjddg|Ri|\}}}|tjdS)N-mr%
)rassert_python_okrrclinesepr)rargsrrcrerrs      r
tarfilecmdzCommandLineTest.tarfilecmd	s_$5dI@@@@8>@@C{{2:,,..666rc(tjddg|RS)Nrer%)rassert_python_failure)rris  rtarfilecmd_failurez"CommandLineTest.tarfilecmd_failure	s24JTJJJJrcntjddtjddg}|tj|tj|d5}|D]6}||tj	
|7	ddddS#1swxYwYdS)Ntokenize_tests.txttokenizedatar=9tokenize_tests-no-coding-cookie-and-utf8-bom-sig-only.txtrr)rr rcrrdr%r$rrcrdr)rtar_namefilesrtardatas     rmake_simple_tarfilez#CommandLineTest.make_simple_tarfile	s !"6)7999!#>)7999:
	
	((333
\(C
(
(	CB 
C
Cw(8(8(A(ABBBB
C	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C	Cs":B**B.1B.c|tj|tj|d5}tjd}||tjdtjd}||tjdddddS#1swxYwYdS)Nrbenignrr../evil)	rcrrdr%r$rrr"r)rrurrzevils     rmake_evil_tarfilez!CommandLineTest.make_evil_tarfile	s	((333
\(C
(
(	6B_X..FJJvrz#J777?9--DJJtRZ__J555		6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6sA;B>>CCc|\}}}||d|d||d||d||dd\}}}||d||ddS)Nrsusageserrorsrequired-lr)rorSrlowerr>strip)rrjrrks    rtest_bad_usezCommandLineTest.test_bad_use	s..00Cc"""

h		,,,

h		,,,

k399;;///..tR88Cc"""CIIKK-----rc|tD]3}dD].}|||}||d/4dS)N)-tz--testr)testtarnamesrlrSrruoptrs    rtest_test_commandz!CommandLineTest.test_test_command	s[$	+	+H%
+
+ooc844  c****
+	+	+rctD]6}dD]1}||d|d}|d|27dS)N-vz	--verboserrPYTHONIOENCODINGsis a tar archive.
)rrlrrs    rtest_test_command_verbosez)CommandLineTest.test_test_command_verbose	sj$	;	;H(
;
;ooc47>&@@

4c::::
;	;	;rcptjd}|d|\}}}|d|||d||dt
D]<}||5t|d5}|}dddn#1swxYwY	ttd5}|
|dd	dddn#1swxYwY|dt\}}}||d||dtjtn#tjtwxYw	dddn#1swxYwY>dS)
N
zipdir.zipr is not a tar archive.rrr)rurqrrr)
rr rorrSrsubTestr$rRrrrrd)rzipnamerjrrkrurJr
s        rtest_test_command_invalid_filez.CommandLineTest.test_test_command_invalid_file	sV"<00..tW==C

/555c"""Q$	.	.Hx00

.

.(D))$Q6688D$$$$$$$$$$$$$$$.gt,,,TcT
+++,,,,,,,,,,,,,,,#'#:#:4#I#ILBS$$S#...$$R+++$W----I$W-----

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.	.	.ssF)"C7F)CF)
CF)E>$DE>DE>DAE>$F)>FF))F-	0F-	ctD]}tj5}tj|d5}|ddddn#1swxYwYdddn#1swxYwY|dd}dD]0}|||d}|	||1dS)Nr^Frrr)rz--listr
rrcaptured_stdoutr%r$rnrrrlrSrrurrexpectedrrs       rtest_list_commandz!CommandLineTest.test_list_command	sb$	0	0H(**
+a\(C00+BGGEG***+++++++++++++++
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+zz||**74FGGH%
0
0ooc87>&@@  h////
0	0	04A-A
A-AA-AA--A1	4A1	ctD]}tj5}tj|d5}|ddddn#1swxYwYdddn#1swxYwY|dd}dD]1}||d|d}|	||2dS)	Nr^Trrrrrrrrs       rtest_list_command_verbosez)CommandLineTest.test_list_command_verbose	
sd$	0	0H(**
*a\(C00*BGGDG)))***************
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*zz||**74FGGH(
0
0ooc47>&@@  h////
0	0	0rctjd}|d|\}}}|d|||d||ddS)Nrrrrrr)rr rorrSrrrjrrks     rtest_list_command_invalid_filez.CommandLineTest.test_list_command_invalid_file
st"<00..tW==C

/555c"""Qrctjddtjddg}dD]}	|j|tg|R}||dtjt5}|dddn#1swxYwYtj	t#tj	twxYwdS)Nrqrrrsrt)-cz--creater)
rr rlrrSr%r$rrrdrrvrrrFs     rtest_create_commandz#CommandLineTest.test_create_command
s1!"6)7999!#>)7999:
$	*	*C
*%doc7;U;;;  c***\'**%cNN$$$%%%%%%%%%%%%%%% ))))	 ))))	*	*s0AB;5B
B;B	B;B	B;;Cctjddtjddg}dD]}	|j|dtg|Rddi}|d	|tjt5}|dddn#1swxYwYtj	t#tj	twxYwdS)
Nrqrrrsrtrrrrs file created.)
rr rlrrr%r$rrrdrs     rtest_create_command_verbosez+CommandLineTest.test_create_command_verbose*
sM!"6)7999!#>)7999:
%	*	*C
*%doc4@5@@@7>@@

/555\'**%cNN$$$%%%%%%%%%%%%%%% ))))	 ))))	*	*s0AB?9BB?B	B?!B	"B??Cctjddg}	|jdtg|R}||dtjt5}|dddn#1swxYwYtj	tdS#tj	twxYw)Nrqrrrsrr)
rr rldotlessnamerSr%r$rrrd)rrvrrFs    r$test_create_command_dotless_filenamez4CommandLineTest.test_create_command_dotless_filename:
s!"6~NNNO	*!$/$<e<<<CS#&&&k**
!c   
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
[)))))I[))))s0AB#A=1B#=BB#BB##B>ctjtd}t	jddg}	|jd|g|R}||dtj	|5}|
dddn#1swxYwYtj|dS#tj|wxYw)Nz.testtarrqrrrsrr)
rcrdrerbrr rlrSr%r$rrrd)rrurvrrFs     r(test_create_command_dot_started_filenamez8CommandLineTest.test_create_command_dot_started_filenameD
s7<<44!"6~NNNO	'!$/$95999CS#&&&h''
!3   
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
X&&&&&IX&&&&s/9B97BB9BB9B B99Cctjddtjddg}tttfD]}|js
	tdz|jz}|jd|g|R}|	|5}|
dddn#1swxYwYtj|#tj|wxYwdS)Nrqrrrsrtrr)
rr r+r2r8r$rrrlr'rrrd)rrvfiletyperurrFs      rtest_create_command_compressedz.CommandLineTest.test_create_command_compressedO
sC!"6)7999!#>)7999:
"7H5		+		+H=

+"S=8?:%dodH=u===%%h//%3NN$$$%%%%%%%%%%%%%%% ****	 ****		+		+s06CB#C#B'	'C*B'	+CCcx|tdD]}	tjt5||t}dddn#1swxYwY||dtjt#tjtwxYwdS)N)-ez	--extractrrxrrr	tarextdirrlrSr|rrrs   rtest_extract_commandz$CommandLineTest.test_extract_command`
s  )))$	,	,C
,'	2288//#w77C888888888888888  c*** ++++	 ++++
	,	,s.BA!B!A%	%B(A%	)BB7c~|tdD]}	tjt5||dtd}dddn#1swxYwY|d|tjt#tjtwxYwdS)Nrrrr file is extracted.)rxrrrrrlrr|rs   rtest_extract_command_verbosez,CommandLineTest.test_extract_command_verbosej
s  )))$	,	,C
,'	22DD//#tW;B*DDCDDDDDDDDDDDDDDD

4c::: ++++	 ++++	,	,s.BA$B$A(	(B+A(	,BB:c	&|ttjt
d}tjt
	tj|5|	dtddd|
dtdddd}|d	|dddn#1swxYwYtjt
dS#tjt
wxYw)
Ndestrrz--filterr
rprrr)
r}rrcrdrerrrrrorlrr|)rdestdirrs   rtest_extract_command_filterz+CommandLineTest.test_extract_command_filteru
s>w'''',,y&11
	(#G,,
;
;''g(,(2F<<<oodG&*&0/7>&@@

4c:::
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
Y'''''IY''''s1C5.ACC5CC5CC55Dcp|t	tjt5|dtd}dddn#1swxYwY||dtjtdS#tjtwxYw)Nrspamdirrr)rrs  r(test_extract_command_different_directoryz8CommandLineTest.test_extract_command_different_directory
s  )))	(#I..
@
@oodGY??
@
@
@
@
@
@
@
@
@
@
@
@
@
@
@S#&&&Y'''''IY''''s.BABA""B%A"&BB5cHtjd}tjt5|d|\}}}dddn#1swxYwY|d|||d||ddS)Nrrrrrr)rr rrrrorrSrs     r!test_extract_command_invalid_filez1CommandLineTest.test_extract_command_invalid_file
s"<00

	
*
*	B	B224AALBS	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B

/555c"""QsAAAN)rrr rlrorxr}rrrrrrrrrrrrrrrrrr)rrrcrc	sU777
KKK	C	C	C666...+++;;;...(	0	0	0	0	0	0   
*
*
**** ***	'	'	'+++",,,	,	,	,(((&(((     rrcc2eZdZdZdZdZdZdZdZdS)ContextManagerTestctjt5}||jddddn#1swxYwY||jddS)Nzclosed inside runtime contextcontext manager failed)r%r$r!rrrrs  r
test_basiczContextManagerTest.test_basic
s
\'
"
"	JcSZ)HIII	J	J	J	J	J	J	J	J	J	J	J	J	J	J	J
$<=====sAA	Actjt}||t
5|5	dddn#1swxYwYddddS#1swxYwYdSr)r%r$r!rIrrrs  rtest_closedzContextManagerTest.test_closed
sl7##		


w
'
'		
















																		s6A1A
A1A	A1 A	!A11A58A5c<|t5}tjt5}t
#1swxYwY	dddn#1swxYwY||jt
d||j	ddS)Nz)wrong exception raised in context managerr)
r	Exceptionr%r$r!rr*r^rr)rrrFs   rtest_exceptionz!ContextManagerTest.test_exception
s


y
)
)	Sg&&
#









																
cmWI	K	K	K
$<=====s,A=A	AA	AAAc	tjtd5}t#1swxYwYn#YnxYw|t
jtdd||j	ddS)Nrrz-context manager wrote an end-of-archive blockr)
r%r$rrrSrcrdrrrrs  rtest_no_eofzContextManagerTest.test_no_eof
s	gs++
 s
 
 
 
 
 
 
 
 
 	D111?	A	A	A
$<=====s0$(0(04ctjtd5	dddn#1swxYwY|tjtdddS)Nrrz-context manager wrote no end-of-archive block)r%r$rr>rcrdrrs rtest_eofzContextManagerTest.test_eof
s\'3
'
'																	BGOOG44a?	A	A	A	A	As)--c2ttd5}	tj|d5}t#1swxYwYn#YnxYw||jd||jdddddS#1swxYwYdS)Nrrr(zexternal file object was closedr)r$rr%rrrrr-s   rrzContextManagerTest.test_fileobj
s'4
 
 	BD
\$S999$S#O$$$$$$$$$
T[*KLLLOOCJ(@AAA	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	Bs>BA6:	A:	ABA;BBBN)	rrr rrrrrrr)rrrr
sv>>>
>>>
>
>
>AAA
B
B
B
B
Brrzrequires os.link to be missingcHeZdZdZejeejdddZ	ejeejdddZ
ejeedddZejeeddd	Zd
S)LinkEmulationTestcX|j|tdttjt|d5}|}dddn#1swxYwY|t|tdS)Nrpr\rq)rFrarbr$rcrdrerRrSrrV)rrrJr
s    r_test_link_extractionz'LinkEmulationTest._test_link_extraction
sw???
"',,w--t
4
4	6688D															4.99999sA77A;>A;islinkz3Skip emulation - has os.path.islink but not os.linkc0|ddS)Nrrrs rtest_hardlink_extraction1z+LinkEmulationTest.test_hardlink_extraction1
	
""?33333rc0|ddS)Nrrrs rtest_hardlink_extraction2z+LinkEmulationTest.test_hardlink_extraction2
	
""#>?????rrz Skip emulation if symlink existsc0|ddS)Nrrrs rtest_symlink_extraction1z*LinkEmulationTest.test_symlink_extraction1
rrc0|ddS)Nrrrs rtest_symlink_extraction2z*LinkEmulationTest.test_symlink_extraction2
rrN)
rrr rrrrrcrdrrrrr)rrrr
s+:::X_WWRWh//JLL44LL4X_WWRWh//JLL@@LL@X_WWR++79944994X_WWR++799@@99@@@rrc eZdZdZdZdZdS)Bz2PartialReadTestcjGfddtjtjt	jd}tt|dzD]?}	t	j	|d||+#tj
$rY<wxYwdS)Nc2eZdZdZfdZfdZxZS)9Bz2PartialReadTest._test_partial_input.<locals>.MyBytesIOFc|jrtd|t|k|_t||S)Nz(infinite loop detected in tarfile.open())hit_eofAssertionErrorrxrTrsuperrR)rr|	MyBytesIO	__class__s  rrRz>Bz2PartialReadTest._test_partial_input.<locals>.MyBytesIO.read
sf<;(*:;;;#yy{{c$--//.B.BBY--221555rcBd|_t|j|Sr)rrrw)rrirrs  rrwz>Bz2PartialReadTest._test_partial_input.<locals>.MyBytesIO.seeks$$2uY--2D99r)rrr rrRrw
__classcell__)rrs@rrr
saG
6
6
6
6
6
6
:
:
:
:
:
:
:
:
:
:rrrrrr()r"rr3compressr%rrrangerTr$r)rrr
rNrs    @r_test_partial_inputz&Bz2PartialReadTest._test_partial_input
s
	:
	:
	:
	:
	:
	:
	:

	:
	:
	:|GOE2288::;;s4yy1}%%		A
YYtBQBx%8%8tDDDDD$



		s6'BB0/B0c0|ddS)Nr^rrs rtest_partial_inputz%Bz2PartialReadTest.test_partial_inputs  %%%%%rc0|ddS)Nrcrrs rtest_partial_input_bz2z)Bz2PartialReadTest.test_partial_input_bz2s  )))))rN)rrr rrrr)rrrr
sA(&&&*****rrc	ddl}ddl}n#t$rYdSwxYw|dddkrdS|dddkrdSdS)NrFrootT)r0r/ImportErrorgetpwuidgetgrgid)r0r/s  rroot_is_uid_gid_0rsuu
||AqV##u
||AqV##u4s
chownzmissing os.chowngeteuidzmissing os.geteuidc eZdZedZeedZej	dej	dej	ddZ
ej	dej	dej	ddZeje
dej	dej	dej	dd	Zej	dd
ZdS)NumericOwnerTestctjd}|ddtj|f|ddtjdf|ddtj|fg}tjtd5}|D]U\}}}}	}
tj|}||_||_	d	|_
d	|_|	|_|
||
V	dddn#1swxYwYtS)
NscontentcbMLXWrr)r"rr%r,rPr$rrrrrZrrOr)
filename_1	dirname_1
filename_2rYrtarflrrrtypcontentsrs            r_make_test_archivez#NumericOwnerTest._make_test_archive*s!z*%%b"got<b"got<b"got<\'3
'
'	+516
+
+-c3XOD))  

a****
+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+s!ACCCc#
Kd|_d}d}|}|}tj||}t|||}t
j|5}||||fVddddS#1swxYwYdS)Nrznumeric-owner-testfiler)rrcrdrerrr%r$)mock_geteuidr_r[rrrtar_filenamer	s        r_setup_testzNumericOwnerTest._setup_testBs%&!(
	W\\'511
(:::;D;EGG\,
'
'	;5Y
::::	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;s"	A88A<?A<zos.chownzos.chmodz
os.geteuidc$||5\}}}}||tdd||tdddddn#1swxYwYtjt|}tjt|}	|tj	|ddtj	|	ddgddS)	NTrp
numeric_ownerr]rrrr	any_order)
rrarbrcrdreassert_has_callsrrcall)
rr
mock_chmod
mock_chownr	r_rf_filename_1f_filename_2s
          rtest_extract_with_numeric_ownerz0NumericOwnerTest.test_extract_with_numeric_ownerXsH


l
+
+	20<z10:MM*gT!0

2
2
2MM*wd!0

2
2
2		2	2	2	2	2	2	2	2	2	2	2	2	2	2	2w||GZ88w||GZ88##X]%7%7b"%M%M%-]%7%7b"%M%M%'/3	$	4	4	4	4	4sAA$$A(+A(c	p||5\}}}}|tdddddn#1swxYwYtjt|}tjt|}	tjt|}
|tj	|ddtj	|	ddtj	|
dd	gd
dS)NTrprrrrrrrr)
rrhrbrcrdrerrrr)rrrrr	rrrrf_dirname_1rs           r"test_extractall_with_numeric_ownerz3NumericOwnerTest.test_extractall_with_numeric_ownermsP


l
+
+	50<z90:WD$3

5
5
5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5w||GZ88w||GY77w||GZ88##X]%7%7b"%M%M%-]%7%7R%L%L%-]%7%7b"%M%M%'/3		$	4	4	4	4	4s#AA	A	z uid=0,gid=0 must be named "root"c||5\}}}}||tdddddn#1swxYwYtjt|}||dddS)NFrprr)rrarbrcrdreassert_called_with)rrrrr	rrrs        r"test_extract_without_numeric_ownerz3NumericOwnerTest.test_extract_without_numeric_owners

l
+
+	2/Hz1aMM*gU!0

2
2
2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2
w||GZ88%%lAq99999s$AA

A
c	||5\}}}}|t|j|tddddddS#1swxYwYdS)NFT)rrrrarb)rrr	rrs     rtest_keyword_onlyz"NumericOwnerTest.test_keyword_onlys


l
+
+	O/Hz1ai#mZ%
O
O
O	O	O	O	O	O	O	O	O	O	O	O	O	O	O	O	O	O	Os/AAAN)rrr rgrrrrrrrr rrr#r%r)rrrr!s\.;;^\;(]$$
]$$
]&&44'&%$%$4$]$$
]$$
]&&44'&%$%$4,X**,,;==
]$$
]$$
]&&	:	:'&%$%$==
	:]&&OO'&OOOrrc,eZdZdZdZdZdZdZdS)ReplaceTestsc8|jd}|d}||jd||jd||jdjddS)NrNz
misc/otherr))rFrPrrSrrr	replaceds   rtest_replace_namezReplaceTests.test_replace_names##O44>>|>44555o666++O<<A(	*	*	*	*	*rc*|jd}|}d|jd<||jdd||jdjdddS)Nrlnot-barrrrFrPrrmrSr)s   rtest_replace_deepzReplaceTests.test_replace_deeps##N33>>##(1W%+G4e<<<H~..:7CU	L	L	L	L	Lrc.|jd}|d}d|jd<||jdd||jdjdddS)NrlF)deepr-rr.r)s   rtest_replace_shallowz!ReplaceTests.test_replace_shallows##N33>>u>--(1W%+G4i@@@H~..:7CY	P	P	P	P	PrcN|jd}dD]}||5|jdi|di}|t||d|t||ddddn#1swxYwYdS)NrN)rrXrrrrrZr	attr_namer))rFrPrrrSr0r>)rr	r5r*s    rtest_replace_allzReplaceTests.test_replace_alls
##O44:	F	FI	22
F
F)6>>>Y,=>>  9!=!=tDDD##GFI$>$>EEE
F
F
F
F
F
F
F
F
F
F
F
F
F
F
F	F	FsABB	 B	c|jd}|t5|dddddS#1swxYwYdS)NrNi[)rI)rFrPrrr)rr	s  rtest_replace_internalz"ReplaceTests.test_replace_internals##O44


y
)
)	-	-NN)N,,,	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-sAA AN)rrr r+r/r2r6r8r)rrr'r'sh***LLLPPPFFF-----rr'ceZdZdZedZedZdZedZ	dZ
dZdZd	Z
d
ZdZdZdS)
NoneInfoExtractTestsNctjtdd}tjt
dz_d|_|jj	|
tfdtjjdD_
dS)	Nr^rBrCextractall_ctrlrr\c3LK|]}|jVdSr)relative_tocontrol_dir)rmpr>s  r	<genexpr>z2NoneInfoExtractTests.setUpClass.<locals>.<genexpr>sM A A
MM#/** A A A A A Ar**/*)r%r$r!rrrbr?rbrhextraction_filterrIsetglob
control_paths)r>rFs` rr?zNoneInfoExtractTests.setUpClasssl7{CCC!,w//2CCss/DEEE		 A A A A\#/2277?? A A AAArc8tj|jdSr)shutilr|r?rAs rrBz"NoneInfoExtractTests.tearDownClasss
co&&&&&rctfdtjdD}||j|dS)Nc3BK|]}|VdSr)r>)rmr@rs  rrAz;NoneInfoExtractTests.check_files_present.<locals>.<genexpr>sC;;
MM)$$;;;;;;rrB)rDrrrErSrF)rr	got_pathss ` rcheck_files_presentz(NoneInfoExtractTests.check_files_presentsq;;;;\),,11&99;;;;;		
+Y77777rc'Ktjtdz}d|j_|jD]}|D]}t
||dtj|5|j	|d|
||VddddS#1swxYwYdS)Nextractall_nonerrpr\)rrrbrFrbrsetattrrrrhrL)r
attr_namesr}r	r5s     rextract_with_nonez&NoneInfoExtractTests.extract_with_nonesl7##&77h))++	1	1F'
1
1		40000
1


$
$		HO<<<$$S)))III																		s16B44B8;B8cNtjtj}|d5}tj|dD]}||5	|j}||j|n%#t$r|
sYnwxYwdddn#1swxYwY	ddddS#1swxYwYdS)NrXrBrd)rrrbryst_mtimerQrErassertGreaterEqualr
is_symlink)rnowr}rdrXs     rtest_extractall_none_mtimez/NoneInfoExtractTests.test_extractall_none_mtimesl7##((**3

#
#G
,
,
	KS))..v66	
K	
K\\t\,,KKK $		 4//		0DcJJJJ#"""#00"!"""KKKKKKKKKKKKKKK	
K
	K
	K
	K
	K
	K
	K
	K
	K
	K
	K
	K
	K
	K
	K
	K
	K
	K
	Ks[ADDC!.DC1	.D0C1	1D4DDDDDD!Dctjtj}tjtdz}|d|j}|d5}tj|dD]}||5|	r.|
|j|nA|r-|
|j|dddn#1swxYwY	ddddS#1swxYwYdS)Nregular_filerrrBrS)rrrbryrz
write_textrQrEris_dirrSis_file)rdir_moderZregular_file_moder}rds      rtest_extractall_none_modez.NoneInfoExtractTests.test_extractall_none_modes<((--//7|G,,~=###(--//7

#
#F
+
+	<sS))..v66
<
<\\t\,,<<{{}}<(()<hGGGG<(()<):<<<	<<<<<<<<<<<<<<<
<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<s8AE:BE E: E$$E:'E$(E::E>E>cd|d5	ddddS#1swxYwYdS)NrrQrs rtest_extractall_none_uidz-NoneInfoExtractTests.test_extractall_none_uid}

#
#E
*
*																				%))cd|d5	ddddS#1swxYwYdS)Nrrbrs rtest_extractall_none_gidz-NoneInfoExtractTests.test_extractall_none_gidrdrecd|d5	ddddS#1swxYwYdS)NrZrbrs rtest_extractall_none_unamez/NoneInfoExtractTests.test_extractall_none_uname}

#
#G
,
,																				recd|d5	ddddS#1swxYwYdS)Nrrbrs rtest_extractall_none_gnamez/NoneInfoExtractTests.test_extractall_none_gnamerjrecj|dddd5	ddddS#1swxYwYdS)NrrrZrrbrs rtest_extractall_none_ownershipz3NoneInfoExtractTests.test_extractall_none_ownerships

#
#E5'7
C
C																				s(,,)rrr rCrVr?rBrLrrQrXr`rcrgrirlrnr)rrr:r:sAA[A''['888		^	KKK <<< rr:ceZdZdZdS)NoneInfoExtractTests_Datar
Nrrr rCr)rrrprp#srrpceZdZdZdS)!NoneInfoExtractTests_FullyTrustedrpNrqr)rrrsrs&s'rrsceZdZdZdS)NoneInfoExtractTests_TarrFNrqr)rrruru*srruceZdZdZdS)NoneInfoExtractTests_DefaultNrqr)rrrwrw-srrwceZdZdZdZdS)NoneInfoTests_Miscc
tj}tjtjtjfD]&}||5tj|d|}|t}	|
|dD]}||5|jdi|di}|t|5|
|dddn#1swxYwYdddn#1swxYwYn"#t$r|tjkrnYnwxYwdddn#1swxYwY(dS)N)	tarformatr)r)rr)rXrrrrZrr4r))r"rr%rrfrwrr$rr!rrrrEr)rbior{rFrXr5r*s       rtest_addzNoneInfoTests_Misc.test_add2s=jll!.0B!,.	6	6I	22
6
6l3SKKK..116KK(((&666	!\\I\>>66'6w'K'K)T9J'K'KH!%!7!7
;D"H"H66 #H 5 5 56666666666666666666666666666666! G$888	
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6	6	6s~2ED$E2,D	D4D	DD	DD	ED
ED
E$EEEEE	E	c
4dhdhdhdhdhdhddhddhfD]}||5tjtd	5}t	jt	jd
d}tjtd
|5|
dddn#1swxYwY|D]}|D]}t||dt	jt	jd
d}tjtd
|5|
dddn#1swxYwYt||D]\}}|dhkr,t#jd|r||d9|dhkr,t#jd|r||dl|dhkr,t#jd|r||d|dhkrs|dr^|d\}	}
|d\}}|||
||d|dhkrs|dr^|d\}	}
|d\}}|||	||d|dhkrs|dr^|d\}	}
|d\}}|||
||d
|dhkrs|dr^|d\}	}
|d\}}|||	||d|ddhkrs|dr^|d\}	}
|d\}}|||
||d|ddhkrs|dr^|d\}	}
|d\}}|||	||d}|||	dddn#1swxYwYdddn#1swxYwYdS)NrXrrrrZr)rPrBrgrrrrs2003-01-\d\ds
????-??-??s\d\d:\d\d:\d\ds??:??:??s.([r-][w-][x-]){3}s
??????????)tarfile/lars/foo//s[0-9]+)/tarfile/users/bar1000/sNone/100)rrrr)rrrr)rr%r$r!r"rgrrrrrnrrOrrrrrematchrSrYrendswith)
rrPrFtio_prevr	r5tio_newrgotexp_user	exp_groupgot_user	got_groups
             rrzNoneInfoTests_Misc.test_listLs
$9vh%#9wi!7+eW-=?<	8<	8J,,*,559
89
8,w===9
8AD+BJLL'4PPP&sHh??HHJJJ!nn..99F%/99		488889*2:<<$OOO&sHg>>HHJJJ%():):)C)C)E)E)K)K)M)M)0)9)9)B)B)D)D)J)J)L)L&N&N.8.8MHc!gY..28<Lh3W3W.((m<<<<#y00RX>PRZ5[5[0((k::::#x//BH2H5>5>/((m<<<<#y00X5H5H<6>6>0.6nnT.B.B+).1iioo+)((I>>>((9====#y00X5F5F=6?6?0.6nnT.B.B+).1iioo+)((8<<<((I>>>>#w..83F3F%4(4(..6nnT.B.B+).1iioo+)((I>>>((7;;;;#w..83D3Dg3O3O..6nnT.B.B+).1iioo+)((8<<<((G<<<<#w'777H<O<OF=H=H7.6nnT.B.B+).1iioo+)((I>>>((7;;;;#'777H<M<MF=H=H7.6nnT.B.B+).1iioo+)((8<<<((G<<<<((37777].89
89
89
89
89
89
89
89
89
89
89
89
89
89
89
89
89
89
89
89
89
89
89
89
89
89
89
89
89
89
8<	8<	8sV
AU4B/	#U4/B3
3U46B3
7A3U4*E	?U4E
U4E
PU4(V4U88V;U8<VV	V	N)rrr r}rr)rrryry1s76664A8A8A8A8A8rryc	|dd}tjdd|dtjdd|dztjdtjtjztjd|dztjdd|dztjdd|dztjdtjtjztjd|d	ztj	dd|d
ztj
dd|dztjdtjtjztjd|d
z}|S)Nrrr)r^-)rr)rNrr{Srurr+)rNrrTr)
ryS_IRUSRS_IWUSRS_IXUSRS_ISUIDS_IRGRPS_IWGRPS_IXGRPS_ISGIDS_IROTHS_IWOTHS_IXOTHS_ISVTX)rstr_moderesults   r_filemode_to_intrsdABBxH1
%
%hqk
21
%
%hqk
231t|+&qk++
1
%
%hqk
231
%
%hqk
2
31t|+&qk+	+1
%
%hqk
2
31
%
%hqk
231t|+&qk++(Mrc<eZdZ	dZdZdZdddddddZdZdS)ArchiveMakerc6tj|_dSr)r"rr|rs rrzArchiveMaker.__init__s:<<rcFtjd|j|_|S)NrrH)r%r&r|tar_wrs r	__enter__zArchiveMaker.__enter__s_#tx@@@
rc|j|j|_d|_dSr)rrIr|rr)rrs  r__exit__zArchiveMaker.__exit__s6
))++
rN)rO
symlink_tohardlink_torrUc2	t|}tj|jdi|}|||_|rt||_| tj}t||_| tj	}t||_|
dr|tj}|||_|
r'tjt!|j}	nd}	|j||	dS)Nrr))r+r%rrrUrrr3rrrrPrOrr"rr=rr)
rrrOrrrrUrrXr)s
          rrzArchiveMaker.addsC4yy/'/$''/99&99GL	2+D11GL!?D":G"?D";//G==	#$,?DGL==??	jw|!4!455GGG
7G,,,,,rc\	tj|j}tjdd|i|S)Nr)r))r"rrr%r$)rrr|s   rr$zArchiveMaker.opens1Gj''|22C26222r)rrr rrrrr$r)rrrrs|	   
!%4D-----233333rrc<tjd|S)NzWASI: Skip symlink test for now)rskiprJs rsymlink_testrs?x}>??BBBrc|Srr)rs rrrsrcneZdZejedzZedzZedZ			d!dZ
d"dZdZd	Z
ed
ZedZedZd
ZedZedZedZedZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$d Z%dS)#TestExtractionFiltersouterdirrc#K	tj|j5	||j|d|_t
|jd|_|j	|jn1#t$r$}||_t
|_Yd}~nd}~wwxYw	dV|n#|wxYw|jr|j||jt
ddddS#1swxYwYdS)Nr\rB)
rrrrhrraised_exceptionrDrEexpected_pathsdiscardrrIrS)rrFr]rs    r
check_contextz#TestExtractionFilters.check_contexts	


.
.	9	9
:t|F;;;
)-%&)$-*<*<V*D*D&E&E##++DL9999

,
,
,(+%&)ee######
,
				$
,++T0#%%888!	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9sRD4BAD4
B<B72D47B<<D4CD4C//8D44D8;D8Nc	|jr|jtjtj|j|z}|||j|j	||ftjrStj
tj|j}||||6t#|t$r!|drt(j}|_|j|z}tj|}||kr(|||n|t(jks|(||n|t(jkr(||nG|t(jkr(||nt=||-||j||j D]}	|j!|	dS)Nr)"rrrrcrdnormpathrrrremover	can_chmodryr9S_IMODErzrSrtr+rr%rPreadlinkrsamefiler,r]r\r8is_fifoNotImplementedErrorrVparentsr)
rrrOrrrUrdrrparents
          rexpect_filez!TestExtractionFilters.expect_file
s)5 	(''|BG,,T\D-@AABB

dD/000""4(((	 3 5 5-TYY[[-@ A ABBCS$'''<JtS11<dmmC6H6H<?D!<$&0022C|J//H3X 6 6777
W_
$
$OODLLNN++++
W_
$
$OODKKMM****
W%
%
%OODLLNN++++%d+++TYY[[0$777l	0	0F''////	0	0rrc|||5|j|j	dddn#1swxYwYd|_dSr)rr)rexc_type
message_res   rexpect_exceptionz&TestExtractionFilters.expect_exception7
s

#
#Hj
9
9	,	,$0++1	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,!%s377c0t5}|ddddn#1swxYwYdD]W}|||5|ddddn#1swxYwYXdS)Nz
benign.txt)rprFr
rrrr$rrarcr]s   rtest_benign_filez&TestExtractionFilters.test_benign_file=
s
^^	"sGGL!!!	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"4	/	/F##CHHJJ77
/
/  ...
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/	/	/s155(B

B	B	ct5}||jdzdddn#1swxYwY||d5|ddddn#1swxYwYdD]}|||5t
|jdr@t
|jd}||dn |	tjddddn#1swxYwYdS)Nzescaped.evilrpz../escaped.evilrFr
rz
/escaped.evilz+['"].*escaped.evil['"] has an absolute path)rrrrr$rr+rYlstriprr%rO)rrr]outerdir_strippeds    r
test_absolutez#TestExtractionFilters.test_absoluteD
s/^^	4sGGDMN2333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4



O
<
<	0	0.///	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0$	K	KF##CHHJJ77

K

Kt}%%0055K),DM(:(:(A(A#(F(F%$$(9%H%H%HIIII))1IKKK

K

K

K

K

K

K

K

K

K

K

K

K

K

K

K	K	Ks29==,BBBBEE	 E	ct5}|dd|dd|ddddn#1swxYwYtjrv||d5|j(|t	ddddS|	dd|	dd|	d	dddn#1swxYwY||d	5|tjd
dddn#1swxYwY||d5|tjdddddS#1swxYwYdS||d5|	ddddn#1swxYwY||d	5|	ddddn#1swxYwY||d5|	dddddS#1swxYwYdS)
Ncurrentrrrz
current/..parent/evilrpr{rFT'parent/evil' would be extracted to ['"].*evil['"], which is outside the destinationr
zK'parent' would link to ['"].*outerdir['"], which is outside the destination)
rrrcan_symlinkrr$rrrJrr%rUrVrrs  rtest_parent_symlinkz)TestExtractionFilters.test_parent_symlink]
s^^
	#s

GGI#G...
GGHG666GGM"""
	#
	#
	#
	#
	#
	#
	#
	#
	#
	#
	#
	#
	#
	#
	# ""!	0##CHHJJ@@
0
0(4))/:::
0
0
0
0
0
0
0
0$$Y3$???$$X,$GGG$$Y////
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0##CHHJJ66
:
:%%39:::
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:##CHHJJ77
:
:%%79:::
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:##CHHJJ@@
0
0  ///
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0##CHHJJ66
0
0  ///
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0##CHHJJ77
0
0  ///
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0sAAA#&A#&#D&AD&&D*-D*!FF

F
9!G''G+.G+H>>II1JJJK))K-0K-ctjrEtjt
d}tj|tjdtj|dttj|dddd5	dddn#1swxYwYtj	tj|drd}nPtj	tj|ddrd}ntd	t5}|dd
|dd
|ddddn#1swxYwY|
|d
5tjrD|dd
|dd
|dn*|d|ddddn#1swxYwY|
|d5tjr!|t jdn*|d|ddddn#1swxYwY|
|d5tjrD|r!|t jdnK|t jdn*|d|dddddS#1swxYwYdS)Nresolution_testrrrrrTFz#Could not determine link resolutionrzcurrent/parentrrprr{zcurrent/rFrr
zS'current/parent' would link to ['"].*outerdir['"], which is outside the destination)rrrcrdrerbrrr$rrrrrrrr%rUrV)rtestpathdotdot_resolves_earlyrs    rtest_parent_symlink2z*TestExtractionFilters.test_parent_symlink2
s ""	Lw||G->??HHX
JsBGLL9==>>>bgll8YfEEsKK
















w~~bgll8V<<==	
L)-%%XtV D DEE
L).%%$%JKKK
^^
	#s
GGI#G...
GG$G666GGM"""
	#
	#
	#
	#
	#
	#
	#
	#
	#
	#
	#
	#
	#
	#
	#



O
<
<	0	0$&&
0  s ;;;  d ;;;  ++++  ,,,  ///	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0



E
2
2
	0
	0$&&	
0%%7,----  ,,,  ///
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0



F
3
3	0	0$&&
0(
1))#;01111))#?01111  ,,,  ///%	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0s^1B??CC(AF88F<?F<+BI99I=I=,ALLL
BOO Oct5}|d|j|ddddn#1swxYwY||d5tjr2|d|j|dn|ddddn#1swxYwY||d5tjr!|tj
dn|ddddn#1swxYwY||d5|tjd	ddddS#1swxYwYdS)
Nrrrrpr{rFrr
&'parent' is a link to an absolute path)rrrrr$rrrrr%rUrNrs  rtest_absolute_symlinkz+TestExtractionFilters.test_absolute_symlink
s^^	#sGGHG777GGM"""	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#



O
<
<	0	0$&&
0  dm DDD  ++++  ///	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0



E
2
2	0	0$&&
0%%7,----  ///	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0



F
3
3	:	:!!)8
:
:
:	:	:	:	:	:	:	:	:	:	:	:	:	:	:	:	:	:	:sI2A

AAAC''C+.C+A
E00E47E4#!GGGct5}|d|jdzdddn#1swxYwY||d5|tddddn#1swxYwY||d5|tddddn#1swxYwY||d5|tjdddddS#1swxYwYdS)	Nrrrrpz.*foo. not foundrFr
r)	rrrrr$rrTr%rNrs  rtest_absolute_hardlinkz,TestExtractionFilters.test_absolute_hardlinksl^^	AsGGH$-%*?G@@@	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A



O
<
<	@	@!!(,>???	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@



E
2
2	@	@!!(,>???	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@



F
3
3	:	:!!)8
:
:
:	:	:	:	:	:	:	:	:	:	:	:	:	:	:	:	:	:	:sC ;??.BBB	C11C58C5$!EEEct5}|dddddn#1swxYwY	||d5t	jrMt
|jtr|	tn|
ddn	dddn#1swxYwYn#t$rYnwxYwdD]b}|||5|	tjddddn#1swxYwYcdS)N../mooz..//tmp/moorrpr\rzH'../moo' would be extracted to '.*moo', which is outside the destination)
rrrr$rrrtrrJrrr%rUrs   rtest_sly_relative0z(TestExtractionFilters.test_sly_relative0s'^^	8sGGHG777	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	##CHHJJ#GG

(**!$"7II
M--o>>>>((m(LLLL














 			D	$	-	-F##CHHJJ77
-
-%%7,---
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-	-	-sT377)C"(A"C
C"CC"CC""
C/.C/!EE	E	ct5}|d|dddddn#1swxYwY||d5|dt
jtjr|dd	dddn#1swxYwYd
D]b}|||5|	t
j
ddddn#1swxYwYcdS)Nztmp/z
tmp/../../mooztmp/../..//tmp/moorrptmprOrztmp/../../tmp/moorzU'tmp/../../moo' would be extracted to ['"].*moo['"], which is outside the destination)rrrr$rr%rPrrrrUrs   rtest_sly_relative2z(TestExtractionFilters.test_sly_relative29s^^	FsGGFOOOGGO0DGEEE	F	F	F	F	F	F	F	F	F	F	F	F	F	F	F



O
<
<	K	KU999$&&
K  6I JJJ	K	K	K	K	K	K	K	K	K	K	K	K	K	K	K
$	%	%F##CHHJJ77
%
%%%3$%%%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%	%	%s6-AAA;ACCC
!D77D;	>D;	c	t5}|dd|dtjdd|dtjd	dd
dddn#1swxYwYdD]}|||5|dd|ddtj	r|ddd
n|dddddn#1swxYwYdS)Ntargetdir/targetrrlinkdir/hardlink	targetdirrrlinkdir/symlinkrrrFr
rpz../targetdir/targetrUr
rrrcrdrerr$rrrrs   rtest_deep_symlinkz'TestExtractionFilters.test_deep_symlinkMs
^^	.sGG&QG///GG&BGLLX5'5'G
(
(
(
GG%"',,k83-3-G
.
.
.
	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.5	@	@F##CHHJJ77
@
@  !3! <<<  !3! <<<(**@$$%6Q0E%GGGG$$%6Q$???
@
@
@
@
@
@
@
@
@
@
@
@
@
@
@	@	@s%BBB"%B"A2EE	E	clt5}|dd|dtjdd|dd	|d
d|dddddn#1swxYwYd
D]}|||5|dd	|d
d	|dd	tj	r1|ddd|dddn.|dd	|dd	dddn#1swxYwYdS)Nrhardlinkrsymlink2linkdir	hardlink2rrrrrzlinkdir/hardlink2rrrrs   rtest_chainsz!TestExtractionFilters.test_chainsest^^	HsGG%*G===GGJ27<<;,(,(G
)
)
)GG&QG///GG&4FGGGGGG'5FGGGG
	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H5	9	9F##CHHJJ77
9
9  !3! <<<  !3! <<<  !41 ===(**9$$%6Q0:%<<<$$Za0C%EEEE$$%6Q$???$$Za$888
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9	9	9s%BB--B14B1$B8F((F,	/F,	ct
t5}|dd|dd|dd|dd	|d
d|dd
dddn#1swxYwYtjt
d}t
|d5	dddn#1swxYwY		tj|tj|j	tj
znM#t$r@}|jttddkr|dnYd}~nd}~wwxYwtj|j	tj
z}tj|n#tj|wxYwtj|tj|tj|j	tj
ztj|j	tj
z}tj|||d5|r|ddn|dd|dd|dd|dd	|d
d|r|dd
n|dddddn#1swxYwY||d5|dd|dd|dd|dd	|d
d|dddddn#1swxYwY||d5tjtj|jj	}|dd|dd|dd|dd|d
d|d|ddddS#1swxYwYdS)Nall_bitsz
?rwsrwsrwtr	perm_bitsz
?rwxrwxrwxexec_group_otherz
?rw-rwxrwxread_group_onlyz
?---r-----no_bitsz
?---------zdir/z
?---rwsrwtztmp.filerEFTYPErz?chmod() failed with EFTYPE: regular users cannot set sticky bitrpz
?rwsrwsrwxz
?---rwsrwxrFz
?rwxr-xr-xz
?rw-r-xr-xz
?---r-xr-xr
z
?rw-r--r--z
?rw-r-----z
?rw-------)rrrcrdrerbr$chmodryrzrrerrnor0rrdrrrrr9rr)rrtmp_filenamerhave_sticky_fileshave_sticky_dirsnormal_dir_modes       r
test_modesz TestExtractionFilters.test_modess|^^	/sGGJ\G222GGKlG333GG&\G:::GG%LG999GGILG111GGFG...
	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/w||GZ88
,
$
$																		$

..6EGGGG


9x ; ;;;MM#HIIIIIIIII	
"$!6!6!>!MIl####BIl####

rw|44<t|KLLLGL119DLH





O
<
<	<	< 
@  , ????  , ???[|<<</lCCC.\BBBY\:::
<  l ;;;;  l ;;;	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<



E
2
2	8	8Zl;;;[|<<</lCCC.\BBBY\:::V,777
	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8



F
3
3	;	;"mDL
""$$,-.-.//OZl;;;[|<<</lCCC.\BBBY\:::V/:::	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;sBB&&B*-B*&C44C8;C89D;:G;
F6F;GF)GGB?MMM	BP  P$'P$C
T--T14T1cPt5}|dtjdddn#1swxYwYdD]z}|||5t
tdr"|dtjn	dddn#1swxYwY{||d5|	tj
dddddS#1swxYwYdS)Nrr)rprFmkfifor
z'foo' is a special file)rrr%r8rr$rrcrrrMrs   r	test_pipezTestExtractionFilters.test_pipes
^^	2sGGE 0G111	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2-		F##CHHJJ77

2x(($$U1A$BBBB


















F
3
3	+	+!!()
+
+
+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+s3"=AA49B99B=	B=	-!DD"DcxtjtjtjfD]}tjd}||_tj|d}|||tj|d}|	|j||
tj5}tj|ddddn#1swxYwY|
|jjtj|	|jjjddS)Nrr)r%r8r2r+rrOrSrr=rSrrMrAr*r^rXr)rspecial_typerXtrustedrFcms      rtest_special_filesz(TestExtractionFilters.test_special_filessK$,gowN
	?
	?Loe,,G'GL27B??GMM'7+++$Wb11CSX|444""7#;<<
1#GR000
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1!!","6HHHR\16>>>>
	?
	?s<CC"	%C"	ctjt5}|D]-}tj|d}|||.	ddddS#1swxYwYdSNr)r%r&r$r!rrSrrrFrXfiltereds    rtest_fully_trusted_filterz/TestExtractionFilters.test_fully_trusted_filters
_
!
!'
*
*	1c>>++
1
1"7DD

h0000
1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1sAA66A:=A:cZtjt5}|D]W}tj|d}||j|j||j|jX	ddddS#1swxYwYdSr)	r%r&r$r!rr=rrrOrs    rtest_tar_filterz%TestExtractionFilters.test_tar_filters_
!
!'
*
*	;c>>++
;
;"-gr::

hmW\:::

hmW\::::
;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;sA-B  B$'B$ctjt5}|D]n}	tj|d}n#tj$rY*wxYw||j|j||j	|j	o	ddddS#1swxYwYdSr)
r%r&r$r!rrAr>rrrOrs    rtest_data_filterz&TestExtractionFilters.test_data_filters_
!
!'
*
*	;c>>++
;
;&27B??HH*H

hmW\:::

hmW\::::

;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;s5B7AB7A%"B7$A%%AB77B;>B;c	t5}|ddddn#1swxYwYtj|5||d5|ddddn#1swxYwYddddS#1swxYwYdSr)rrr	check_no_warningsrr$rrs  rtest_default_filter_warns_notz3TestExtractionFilters.test_default_filter_warns_notslD
^^	sGGENNN															

.t
4
4	(	(##CHHJJ55
(
(  '''
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(sB266)B4:BB4B 	 B4#B 	$B44B8;B8ctjtd}d}||_||d5|dddddS#1swxYwYdS)Nr^c |jdkr|SdSNrNr)rXrds  r
strict_filterzSTestExtractionFilters.test_change_default_filter_on_instance.<locals>.strict_filter|..trrN)r%r&r!rCrr)rrFr*s   r&test_change_default_filter_on_instancez<TestExtractionFilters.test_change_default_filter_on_instance
sogs++			
!.


T
*
*	.	._---	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.sAA"%A"cRd}tjtd}tjtjdt|5||d5|ddddn#1swxYwYddddS#1swxYwYdS)Nc |jdkr|SdSr(r)r)s  rr*zPTestExtractionFilters.test_change_default_filter_on_class.<locals>.strict_filterr+rr^rCrN)r%r&r!rrrgrr)rr*rFs   r#test_change_default_filter_on_classz9TestExtractionFilters.test_change_default_filter_on_classs,			
ogs++

w0C+M::<<	2	2##C..
2
2  111
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2s6B"B8BB	BB	BB #B cGddtj}|td}||d5|dddddS#1swxYwYdS)NceZdZdZdS)QTestExtractionFilters.test_change_default_filter_on_subclass.<locals>.TarSubclassc |jdkr|SdSr(r)rrXrds   rrCzcTestExtractionFilters.test_change_default_filter_on_subclass.<locals>.TarSubclass.extraction_filter#s<?22"N4rNrqr)rrTarSubclassr2"s#
 
 
 
 
 rr5r^rN)r%r&r!rr)rr5rFs   r&test_change_default_filter_on_subclassz<TestExtractionFilters.test_change_default_filter_on_subclass!s	 	 	 	 	 '/	 	 	 k'3''


T
*
*	.	._---	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.sA##A'*A'ctjtd}d|_||d5|tddddS#1swxYwYdS)Nr^r
)r%r&r!rCrrrrs  r$test_change_default_filter_to_stringz:TestExtractionFilters.test_change_default_filter_to_string-sogs++ &


T
*
*	-	-!!),,,	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-sA  A$'A$cfd}t5}|d|d|ddddn#1swxYwY||5ddddddS#1swxYwYdS)Nc|j|jdkr|dS|jdkrdS|S)N	move_thismovedr)ignore_this)rrrr)rXrdrs  r
custom_filterz?TestExtractionFilters.test_custom_filter.<locals>.custom_filter4sQMM$---|{**G444|},,tNrr;r=keepr<r)rr>rs`  rtest_custom_filterz(TestExtractionFilters.test_custom_filter3sY					^^	sGGK   GGM"""GGFOOO															



M
:
:	%	%W%%%V$$$	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%s$AA!!A%(A%+CCCc2t5}|ddddn#1swxYwY||d5|t
ddddS#1swxYwYdS)Nrzbad filter name)rrrr$rrErs  rtest_bad_filter_namez*TestExtractionFilters.test_bad_filter_nameDs
^^	sGGENNN															




,=
>
>	.	.!!*---	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.s155$BBBcHGdd}t5}|d|dd|ddddn#1swxYwY|5}|||5|ddddn#1swxYwYdddn#1swxYwY||jd||jddS)	Nc eZdZdZdZdZdS)BTestExtractionFilters.test_stateful_filter.<locals>.StatefulFiltercd|_|Sr)num_files_processedrs rrzLTestExtractionFilters.test_stateful_filter.<locals>.StatefulFilter.__enter__Os+,(rc	tj||}n#tj$rYdSwxYw|xjdz
c_|S)Nrr)r%rAr>rGr4s   r__call__zKTestExtractionFilters.test_stateful_filter.<locals>.StatefulFilter.__call__SsY %1'4@@GG*   44 ((A-((s++cd|_dS)NT)done)rexc_infos  rrzKTestExtractionFilters.test_stateful_filter.<locals>.StatefulFilter.__exit__[s
 			rN)rrr rrIrr)rrStatefulFilterrENsA






!
!
!
!
!rrMgoodbadrrruT)rrrr$rrSrGrK)rrMrr>s    rtest_stateful_filterz*TestExtractionFilters.test_stateful_filterJs	!	!	!	!	!	!	!	! ^^	sGGFOOOGGEcG***GGFOOO															^

	)##CHHJJ
>>
)
)  (((
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)	
:A>>>+T22222sHAA**A.1A.?)C!(C
>C!
C	C!C	C!!C%(C%c0d}d}d}d}d}t5}|ddddn#1swxYwY||d|5|ddddn#1swxYwY||d|5|ddddn#1swxYwY||d|5|ddddn#1swxYwY||d|5|tjdddn#1swxYwY||d|5|tdddn#1swxYwY||d	|5|ddddn#1swxYwY||d	|5|tj	dddn#1swxYwY||d	|5|tdddn#1swxYwY||d	|5|tjdddn#1swxYwY||d	|5|tdddn#1swxYwY||d
|5|tjdddn#1swxYwY||d
|5|tj	dddn#1swxYwY||d
|5|tdddn#1swxYwY||d
|5|tjdddn#1swxYwY||d
|5|tdddn#1swxYwY||d|5|tddddS#1swxYwYdS)Nc*tjd)Nzfailed with ExtractError)r%ExtractErrorr)s  rextracterror_filterzBTestExtractionFilters.test_errorlevel.<locals>.extracterror_filteris&'ABBBrc*tjd)Nzfailed with FilterError)r%r>r)s  rfiltererror_filterzATestExtractionFilters.test_errorlevel.<locals>.filtererror_filterks%&?@@@rc td)Nzfailed with OSError)rr)s  roserror_filterz=TestExtractionFilters.test_errorlevel.<locals>.oserror_filterms/000rc*tjd)Nzfailed with base TarError)r%TarErrorr)s  rtarerror_filterz>TestExtractionFilters.test_errorlevel.<locals>.tarerror_filteros"#>???rc td)Nzfailed with ValueError)rEr)s  rvalueerror_filterz@TestExtractionFilters.test_errorlevel.<locals>.valueerror_filterqs5666rrrrrrruzboo!)
rrrr$rrr%rZrEr>rrSr)rrTrVrXr[r]rs       rtest_errorlevelz%TestExtractionFilters.test_errorlevelhs		C	C	C	A	A	A	1	1	1	@	@	@	7	7	7^^	sGGFOOO															


A 6 68K
L
L	%	%V$$$	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%

A 6 68J
K
K	%	%V$$$	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%

A 6 6
G
G	%	%V$$$	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%

A 6 6
H
H	4	4!!'"2333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4

A 6 68I
J
J	.	.!!*---	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.


A 6 68K
L
L	%	%V$$$	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%

A 6 68J
K
K	7	7!!'"5666	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7

A 6 6
G
G	+	+!!'***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+

A 6 6
H
H	4	4!!'"2333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4

A 6 68I
J
J	.	.!!*---	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.


A 6 68K
L
L	8	8!!'"6777	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8

A 6 68J
K
K	7	7!!'"5666	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7

A 6 6
G
G	+	+!!'***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+

A 6 6
H
H	4	4!!'"2333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4

A 6 68I
J
J	.	.!!*---	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.


F ; ;=O
P
P	-	-!!),,,	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-s1AAA5BBBC..C25C2#EE	E	: F&&F*-F*HH	H7II I J::J>J>/LLL M77M;>M;,OOO P44P8;P8) RRR
S11S58S5& UUUV..V25V2#XXX)NNNN)r)&rrr rrrbrrrrrrrrrrrrrrrrrrrrrr r"r%r,r/r6r8r@rBrPr^r)rrrrsd
w|G$$z1HG99^98BF!0!0!0!0F%%%%///KKK20000\00dT0T0\T0l::\:::::" - -\ -D%%\%&@@\@.99\92C;C;C;J+++$
?
?
?111;;;
;
;
;(((	.	.	.
2
2
2
.
.
.---%%%"...333<E-E-E-E-E-rrc8tjttjtt
gatt
d5}|}dddn#1swxYwYtttfD]}|jrtj|jt|j||jd5}|
|dddn#1swxYwYdS)Nrqr)rrdrbrcmakedirsr!rr$rRr+r2r8rr)rYr
crFs    rsetUpModulerbsh
WK9L	
gt		yy{{w
(  6	 QY'''	***	4((
 C		$
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 	  s$A11A58A5,DD	D	ctjtrt	jtdSdSr)rcrdrrbrr|r)rrtearDownModulerds9	w~~g"!!!!!""r__main__)rrrcr"hashlibr
contextlibrrandomrrrHrwarningsryr
unittest.mockr%rrtest.supportrrr	r.rrr3r;rrdr,TESTFNrbrr r!rer-r4r:rrrVr!r
requires_gzipr+requires_bz2r2
requires_lzmar8r?TestCaserLrrrrrrrrr#rrrrrrrrrrrrrrr9rPriryrrrrrrrrrr%r9rXrarerjrrrlrxrrrrrrrrrrrrcrrrrrrr'r:rprsrurwryrrrrrrbrdrr1r)rr<module>rqs/



								%%%%%%



				""""""&&&&&&((((((KKKKDDDKKKKDDDJJJJ
CCCKKKKDDD$$$
'//)*
+
+i
7o%	
'
=
)
)
7<<!122
',,w 1
2
2	g/	0	0
',,w	
*
*gll7I..GG
))))))))%%%%%%%%&&&&&&&&%%%%%%%%					w			UUUUUHh/UUUn					-								w
								-			M1M1M1M1M1x*M1M1M1`					8X								'8								8X			AAAAAXAAAFQ.Q.Q.Q.Q.~Q.Q.Q.f#X%6					x!183D			88888g/1B88899999x!183D999
;;;;;^X%6;;;z					>																>			&1&1&1&1&1Wh/&1&1&1P					>			
,
,
,
,
,
,
,
,					>			11111x1B111"^E^E^E^E^EXx0^E^E^EB6O6O6O6O6O6O6O6Op99999,(*;999x*****,(*;***ZGGGGGGGGG<u'u'u'u'u'
x0u'u'u'p						Hi								7I								Hi			(%(%(%(%(%mX%6(%(%(%V77777(O77788888/888;;;;;(O;;;O5O5O5O5O58$O5O5O5d+&+&+&+&+&}h&7+&+&+&\W.W.W.W.W. 1W.W.W.tXzGZ%%%%%Xz%%%(((((*(((WWR((*KLL'1'1'1'1'18$'1'1ML'1TH8H8H8H8H8<H8H8H8VNNNNNNNNbLLLLL{H$5LLL^GGGGG[("3GGG$KKKKK[("3KKK(IIIIIIII(>%>%>%>%>%!2>%>%>%@					X~x/@								G^X->								X~x/@			8*8*8*8*8*"8*8*8*v_
_
_
_
_
x _
_
_
Da a a a a h'a a a H7B7B7B7B7B*7B7B7BtV$$&FGG@@@@@("3@@HG@B*****("3***>			WWR))+=>>WWR++-ABBwOwOwOwOwOx(wOwOCB?>wOt%-%-%-%-%-8X.%-%-%-P\\\\\8\\\| 4h6G((((((<(0(9(((3X5F#7#+#4\8\8\8\8\8*\8\8\8|83333333333333333t?CCCC@-@-@-@-@-H-@-@-@-F   """"zHMOOOOOsHA!!A+*A+/A44A>=A>BBBBB$#B$