python (3.11.7)

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

e>a	ddlmZddlmZddlmZddlmZddlmZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlmZ	ddlZn#e$rddlZYnwxYw	ddlZn
#e$rdZYnwxYwejejejdzZeje	jd	koej pej!d
Z"dZ#eje#dZ$Gd
dej%Z&Gddej%Z'Gddej%Z(GddZ)eje*eddGddej%e)Z+eje*eddGddej%e)Z,eje	j
dkdGdd ej%Z-d!Z.e/d"krej0dSdS)#)support)
import_helper)	os_helper)warnings_helper)assert_python_okN)contextmanagerz-dummy-symlinkz(test is only meaningful on 32-bit buildscttdsdS	tjdn2#t$r%}|jtjkrYd}~dSYd}~nd}~wwxYwdS)Nsched_getschedulerFrT)hasattrposixrOSErrorerrnoENOSYS)es C/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_posix.py_supports_schedr)s5.//u
 ####7el""55555#""""4s.
AAAzrequires POSIX scheduler APIceZdZdZdZejeedddZ	ejeedddZ
ejeed	d
dZejeed	d
dZejeed
ddZ
ejeed
ddZejeeddejeedddZejeedddZejeedddZejeedddZejeedd d!Zejeed"d#ejvd$ejd%Zejeed&d'ejd(Zejd)Zejeed*d+d,Zejeed-d.d/Zejeed0d1d2Zejeed0d1ejeed3d4d5Z ejeed0d1e!d6Z"ejeed7d8d9Z#ejeed:d;d<Z$ejeed:d;ejeed=d>d?Z%ejeed:d;e!d@Z&ejeedAdBdCZ'ejeedAdBdDZ(ejeedEdFdGZ)ejeedEdFdHZ*ejej+ejvdIdJZ,ejej+ej-vdKdLZ.ejeedMdNdOZ/ejeedMdNe!dPZ0ejeedQdRdSZ1ejeedQdRe!dTZ2ejeedUdVej3ej4dWdXZ5ejeedYdZd[Z6ejeed\d]ej3ej4d^d_Z7ejeed`daej8dbdcddej9deZ:ejeedfdgdhZ;ejeedidjdkZ<ejeedldmdnZ=doZ>ejeedpdqdrZ?ejeedsoee@dtdudvZAejeedwdxdyZBdzZCeDjEej3ejFd{d|ZGeDjEejeed}d~ej3ejFd{dZHeDjEejeedddZIejeedddZJdZKdZLdZMdZNejejOejvddZPejeedddZQejeedddZRejeedddZSejeedddZTejeeddej8dbdcddZUejVejeeddej8dbdcddZWejeedddZXdZYejeedddZZejeedddZ[ejeedddZ\dZ]dZ^ejeedddZ_ejeeddejeeddejeedddZ`ejeeddejeeddej9dZaejeebddejeedddZcejeeddZdejeeddZeeddZfedejeedd¦dÄZgehdĄZiejeedŦdƦdDŽZjeedȄZkeedɄZlej3ej4dʦejejmdkd̦d̈́ZnejeedΦdϦdЄZodфZpd҄ZqdӄZrejeedԦdզdքZsd#S)PosixTestercB|tjtjt	tjd5	dddn#1swxYwY|t
jtj	ddtdS)Nwbignorez.* potential security risk .*)
addCleanuprunlinkTESTFNopenenterContextrcheck_warningswarningsfilterwarningsRuntimeWarningselfs rsetUpzPosixTester.setUp8s	()*:;;;
)"D
)
)																	/8::;;;*I .	0	0	0	0	0sAAAcgd}|D]m}tt|d}|S||5||t|ddddn#1swxYwYndS)N)ctermidgetcwdgetcwdbunametimes
getloadavggetegidgeteuidgetgid	getgroupsgetpidgetpgrpgetppidgetuidsync)getattrr
subTestassertRaises	TypeError)r#NO_ARG_FUNCTIONSname
posix_funcs    rtestNoArgFunctionszPosixTester.testNoArgFunctionsAs%	@	@D d33J%\\$''@@JLLL%%iQ???@@@@@@@@@@@@@@@	@	@s'A))A-	0A-		getresuidztest needs posix.getresuid()ctj}|t|d|D]}||ddSNr)r
r>assertEquallenassertGreaterEqual)r#user_idsvals   rtest_getresuidzPosixTester.test_getresuidQs_?$$X***	,	,C##C++++	,	,	getresgidztest needs posix.getresgid()ctj}|t|d|D]}||ddSr@)r
rIrBrCrD)r#	group_idsrFs   rtest_getresgidzPosixTester.test_getresgidYs_O%%	Y+++	,	,C##C++++	,	,rH	setresuidztest needs posix.setresuid()ctj}|tj||tjddddSN)r
r>assertIsNonerM)r#current_user_idss  rtest_setresuidzPosixTester.test_setresuidasV!?,,%/+;<===%/"b"5566666rHctj}d|vr.|ddzddf}|jttjg|RdSdSNrr5rP)r
r>r8rrM)r#rRnew_user_idss   rtest_setresuid_exceptionz$PosixTester.test_setresuid_exceptionisa!?,,$$$,Q/12r:LDguFFFFFFF%$rH	setresgidztest needs posix.setresgid()ctj}|tj||tjddddSrO)r
rIrQrX)r#current_group_idss  rtest_setresgidzPosixTester.test_setresgidrsV"O--%/+<=>>>%/"b"5566666rHctj}d|vr.|ddzddf}|jttjg|RdSdSrU)r
rIr8rrX)r#rZ
new_group_idss   rtest_setresgid_exceptionz$PosixTester.test_setresgid_exceptionzsa"O--%%%.q1!3R<MDguGGGGGGG&%rH
initgroupsztest needs os.initgroups()getpwuidztest needs pwd.getpwuid()c|ttj|ttjd|ttjdd|ttjddt	tjdkr	tjtjj	}n"#t$rtjdwxYw	tj|d|
ddS#t$r0}||jt jYd}~dSd}~wwxYwdS)NrAfoorzneed a pwd entry
z+Expected OSError to be raised by initgroups)r8r9r
r_objectosr3pwdr`pw_nameKeyErrorunittestSkipTestfailrrBrEPERM)r#r;rs   rtest_initgroupszPosixTester.test_initgroupss`	
)U%5666)U%5t<<<)U%5q%@@@)U%5uaJJJ9;;!
<|ELNN33;
<
<
<'(:;;;
<
I r***		GHHHHH
7
7
7  %+666666666
7s$?*C**D	
D99
E3%E..E3statvfsztest needs posix.statvfs()ch|tjtjdSN)
assertTruer
rnrecurdirr"s rtest_statvfszPosixTester.test_statvfss(	

bi0011111rHfstatvfsztest needs posix.fstatvfs()cxttj}	|t	j||t	j||dS#|wxYwrp)	rrrrqr
rtfilenorncloser#fps  r
test_fstatvfszPosixTester.test_fstatvfss)"
#
#	OOEN299;;77888OOEM"))++66777HHJJJJJBHHJJJJsA2B##B9	ftruncateztest needs posix.ftruncate()c6ttjd}	|d|tj|d|dS#|wxYw)Nw+testr)	rrrwriteflushr
r{rvrwrxs  rtest_ftruncatezPosixTester.test_ftruncatesw)"D
)
)	HHVHHJJJOBIIKK+++HHJJJJJBHHJJJJsABBtruncateztest needs posix.truncate()cttjd5}|d|dddn#1swxYwYtjtjddS)Nwr~r)rrrrrr
rrxs  r
test_truncatezPosixTester.test_truncates
)"C
(
(	BHHVHHJJJ																y'+++++s*AAAexecveNz/test needs execve() to support the fd parameterctjtjtj}	tj}|dkrotjtjtjdtj
|tjddgtjntj
|dtj|dS#tj|wxYw)Nr-cpassexitcode)rersys
executableO_RDONLYforkchdirpathsplitr
renvironrwait_processrw)r#rypids   rtest_fexecvezPosixTester.test_fexecvesWS^R[
1
1	'))Caxxs~66q9:::R#.$!?LLLL$S15555HRLLLLLBHRLLLLsBCC5waitidztest needs posix.waitid()ctj}|dkrztjtjt
jdtjt
jt
jddgtj	dStj
tj|tj}|
||jdS)Nrrr)rerrrrrrr
rrrP_PIDWEXITEDrBsi_pid)r#rress   rtest_waitidzPosixTester.test_waitidsgii!88HRW]]3>2215666L#.$)GTTTTT,u{C??CS#*-----rHcT|td5tjddddn#1swxYwY|td5tjddddn#1swxYwY|td5tjddddn#1swxYwY|td5tjd	
dddn#1swxYwY|td5tjddddn#1swxYwY|td5tjddddn#1swxYwY|td5tjd
dddn#1swxYwY|td5tjdd
dddn#1swxYwY|td5tjdddddn#1swxYwYd}t	d|dS)NzPositional args not allowed)msgcdSrprrHr<lambda>z3PosixTester.test_register_at_fork.<locals>.<lambda>srHzArgs must be callable)beforethree)after_in_childsFive)after_in_parentzArgs must not be NonezInvalid arg was allowedcdS)NrArrrHrrz3PosixTester.test_register_at_fork.<locals>.<lambda>sQrH)rrcdSrprrrHrrz3PosixTester.test_register_at_fork.<locals>.<lambda>strH)rraif 1:
            import os

            r, w = os.pipe()
            fin_r, fin_w = os.pipe()

            os.register_at_fork(before=lambda: os.write(w, b'A'))
            os.register_at_fork(after_in_parent=lambda: os.write(w, b'C'))
            os.register_at_fork(after_in_child=lambda: os.write(w, b'E'))
            os.register_at_fork(before=lambda: os.write(w, b'B'),
                                after_in_parent=lambda: os.write(w, b'D'),
                                after_in_child=lambda: os.write(w, b'F'))

            pid = os.fork()
            if pid == 0:
                # At this point, after-forkers have already been executed
                os.close(w)
                # Wait for parent to tell us to exit
                os.read(fin_r, 1)
                os._exit(0)
            else:
                try:
                    os.close(w)
                    with open(r, "rb") as f:
                        data = f.read()
                        assert len(data) == 6, data
                        # Check before-fork callbacks
                        assert data[:2] == b'BA', data
                        # Check after-fork callbacks
                        assert sorted(data[2:]) == list(b'CDEF'), data
                        assert data.index(b'C') < data.index(b'D'), data
                        assert data.index(b'E') < data.index(b'F'), data
                finally:
                    os.write(fin_w, b'!')
            r)r8r9reregister_at_forkr)r#codes  rtest_register_at_forkz!PosixTester.test_register_at_forks


