python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
test_shutil.cpython-312.opt-2.pyc

ΑeddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlmZmZmZmZmZmZmZmZmZmZmZmZddlZddlZddlZ	ddlZddl!m"Z"ddl#m$Z$ddl%m&Z&m'Z'ddl#m(Z(e&dzZ)e&dzZ*e&d	zZ+ejXj[d
Z.ejXj[dZ/ejXddd
k(Z0	ddl1Z1ddl2Z2dZ3	ddl4Z4ejjjmde7dZ8dZ9dZ:d>dZ;dZ<d>dZ=dZ>dZ?e?Z@dZAGddZBGddeBejZDGdd eBejZEGd!d"eBejZFGd#d$eBejZGGd%d&eBejZHGd'd(eBejZIGd)d*eIZJGd+d,eBejZKGd-d.ejZLGd/d0ejZMGd1d2eNZOeje@d3Gd4d5eOejZQeje.d6Gd7d8eOejZRGd9d:ejZSGd;d<ejZTeUd=k(rejyy#e $rdZYOwxYw#e $rdZ3YwxYw#e $rdZ4YwxYw)?N)make_archiveregister_archive_formatunregister_archive_formatget_archive_formatsErrorunpack_archiveregister_unpack_format
RegistryErrorunregister_unpack_formatget_unpack_formats
SameFileError_GiveupOnFastCopy)support)	os_helper)TESTFNFakePath)warnings_helper2_SRC_DSTdarwinsunosaixTFzos.chdirzshouldn't call os.chdir()side_effectc8tttddd)NEXDEVzInvalid cross-device link)OSErrorgetattrerrno)argskwargss  D/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/test_shutil.py_fake_renamer&;s
'%"-/J
KKcBtjfd}|S)Nc	tj}tt_|i||t_S#t_wxYwN)osrenamer&)r#r$builtin_renamefuncs   r%wrapzmock_rename.<locals>.wrap@s4	'YYN$BI((&BIBIs	&5
A)	functoolswraps)r.r/s` r%mock_renamer2?s%__T''Kr'c	t|trtjj|}|rdnd}|rdnd}t|||5}|j
|dddy#1swYyxYw)Nwbwutf-8encoding)
isinstancetupler+pathjoinopenwrite)r;contentbinarymoder8fps      r%
write_filerCJsf$ww||T"4sDt7H	
dD8	,
sA##A,c^	d}t|d}djt|Dcgc]3}tjt
jj5c}}t|d5}|||D]}|j|	dddycc}w#1swYyxYw)Nc3BK||kDr|||z}||kDr|r|yywr*)totalsteps  r%chunkszwrite_test_file.<locals>.chunksZs3dlJTMEdlKsi r'r4)
minr<rangerandomchoicestring
ascii_lettersencoder=r>)r;sizerIbufsizeichunkfcsizes        r%write_test_filerWXsL$oGHH$W~/mmF$8$89@@B/
0E	
dD	QD'*	E
GGEN	/s8B4 B##B,c	t|trtjj|}|rdnd}|rdnd}t|||5}|j
cdddS#1swYyxYw)Nrbrr6r7)r9r:r+r;r<r=read)r;r@rAr8rBs     r%	read_filer\jsc$ww||T"4sDt7H	
dD8	,wwysA""A+cg}ttj|D]}tjj	||}tjj|r[tjj
|s<|j|dzt|D]}|j|dz|z|j||S)N/)	sortedr+listdirr;r<isdirislinkappendrlistdir)r;resnamepns     r%rdrdxs
Crzz$'(GGLLt$
77==BGGNN1$5JJtcz"a[
+

4#:>*
+
JJtJr'c
ttdsyd}d}	tjdtjd5}|j
}|j
ddddt|d5}tjdtjd5}|j
}|j}|j}	tj||dd	dddddd|tj||tj|y	y	#1swYxYw#t$rBYdddddd|tj||tj|yywxYw#1swYnxYw	dddn#1swYnxYw|tj||tj|yy#|tj||tj|wwxYw)
NsendfileFr4dirdeletes
0123456789rYrT)
hasattrr+tempfileNamedTemporaryFilegetcwdrfr>r=filenorjrunlinkr )srcnamedstnamerUsrcdstinfdoutfds       r%supports_file2file_sendfiler{s2z"GG&

(
(299;u
M	#QRffG
GGM"	#'4
 
	 C,,Tryy{5Q	
 UX((zz|

 KKtQ2 	
 
	 W%W%%	#	#! 	
 
	 W%W%!
	
 	
 	
 
	 
	 
	 W%W%W%W%s*GD%G3+F-E?D1$E?%F-G%D.*G1	E<:E?;FG;E<<E??F	F	GFG1Hctrmtjdk(rZtjdtj
z}|j
ddj
d}t|ddk\Sy)	Niz/usr/bin/dump -o %s
i T)AIXsysmaxsize
subprocess	getoutput
executablesplitint)hdrsmaxdatas  r%
_maxdataOKrs_
s{{j(

!
!"7#.."H
I

4 $**,Q/72*,,r'ceZdZddZy)BaseTestNc	tj|tj}|j	t
j||S)N)prefixrl)rpmkdtempr+rr
addCleanuprrmtree)selfrds   r%rzBaseTest.mkdtemps:	
F		<	((!,r'r*)__name__
__module____qualname__rrFr'r%rrsr'rceZdZdZej
dZej
dZej
dZe	jeddZe	jeddZ
e	jeddZd	Zd
Ze	j"ej&ddd
k(dej(ej*dZdZe	j"ej&ddd
k(dej(ej*dZdZe	j"ej&ddd
k(dej(ej*dZdZdZe	jej<ddZe	j"ej<ddZ dZ!ej
dZ"e	jeddZ#y)
TestRmTreecb|j}tjj|d}tj|ttjj|ddtj|}|j|ttj|y)Nkillmesomefilefoo)rr+r;r<mkdirrCfsencodeassertIsInstancebytesshutilr)rtmpvictims   r%test_rmtree_works_on_bytesz%TestRmTree.test_rmtree_works_on_bytesspllnc8,
277<<
3U;V$fe,

fr'c|j}tjj|d}tj|tjj|d}tj
|||j
ttj||jtjj||jtjj|gfd}|jt5tj||ddd|jt!d|j#ddtjj$|jdd||j'dddty#1swYxYw)Nrllinkc(j|yr*rcr#errorss r%onerrorz@TestRmTree.test_rmtree_fails_on_symlink_onerror.<locals>.onerrorMM$r'rrrrn)rr+r;r<rsymlinkassertRaisesr rr
assertTrueexistslexistsassertWarnsDeprecationWarningassertEquallenassertIsrbrrrdir_rrrs     @r%$test_rmtree_fails_on_symlink_onerrorz/TestRmTree.test_rmtree_fails_on_symlink_onerrors9llnww||C'
ww||C(


4'6==$7t,--.	 


0
1	1MM$0	1Va(

fQilBGGNN31t,fQil1ow7	1	1sF==Gc8|j}tjj|d}tj|tjj|d}tj
|||j
ttj||jtjj||jtjj|gfd}tj|||jtd|jddtjj |jdd||j#ddty)Nrlrc(j|yr*rrs r%onexcz<TestRmTree.test_rmtree_fails_on_symlink_onexc.<locals>.onexcrr'rrrrn)rr+r;r<rrrr rrrrrrrrrbrrrrrrrs     @r%"test_rmtree_fails_on_symlink_onexcz-TestRmTree.test_rmtree_fails_on_symlink_onexcsllnww||C'
ww||C(


4'6==$7t,--.	 

d%(Va(

fQilBGGNN31t,fQilG4r'c|j}tjj|d}tjj|d}tjj|d}|||fD]}tj|tjj|d}t|dtjj|d}tj||tjj|d}tj||tjj|d}	tj||	tj||jtjj||jtjj||jtjj|y	Ndir1dir2dir3file1rlink1link2link3)rr+r;r<rrCrrrassertFalserr
rrrrrrrrrrs
          r%test_rmtree_works_on_symlinksz(TestRmTree.test_rmtree_works_on_symlinkssGllnww||C(ww||D&)ww||C(tT!	AHHQK	S'*5% T7+


4T7+


4T7+


5% 

d-.t,-u-.r'zonly relevant on Windowsc|j}tjj|d}tj|tjj|d}tj|||jtj||jttj||jtjj||jtjj!|gfd}|j#t$5tj||ddd|j't)d|j+ddtjj,|j'dd||j/dddty#1swYxYw)Nrlrc(j|yr*rrs r%rzBTestRmTree.test_rmtree_fails_on_junctions_onerror.<locals>.onerrorrr'rrrrn)rr+r;r<r_winapiCreateJunctionrrrtrr rrrrrrrrrrrbrrs     @r%&test_rmtree_fails_on_junctions_onerrorz1TestRmTree.test_rmtree_fails_on_junctions_onerrorsOllnww||C'
ww||C(tT*	(($/'6==$7t,--.	 


0
1	1MM$0	1Va(

fQilBGGNN31t,fQil1ow7	1	1s:GG&cx|j}tjj|d}tj|tjj|d}tj|||jtj||jttj||jtjj||jtjj!|gfd}tj|||j#t%d|j'ddtjj(|j#dd||j+ddty)Nrlrc(j|yr*rrs r%rz>TestRmTree.test_rmtree_fails_on_junctions_onexc.<locals>.onexc%rr'rrrrn)rr+r;r<rrrrrrtrr rrrrrrrrrbrrs     @r%$test_rmtree_fails_on_junctions_onexcz/TestRmTree.test_rmtree_fails_on_junctions_onexcs'llnww||C'
ww||C(tT*	(($/'6==$7t,--.	 

d%(Va(

fQilBGGNN31t,fQilG4r'c|j}tjj|d}tjj|d}tjj|d}|||fD]}tj|tjj|d}t|dtjj|d}t
j||tjj|d}t
j||tjj|d}	t
j||	tj||jtjj||jtjj||jtjj|yr)
rr+r;r<rrCrrrrrrrrs
          r%test_rmtree_works_on_junctionsz)TestRmTree.test_rmtree_works_on_junctions-sMllnww||C(ww||D&)ww||C(tT!	AHHQK	S'*5% T7+tU+T7+tU+T7+ue,

d-.t,-u-.r'ctj|j}|jtt
j|tj|d|j}t|dfdtjj|d}|jt5}tj|ddd|jjj||jtjj!|tj|d|jtjj!|gfd}|j#t$5tj||ddd|jt'd|j)d	d	tj*|jd	d
||j-d	dd
t|jd	dd
j||j)d
d	tj.|jd
d
||j-d
dd
t|jd
dd
j|y#1swYxYw#1swY7xYw)NrlT
ignore_errorststfilec(j|yr*rrs r%rz6TestRmTree.test_rmtree_errors_onerror.<locals>.onerrorVrr'rrnrr)rpmktemprrFileNotFoundErrorrrrCr+r;r<NotADirectoryErrorr	exceptionfilenamerrrrrrscandirrrmdir)rrtmpdircmrrs     @r%test_rmtree_errors_onerrorz%TestRmTree.test_rmtree_errors_onerrorCs*??t||~6+V]]HE

hd3FI&+77<<	2


1
2	$bMM(#	$..9x01

hd3x01	 


0
1	5MM(G4	5Va(

fQilBJJ/1x0fQil1o/AB1a118<

fQilBHH-1x0fQil1o/AB1a118<)	$	$	5	5s5KKKKcVtj|j}|jtt
j|tj|d|j}t|dfdtjj|d}|jt5}tj|ddd|jjj||jtjj!|tj|d|jtjj!|gfd}tj|||jt#d|j%d	d	tj&|jd	d
||j)d	dt|jd	dj||j%d
d	tj*|jd
d
||j)d
dt|jd
dj|y#1swYxYw)NrTrrrc(j|yr*rrs r%rz2TestRmTree.test_rmtree_errors_onexc.<locals>.onexcwrr'rrnrr)rprrrrrrrCr+r;r<rrrrrrrrrrr)rrrrrrs     @r%test_rmtree_errors_onexcz#TestRmTree.test_rmtree_errors_onexcds??t||~6+V]]HE

hd3FI&+77<<	2


1
2	$bMM(#	$..9x01

hd3x01	 

he,Va(

fQilBJJ/1x0fQil,>?1..9

fQilBHH-1x0fQil,>?1..9'	$	$s5JJ(Ncygwinz2This test can't be run on Cygwin (issue #1071513).cZd|_tjt|j	t
jttjjtd|_	tjjtd|_
tj|jtj|jtjtj}tj|jj}tj|jj}tjtj z}tj"|j|tj"|j|tj"t||j	tj"t||j	tj"|j||j	tj"|j||j%t&5tjt|j(ddd|j+|jddy#1swY'xYw)Nrabrrz1Expected call to onerror function did not happen.)
errorStater+rrrrrr;r<child_file_pathchild_dir_pathrcreate_empty_filestatst_modeS_IREADS_IEXECchmodrrcheck_args_to_onerrorrrold_dir_modeold_child_file_modeold_child_dir_modenew_modes     r%
test_on_errorzTestRmTree.test_on_errors



v.!ww||FC8 ggll637##D$8$89
$$%wwv.. ggd&:&:;CCWWT%8%89AA<<,
%%x0
$$h/
"&,7$"6"68KL$"5"57IJ


0
1	FMM&$*D*DE	F	
!L	N	F	Fs&J!!J*c|jdkr|tjur|j||jnq|tj
ur|j||jnB|j|tj|j|t|jg|jt|dt|xjdz
c_y|j|tj
|j|t|jt|dtd|_y)Nrnrrr)rr+rtrrrrrr`assertInrr
issubclassr rr.argexcs    r%rz TestRmTree.check_args_to_onerrors??Qryy   d&:&:;!  d&9&9:

