python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
test_posix.cpython-312.pyc

Αeg>dZddlmZddlmZddlmZddlmZddlmZejdZ
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZdd	lmZ	ddlZej4j7ej8ej:d
zZej>ej@dkxrejBxsejDdZ#d
Z$ej>e$dZ%GddejLZ'GddejLZ(GddejLZ)GddZ*ej>e+eddGddejLe*Z,ej>e+eddGddejLe*Z-ej>ej dk(d Gd!d"ejLZ.Gd#d$ejLZ/d%Z0e1d&k(rejdyy#e$rdZYwxYw)'zTest posix functions)support)
import_helper)	os_helper)warnings_helperassert_python_okposixN)contextmanagerz-dummy-symlinkz(test is only meaningful on 32-bit buildscttdsy	tjdy#t$r,}|jtj
k(rYd}~yYd}~yd}~wwxYw)Nsched_getschedulerFrT)hasattrr	r
OSErrorerrnoENOSYS)es C/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/test_posix.py_supports_schedr'sU5./
  #77ell"#s)	AAAzrequires POSIX scheduler APIcveZdZdZdZejeedddZ	ejeedddZ
ejeed	d
dZejeed	d
dZejeed
ddZ
ejeed
ddZejeeddejeedddZejeedddZejeedddZejeedddZejeedd d!Zejeed"d#ej.vd$ej2d%Zejeed&d'ej2d(Zej2d)Zejeed*d+d,Zejeed-d.d/Zejeed0d1d2Zejeed0d1ejeed3d4d5Z ejeed0d1e!d6Z"ejeed7d8d9Z#ejeed:d;d<Z$ejeed:d;ejeed=d>d?Z%ejeed:d;e!d@Z&ejeedAdBdCZ'ejeedAdBdDZ(ejeedEdFdGZ)ejeedEdFdHZ*ejejVej.vdIdJZ,ejejVejZvdKdLZ.ejeedMdNdOZ/ejeedMdNe!dPZ0ejeedQdRdSZ1ejeedQdRe!dTZ2ejeedUdVejfejhdWdXZ5ejeedYdZd[Z6ejeed\d]ejfejhd^d_Z7ejeed`daejpdbdcddejrdeZ:ejeedfdgdhZ;ejeedidjdkZ<ejeedldmdnZ=doZ>ejeedpdqdrZ?ejeedsxr	ee@dtdudvZAejeedwdxdyZBdzZCeDjejfejd{d|ZGeDjejeed}d~ejfejd{dZHeDjejeedddZIejeedddZJdZKdZLdZMdZNejejej.vddZPejeedddZQejeedddZRejeedddZSejeedddZTejeeddejpdbdcddZUejejeeddejpdbdcddZWejeedddZXdZYejeedddZZejeedddZ[ejeedddZ\dZ]dZ^ejeedddZ_ejeeddejeeddejeedddZ`ejeeddejeeddejrdZaejeebddejeedddZcejeeddZdejeeddZeeddZfedejeedd«dÄZgehdĄZiejeedūdƫdDŽZjeedȄZkeedɄZlejfejhdʫd˄Zmejeed̫dͫd΄ZndτZodЄZpdфZqejeedҫdӫdԄZry#)PosixTesterc<|jtjtjt	tjd5	ddd|jt
jtjddty#1swYHxYw)Nwbignorez.* potential security risk .*)
addCleanuprunlinkTESTFNopenenterContextrcheck_warningswarningsfilterwarningsRuntimeWarningselfs rsetUpzPosixTester.setUp6sq	(()*:*:;
)""D
)		/88:;*I .	0		s	BBcgd}|D]N}tt|d}||j|5||jt|ddddPy#1swY[xYw)N)ctermidgetcwdgetcwdbunametimes
getloadavggetegidgeteuidgetgid	getgroupsgetpidgetpgrpgetppidgetuidsync)getattrr	subTestassertRaises	TypeError)r$NO_ARG_FUNCTIONSname
posix_funcs    rtestNoArgFunctionszPosixTester.testNoArgFunctions?ss%	@D d3J%\\$'@L%%iQ?@@	@@@sAA"		getresuidztest needs posix.getresuid()ctj}|jt|d|D]}|j	|dyNr)r	r?assertEquallenassertGreaterEqual)r$user_idsvals   rtest_getresuidzPosixTester.test_getresuidOsC??$X*	,C##C+	,	getresgidztest needs posix.getresgid()ctj}|jt|d|D]}|j	|dyrA)r	rJrCrDrE)r$	group_idsrGs   rtest_getresgidzPosixTester.test_getresgidWsCOO%	Y+	,C##C+	,rI	setresuidztest needs posix.setresuid()ctj}|jtj||jtjdddyN)r	r?assertIsNonerN)r$current_user_idss  rtest_setresuidzPosixTester.test_setresuid_sD!??,%//+;<=%//"b"56rIctj}d|vr2|ddzddf}|jttjg|yyNrr6rQ)r	r?r9rrN)r$rSnew_user_idss   rtest_setresuid_exceptionz$PosixTester.test_setresuid_exceptiongsP!??,$$,Q/12r:LDguFF%rI	setresgidztest needs posix.setresgid()ctj}|jtj||jtjdddyrP)r	rJrRrY)r$current_group_idss  rtest_setresgidzPosixTester.test_setresgidpsD"OO-%//+<=>%//"b"56rIctj}d|vr2|ddzddf}|jttjg|yyrV)r	rJr9rrY)r$r[
new_group_idss   rtest_setresgid_exceptionz$PosixTester.test_setresgid_exceptionxsP"OO-%%.q1!3R<MDguGG&rI
initgroupsztest needs os.initgroups()getpwuidztest needs pwd.getpwuid()c|jttj|jttjd|jttjdd|jttjddt	tjdk7r[	tjtj
j}	tj|d|jdyy#t$rtjdwxYw#t$r4}|j|j t j"Yd}~yd}~wwxYw)NrBfoorzneed a pwd entry
z+Expected OSError to be raised by initgroups)r9r:r	r`objectosr4pwdrapw_nameKeyErrorunittestSkipTestfailrrCrEPERM)r$r<rs   rtest_initgroupszPosixTester.test_initgroupss	
)U%5%56)U%5%5t<)U%5%5q%@)U%5%5uaJ99;!
<||ELLN3;;
I  r*		GH
<''(:;;
<

7  %++66
7s$71D)D4D14	E1=*E,,E1statvfsztest needs posix.statvfs()ch|jtjtjyN)
assertTruer	rorfcurdirr#s rtest_statvfszPosixTester.test_statvfss	


bii01rIfstatvfsztest needs posix.fstatvfs()cJttj}	|jtj|j
|jtj|j
|jy#|jwxYwrq)	rrrrrr	rufilenorocloser$fps  r
test_fstatvfszPosixTester.test_fstatvfssb)""
#	OOENN299;78OOEMM"))+67HHJBHHJsA$BB"	ftruncateztest needs posix.ftruncate()cttjd}	|jd|j	t
j
|jd|jy#|jwxYw)Nw+testr)	rrrwriteflushr	r|rwrxrys  rtest_ftruncatezPosixTester.test_ftruncatesW)""D
)	HHVHHJOOBIIK+HHJBHHJsAA22Btruncateztest needs posix.truncate()cttjd5}|jd|j	dddt
j
tjdy#1swY.xYw)Nwrr)rrrrrr	rrys  r
test_truncatezPosixTester.test_truncatesT
)""C
(	BHHVHHJ		y''+		s"A**A3execveNz/test needs execve() to support the fd parameterctjtjtj}	tj
}|dk(rztjtjjtjdtj|tjddgtjntj|dtj|y#tj|wxYw)Nr-cpassexitcode)rfrsys
executableO_RDONLYforkchdirpathsplitr	renvironrwait_processrx)r$rzpids   rtest_fexecvezPosixTester.test_fexecvesWWS^^R[[
1	'')Caxs~~6q9:R#..$!?L$$S15HHRLBHHRLsB*C44Dwaitidztest needs posix.waitid()ctj}|dk(rtjtjj	t
jdtjt
jt
jddgtjytjtj|tj}|j||jy)Nrrr)rfrrrrrrr	rrrP_PIDWEXITEDrCsi_pid)r$rress   rtest_waitidzPosixTester.test_waitidsggi!8HHRWW]]3>>2156LL#..$)GT,,u{{C?CS#**-rIcZ|jtd5tjdddd|jtd5tjdddd|jtd5tjdddd|jtd5tjd	
ddd|jtd5tjdddd|jtd5tjdddd|jtd5tjd
ddd|jtd5tjdd
ddd|jtd5tjddd|jtd5tjdddddd}t	d|y#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swY]xYw#1swY4xYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw)NzPositional args not allowed)msgcyrqrrIr<lambda>z3PosixTester.test_register_at_fork.<locals>.<lambda>rIzArgs must be callable)beforethree)after_in_childsFive)after_in_parentzArgs must not be NonezInvalid arg was allowedcy)NrBrrrIrrz3PosixTester.test_register_at_fork.<locals>.<lambda>rrI)rrz!At least one argument is requiredcyrqrrrIrrz3PosixTester.test_register_at_fork.<locals>.<lambda>rrI)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)r9r:rfregister_at_forkrr$codes  rtest_register_at_forkz!PosixTester.test_register_at_forksK


y.K

L	.-	.


y.E

F	*q)	*


y.E

F	8w7	8


y.E

F	98	9


y.E

F	-t,	-


y.E

F	5t4	5


y.E

F	65	6


y.G

H	HtYG	H

y.Q

R	"!	"

y.G

H	H|BG	H
"F	t$y	.	.	*	*	8	8	9	9	-	-	5	5	6	6	H	H	"	"	H	HswH.H;I:I0I"&I/I<J	
J>J!.H8;III"I,/I9<J	JJ!J*lockfztest needs posix.lockf()ctjtjtjtj
z}	tj|dtj|dtjtj|tjdtj|tjdtj|y#tj|wxYw)Ntestr)rfrrrO_WRONLYO_CREATrlseekSEEK_SETr	rF_LOCKF_ULOCKrxr$fds  r
test_lockfzPosixTester.test_lockfs
WWY%%r{{RZZ'?
@	HHR!HHRBKK(KKELL!,KKEMM1-HHRLBHHRLs
BC  C7preadztest needs posix.pread()ctjtjtjtj
z}	tj|dtj|dtj|jdtj|dd|jdtj|dtj|y#tj|wxYw)Nrrsesrr6ste)rfrrrO_RDWRrrrrrCr	rreadrxrs  r
test_preadzPosixTester.test_pread#s
WWY%%ryy2::'=
>	HHR!HHRBKK(UEKKAq$9:UEJJr1$56HHRLBHHRLs
BC##C:preadvztest needs posix.preadv()ctjtjtjtj
z}	tj|ddDcgc]
}t|}}|jtj||dd|jgdt|tj|ycc}w#tj|wxYw)Ntest1tt2t3t5t6t6t8rBrrB
st1tt2st3ts5t)
rfrrrrrr	bytearrayrCr	rlistrx)r$ribufs    rtest_preadvzPosixTester.test_preadv/s
WWY%%ryy2::'=
>	HHR./)23A9Q<3C3U\\"c15r:6S	BHHRL	4
HHRLsCC
1AC
CC)	RWF_HIPRIztest needs posix.RWF_HIPRIctjtjtjtj
z}	tj|ddDcgc]
}t|}}|jtj||dtjd|jgdt|tj*|ycc}w#t$r|jdY7t$rG}|j t j"t j$hvrt'j(dd}~wwxYw#tj*|wxYw)NrrrBrrzpreadv2 not availablez0RWF_HIPRI is not supported by the current system)rfrrrrrrrrCr	rrrNotImplementedErrorskipTestrrEINVALENOTSUPrjrkrx)r$rrrinsts     rtest_preadv_flagszPosixTester.test_preadv_flags:sWWY%%ryy2::'=
>	HHR./)23A9Q<3C3U\\"c1bllCRH6S	B
HHRL4#	3MM12	zzellEMM::''(Z[[	
HHRLsDC!C1AC!C!!E;E=EAEEEE&c4tjtjtjtj
z}	t
dgdz}|jt5}tj||dddd|jjjtj|jt|dddztj|y#1swYtxYw#tj|wxYwNr)rfrrrrrrr9rrrC	exceptionrrbytesrxr$rrcms    rtest_preadv_overflow_32bitsz'PosixTester.test_preadv_overflow_32bitsPsWWY%%ryy2::'=
>	U#$u,C""7+
&r		"c1%
&R\\//>U3q6]E5L9HHRL
&
&

HHRLs%$D)C4AD4C=9DDpwriteztest needs posix.pwrite()ctjtjtjtj
z}	tj|dtj|dtjtj|dd|jdtj|dtj|y#tj|wxYw)Nrrxxr6stxxtr)rfrrrrrrrrr	rrCrrxrs  rtest_pwritezPosixTester.test_pwrite]s
WWY%%ryy2::'=
>	HHR!HHRBKK(LLUA&WejjQ&78HHRLBHHRLs
A8CC*pwritevztest needs posix.pwritev()cLtjtjtjtj
z}	tj|dtj|dtjtj|gdd}|j|dtj|dtj|jdtj|dtj|y#tj|wxYw)Nrrstest1stt2st3rrsxxtest1tt2t3d)rfrrrrrrrrrrCr	rrxr$rns   rtest_pwritevzPosixTester.test_pwritevhs
WWY%%ryy2::'=
>		HHRHHRBKK(

28!<AQ#HHRBKK(_ejjS.ABHHRLBHHRLs
B1DD#zos.RWF_SYNCztest needs os.RWF_SYNCcjtjtjtjtj
z}	tj|dtj|dtjtj|gddtj}|j|dtj|dtj|jdtj|dtj|y#tj|wxYw)Nrrrrrs
xxtest1tt2r)rfrrrrrrrrrRWF_SYNCrCr	rrxrs   rtest_pwritev_flagszPosixTester.test_pwritev_flagsvsWWY%%ryy2::'=
>		HHRHHRBKK(

28!R[[IAQ#HHRBKK(]EJJr3,?@HHRLBHHRLs
CDD2ctjtjtjtj
z}	|j
t5}tj|ddzgdzdddd|jjjtjtj|y#1swYSxYw#tj|wxYw)Nxrrr)rfrrrrrr9rrrCrrrrxr$rrs   rtest_pwritev_overflow_32bitsz(PosixTester.test_pwritev_overflow_32bitssWWY%%ryy2::'=
>	""7+
:r

2u~5q9
:R\\//>HHRL	
:
:
HHRLs$CC9<CCCC.posix_fallocatez"test needs posix.posix_fallocate()ctjtjtjtj
z}	tj|dd	tj |y#t$rW}|jtjk(r4tjjdrtjdd}~wwxYw#tj |wxYw)Nrr)sunosfreebsdnetbsdopenbsdgnukfreebsdz test may fail on ZFS filesystems)rfrrrrrr	rrrrrplatform
startswithrjrkrx)r$rrs   rtest_posix_fallocatez PosixTester.test_posix_fallocatesWWY%%r{{RZZ'?
@
	!!"a,
HHRL		
zzU\\)cll.E.EH/J''(JKK		
HHRLs%A33	C<ACCCC-c	tjdddy#t$r(}|jtjk7rYd}~yd}~wwxYw)Nrr)r	rrrEBADFr$rs  rtest_posix_fallocate_errnoz&PosixTester.test_posix_fallocate_errnosA	!!#q"-	zzU[[()	s	AAA
posix_fadvisez test needs posix.posix_fadvise()ctjtjtj}	t
j
|ddt
jtj|y#tj|wxYwNr)	rfrrrrr	rPOSIX_FADV_WILLNEEDrxrs  rtest_posix_fadvisezPosixTester.test_posix_fadvisesTWWY%%r{{
3	Aq%*C*CDHHRLBHHRLs&A00Bc	tjdddtjy#t$r(}|jtj
k7rYd}~yd}~wwxYw)Nrr)r	rrrrrrs  rtest_posix_fadvise_errnoz$PosixTester.test_posix_fadvise_errnosI	Q5+D+DE	zzU[[()	s&)	AAAz!test needs fd support in os.utimec
tj}tjtjtj
}	tj|tj|d|jttj|d|jttj||df|jttj|d|ftj|t|t|ftj|||f|jttj|||f||f|jttj||dfd|jttj|d|dftj|t|t|t|z
dzftj|t|t|t|z
dzftj|y#tj|wxYw)NNN)nsreA)
timerfrrrrr	utimer9r:int
ValueErrorrx)r$nowrs   rtest_utime_with_fdzPosixTester.test_utime_with_fdsiik
WWY%%r{{
3	KKOKKD!ib,Gib3+Fib4+FKKSXs3x01KKS#J'j%++rC:3PS*Uj%++rC8Uj%++r<SRSHUKKSXsC#c(Nc+A'BCDKKC#sSX~.D*EFKG
HHRLBHHRLs
GH44Iz.test needs follow_symlinks support in os.utimectj}tjtjdd|jttjtjdd|jttjtj|dfd|jttjtjd|fdtjtjt|t|fdtjtj||fdtjtjdy)NFfollow_symlinksr
r
r	rrrr9r:rr$rs  rtest_utime_nofollow_symlinksz(PosixTester.test_utime_nofollow_symlinkssiik
I$$dEB)U[[)2B2B&		?)U[[)2B2B+u		>)U[[)2B2B+u		>
I$$s3xS&:$)		+
I$$sCj%H
I$$e<rIwritevztest needs posix.writev()c@tjtjtjtj
z}	tj|d}|j|dtj|dtj|jdtj|d	tj
|g}|j|dtj|y#t$rY!wxYw#tj|wxYw)Nrrr
test1tt2t3)rfrrrrrrrCrrr	rrrx)r$rrsizes    rtest_writevzPosixTester.test_writevs
WWY%%ryy2::'=
>			"78AQ#HHRBKK(]EJJr2,>?
*||B+  q)HHRL


HHRLs1A3D9C7D7	DDDDDctjtjtjtj
z}	|j
t5}tj|ddzgdzddd|jjjtjtj|y#1swYSxYw#tj|wxYw)Nrrr)rfrrrrrr9rrrCrrrrxrs   rtest_writev_overflow_32bitsz'PosixTester.test_writev_overflow_32bitssWWY%%ryy2::'=
>	""7+
6r		"te|nu45
6R\\//>HHRL	
6
6
HHRLs$CC
8<C
CCC-readvztest needs posix.readv()c	tjtjtjtj
z}	tj|dtj|dtjdDcgc]
}t|}}|jtj||d|jgd|Dcgc]
}t|c}	tj|g}|j|dtj|ycc}wcc}w#t$rY+wxYw#tj|wxYw)Nrrrrr)rfrrrrrrrrrrCr	r rrrx)r$rrrrs     r
test_readvzPosixTester.test_readvs
WWY%%ryy2::'=
>	HHR'HHRBKK()23A9Q<3C3U[[S126638Oaq8OP
*{{2r*  q)HHRL48O



HHRLsN?ED(:ED-
"E*D2E(
E2	D>;E=D>>EEc2tjtjtjtj
z}	t
dgdz}|jt5}tj||ddd|jjjtj|jt|dddztj|y#1swYtxYw#tj|wxYwr)rfrrrrrrr9rr rCrrrrrxrs    rtest_readv_overflow_32bitsz&PosixTester.test_readv_overflow_32bitssWWY%%ryy2::'=
>	U#$u,C""7+
"rS!
"R\\//>U3q6]E5L9HHRL
"
"

HHRLs%$C?)C3AC?3C<8C??Ddupztest needs posix.dup()zWASI does not have dup()cttj}	tj	|j}|j
|ttj||jy#|jwxYwrq)
rrrr	r%rwassertIsInstancerrfrx)r$rzrs   rtest_dupzPosixTester.test_dup's[)""
#	299;'B!!"c*HHRLHHJBHHJsAA::Bconfstrztest needs posix.confstr()c|jttjd|j	ttjddkDdy)N
CS_garbageCS_PATHrT)r9rr	r)rCrDr#s rtest_confstrzPosixTester.test_confstr3s=	
*emm\BU]]956:DArIdup2ztest needs posix.dup2()zWASI does not have dup2()cXttj}ttj}	tj	|j|j|j
|j
y#|j
|j
wxYwrq)rrrr	r.rwrx)r$fp1fp2s   r	test_dup2zPosixTester.test_dup29sk9##$9##$	JJszz|SZZ\2IIKIIK
IIKIIKs2B"B)	O_CLOEXECzneeds os.O_CLOEXECrctjtjtjtj
z}|j
tj||jtj|yrq)
rfrrrrr3rrxassertFalseget_inheritablers  rtest_oscloexeczPosixTester.test_oscloexecEsRWWY%%r{{2<<'?
@"%++B/0rIO_EXLOCKztest needs posix.O_EXLOCKcZtjtjtjtj
ztjz}|jttjtjtjtj
ztjztj|ttdrtjtjtjtjztjz}|jttjtjtjtj
ztjztj|yy)NO_SHLOCK)rfrrrrr:rr9r
O_NONBLOCKrxrr	r<rs  r
test_osexlockzPosixTester.test_osexlockMsWWY%%[[,RZZ79'277I,<,<++bkk1"--?	A
5*%))R[[0;=Bgrww	0@0@ kk"++5bmmC
EHHRL&rIr<ztest needs posix.O_SHLOCKcdtjtjtjtj
ztjz}tjtjtjtj
ztjz}tj|tj|ttdrtjtjtjtj
ztjz}|jttjtjtjtjztjztj|yy)Nr:)rfrrrrr<rrxrr	r9rrr:r=)r$fd1fd2rs    r
test_osshlockzPosixTester.test_osshlock]sggi&&[[,RZZ79ggi&&kk"++-bjj8:



5*%))R[[0;=Bgrww	0@0@ kk"++5bmmC
EHHRL&rIfstatztest needs posix.fstat()c	ttj}	|jtj|j
|jtj|j
|jtdtjt|j
|jy#|jwxYwNz4should be string, bytes, os.PathLike or integer, not)rrrrrr	rCrwstatassertRaisesRegexr:floatrxrys  r
test_fstatzPosixTester.test_fstatns)""
#	OOEKK		45OOEJJryy{34""9JJJbiik 2
4
HHJBHHJsB!C

Cc
|jtjtj|jtjtjtj|jtdtjttjtj|jtdtjd|jtdtjttj|jtdtjttjtjyrE)rrr	rFrrrffsencoderGr:rrr#s r	test_statzPosixTester.test_stat|s

9#3#345

2;;y/?/?#@AByF

Ibkk)2B2B&CD	F	
yF

D	"	
yF

D!1!12	4	
yF

DY-=-=!>?	ArImkfifozdon't have mkfifo()cTtjdk(r/tjj	dt
j}nt
j}tj||jt
j|	tj|tjtjz|j!tj"tj|j$y#t$r}|jd|zYd}~dd}~wwxYw)Nvxworksz/fifos/posix.mkfifo(): %s)rrrfrjoinrrrrr	rMrFS_IRUSRS_IWUSRPermissionErrorrrrS_ISFIFOst_mode)r$	fifo_pathrs   rtest_mkfifozPosixTester.test_mkfifos<<9$Y	0@0@AI!((I#	(()4	4LLDLL4<<$?@	


ejj&;&C&CDE	4MM.233	4s	5D	D'	D""D'mknodS_IFIFOzdon't have mknod()/S_IFIFOctjtjtjtj
ztjz}	tjtj|d|jtjtjtjjtjtj	tjtj|ddy#t$rS}|j|jtjtj tj"fYd}~d}~wwxYw#t$rS}|j|jtjtj tj"fYd}~yd}~wwxYw)Nr)rmodedevicedir_fd)rrrrFrZrRrSr	rYrrrUrVrassertInrrmrEACCES)r$r\rs   r
test_mknodzPosixTester.test_mknods0
	))*||dll*T\\9	QKK	(($2
OODMM%**Y5E5E*F*N*NOP	))*	NKKY--D

	N
MM!''EKKu||#LMM	N	NMM!''EKKu||#LMM	Ns2%D/'E6	E3 A	E..E36	G?A	G

Gmakedevztest needs posix.makedev()ctjtj}|j}|j|t|j|dtj|}|j|t|j|d|jtj|||jttjt||jttj|jttftjdtj|}|j|t|j|d|jtj|||jttjt||jttj|jttftjd|jtj!||||jttj t|||jttj |t||jttj ||jttj y)NrrQ)r	rFrrst_devr'rrEmajorrCr9r:rHr
OverflowErrorminorrb)r$stdevrergs     rtest_makedevzPosixTester.test_makedevs
ZZ	((
)iic3'Q'C eS)q)S)51)U[[%*=)U[[1:}5u{{BGC eS)q)S)51)U[[%*=)U[[1:}5u{{BGue4c:)U]]E%L%H)U]]E5<H)U]]E:)U]]3rIc
fd}tj}tj}|||||||d||||||d|||tjdk(r|dv}n|dk(}t
jrn|rQtjdk7rdnd}|||||||dd|||||||||nt	jdvrtjd	jt|dd|||jt|dd|||dtjvr"jt|dd|||ttfD]R}	jt||	|||||jt|||	||||Ty
)z/Common code for chown, fchown and lchown tests.cA}j|j|j|j|yyrq)rCst_uidst_gid)uidgidrFfirst_paramr$	stat_funcs   r
check_statz6PosixTester._test_all_chown_common.<locals>.check_stats@$ -  c2  c2%rIrQrO)rr6rlr)zHP-UXSunOSz1Skipping because of non-standard chown() behaviorN)rfr4r/rrr
is_emscriptensystemrjrkr9rr0strrHr:)
r$
chown_funcrqrrrsrorpis_root	big_valuets
` ``      r_test_all_chown_commonz"PosixTester._test_all_chown_commons	3
iikiik;S)3;C(3;R(3<<9$f}GaxG  

"#&,,)";I{Iy9y),{B+y),{C-sC 
__
"4
4##%/0
0
gz;1EsC gz;2FsC &!!':{BJ3$e	!Ai[!C&#NsC i[#qvNsC 		!rIgetgid() is a stubcttjtj|j	t
tjtjddtjtj|jtjtjtjyrP)rfrrrr9rr	chowncreate_empty_filer|rFr#s r
test_chownzPosixTester.test_chownsl			)""#'5;;	0@0@"bI	##I$4$45##EKK1A1A5::NrIfchownztest needs os.fchown()c	Jtjtjt	tjd}	|j}|j
tj|ttdd|jy#|jwxYw)NrrC)rfrrrrrwr|r	rr7rx)r$	test_filers   rtest_fchownzPosixTester.test_fchown#sw			)""#))3/		!!#B''b(/w(E
G
OOIOOsABB"lchownztest needs os.lchown()c	tjtjtjt
tj|j
tjtjttddy)Nlstat)
rfrrrsymlink_DUMMY_SYMLINKr|r	rr7r#s rtest_lchownzPosixTester.test_lchown2sS			)""#