y.K

L
L	.	.---	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.


y.E

F
F	*	*q))))	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*


y.E

F
F	8	8w7777	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8


y.E

F
F	9	98888	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9


y.E

F
F	-	-t,,,,	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-


y.E

F
F	5	5t4444	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5


y.E

F
F	6	65555	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6


y.G

H
H	H	HtYYGGGG	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H

y.G

H
H	H	H||BGGGG	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H
"F	t$$$$$s?AA&BBB/CCC8DD!DE##E'*E'
F,,F03F0G55G9<G9III'JJJlockfztest needs posix.lockf()ctjtjtjtjz}	tj|dtj|dtjtj
|tjdtj
|tjdtj
|dS#tj
|wxYw)Ntestr)rerrrO_WRONLYO_CREATrlseekSEEK_SETr
rF_LOCKF_ULOCKrwr#fds  r
test_lockfzPosixTester.test_lockfs
WY%r{RZ'?
@
@	HR!!!HRBK(((KEL!,,,KEM1---HRLLLLLBHRLLLLsA5CCpreadztest needs posix.pread()ctjtjtjtjz}	tj|dtj|dtj|	dtj|dd|	dtj|dtj
|dS#tj
|wxYw)Nrrsesrr5ste)rerrrO_RDWRrrrrrBr
rreadrwrs  r
test_preadzPosixTester.test_pread"s
WY%ry2:'=
>
>	HR!!!HRBK(((UEKAq$9$9:::UEJr1$5$5666HRLLLLLBHRLLLLsBCC,preadvztest needs posix.preadv()ctjtjtjtjz}	tj|dddD}|tj	||dd|gdt|tj|dS#tj|wxYw)Ntest1tt2t3t5t6t6t8c,g|]}t|Sr	bytearray.0is  r
<listcomp>z+PosixTester.test_preadv.<locals>.<listcomp>3333A9Q<<333rHrArrA
st1tt2st3ts5t)rerrrrrrrBr
rlistrw)r#rbufs   rtest_preadvzPosixTester.test_preadv.s
WY%ry2:'=
>
>	HR.///33333CU\"c155r:::666S		BBBHRLLLLLBHRLLLLsA0B>>C	RWF_HIPRIztest needs posix.RWF_HIPRIctjtjtjtjz}	tj|dddD}|tj	||dtj
d|gdt|nf#t$r|
dYnEt$r9}|jtjtjhvrt%jdd}~wwxYwtj|dS#tj|wxYw)	Nrc,g|]}t|Srrrs  rrz1PosixTester.test_preadv_flags.<locals>.<listcomp>?rrHrrArrzpreadv2 not availablez0RWF_HIPRI is not supported by the current system)rerrrrrrrBr
rrrNotImplementedErrorskipTestrrEINVALENOTSUPrirjrw)r#rrinsts    rtest_preadv_flagszPosixTester.test_preadv_flags9s6WY%ry2:'=
>
>	HR.///33333CU\"c1blCCRHHH666S		BBBB"	3	3	3MM122222			zelEM:::'(Z[[[	
HRLLLLLBHRLLLLs6A;B43D04DD0	D4DDD00Ec0tjtjtjtjz}	t
dgdz}|t5}tj	||ddddn#1swxYwY|
|jjtj
|
t|dddztj|dS#tj|wxYwNr)rerrrrrrr8rrrB	exceptionrrbytesrwr#rrcms    rtest_preadv_overflow_32bitsz'PosixTester.test_preadv_overflow_32bitsOsWY%ry2:'=
>
>	U##$u,C""7++
&r	"c1%%%
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&R\/>>>U3q6]]E5L999HRLLLLLBHRLLLLs0-C?%B<C?BC?BAC??Dpwriteztest needs posix.pwrite()ctjtjtjtjz}	tj|dtj|dtjtj
|dd|dtj|dtj
|dS#tj
|wxYw)Nrrxxr5stxxtr)rerrrrrrrrr
rrBrrwrs  rtest_pwritezPosixTester.test_pwrite\s
WY%ry2:'=
>
>	HR!!!HRBK(((LUA&&&WejQ&7&7888HRLLLLLBHRLLLLsA4CCpwritevztest needs posix.pwritev()c&tjtjtjtjz}	tj|dtj|dtjtj	|gdd}|
|dtj|dtj|
dtj|dtj
|dS#tj
|wxYw)Nrrstest1stt2st3rrsxxtest1tt2t3d)rerrrrrrrrrrBr
rrwr#rns   rtest_pwritevzPosixTester.test_pwritevgs
WY%ry2:'=
>
>		HRHRBK(((
2888!<<AQ###HRBK(((_ejS.A.ABBBHRLLLLLBHRLLLLsB,C::Dzos.RWF_SYNCztest needs os.RWF_SYNCc<tjtjtjtjz}	tj|dtj|dtjtj	|gddtj
}||dtj|dtj|dtj
|dtj|dS#tj|wxYw)Nrrrrrs
xxtest1tt2r)rerrrrrrrrrRWF_SYNCrBr
rrwrs   rtest_pwritev_flagszPosixTester.test_pwritev_flagsusWY%ry2:'=
>
>		HRHRBK(((
2888!R[IIAQ###HRBK(((]EJr3,?,?@@@HRLLLLLBHRLLLLsB7DDctjtjtjtjz}	|t5}tj|ddzgdzddddn#1swxYwY|	|j
jtjtj
|dS#tj
|wxYw)Nxrrr)rerrrrrr8rrrBrrrrwr#rrs   rtest_pwritev_overflow_32bitsz(PosixTester.test_pwritev_overflow_32bitssWY%ry2:'=
>
>	""7++
:r
2u~5q999
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:R\/>>>HRLLLLLBHRLLLLs/CA<0C<BCB-CCposix_fallocatez"test needs posix.posix_fallocate()ctjtjtjtjz}	t
j|ddn[#t$rN}|j	tj
kr3tj
drtjdd}~wwxYw	tj|dS#tj|wxYw)Nrr)sunosfreebsdnetbsdopenbsdgnukfreebsdz test may fail on ZFS filesystems)rerrrrrr
rrrrrplatform
startswithrirjrw)r#rrs   rtest_posix_fallocatez PosixTester.test_posix_fallocatesWY%r{RZ'?
@
@
	!"a,,,,						
zU\))cl.E.EH/J/J)'(JKKK		
-
HRLLLLLBHRLLLLs*AC
B'A	B""B''CCc	tjddddS#t$r!}|jtjkrYd}~dSd}~wwxYw)Nrr)r
rrrEBADFr#rs  rtest_posix_fallocate_errnoz&PosixTester.test_posix_fallocate_errnosg	!#q"-----			zU[(()(((((	s
AAA
posix_fadvisez test needs posix.posix_fadvise()ctjtjtj}	tj|ddt
jtj|dS#tj|wxYwNr)	rerrrrr
rPOSIX_FADV_WILLNEEDrwrs  rtest_posix_fadvisezPosixTester.test_posix_fadvises\WY%r{
3
3	Aq%*CDDDHRLLLLLBHRLLLLs!A""A8c	tjdddtjdS#t$r!}|jtjkrYd}~dSd}~wwxYw)Nrr)r
rr	rrrrs  rtest_posix_fadvise_errnoz$PosixTester.test_posix_fadvise_errnosl	Q5+DEEEEE			zU[(()(((((	s!%
AAAz!test needs fd support in os.utimec
tj}tjtjtj}	t
j|t
j|d|ttj|d|ttj||df|ttj|d|ft
j|t|t|ft
j|||f|ttj|||f||f|ttj||dfd|ttj|d|dft
j|t|t|t|z
dzft
j|t|t|t|z
dzftj|dS#tj|wxYw)NNN)nsreA)
timererrrrr
utimer8r9int
ValueErrorrw)r#nowrs   rtest_utime_with_fdzPosixTester.test_utime_with_fdsikk
WY%r{
3
3	KOOOKD!!!ib,GGGib3+FFFib4+FFFKSXXs3xx0111KS#J'''j%+rC:3PS*UUUj%+rC8UUUj%+r<SRSHUUUKSXXsC#c((Nc+A'B'BCDDDKC#sSXX~.D*E*EFGGGG
HRLLLLLBHRLLLLsG6I

I z.test needs follow_symlinks support in os.utimectj}tjtjdd|ttjtjdd|ttjtj|dfd|ttjtjd|fdtjtjt|t|fdtjtj||fdtjtjddS)NFfollow_symlinksrrr
rrrr8r9rr#rs  rtest_utime_nofollow_symlinksz(PosixTester.test_utime_nofollow_symlinkss&ikk
I$dEBBBB)U[)2B&		?	?	?)U[)2B+u		>	>	>)U[)2B+u		>	>	>
I$s3xxS&:$)	+	+	+	+
I$sCj%HHHH
I$e<<<<<<rHwritevztest needs posix.writev()c0tjtjtjtjz}	tj|d}||dtj|dtj	|dtj|d	tj|g}||dn#t$rYnwxYwtj
|dS#tj
|wxYw)Nrrr
test1tt2t3)rerrrrrrrBrrr
rrrw)r#rrsizes    rtest_writevzPosixTester.test_writevs
WY%ry2:'=
>
>		"788AQ###HRBK(((]EJr2,>,>???
*|B++  q))))