dBJJ/

cFD,?,?#@AOOJs1vw78OOq OT288,S&)OOJs1vw78DOr'cd|_tjt|j	t
jttjjtd|_	tjjtd|_
tj|jtj|jtjtj}tj|jj}tj|jj}tjtj z}tj"|j|tj"|j|tj"t||j	tj"t||j	tj"|j||j	tj"|j|tjt|j$|j'|jddy)Nrrrrrz/Expected call to onexc function did not happen.)rr+rrrrrr;r<rrrrrrrrrcheck_args_to_onexcrrs     r%test_on_exczTestRmTree.test_on_excs



v.!ww||FC8 ggll637##D$8$89
$$%wwv.. ggd&:&:;CCWWT%8%89AA<<,
%%x0
$$h/
"&,7$"6"68KL$"5"57IJ

fD$<$<=!J	Lr'c|jdkr|tjur|j||jnq|tj
ur|j||jnB|j|tj|j|t|jg|jt|t|xjdz
c_y|j|tj
|j|t|jt|td|_y)Nrnrr)rr+rtrrrrrr`rrrr9r rs    r%rzTestRmTree.check_args_to_onexcs??Qryy   d&:&:;!  d&9&9:

dBJJ/

cFD,?,?#@AOOJsG45OOq OT288,S&)OOJsG45DOr'cdddfd}fd}tjt|jtj
ttjjtd|_tjjtd|_	tj|jtj|jtjtj}tj|jj}tj|jj}tjtjz}tj |j|tj |j|tj t||jtj t||jtj |j||jtj |j||j#t$5t	j
t||ddd|j'|j)y#1swY,xYw)NFc
dyNTrF)r#onerror_calleds r%rz7TestRmTree.test_both_onerror_and_onexc.<locals>.onerrors!Nr'c
dyr
rF)r#onexc_calleds r%rz5TestRmTree.test_both_onerror_and_onexc.<locals>.onexcsLr'rr)rr)r+rrrrrr;r<rrrrrrrrrrrrr)	rrrrrrrrrs	       @@r%test_both_onerror_and_onexcz&TestRmTree.test_both_onerror_and_onexcs
	"	 	

v.!ww||FC8 ggll637##D$8$89
$$%wwv.. ggd&:&:;CCWWT%8%89AA<<,
%%x0
$$h/
"&,7$"6"68KL$"5"57IJ


0
1	@MM&'?	@%(	@	@sJ&&J/c	tjfd}|t_tjtt	tdfdtjtt_y#t_wxYw)Nc:|tk7r
t|Sr*)rr )fnr#r$
orig_lstats   r%raiserzFTestRmTree.test_rmtree_does_not_choke_on_failing_lstat.<locals>.raiser%s<!)O%b>)r'r)r+lstatrrrCrr)rrrs  @r%+test_rmtree_does_not_choke_on_failing_lstatz6TestRmTree.test_rmtree_does_not_choke_on_failing_lstat"sT
	"J
*
BHHHV.MM&!!BHzBHsA$A33
Bctjtjtjtjhtj
kxrBtjtjvxr tjtjv}|r|jtj|jtjj|j}tjj!|d}tj"|	tj$}Gddt&fd}|t_|j)tj||t_y|j+tj|j+tjjy#t_wxYw)NrceZdZy)HTestRmTree.test_rmtree_uses_safe_fd_version_if_available.<locals>.CalledN)rrrrFr'r%Calledr?sr'rcr*rF)r#r$rs  r%_raiserzITestRmTree.test_rmtree_uses_safe_fd_version_if_available.<locals>._raiser@s Lr')r+r=rrtrsupports_dir_fdr`supports_fdsupports_follow_symlinksrr_use_fd_functionsravoids_symlink_attacksrr;r<r_rmtree_safe_fd	Exceptionrr)rr"tmp_dirrreal_rmtreerrs      @r%-test_rmtree_uses_safe_fd_version_if_availablez8TestRmTree.test_rmtree_uses_safe_fd_version_if_available2s4 ggrww		288D//0DZZ2>>9D WW(C(CC	OOF445OOFMM@@AllnGWc*AHHQK
5$44-Y-!)0&!!&&--;)4&V556V]]AAB*5&s
%AG


Gzdir_fd is not supportedc|j}d}tjj||}tj|tj
}|j
tj|tj|tjtjj|dttjj|ddd|jtjj|tj|||jtjj|y)Nrsubdirrrdir_fd)rr+r;r<r=O_RDONLYrcloserrCrrrrr)rr&rfullnamer,s     r%test_rmtree_with_dir_fdz"TestRmTree.test_rmtree_with_dir_fdJs,,.77<<0"++.&)

h12277<<(J?Gx01

fV,12r'zdir_fd is supportedc|j}|jt5tj|dddd|jtjj|y#1swY8xYw)Nrr+)	rrNotImplementedErrorrrrr+r;r)rr&s  r%#test_rmtree_with_dir_fd_unsupportedz.TestRmTree.test_rmtree_with_dir_fd_unsupportedXsX,,.


2
3	-MM'!,	-w/0	-	-sA55A>ctj|j\}}tj||jttj|tj|yNr)
rpmkstemprr+r.rrrrremove)rhandler;s   r%test_rmtree_dont_delete_filez'TestRmTree.test_rmtree_dont_delete_file_sJ''DLLN;
,fmmTB
		$r'ctjt	tjj	td}tjj	td}tj|tj
|||j
ttj|tj|dtjtdy#tjtdwxYw)NcheeseshopTr)
r+rrr;r<rrr rrrrwrxs   r%test_rmtree_on_symlinkz!TestRmTree.test_rmtree_on_symlinkfs		6'',,vx0C'',,vv.CHHSMJJsC gv}}c:MM#T2MM&5FMM&5sB/C&&Dc|tjt	tjj	td}tjj	td}tj|ttjj	|ddj
tj|||jttj|tj|dtjtdy#tjtdwxYw)Nr;r<spamr4Tr)
r+rrr;r<r=r.rrrr rrr=s   r%test_rmtree_on_junctionz"TestRmTree.test_rmtree_on_junctionts
		6'',,vx0C'',,vv.CHHSMc6*D1779""3,gv}}c:MM#T2MM&5FMM&5sC'DD;)$rrrrrskip_unless_symlinkrrrunittest