>9#3#34##ELL)2B2B$+E7D$A	CrIrztest needs posix.chdir()ctjtj|j	t
tjtjyrq)r	rrfrsr9rrrr#s r
test_chdirzPosixTester.test_chdir;s.
BII'5;;	0@0@ArIc|jtjtj	t
jyrq)r_rrr	listdirrfrsr#s rtest_listdirzPosixTester.test_listdir@s#

i&&

bii(@ArIch|jtjtj	yrq)r_rrr	rr#s rtest_listdir_defaultz PosixTester.test_listdir_defaultCs	


i&&

8rIc|jtjtjt
j
dyN.)r_rfrKrrr	rr#s rtest_listdir_byteszPosixTester.test_listdir_bytesHs*	


bkk)"2"23U]]45HIrIcttfD];}|jt5tj|dddd=y#1swYHxYwr)r
memoryviewr9r:r	r)r$clss  rtest_listdir_bytes_likez#PosixTester.test_listdir_bytes_likeMsNj(	)C""9-
)

c$i(
)
)	)
)
)sAA	z)test needs fd support for posix.listdir()ctjtjtj}|j	tj
||j
ttjdttj||j
ttjdttj|y)N.)	r	rr(rrrxrCsortedr)r$fs  rtest_listdir_fdzPosixTester.test_listdir_fdRs
JJu||~u~~6Q'5==%&5==#$	
	