HRLLLLLBHRLLLLs0A4C?-CC?
C&#C?%C&&C??Dctjtjtjtjz}	|t5}tj|ddzgdzdddn#1swxYwY|	|j
jtjtj
|dS#tj
|wxYw)Nrrr)rerrrrrr8rrrBrrrrwrs   rtest_writev_overflow_32bitsz'PosixTester.test_writev_overflow_32bitssWY%ry2:'=
>
>	""7++
6r	"te|nu4555
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6R\/>>>HRLLLLLBHRLLLLs/CA;/C;A??CA?-CCreadvztest needs posix.readv()c`tjtjtjtjz}	tj|dtj|dtjddD}|	tj||d|	gdd|D	tj|g}|	|dn#t$rYnwxYwtj
|dS#tj
|wxYw)Nrrc,g|]}t|Srrrs  rrz*PosixTester.test_readv.<locals>.<listcomp>	rrHrrrc,g|]}t|Sr)rrs  rrz*PosixTester.test_readv.<locals>.<listcomp>s8O8O8Oaq8O8O8OrH)rerrrrrrrrrBr
r$rrw)r#rrr s    r
test_readvzPosixTester.test_readvs'
WY%ry2:'=
>
>	HR'''HRBK(((33333CU[S1126666668O8O38O8O8OPPP
*{2r**  q))))




HRLLLLLBHRLLLLs0BDC1D1
C>;D=C>>DD-c.tjtjtjtjz}	t
dgdz}|t5}tj	||dddn#1swxYwY|
|jjtj
|
t|dddztj|dS#tj|wxYwr)rerrrrrrr8rr$rBrrrrrwrs    rtest_readv_overflow_32bitsz&PosixTester.test_readv_overflow_32bitssWY%ry2:'=
>
>	U##$u,C""7++
"rS!!!
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"R\/>>>U3q6]]E5L999HRLLLLLBHRLLLLs0-C>%B;C>BC>BAC>>Ddupztest needs posix.dup()zWASI does not have dup()c>ttj}	tj|}||ttj	||	dS#|	wxYwrp)
rrrr
r+rvassertIsInstancerrerw)r#ryrs   rtest_dupzPosixTester.test_dup&sv)"
#
#	299;;''B!!"c***HRLLLHHJJJJJBHHJJJJsABBconfstrztest needs posix.confstr()c|ttjd|ttjddkddS)N
CS_garbageCS_PATHrT)r8rr
r/rBrCr"s rtest_confstrzPosixTester.test_confstr2sQ	
*em\BBBU]95566:DAAAAArHdup2ztest needs posix.dup2()zWASI does not have dup2()cttj}ttj}	tj||||dS#||wxYwrp)rrrr
r4rvrw)r#fp1fp2s   r	test_dup2zPosixTester.test_dup28s9#$$9#$$	Jszz||SZZ\\222IIKKKIIKKKKK
IIKKKIIKKKKs9B*C	O_CLOEXECzneeds os.O_CLOEXECrctjtjtjtjz}|tj||tj	|dSrp)
rerrrrr9rrwassertFalseget_inheritablers  rtest_oscloexeczPosixTester.test_oscloexecDs\WY%r{2<'?
@
@"%%%+B//00000rHO_EXLOCKztest needs posix.O_EXLOCKctjtjtjtjztjz}|ttjtjtjtjztj	ztj
|ttdrtjtjtjtj
ztjz}|ttjtjtjtjztj	ztj
|dSdS)NO_SHLOCK)rerrrrr@rr8r
O_NONBLOCKrwrr
rBrs  r
test_osexlockzPosixTester.test_osexlockLsWY%[,RZ799'27I,<+bk1"-?	A	A	A
5*%%	)R[0;==Bgrw	0@ k"+5bmC
E
E
EHRLLLLL		rHrBztest needs posix.O_SHLOCKctjtjtjtjztjz}tjtjtjtjztjz}tj|tj|ttdrtjtjtjtjztjz}|
ttjtjtjtj
ztjztj|dSdS)Nr@)rerrrrrBrrwrr
r8rrr@rC)r#fd1fd2rs    r
test_osshlockzPosixTester.test_osshlock\sgi&[,RZ799gi&k"+-bj8::







5*%%	)R[0;==Bgrw	0@ k"+5bmC
E
E
EHRLLLLL		rHfstatztest needs posix.fstat()c	ttj}	|t	j||t	j||tdtjt||dS#|wxYwNz4should be string, bytes, os.PathLike or integer, not)rrrrqr
rIrvstatassertRaisesRegexr9floatrwrxs  r
test_fstatzPosixTester.test_fstatms)"
#
#	OOEK		44555OOEJryy{{33444""9JJbiikk 2 2
4
4
4
HHJJJJJBHHJJJJsB8C))C?c
|tjtj|tjtjtj|tdtjttjtj|
tdtjd|
tdtjttj|
tdtjttjtjdSrK)
rqr
rLrrrefsencodeassertWarnsRegexDeprecationWarningrrMr9rr"s r	test_statzPosixTester.test_stat{s(
9#344555
2;y/?#@#@AABBB0F
Ibk)2B&C&CDD	F	F	F	
yF
D	"	"	"	
yF
D!122	4	4	4	
yF
DY-=!>!>??	A	A	A	A	ArHmkfifozdon't have mkfifo()c2tjdkr+tjdt
j}nt
j}tj||t
j|	tj
|tjtj
zn/#t$r"}|d|zYd}~nd}~wwxYw|tjtj|jdS)Nvxworksz/fifos/posix.mkfifo(): %s)rrrerjoinrrrrr
rUrLS_IRUSRS_IWUSRPermissionErrorrrqS_ISFIFOst_mode)r#	fifo_pathrs   rtest_mkfifozPosixTester.test_mkfifos<9$$Y	0@AAII!(I###	()444	4LDL4<$?@@@@	4	4	4MM.233333333	4
ej&;&;&CDDEEEEEs=,B**
C4CCmknodS_IFIFOzdon't have mknod()/S_IFIFOc2tjtjtjtjztjz}	tjtj|d|	tj
tjtjjnS#t$rF}|
|jtjtjtjfYd}~nd}~wwxYwtjtj	tjtj|dddS#t$rG}|
|jtjtjtjfYd}~dSd}~wwxYw)Nr)rmodedevicedir_fd)rrrrLrbrZr[r
rarqr]r^rassertInrrlrEACCES)r#rdrs   r
test_mknodzPosixTester.test_mknodsw
	)***|dl*T\9	QK	($222
OODM%*Y5E*F*F*NOOPPPP	N	N	N
MM!'EKu|#LMMMMMMMM	N	)***	NKY-D





	N	N	NMM!'EKu|#LMMMMMMMMM	Ns0 B//
C?9<C::C?!"E
F<FFmakedevztest needs posix.makedev()c2tjtj}|j}||t||dtj|}||t||d|	tj|||
ttjt||
ttj|
ttftjdtj|}||t||d|	tj|||
ttjt||
ttj|
ttftjd|	tj||||
ttjt|||
ttj|t||
ttj||
ttjdS)NrrP)r
rLrrst_devr-rrDmajorrBr8r9rNr
OverflowErrorminorrj)r#stdevrmros     rtest_makedevzPosixTester.test_makedevsI
Z	(
)
)ic3'''Q'''C  eS)))q)))S))5111)U[%**===)U[111:}5u{BGGGC  eS)))q)))S))5111)U[%**===)U[111:}5u{BGGGue44c:::)U]E%LL%HHH)U]E5<<HHH)U]E:::)U]33333rHc
z	fd}tj}tj}|||||||d||||||d|||tjdkr|dv}n|dk}t
jrn|r`tjdkrdnd}|||||||dd|||||||||nt	jdvrtj	d	
t|dd|||
t|dd|||dtjvr*
t|dd|||ttfD]h}	
t||	|||||
t|||	||||idS)
NcC}|j||j|dSdSrp)rBst_uidst_gid)uidgidrLfirst_paramr#	stat_funcs   r
check_statz6PosixTester._test_all_chown_common.<locals>.check_statsV$ y--  c222  c22222%$rHrPrW)rr5rlr)zHP-UXSunOSz1Skipping because of non-standard chown() behavior)rer3r.rrr
is_emscriptensystemrirjr8rr/strrNr9)
r#
chown_funcryrzr{rwrxis_root	big_valuets
` ``      r_test_all_chown_commonz"PosixTester._test_all_chown_commons=	3	3	3	3	3	3	3
ikkikk
;S)))
3
;C(((
3
;R(((
3<9$$f}GGaxG )	%

%	%"#&,)";";IJ{Iy999Jy),,,J{B+++Jy),,,J{C---JsC    
_

"4
4
4#%/00
0
gz;1EEEJsC   gz;2FFFJsC   &&!!':{BJJJ
3$$$e	!	!Ai[!!C&&#NNNJsC   i[#qqvvNNNJsC    		!	!rHgetgid() is a stubcLtjtj|t
tjtjddtjtj|	tjtjtj
dSrO)rerrrr8rr
chowncreate_empty_filerrLr"s r
test_chownzPosixTester.test_chownss		)"###'5;	0@"bIII	#I$4555##EK1A5:NNNNNrHfchownztest needs os.fchown()c	dtjtjt	tjd}	|}|tj|ttdd|
dS#|
wxYw)NrrI)rerrrrrvrr
rr6rw)r#	test_filers   rtest_fchownzPosixTester.test_fchown"s		)"###)3//		!!##B''b(/w(E(E
G
G
G
OOIOOsA	BB/lchownztest needs os.lchown()c	tjtjtjt
tj|tjtjttdddS)Nlstat)
rerrrsymlink_DUMMY_SYMLINKrr
rr6r"s rtest_lchownzPosixTester.test_lchown1sk		)"###

>9#3444##EL)2B$+E7D$A$A	C	C	C	C	CrHrztest needs posix.chdir()ctjtj|t
tjtjdSrp)r
rrerrr8rrrr"s r
test_chdirzPosixTester.test_chdir:s7
BI'5;	0@AAAAArHc~|tjtjt
jdSrp)rgrrr
listdirrerrr"s rtest_listdirzPosixTester.test_listdir?s+

i&
bi(@(@AAAAArHch|tjtjdSrp)rgrrr
rr"s rtest_listdir_defaultz PosixTester.test_listdir_defaultBs'	


i&
88888rHc|tjtjtjddSN.)rgrerQrrr
rr"s rtest_listdir_byteszPosixTester.test_listdir_bytesGs5	


bk)"233U]45H5HIIIIIrHcttfD]}|t5t	j|d}dddn#1swxYwY|tjtj
||D]*}|t|t+dSr)r
memoryviewassertWarnsrSr
rrgrerQrrassertIstyper)r#clsnamesr;s    rtest_listdir_bytes_likez#PosixTester.test_listdir_bytes_likeLsj(	1	1C!!"455
1
1
cc$ii00
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1MM"+i&677???
1
1

d4jj%0000
1		1	1sAA	A	z)test needs fd support for posix.listdir()ctjtjtj}|tj||ttjdttj||ttjdttj|dS)N.)	r
rr'rrrwrBsortedr)r#fs  rtest_listdir_fdzPosixTester.test_listdir_fdTs
Ju|~~u~66Q'''5=%%&&5=##$$			
	
5=%%&&5=##$$					rHaccessztest needs posix.access()c~|tjtjt
jdSrp)rqr
rrrreR_OKr"s rtest_accesszPosixTester.test_accesscs+Y%5rw??@@@@@rHumaskztest needs posix.umask()ctjd}||ttj|dSr)r
rr-r)r#old_masks  r
test_umaskzPosixTester.test_umaskgs;;q>>h,,,
HrHstrerrorztest needs posix.strerror()cT|tjddSr)rqr
rr"s r
test_strerrorzPosixTester.test_strerrorms&	
q))*****rHpipeztest needs posix.pipe()ctj\}}tj|tj|dSrp)r
rrerw)r#readerwriters   r	test_pipezPosixTester.test_pipers7

rHpipe2ztest needs os.pipe2()c|ttjd|ttjddtjd\}}tj|tj|tjtjtjz\}}|tj||tj||tj	||tj	||tj
||tj
||ttj|d	tj
|dtjzdS#t$rYdSwxYw)NDEADBEEFrr5r)r8r9rerrwr9rCrr=r>get_blockingrrrr
PIPE_MAX_SIZE)r#rrs   r
test_pipe2zPosixTester.test_pipe2xs	
)RXz:::)RXq!444x{{1

xR]2331!$$$!$$$+A..///+A..///++,,,++,,,'27Aq111	HQw4455555			DD	s?"G##
G10G1cddl}|ttj|jdz|ttj|jdzdSNrr5)	_testcapir8rnrerINT_MAXUINT_MAX)r#rs  rtest_pipe2_c_limitszPosixTester.test_pipe2_c_limitssZ
	-93Dq3HIII-93E3IJJJJJrHrztest needs posix.utime()cPtj}tjtjd|ttjtjd|ttjtj|df|ttjtjd|ftjtjt|t|ftjtj||fdS)Nrrrs  r
test_utimezPosixTester.test_utimesikk
I$d+++)U[#*L	:	:	:)U[#*S$K	9	9	9)U[#*T3K	9	9	9
I$s3xxS&:;;;
I$sCj11111rHctj|}|t|d|jtjz}	|||fi|nD#t$r7}|jtjkrd}|	|Yd}~nd}~wwxYw	tj|}|
|jtjz|j	t|d}	n<#t$r/}
|
|
jtjYd}
~
nd}
~
wwxYwtj||jdS#tj||jwxYw)Nst_flags2chflag UF_IMMUTABLE not supported by underlying fsr})rerLrqrrUF_IMMUTABLErr
EOPNOTSUPPrrBrrlr
chflags)r#chflags_functarget_filekwargsrpflagserrrnew_strrs           r_test_chflags_regular_filez&PosixTester._test_chflags_regular_files
W[
!
!J//000d//	Le66v6666			yE,,,FCMM#			4W[))FR[4+<<foNNN
7+t,,
7
7
7  %+66666666
7
M+r{33333EM+r{3333sO
A
B"-BBAEC0/E0
D):%D$E$D))EE$rztest needs os.chflags()cZ|tjtjdSrp)rr
rrrr"s rtest_chflagszPosixTester.test_chflagss#''
y7GHHHHHrHlchflagsztest needs os.lchflags()c|tjtj|tjtjddSNFr)rr
rrrrr"s rtest_lchflags_regular_filez&PosixTester.test_lchflags_regular_filesP''	8HIII''
y7G8=	(	?	?	?	?	?rHctjtj}|t|d|tjttj	tjttj
t}d}tj|fD]$}|j
tjz}	|t|nD#t$r7}|jt jkrd}||Yd}~nd}~wwxYw	tjtj}tj
t}	||j
|j
||j
tjz|	j
|t|j
#|t|j
wxYwdS)Nrc0tj||dSr)r
r)rrs  rchflags_nofollowz;PosixTester.test_lchflags_symlink.<locals>.chflags_nofollows=ueDDDDrHr)rerLrrrqrrrrrrr
rrrrrrrrB)
r#	testfn_stdummy_symlink_strfnrrr
new_testfn_stnew_dummy_symlink_sts
          rtest_lchflags_symlinkz!PosixTester.test_lchflags_symlinksGI,--		:66777	(.999

9#^4448N33	E	E	E>#34	>	>B$-0AAE
#>5))))
#
#
#9 000J

c""""""""	
#

> "	(8 9 9
')x'?'?$  !3]5KLLL  !1!:T=N!N!5!>@@@>#3#<====>#3#<====%	>	>s%
C
D )-DD $BGGctjdkrt}nt}tjD]K\}}|t|||t||LdS)Nnt)	rer;rrr
ritemsrBr)r#	item_typekvs    rtest_environzPosixTester.test_environs
7d??IIIM''))	1	1DAqT!WWi000T!WWi0000	1	1rHc|t5tjdddddn#1swxYwY|t5tjdddddn#1swxYwY|t5tjdddddn#1swxYwYtjdkr|t5tjdd	dddn#1swxYwY|t5tjd
ddddn#1swxYwY|t5tjdd
ddddS#1swxYwYdSdS)NzFRUITVEGETABLEcabbageFRUITzorangeVEGETABLE=cabbagezFRUIT=ORANGElemonr
sFRUITVEGETABLEscabbagesFRUITsorangeVEGETABLE=cabbagesFRUIT=ORANGEslemon)r8rreputenvr;r"s rtest_putenvzPosixTester.test_putenvs


z
*
*	5	5I()444	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5


z
*
*	<	<Ig:;;;	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<


z
*
*	/	/Ing...	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/
7g"":..
;
;	-z:::
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;"":..
B
B	($@AAA
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B"":..
5
5	/8444
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5si=AA"BBB)CCCD""D&)D&E))E-0E-F11F58F5r'ztest needs posix.getcwd()cd}tj}tjtjdz}	tj|tj|n0#Ytj|t	j|dSxYw	tj|t	j|dS#tj|t	j|wxYw)Nz8getcwd-test-directory-0123456789abcdef-01234567890abcdefz.getcwd)	rer'rabspathrrmkdirrrmtree)r#dirnamerr	base_path_create_and_do_getcwds    @rtest_getcwd_long_pathnamesz&PosixTester.test_getcwd_long_pathnamessLGOOI$455	A		(HYHY	+
(
HVY'''''5
 2
HVY'''''
HVY''''s$(A-,C-B/CC*C2getgrouplistztest needs posix.getgrouplist()r3ztest needs os.getuid()ctjtjd}tjtjd}||tj||dS)NrrA)rfr`rer3rgr
r)r#usergroups   rtest_getgrouplistzPosixTester.test_getgrouplist)s_|BIKK((+RY[[))!,