skipUnlessrrrrrrskipIfrplatformskip_if_dac_overrideskip_unless_working_chmodrrr	rrrr(rr"r0r3r9r>rArFr'r%rrst""8#8&""5#5$""/#/*X"<=8>8(X"<=5>5&X"<=/>/*=B:@X__S\\"1%1IK##((N)$KN8 6X__S\\"1%1IK##((L)$KL6 6X__S\\"1%1IK##((#))$K#)J" C0X113LM3N3X__V--/DE1F1""6#6X"<=6>6r'rceZdZdZdZejdZdZdZ	dZ
ejjddZd	Zej eed
dejej&ej*dk(d
dZdZejdZejdZdZdZy)TestCopyTreec	N|j}tjj|jd}|j	t
j||j	t
jtjj|t|dfdtjtjj|dt|ddfdtj|||jtjjtjj|d|jtjjtjj|d|jtjjtjj|ddt|df}|j|dt|ddf}|j|dy)Ndestinationtest.txt123test_dir456)rr+r;r<rrrdirnamerCrcopytreerisfilerar\rrsrc_dirdst_diractuals    r%test_copytree_simplez!TestCopyTree.test_copytree_simplese,,.'',,t||~}=

w/

rwww'?@GZ(%0
gz23GZ4e<)rww||GZ'HIJ

bggll7J&GHIrww||GZ4>(@A	BGZ01'GZ<='r'c	|j}|j}|jtj||jtj|t	|dfdtjt
jj|dtjt
jj|dt	|ddfdt	|ddfdtj||d|jt
jjt
jj|d|jt
jjt
jj|d|jt
jjt
jj|ddt|df}|j|dt|ddf}|j|d|jt 5tj||d	dddy#1swYyxYw)
Nznonexisting.txtrNexisting_dirzexisting.txtzwill be replacedzhas been replacedT)
dirs_exist_okF)rrrrrCr+rr;r<rRrrSrar\rrFileExistsErrorrTs    r%test_copytree_dirs_exist_okz(TestCopyTree.test_copytree_dirs_exist_oks,,.,,.

w/

w/G./7
g~67
g~67G^^<>PQG^^<>QR=rww||G=N'OPQ

bggll7N&KLMrww||G^4B(DE	FG%678'G^^DE!45



/	COOGWEB	C	C	CsI&&I/c	`|j}tjj|d}tjj|d}tjj|d}tj|tj|t|dfdtjj|d}tjj|d}tjtjj|d|ttdr5tj|tjtjzttd	r4ttd
r$tj|tjtj|}tj ||d|j#tjj%tjj|ddtj&tjj|dd}tj(d
k(r|j+dr|dd}|j-|tjj|dtj|}	ttdr&|j-|	j.|j.ttd	r'|j-|	j0|j0yy)Nrwrxsubzfile.txtrrzsub/linklchmodlchflags	UF_NODUMPTsymlinksntz\\?\)rr+r;r<rrCrror`rS_IRWXUS_IRWXOrarbrrrRrrbreadlinkrf
startswithrrst_flags)
rr&rUrVsub_dirsrc_linkdst_linksrc_statrWdst_stats
          r%test_copytree_symlinksz#TestCopyTree.test_copytree_symlinkss,,.'',,w.'',,w.'',,w.

GZ(%077<<077<<4


277<<4	2x IIht|| ;<2z"wt['AKK$..188H%48rww||GUF'KLMRWW\\'5&AB77d?v00;ABZFgz!BC88H%2x X--x/?/?@2z"X..0A0AB#r'c
ttjj}tjj}|j	}	||j	d}t|dfdt|dfdtj||dt|ddfdtj||dt|ddfdtj||ddtj||dd	t|dddfdt|dd	d
fd	tjdd}tj||||j|||d|j|||d|j|||dtj|	tjdd
}tj||||j|||d|j|||dd	|j|||ddtj|	d}tj||||j|||dd	d
|j|||ddtj|	tj|tjtjj|y#tj|wxYw#tj|wxYw#tj|wxYw#tj|tjtjjwxYw)NrLrMrNztest.tmprOrP	test_dir2r*subdir2ztest.pyz*.tmpignorezsubdir*cRg}|D]}tjj||}tjj|r(|j	ddk(r|j|jtjj
|ddvs|j||S)Nr~r*z.py)r+r;r<rarrcsplitext)rwnamesrerfr;s     r%_filterz8TestCopyTree.test_copytree_with_exclude.<locals>._filtersC %-!ww||C6GGMM$/ JJL,8JJt,WW--d3B7EBJJt,-Jr')r+r;r<rrrCrrignore_patternsrRrrrrQ)rr<rrUrVpatternsrzs       r%test_copytree_with_excludez'TestCopyTree.test_copytree_with_excludesww||,,.:	44<<>=9G,e4,e4HHT':./Z8%@HHT';/0j95AHHT';9:HHT';	:;h
CUKiCUK
'!11';GBtGZ'@ AB  Wj(A!BC  Wk(B!CD

g&
'!11'9EB  Wj(A!BC  Wk9(M!NO  Wk8(L!MN

g&
'
A  Wk9-6)8"9:  Wk8(L!MN

g&MM'"MM"''//'23I

g&

g&0

g&MM'"MM"''//'23sYC#M.*BL 2M.B
L:M.(AMM. L77M.:MM.M++M..A	N7c
`tjj}tjj}j	}||d}tj
||tj
||dtj
tjj|ddt
|dddfdgfd}|j	d}tj|||j|||ddd|j	d}tjtj|||j|||ddd|j	d}ttj|d	}j|tjtj|||j|||dddj!t#d
y)NsourcerOr*rMrPcj|j|tj|tj	t|tt
||D]}j|tgSr*)rcrstrlistrrset)rwryrfinvokationsrs   r%_ignorez?TestCopyTree.test_copytree_arg_types_of_ignore.<locals>._ignore sqs#!!#s+!!%.SZSZ9
1%%dC0
1Ir'rLrur	)r+r;r<rrrrCrrRrpathlibPathrrrDirEntryrr)	rr<rr&rUrrV
src_dir_entryrs	`       @r%!test_copytree_arg_types_of_ignorez.TestCopyTree.test_copytree_arg_types_of_ignoresww||,,.w)
g
gz*+
gz8<=GZ:>F	t||~}59tGZ$. 01	2t||~}5W-wwGtGZ$. 01	2t||~}5RZZ01!4
mR[[9
ww?tGZ$. 01	2	
[)1-r'c	|j}tjj|d}tj|tjj|d}|jtj|tj|dt|dfdtjtjj|ddt|dfdtjtjj|ddtj|	}|jtj|tj|dt
j|||jtj|jtj|j|jtjtjj|djtjtjj|dj|jtjtjj|djtjtjj|djtjj|tjj!|d
}|jtj|jtj|jy)NrrLizpermissive.txtrNzrestrictive.txtrPirr)rr+r;r<rrrrrrCrprrRrrrr)rr&rUrVrestrictive_subdirrestrictive_subdir_dsts      r%!test_copytree_retains_permissionsz.TestCopyTree.test_copytree_retains_permissions<s3,,.'',,w1
'',,w
6

w/
% G-.6
g'78%@G./7
g'895A%--':	((*<=
#U+))1127773C3K3KLg7G!HIQQ''"'',,w8H"IJRR	Tg7H!IJRR''"'',,w8I"JKSS	U!#g.0ggmm<N.OPQ.R"T!34<<''"89AA	Cr'zos.chmodc|j}tjj|jd}|j	t
j||j	t
jtjj|td|_	|jt
j5tj||dddy#1swYyxYw)NrLzka-boom)
rr+r;r<rrrrQPermissionErrorrrrrR)r
mock_patchrUrVs    r%test_copytree_winerrorz#TestCopyTree.test_copytree_winerrorWs
,,.'',,t||~}=

w/

rwww'?@!0!;



v||
,	.OOGW-	.	.	.sC++C4cfd}gjtjjttj
j
ddd5}|jdddtj|jtdy#1swY=xYw)	Nc@jdj|tj|tj|tj
j
dj|tj
j
dyNr)rcrrrr+r;r<)rrrxflagrrws  r%custom_cpfunzETestCopyTree.test_copytree_custom_copy_function.<locals>.custom_cpfungsmKK!!!S)!!!S)QS% 89QS% 89r'rrr5r6r7
copy_functionr)rrprr=r+r;r<r.rrRrr)rrrUrxrrws`  @@@r%"test_copytree_custom_copy_functionz/TestCopyTree.test_copytree_custom_copy_functiones	:llnoo$,,.1
"'',,sE*C'
B	a
GGI	S=TA&		s/B<<Cmkfiforequires os.mkfifo()vxworks%fifo requires special path on VxWorksc|tjt	tjj	td}tj|tjj	|d}	tj
|	tjtt|jdtj td	tj td	y#t$r}|jd|zYd}~d}~wwxYw#tj$rR}|jd}|jt|d|d\}}}|jd|z|Yd}~d}~wwxYw#tj td	tj td	wxYw)
Nr*mypipeos.mkfifo(): %sz$shutil.Error should have been raisedrrz`%s` is a named pipeTr)r+rrr;r<rrskipTestrrRTESTFN2failrr#rrr)rr*pipeerrwrx	error_msgs        r%test_copytree_named_pipez%TestCopyTree.test_copytree_named_pipews?
		7WW\\&(3FHHV77<<1D
5		$
B0		@AMM&5MM'6#
5

/!344
5<<
K  Va0&,Qi#S)  !7$!>	JJ	
K
MM&5MM'6s[AF5C1D)F1	D:DFDFF.AE;6F;FF8F;c|j}tjj|jd}t	|dfdtj
tjj|dt	|ddfdgfd}t
j||||jtdy)	NrLrMrNrOrPc,j||fyr*r)rwrxcopieds  r%_copyz6TestCopyTree.test_copytree_special_func.<locals>._copysMM3*%r'rrn)
rr+r;r<rCrrrRrr)rrUrVrrs    @r%test_copytree_special_funcz'TestCopyTree.test_copytree_special_funcs,,.'',,t||~}=GZ(%0
gz23GZ4e<	&	>Va(r'cV|j}tjj|d}t	|dtjj|d}tj
|||fD]j}tjdtjj|dtj|tjj|dltjj|jd}|jttj||tjj|jd}tj||d	
tj|D]*\}}}|jd||jd|,tjj|jd}tj||d	|jdtj|y)
NrMabcdir_a
IDONTEXISTbrokenvalidrLdestination2T)ignore_dangling_symlinksdestination3rc)rr+r;r<rCrrrrrrRwalkassertNotInrr`)	rrU
valid_filerrrVrootdirsfiless	         r%test_copytree_dangling_symlinksz,TestCopyTree.test_copytree_dangling_symlinkssw,,.WW\\':6
:u%Wg.
%	=AJJ|RWW\\!X%>?JJz277<<7#;<	=
'',,t||~}=%'7C'',,t||~~>4H!#!1	*D$Xu-MM'5)	*
'',,t||~~>48

j"**W"56r'c	
|j}tjj|jd}tjtjj|dttjj|ddd5	dddtjtjj|dtjj|ddtj||d	|jtjjtjj|d|jdtjtjj|dtjj|jd
}tj||d	|jtjjtjj|d|jdtjtjj|dy#1swYxYw)NrLreal_dirrMr4link_to_dirT)target_is_directoryFrcr)rr+r;r<rr=rrrRrrbrr`r)rrUrVs   r%test_copytree_symlink_dirz&TestCopyTree.test_copytree_symlink_dirs,,.'',,t||~}=
gz23
"'',,w
J?
F		


277<<477<<7'+	-	59Wm(LMN

j"**RWW\\'=-Q"RS'',,t||~~>48rww||G]'KLM

j"**RWW\\'=-Q"RS		sI88Jc@|j}|dz}|jtj|dtj
j
|d}t|dtj||}|jdgt	j|y)NdestTr)rrrrr+r;r<rCrRrr`)rrUrVrwrvs     r%test_copytree_return_valuez'TestCopyTree.test_copytree_return_valuess,,.F"

w5ggll7E*3
__Wg
.%"**R.1r'c|j}|jtj|dtj
j
|dd}tj
j
|dd}t	j|tj
j
|d}t|dtj||}|jdgt	j|y)NTrtpg
somevendorz1.0pol)rrrrr+r;r<makedirsrCrRrr`)rbase_dirrUrVrwrs      r%test_copytree_subdirectoryz'TestCopyTree.test_copytree_subdirectorys<<>

xtD'',,xd3'',,we<
Gggll7E*3
__Wg
.%"**R.1r'N)rrrrXr]rrBrqr}rrrCmockpatchrrrDror+rErrFrrrrrrrFr'r%rJrJs(&C2""C#C>?4B(.TC6]]$.%.'$XX.0FG""X__S\\Y.;=7=#H7.)""7#74""T#T&2
2r'rJc^eZdZejdZejee	ddejdZ
ejee	ddejdZejdZ
ejee	dxreed	xr	eed
ddZej d
Zejej ej$dZdZdZejdZejee	dddZejdZej dZdZdZdZdZejdZejee	dddZejdZ ejee	d d!eje!jDd"k(d#d$Z#d%Z$d&Z%eje&xse'xse(d'eje)d(d)Z*d*Z+y+),TestCopyc|j}tjj|d}tjj|d}tjj|d}tjj|d}t	|dt	|dtj
||tj
||tj|tjtjztj|tj|jtj|jtj|jtj|||jtj|jtj|jtj dk7rtj|tjtj|||jtj|jtj|jtj|tjtj|||jtj|jtj|jtj|tjtj|||jtj|jtj|jyy)Nrbarbazquuxre)rr+r;r<rCrrrrgS_IRWXGrhassertNotEqualrrcopymoderrfrr&rwrxrmrns      r%test_copymode_follow_symlinksz&TestCopy.test_copymode_follow_symlinkss,,.ggll7E*ggll7E*77<</77<<033


3!


3!
dll4<</0
dll#BGGCL00"''#,2F2FGS!--rwws|/C/CD
77d?HHS$,,'OOHc*RWWS\112773<3G3GHHHS$,,'OOC*RWWS\112773<3G3GHHHS$,,'OOHh/RWWS\112773<3G3GHr'r`zrequires os.lchmodc|j}tjj|d}tjj|d}tjj|d}tjj|d}t	|dt	|dtj
||tj
||tj|tjtjztj|tjtj|tjtjztj|tjtj||d|jtj|j tj|j |j#tj|j tj|j tj|tjtj||d|jtj|j tj|j tj|tjtj||d|jtj|j tj|j yNrrrrFfollow_symlinks)rr+r;r<rCrrrrgrr`rhrrrrrrrs      r% test_copymode_symlink_to_symlinkz)TestCopy.test_copymode_symlink_to_symlink	s,,.ggll7E*ggll7E*77<</77<<033


3!


3!
dll4<</0
dll#
		(DLL56
		(DLL)(EB(+33(+33	5BGGCL00"''#,2F2FG
		(DLL)#u=--rwws|/C/CD
		(DLL)Xu=--rwws|/C/CDr'z requires os.lchmod to be missingc|j}tjj|d}tjj|d}tjj|d}tjj|d}t	|dt	|dtj
||tj
||t
j||dyr)rr+r;r<rCrrrrs      r%*test_copymode_symlink_to_symlink_wo_lchmodz3TestCopy.test_copymode_symlink_to_symlink_wo_lchmod's,,.ggll7E*ggll7E*77<</77<<033


3!


3!(EBr'cv|j}tjj|d}tjj|d}tjj|d}tjj|d}t	|dtj
|}tj||j|jdz
ft	|d|jtj
|jtj
|jtj||tj||ttdr$tj|t
jttdr4tt
dr$tj|t
jtj |}ttdrQt#j$||d	
|j|j&tj
|j&t#j$||d
tj |}tjtj(vr0dD]+}	|j+t-||	t-||	d
z-ttdr&|j/|j&|j&ttdr2t|dr&|j/|j0|j0t#j$||d
|j3t5tj
|jtj
|jz
dky)NrrrquxgE@r`rarbTrFst_atimest_mtimerrkg?)rr+r;r<rCrutimerrrrror`rhrarbrrcopystatrr!assertLessEqualr!rrkrabs)
rr&rwrxrmrnro
src_link_stat
dst_link_statattrs
          r%test_copystat_symlinkszTestCopy.test_copystat_symlinks7s,,.ggll7E*ggll7E*77<</77<</3773<
x((((4/1	23BGGCL112773<3H3HI


3!


3!2x IIh-2z"wt['AKK$..1*
2x OOHhE
 5 5rwws|7K7KL(EB*

88r222.
G$$W]D%A%,]D%AA%EG
G2x ]22M4I4IJ2z"w}j'I]33]5K5KL#u=BGGCL11BGGCL4I4IIJ 	!r'chflags
EOPNOTSUPPENOTSUPz)requires os.chflags, EOPNOTSUPP & ENOTSUPcv|j}tjj|d}tjj|d}t	|dt	|dd}tj
}	tjtjfD])}||t_tj||+|tjtjzt_|jttj|||t_y#|t_wxYw)Nrfile2xxxc0tddfd
}|S)NTrc_r*)r")r;flagsrerrexs   r%_chflags_raiserzlTestCopy.test_copystat_handles_harmless_chflags_errors.<locals>.make_chflags_raiser.<locals>._chflags_raisernsr'r )rrrs` @r%make_chflags_raiserzSTestCopy.test_copystat_handles_harmless_chflags_errors.<locals>.make_chflags_raiserksB@D
#"r')
rr+r;r<rCrr"rrrrrr )rrrrrold_chflagsrs       r%-test_copystat_handles_harmless_chflags_errorsz6TestCopy.test_copystat_handles_harmless_chflags_errors`s
VW-VW-5% 5% 	#jj	%''6
.05
u-
.-U-=-=

-MNBJgvuE$BJBJs
=B"D++
D8c	
|j}tjj|d
t	
dtjj|d}t	|dtj
|tj
ddtj
ddtj
||jttj
ttj||jtj
dtj|dtj|t	|dttjd		fd}	tj|t_tj
||j!dtj|t_d	d

fd
}	tj|t_
tj
|t_
tjj|d
tjj|d
}t	

t	||tj
ddtj|ddtj"|dtjj|d}tjj|d}t	||t	||tj$
|tj$|||jtj|dd|jtj|ddy#t_wxYw#t_
wxYw)Nrruser.foo42zuser.bar43EPERMc*|dk(r|||fi|y)NrrF)fnamervalr$
orig_setxattros_errors    r%_raise_on_user_fooz3TestCopy.test_copyxattr.<locals>._raise_on_user_foos!z!eT39&9r'TrcV|k(rttjd||S)NzOperation not supportedr)r r"r)rrorig_listxattrrws  r%
_raise_on_srcz.TestCopy.test_copyxattr.<locals>._raise_on_srcs)|emm-FGG!%IIr'the_originalthe_original_rozuser.the_valuesfiddlyi$the_copythe_copy_ro)rr+r;r<rCr
_copyxattrsetxattrrr_	listxattrgetxattrr7r r"rrrr)rr&rxrrsrcrodstror
r	r
rws       @@@@r%test_copyxattrzTestCopy.test_copyxattrs,,.ggll7E*3ggll7E*3	#s#
CU+
CU+#s#S 12F2<<;L4MNC,C,	.			#35;;0	:
	(KKM,BKc3'MM*bll3&78'BK48	J	*\\N(BLc3')BLggll7N3W&7835% 
C)95
E+Y7
ggll7J/Wm435% S!u%S*:;YGU,<=yI9(BK*BLs
AN!81N1!
N.1
N>cT|j}tjj|d}tjj|d}t	|dtj
||tj|ddtj|dddtjj|d}tjj|d	}t	|dtj
||tj||d|jtj|ddd|jttj|dtj||d|jtj|ddy)
Nrrztrusted.foorrFrrr)
rr+r;r<rCrrrrrrrr )rr&rwrmrxrns      r%test_copyxattr_symlinksz TestCopy.test_copyxattr_symlinkss&,,.ggll7E*77<</3


3!
C.
HmUEJggll7E*77<</3


3!(HeDX}eTV[\'2;;]C(C?S-8%@r'cd}|j}t||fdtjj	||}|j}|||tjj	||}||fS)NrMr)rrCr+r;r<)rmethodrrrtmpdir2rs       r%
_copy_filezTestCopy._copy_filesgFE?E*VU+,,.ugWe,u~r'c<|jtj\}}|jtj
j
||jt	j|jt	j|jyr*)
rrcopyrr+r;rrrr)rrrs   r%	test_copyzTestCopy.test_copys]v{{3uu-.//1G1GHr'cf|j}tjj|d}tjj|d}tjj|d}t	|dtj
||t
tdr5tj|tjtjztj||d|jtjj||jt!|t!|tj"|tj||d|j%tjj||jtj&|tj&|t
tdrM|jtj(|j*tj(|j*yy)Nrrrr`TrF)rr+r;r<rCrror`rrgrhrr!rrbrr\r7rrirr)rr&rwrxrms     r%test_copy_symlinkszTestCopy.test_copy_symlinkss^,,.ggll7E*ggll7E*77<</3


3!2x IIht|| ;<Hc48,-338
		#Hc59s+,S)2;;x+@A2x RXXh/77XXc]22
4!r'rzrequires os.utimec,|jtj\}}|jtj
j
|t	j|}t	j|}|j|j|jdD]+}|jt||t||dz-ttdr4t|dr'|jt|dt|dyyy)Nrrrrk)
rrcopy2rr+r;rrrrrr!ro)rrr
file1_stat
file2_statrs      r%
test_copy2zTestCopy.test_copy2sv||4uu-.WWU^
WWU^
++Z-?-?@*	@D  T!:!(T!:Q!>
@	@2y!gj*&EWZ<$Z<
>'F!r'c|j}tjj|d}tjj|d}tjj|d}t	|dtj
||t
tdr5tj|tjtjzt
tdr4t
tdr$tj|tjtj|}tj|}tj||d|j!tjj#||j%t'|t'|tj(|tj||d	|j+tjj#||j%tj,|tj,|tj|}tj.tj0vr0d
D]+}|j3t5||t5||dz-t
tdrL|j%|j6|j6|j9|j6|j6t
tdr4t
|dr'|j%|j:|j:yyy)
Nrrrr`rarbTrFrrrk)rr+r;r<rCrror`rrgrhrarbrrr&rrbrr\r7rrirr!rr!rrrk)	rr&rwrxrmrorrprs	         r%test_copy2_symlinkszTestCopy.test_copy2_symlinkss2,,.ggll7E*ggll7E*77<</3


3!2x IIht|| ;<2z"wt['AKK$..1773<*
XsD9,-338
		#XsE:s+,S)2;;x+@A88C=
88r222.
B$$W]D%A%,Xt%<q%@B
B2x ]22H4D4DE 0 0(2B2BC2z"w}j'I]33X5F5FG(J"r'c|j}tjj|d}tjj|d}t	|dtj
|ddt
j|||jtj|dtj|dtj|y)Nrrrr)rr+r;r<rCrrr&rrr7)rr&rwrxs    r%test_copy2_xattrzTestCopy.test_copy2_xattr6s,,.ggll7E*ggll7E*3
CU+S#C,C,	.			#r'ctjtjfD]}|j}|j}tj
j
|d}t|d|||}|j|tj
j
|d||tj
j
|d}|j|tj
j
|dy)Nrr)	rr!r&rr+r;r<rCr)rrrUrVrwrs      r%test_copy_return_valuezTestCopy.test_copy_return_valueCs;;-	?BllnGllnG'',,w.CsE"C!BRgu!=>Cgu56BRgu!=>	?r'cB|jtjyr*)_test_copy_dirrr!rs r%
test_copy_dirzTestCopy.test_copy_dirOsFKK(r'cB|jtjyr*)r1rr&r2s r%test_copy2_dirzTestCopy.test_copy2_dirRsFLL)r'c~|j}tjj|d}|j}tjj|d}t	|dt
jdk(rt}nt}|j|||||j|||||||yNrdoes_not_exist/win32)
rr+r;r<rCrrFrIsADirectoryErrorr)r	copy_funcrUsrc_filerrxrs       r%r1zTestCopy._test_copy_dirUs,,.77<</||~ggll7$568U#<<7"!C#C#y$8	
#y$4(D!r'c|j}tjj|d}tjj|d}tjj|d}tjj|d}t	|dtj
||t
j||d|jtjj||jtj|tj|t
j|||jtjj|y)NrwrxrnrrFr)
rr+r;r<rCrrcopyfilerrbrrir)rr&rwrxrnrs      r%test_copyfile_symlinkszTestCopy.test_copyfile_symlinksgs,,.ggll7E*ggll7E*77<<4ww||GV,3


3h>x01T*BKK,ABc",-r'rzrequires os.linkc8tjttjj	td}tjj	td}	t|dd5}|j
dddd	tj|||jtjtj||t|dd5}|j|jddddtj |tj"td	
y#1swYxYw#t$r}|jd|zYd}~d}~wwxYw#1swYpxYw#tj"td	
wxYw)Nr;r<r5r6r7cheddarz
os.link(): %srZTr)r+rrr;r<r=r>rrrrrr
r>rr[r7r)rrwrxrUrs     r%'test_dont_copy_file_onto_link_to_itselfz0TestCopy.test_dont_copy_file_onto_link_to_itselfxs'	ggll68,ggll66*	6c31
#Q	"
#
3S!
f22FOOS#Nc31
6Q  95
6IIcNMM&5
#
##
3

o122
3
6
6
MM&5sf#E<1D:E<E">E< !E0E<:E?E<	E-E(#E<(E--E<0E95E<<Fctjttjj	td}tjj	td}	t|dd5}|j
ddddtjd||jtjtj||t|dd5}|j|jddddtj|tjtd	y#1swYxYw#1swYFxYw#tjtd	wxYw)
Nr;r<r5r6r7rArZTr)r+rrr;r<r=r>rrrr
r>rr[r7r)rrwrxrUs    r%*test_dont_copy_file_onto_symlink_to_itselfz3TestCopy.test_dont_copy_file_onto_symlink_to_itselfs	ggll68,ggll66*	6c31
#Q	"
#

JJx%f22FOOS#Nc31
6Q  95
6IIcNMM&5
#
#
6
6
MM&5s=#E1D9AE!EE9E>EE
EE.rrrrc	tjt	|jtjtjtt|jtjtjtttjty#t$r}|j	d|zYd}~d}~wwxYw#tjtwxYw)Nr)r+rrrrrrSpecialFileErrorr>r__file__r7)rrs  r%test_copyfile_named_pipez!TestCopy.test_copyfile_named_pipes	1IIf	f55 &
Bf55 &6
C
IIf	1MM+a/00	1
IIfs#B&A0C&	C
/CC
C+c|j}|j}tjj|d}tjj|d}t	|dtj||}|jtjj||jt|t|y)Nrr)rr+r;r<rCrr>rrrr\)rrUrVdst_filer<rs      r%test_copyfile_return_valuez#TestCopy.test_copyfile_return_values,,.,,.77<</77<</8U#
__Xx
0r*+8,i.ABr'cJ|j}tjj|d}t	|d|jttj|||jttj|||jt|dyr)rr+r;r<rCrr
rr>rrr\)rrUr<s   r%test_copyfile_same_filez TestCopy.test_copyfile_same_filesr,,.77<</8U#-(HM%(HE8,e4r'zMOn MACOS, Solaris and Windows the errors are not confusing (though different)zNot valid on AIX, see gh-92670c|j}tjj|d}tjj|d}t	|d|jttj||y)Nrr8)	rr+r;r<rCrrrr>)rrUr<rxs    r%test_copyfile_nonexistent_dirz&TestCopy.test_copyfile_nonexistent_dirs[,,.77<</ggll7$568U#+V__hLr'c|j}tjj|d}|j}tjj|d}t	|dt
jdk(rt}nt}|j|tj|||j|tj|||j|tj||yr7)rr+r;r<rCrrFrr:rrr>)rrUr<rrxrs      r%test_copyfile_copy_dirzTestCopy.test_copyfile_copy_dirs,,.77<</||~ggll7$568U#<<7"!C#C#v=#v'B#vg>r'N),rrrrrBrrCrDror+rrErrr"rskip_unless_xattrrskip_unless_dac_overriderrr"r$r)r+r-r/r3r5r1r?rBrDrrFrHrKrMMACOSSOLARISrrrOrQrFr'r%rrs""I#I>XX.0DE""E#FE8X__WR*,NO""
C#P
C""&!#&!PXY/3 53 	2DF%	F%6  =J!=J~""  ''A(!#A.I""4#40XW-/BC>D> "" H# HD  
!

?)*"$"".#. XV,.@A6B6&""6#6(XX.0FGX__S\\Y.;==H	C
5X__U0g03BCX__S:;M<	C
M?r'rceZdZejdZdZd%dZejeje
jdddZejdZ
ejeje
jdd	d
Zejeje
jddd
ZdZejdZejejeddZdZdZdZdZejdZdZdZejdZdZdZdZdZejdZ ejBdZ"ejFejHe%xre&d d!Z'ejd"Z(d#Z)y$)&TestArchivesc|jd\}}|j}tj|tjj|}tjj
tjj|d}tj|5t5tjj|}t|d|d}dddddd|jdz|jtjj||jt!j"|t!j$|d5}|j'|j)gddddtj|5t5t|d|d}dddddd|j||d	z|jtjj||jt!j"|t!j$|d
5}|j'|j)gddddy#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYyxYw)Nrarchivegztar..tar.gzzr:gz)r[z./subz./sub2z./file1z./file2z./sub/file3tar.tarrZ)
_create_filesrr+rr;rQr<basenamer
change_cwdno_chdirabspathrrrrStarfile
is_tarfiler=assertCountEqualgetnames)	rroot_dirrrwork_dir
rel_base_name	base_nametarballtfs	         r%test_make_tarballzTestArchives.test_make_tarballs;"//3(,,.
77??7+RWW%5%5g%>	J


!
!(
+	JX	J
6I"='8SIG	J	J
	
)i"78w/0**734
\\'6
*	Ib!!"++-#H
I	I
!
!(
+	HX	H"=%3GG	H	H)f"45w/0**734
\\'3
'	H2!!"++-#G
H	H	H'	J	J	J	J	I	I	H	H	H	H
	H	Hs`+J	2.I< J	-#J-J/4J#J/#J;<J	J		JJ #J,	(J//J8;Kctj|5}|j}|jt	|cdddS#1swYyxYwr*)rdr=rgsortr:)rr;r]rys    r%_tarinfozTestArchives._tarinfos@
\\$
	 3LLNEJJL<	 	 	 s+AAc|j}tjj||}tj|dt|dfdt|dfdtjtjj|dt|ddfdtjtjj|d|rt|d	fd||fS)
NT)exist_okrrrr_file3sub2outer)rr+r;r<rrCr)rrrhdists    r%r_zTestArchives._create_filess<<>ww||Hh/
D4(D'?E*D'?E*
dE*+D%)51
dF+,'*E2!!r'r]zNeed the tar command to runch|j\}}tjj|j	d}t
5t
|d||}ddd|j|dz|jtjj|tjj|d}ddd|g}tj||tj|jtjj||j|j||j|t
5t
|d||}ddd|j||dz|jtjj|t
5t
|d||d	
}ddd|j||dz|jtjj|y#1swYxYw#1swYxYw#1swYfxYw)NrYrZr\zarchive2.tarr]z-cfcwdstdoutr^Tdry_run)r_r+r;r<rrbrrrrSr
check_callDEVNULLrq)rrhrrkrltarball2tar_cmds       r%test_tarfile_vs_tarz TestArchives.test_tarfile_vs_tar$s"//1(GGLL;	
	K"9gxJG	K	
)i"78w/077<<.9%:g8%/%7%7	9	
x01w/x1HI	I"9eXxHG	I)f"45w/0	1"9eXx+/1G	1	
)f"45w/09	K	K$	I	I	1	1s$HH2H(HH%(H1c|j\}}|j}tj|tjj|}tjj
tjj|d}tj|5t5tjj|}t|d|}dddddd|jdz|jtjj||jt!j"|t!j$|5}|j'|j)gddddtj|5t5tjj|}t|d||}dddddd|j||dz|jtjj||jt!j"|t!j$|5}|j'|j)gddddy#1swYxYw#1swYxYw#1swY&xYw#1swYxYw#1swYxYw#1swYyxYw)NrYzip.zip)dist/	dist/sub/
dist/sub2/
dist/file1
dist/file2dist/sub/file3rv)rrrrrr)r_rr+rr;rQr<r`rrarbrcrrrrSzipfile
is_zipfileZipFilerfnamelist)	rrhrrrirjrkrezfs	         r%test_make_zipfilezTestArchives.test_make_zipfileHs9"//1(,,.
77??7+RWW%5%5g%>	J


!
!(
+	?X	?
6I}eX>C	?	?	
i&01s+,**3/0
__S
!	R!!"++-
	
!
!(
+	IX	I
6I}eXxHC	I	I	
i&01s+,**3/0
__S
!	DR!!"++-C
D	D	D)	?	?	?	?			I	I	I	I	D	Ds`*J$1-JJ$*#J1*K
1.J>K
+#KJ!	J$$J.1J;>K	K

KKrzNeed the zip command to runc|j\}}tjj|j	d}t
5t
|d||}ddd|j|dz|jtjj|tjj|d}dddd|g}tj||tj|jtjj|tj|5}|j}dddtj|5}|j}	ddd|jt!t!	y#1swYIxYw#1swYixYw#1swYGxYw)NrYrrzarchive2.zipz-qz-rry)r_r+r;r<rrbrrrrSrr~rrrrr_)
rrhrrkrYarchive2zip_cmdrrynames2s
          r%test_zipfile_vs_zipz TestArchives.test_zipfile_vs_zipms]"//1(GGLL;	
	I"9eXxHG	I	
)f"45w/077<<.9$nh?g8%/%7%7	9	
x01
__W
%	"KKME	"
__X
&	#"[[]F	#v7'	I	I	"	"	#	#s$F2F+ F7F(+F47GunzipzNeed the unzip command to runc|j\}}tjj|j	d}t
5t
|d||}ddd|j|dz|jtjj|dd|g}tj|5	tj|tjdddy#1swYxYw#tj$r^}|j j#d}d	|vr|j%d
d}|j'|j)||Yd}~d}~wwxYw#1swYyxYw)NrYrrrz-t)stderrreplace)rzunrecognized option: tzunzip doesn't support -tz{}

**Unzip Output**
{})r_r+r;r<rrbrrrrSrrarcheck_outputSTDOUTCalledProcessErroroutputdecoderrformat)	rrhrrkrYrrdetailsmsgs	         r%test_unzip_zipfilezTestArchives.test_unzip_zipfiles@"//1(GGLL;	
	I"9eXxHG	I	
)f"45w/0D'*

!
!(
+	4
4''
8I8IJ	4	4	I	I00
4**++9+=+w6MM"<=2		#**S'233
4	4	4s=C,<E,>%C8,C58E)AE$E,$E))E,,E5c|j}tjj|d}|j	t
t|dy)NrYr)rr+r;r<r
ValueErrorr)rrrks   r%test_make_archivezTestArchives.test_make_archives5GGLL3	*lIuEr'ctr1tjdd}tjdd}ndx}}|j\}}tjj|jd}t|d||||}|jtjj|t|d||}|jtjj|t|d||||}|jtjj|t|d||dd}|jtjj|y)	NrrrYrownergroupr]	kjhkjhkjgoihohoh)
UID_GID_SUPPORTgrpgetgrgidpwdgetpwuidr_r+r;r<rrrrS)rrrrhrrkres       r%test_make_archive_owner_groupz*TestArchives.test_make_archive_owner_groupsLLOA&ELLOA&E""EE!//1(GGLL;	9eXxu!&(s+,9eXx@s+,9eXx!&e5s+,9eXx!,I?s+,r'Requires grp and pwd supportc
|j\}}tjj|j	d}tjdd}tjdd}tj|5t5t|d|d||}dddddd|jtjjtj |}	|j#D]:}|j%|j&d|j%|j(d<	|j+y#1swYxYw#1swYxYw#|j+wxYw)NrYrrZrwr)r_r+r;r<rrrrrrrarbrrrSrdr=
getmembersruidgidr.)	rrhrrkrrarchive_namerYmembers	         r%test_tarfile_root_ownerz$TestArchives.test_tarfile_root_owners6"//1(GGLL;	Q"Q"

!
!(
+	BX	B'	7Hf.35BL	B	B
	
|45,,|,	!,,.
0  Q/  Q/
0
MMO	B	B	B	B
MMOs1EE E4A
E+E	EE(+E=cztjfd}td|gd	t5j	t
5t
ddddddddjtjtdy#1swYAxYw#1swYExYw#tdwxYw)Ncjd|j|djtjt	Nrhr`)rrr+rrRuntimeError)rkrkwcurrent_dirrs   r%archiverz<TestArchives.test_make_archive_cwd_default.<locals>.archiversAZ,Y
3RYY[+6. r'rxxx filer`)	r+rrrrbrrrrr)rrrs` @r%test_make_archive_cwd_defaultz*TestArchives.test_make_archive_cwd_defaultsiik	!	 xZ@	-
4&&|44 U34
4
RYY[+6%e,	44
4
4

&e,s:B-B!
BB!,B-B	B!!B*&B--
B:ctjjfd}gfd}td|gd	t	j
td|5j
t5tddddddddjtjjgtdy#1swYUxYw#1swYYxYw#tdwxYw)Ncjd|j|tjj	djtj
t
r)rrr+r;r<rrrrkrrrrhrs   r%rz4TestArchives.test_make_archive_cwd.<locals>.archiversPZ,Y[*(MNRYY[(3. r'c8j||yr*r)r;r
orig_chdirs r%_chdirz2TestArchives.test_make_archive_cwd.<locals>._chdirsKKtr'rrchdirr`rh)r+rrrrr	swap_attrrrrrr)rrrrrrrhs`  @@@@r%test_make_archive_cwdz"TestArchives.test_make_archive_cwdsiik<<>	!
		 xZ@	-""2w7
G:&&|4G UXFG
G
RYY[+6THk#:;%e,GG
G
G
&e,s=C4#C(9CC(AC4C%	!C((C1-C44
Dctjjfd}d|_t	d|gd	t
5j
t5tddddddddjtjtdy#1swYAxYw#1swYExYw#tdwxYw)Ncj|dj|djtjt)Nr`rh)rr+rrrrs   r%rzFTestArchives.test_make_archive_cwd_supports_root_dir.<locals>.archiversEY
3R
^X6RYY[+6. r'Trrr`r)r+rrrsupports_root_dirrrbrrrrr)rrrrhs` @@r%'test_make_archive_cwd_supports_root_dirz4TestArchives.test_make_archive_cwd_supports_root_dirsiik<<>	!
&*"xZ@	-
G&&|4G UXFG
G
RYY[+6%e,	GG
G
G

&e,s<CB<!B00B<8,C0B9	5B<<CC
CcB|j}tj|5t5|j	tddd|j
tjjdddddddy#1swYxYw#1swYyxYw)Ntestr]ztest.tar
rrrarbrrrr+r;rSrrhs  r%test_make_tarfile_in_curdirz(TestArchives.test_make_tarfile_in_curdirsw<<>

!
!(
+	8X	8\&%8*EOOBGGNN:67	8	8	8	8	8	8#BAB	8B	B	BBcB|j}tj|5t5|j	tddd|j
tjjdddddddy#1swYxYw#1swYyxYw)Nrrztest.ziprrs  r%test_make_zipfile_in_curdirz(TestArchives.test_make_zipfile_in_curdirsy<<>

!
!(
+	8X	8\&%8*EOOBGGNN:67	8	8	8	8	8	8rc|jttdd|jttddd|jttddddgtdddgdtDcgc]\}}|	}}}|j	d|tdtDcgc]\}}|	}}}|j
d|ycc}}wcc}}w)	NrrctSr*xrFr'r%<lambda>z;TestArchives.test_register_archive_format.<locals>.<lambda>&Qr'ctSr*rrFr'r%rz;TestArchives.test_register_archive_format.<locals>.<lambda>(rr')rrn)rrnrctSr*rrFr'r%rz;TestArchives.test_register_archive_format.<locals>.<lambda>+sqr'r)r	TypeErrorrrrrr)rrfparamsformatss    r%test_register_archive_formatz)TestArchives.test_register_archive_format#s)%<eQG)%<eY	)%<eY!9-	/	 y6(JG,?,ABLD&4BB

eW%!%(,?,ABLD&4BB(CCs8C1Cc	|jtjtddD]}|j	|5|j}tjj|d}|jt5}ttd||ddd|jjjtj|j|jj ||j#tjj%tdt'j(|\}}t
j*||jt,5}ttd||ddd|j|jjtj.|j|jj ||j#tjj%tddddy#1swYxYw#1swYxYw#1swY$xYw)Nr^FTr|nonexistingr]rrrrtrsubTestrr+r;r<rrrrrr"ENOENTrrrrpr6r.rENOTDIRrr}r&nonexisting_filertmp_fdtmp_files       r%test_make_tarfile_rootdir_nodirz,TestArchives.test_make_tarfile_rootdir_nodir3s	((VHD/:$	BGg.
B,,.#%77<<#G &&'89SR 0@'RS  !3!3U\\B  !6!68HI  6($!@A#+#3#3#@  &&'9:Kb 'JK  !3!3U]]C  !6!6A  6($!@A
B
B	BSSKK
B
B?AIH+CI4H8BI+H50I8I=II	c	|jtjtddD]}|j	|5|j}tjj|d}|jt5}ttd||ddd|jjjtj|j|jj ||j#tjj%tdt'j(|\}}t
j*||jt,5}ttd||ddd|j|jjtj.|j|jj ||j#tjj%tddddy#1swYxYw#1swYxYw#1swY$xYw)Nrrr|rrrrrs       r%test_make_zipfile_rootdir_nodirz,TestArchives.test_make_zipfile_rootdir_nodirHs	
	((VHD/:$	BGg.
B,,.#%77<<#G &&'89SR 0@'RS  !3!3U\\B  !6!68HI  6($!@A#+#3#3#@  &&'9:Kb 'JK  !3!3U]]C  !6!6A  6($!@A
B
B	BSSKK
B
Brc|j|dfi||j|tjfi||j|tfi|y)Nc|Sr*rFr;s r%rz3TestArchives.check_unpack_archive.<locals>.<lambda>bsr')#check_unpack_archive_with_converterrrr)rrr$s   r%check_unpack_archivez!TestArchives.check_unpack_archive`sX000%	1)/	1000GLL	,$*	,000LVLr'c|j\}}t|}|jdtjj|j
d}t||||}|j
}	t||||	fi||jt|	||j
}
t||||
fd|i||jt|
||jtj5t|tfi|ddd|jt5t|tfddi|dddy#1swY@xYw#1swYyxYw)NrvrYrr)r_rdr7r+r;r<rrrrrr	ReadErrorrr)rr	converterr$rhrexpectedrkrrtmpdir3s           r%rz0TestArchives.check_unpack_archive_with_convertergsV!//1(H% GGLL;		68XF,,.y*Ig,>I&I'*H5,,.y*Ig,>	!v	!	!'*H5


v//
0	89V,77	8


z
*	F9V,EUEfE	F	F	8	8	F	FsE+	E7+E47Fc|j|d|j|dtjdtf5|j|dddy#1swYyxYw)N
fully_trustedfilterdatazPython 3.14)rrcheck_warningsr)rrs  r%check_unpack_tarballz!TestArchives.check_unpack_tarballsb!!&!A!!&!8

+
+ 235	.%%f-	.	.	.sAA&c&|jdy)Nr]rr2s r%test_unpack_archive_tarz$TestArchives.test_unpack_archive_tars!!%(r'c&|jdy)NrZrr2s r%test_unpack_archive_gztarz&TestArchives.test_unpack_archive_gztar!!'*r'c&|jdy)Nbztarrr2s r%test_unpack_archive_bztarz&TestArchives.test_unpack_archive_bztarrr'z(AIX MAXDATA must be 0x20000000 or largerc&|jdy)Nxztarrr2s r%test_unpack_archive_xztarz&TestArchives.test_unpack_archive_xztars	
!!'*r'c|jd|jt5|jdddddy#1swYyxYw)Nrrr)rrrr2s r%test_unpack_archive_zipz$TestArchives.test_unpack_archive_zipsF!!%(


y
)	<%%eF%;	<	<	<sAA
ct}fd}tdddg|dgtddjttddg|tdtddg|j
ddgd	ftjddgd	fttdjt|y)
Ncrj|dj|dj|dy)Nr	stuff.booxx)r)rextract_dirextrars   r%_booz/TestArchives.test_unpack_registry.<locals>._boos3UA&X{3[$/r'Booz.booz.b2)rrrrBoo2r)	rr	rrr
rrrr)rrrs`  r%test_unpack_registryz!TestArchives.test_unpack_registrys$&	0
	uvuotl^L{D)	
-)?!(D	*	!'vx6

vx,.@.BC%&2.0B0DE	!(+-w7r'N)rw)*rrrr
requires_zlibrnrqr_rCrDrwhichrrrrrrrrrrrrrrrrrrrrr
requires_bz2r
requires_lzmarErrrrrrFr'r%rWrWsW!H!HF "WXe,68181BW"D"DHWXe,688880WXg.8:4:4,F
W--6WX*HIJ*-"-.-&8W88) B*WBB.MF0.)W++W++WX__S--/YZ+[+W<<
8r'rWceZdZejeedddZejedejee	dddZ
y)	TestMisc
disk_usagez)disk_usage not available on this platformc0tjtjj	t
}dD]"}|j
t||t$|j|jd|j|jd|j|jd|j|j|j|j|j|jtjt
y)N)rGusedfreer)rr$r+r;rQrGrr!r
assertGreaterrGr&assertGreaterEqualr')rusagers   r%test_disk_usagezTestMisc.test_disk_usages!!"''//(";<-	=D!!'%"6<	=5;;*5::q)

A.UZZ85;;

3	(#r'rchownzrequires os.chownc^j}tj|tdj	t
5t
jdddj	t5t
jddddj	t5t
jddddj	t5t
jddddj	t5t
jddddtj}tj}dfd		}t
j|||||t
j|||t
j|||t
j|||
t
j|||||||t
j|||||t
j|||||t
j|||||
	tj|d}tj |d}t
j|||||t
j|||||||y#1swYxYw#1swYYxYw#1swY1xYw#1swY
xYw#1swYxYw#t"$rYywxYw)
Nrztesting chown functionznon-existing username)userznon-existing groupname)rspamgQ	@ctj}|j||j|j||jyyr*)r+rrst_uidst_gid)r;rrsrrs    r%check_chownz(TestMisc.test_chown.<locals>.check_chownsH!A  ahh/  ahh/r')rr)NN)rrprrCrrrr,LookupErrorrr+getuidgetgidrrrrKeyError)rrQrrr4r.rrs`      @r%
test_chownzTestMisc.test_chowns,,.??w/856


z
*	#LL"	#

{
+	ALL(?@	A

{
+	CLL)AB	C

y
)	,LL7+	,

y
)	)LL4(	)iikiik	0	XsC(Hc3'Xs#Hc"XC(Hc"XS)H#&Wc3'GS#&Wc"GS!W3'GS!WC(G%
	+<<$Q'DLL%a(E

LL4/#s+LL$.c*k	#	#	A	A	C	C	,	,	)	)D		sN
K=K,2K9'LL,0L K),K69LLL 	L,+L,N)rrrrCrDrorr+rr+r9rFr'r%r#r#stX6DF$F$X*HIXW-/BC:+DJ:+r'r#c$eZdZdZdZdZdZeje	jdk7ddZeje	jdk(dd	Zeje	jdk(dd
Z
eje	jdk(ddZej dZd
ZdZeje	jdk(ddZdZdZdZdZdZdZeje	jdk(ddZeje	jdk(ddZeje	jdk(ddZeje	jdk(ddZy)	TestWhichc|jd|_tj|jdd|_tj|jjtj|j|jjt
jj|jj\|_|_|j|_t
j"|_d|_y)NTmp)rz.Exerlrsuffixz.EXE)rtemp_dirrprq	temp_filer+rrfrS_IXUSRrr.r;rrlfileenv_pathcurdirextr2s r%setUpzTestWhich.setUp	sE2
"44<A<BD	$$dll3,,- ggmmDNN,?,?@$)
iir'ctj|j|j}|j	||j
jyNr)rrrCrlrrArfrrs  r%
test_basiczTestWhich.test_basics4
\\$))$((
3T^^001r'ctj|jj|j}|j||jjyrI)rrrArfr@rrJs  r%test_absolute_cmdzTestWhich.test_absolute_cmds<\\$..--DMM
BT^^001r'c&tjj|j\}}tjj	||j
}t
j|5tj||j}|j||dddt
j|j5tj||}|j|dddy#1swY[xYw#1swYyxYwrI)
r+r;rrlr<rCrrarrr@rassertIsNone)rrtail_dirrelpathrs     r%test_relative_cmdzTestWhich.test_relative_cmd"s WW]]4884('',,x3

!
!x
0	*gDMM:BR)	*
!
!txx
0	"gH5Bb!	"	"		*	*	"	"s-4C;	)D;DDr9ztest is for non win32c$tjj|j}t	j
|j5t
j|j|}|j|dddy#1swYyxYwrI)
r+r;rQrlrrarrrCrOrrrs   r%test_cwd_non_win32zTestWhich.test_cwd_non_win32/sc77??488,

!
!txx
0	"diih7Bb!	"	"	"s
3BBztest is for win32c	tjj|j}t	j
|j5tjjdd5tj|j|}|j|tjj|j|jdddtjjdd5tj|j|}|j|ddddddy#1swYnxYw#1swYxYw#1swYyxYw)Nrshutil._win_path_needs_curdirTreturn_valueF)r+r;rQrlrrarCrrrrrCrr<rErOrTs   r%test_cwd_win32zTestWhich.test_cwd_win329s77??488,

!
!txx
0	&$$%DSW$X
K\\$))(;  RWW\\$++tyy%IJ
K$$%DSX$Y
&\\$))(;!!"%
&	&	&
K
K
&
&	&	&s=
"E,A&D?)E;3E.E?E	EE	EE cntjtj|j}|dz}|j|dz}|j
|dz}|j
tj|5tjjdd5tjd|}ddd|jtjj!tjj!|dddy#1swY^xYw#1swYyxYw)Nrz	hello.exerrWTrX)rrr+fsdecoderlrtouchrrarCrrrrrr;rc)rrelsewhere_in_path_dirmatch_elsewhere_in_path
exe_in_cwdrs      r%*test_cwd_win32_added_before_all_other_pathz4TestWhich.test_cwd_win32_added_before_all_other_pathGs<<DHH 56 (6 1##%"7+"E%%'+


!
!x
0	O$$%DSW$X
K\\+4IJ
K
RWW__R0"''//*2MN		O	O
K
K	O	Os%"D+*DAD+D(	$D++D4cvtjtj|j}|dz}|dz}|j|j|dz}|dz}|j
|j
tjjt|t|g}y)Nrrz
hello.com.exez	hello.com)
rrr+r\rlrr]pathsepr<r)rrrr
pathext_match
path_match	test_paths       r%)test_pathext_match_before_path_full_matchz3TestWhich.test_pathext_match_before_path_full_matchZs<<DHH 56& & 



.
K'
JJOOSYD	$:;	r'ctj|jjtj
tj|jjtjr|jdtj|j|jtj}|j|y)Nzcan't set the file read-only)r;rA)r+rrArfrraccessW_OKrrrrCrlrOrJs  r%test_non_matching_modez TestWhich.test_non_matching_modemsu	$$dll3
99T^^(("''2MM89
\\$))$((
A"r'chtjj|j\}}t	j
|5t
j|j|}|j|tjj||jdddy#1swYyxYwrI)r+r;rrlrrarrrCrr<)rrrPrs    r%test_relative_pathzTestWhich.test_relative_pathvs{WW]]4884(

!
!x
0	Ddiih7BRh		!BC	D	D	Ds
AB((B1chtjd|j}|j|y)Nzfoo.exer)rrrlrOrJs  r%test_nonexistent_filezTestWhich.test_nonexistent_file|s$
\\)$((
3"r'zpathext check is Windows-onlyctj|jdd|j}|j	||j
jdd|jzy)Nr)rrrCrlrrArfrFrJs  r%test_pathext_checkingzTestWhich.test_pathext_checkingsL
\\$))CR.txx
8T^^00"5@Ar'ctj5}|j|d<tj|j
}|j
||jjdddy#1swYyxYwNPATH)	rEnvironmentVarGuardrDrrrCrrArfrenvrs   r%test_environ_pathzTestWhich.test_environ_paths^

*
*
,	6--CKdii(BR!4!45	6	6	6sAA33A<c	tj5}d|d<tjj	d|j
d5t
jtd|j
5tj|j
5tj|j}|j|ddddddddddddy#1swY"xYw#1swY&xYw#1swY*xYw#1swYyxYw)Nrru
os.confstrTrYcreatedefpath)rrvrCrrrlrrr+rarrrCrOrws   r%test_environ_path_emptyz!TestWhich.test_environ_path_emptys

*
*
,	&CK$$\,0%2
&""2y$((;
&%%dhh/
&\\$)),!!"%
&
&
&	&	&
&
&
&
&
&
&	&	&sS2D&C7- C+
1C	>C+C7DC(
$C++C40C77D	<DDc	tjj|jj}t
jdk(rUtj}t|trtj|}tjj||}tj5}tj|d<tj j#d|j$d5t'j(td|j$5t+j,|j.}|j1|tj2|j$5t+j,|j.}|j5||ddddddddddddy#1swY"xYw#1swY&xYw#1swY*xYw#1swYyxYw)Nr9rur{Tr|r~)r+r;r`rArfrrFrEr9rrr<rrvrcrCrrrlrrrrrCrOrar)rexpected_cwdrErxrs     r%test_environ_path_cwdzTestWhich.test_environ_path_cwdsgww''(;(;<<<7"YYF,.V,77<<=L
*
*
,	7**CK$$\,0%2	
7""2y$((;	
7\\$)),!!"%))$((37dii0B$$R67	
7	
7	7	777	
7	
7	
7	
7	7	7sV0AG0&GAG&2F9	G G(G9G
>GG
GG	GG&cZtj5}|jddtjjdtd5tjtd|j5tj|j}dddddd|j|jj tjjd|jd5tjtdd5tj|j}dddddd|j||jj dddy#1swYxYw#1swYxYw#1swYXxYw#1swY\xYw#1swYyxYw)Nrur{T)rr}r~r|r)rrvpoprCrrrrrr+rlrrrCrrArfrws   r%test_environ_path_missingz#TestWhich.test_environ_path_missingsX

*
*
,	6GGFD!$$\z,0%2
-""2y$((;
-\\$)),
-
-
R!4!45$$\,0%2
-""2y"5
-\\$)),
-
-
R!4!45	6	6
-
-
-
-
-
-
-
-	6	6sl9F!&E=4 E1E=AF!6F F	2F:.F!1E:6E==F	F!	FFF	F!!F*ctjj|j}t	j
|j5t	j5}|j|d<tj|jd}|j|ddddddy#1swYxYw#1swYyxYw)Nrrur)r+r;rQrlrrarvrDrrrCrO)rrrxrs    r%test_empty_pathzTestWhich.test_empty_paths77??488,

!
!txx
0	"

*
*
,	"03--CKdiib1Bb!		"	"	"	"	"	"s%
B>AB2!B>2B;	7B>>Cctj5}|jddtj|j
}|j
|dddy#1swYyxYwrt)rrvrrrrCrOrws   r%test_empty_path_no_PATHz!TestWhich.test_empty_path_no_PATHsS

*
*
,	"GGFD!dii(Bb!	"	"	"sAA!!A*ztest specific to WindowscJd}tj|jd|}tj|j
tj|j|jtjj|j
}tjj|d}tj5}||d<tj ||j}|j#||j
dddy#1swYyxYw)N.xyzTmp2r>rPATHEXTr)rprqr@r+rrfrrBrr.r;r`rxrrvrrrrrFtemp_filexyzprogramrxrs      r%test_pathextzTestWhich.test_pathexts22t}}:@N
""DLL1**+''""<#4#45''""7+A.

*
*
,	4 C	NgDMM:BR!2!23	4	4	4s

ADD"cd}tj|jd|}|j|jt
jj|j}t
jj|d}tj5}|d|d<tj||j}|j||jdddy#1swYyxYw)Nrrr>r;rr)rprqr@rr.r+r;r`rfrxrrvrrrrs      r%test_pathext_with_empty_strz%TestWhich.test_pathext_with_empty_strs22t}}:@N**+''""<#4#45''""7+A.

*
*
,	4 #uAYC	NgDMM:BR!2!23	4	4	4s
AC..C7cBtj5}|j|d<d|d<tj|jdz}|jd|j
tjdt|dddy#1swYyxYw)Nruz.testrztest_program.testi)rAtest_program)
rrvr@rrr]rrrr)rrxrfs   r%%test_pathext_applied_on_files_in_pathz/TestWhich.test_pathext_applied_on_files_in_paths

*
*
,	K--CK$C	NT]]36IIIOOO'V\\.93y>J	K	K	KsA7BBcvtjjdd5}|jt	j
dtj|jd|j|jt	j
dd|jdddtjjdd5}|jt	j
dtj|jddddy#1swYxxYw#1swYyxYw)Nz&_winapi.NeedCurrentDirectoryForExePathTrXdontcarerF)rCrrrr_win_path_needs_curdirr+X_OKassert_called_once_with
reset_mockassert_not_calledr)rneed_curdir_mocks  r%test_win_path_needs_curdirz$TestWhich.test_win_path_needs_curdirs
]]
 
 !IX\
 
]	1aqOOF99*bggNO44Z@'')OOF99*aHI..0	1]]
 
 !IX]
 
^	AbrV:::rwwOP44Z@	A	A	1	1	A	AsB
D#AD/#D,/D8N)rrrrGrKrMrRrCrDrrFrUrZrargrrGrkrmrorrryrrrrrrrrrrFr'r%r;r;s2
2"X002"2"X0,.
&.
&X0,.O.O"X0,.&.&"##$D
X08:B:B6	&7,6$""X02LM4N4"X02LM
4N
4 X02LMKNKX02LM
AN
Ar'r;ceZdZdZy)TestWhichBytesctj|tj|j|_tj|j
|_tj|jj|j_tj|j|_tj|j|_	yr*)
r;rGr+rrlrCrArfrErFr2s r%rGzTestWhichBytes.setUp	s};;txx(KK		*	 kk$..*=*=>kk$++.;;txx(r'N)rrrrGrFr'r%rr
	s)r'rcneZdZdZdZdZdZdZdZdZ	e
dZe
d	Zd
Z
e
dZdZe
d
ZdZej&ej*j,ddZdZdZdZdZej:e
dZej:e
dZej:e
dZ ej:e
dZ!dZ"dZ#e
dZ$e
dZ%dZ&ejNej&e(edxre(e)dxr	e(e)d d!d"Z*y#)$TestMovecd}|j|_|j|_tjj|j||_tjj|j||_t|jd5}|jddddy#1swYyxYw)Nrr4r/)
rrUrVr+r;r<r<rJr=r>)rrrUs   r%rGzTestMove.setUp	s||~||~T\\8<
T\\8<

$--
&	!
GGG			s!B<<Ccpt|d5}|j}dddtj||t|d5}|j	|jddd|jtjj|y#1swYxYw#1swYDxYwNrY)	r=r[rmoverrr+r;r)rrwrxreal_dstrUcontentss      r%_check_move_filezTestMove._check_move_file"	s
#t_	 vvxH	 C
(D
!	1QXqvvx0	1,-	 	 	1	1sB !B, B),B5c$ttj|}tj|||j|ttj||j
tjj|yr*)	r_r+r`rrrrr;r)rrwrxrrs     r%_check_move_dirzTestMove._check_move_dir*	s["**S/*C6"**X*>#?@,-r'cf|j|j|j|jyr*)rr<rJr2s r%test_move_filezTestMove.test_move_file0	s dmmT]]DMMJr'cf|j|j|j|jyr*)rr<rVrJr2s r%test_move_file_to_dirzTestMove.test_move_file_to_dir4	s dmmT\\4==Ir'ctj|j}|j||j|j
yr*)rrr<rrVrJ)rrws  r%"test_move_file_to_dir_pathlike_srcz+TestMove.test_move_file_to_dir_pathlike_src8	s.ll4==)c4<<?r'ctj|j}|j|j||j
yr*)rrrVrr<rJrrxs  r%"test_move_file_to_dir_pathlike_dstz+TestMove.test_move_file_to_dir_pathlike_dst=	s.ll4<<(dmmS$--@r'c$|jyr*)rr2s r%test_move_file_other_fsz TestMove.test_move_file_other_fsB	s	
r'c$|jyr*)rr2s r%test_move_file_to_dir_other_fsz'TestMove.test_move_file_to_dir_other_fsG	s	
""$r'ctj|j}	|j|j||tj|y#tj|wxYwr5)rprrrrUrrrrVs  r%
test_move_dirzTestMove.test_move_dirL	sN//dlln5	&  w@W%IW%sAA0c$|jyr*)rr2s r%test_move_dir_other_fszTestMove.test_move_dir_other_fsT	s	
r'c
|j|j|jtjj|jtjj
|jyr*)rrUrVr+r;r<r`r2s r%test_move_dir_to_dirzTestMove.test_move_dir_to_dirY	sFT\\4<<GGLLrww'7'7'EF	Hr'c$|jyr*)rr2s r%test_move_dir_to_dir_other_fsz&TestMove.test_move_dir_to_dir_other_fs^	s	
!!#r'c
&|j|jtjjz|j
tjj
|j
tjj|jyr*)rrUr+r;seprVr<r`r2s r%test_move_dir_sep_to_dirz!TestMove.test_move_dir_sep_to_dirc	sST\\BGGKK7GGLLrww'7'7'EF	Hr'zrequires os.path.altsepc
&|j|jtjjz|j
tjj
|j
tjj|jyr*)rrUr+r;altseprVr<r`r2s r%test_move_dir_altsep_to_dirz$TestMove.test_move_dir_altsep_to_dirg	sST\\BGGNN:DLLGGLLrww'7'7'EF	Hr'ct|jd5	ddd|jtjtj
|j|jy#1swYNxYw)Nr4)r=rJrrrrr<rVr2s r%"test_existing_file_inside_dest_dirz+TestMove.test_existing_file_inside_dest_dirl	sL
$--
&		&,,T]]DLLQ		sA&&A/ctjj|jd}|j	t
jt
j|j|yNr)r+r;r<rUrrrrrs  r%test_dont_move_dir_in_itselfz%TestMove.test_dont_move_dir_in_itselfr	s:ggll4<</&,,T\\3Gr'c	tjt	dD]{\}}tjj	t|}tjj	t|}|jt
j||d|d|d}	tjty#tjtwxYw)N))srcdirzsrcdir/dest)_destinsrc() wrongly concluded that dst (z) is not in src ()r)
r+rrr;r<rr
_destinsrcrrr=s   r%test_destinsrc_false_negativez&TestMove.test_destinsrc_false_negativew	s
	%7
ISggll63/ggll63/ 1 1#s ;>A3"H I
I
V$IV$BB66Cc	tjt	dD]{\}}tjj	t|}tjj	t|}|jt
j||d|d|d}	tjty#tjtwxYw)N))rzsrc/dest)rz
srcdir.newrz
) is in src (rr)
r+rrr;r<rrrrrr=s   r%test_destinsrc_false_positivez&TestMove.test_destinsrc_false_positive	s
	%N
DSggll63/ggll63/  !2!23!<9<c!C!D
D
V$IV$rctjj|jd}tj|j
|t
j||j|jtjj|j|jtjj|j
|jyr)r+r;r<rUrr<rrrJrrbsamefilers  r%test_move_file_symlinkzTestMove.test_move_file_symlink	sggll4<</


4==#&C't}}56((

FGr'cd}tjj|j|}tj|j
|t
j||jtjj|j|}|jtjj||jtjj|j
|yr)r+r;r<rUrr<rrrVrrbr)rrrx
final_links    r%test_move_file_symlink_to_dirz&TestMove.test_move_file_symlink_to_dir	sggll4<<2


4==#&C&WW\\$,,9
z23((
CDr'cLtjj|jd}tjj|jd}tj||tjj|j
d}t
j|||jtjj||jtjj|tjj|yNrrr)r+r;r<rUrrVrrrrbrrealpathrrwrxrns    r%test_move_dangling_symlinkz#TestMove.test_move_dangling_symlink	sggll4<</ggll4<</


377<<f5C"x01))#.0@0@0JKr'c<tjj|jd}tjj|jd}tj|tj
||tjj|jd}tj|||jtjj||jtjj||yr)r+r;r<rUrrrVrrrrbrrs    r%test_move_dir_symlinkzTestMove.test_move_dir_symlink	sggll4<</ggll4<</




377<<f5C"x01((h78r'c	tj|j|j}|j	|t
jj|jt
jj|jyr*)	rrr<rVrr+r;r<r`rJs  r%test_move_return_valuezTestMove.test_move_return_value	sT
[[
5T\\277+;+;DMM+JK	Mr'ctj|jtjj|jd}|j|tjj|jdyr)rrr<r+r;r<rVrrJs  r% test_move_as_rename_return_valuez)TestMove.test_move_as_rename_return_value	sL
[[T\\5(I
JRWW\\$,,>?r'cgfd}tj|j|j||j	tdy)Nc,j||fyr*rrwrxmoveds  r%rz7TestMove.test_move_file_special_function.<locals>._copy	LL#s$r'rr)rrr<rVrrrrrs  @r%test_move_file_special_functionz(TestMove.test_move_file_special_function	s9	%DMM4<<uEUQ'r'cgfd}tjtjj	|j
dtjtjj	|j
dt
j|j
|j||jtdy)Nc,j||fyr*rrs  r%rz6TestMove.test_move_dir_special_function.<locals>._copy	rr'childchild1rr)rrr+r;r<rUrrrVrrrs  @r%test_move_dir_special_functionz'TestMove.test_move_dir_special_function	s{	%##BGGLLw$GH##BGGLLx$HIDLL$,,eDUQ'r'cZ|j|_tjj	tjj|jtjj
|jj}|j|j|	tj|j||jtjj|tj|y#tj|wxYwr*)rrUr+r;r<rQr`upperrrrrrarrs  r%test_move_dir_caseinsensitivez&TestMove.test_move_dir_caseinsensitive	s||~'',,-  .4468	
DLL'2	KKg.OOBGGMM'23HHWBHHWs
/ADD*raSF_IMMUTABLE	UF_OPAQUEzrequires lchflagsc 	tjttjttj
|j
ttjtt|jttjvtjttjtjtj j#tdtjttj
|j
ttjtt|jttjvtj j%trAtjttjtj&ttj j%trBtjttjtj&tyy#tj j%trAtjttjtj&ttj j%trBtjttjtj&twwxYw)Nr)r+r
TESTFN_SRCrarrrrrr
TESTFN_DSTrr`rrrr;r<rrr2s r%test_move_dir_permission_deniedz(TestMove.test_move_dir_permission_denied	s	-HHZ KK
D$5$56
ov{{J
SZ2::<78
KK
DNN3''Z(IJKK
D$5$56
ov{{J
SZ2::<78ww~~j)J7  ,ww~~j)J7  ,*ww~~j)J7  ,ww~~j)J7  ,*s
E6ICL
N)+rrrrGrrrrrrr2rrrrrrrrCrDr+r;rrrrrrrrBrrrrrrrrrrSrorrrFr'r%rr	s..KJ@
A
%%&H
$$HX)BCHDHRH

%
%""H#H""E#E""L#L""9#9M
@(((("''XZ08$T>:8$T;7,.-	.(
-r'rceZdZGddeZdZejeddZ	ejeddZ
ejeddZy)	TestCopyFilec2eZdZdZdZdZddZdZdZdZ	y)TestCopyFile.FauxFNc ||_||_yr*)_raise_in_exit_suppress_at_exit)r
raise_in_exitsuppress_at_exits   r%__init__zTestCopyFile.Faux.__init__
s"/D%5D"r'cy)NrrF)rr#s  r%r[zTestCopyFile.Faux.read
sr'cd|_yr
)_enteredr2s r%	__enter__zTestCopyFile.Faux.__enter__
s	 DMr'cj|||f|_|jrd|_td|jS)NTCannot close)_exited_withr_raisedr r)rexc_typeexc_valexc_tbs    r%__exit__zTestCopyFile.Faux.__exit__
s8 ('6 9D""#n--)))r'r)
rrrrrrr	r[r
rrFr'r%Fauxr
s%	6		!	*r'rcdd}tjtd|5|jt5tj
ddddddddy#1swYxYw#1swYyxYw)Nc$|dk(rtdy)NsrcfilezCannot open "srcfile"r)rrAs  r%_openz4TestCopyFile.test_w_source_open_fails.<locals>._open
s9$566%r'r=rdestfilerZ)rrrrr r>)rrs  r%test_w_source_open_failsz%TestCopyFile.test_w_source_open_fails
sf	


vvu
5	7""7+
7	:6
7	7	7
7
7	7	7s"A*A
A*A'	#A**A3zskipped on macOSc|jdfd	}tjtd|5tjddddd|jj|jjdtu|jjdjdy#1swYrxYw)	Nc4|dk(rS|dk(rtdy)NrrCannot open "destfile"r)rrArs  r%rz2TestCopyFile.test_w_dest_open_fails.<locals>._open+
s)9$:%677&r'r=rrrr)r r)rrrrr>rrrr rr#)rrrs  @r%test_w_dest_open_failsz#TestCopyFile.test_w_dest_open_fails'
s))+	

vvu
5	3OOIz2	3((),,Q/7:;--a0554	6		3	3sB;;Cc |j|jdd	fd	}tjtd|5tjddddd|jj|jj|jj|jjdtu|jjdjdy#1swYxYw)
NTc"|dk(rS|dk(rSyNrrrFrrArrs  r%rz3TestCopyFile.test_w_dest_close_fails.<locals>._open>
"9$:%&r'r=rrrr)rr)rrrrr>rrrrr rr#rrrrs  @@r%test_w_dest_close_failsz$TestCopyFile.test_w_dest_close_fails9
s))+99T?	

vvu
5	3OOIz2	3(()))*((),,Q/7:;--a055*	,
	3	3sDD
cP|jd|jdfd	}tjtd|5|j	t
5tjdddddddd|jj|jj|jj|jjddu|jjy#1swYxYw#1swYxYw)NTc"|dk(rS|dk(rSyr$rFr%s  r%rz5TestCopyFile.test_w_source_close_fails.<locals>._openT
r&r'r=rrrr)rrrrrr r>rrrrrr's  @@r%test_w_source_close_failsz&TestCopyFile.test_w_source_close_failsN
s))D/99;	

vvu
5	7""7+
7	:6
7	7	
(()))*))*,,Q/478(

7
7	7	7s$DD3DD	DD%N)rrrobjectrrrCrErTr!r(r+rFr'r%rr	
sy*v*$7X__U./606"X__U./,0,(X__U./)0)r'rceZdZdZedZedZdZejdZ
dZdZdZ
d	Zej ej$d
k7ddZy
)TestCopyFileObji c8tt|jyr*)rWrFILESIZEclss r%
setUpClasszTestCopyFileObj.setUpClassh
s-r'chtjttjtyr*)rrtrrr1s r%
tearDownClasszTestCopyFileObj.tearDownClassl
s !r'c6tjtyr*rrtrr2s r%tearDownzTestCopyFileObj.tearDownq
!r'c#Kttd5}ttd5}||fddddddy#1swYxYw#1swYyxYwwNrYr4r=rrr=s   r%	get_fileszTestCopyFileObj.get_filest
V
&$
	!3gt$
!Cj 
!	!	!
!
!	!	!/AA<A	AA	AA
Act|d5}t|d5}|j|j|jddddddy#1swYxYw#1swYyxYwr)r=rr[)rrwrxfsrcfdsts     r%assert_files_eqzTestCopyFileObj.assert_files_eqz
sc
#t_	;c4
;D  diik:
;	;	;
;
;	;	;s"
A&/A	A&A#	A&&A/c|j5\}}tj||ddd|jtt
y#1swY$xYwr*)r=rcopyfileobjrCrrr=s   r%test_contentzTestCopyFileObj.test_content
sG
^^
	)#ssC(	)VW-	)	)sAAc|j5\}}tj||dddy#1swYyxYwr*)r=rrEr=s   r%test_file_not_closedz$TestCopyFileObj.test_file_not_closed
s7
^^
	"#ssC(	"	"	"s4=c(|j5\}}tj|||j|j	|j
|j|j	|j
dddy#1swYyxYwr*)r=rrErtellr0r=s   r%test_file_offsetz TestCopyFileObj.test_file_offset
sk
^^
	8#ssC(SXXZ7SXXZ7	8	8	8sA.BBrezWindows onlycdtjjd5}tjt
tddd|jjdddtjtjd5}|jddddj}|jt j"|tjjd5}tj|tddd|j|jdddtjtjd5}	ddd|j}|jt j"|tjjd5}tj|tddd|j%|ty#1swYxYw#1swY_xYw#1swYxYw#1swYxYw#1swYRxYw)	Nzshutil._copyfileobj_readintorrniFrksfoor)rCrrrr>rrr	call_argsrprqr+rrr>rfrrrtrC)rmrUrs    r%
test_win_implzTestCopyFileObj.test_win_impl
s]]
 
 !?
@	-AOOFG,	-
	
Q*O<
(
(RYY[
G	1
GGFO		((%0
]]
 
 !?
@	,AOOE7+	,Q*A.
(
(RYY[
G	1		((%0
]]
 
 !?
@	,AOOE7+	,	
UG,3	-	-			,	,
			,	,s;G4H7H%H:H&4G>HHH#&H/N)rrrr0classmethodr3r5r8
contextlibcontextmanagerr=rCrFrHrKrCrEr+rfrOrFr'r%r.r.e
sH.."""!!
;
.
"8X__RWW_n5-6-r'r.ceZdZ	dZdZdZedZedZdZ	e
jdZdZ
d	Zd
ZdZdZd
ZdZdZdZy)_ZeroCopyFileTestir'rctt|jttd5}|j	|_dddy#1swYyxYwr)rWrr0r=r[FILEDATA)r2rUs  r%r3z_ZeroCopyFileTest.setUpClass
s>-
&$
	51668CL	5	5	5sA

Ac6tjtyr*)rrtrr1s r%r5z_ZeroCopyFileTest.tearDownClass
s r'c6tjtyr*r7r2s r%r8z_ZeroCopyFileTest.tearDown
r9r'c#Kttd5}ttd5}||fddddddy#1swYxYw#1swYyxYwwr;r<r=s   r%r=z_ZeroCopyFileTest.get_files
r>r?ctd)Nzmust be implemented in subclass)r2)rr#r$s   r%zerocopy_funz_ZeroCopyFileTest.zerocopy_fun
s!"CDDr'c|j|j|j|jyr*)r8r5r3rGr2s r%resetz_ZeroCopyFileTest.reset
s*



r'c|j5\}}|j||ddd|jttd|j
|j5\}}tjjd5}tjttddddddy#1swYxYw#1swYxYw#1swYyxYw)NTr@zshutil.copyfileobj)r=r[rr\rrVrCrrrr>r)rrwrxrNs    r%test_regular_copyz#_ZeroCopyFileTest.test_regular_copy
s
^^
	(#sc3'	(748$--H
^^
	 #s$$%9:
1a0
1	 	 		(	(

1
1	 	 s/B=*#C
C	,C=C	C	CCcd|j|j|j5\}}|jtt
f5|j
||dddddd|jttd|jy#1swY=xYw#1swYAxYw)NTr_)rr]r=rr rr[rr\rrVr=s   r%test_same_filez _ZeroCopyFileTest.test_same_file
s

#
^^
	,#s""G->#?@
,!!#s+
,	,	
6$7G
,
,	,	,s#B&BB&B#	B&&B/c tjtj}|j	t
5}t
j|dddd|jjj|y#1swY0xYw)Nrnew)rprr+rrrrrr>rrr)rrfrs   r%test_non_existent_srcz'_ZeroCopyFileTest.test_non_existent_src
sd299;/


0
1	)ROOD%(	)..5	)	)sBB
ctdztdz|jfd|jfdtd5	dddtd5}td5}|j||dddddd|j	tdd	y#1swYcxYw#1swY;xYw#1swY?xYw)
Nrwrxc.tjSr*rrt)rusr%rz3_ZeroCopyFileTest.test_empty_file.<locals>.<lambda>
	 0 0 9r'c.tjSr*rh)rvsr%rz3_ZeroCopyFileTest.test_empty_file.<locals>.<lambda>
rir'r4rYTr_r')rrr=r[rr\)rrwrxrvrus   @@r%test_empty_filez!_ZeroCopyFileTest.test_empty_file
s5.5.9:9:
'4
 		'4
 	,Cgt$
,!!#s+
,	,	
748#>		
,
,	,	,s0	B-
C,B9?C-B69C	>CCctjj|jt5|jttjttdddy#1swYyxYw)Nr)
rCrr
PATCHPOINTZeroDivisionErrorrrr>rrr2s r%test_unhandled_exceptionz*_ZeroCopyFileTest.test_unhandled_exception
sY
]]
 
 ->!@	@/$oovw
@	@	@	@s/A((A1c|tjj|jt	t
jd5|j5\}}|jt5|j||dddddddddy#1swYxYw#1swYxYw#1swYyxYwNyor)rCrrrmr r"EINVALr=rrr[r=s   r%test_exception_on_first_callz._ZeroCopyFileTest.test_exception_on_first_calls]]
 
 -4U\\4-H!J	0!
0Zc3&&'890%%c3/0
0	0	000
0
0	0	0s<B2B&.BB&	B2B#B&&B/	+B22B;cHtjj|jt	t
jd5|j5\}}|jt|j||ddddddy#1swYxYw#1swYyxYwrq)
rCrrrmr r"ENOSPCr=rr[r=s   r%test_filesystem_fullz&_ZeroCopyFileTest.test_filesystem_full
s]]
 
 -4U\\4-H!J	H!
HZc3!!'4+<+<c3G
H	H	H
H
H	H	Hs$B&B;BB	BB!N)rrrr0rVrmrPr3r5r8rQrRr=r[r]r`rbrerkrortrwrFr'r%rTrT
s- HHJ55!!"!!
E H6?@0Hr'rTzos.sendfile() not supportedcFeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
Zy)TestZeroCopySendfileos.sendfilec.tj||Sr*)r_fastcopy_sendfile)rrArBs   r%r[z!TestZeroCopySendfile.zerocopy_funs((t44r'ctj|j5}ttd5}|jt5|j||dddtj||dddddd|jttd|jy#1swY[xYw#1swYIxYw#1swYMxYw)Nr4Tr_)ioBytesIOrVr=rrrr[rrErr\r=s   r%test_non_regular_file_srcz.TestZeroCopySendfile.test_non_regular_file_srcs
ZZ


&	-#gt$
-&&'890%%c3/0""3,
-	-	
748$--H	00
-
-	-	-s:CCB4C8C4B=9CC		CCcttd5}tj5}|j	t
5|j
||dddtj|||jd|j|j|jddddddy#1swYkxYw#1swYxYw#1swYyxYw)NrYr)
r=rr~rrrr[rrEseekrr[rVr=s   r%test_non_regular_file_dstz.TestZeroCopySendfile.test_non_regular_file_dst#s
&$
	<3
<&&'890%%c3/0""3,  T]];
<	<	<00
<
<	<	<s:CCB9AC(C9C>CC	
CCcfd}gtjtjj	dd|5|j5\}}|j
t5}tj||ddddddddd|jjjtjy#1swYNxYw#1swYRxYw#1swYVxYw)Ncnsjd|i|Sttjd)Nrr)rcr r"EBADF)r#r$r
orig_sendfiles  r%rjzDTestZeroCopySendfile.test_exception_on_second_call.<locals>.sendfile-s3D!$d5f55ekk400r'rzT)r}r)r+rjrCrrr=rr rr|rrr"r)rrjrwrxrrrs     @@r%test_exception_on_second_callz2TestZeroCopySendfile.test_exception_on_second_call,s	1

]]
 
 t-5!7	8!
8Zc3&&w/82--c378
8	8	
++U[[988
8
8	8	8s;C#C'C>CC#CCC 	C##C,cJtjjdt5}|j	5\}}tj||dddddd|jttd|jy#1swY=xYw#1swYAxYw)Nos.fstatrTr_)rCrrr r=rr|rr\rrVrrNrwrxs    r%test_cant_get_sizez'TestZeroCopySendfile.test_cant_get_size>s]]
 
 
 
A	 Q!
 Zc3))#s3
 	 	
748$--H
 
 	 	 s"BB
B
B	BB"ctjj}d|_tjj	d|5}|j5\}}t
j||dddddd|jttd|jy#1swY=xYw#1swYAxYw)NirrXTr_)rCrMockst_sizerr=rr|rr\rrVrrrNrwrxs     r%test_small_chunksz&TestZeroCopySendfile.test_small_chunksHs
}}!!# 
]]
 
 $
 
?	 1!
 Zc3))#s3
 	 	
748$--H
 
 	 	 s$B:B.2B:.B7	3B::Cctjj}|jdz|_tjjd|5}|j
5\}}tj||dddddd|jttd|jy#1swY=xYw#1swYAxYw)Ni@rrXTr_)
rCrrr0rrr=rr|rr\rrVrs     r%test_big_chunkz#TestZeroCopySendfile.test_big_chunkUs
}}!!#}}(9:
]]
 
 $
 
?	 1!
 Zc3))#s3
 	 	
748$--H
 
 	 	 s$C%B;?C;C	CCctjjdt5}|j	tt
jtt|jdd}|j|tjjttjtt!tdd|j#tjtdz|j	tt
jttdz|jdd}|j|d	dddy#1swYyxYw)
NrzrrrshelloTr_3i)rCrrrnrrr>rrrMrr+r;getsizerrtrCr)rrN	blocksizes   r%test_blocksize_argz'TestZeroCopySendfile.test_blocksize_argbs
]]
 
 ->!@	1CD/$oovw
@Aq)I
Y(?@W%w6OOI,,gm</$oow#

GAq)IY0	1	1	1sDE

Ect	tjj|jt	t
jd5}|j5\}}|jt5tj||dddddddddtjj|j5}tjttddddt_y#1swYuxYw#1swYyxYw#1swY}xYw#1swY9xYw#dt_wxYw)NrrrT)rCrrrmr r"ENOTSOCKr=rrrr|r>rr_USE_CP_SENDFILErs    r%test_file2file_not_supportedz1TestZeroCopySendfile.test_file2file_not_supportedts
	+$$OO ' =%?
 BC^^%<#s**+<=<11#s;<<
 $$T__5
$0
$'+F#<<<<
 
 
$
$'+F#slAD*DD/C:DD1D*D&D*:D?DD	DDD*D'#D**
D7N)
rrrrmr[rrrrrrrrrFr'r%ryrys8J5I<:$III1$+r'ryz
macOS onlyceZdZdZdZy)TestZeroCopyMACOSzposix._fcopyfilecLtj||tjSr*)r_fastcopy_fcopyfileposix_COPYFILE_DATAr=s   r%r[zTestZeroCopyMACOS.zerocopy_funs))#sE4H4HIIr'N)rrrrmr[rFr'r%rrs
#JJr'rc eZdZdZdZdZejeje
jjdeje
edddZejej"dd	Zy
)TestGetTerminalSizec	tj}|j|jd|j|jdy)Nr)rget_terminal_sizer)columnslines)rrQs  r%test_does_not_crashz'TestGetTerminalSize.test_does_not_crashs?	
'')a0

A.r'c	tj5}d|d<|d=tj}ddd|j	j
dtj5}|d=d|d<tj}ddd|j	|jdy#1swY{xYw#1swY2xYw)N777COLUMNSLINESi	888ix)rrvrrrrrrrxrQs   r%test_os_environ_firstz)TestGetTerminalSize.test_os_environ_firsts8

*
*
,	."C	NG++-D	.	
s+

*
*
,	.I CL++-D	.	
S)	.	.	.	.sB-+B9-B69Cctj5}d|d<d|d<tj}ddd|j	j
d|j	|jdy#1swYBxYw)Nrryyyrr)rrvrrr)rrrs   r%test_bad_environz$TestGetTerminalSize.test_bad_environso

*
*
,	."C	N CL++-D	.	
a0

A.	.	.sA55A>z
not on ttyrzneed os.get_terminal_size()c		tjddgjj}tdt|df}tj5}|d=|d=tj}ddd|j|y#tt
tjf$r|jdYwxYw#1swYQxYw)NsttyrQzstty invocation failedrrrr)rrrrrrrrrrrvrrr)rrQrrxrWs     r%test_stty_matchz#TestGetTerminalSize.test_stty_matchs		4**FF+;<CCEKKMDQL#d1g,/

*
*
,	0GI--/F	0
	
6*"?--/	4MM23	4
	0	0s3B&C/C
CCzWASI has no /dev/nullctj5}|d=|d=tjtdd5tjd}ddd|jjd|j|jdttjdd	
5}tjtd|5tjd}dddddd|j|jd|j|jd
dddy#1swYxYw#1swY^xYw#1swYbxYw#1swYyxYw)Nrr
__stdout__)
)fallbackrrr5r6r7)(rr)
rrvrrrrrrrrr=r+devnull)rrxrQrUs    r%
test_fallbackz!TestGetTerminalSize.test_fallbacks/

*
*
,	-GI""3d;
C//B
CT\\2.TZZ,bjj#8
CA""3a8
C//B
C
C
T\\2.TZZ,!	-	-

C
C
C
C
C
C	-	-sT"ED.AE*ED:E%AE.D7	3E:E?EE	EEN)rrrrrrrCrDr+isattyrrrsrorrEris_wasirrFr'r%rrs/
*/X3>>#8#8#:;\JX%8968+8K+*X__W__&=>-?-r'rceZdZ	dZy)PublicAPITestsc|jttdgd}ttdstjdk(r|jd|j
ttjt|y)N__all__)rEr>rrr!r&rRrrrrF	ExecErrorrrrrrr	rrr{r,rrr
statvfsrer$)	rrorr+rfrcrrr)r
target_apis  r%test_module_all_attributez(PublicAPITests.test_module_all_attributes]	23<
2y!RWW_l+V^^,c*o>r'N)rrrrrFr'r%rrs
H?r'r__main__)F)WrC
unittest.mockrrprrr+os.pathr"r0rrrLrNrQr~rrrrrrr	r
rrr
rrdwarningsrrImportErrorrrtest.supportrtest.support.os_helperrrrrrrrFrjrTrUrrrrrrrAssertionErrorrbr&r2rCrWr\rdr{SUPPORTS_SENDFILErrTestCaserrJrrWr#r;rrrr.r,rTrEryrrrrmainrFr'r%<module>rs

	

	6666"3(
3,
f_

f_
)

,,
!
!'
*	ll2A%O==z"#>?AL	)$
&:01		D68,,D6N`28X..`2D@?x**@?FL88X..L8^M+x**M+`CA(++CAL)Y)o-x**o-dY)8$$Y)xG-h''G-TaHaHH&&(EFs+,h.?.?s+Gs+lUL)J)8+<+<J*JL-(++L-^?X&&?$zHMMOk^E$O
Gs6*J3 
K+K3J>=J>KKKK