5==%&5==#$	rIaccessztest needs posix.access()c|jtjtjt
jyrq)rrr	rrrrfR_OKr#s rtest_accesszPosixTester.test_accessas#Y%5%5rww?@rIumaskztest needs posix.umask()ctjd}|j|ttj|yr)r	rr'r)r$old_masks  r
test_umaskzPosixTester.test_umaskes+;;q>h,
HrIstrerrorztest needs posix.strerror()cL|jtjdyr)rrr	rr#s r
test_strerrorzPosixTester.test_strerrorks	
q)*rIpipeztest needs posix.pipe()ctj\}}tj|tj|yrq)r	rrfrx)r$readerwriters   r	test_pipezPosixTester.test_pipeps)

rIpipe2ztest needs os.pipe2()c|jttjd|jttjddtjd\}}tj|tj|tjtj
tjz\}}|jtj||jtj||jtj||jtj||jtj||jtj||jttj|d	tj|dtjzy#t$rYywxYw)NDEADBEEFrr6r)r9r:rfrrxr3r=rr7r8get_blockingrrrr
PIPE_MAX_SIZE)r$rrs   r
test_pipe2zPosixTester.test_pipe2vsH	
)RXXz:)RXXq!4xx{1

xxR]]231!$!$++A./++A./+,+,'277Aq1	HHQw4445		s<'G$$	G0/G0cddl}|jttj|j
dz|jttj|jdzyNrr6)	_testcapir9rfrfrINT_MAXUINT_MAX)r$rs  rtest_pipe2_c_limitszPosixTester.test_pipe2_c_limitssI
	-93D3Dq3HI-93E3E3IJrIrztest needs posix.utime()cptj}tjtjd|jttjtjd|jttjtj|df|jttjtjd|ftjtjt|t|ftjtj||fy)Nr