eU/e<<=====rHr,ztest needs os.getegid()popenztest needs os.popen()c.tjd5}|}|}dddn#1swxYwY	td|D}n#t$rt}YnwxYw||stj	dtjdkrgddl}|
dpd}td|d	dd
Ddkrtj	d|t!j}||p|t!jhkdS)
Nzid -G 2>/dev/nullc34K|]}t|VdSrpr)rgs  r	<genexpr>z-PosixTester.test_getgroups.<locals>.<genexpr>;s(<<SVV<<<<<<rHzneed working 'id -G'darwinrMACOSX_DEPLOYMENT_TARGETz10.3c34K|]}t|VdSrpr)rrs  rrz-PosixTester.test_getgroups.<locals>.<genexpr>Es(88SVV888888rHrr)rr:z$getgroups(2) is broken prior to 10.6)rerrstriprwsetrrrirjrr	sysconfigget_config_vartuplesymmetric_differencer
r/rqr,)r#idggroupsret
idg_groupsr
dtsymdiffs        rtest_getgroupszPosixTester.test_getgroups2sX)
*
*	cXXZZ%%''F))++C																<<V\\^^<<<<<JJ			JJJ	?*?#$:;;;<8##))*DEEOB88RXXc]]1Q3%7888887BB'(NOOO11%/2C2CDDGCw5=??2C'CDDDDDs#;AA #A (+BB/.B/SIGCHLDz2CLD_XXXX be placed in si_code for a SIGCHLD signal
waitid_resultztest needs os.waitid_resultctjtjtjtjtjtjdSrp)re
CLD_EXITED
CLD_KILLED
CLD_DUMPEDCLD_TRAPPEDCLD_STOPPED
CLD_CONTINUEDr"s rtest_cld_xxxx_constantsz#PosixTester.test_cld_xxxx_constantsOs6	










rHsched_yieldzdon't have scheduling supportsched_setaffinityz!don't have sched affinity supportc,tjdSrp)r
r"r"s rtest_sched_yieldzPosixTester.test_sched_yield^s	rHsched_get_priority_maxz!requires sched_get_priority_max()ctj}tj|}tj|}||t
||t
|||tjdkrN|	ttjd|	ttjddSdS)Nri)r
SCHED_RRsched_get_priority_minr&r-rrDrrr8r)r#pollohis    rtest_sched_priorityzPosixTester.test_sched_prioritycs
n

)#
.
.

)#
.
.b#&&&b#&&&B'''<8##gu'CSIIIgu'CSIIIII$#rHcdtjD}tjd}|||	tjtj}|||n-#t$r }|jtj	krYd}~nd}~wwxYw|
ttjd|
ttjdtjd}||j
ttjds	tjd||tjd|n-#t$r }|jtj	krYd}~nd}~wwxYw|
ttjd||
ttjd|||
t(tjd|d|
t(tjddtjd}|
t(tjd|d}tj|}|
t,tjd|tj|}|
t,tjd|dS)NcBg|]\}}|d|S)SCHED_r)rr;scheds   rrzDPosixTester.test_get_and_set_scheduler_and_param.<locals>.<listcomp>us<===u"&//(";";=u===rHrrPrr+l)sched_priority)r
__dict__rrrgrer2rrrlr8sched_getparamr-r5rrrrsched_setschedulersched_setparamr9sched_paramrn)r#possible_schedulersmineparentrparamlarges       r$test_get_and_set_scheduler_and_paramz0PosixTester.test_get_and_set_scheduler_and_paramss==8L8L8N8N==='**

d/000	7-bjll;;F

MM&"56666				w%+%%&%%%%	
	
'5#;R@@@'5#7<<<$Q''e2C888
|&&'<==	H
(D%888$Q....


7ek))*))))