rrs  r
test_utimezPosixTester.test_utimesiik
I$$d+)U[[#**L	:)U[[#**S$K	9)U[[#**T3K	9
I$$s3xS&:;
I$$sCj1rIctj|}|jt|d|jtj
z}	|||fi|	tj|}|j|jtj
z|j	t|d}	tj||jy#t$r;}|jtjk7rd}|j|Yd}~d}~wwxYw#t$r4}
|j|
jtjYd}
~
d}
~
wwxYw#tj||jwxYw)Nst_flags2chflag UF_IMMUTABLE not supported by underlying fsr~)rfrFrrrrUF_IMMUTABLErr
EOPNOTSUPPrrCrrmr	chflags)r$chflags_functarget_filekwargsrhflagserrrnew_strrs           r_test_chflags_regular_filez&PosixTester._test_chflags_regular_files$
WW[
!J/0d///	e6v6	4WW[)FR[[4+<+<<fooN
7+t,
MM+r{{3	yyE,,,FCMM#		
7  %++66
7
MM+r{{3sI
CAE'D	D1DD	E$*EEEE"E=rztest needs os.chflags()c`|jtjtjyrq)rr	rrrr#s rtest_chflagszPosixTester.test_chflagss''

y7G7GHrIlchflagsztest needs os.lchflags()c|jtjtj|jtj
tjdyNFr)rr	rrrrr#s rtest_lchflags_regular_filez&PosixTester.test_lchflags_regular_files@''	8H8HI''

y7G7G8=	(	?rIctjtj}|j	t|d|j
tjttjtjttjt}d}tj|fD]}|jtjz}	|t|	tjtj}tjt}	|j'|j|j|j'|jtjz|	j|t|jy#t$r;}|j t j"k7rd}|j%|Yd}~d}~wwxYw#|t|jwxYw)Nrc2tj||dSr)r	r)rrs  rchflags_nofollowz;PosixTester.test_lchflags_symlink.<locals>.chflags_nofollows==ue=DDrIr)rfrFrrrrrrrrrrr	rrrrrrrrC)
r$	testfn_stdummy_symlink_strfnrrr
new_testfn_stnew_dummy_symlink_sts
          rtest_lchflags_symlinkz!PosixTester.test_lchflags_symlinksxGGI,,-		:67	((.9


9##^488N3	E>>#34	>B$--0A0AAE
#>5)
> "	(8(8 9
')xx'?$  !3!3]5K5KL  !1!:!:T=N=N!N!5!>!>@>#3#<#<=%	>

#99 0 00J

c""	
#>#3#<#<=s%
F(BG"	G$1GG"G;ctjdk(rt}nt}tj
j
D];\}}|jt|||jt||=y)Nnt)	rfr<rwrr	ritemsrCtype)r$	item_typekvs    rtest_environzPosixTester.test_environs_
77d?IIMM'')	1DAqT!Wi0T!Wi0	1rIc|jt5tjddddd|jt5tjddddd|jt5tjddddd|jt5tjddddd|jt5tjd	d
ddd|jt5tjdddddy#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYoxYw#1swYyxYw)
NzFRUITVEGETABLEcabbagesFRUITVEGETABLEscabbageFRUITzorangeVEGETABLE=cabbagesFRUITsorangeVEGETABLE=cabbagezFRUIT=ORANGElemonsFRUIT=ORANGEslemon)r9rrfputenvr#s rtest_putenvzPosixTester.test_putenvs1


z
*	5II()4	5


z
*	7II):6	7


z
*	<IIg:;	<


z
*	>IIh <=	>


z
*	/IIng.	/


z
*	1IIox0	1	1	5	5	7	7	<	<	>	>	/	/	1	1sGD:
E>E2E&E+E7:EEEE(+E47Fr(ztest needs posix.getcwd()cd}tj}tjjtj
dz}	tj|tj|	tj|t	j|y#Ytj|t	j|yxYw#tj|t	j|wxYw)Nz8getcwd-test-directory-0123456789abcdef-01234567890abcdefz.getcwd)	rfr(rabspathrrmkdirrrmtree)r$dirnamers	base_path_create_and_do_getcwds    @rtest_getcwd_long_pathnamesz&PosixTester.test_getcwd_long_pathnamessLGGOOI$4$45	A		(HHYHHY2
HHVY'3	+
(
HHVY'
HHVY's	*BC
!C
C,C<getgrouplistztest needs posix.getgrouplist()r4ztest needs os.getuid()ctjtjd}tjtjd}|j	|t
j
||y)NrrB)rgrarfr4r_r	r)r$usergroups   rtest_getgrouplistzPosixTester.test_getgrouplist&sQ||BIIK(+RYY[)!,

eU//e<=rIr-ztest needs os.getegid()popenztest needs os.popen()ctjd5}|jj}|j	}ddd	tdj
D}|stjdtjdk(rUddl}|jdxsd}td|j
d	dd
Ddkrtjd|jt j#}|j%|xs|t j'hk(y#1swYxYw#t$r
t}YwxYw)
Nzid -G 2>/dev/nullc32K|]}t|ywrqr).0gs  r	<genexpr>z-PosixTester.test_getgroups.<locals>.<genexpr>8s<SV<zneed working 'id -G'darwinrMACOSX_DEPLOYMENT_TARGETz10.3c32K|]}t|ywrqr)rrs  rrz-PosixTester.test_getgroups.<locals>.<genexpr>Bs8SV8rrr)rr4z$getgroups(2) is broken prior to 10.6)rfrrstriprxsetrrrjrkrr	sysconfigget_config_vartuplesymmetric_differencer	r0rrr-)r$idggroupsret
idg_groupsrdtsymdiffs        rtest_getgroupszPosixTester.test_getgroups/s)XX)
*	cXXZ%%'F))+C		<V\\^<<J?*##$:;;<<8#))*DEOB8RXXc]1Q%7887B''(NOO11%//2CDGCw5==?2C'CD/			J	s/D? E?EE! E!SIGCHLDz2CLD_XXXX be placed in si_code for a SIGCHLD signal
waitid_resultztest needs os.waitid_resultctjtjtjtjtj
tjyrq)rf
CLD_EXITED
CLD_KILLED
CLD_DUMPEDCLD_TRAPPEDCLD_STOPPED
CLD_CONTINUEDr#s rtest_cld_xxxx_constantsz#PosixTester.test_cld_xxxx_constantsLs0	










rIsched_yieldzdon't have scheduling supportsched_setaffinityz!don't have sched affinity supportc,tjyrq)r	rr#s rtest_sched_yieldzPosixTester.test_sched_yield[s	rIsched_get_priority_maxz!requires sched_get_priority_max()ctj}tj|}tj|}|j	|t
|j	|t
|j
||tjdk7rK|jttjd|jttjdyy)Nri)r	SCHED_RRsched_get_priority_minrr'rrErrr9r)r$pollohis    rtest_sched_priorityzPosixTester.test_sched_priority`s
nn

)
)#
.

)
)#
.b#&b#&B'<<8#gu'C'CSIgu'C'CSI$rIc^tjjDcgc]\}}|jdr|}}}tj	d}|j||	tj	t
j}|j|||jttjd|jttjdtjd}|j|jtt j"jdsT	tj%d||tj'd||jttj&d||jttj$d|||jt(tj$d|d|jt(tj&ddtj+d}|jt(tj&d|d}tj+|}|jt,tj&d|tj+|}|jt,tj&d|ycc}}w#t$r)}|jtjk7rYd}~Od}~wwxYw#t$r)}|jtjk7rYd}~d}~wwxYw)NSCHED_rrQrr+l)sched_priority)r	__dict__rrr
r_rfr3rrrmr9sched_getparamr'r)rrrsched_setschedulersched_setparamr:sched_paramrf)	r$r<schedpossible_schedulersmineparentrparamlarges	         r$test_get_and_set_scheduler_and_paramz0PosixTester.test_get_and_set_scheduler_and_parampsh8=8L8L8N=u"&//("; %==''*

d/0	7--bjjl;F

MM&"56'5#;#;R@'5#7#7<$$Q'e22C8
||&&'<=
((D%8$$Q.
gu';';RG'5#;#;RuM)U%=%=q$M)U%9%91bA!!$')U%9%91eD!!%(-)=)=q%H!!%!8-)=)=q%HK=	ww%++%&	"
77ekk)*
s5J?*'K-K:	K7K22K7:	L,L''L,sched_rr_get_intervalzno functionc.	tjd}|j
t|j|d|j|dy#t$r9}|jtjk7r|jdYd}~xd}~wwxYw)Nrz only works on SCHED_RR processesgg?)
r	r6rrrrr'rHrE
assertLess)r$intervalrs   rtest_sched_rr_get_intervalz&PosixTester.test_sched_rr_get_intervals~	>2215H	
h."-"%	>ww%,,&MM<==	>sA	B/BBctjd}|j|t|j	t|dtjjds%|jttjd|D]<}|j|t|j	|d|j|d>y)Nrr6rrQr)
r	sched_getaffinityr'rrErDrrrr9rrr8)r$maskcpus   rtest_sched_getaffinityz"PosixTester.test_sched_getaffinitys&&q)dC(D	1-||&&y1gu'>'>C	*C!!#s+##C+OOC)	*rIc	tjd}t|dkDr|jtj	d||jtjd||j
ttjdg|j
ttjddg|j
ttjdttd|j
ttjdddzgtjjds'|j
ttjd|yy)Nrr6i0XrrQ)r	r<rDpoprrCr9rrmaprrfrrr)r$r=s  rtest_sched_setaffinityz"PosixTester.test_sched_setaffinitys&&q)t9q=HHJ
4(003T:'5#:#:ArB*e&=&=q3%H*e&=&=q#c4.Q-)@)@!afXN||&&y1gu'>'>DI2rIzNo dynamic linking on WASIctjtjtjtjyrq)r		RTLD_LAZYRTLD_NOWRTLD_GLOBAL
RTLD_LOCALr#s rtest_rtld_constantszPosixTester.test_rtld_constantss$	


rI	SEEK_HOLEz(test needs an OS that reports file holesc
ttjd5}|jd|j	|j}|j
}	t|D]l}|j|tj||tj|j|tj||tjn|jttj||tj|jttj||tj	dddy#t$rt!j"dwxYw#1swYyxYw)Nzr+bshellozOSError raised!)rrrrrtellrwrangerCrfr	SEEK_DATAassertLessEqualrLr9rrjrk)r$rzrfnors     r
test_fs_holeszPosixTester.test_fs_holess)""E
*	;bHHXHHJ779D))+C
;tOA$$Qa(FG((rxxQ/MNO!!'288S$M!!'288S$M	;	;
;
''(9::
;	;	;sAE.C$EE++E..E7c	&dD]K}tt|d}|dtjfD]}	|d||jd|zMy#t$r5}|jdj
|t|Yd}~d}~wwxYw)zf
        Test functions that call path_error2(), providing two filenames in their exceptions.
        )renamereplacelinkNnoodly2doesnotexistfilenamez'doesnotexistfilename' -> '{}'z#No valid path_error2() test for os.)	r7rfrrrr_formatrwrl)r$r<functiondstrs     rtest_path_error2zPosixTester.test_path_error2s2	HDr4.H!9#3#34