gu';RGGG'5#;RuMMM)U%=q$MMM)U%91bAAA!$'')U%91eDDD!%((-)=q%HHH!%888-)=q%HHHHHs0%B
B:B55B:+F		
F3F..F3sched_rr_get_intervalzno functioncD	tjd}nB#t$r5}|jtjkr|dYd}~nd}~wwxYw||t||d|	|ddS)Nrz only works on SCHED_RR processesgg?)
r
rArrrrr-rNrD
assertLess)r#intervalrs   rtest_sched_rr_get_intervalz&PosixTester.test_sched_rr_get_intervals	>2155HH	>	>	>w%,&&MM<========	>	
h..."---"%%%%%s
A+AActjd}||t|t|dtjds&|	ttjd|D]I}||t||d||dJdS)Nrr5rrPr	)
r
sched_getaffinityr-rrDrCrrrr8rrrC)r#maskcpus   rtest_sched_getaffinityz"PosixTester.test_sched_getaffinitys&q))dC(((D		1---|&&y11	Dgu'>CCC	*	*C!!#s+++##C+++OOC))))	*	*rHc	Jtjd}|tjdt	|t|dkr|tjd||tjd||ttjdg|ttjddg|ttjdttd|ttjdddzgtjds)|ttjd|dSdS)Nrr5i0XrrP)r
rGrr#rrCpoprBr8rrmaprrnrrr)r#rHs  rtest_sched_setaffinityz"PosixTester.test_sched_setaffinitysM&q))/DJJ???t99q==HHJJJ
4(((033T:::'5#:ArBBB*e&=q3%HHH*e&=q#c4..QQQ-)@!afXNNN|&&y11	Jgu'>DIIIII	J	JrHzNo dynamic linking on WASIr
zPOSIX-only testcftjtjtjtjdSrp)r
	RTLD_LAZYRTLD_NOWRTLD_GLOBAL
RTLD_LOCALr"s rtest_rtld_constantszPosixTester.test_rtld_constantss*	


rH	SEEK_HOLEz(test needs an OS that reports file holesc
ttjd5}|d||}|}	t|D]j}||tj
||tj||tj
||tj
k|ttj
||tj|ttj
||tj
n"#t$rt!jdwxYw	ddddS#1swxYwYdS)Nzr+bshellozOSError raised!)rrrrrtellrvrangerBrer	SEEK_DATAassertLessEqualrWr8rrirj)r#ryr fnors     r
test_fs_holeszPosixTester.test_fs_holess)"E
*
*	;bHHXHHJJJ7799D))++C
;tOOA$$Qa(F(FGGG((rxQ/M/MNNNN!!'28S$MMM!!'28S$MMMM
;
;
;
'(9:::
;N	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;s+AE=.CE
E=
E,,E==FFc	L	dD]}tt|d}|dtjfD]]}	|d|#t$rA}|d|t|Yd}~n d}~wwxYw|d|zdS)N)renamereplacelinknoodly2doesnotexistfilenamez'doesnotexistfilename' -> '{}'z#No valid path_error2() test for os.)	r6rerrrrgformatrrk)r#r;functiondstrs     rtest_path_error2zPosixTester.test_path_error2s	2	H	HDr4..H!9#34
H
HH3S9999MM"B"I"I#"N"NPSTUPVPVWWWEEEEE		?$FGGG	H	Hs=
B6BBc\tj}|dz}|tj|tj|d}	|t
5t
j|tjtj	z}dddn#1swxYwY|t
j
|n#|t
j
|wwxYw|tj
||t
tj||tj
|t|d
|t
tj|dS)Nr)rrrrr8rrerrrrwr=rexistsrrLr#rfn_with_NULrs    rtest_path_with_null_characterz)PosixTester.test_path_with_null_characters

4i	("---
	"":..
D
DW["+
*BCC
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D~~++,,,*bh<<<++,,,R*bg{;;;;;s0	B>#-BB>B  B>#B $B>>Cctjtj}|dz}|tj|tj|d}	|t5tj|tj	tj
z}dddn#1swxYwY|tj|n#|tj|wwxYw|tj
||ttj||tj
|t|d|ttj|dS)Nrr)rerQrrrrr8rrrrrwr=rrkrrLrls    rtest_path_with_null_bytez$PosixTester.test_path_with_null_bytes
[)
*
*5j	("---
	"":..
D
DW["+
*BCC
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D~~++,,,*bh<<<++,,,R*bg{;;;;;s0C5-B."C.B22C5B26CC)
pidfd_openzpidfd_open unavailablec"|t5}tjddddn#1swxYwY|jjt
jkr|dt|jtr|d|j|
|jjt
jtjtjtj
ddS)NrPz"system does not support pidfd_openzpidfd_open syscall blocked: r)r8rrerqrrrr
isinstancer\rBrrwr0)r#rs  rtest_pidfd_openzPosixTester.test_pidfd_open#s


w
'
'	2M"															
<--MM>???blO44	KMMIIIJJJ+U\:::
ry{{A../////s<AA)t__name__
__module____qualname__r$r=ri
skipUnlessrr
rGrLrSrWr[r^rfrmrsrzrrr6resupports_fdr
requires_forkrrrrrrrrequires_32brrrrrrrr
rrrsupports_follow_symlinksrr!r#r(r*skipIfis_wasir.r3r8requires_linux_versionrequires_subprocessr?rDrHrOrTr`rLrirrrrskip_unless_working_chmodr}rrrrrrrrrrrrrrrcpython_onlyrrrrrrrrrrrsignalr!requires_sched_hrequires_sched_affinityr%r-requires_schedr@rErJrPr;rVr^rhrnrprtrrHrrr6s000@@@ X44799,,99,X44799,,99,X4479977997X44799GG99GX4479977997X44799HH99HX55577Xj113NOOIIPO77I.X	2257722772X
3368888X4479999X
335RSS,,TS,XXt44FHyzzW

{z
X113NOOW..PO.W:%:%:%xX002LMM		NM	X002LMM		NM	X113NOOPOX113NOOX446RSSTSPO(X113NOO		\PO	X113NOOPOX	224PQQRQX	224PQQX
668PQQRQRQX	224PQQ\RQX(9::,....$X(9::,....X88*,,,,X88*,,,,XR^35XYYZY(XR%@@Brss==ts=X113NOOPO*X113NOO\POX002LMMNM*X002LMM		\NM	X..133X_W_&@AABA33X	22577BB77BX//244X_W_&ABBCB44X[113GHH#W#Aq"-- W ""11#".-IH1
X
3346666X
33466

66
X00355

55
AAA"X113HIIFFJIFX00MWWT95M5M577NN77N,X	224PQQ44RQ48F!F!F!P(X_W*,@AAOOBA)(O(X113KLLX_W*,@AA

BAML)(
(X113KLLCCML)(CX002LMMBBNMBBBB999
JJJ
111X".8DFFFFX113NOOAAPOAX002LMMNM
X
33688++88+X//1JKKLK
XW--/FGG#W#Aq"--.-HG4
XW--/FGG#W#Aq"--KK.-HGKX002LMM
2
2NM
24440X	224MNNIIONIX
335OPP??QP?
X
335OPP>>QP>@111
5
5
5X113NOO!(!(PO!(FX779Z[[Xj113NOOXX..0HII>>JIPO\[>XY//1JKKXW--/FGG W ""EE#"HGLKE4X335ijjX_557TUUVUkj+x*775-+H+H+JLL1h1''%AT2U2U2UWWX(@AA<>>JJ>>J&I&I^&IPX(?@@-PP&&QP&
*
*
*JJJ X_W_&BCCXG+->??@?DCX[11CEE;;EE;2HHH$<<<$<<<$X\224LMM00NM000rHrcfeZdZdZedZedZeje	j
e	jvddZeje	j
e	jvddZejee	do
e	je	jvd	ejejd
dZeje	je	jvdd
Zeje	je	jvddZejejdejee	do
e	je	jvddZeje	je	jvddZejee	doe	je	jvoeedddZeje	j e	jvddZ!ejee	do
e	j"e	jvddZ#eje	j$e	jvdd Z%eje	j&e	jvd!d"Z'eje	j(e	jvd#d$Z)ejee	d%o
e	j*e	jvd&d'Z+d(S))TestPosixDirFdrc#Ktxjdz
c_tjd|j}tjd|jd}t	j||tj|tj	
||}tj|5}|||fVddddS#1swxYwYdS)Nr5_base)rcountrrr
rrrmdirrerrYopen_dir_fd)r#r;base_dirfullnamerfs     rpreparezTestPosixDirFd.prepare3s
!"11TZ11&99999
HX...7<<$//

"8
,
,	+4****	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+s-CC	Cc#K|5\}}}tj||tj||||fVddddS#1swxYwYdSrp)rrrrr
rr#rfr;rs    rprepare_filezTestPosixDirFd.prepare_file?s
\\^^	+7h'111OOEL(3334****	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+sAA$$A(+A(z)test needs dir_fd support for os.access()c|5\}}}|tj|tj|ddddS#1swxYwYdSNrf)rrqr
rrerrs    rtest_access_dir_fdz!TestPosixDirFd.test_access_dir_fdFs



 
 	H$<VT8OOELrwvFFFGGG	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	Hs9AA"Az'test needs dir_fd support in os.chmod()c|5\}}}tj|tjtj|tjtjz|tj|}||jtjztjtjzddddS#1swxYwYdSr)	rr
chmodrLrZr[rBr^S_IRWXU)r#rfr;rss     rtest_chmod_dir_fdz TestPosixDirFd.test_chmod_dir_fdKs



 
 	:$<VT8K$,///KdlT\9&IIII
8$$AQY5!\DL8
:
:
:		:	:	:	:	:	:	:	:	:	:	:	:	:	:	:	:	:	:sB%CCCrz'test needs dir_fd support in os.chown()rc|5\}}}tj|tjtj|ddddS#1swxYwYdSr)rr
rrer3r.rs    rtest_chown_dir_fdz TestPosixDirFd.test_chown_dir_fdTs


 
 	G$<VT8Kbikk29;;vFFFF	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	Gs?A!!A%(A%z&test needs dir_fd support in os.stat()c
*|5\}}}t|d5}|ddddn#1swxYwY|tj|t	j|}t	j||}|||t	j|d}||||tdtj|t	j
|tdtj|t||ttj|dddddS#1swxYwYdS)Nrz	testline
rzshould be integer or None, notl Fx:^V)rrrrr
rrLrBrMr9r'rNr8rn)r#rfr;routfiles1s2s       rtest_stat_dir_fdzTestPosixDirFd.test_stat_dir_fd[s
\\^^	57hh$$
,

l+++
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,OOEL(333H%%BD000BR$$$HT222BR$$$""9.NJU\^^
#
=
=
=""9.NJU6]]
#
<
<
<mJV

5
5
5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5s5FAFA	FA	D'FFFz'test needs dir_fd support in os.utime()c|5\}}}tj}tj|d|tj|||t
tj||||t
tj|d||t
tj||df||t
tj|d|f||t
tj||df|tj|t
|t
|f|tj|||f|tj|t
|t
|t
|z
dzf|tj||t
|t
|t
|z
dzftjtjvr)	tj|d|n#t$rYnwxYwddddS#1swxYwYdS)Nrrxr)rfr*F)rrf)
rrr
rr8r9rrer|r)r#rfr;rrs     rtest_utime_dir_fdz TestPosixDirFd.test_utime_dir_fdos



 
 	$<VT8)++CKd62222KV,,,,id!&

2
2
2id*6

;
;
;id"Dk&

:
:
:id#Sk&

:
:
:id"Cj

9
9
9Ks3xxS26BBBBKsCj8888KXXsC#c((Nc#9::;F
L
L
L
LKV#&s88S#C.C1G-H-H"I
K
K
K
Kx2666KeFKKKKK!D3																		s6HIH65I6
IIIIIIz5WASI: symlink following on path_link is not supportedrbz&test needs dir_fd support in os.link()c&|5\}}}|5\}}}	tj||||n/#t$r"}|d|zYd}~nd}~wwxYw|tj||tj	|dtj	|ddddn#1swxYwYddddS#1swxYwYdS)N
src_dir_fd
dst_dir_fdzposix.link(): %sr5)
rrr
rbr\rrrrBrL)r#rfr;rdir_fd2linknamefulllinknamers        rtest_link_dir_fdzTestPosixDirFd.test_link_dir_fds


 
 		-$<VT8
\\^^		-@<
6
4fQQQQQ"
6
6
6

01455555555
6OOEL,777UZ11!4
<((+
-
-
-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-		-s^DC.A
C.
A9A4/C.4A99A)C."D.C2	2D5C2	6DD

D
z'test needs dir_fd support in os.mkdir()c|5\}}}tj|||tj|tj|ddddS#1swxYwYdSr)rr
rrrrLrs    rtest_mkdir_dir_fdz TestPosixDirFd.test_mkdir_dir_fds
\\^^	!7hKV,,,,OOEK222Jx   	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!sAA11A58A5rarbzAtest requires both stat.S_IFIFO and dir_fd support for os.mknod()cJ|5\}}}tjtjztjz}	tj||d||t
j||	tj
tj|jnS#t$rF}|
|jtjtjtjfYd}~nd}~wwxYwddddS#1swxYwYdS)Nrr)rrLrbrZr[r
rarrrqr]r^rrgrrlrrh)r#rfr;rrdrs      rtest_mknod_dir_fdz TestPosixDirFd.test_mknod_dir_fds^\\^^
	M7h<$,.=D
MD$&9999h777
ej.B.B.J K KLLLL

R
R
R

agU\5<'PQQQQQQQQ
R	
	M
	M
	M
	M
	M
	M
	M
	M
	M
	M
	M
	M
	M
	M
	M
	M
	M
	Ms<+DB8AD8
D<D>DDDDDz&test needs dir_fd support in os.open()c|5\}}}t|d5}|ddddn#1swxYwY|tj|t	j|tj|}	t	j|d}|d|t	j	|n#t	j	|wxYw	ddddS#1swxYwYdS)Nrs	testline
r	)
rrrrr
rrrrBrw)r#rfr;rrrrs       rtest_open_dir_fdzTestPosixDirFd.test_open_dir_fdsi
\\^^		 7hh%%
-

m,,,
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-OOEL(333D%.@@@B
 jQ''  444BB		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 sMDADA	DA	AD+CDC//DDDreadlinkz*test needs dir_fd support in os.readlink()c&|5\}}}tjd||tj||t	j||dddddS#1swxYwYdSNrr)rrerrr
rrBrrs    rtest_readlink_dir_fdz#TestPosixDirFd.test_readlink_dir_fds\\^^	M7hJy(+++OOEL(333U^D@@@)LLL	M	M	M	M	M	M	M	M	M	M	M	M	M	M	M	M	M	MA$BB

B
z(test needs dir_fd support in os.rename()cJ|5\}}}|5\}}}tj||||tj|tj||dddn#1swxYwYddddS#1swxYwYdS)Nr)rrr
r`rL)r#rfr;rrname2	fullname2s       rtest_rename_dir_fdz!TestPosixDirFd.test_rename_dir_fds+



 
 	.$<VT8
\\^^	.:	Lu$*w
@
@
@
@Jy!!!LH---	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.s5BAB4BB	BB	BBBz)test needs dir_fd support in os.symlink()c&|5\}}}tjd|||tj||tj|dddddS#1swxYwYdSr)rr
rrrrBrrs    rtest_symlink_dir_fdz"TestPosixDirFd.test_symlink_dir_fds
\\^^	B7hM)T&9999OOEL(333U^H55yAAA	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	Brz(test needs dir_fd support in os.unlink()c|5\}}}tj|tj|	tj|||ttj|n&#|tj|xYw	ddddS#1swxYwYdSr)	rrrr
rLrr8rrrs    rtest_unlink_dir_fdz!TestPosixDirFd.test_unlink_dir_fds
\\^^	7h'111Jx   
T&1111!!'5:x@@@@
h777A																		s)-B4<B?B4#B##B44B8;B8rUz(test needs dir_fd support in os.mkfifo()c|5\}}}	tj|tjtjz|n/#t$r"}|d|zYd}~nd}~wwxYw|tj	||
tjtj|jddddS#1swxYwYdS)NrrX)
rr
rUrLrZr[r\rrrrqr]r^)r#rfr;rrs     rtest_mkfifo_dir_fdz!TestPosixDirFd.test_mkfifo_dir_fds8
\\^^	I7h
8T4<$,#>vNNNNN"
8
8
8

2Q677777777
8OOEL(333OODM%*X*>*>*FGGHHH
	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	Is;C$.A
	C$

A6A1,C$1A66A!C$$C(+C(N),rurvrwrrrrrirxrersupports_dir_fdrrrrrr}rr}rrLrrrr~rbrrrrarrrrrr`rrrrrrUrrrHrrr0s3
E	+	+^	+++^+Xb&88:effHHgfHXR%779bcc::dc:XW--R28r?Q3QBDDX_W*,@AAGGBADDGXB$668`aa55ba5&XR%779bccdc<X_?XF=2+= =0
-
-		
-XR%779bcc!!dc!XW--6 h"*<<6$WT955\^^
M
M	^^
MXB$668`aa
 
 ba
 XZ00XbkREW6WEGGMMGGMXb&88:dee..fe.Xr'99;fggBBhgBXb&88:dee		fe	XX..R29@R3RT~II@IIIrHrceZdZdZdZejeedddZ	ejeedddZ
d	S)
PosixGroupsTesterc&tjdkrtjdt	tdstjdt
jdkrtjdtj|_dS)Nrznot enough privilegesr/zneed posix.getgroupsrzgetgroups(2) is broken on OSX)	r
r3rirjrrrr/saved_groupsr"s rr$zPosixGroupsTester.setUps~<>>Q#$;<<<uk**	<#$:;;;<8###$CDDD!O--rHc(ttdrtj|jdSttdrLt	jtjj}tj||jddSdS)N	setgroupsr_r)	rr
rrrfr`r3rgr_r#r;s  rtearDownzPosixGroupsTester.tearDowns5+&&	9OD-.....
UL
)
)	9<//7DT4#4Q#788888	9	9rHr_ztest needs posix.initgroups()ct|jpdgdz}tjt	jj}t	j||||t	j	dSr)
maxrrfr`r
r3rgr_rgr/)r#rr;s   rrmz!PosixGroupsTester.test_initgroups
sm

!(aS))A-|ELNN++3
q!!!

a**+++++rHrztest needs posix.setgroups()cdgttdfD]=}tj|||tj>dS)Nr)rrZr
rassertListEqualr/)r#rs  rtest_setgroupsz PosixGroupsTester.test_setgroupssasDrOO,	<	<FOF###  ):):;;;;	<	<rHN)rurvrwr$rrirxrr
rmrrrHrrrs...999X558::,,::,X44799<<99<<<rHrceZdZejddddfZdZdZdZdZ	d	Z
d
ZdZdZ
d
ZdZdZdZejeedddZdZdZejeedddZdZeejejdddZeejejdddZ dZ!dZ"dZ#dZ$d Z%dS)!_PosixSpawnMixin-I-SrrNc&tjddg|RS)Nrr)rrr#argss  rpython_argsz_PosixSpawnMixin.python_args!sd2T222rHctj}|tj|d|d}|d|}||d|tj}tj	|dt|d5}||t|ddddS#1swxYwYdS)N2if 1:
            import os
            with open(zO, "w") as pidfile:
                pidfile.write(str(os.getpid()))
            rrrutf-8encoding)rrrrr
spawn_funcrerrrrrBrr)r#pidfilescriptrrrs      rtest_returns_pidz!_PosixSpawnMixin.test_returns_pid)s"	('222
f--ood1gtRZ88S1----
'G
,
,
,	1QVVXXs3xx000	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1s6CC!CcLd}	|||gtj}tj|d\}}|||||ddS#ttf$r&}||j|Yd}~dSd}~wwxYw)Nno_such_executabler)	rrerwaitpidrBassertNotEqualFileNotFoundErrorr\filename)r#rrpid2statusexcs      rtest_no_such_executablez(_PosixSpawnMixin.test_no_such_executable7s1	+//"4#5"6"$*..C:c1--LD&T3'''*****"?3	?	?	?S\+=>>>>>>>>>	?s"A,,B#=BB#ctj}|tj|d|d}|d|}||d|itjddi}tj	|dt|d	5}||dddddS#1swxYwYdS)
Nrz^, "w", encoding="utf-8") as envfile:
                envfile.write(os.environ['foo'])
        rrrbbarrrr)
rrrrrrrerrrrrBr)r#envfilerrrrs      rtest_specify_environmentz)_PosixSpawnMixin.test_specify_environmentFs("	('222
f--ood1gt::UE::<<S1----
'G
,
,
,	.QVVXXu---	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.s)CCCc||jd|jtjd}t	j|ddSNrfile_actionsrrNOOP_PROGRAMrerrrr#rs  rtest_none_file_actionsz'_PosixSpawnMixin.test_none_file_actionsUsQooa J	

	S1------rHc||jd|jtjg}t	j|ddSrrrs  rtest_empty_file_actionsz(_PosixSpawnMixin.test_empty_file_actions^sQooa J	

	S1------rHc|tjtjddgtjd}tj|ddS)NrrFresetidsrrrrrrerrrrs  rtest_resetids_explicit_defaultz/_PosixSpawnMixin.test_resetids_explicit_defaultgsQooN
^T6*J	

	S1------rHc|tjtjddgtjd}tj|ddS)NrrTrrrrrs  r