H3S9
H		?$FG	HMM"B"I"I#"NPSTUPVWs	A	B*BBcFtj}|dz}|jtj|tj|d}	|j	t
5t
j|tjtjz}ddd|t
j|	|jtjj||j	t
tj||jtjj|t|dj|j	t
tj|y#1swYxYw#|t
j|wwxYw)Nr)rrrrr9rrfrrrrxr7rexistsrrFr$rfn_with_NULrs    rtest_path_with_null_characterz)PosixTester.test_path_with_null_characters$


4i	(("-
	"":.
DWW["++

*BC
D~+,*bhh<+,R*bgg{;
D
D~s$F#6E:F:F?FF cltjtj}|dz}|j	tj
|tj
|d}	|j
t5tj|tjtjz}ddd|tj|	|jtjj||j
ttj||jtjj|t|dj|j
ttj |y#1swYxYw#|tj|wwxYw)Nrr)rfrKrrrrr9rrrrrxr7rr`rrFras    rtest_path_with_null_bytez$PosixTester.test_path_with_null_bytes-
[[))
*5j	(("-
	"":.
DWW["++

*BC
D~+,*bhh<+,R*bgg{;
D
D~s$!F66F
,F
FFF3
pidfd_openzpidfd_open unavailablec@|jt5}tjddddjj
t
jk(r|jdt|jtr|jd|j|j|jj
t
jtjtjtjdy#1swYxYw)NrQz"system does not support pidfd_openzpidfd_open syscall blocked: r)r9rrfrfrrrr
isinstancerTrCrrxr1)r$rs  rtest_pidfd_openzPosixTester.test_pidfd_opens


w
'	2MM"	
<<-MM>?bllO4MM88HIJ++U\\:
ryy{A./		sDD)s__name__
__module____qualname__r%r>rj
skipUnlessrr	rHrMrTrXr\r_rgrnrtr{rrr7rfsupports_fdr
requires_forkrrrrrrrrequires_32brrrrrrrrrrrsupports_follow_symlinksrrrr"r$skipIfis_wasir(r-r2requires_linux_versionrequires_subprocessr9r>rBrIrLrXrFrarjr|rskip_unless_working_chmodrurrrrrrrrrrrrrrrcpython_onlyrrrrrrrrrrrsignalrrequires_sched_hrequires_sched_affinityrr$requires_schedr5r:r?rErKrSr]rcrerirrIrrr4s0@ X479,9,X479,9,X479797X479G9GX479797X479H9HX557Xj13NOIP7I.X	257272X
3688X4799X
35RS,T,XXt4FHyzW
{
X13NOW.P.W=%=%~X02LM	N	X02LM	N	X13NOPX13NOX46RSTP(X13NO	P	X13NOPX	24PQRX	24PQX
68PQRRX	24PQRX(9:,..$X(9:,..X8*,,X8*,,XR^^35XYZ(XR%@%@@Brs=t=X13NOP*X13NOPX02LMN*X02LM	N	X.13X__W__&@AB3X	257B7BX/24X__W__&ABC4X[13GH#W##Aq"- W  "1#.I1
X
3466X
346
6
X035
5
A"X13HIFJFX0MWT95M57N7N,X	24PQ4R48F!P((X__W**,@AOB)O((X13KLX__W**,@A
BM)
((X13KLCM)CX02LMBNBB9
J
)
X"..8DFFX13NOAPAX02LMN
X
368+8+X/1JKL
XW-/FG#W##Aq"-.H4
XW-/FG#W##Aq"-K.HKX02LM
2N
240X	24MNIOIX
35OP?Q?
X
35OP>Q>@11X13NO!(P!(FX79Z[Xj13NOXX.0HI>JP\>XY/1JKXW-/FG W  "E#HLE4X35ijX_57TUVk+x**75-+H+JL1h11'%AT2U2UWX(@A<>J>J&I&IPX(?@-P&Q&
*
*
J
JX__W__&BCDX[1CE;E;2H$<$<$X\24LM0N0rIrcXeZdZdZedZedZeje	je	jvddZeje	je	jvddZejee	dxre	j e	jvd	ej"ej&d
dZeje	j*e	jvdd
Zeje	j.e	jvddZej"ej2dejee	dxre	j4e	jvddZeje	j8e	jvddZejee	dxr#e	j<e	jvxr	eedddZeje	j@e	jvddZ!ejee	dxre	jDe	jvddZ#eje	jHe	jvdd Z%eje	jLe	jvd!d"Z'eje	jPe	jvd#d$Z)ejee	d%xre	jTe	jvd&d'Z+y())TestPosixDirFdrc#
Ktxjdz
c_tjd|j}tjd|jd}tj||j
tj|tjj||}tjj|rJtj|5}|||fdddy#1swYyxYww)Nr6_base)
r}countrrr	rrrmdirrfrrQr`open_dir_fd)r$r<base_dirfullnamer^s     rpreparezTestPosixDirFd.prepare.s!""#1TZZL1&&'qD9
HX.77<<$/77>>(++

"
"8
,	+4**	+	+	+sC$D&C7.	D7D<Dc#K|j5\}}}tj||jtj
||||fdddy#1swYyxYwwrq)rrrrr	rr$r^r<rs    rprepare_filezTestPosixDirFd.prepare_file:sY
\\^	+7h''1OOELL(34**	+	+	+sA)AA	A)A&"A)z)test needs dir_fd support for os.access()c|j5\}}}|jtj|tj
|dddy#1swYyxYwNr^)rrrr	rrfrrs    rtest_access_dir_fdz!TestPosixDirFd.test_access_dir_fdAsO



 	H$<VT8OOELLrwwvLFG	H	H	Hs:AAz'test needs dir_fd support in os.chmod()c|j5\}}}tj|tjtj|tjtj
z|tj|}|j
|jtjztjtj
zdddy#1swYyxYwr)	rr	chmodrFrRrSrCrVS_IRWXU)r$r^r<rss     rtest_chmod_dir_fdz TestPosixDirFd.test_chmod_dir_fdFs



 	:$<VT8KK$,,/KKdllT\\9&KI

8$AQYY5!\\DLL8
:		:	:	:sCCC$rz'test needs dir_fd support in os.chown()r}c|j5\}}}tj|tjtj
|dddy#1swYyxYwr)rr	rrfr4r/rs    rtest_chown_dir_fdz TestPosixDirFd.test_chown_dir_fdOsR


 	G$<VT8KKbiik299;vKF	G	G	GsAAA%z&test needs dir_fd support in os.stat()c
|j5\}}}t|d5}|jdddd|jtj
|tj
|}tj
||}|j||tj
|d}|j|||jtdtj|tj|jtdtj|t||jttj|ddddy#1swY,xYw#1swYyxYw)Nrz	testline
rzshould be integer or None, notl Fx:^V)rrrrr	rrFrCrGr:r(rHr9rf)r$r^r<routfiles1s2s       rtest_stat_dir_fdzTestPosixDirFd.test_stat_dir_fdVs/
\\^	57hh$
,

l+
,OOELL(3H%BD0BR$HT2BR$""9.NJJU\\^
#
=""9.NJJU6]
#
<mJJV

5	5	5
,
,	5	5s"E+ED!E+E(	#E++E4z'test needs dir_fd support in os.utime()c|j5\}}}tj}tj|d|tj|||j	t
tj||||j	t
tj|d||j	t
tj||df||j	t
tj|d|f||j	t
tj||df|tj|t
|t
|f|tj|||f|tj|t
|t
|t
|z
dzf|tj||t
|t
|t
|z
dzftjtjvr	tj|d|dddy#t$rYwxYw#1swYyxYw)Nrr
xr)r^r+F)rr^)
rr
r	rr9r:rrfrqr)r$r^r<rrs     rtest_utime_dir_fdz TestPosixDirFd.test_utime_dir_fdjs



 	$<VT8))+CKKd6K2KKVK,id!&

2id*6

;id"Dk&

:id#Sk&

:id"Cj

9KKs3xS26KBKKsCjK8KKXsC#c(Nc#9:;F

LKKV#&s8S#C.C1G-H"I

Kxx2666KKeFKK1		2"3		s*G2H4H%%	H1.H40H11H44H=z5WASI: symlink following on path_link is not supportedrWz&test needs dir_fd support in os.link()c|j5\}}}|j5\}}}	tj|||||j
tj||jtj|dtj|dddddddy#t$r}|jd|zYd}~d}~wwxYw#1swY<xYw#1swYyxYw)N
src_dir_fd
dst_dir_fdzposix.link(): %sr6)
rrr	rWrTrrrrCrF)r$r^r<rdir_fd2linknamefulllinknamers        rtest_link_dir_fdzTestPosixDirFd.test_link_dir_fds


 		-$<VT8
\\^		-@<
6

4f
Q
OOELL,7UZZ1!4

<(+
-		-		-		-#
6

01455
6			-		-		-		-sLC*CB4AC#C*4	C=CCCCC'	#C**C3z'test needs dir_fd support in os.mkdir()c|j5\}}}tj|||jtj|tj|dddy#1swYyxYwr)rr	rrrrFrs    rtest_mkdir_dir_fdz TestPosixDirFd.test_mkdir_dir_fdsW
\\^	!7hKKVK,OOEKK2JJx 	!	!	!sAA++A4rYrZzAtest requires both stat.S_IFIFO and dir_fd support for os.mknod()cn|j5\}}}tjtjztjz}	t
j
||d||jt
j||jtjt
j|jdddy#t$rS}|j|jtjtj tj"fYd}~`d}~wwxYw#1swYyxYw)Nrr)rrFrZrRrSr	rYrrrrrUrVrr_rrmrr`)r$r^r<rr\rs      rtest_mknod_dir_fdz TestPosixDirFd.test_mknod_dir_fds\\^
	M7h<<$,,.=D
MD$&9h7

ejj.B.J.J KL
	M
	M
R

aggU\\5<<'PQQ
R	
	M
	Ms77D+	C"A!D+	D(A	D#D+#D((D++D4z&test needs dir_fd support in os.open()c|j5\}}}t|d5}|jdddd|jtj
|tj|tj|}	tj|d}|jd|tj|	dddy#1swYxYw#tj|wxYw#1swYyxYw)Nrs	testline
r	)
rrrrr	rrrrCrx)r$r^r<rrrrs       rtest_open_dir_fdzTestPosixDirFd.test_open_dir_fds
\\^		 7hh%
-

m,
-OOELL(3D%..@B
 jjQ'  4B		 		 
-
-B		 		 s:C0C
AC0(C+C0
C	C0C--C00C9readlinkz*test needs dir_fd support in os.readlink()c|j5\}}}tjd||jtj
||j
tj||ddddy#1swYyxYwNrr)rrfrrr	rrCrrs    rtest_readlink_dir_fdz#TestPosixDirFd.test_readlink_dir_fdsl\\^	M7hJJy(+OOELL(3U^^D^@)L	M	M	MA"A<<Bz(test needs dir_fd support in os.rename()c0|j5\}}}|j5\}}}tj||||tj	|tj||ddddddy#1swYxYw#1swYyxYw)Nr)rrr	rUrF)r$r^r<rrname2	fullname2s       rtest_rename_dir_fdz!TestPosixDirFd.test_rename_dir_fds



 	.$<VT8
\\^	.:	LLu$*w

@JJy!LLH-	.	.	.	.	.	.s#BA	B/BB		BBz)test needs dir_fd support in os.symlink()c|j5\}}}tjd|||jtj||jtj
|ddddy#1swYyxYwr)rr	rrrrCrrs    rtest_symlink_dir_fdz"TestPosixDirFd.test_symlink_dir_fdsj
\\^	B7hMM)T&M9OOELL(3U^^H5yA	B	B	Brz(test needs dir_fd support in os.unlink()cr|j5\}}}tj|tj	|	tj|||j
ttj|	dddy#|jtj
|xYw#1swYyxYwr)	rrrr	rFrr9rrrs    rtest_unlink_dir_fdz!TestPosixDirFd.test_unlink_dir_fds
\\^	7h''1JJx 
T&1!!'5::x@		
h7		s/B-<B#B**B--B6rMz(test needs dir_fd support in os.mkfifo()c|j5\}}}	tj|tjtj
z||jtj||jtjtj|jdddy#t$r}|jd|zYd}~d}~wwxYw#1swYyxYw)NrrP)
rr	rMrFrRrSrTrrrrrrUrV)r$r^r<rrs     rtest_mkfifo_dir_fdz!TestPosixDirFd.test_mkfifo_dir_fds
\\^	I7h
8T4<<$,,#>vN
OOELL(3OODMM%**X*>*F*FGH
	I	I#
8

2Q677
8	I	Is5C"7B8A!C"8	CCC"CC""C+N),rjrkrlrr
rrrjrmrfrsupports_dir_fdrrrrrrrrrurrFrrrrsrWrrrrYrrrrrrUrrrrrrMrrrIrr}r}+s
E	+	+++Xb&8&88:efHgHXR%7%779bc:d:XW-R288r?Q?Q3QBDX__W**,@AGBDGXB$6$668`a5b5&XR%7%779bcd<X__?XF=2+=+= =0
-		
-XR%7%779bc!d!XW-6 hh"*<*<<6$T95\^
M	^
MXB$6$668`a
 b
 XZ0XbkkREWEW6WEGMGMXb&8&88:de.f.Xr'9'99;fgBhBXb&8&88:de	f	XX.R299@R@R3RT~I@IrIr}ceZdZdZdZejeedddZ	ejeedddZ