test_resetidsz_PosixSpawnMixin.test_resetidspsQooN
^T6*J	

	S1------rHc|t5|tjtjddgt
jdddddS#1swxYwYdS)Nrrrr8r9rrrrerr"s rtest_resetids_wrong_typez)_PosixSpawnMixin.test_resetids_wrong_typeys


y
)
)	7	7OOCN ^T6:J

7
7
7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7;A##A'*A'c|tjtjddgtjtj}t
j|ddS)Nrr	setpgrouprr)rrrrerr1rrrs  rtest_setpgroupz_PosixSpawnMixin.test_setpgroupsWooN
^T6*Jjll	

	S1------rHc|t5|tjtjddgt
jdddddS#1swxYwYdS)Nrr023r
rr"s rtest_setpgroup_wrong_typez*_PosixSpawnMixin.test_setpgroup_wrong_types


y
)
)	9	9OOCN ^T6:J%

9
9
9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9rpthread_sigmaskzneed signal.pthread_sigmask()ctjd}|tjtjd|gt
jtjg}tj
|ddS)NI            import signal
            signal.raise_signal(signal.SIGUSR1)r
setsigmaskrr)textwrapdedentrrrrerrSIGUSR1rr)r#rrs   rtest_setsigmaskz _PosixSpawnMixin.test_setsigmasksp 344ooN
^T4(J'	

	S1------rHc	|t5|tjtjddgt
jddddn#1swxYwY|t5|tjtjddgt
jdgdddn#1swxYwY|t5|tjtjddgt
jtj	tj	dzgddddS#1swxYwYdS)Nrr"rjr5
r8r9rrrrerrrNSIGr"s rtest_setsigmask_wrong_typez+_PosixSpawnMixin.test_setsigmask_wrong_types


y
)
)	7	7OOCN ^T6:J2

7
7
7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7

y
)
)	:	:OOCN ^T6:JC5

:
:
:	:	:	:	:	:	:	:	:	:	:	:	:	:	:	:

z
*
*	D	DOOCN ^T6:JFK4:KM4C

D
D
D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D6;A""A&)A&<CCC4AEEEc>tj\}}|tj|	tj|dtjd|d}	|tj	tj	d|gtj
d}nY#t$r"}|d|Yd}~n2d}~wt$r"}|d|Yd}~nd}~wwxYwtj|n#tj|wxYwtj|d	tj|d
}t#|}tjtj}|||dS)NTz0
                import os
                fd = z`
                sid = os.getsid(0)
                os.write(fd, str(sid).encode())
            r)setsidzsetsid is not supported: zsetsid failed with: rrr)rerrrwset_inheritablerrrrrrrrr\rrrrgetsidr0r)	r#rfdwfdrrroutput	child_sid
parent_sids	         rtest_setsidz_PosixSpawnMixin.test_setsids799S#&&&	sD)))?$$$$D
>oocn'*~tT&B&(j&??'
C
C
C

A#AABBBBBBBB"
>
>
>

<S<<========
>
HSMMMMBHSMMMMS1----c""KK	Yry{{++
J	22222sG-D&:B! D!
C7+CD
C7C2-D2C77DD%ctjtjtj}tjd}	|tjtjd|gtj	tjg}tjtj|n$#tjtj|wxYwtj|tjdS)Nrr	setsigdefr)rrSIG_IGNrrrrrrerrr)r#original_handlerrrs    rtest_setsigdefz_PosixSpawnMixin.test_setsigdefs"=HH 344	<//t,
!>*	"C
M&.*:;;;;FM&.*:;;;;SFN?;;;;;;sAB$$!Cc	|t5|tjtjddgt
jddddn#1swxYwY|t5|tjtjddgt
jdgdddn#1swxYwY|t5|tjtjddgt
jtj	tj	dzgddddS#1swxYwYdS)Nrrrr+rr5rr"s rtest_setsigdef_wrong_typez*_PosixSpawnMixin.test_setsigdef_wrong_types


y
)
)	6	6OOCN ^T6:J"

6
6
6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6

y
)
)	9	9OOCN ^T6:J3%

9
9
9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9

z
*
*	P	POOCN ^T6:J6;A
2N

P
P
P	P	P	P	P	P	P	P	P	P	P	P	P	P	P	P	P	P	Prr3zbpo-34685: test can fail on BSDc	Ttjd}tj|}tjd|d|d}|tjtjd|gtjdtj	|f}tj|ddSNrzF            import os, sys
            if os.sched_getscheduler(0) != zV:
                sys.exit(101)
            if os.sched_getparam(0).sched_priority != z:
                sys.exit(102)r)	schedulerrrerr)rrrrrrr:rrr#policypriorityrrs     rtest_setscheduler_only_paramz-_PosixSpawnMixin.test_setscheduler_only_params&q)),V44 !,2 ! !8@	 ! ! !""ooN
^T4(JR^H556	

	S1------rHc	Ttjd}tj|}tjd|d|d}|tjtjd|gtj|tj	|f}tj|ddSr3r5r6s     rtest_setscheduler_with_policyz._PosixSpawnMixin.test_setscheduler_with_policys&q)),V44 !,2 ! !8@	 ! ! !""ooN
^T4(Jr~h778	

	S1------rHcJtjdtjttjdftjdftjddfg}||j	d|j	tj
|}tj|ddS)NrArr5rrr)
rePOSIX_SPAWN_OPENrrealpath__file__rPOSIX_SPAWN_CLOSEPOSIX_SPAWN_DUP2rrrrr)r#rrs   rtest_multiple_file_actionsz+_PosixSpawnMixin.test_multiple_file_actionss

 !RW%5%5h%?%?aP

!1%

 !Q'

ood/2"/ j+799	S1------rHc`|j}|t5||d|tjdgdddn#1swxYwY|t5||d|tjdgdddn#1swxYwY|t5||d|tjdgdddn#1swxYwY|t5||d|tjdgdddn#1swxYwY|t5||d|tjtjfgdddn#1swxYwY|t5||d|tjtjddfgdddn#1swxYwY|t5||d|tjtjdfgdddn#1swxYwY|t5||d|tjtjdtd	ztj
dfgddddS#1swxYwYdS)
Nrrrrp)i90r5rrArj)rr8r9rrerr@rr=r?rrs  rtest_bad_file_actionsz&_PosixSpawnMixin.test_bad_file_actions sA 


y
)
)	1	1OODGT2:*.

1
1
1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1

y
)
)	/	/OODGT2:*,

/
/
/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/

y
)
)	4	4OODGT2:*1

4
4
4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4

y
)
)	5	5OODGT2:*2

5
5
5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5

y
)
)	D	DOODGT2:+-+?*A)B

D
D
D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D

y
)
)	I	IOODGT2:+-+?A*F)G

I
I
I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I

y
)
)	I	IOODGT2:+-+?*F)G

I
I
I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I

z
*
*	=	=OODGT2:+-+>+,ho+-;+;*<

=
=
=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=s+AA A>+B55B9<B9+DDD6+E--E14E16GGG98H==II"7J%%J),J)
AL##L'*L'cJtj}|tj|d}tjd|tjtjztjztj
tjzfg}|d|}|
|d|tj|}tj|dt#|d5}||d	ddddS#1swxYwYdS)
NOif 1:
            import sys
            sys.stdout.write("hello")
            r5rrrrrrhello)rrrrrer=rrO_TRUNCrLrZr[rrrrrrrBr)r#rrrrrrs       rtest_open_filez_PosixSpawnMixin.test_open_file=sG"	('222

 !Wbj(2:5t|+
-

f--ood1gtRZ+799	S1----
'G
,
,
,	0QVVXXw///	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0s")DDDctj}|tj|d|d}|d|}||d|tjtjdfg}tj
|dt|d5}||
d	tjzddddS#1swxYwYdS)
Nzif 1:
            import os
            try:
                os.fstat(0)
            except OSError as e:
                with open(zq, 'w', encoding='utf-8') as closefile:
                    closefile.write('is closed %d' % e.errno)
            rrrrrrzis closed %d)rrrrrrrerr@rrrrBrrr)r#	closefilerrrrs      rtest_close_filez _PosixSpawnMixin.test_close_fileQsK$		()444
%f--ood1gtRZ-/-A1,E+FHH	S1----
)g
.
.
.	E!QVVXX~'CDDD	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	Es&6C))C-0C-cDtj}|tj|d}t	|d5}t
j|dfg}|d|}|	|d|t
j
|}tj|ddddn#1swxYwYt	|d	5}|
|d
ddddS#1swxYwYdS)NrFrr5rrrrrrrG)rrrrrrerArvrrrrrrBr)r#dupfiler	childfilerrrrs        rr8z_PosixSpawnMixin.test_dup2ds"	('222'4
 
 	2I$i&6&6&8&8!<L##D&11D//$q'4/;"==C q1111	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2'G
,
,
,	0QVVXXw///	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0s$A8CC
C)DDD)&rurvrwrrrrrrrrrrrrrrrrirxrrrrr)r/r1rr}rrr9r;rBrDrIrLr8rrHrrrsgND$f=LJ333111
+
+
+
.
.
.............777...999X):;;:<<..<<.
D
D
D333>X):;;8::<<::<"PPPX_S\,,-BCC688..88^."X_S\,,-BCC688..88^."
.
.
.===:000(EEE&00000rHrposix_spawnztest needs os.posix_spawnc(eZdZeeddZdS)TestPosixSpawnrPN)rurvrwr6r
rrrHrrRrRws!
t44JJJrHrRposix_spawnpztest needs os.posix_spawnpcHeZdZeeddZejdZdS)TestPosixSpawnPrSNctj}|tj|d}t
j||}tjtj
|	t
j|t
jdf}n#t$r|}YnwxYw|ddddf}tjd|d}d|f}t!|d|idS)	Nzposix_spawnp_test_program.exePATHrrrrzP
            import os
            from test import support

            args = zy
            pid = os.posix_spawnp(args[0], args, os.environ)

            support.wait_process(pid, exitcode=0)
        )tempfilemkdtemprrrrerrYrrrpathseprrhrrr)r#temp_dirprogramprogram_fullpathr
spawn_argsrrs        rtest_posix_spawnpz!TestPosixSpawnP.test_posix_spawnps#%%	((33317<<'::