y	)
PosixGroupsTesterc(tjdk7rtjdt	tdstjdt
jdk(rtjdtj|_y)Nrznot enough privilegesr0zneed posix.getgroupsrzgetgroups(2) is broken on OSX)	r	r4rjrkrrrr0saved_groupsr#s rr%zPosixGroupsTester.setUpsk<<>Q##$;<<uk*##$:;;<<8###$CDD!OO-rIc.ttdr tj|jyttdrUt	j
tj
j}tj||jdyy)N	setgroupsr`r)	rr	rrrgrar4rhr`r$r<s  rtearDownzPosixGroupsTester.tearDownsb5+&OOD--.
UL
)<</77DT4#4#4Q#78*rIr`ztest needs posix.initgroups()ct|jxsdgdz}tjtjj}tj|||j|tjyr)
maxrrgrar	r4rhr`r_r0)r$rr<s   rrnz!PosixGroupsTester.test_initgroupss_

!!(aS)A-||ELLN+33
q!

a*+rIrztest needs posix.setgroups()cdgttdfD];}tj||j	|tj=y)Nr)rrOr	rassertListEqualr0)r$r	s  rtest_setgroupsz PosixGroupsTester.test_setgroupssEsDrO,	<FOOF#  ):;	<rIN)rjrkrlr%rrjrmrr	rnrrrIrrrsf.9X58:,:,X479<9<rIrceZdZejddddfZdZdZdZdZ	d	Z
d
ZdZdZ
d
ZdZdZej$eedddZdZdZej$eedddZdZeej6ej8j;dddZeej6ej8j;dddZdZ dZ!dZ"dZ#dZ$y) _PosixSpawnMixin-I-SrrNc.tjddg|S)Nrr)rrr$argss  rpython_argsz_PosixSpawnMixin.python_argssd2T22rIctj}|jtj|d|d}|j	d|}|j|d|tj}tj|dt|d5}|j|jt|dddy#1swYyxYw)N2if 1:
            import os
            with open(zO, "w") as pidfile:
                pidfile.write(str(os.getpid()))
            rrrutf-8encoding)rrrrr
spawn_funcrfrrrrrCrrw)r$pidfilescriptrrrs      rtest_returns_pidz!_PosixSpawnMixin.test_returns_pid$s""	(('2k"

f-ood1gtRZZ8S1-
'G
,	1QVVXs3x0	1	1	1s*CC
c8d}	|j||gtj}tj|d\}}|j	|||j|dy#ttf$r&}|j	|j|Yd}~yd}~wwxYw)Nno_such_executabler)	rrfrwaitpidrCassertNotEqualFileNotFoundErrorrTfilename)r$rrpid2statusexcs      rtest_no_such_executablez(_PosixSpawnMixin.test_no_such_executable2s1	+//"4#5"6"$**.C::c1-LD&T3'*"?3	?S\\+=>>	?s"A$$B3BBctj}|jtj|d|d}|j	d|}|j|d|itjddi}tj|dt|d	5}|j|jddddy#1swYyxYw)
Nrz^, "w", encoding="utf-8") as envfile:
                envfile.write(os.environ['foo'])
        rrrcbarrrr)
rrrrrrrfrrrrrCr)r$envfilerrrrs      rtest_specify_environmentz)_PosixSpawnMixin.test_specify_environmentAs""	(('2k"	
f-ood1gt::UE:<S1-
'G
,	.QVVXu-	.	.	.s!CC
c|j|jd|jtjd}t	j
|dyNrfile_actionsrrNOOP_PROGRAMrfrrrr$rs  rtest_none_file_actionsz'_PosixSpawnMixin.test_none_file_actionsPsHooa JJ	
	S1-rIc|j|jd|jtjg}t	j
|dyrrrs  rtest_empty_file_actionsz(_PosixSpawnMixin.test_empty_file_actionsYsHooa JJ	
	S1-rIc|jtjtjddgtjd}tj|dy)NrrFresetidsrrrrrrfrrrrs  rtest_resetids_explicit_defaultz/_PosixSpawnMixin.test_resetids_explicit_defaultbsFooNN
^^T6*JJ	
	S1-rIc|jtjtjddgtjd}tj|dy)NrrTrrrrrs  r
test_resetidsz_PosixSpawnMixin.test_resetidsksFooNN
^^T6*JJ	
	S1-rIc|jtjtjddgtjtj
}t
j|dy)Nrr	setpgrouprr)rrrrfrr2rrrs  rtest_setpgroupz_PosixSpawnMixin.test_setpgrouptsLooNN
^^T6*JJjjl	
	S1-rIc|jt5|jtjtjddgt
jddddy#1swYyxYw)Nrr023r)r9r:rrrrfrr#s rtest_setpgroup_wrong_typez*_PosixSpawnMixin.test_setpgroup_wrong_type}sS


y
)	9OOCNN ^^T6:JJ%

9	9	9	9sAA""A+pthread_sigmaskzneed signal.pthread_sigmask()ctjd}|jtjtjd|gt
jtjg}tj|dy)NI            import signal
            signal.raise_signal(signal.SIGUSR1)r
setsigmaskrr)textwrapdedentrrrrfrrxSIGUSR1rr)r$rrs   rtest_setsigmaskz _PosixSpawnMixin.test_setsigmasksd 34ooNN
^^T4(JJ'	
	S1-rIc	|jt5|jtjtjddgt
jdddd|jt5|jtjtjddgt
jdgddd|jt5|jtjtjddgt
jtjtjdzgdddy#1swYxYw#1swYxYw#1swYyxYw)Nrr"rjr6
r9r:rrrrfrrrxNSIGr#s rtest_setsigmask_wrong_typez+_PosixSpawnMixin.test_setsigmask_wrong_types


y
)	7OOCNN ^^T6:JJ2

7	7

y
)	:OOCNN ^^T6:JJC5

:	:

z
*	DOOCNN ^^T6:JJFKK4:KKM4C

D	D	D	7	7	:	:	D	D&AE6AEA$EE
EE%c6tj\}}|jtj|	tj|dtjd|d}	|jtjtjd|gtjd}tj|tjd	tj |d
}t#|}tj$tj&}|j)||y#t$r}|jd|Yd}~d}~wt$r}|jd|Yd}~d}~wwxYw#tj|wxYw)NTz0
                import os
                fd = z`
                sid = os.getsid(0)
                os.write(fd, str(sid).encode())
            r)setsidzsetsid is not supported: zsetsid failed with: rrr)rfrrrxset_inheritablerrrrrrrrrTrrrrgetsidr1r)	r$rfdwfdrrroutput	child_sid
parent_sids	         rtest_setsidz_PosixSpawnMixin.test_setsidsA779S#&	sD)??(U
$D
>oocnn'*~~tT&B&(jj&?
HHSMS1-c"K	YYryy{+
J	2'
C

 9#ABB"
>

 4SG<==
>
HHSMsB/F)AD22	E>;EFE> E94F9E>>FFctjtjtj}tjd}	|jtjtjd|gtjtjg}tjtj|tj|tjy#tjtj|wxYw)Nrr	setsigdefr)rxrSIG_IGNrrrrrrfrrr)r$original_handlerrrs    rtest_setsigdefz_PosixSpawnMixin.test_setsigdefs"==H 34	<//t,

!>>*	"C
MM&..*:;SFNN?;
MM&..*:;s
	AC%%&Dc	|jt5|jtjtjddgt
jdddd|jt5|jtjtjddgt
jdgddd|jt5|jtjtjddgt
jtjtjdzgdddy#1swYxYw#1swYxYw#1swYyxYw)Nrrrrrr6r
r#s rtest_setsigdef_wrong_typez*_PosixSpawnMixin.test_setsigdef_wrong_types


y
)	6OOCNN ^^T6:JJ"

6	6

y
)	9OOCNN ^^T6:JJ3%

9	9

z
*	POOCNN ^^T6:JJ6;;A
2N

P	P	P	6	6	9	9	P	Prr'zbpo-34685: test can fail on BSDc	ltjd}tj|}tjd|d|d}|jtjtjd|gtjdtj|f}tj|dyNrzF            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rfr
r rrrrrrr.rrr$policypriorityrrs     rtest_setscheduler_only_paramz-_PosixSpawnMixin.test_setscheduler_only_params&&q),,V4$,,28477?jA	 !"ooNN
^^T4(JJR^^H56	
	S1-rIc	ltjd}tj|}tjd|d|d}|jtjtjd|gtj|tj|f}tj|dyr$r&r's     rtest_setscheduler_with_policyz._PosixSpawnMixin.test_setscheduler_with_policys&&q),,V4$,,28477?jA	 !"ooNN
^^T4(JJr~~h78	
	S1-rIcvtjdtjjttj
dftjdftjddfg}|j|jd|jtj|}tj|dy)NrBrr6rrr)
rfPOSIX_SPAWN_OPENrrealpath__file__rPOSIX_SPAWN_CLOSEPOSIX_SPAWN_DUP2rrrrr)r$rrs   rtest_multiple_file_actionsz+_PosixSpawnMixin.test_multiple_file_actions	s

 
 !RWW%5%5h%?aP

!
!1%

 
 !Q'

ood//2"// jj+79	S1-rIc|j}|jt5|j|d|tj
dgddd|jt5|j|d|tj
dgddd|jt5|j|d|tj
dgddd|jt5|j|d|tj
dgddd|jt5|j|d|tj
tjfgddd|jt5|j|d|tj
tjddfgddd|jt5|j|d|tj
tjdfgddd|jt5|j|d|tj
tjdtd	ztjdfgdddy#1swYFxYw#1swYxYw#1swYxYw#1swYxYw#1swYWxYw#1swYxYw#1swYxYw#1swYyxYw)
Nrrrrq)i90r6rrBr_)rr9r:rrfrr1rr.r0rrs  rtest_bad_file_actionsz&_PosixSpawnMixin.test_bad_file_actionss  


y
)	1OODGT2::*.

1	1

y
)	/OODGT2::*,

/	/

y
)	4OODGT2::*1

4	4

y
)	5OODGT2::*2

5	5

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

D	D

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

I	I

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

I	I

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

=	=	=+	1	1	/	/	4	4	5	5	D	D	I	I	I	I	=	=s`(J'(J,(J(1(J567K
9K 8K5AK(JJ%(J25J?KKK%(K1cTtj}|jtj|d}tj
d|tjtjztjztjtjzfg}|jd|}|j|d|tj|}tj |dt#|d5}|j%|j'd	dddy#1swYyxYw)
NOif 1:
            import sys
            sys.stdout.write("hello")
            r6rrrrrrhello)rrrrrfr.rrO_TRUNCrFrRrSrrrrrrrCr)r$rrrrrrs       rtest_open_filez_PosixSpawnMixin.test_open_file2s""	(('2

 
 !Wbjj(2::5t||+
-

f-ood1gtRZZ+79	S1-
'G
,	0QVVXw/	0	0	0s4!DD'ctj}|jtj|d|d}|j	d|}|j|d|tjtjdfg}tj|dt|d5}|j|jd	tjzdddy#1swYyxYw)
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)rrrrrrrfrr1rrrrCrrr)r$	closefilerrrrs      rtest_close_filez _PosixSpawnMixin.test_close_fileFs$$		(()4
%-(
f-ood1gtRZZ-/-A-A1,E+FH	S1-
)g
.	E!QVVX~'CD	E	E	Es$2CC(ctj}|jtj|d}t	|d5}t
j|jdfg}|jd|}|j|d|t
j|}tj|ddddt	|d	5}|j|jd
dddy#1swY@xYw#1swYyxYw)Nr7rr6rrrrrrr8)rrrrrrfr2rwrrrrrrCr)r$dupfiler	childfilerrrrs        rr2z_PosixSpawnMixin.test_dup2Ys""	(('2'4
 	2I$$i&6&6&8!<L##D&1D//$q'4/;"=C  q1	2'G
,	0QVVXw/	0	0	2	2	0	0sA2C0!C<0C9<D)%rjrkrlrrrrrrrrrrrrrrrjrmrrxr	rrr r"r{rrrrr*r,r3r5r:r=r2rrIrrrsLNND$f=LJ31
+
......9X):;:<.<.
D3>X):;8:<:<"PX__S\\,,-BC68.8."X__S\\,,-BC68.8."
.=:0(E&0rIrposix_spawnztest needs os.posix_spawnc eZdZeeddZy)TestPosixSpawnrAN)rjrkrlr7r	rrrIrrCrCls
t4JrIrCposix_spawnpztest needs os.posix_spawnpcDeZdZeeddZejdZy)TestPosixSpawnPrDNctj}|jtj|d}t
jj||}tjtj|	t
jj|t
jdf}|ddddf}tjd|d}d|f}t!|d|iy#t$r|}Y=wxYw)	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)
        )tempfilemkdtemprrrrfrrQrrrpathseprrirrr)r$temp_dirprogramprogram_fullpathr
spawn_argsrrs        rtest_posix_spawnpz!TestPosixSpawnP.test_posix_spawnpus##%	(((3177<<':


3>>#34	::??Hbjj.@#ABDtT48
 d|$*T*%	D	s<2CC,+C,)	rjrkrlr7r	rrskip_unless_symlinkrPrrIrrFrFqs(5J""+#+rIrFrztest weak linking on macOScxeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZy)TestPosixWeaklinkingcddl}ddl}|j}|Dchc]}|jds||s|c}|_td|jdjdD|_ycc}w)NrHAVE_c32K|]}t|ywrqr)rparts  rrz-TestPosixWeaklinking.setUp.<locals>.<genexpr>sT4SYTrr)rrget_config_varsr	availablermac_verr)r$rrconfig_varsnms     rr%zTestPosixWeaklinking.setUpsp//1(3c"r}}W7MR]^`Ra2cT3C83C3C3Ea3H3N3Ns3STTdsA?A?A?cP||jvrtj|dy)Nz not weak-linked)rYrjrkrs  r_verify_availablez&TestPosixWeaklinking._verify_availables,t~~%##tf,<$=>>&rIcF|jd|jdk\rA|jttdd|jttddy|jttdd|jttddy)	NHAVE_PWRITEV)rrrzos.pwritev is not availablerzos.readv is not availablezos.pwritev is availablezos.readv is available)r^rZrrrrfr7r#s rrz!TestPosixWeaklinking.test_pwritevsz~.<<8#OOGB	24QROOGB13NO