3>#3444	:??Hbj.@#ABBDD			DDD	tT48
zz d|$*T*****s61B((B76B7)	rurvrwr6r
rrskip_unless_symlinkr_rrHrrUrU|sD55J"++#"+++rHrUrztest weak linking on macOSczeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdS)TestPosixWeaklinkingcddl}ddl}|fdD|_t	d|jddD|_dS)NrcNh|]!}|d||"S)HAVE_r1)rnmconfig_varss  r	<setcomp>z-TestPosixWeaklinking.setUp.<locals>.<setcomp>s6ccc"r}}W7M7McR]^`Rac2cccrHc34K|]}t|VdSrpr)rparts  rrz-TestPosixWeaklinking.setUp.<locals>.<genexpr>s(TT4SYYTTTTTTrHr)r
rget_config_vars	availablermac_verr)r#r
rrgs   @rr$zTestPosixWeaklinking.setUps//11cccccccTT3C83C3E3Ea3H3N3Ns3S3STTTTTrHcF||jvrtj|ddS)Nz not weak-linked)rlrirjrs  r_verify_availablez&TestPosixWeaklinking._verify_availables1t~%%#t$=$=$=>>>&%rHc|d|jdkrT|ttdd|ttdddS|ttdd|ttdddS)	NHAVE_PWRITEV)rrrzos.pwritev is not availablerzos.readv is not availablezos.pwritev is availablezos.readv is available)rormrqrrer=r"s rrz!TestPosixWeaklinking.test_pwritevs~...<8##OOGB	224QRRROOGB113NOOOOO
WR335NOOOWR224KLLLLLrHc^|d|jdkr"|dtjdS|dtj|td5tj	ddddddS#1swxYwYdS)NHAVE_FSTATATrrdir_fd unavailablefilerr)
rormrgr
_have_functionsassertNotInrMrrerLr"s rrTzTestPosixWeaklinking.test_stats~...<8##MM.%*?@@@@@
^U-BCCC''(;=QRR
*
*q))))
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*>B""B&)B&c|d|jdkr"|dtjdS|dtj|td5tj	dtj
ddddn#1swxYwY|td5tj	dtj
d	dddn#1swxYwY|td
5tj	dtj
dddddS#1swxYwYdS)
NHAVE_FACCESSATrtrurvrrzfollow_symlinks unavailableFrzeffective_ids unavailableT)
effective_ids)rormrgr
rwrxrMrrerrr"s rrz TestPosixWeaklinking.test_accesss/000<8##MM*E,ABBBBB
-u/DEEE''(;=QRR
5
5	&"'!4444
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5''(;=Z[[
B
B	&"'5AAAA
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B''(;=XYY
?
?	&"'>>>>
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?s6>"B,,B03B0"DDD&"EEEc|d|jdkr"|dtjdS|dtj|dtj|td5tj	dddddddS#1swxYwYdS)	N
HAVE_FCHMODATrtHAVE_LCHMODrurvirr)
rormrgr
rwrxrMrrerr"s r
test_chmodzTestPosixWeaklinking.test_chmods///<8##MM/5+@AAAAA
_e.CDDDMM-)>???''(;=QRR
2
2q1111
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2sCC
Cc|d|jdkr"|dtjdS|dtj|dtj|td5tj	ddddddddS#1swxYwYdS)N
HAVE_FCHOWNATrtHAVE_LCHOWNrurvrr)
rormrgr
rwrxrMrrerr"s rrzTestPosixWeaklinking.test_chowns///<8##MM/5+@AAAAA
_e.CDDDMM-)>???''(;=QRR
1
1Aa0000
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1sCCCch|d|jdkr"|dtjdS|dtj|td5tj	ddddddn#1swxYwY|td5tj	ddd	dddn#1swxYwY|td5tj	dddd
dddn#1swxYwYtj5}tj
|d}tj
|d}tj
|d}t|d5}|d
dddn#1swxYwYtjd||t$5tj	||ddddn#1swxYwY|t$5tj	||ddddn#1swxYwYddddS#1swxYwYdS)NHAVE_LINKATrtzsrc_dir_fd unavailablesourcetargetrrzdst_dir_fd unavailablerrrbrdataTrF)rormrgr
rwrxrMrrerbrr[rrYrrrr8FileExistsError)r#r	link_pathtarget_pathsource_pathrys      r	test_linkzTestPosixWeaklinking.test_linksp}---<8##MM-)>?????
]E,ABBB''(;=UVV
;
;(::::
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;''(;=UVV
;
;(::::
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;''(;=UVV
I
I(aHHHH
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I#%%
KGLLF;;	 gll9h?? gll9h??+s++%rHHV$$$%%%%%%%%%%%%%%%
8Y///&&77JJGKDIIIIJJJJJJJJJJJJJJJ&&77KKGKEJJJJKKKKKKKKKKKKKKK#
K
K
K
K
K
K
K
K
K
K
K
K
K
K
K
K
K
Ks>B""B&)B&C,,C03C0D77D;>D;A1J'G(J'(G,	,J'/G,	02J'"I:J'I
	
J'
I
	J'+JJ'J	J'J	J''J+.J+c|d|jdkr"|dtjdS|dtj|td5tj	ddddn#1swxYwY|td5tj
dddddS#1swxYwYdS)NHAVE_FDOPENDIRrtzClistdir: path should be string, bytes, os.PathLike or None, not intrzCscandir: path should be string, bytes, os.PathLike or None, not int)rormrgr
rwrxrMr9rerscandirr"s rtest_listdir_scandirz)TestPosixWeaklinking.test_listdir_scandirsa/000<8##MM*E,ABBBBB
-u/DEEE''	3xyy


1

















''	3xyy


1




















s$>BB#&B#C''C+.C+c^|d|jdkr"|dtjdS|dtj|td5tj	ddddddS#1swxYwYdS)NHAVE_MKDIRATrtrudirrr)
rormrgr
rwrxrMrrerr"s r
test_mkdirzTestPosixWeaklinking.test_mkdir's~...<8##MM.%*?@@@@@
^U-BCCC''(;=QRR
*
*q))))
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*ryc^|d|jdkr"|dtjdS|dtj|td5tj	ddddddS#1swxYwYdS)N
HAVE_MKFIFOATrcrrurrr)
rormrgr
rwrxrMrrerUr"s rr`z TestPosixWeaklinking.test_mkfifo2s///<7""MM/5+@AAAAA
_e.CDDD''(;=QRR
,
,	&++++
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,ryc^|d|jdkr"|dtjdS|dtj|td5tj	ddddddS#1swxYwYdS)NHAVE_MKNODATrrurrr)
rormrgr
rwrxrMrrerar"s rrizTestPosixWeaklinking.test_mknod=s~...<7""MM.%*?@@@@@
^U-BCCC''(;=QRR
+
+****
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ryc|d|jdkr"|dtjdS|dtj|td5tj	ddddddn#1swxYwY|td5tj	ddddddn#1swxYwY|td5tj
ddddddn#1swxYwY|td5tj
dddddddS#1swxYwYdS)	N
HAVE_RENAMEATrtz%src_dir_fd and dst_dir_fd unavailableabrrr)rormrgr
rwrxrMrrer`rar"s rtest_rename_replacez(TestPosixWeaklinking.test_rename_replaceHs///<8##MM/5+@AAAAA
_e.CDDD''(;=dee
2
2	#sq1111
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2''(;=dee
2
2	#sq1111
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2''(;=dee
3
3
32222
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3''(;=dee
3
3
32222
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3sH>B""B&)B&C,,C03C0D66D:=D:FFFc|d|jdkr"|dtjdS|dtj|td5tj	dddddn#1swxYwY|td5tj
ddddddS#1swxYwYdS)N
HAVE_UNLINKATrtrurrr)rormrgr
rwrxrMrrerrr"s rtest_unlink_rmdirz&TestPosixWeaklinking.test_unlink_rmdir\sp///<8##MM/5+@AAAAA
_e.CDDD''(;=QRR
,
,	&++++
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,''(;=QRR
+
+****
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+s$>B!!B%(B%C++C/2C/ct|d|jdkr"|dtjdS|dtj|td5tj	dtj
dddddS#1swxYwYdS)NHAVE_OPENATrtrurrr)rormrgr
rwrxrMrrerrr"s r	test_openzTestPosixWeaklinking.test_openjs}---<8##MM-)>?????
]E,ABBB''(;=QRR
7
7A6666
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7s>"B--B14B1c^|d|jdkr"|dtjdS|dtj|td5tj	ddddddS#1swxYwYdS)NHAVE_READLINKATrtrurrr)
rormrgr
rwrxrMrrerr"s r
test_readlinkz"TestPosixWeaklinking.test_readlinkus0111<8##MM+U-BCCCCC
.0EFFF''(;=QRR
/
/FA....
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/ryc`|d|jdkr"|dtjdS|dtj|td5tj	dddddddS#1swxYwYdS)NHAVE_SYMLINKATrtrurrrr)
rormrgr
rwrxrMrrerr"s rtest_symlinkz!TestPosixWeaklinking.test_symlinks/000<8##MM*E,ABBBBB
-u/DEEE''(;=QRR
0
0
3Q////
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0s>B##B'*B'c|d|d|jdkrB|dtj|dtjdS|dtj|dtj|td5tj	ddddddS#1swxYwYdS)N
HAVE_FUTIMENSHAVE_UTIMENSAT)rrcrurrr)
rormrgr
rwrxrMrrerr"s rrzTestPosixWeaklinking.test_utimes3////000<8##MM/5+@AAAMM*E,ABBBBB
_e.CDDD-u/DEEE''(;=QRR
+
+****
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+sC77C;>C;N)rurvrwr$rorrTrrrrrrr`rirrrrrrrrHrrbrbs,UUU???MMM	*	*	*???"
2
2
2
1
1
1$K$K$KN	*	*	*	,	,	,	+	+	+333(+++	7	7	7	/	/	/	0	0	0+++++rHrbc,tjdSrp)r
reap_childrenrrHrtearDownModulersrH__main__)1r~rtest.supportrrrtest.support.script_helperrrrrrrerrLrXrirr
contextlibrr
ImportErrorrrfrrY
gettempdirrrrxmaxsizer}r~r{rrTestCaserrrrrrRrUrbrrumainrrHr<module>rs&&&&&&""""""((((((777777







				%%%%%%LLLLJJJJ
CCC1h133'.1AACC#x"K%J!6!I'/J.%$__%6%68VWWv0v0v0v0v0(#v0v0v0t'EIEIEIEIEIX&EIEIEIP!<!<!<!<!<)!<!<!<HX0X0X0X0X0X0X0X0v
WWR//1LMM55555X&(855NM5WWR002NOO!+!+!+!+!+h')9!+!+PO!+HS\X-/KLLu+u+u+u+u+8,u+u+MLu+pzHMOOOOOs$A	A$#A$(A--A76A7