WR35NOWR24KLrIcJ|jd|jdk\r!|jdtjy|jdtj|j
td5tjdddddy#1swYyxYw)NHAVE_FSTATATrrdir_fd unavailablefilerr)
r^rZr_r	_have_functionsassertNotInrGrrfrFr#s rrLzTestPosixWeaklinking.test_stats}~.<<8#MM.%*?*?@
^U-B-BC''(;=QR
*q)
*
*
*8BB"c|jd|jdk\r!|jdtjy|jdtj|j
td5tjdtjdddd|j
td5tjdtjd	ddd|j
td
5tjdtjddddy#1swYxYw#1swY[xYw#1swYyxYw)
NHAVE_FACCESSATrcrdrerrzfollow_symlinks unavailableFrzeffective_ids unavailableT)
effective_ids)r^rZr_r	rfrgrGrrfrrr#s rrz TestPosixWeaklinking.test_accesss	/0<<8#MM*E,A,AB
-u/D/DE''(;=QR
5		&"''!4
5''(;=Z[
B		&"''5A
B''(;=XY
?		&"''>
?
?

5
5
B
B
?
?s$8'D2='D>'E
2D;>E
Ec|jd|jdk\r!|jdtjy|jdtj|jdtj|j
td5tjddddddy#1swYyxYw)	N
HAVE_FCHMODATrcHAVE_LCHMODrdreirr)
r^rZr_r	rfrgrGrrfrr#s r
test_chmodzTestPosixWeaklinking.test_chmods/<<8#MM/5+@+@A
_e.C.CDMM-)>)>?''(;=QR
2q1
2
2
2sB::Cc|jd|jdk\r!|jdtjy|jdtj|jdtj|j
td5tjdddddddy#1swYyxYw)N
HAVE_FCHOWNATrcHAVE_LCHOWNrdrerr)
r^rZr_r	rfrgrGrrfrr#s rrzTestPosixWeaklinking.test_chowns/<<8#MM/5+@+@A
_e.C.CDMM-)>)>?''(;=QR
1Aa0
1
1
1sB;;Cc
|jd|jdk\r!|jdtjy|jdtj|j
td5tjdddddd|j
td5tjddd	ddd|j
td5tjdddd
dddtj5}tjj|d}tjj|d}tjj|d}t|d5}|jd
dddtj d||j#t$5tj||dddd|j#t$5tj||dddddddy#1swYxYw#1swYuxYw#1swYJxYw#1swYxYw#1swY{xYw#1swYQxYw#1swYyxYw)NHAVE_LINKATrczsrc_dir_fd unavailablesourcetargetrrzdst_dir_fd unavailablerrrWrdataTrF)r^rZr_r	rfrgrGrrfrWrrLrrQrrrr9FileExistsError)r$r	link_pathtarget_pathsource_pathrzs      r	test_linkzTestPosixWeaklinking.test_links}-<<8#MM-)>)>?
]E,A,AB''(;=UV
;(:
;''(;=UV
;(:
;''(;=UV
I(aH
I##%
KGGLLF;	 ggll9h? ggll9h?+s+%rHHV$%

8Y/&&7JGGKDIJ&&7KGGKEJK#
K
K
;
;
;
;
I
I%%JJKK#
K
Ksy8H./H;&IA-I9	I3I9I!'I9I-I9.H8;III	I9!I*	&I9-I6	2I99Jc|jd|jdk\r!|jdtjy|jdtj|j
td5tjdddd|j
td5tjddddy#1swY>xYw#1swYyxYw)NHAVE_FDOPENDIRrczClistdir: path should be string, bytes, os.PathLike or None, not intrzCscandir: path should be string, bytes, os.PathLike or None, not int)r^rZr_r	rfrgrGr:rfrscandirr#s rtest_listdir_scandirz)TestPosixWeaklinking.test_listdir_scandirs/0<<8#MM*E,A,AB
-u/D/DE''	3xy


1

''	3xy


1






s8C,CCC cJ|jd|jdk\r!|jdtjy|jdtj|j
td5tjdddddy#1swYyxYw)NHAVE_MKDIRATrcrddirrr)
r^rZr_r	rfrgrGrrfrr#s r
test_mkdirzTestPosixWeaklinking.test_mkdirs}~.<<8#MM.%*?*?@
^U-B-BC''(;=QR
*q)
*
*
*rhcJ|jd|jdk\r!|jdtjy|jdtj|j
td5tjdddddy#1swYyxYw)N
HAVE_MKFIFOATrdrrdrrr)
r^rZr_r	rfrgrGrrfrMr#s rrXz TestPosixWeaklinking.test_mkfifo's}/<<7"MM/5+@+@A
_e.C.CD''(;=QR
,		&+
,
,
,rhcJ|jd|jdk\r!|jdtjy|jdtj|j
td5tjdddddy#1swYyxYw)NHAVE_MKNODATrrdrrr)
r^rZr_r	rfrgrGrrfrYr#s rrazTestPosixWeaklinking.test_mknod2s}~.<<7"MM.%*?*?@
^U-B-BC''(;=QR
+*
+
+
+rhc|jd|jdk\r!|jdtjy|jdtj|j
td5tjdddddd|j
td5tjdddddd|j
td5tjdddddd|j
td5tjddddddy#1swYxYw#1swYxYw#1swYYxYw#1swYyxYw)	N
HAVE_RENAMEATrcz%src_dir_fd and dst_dir_fd unavailableabrrwrx)r^rZr_r	rfrgrGrrfrUrVr#s rtest_rename_replacez(TestPosixWeaklinking.test_rename_replace=s//<<8#MM/5+@+@A
_e.C.CD''(;=de
2		#sq1
2''(;=de
2		#sq1
2''(;=de
3

32
3''(;=de
3

32
3
3
2
2
2
2
3
3
3
3s08D?/E&EE#?EEE #E,c|jd|jdk\r!|jdtjy|jdtj|j
td5tjddddd|j
td5tjdddddy#1swY@xYw#1swYyxYw)N
HAVE_UNLINKATrcrdrrr)r^rZr_r	rfrgrGrrfrrr#s rtest_unlink_rmdirz&TestPosixWeaklinking.test_unlink_rmdirQs/<<8#MM/5+@+@A
_e.C.CD''(;=QR
,		&+
,''(;=QR
+*
+
+
,
,
+
+s8C.CCC$ch|jd|jdk\r!|jdtjy|jdtj|j
td5tjdtjddddy#1swYyxYw)NHAVE_OPENATrcrdrrr)r^rZr_r	rfrgrGrrfrrr#s r	test_openzTestPosixWeaklinking.test_open_s}-<<8#MM-)>)>?
]E,A,AB''(;=QR
7A6
7
7
7s8'B((B1cJ|jd|jdk\r!|jdtjy|jdtj|j
td5tjdddddy#1swYyxYw)NHAVE_READLINKATrcrdrrr)
r^rZr_r	rfrgrGrrfrr#s r
test_readlinkz"TestPosixWeaklinking.test_readlinkjs01<<8#MM+U-B-BC
.0E0EF''(;=QR
/FA.
/
/
/rhcL|jd|jdk\r!|jdtjy|jdtj|j
td5tjddddddy#1swYyxYw)NHAVE_SYMLINKATrcrdrrrr)
r^rZr_r	rfrgrGrrfrr#s rtest_symlinkz!TestPosixWeaklinking.test_symlinkus/0<<8#MM*E,A,AB
-u/D/DE''(;=QR
0

3Q/
0
0
0s8BB#c|jd|jd|jdk\rA|jdtj|jdtjy|jdtj|jdtj|j
td5tjdddddy#1swYyxYw)N
HAVE_FUTIMENSHAVE_UTIMENSAT)rrdrdrrr)
r^rZr_r	rfrgrGrrfrr#s rrzTestPosixWeaklinking.test_utimes//0<<8#MM/5+@+@AMM*E,A,AB
_e.C.CD-u/D/DE''(;=QR
+*
+
+
+s	C**C3N)rjrkrlr%r^rrLrrorr~rrrXrarrrrrrrrIrrSrSs`U?M	*?"
2
1$KN	*	,	+3(+	7	/	0+rIrSceZdZdZej
eeddej
eeddej
ejjdde
jdd	d	d
Zy)NamespacesTestsz&Tests for os.unshare() and os.setns().unsharezneeds os.unshare()setnszneeds os.setns()z/proc/self/ns/utszneed /proc/self/ns/utsrBrc d}td|y)Naif 1:
            import errno
            import os
            import sys
            fd = os.open('/proc/self/ns/uts', os.O_RDONLY)
            try:
                original = os.readlink('/proc/self/ns/uts')
                try:
                    os.unshare(os.CLONE_NEWUTS)
                except OSError as e:
                    if e.errno == errno.ENOSPC:
                        # skip test if limit is exceeded
                        sys.exit()
                    raise
                new = os.readlink('/proc/self/ns/uts')
                if original == new:
                    raise Exception('os.unshare failed')
                os.setns(fd, os.CLONE_NEWUTS)
                restored = os.readlink('/proc/self/ns/uts')
                if original != restored:
                    raise Exception('os.setns failed')
            except PermissionError:
                # The calling process did not have the required privileges
                # for this operation
                pass
            except OSError as e:
                # Skip the test on these errors:
                # - ENOSYS: syscall not available
                # - EINVAL: kernel was not configured with the CONFIG_UTS_NS option
                # - ENOMEM: not enough memory
                if e.errno not in (errno.ENOSYS, errno.EINVAL, errno.ENOMEM):
                    raise
            finally:
                os.close(fd)
            rrrs  rtest_unshare_setnsz"NamespacesTests.test_unshare_setnss
"H	t$rIN)
rjrkrl__doc__rjrmrrfrr`rrtrrrIrrrs0XY/1EFXW-/ABX(;<>VW#W##Aq!,%%-XCG%%rIrc,tjyrq)r
reap_childrenrrIrtearDownModulersrI__main__)3rrrtest.supportrrrtest.support.script_helperr
import_moduler	rrrxr
rfrrFrIrjr r
contextlibr
rgImportErrorrrQ
gettempdirrrrmmaxsizerursrprr{TestCaserr}rrrrCrFrSrrrjmainrrIr<module>rs0&"(7	$
##G,

	%1h113'..1AAC#x""KK%J!6!6!I'//J.%$$_%68VWs0(##s0n'EIX&&EIP!<))!<HR0R0j
WR/1LM5X&&(85N5WR02NO!+h'')9!+P!+HS\\X-/KLu+8,,u+Mu+p,%h'',%^zHMMOOE
Cs&HHH