%Q+aSrSSKJr SSKJr SSKJr SSKJr SSKJr SSK r SSK r SSK r SSK r SSK r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJr SSKrSSKr\R8R;\R<"5\R>S -5r \RB"\ RDS :=(a$ \RF=(d \RH(+S 5r%S r&\RB"\&"5S 5r'"SS\RP5r)"SS\RP5r*"SS\RP5r+"SS5r,\RB"\-"\S5S5\R\"5"SS\RP\,555r/\RB"\-"\S5S5\R\"5"SS\RP\,555r0\RB"\ RS:HS5"S S!\RP55r1"S"S#\RP5r2S$r3\4S%:Xa\Rj"5 gg!\a SSKrGNf=f!\a SrGNf=f)&zTest posix functions)support)is_apple) os_helper)warnings_helperassert_python_okN)contextmanagerz-dummy-symlinkz(test is only meaningful on 32-bit buildsc[[S5(dg[R"S5 g![a-nUR[R :XaSnAgSnAgSnAff=f)Nsched_getschedulerFrT)hasattrposixr OSErrorerrnoENOSYS)es 6/opt/alt/python313/lib64/python3.13/test/test_posix.py_supports_schedr+sX 5. / /   #   77ell " # s/ A&A!!A&zrequires POSIX scheduler APIcJ\rSrSrSrSr\R"\"\ S5S5S5r \R"\"\ S5S5S 5r \R"\"\ S 5S 5S 5r \R"\"\ S 5S 5S 5r \R"\"\ S5S5S5r\R"\"\ S5S5S5r\R"\"\ S5S5\R"\"\S5S5S55r\R"\"\ S5S5S5r\R"\"\ S5S5S5r\R"\"\ S5S5S5r\R"\"\ S 5S!5S"5r\R"\"\S#S$5\R0;S%5\R4"5S&55r\R"\"\ S'5S(5\R4"5S)55r\R4"5S*5r\R"\"\ S+5S,5S-5r\R"\"\ S.5S/5S05r\R"\"\ S15S25S35r \R"\"\ S15S25\R"\"\ S45S55S655r!\R"\"\ S15S25\"S755r#\R"\"\ S85S95S:5r$\R"\"\ S;5S<5S=5r%\R"\"\ S;5S<5\R"\"\ S>5S?5S@55r&\R"\"\ S;5S<5\"SA55r'\R"\"\ SB5SC5SD5r(\R"\"\ SB5SC5SE5r)\R"\"\ SF5SG5SH5r*\R"\"\ SF5SG5SI5r+\R"\RX\R0;SJ5SK5r-\R"\RX\R\;SL5SM5r/\R"\"\ SN5SO5SP5r0\R"\"\ SN5SO5\"SQ55r1\R"\"\ SR5SS5ST5r2\R"\"\ SR5SS5\"SU55r3\R"\"\ SV5SW5\Rh"\RjSX5SY55r6\R"\"\ SZ5S[5S\5r7\R"\"\ S]5S^5S_5r8\R"\"\ S`5Sa5\Rh"\RjSb5Sc55r9\R"\"\Sd5Se5\Rt"SfSgSh5\Rv"5Si555r<\R"\"\ Sj5Sk5Sl5r=\R"\"\ Sm5Sn5So5r>\R"\"\ Sp5Sq5Sr5r?Ssr@\R"\"\ St5Su5Sv5rA\R"\"\ Sw5=(a \"\BSx5Sy5Sz5rC\R"\"\ S{5S|5S}5rDS~rE\R"\"\S5S5\Rh"\RS5S55rG\HR\R"\"\ S5S5\Rh"\RS5S555rJ\HR\R"\"\ S5S5S55rK\R"\"\ S5S5S5rLSrMSrNSrOSrP\R"\ R\R0;S5S5rR\R"\"\ S5S5S5rS\R"\"\ S5S5S5rT\R"\"\ S5S5S5rU\R"\"\ S5S5S5rV\R"\"\S5S5\Rt"SfSgS5S55rW\R\R"\"\S5S5\Rt"SfSgS5S555rY\R"\"\ S5S5S5rZSr[\HRS5r\Sr]\HRS5r^\HRS5r_\R"\"\ S5S5S5r`\R"\"\ S5S5S5raSrbSrc\HRS5re\HRS5rf\R"\"\ S5S5\HRS55rg\R"\"\ S5S5\HRS55rhSri\R"\"\ S5S5S5rj\R"\"\ S5S5S5rk\R"\"\ S5S5S5rlSrmSrn\R"\"\ S5S5S5ro\R"\"\ S5S5\R"\"\S5S5\R"\"\S5S5S555rp\R"\"\S5S5\R"\"\S5S5\Rv"5S555rq\R"\"\rS5S5\R"\"\S5S5S55rs\R"\"\ S5S5rt\R"\"\ S5S5ru\tS5rv\t\R"\"\ S5S5S55rw\xS5ry\xS5rz\R"\"\ S5S5S5r{\uS5r|\uS5r}\Rh"\RjS5\R"\RS:HS5S55r\R"\"\S5S5S5rSrSrSr\R"\"\S5S5S5rSrg$) PosixTester8cJUR[R[R5 [ [RS5 SSS5 UR [ R"55 [R"SS[5 g!,(df  NO=f)Nwbignorez.* potential security risk .*) addCleanuprunlinkTESTFNopen enterContextrcheck_warningswarningsfilterwarningsRuntimeWarningselfs rsetUpPosixTester.setUp:sj  (()*:*:; )""D ) * /88:;*I . 0* )s B B"c/SQnUHQn[[US5nUcMURU5 U"5 UR[US5 SSS5 MS g!,(df  Me=f)N)ctermidgetcwdgetcwdbunametimes getloadavggetegidgeteuidgetgid getgroupsgetpidgetpgrpgetppidgetuidsync)getattrrsubTest assertRaises TypeError)r%NO_ARG_FUNCTIONSname posix_funcs rtestNoArgFunctionsPosixTester.testNoArgFunctionsCs^ %D d3J%\\$'L%%iQ?('%('s A A, getresuidztest needs posix.getresuid()c[R"5nUR[U5S5 UHnUR US5 M gNr)rrB assertEquallenassertGreaterEqual)r%user_idsvals rtest_getresuidPosixTester.test_getresuidSs>??$ X*C  # #C + getresgidztest needs posix.getresgid()c[R"5nUR[U5S5 UHnUR US5 M grD)rrNrFrGrH)r% group_idsrJs rtest_getresgidPosixTester.test_getresgid[s>OO%  Y+C  # #C +rM setresuidztest needs posix.setresuid()c[R"5nUR[R"U65 UR[R"SSS55 gN)rrB assertIsNonerS)r%current_user_idss rtest_setresuidPosixTester.test_setresuidcsD!??, %//+;<= %//"b"56rMc[R"5nSU;a2USS-SS4nUR"[[R/UQ76 ggNrr8rV)rrBr;rrS)r%rX new_user_idss rtest_setresuid_exception$PosixTester.test_setresuid_exceptionksN!??, $ $,Q/12r:L   gu F F %rM setresgidztest needs posix.setresgid()c[R"5nUR[R"U65 UR[R"SSS55 grU)rrNrWr`)r%current_group_idss rtest_setresgidPosixTester.test_setresgidtsD"OO- %//+<=> %//"b"56rMc[R"5nSU;a2USS-SS4nUR"[[R/UQ76 ggr\)rrNr;rr`)r%rb new_group_idss rtest_setresgid_exception$PosixTester.test_setresgid_exception|sN"OO- % %.q1!3Rrs rtest_initgroupsPosixTester.test_initgroupss )U%5%56 )U%5%5t< )U%5%5q%@ )U%5%5uaJ 99;!  <||ELLN3;; I  r* GH  <''(:;; <  7  %++66 7s$93D-D;!D8; E9*E44E9statvfsztest needs posix.statvfs()cjUR[R"[R55 gN) assertTruerryrocurdirr$s r test_statvfsPosixTester.test_statvfss  bii01rMfstatvfsztest needs posix.fstatvfs()cN[[R5nUR[R "UR 555 UR[R"UR 555 UR5 g!UR5 f=fr{) rrrr|rrfilenorycloser%fps r test_fstatvfsPosixTester.test_fstatvfssb)"" #  OOENN299;7 8 OOEMM"))+6 7 HHJBHHJs A&BB$ ftruncateztest needs posix.ftruncate()c[[RS5nURS5 UR 5 [ R "UR5S5 UR5 g!UR5 f=f)Nw+testr) rrrwriteflushrrrrrs rtest_ftruncatePosixTester.test_ftruncatesW)""D )  HHV  HHJ OOBIIK + HHJBHHJs AA33Btruncateztest needs posix.truncate()c[[RS5nURS5 UR 5 SSS5 [ R "[RS5 g!,(df  N4=f)Nwrr)rrrrrrrrs r test_truncatePosixTester.test_truncatesM )""C (B HHV  HHJ) y''+) (s "A++ A9execveNz/test needs execve() to support the fd parameterc&[R"[R[R5n[R "5nUS:Xa|[R "[RR[R5S5 [R"U[RSS/[R5 O[R"USS9 [R"U5 g![R"U5 f=f)Nr-cpassexitcode)rorsys executableO_RDONLYforkchdirpathsplitrrenvironr wait_processr)r%rpids r test_fexecvePosixTester.test_fexecvesWWS^^R[[ 1 '')Caxs~~6q9: R#..$!?L$$S15 HHRLBHHRLs B,C88Dwaitidztest needs posix.waitid()c[R"5nUS:Xa[R"[RR [ R 5S5 [R"[ R [ R SS/[R5 g[R"[RU[R5nURXR5 g)Nrrr)rorrrrrrrrrrP_PIDWEXITEDrFsi_pid)r%rress r test_waitidPosixTester.test_waitidsggi !8 HHRWW]]3>>215 6 LL#..$)G T,,u{{C?C   S** -rMchUR[SS9 [R"S5 SSS5 UR[SS9 [R"SS9 SSS5 UR[SS9 [R"SS9 SSS5 UR[SS9 [R"S S 9 SSS5 UR[S S9 [R"SS9 SSS5 UR[S S9 [R"SS9 SSS5 UR[S S9 [R"SS 9 SSS5 UR[S S9 [R"SS S9 SSS5 UR[SS9 [R"5 SSS5 UR[S S9 [R"SSS9 SSS5 Sn[ SU5 g!,(df  GN=f!,(df  GN=f!,(df  GN=f!,(df  GN=f!,(df  GN`=f!,(df  GNA=f!,(df  GN"=f!,(df  GN=f!,(df  N=f!,(df  N=f)NzPositional args not allowed)msgcgr{rrMr3PosixTester.test_register_at_fork..srMzArgs must be callable)beforethree)after_in_childsFive)after_in_parentzArgs must not be NonezInvalid arg was allowedcg)NrErrrMrrrsQrM)rrz!At least one argument is requiredcgr{rrrMrrrstrM)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)r;r<roregister_at_forkrr%codes rtest_register_at_fork!PosixTester.test_register_at_forks   y.K  L    -M   y.E  F   q )G   y.E  F   w 7G   y.E  F    8G   y.E  F   t ,G   y.E  F   t 4G   y.E  F    5G   y.G  H   tY GI  y.Q  R    !S  y.G  H   |B GI "F t$yM L F F F F F F F F F F F F H HS RI HswH H:H&+H8I  I>I./J"JJ# H H#& H58 I I I+. I= J J # J1lockfztest needs posix.lockf()c[R"[R[R[R -5n[R "US5 [R"US[R5 [R"U[RS5 [R"U[RS5 [R"U5 g![R"U5 f=f)Ntestr)rorrrO_WRONLYO_CREATrlseekSEEK_SETrrF_LOCKF_ULOCKrr%fds r test_lockfPosixTester.test_lockfs WWY%%r{{RZZ'? @  HHR ! HHRBKK ( KKELL! , KKEMM1 - HHRLBHHRLs B C&&C>preadztest needs posix.pread()c[R"[R[R[R -5n[R "US5 [R"US[R5 URS[R"USS55 URS[R"US55 [R"U5 g![R"U5 f=f)Nrrsesrr8ste)rorrrO_RDWRrrrrrFrrreadrrs r test_preadPosixTester.test_pread's WWY%%ryy2::'= >  HHR ! HHRBKK (   UEKKAq$9 :   UEJJr1$5 6 HHRLBHHRLs B C))Dpreadvztest needs posix.preadv()c[R"[R[R[R -5n[R "US5 SVs/sHn[U5PM nnUR[R"XS5S5 UR/SQ[U55 [R"U5 gs snf![R"U5 f=f)Ntest1tt2t3t5t6t6t8rErrE st1tt2st3ts5t) rorrrrrr bytearrayrFrrlistr)r%ribufs r test_preadvPosixTester.test_preadv3s WWY%%ryy2::'= >  HHR. /)23A9Q<C3   U\\"15r :   6S B HHRL 4 HHRLsC!C6ACCC0 RWF_HIPRIztest needs posix.RWF_HIPRIc[R"[R[R[R -5n[R "US5 SVs/sHn[U5PM nnUR[R"XS[R5S5 UR/SQ[U55 [R*"U5 gs snf![a URS5 N9[aJnUR [ R"[ R$1;a[&R("S5eeSnAff=f![R*"U5 f=f)NrrrErrzpreadv2 not availablez0RWF_HIPRI is not supported by the current system)rorrrrrrrrFrrrrNotImplementedErrorskipTestrrEINVALENOTSUPrsrtr)r%rrrinsts rtest_preadv_flagsPosixTester.test_preadv_flags>sWWY%%ryy2::'= >  HHR. /)23A9Q<C3   U\\"1bllCR H   6S B HHRL4# 3 MM1 2 zzellEMM::''(Z[[  HHRLsDC'!C"6AC'"C''EE E AEEEE2cD[R"[R[R[R -5n[ S5/S-nUR[5n[R"XS5 SSS5 URWRR[R5 UR[US5SS-5 [R"U5 g!,(df  Nz=f![R"U5 f=fNr)rorrrrrrr;rrrF exceptionrrbytesrr%rrcms rtest_preadv_overflow_32bits'PosixTester.test_preadv_overflow_32bitsTsWWY%%ryy2::'= > U#$u,C""7+r "1%,   R\\// >   U3q6]E5L 9 HHRL ,+ HHRLs%$D*C6AD6 DDDpwriteztest needs posix.pwrite()c[R"[R[R[R -5n[R "US5 [R"US[R5 [R"USS5 URS[R"US55 [R"U5 g![R"U5 f=f)Nrrxxr8stxxtr)rorrrrrrrrrrrFrrrs r test_pwritePosixTester.test_pwriteas WWY%%ryy2::'= >  HHR ! HHRBKK ( LLUA &   WejjQ&7 8 HHRLBHHRLs A  HHR  HHRBKK ( 28!  HHR  HHRBKK ( 28!R[[IA   Q # HHRBKK (   ]EJJr3,? @ HHRLBHHRLs CD""D:c[R"[R[R[R -5nUR [5n[R"USS-/S-S5 SSS5 URWRR[R5 [R"U5 g!,(df  NY=f![R"U5 f=f)Nxrrr)rorrrrrr;rrrFrrrrr%rrs rtest_pwritev_overflow_32bits(PosixTester.test_pwritev_overflow_32bitssWWY%%ryy2::'= > ""7+r 2u ~5q9,   R\\// > HHRL ,+ HHRLs$C C;/@/@''(JKKu///CLL4K4KH4U4U''(JKK  HHRLs%A66 D6B1D11D66D99Ec[R"SSS5 g![a)nUR[R:waeSnAgSnAff=f)Nrr)rr rrEBADFr%rs rtest_posix_fallocate_errno&PosixTester.test_posix_fallocate_errnosA   ! !#q" - zzU[[() s AA  A posix_fadvisez test needs posix.posix_fadvise()c[R"[R[R5n[ R "USS[ R5 [R"U5 g![R"U5 f=fNr) rorrrrrrPOSIX_FADV_WILLNEEDrrs rtest_posix_fadvisePosixTester.test_posix_fadvisesTWWY%%r{{ 3    Aq%*C*C D HHRLBHHRLs 'A33B c[R"SSS[R5 g![a)nUR[R :waeSnAgSnAff=f)Nrr)rrr"rrrrs rtest_posix_fadvise_errno$PosixTester.test_posix_fadvise_errnosI    Q5+D+D E zzU[[() s'* AAAz!test needs fd support in os.utimec [R"5n[R"[R[R 5n[ R"U5 [ R"US5 UR[[ RUS5 UR[[ RX!S45 UR[[ RUSU45 [ R"U[U5[U545 [ R"X!U45 UR[[ RX!U4X4S9 UR[[ RX!S4SS9 UR[[ RUSUS4S9 [ R"U[U5[U[U5- S-545 [ R"U[U5[U[U5- S-54S9 [R"U5 g![R"U5 f=f)NNN)nsreA) timerorrrrrutimer;r<int ValueErrorr)r%nowrs rtest_utime_with_fdPosixTester.test_utime_with_fdsiik WWY%%r{{ 3  KKO KKD !   ib, G   ib+ F   ib4+ F KKSXs3x0 1 KK#J '   j%++r:3*  U   j%++r8  U   j%++r )U[[)2B2B+u  > I$$s3xS&:$) + I$$sj%H I$$e  "78A   Q # HHRBKK (   ]EJJr2,> ? *||B+   q) HHRL   HHRLs1A6D =C=D = D D D  D D%c[R"[R[R[R -5nUR [5n[R"USS-/S-5 SSS5 URWRR[R5 [R"U5 g!,(df  NY=f![R"U5 f=f)Nr rr)rorrrrrr;rr:rFrrrrr s rtest_writev_overflow_32bits'PosixTester.test_writev_overflow_32bitssWWY%%ryy2::'= > ""7+r "te|nu45,   R\\// > HHRL ,+ HHRLs$CC :  HHR ' HHRBKK ()23A9Q<C3   U[[12 6   638O3aq38O P *{{2r*   q) HHRL48O    HHRLsOAE D3:E D8 +E 3D= E 3 E = E E E  E E%cB[R"[R[R[R -5n[ S5/S-nUR[5n[R"X5 SSS5 URWRR[R5 UR[US5SS-5 [R"U5 g!,(df  Nz=f![R"U5 f=fr)rorrrrrrr;rrCrFrrrrrrs rtest_readv_overflow_32bits&PosixTester.test_readv_overflow_32bits sWWY%%ryy2::'= > U#$u,C""7+r!,   R\\// >   U3q6]E5L 9 HHRL ,+ HHRLs%$D*C5AD5 D?DDdupztest needs posix.dup()zWASI does not have dup()c"[[R5n[R"UR 55nUR U[5 [R"U5 UR5 g!UR5 f=fr{) rrrrrJrassertIsInstancer.ror)r%rrs rtest_dupPosixTester.test_dup-s[)"" # 299;'B  ! !"c * HHRL HHJBHHJs AA<<Bconfstrztest needs posix.confstr()cUR[S5 [R"S5 SSS5 UR[S5 [R"S5 SSS5 [R"S5nUR [ U5S5 UR[R"[RS5U5 g!,(df  N=f!,(df  N=f)Nunrecognized configuration name CS_garbage/configuration names must be strings or integersGz?CS_PATHr) assertRaisesRegexr/rrOr< assertGreaterrGrF confstr_names)r%rs r test_confstrPosixTester.test_confstr9s # # 9  MM, '  # # H  MM$  }}Y' 3t9a( u':':9'EFM    sC C% C"% C3sysconfztest needs posix.sysconf()cUR[S5 [R"S5 SSS5 UR[S5 [R"S5 SSS5 [R"S5nUR US5 UR [R"[RS5U5 g!,(df  N=f!,(df  N=f)NrQ SC_garbagerSrT SC_ARG_MAXr)rVr/rr[r<rWrF sysconf_names)r%arg_maxs r test_sysconfPosixTester.test_sysconfJs # # 9  MM, '  # # H  MM$  -- - 7A&  MM%--l; ? ArMmkfifozdon't have mkfifo()c`[RS:Xa/[RR S[ R 5nO[ R n[ R"U5 UR[ RU5 [R"U[R[R-5 UR![R""[R"U5R$55 g![anURSU-5 SnANgSnAff=f)Nvxworksz/fifos/posix.mkfifo(): %s)rrrorjoinrrrrrrrS_IRUSRS_IWUSRPermissionErrorrr|S_ISFIFOst_mode)r% fifo_pathrs r test_mkfifoPosixTester.test_mkfifos <<9 $ Y 0@0@AI!((I#  (()4 4 LLDLL4<<$? @  ejj&;&C&CDE 4 MM.2 3 3 4s 6D D-D((D-mknodS_IFIFOzdon't have mknod()/S_IFIFOc[R"[R5 [R[R -[R -n[R"[RUS5 UR[R"[R"[R5R55 [R"[R5 [R"[RUSSS9 g![aSnURUR[R[R [R"45 SnANSnAff=f![aSnURUR[R[R [R"45 SnAgSnAff=f)Nr)rmodedevicedir_fd)rrrrrrrrrr|rrrassertInrrvrEACCES)r%rrs r test_mknodPosixTester.test_mknods+ ))*||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&D4%E: E7$A E22E7: GA GGmakedevztest needs posix.makedev()c[R"[R5nURnUR U[ 5 URUS5 [R"U5nUR U[ 5 URUS5 UR[R"U5U5 UR[[R[U55 UR[[R5 SH.nUR[[4[RU5 M0 [R"U5nUR U[ 5 URUS5 UR[R"U5U5 UR[[R[U55 UR[[R5 SH.nUR[[4[RU5 M0 UR[R "X55U5 UR[[R [U5U5 UR[[R U[U55 UR[[R U5 UR[[R 5 SHYnUR[[4[R XE5 UR[[4[R X45 M[ ["R$S:XauSnUR[R"U5U5 UR[R"U5U5 UR[R "Xf5U5 gg)Nr))rr rrlinuxrV)rrrrst_devrLr.rHmajorrFr;r<rr/ OverflowErrorminorrrr)r%stdevrxrNODEVs r test_makedevPosixTester.test_makedevs ZZ (( )ii c3' Q' C  eS) q) S)51 )U[[%*= )U[[1$A   z=95;; J% C  eS) q) S)51 )U[[%*= )U[[1$A   z=95;; J% u4c: )U]]E%L%H )U]]E5<H )U]]E: )U]]3+A   z=95==! S   z=95==% S, <<7 "E   U[[/ 7   U[[/ 7   U]]58% @ #rMc ,^^^UUU4Sjn[R"5n[R"5nU"TXV5 U"XV5 U"TSU5 U"XV5 U"TUS5 U"XV5 [RS:XaUS;nOUS:Hn[ R (aGOU(aM[RS:waSOSnU"TX5 U"X5 U"TSS5 U"X5 U"TXV5 U"XV5 O[R"5S;a[R"S 5eTR[UTSS5 U"XV5 TR[UTSS5 U"XV5 [[S 5(a:S[R"5;a!TR[UTSS5 U"XV5 [[4HPn TR[ UTU "U5U5 U"XV5 TR[ UTXY"U55 U"XV5 MR g ) z/Common code for chown, fchown and lchown tests.c>TbAT"T5nTRURU5 TRURU5 ggr{)rFst_uidst_gid)uidgidr first_paramr% stat_funcs r check_stat6PosixTester._test_all_chown_common..check_stats@$ -  c2  c2%rMrVr)rr8rlr)zHP-UXSunOSz1Skipping because of non-standard chown() behaviorr2N)ror6r1rrr is_emscriptensystemrsrtr;rr r2strrr<) r% chown_funcrrrrris_root big_valuets ` `` r_test_all_chown_common"PosixTester._test_all_chown_commons 3 iikiik;)3;C(3;R(3 <<9 $f}GaxG    "#&,,)";I {I 9 y , {B + y , {C - s __ "4 4##%/0 0   gz;1 E s   gz;2 F s r;''BLLN*%%gz;ANs(eA   i[!C&# N s   i[#qv N s rMchownzrequires os.chown()getgid() is a stubcx[R"[R5 UR [ [ R[RSS5 [R"[R5 UR[ R[R[ R5 grU) rorrrr;rrrcreate_empty_filerrr$s r test_chownPosixTester.test_chownGsl )""# '5;; 0@0@"bI ##I$4$45 ##EKK1A1A5::NrMfchownztest needs os.fchown()c L[R"[R5 [ [RS5nUR 5nUR [RU[[SS55 UR5 g!UR5 f=f)Nrr|) rorrrrrrrrr9r)r% test_filers r test_fchownPosixTester.test_fchownRsw )""#))3/  !!#B  ' ' b(/w(E G OO IOO s ABB#lchownztest needs os.lchown()c [R"[R5 [R"[ [R5 UR [R[R[[SS55 g)Nlstat) rorrrsymlink_DUMMY_SYMLINKrrrr9r$s r test_lchownPosixTester.test_lchownasS )""# >9#3#34 ##ELL)2B2B$+E7D$A CrMrztest needs posix.chdir()c[R"[R5 UR [ [R[ R5 gr{)rrror}r;rrrr$s r test_chdirPosixTester.test_chdirjs. BII '5;; 0@0@ArMcUR[R[R"[ R 55 gr{)rrrrlistdirror}r$s r test_listdirPosixTester.test_listdiros# i&& bii(@ArMcjUR[R[R"55 gr{)rrrrrr$s rtest_listdir_default PosixTester.test_listdir_defaultrs i&& 8rMcUR[R"[R5[ R "S55 gN.)rrorrrrrr$s rtest_listdir_bytesPosixTester.test_listdir_bytesws* bkk)"2"23U]]45HIrMc[[4H=nUR[5 [R "U"S55 SSS5 M? g!,(df  MQ=fr)r memoryviewr;r<rr)r%clss rtest_listdir_bytes_like#PosixTester.test_listdir_bytes_like|s>j(C""9- c$i(.-)--s A A z)test needs fd support for posix.listdir()c[R"[R"5[R5nUR [R U5 UR [[R"S55[[R"U555 UR [[R"S55[[R"U555 g)N.) rrr*rrrrFsortedrr%fs rtest_listdir_fdPosixTester.test_listdir_fds JJu||~u~~ 6  Q'  5==% & 5==# $   5==% & 5==# $ rMaccessztest needs posix.access()cUR[R"[R[ R 55 gr{)r|rrrrroR_OKr$s r test_accessPosixTester.test_accesss#  Y%5%5rww?@rMumaskztest needs posix.umask()c[R"S5nURU[5 [R"U5 gr!)rrrLr.)r%old_masks r test_umaskPosixTester.test_umasks+;;q> h, HrMstrerrorztest needs posix.strerror()cNUR[R"S55 gr!)r|rrr$s r test_strerrorPosixTester.test_strerrors q)*rMpipeztest needs posix.pipe()c[R"5up[R"U5 [R"U5 gr{)rrror)r%readerwriters r test_pipePosixTester.test_pipes'  rMpipe2ztest needs os.pipe2()cUR[[RS5 UR[[RSS5 [R"S5up[R"U5 [R"U5 [R"[R [R -5upUR[RU5 UR[RU5 UR[R"U55 UR[R"U55 UR[R"U55 UR[R"U55 UR[[RUS5 [R"US[R-5 g![a gf=f)NDEADBEEFrr8r )r;r<rorrrirtrrmrn get_blockingrrrr PIPE_MAX_SIZE)r%rrs r test_pipe2PosixTester.test_pipe2sD )RXXz: )RXXq!4xx{    xx R]]23 !$ !$ ++A./ ++A./ +, +, '277Aq1  HHQw444 5   s(G++ G87G8cSSKnUR[[RUR S-5 UR[[RUR S-5 gNrr8) _testcapir;rrorINT_MAXUINT_MAX)r%rs rtest_pipe2_c_limitsPosixTester.test_pipe2_c_limitssI  -93D3Dq3HI -93E3E3IJrMr-ztest needs posix.utime()cv[R"5n[R"[RS5 UR [ [R[RS5 UR [ [R[RUS45 UR [ [R[RSU45 [R"[R[U5[U545 [R"[RX45 g)Nr)r6r7s r test_utimePosixTester.test_utimesiik I$$d+ )U[[#**L : )U[[#**S$K 9 )U[[#**T3K 9 I$$s3xS&:; I$$sj1rMc z[U[5(+n[R"U5RnU[R [R -[R-)-nU"X&40UD6 UR[R"U5RU5 [R"U5(a[USUS9 SSS5 U[R [R -[R--nU"X&40UD6 UR[R"U5RU5 [R"U5(a[USUS9 SSS5 U"X%5 g!,(df  N=f![a Nf=f!,(df  N8=f!U"X%5 f=f)Nwb+)closefd) isinstancer.rorrS_IWOTHS_IWGRPrrFS_ISREGrr)r% chmod_functargetkwargsrrnew_modes r check_chmodPosixTester.check_chmodsG --wwv&& % t|| ;dll JKKH v 26 2   RWWV_44h ?||D!!feW=>t||dll:T\\IJH v 26 2   RWWV_44h ?||D!!&%9: v $>=& :9 v $smB F0 F E>FBF0+F-F0> F F F0 F FF0FF0 F-)F00 F:c`UR[R[R5 gr{)r!rchmodrrr$s rtest_chmod_filePosixTester.test_chmod_files i&6&67rMc[RS-n[R"U5 UR [R U5 U$)Nd)rrrmkdirrrmdirr%rs rtempdirPosixTester.tempdirs5!!C' F  V, rMcdUR5nUR[RU5 gr{)r,r!rr$r+s rtest_chmod_dirPosixTester.test_chmod_dirs! f-rMc$[[RS5nUR[R UR 55 UR[RUR 55 SSS5 g!,(df  g=f)Nr)rrrr!rfchmodrr$rs rtest_fchmod_filePosixTester.test_fchmod_filesT )""E *a   U\\188: 6   U[[!((* 5+ * *s AB Blchmodztest needs os.lchmod()cUR[R[R5 UR[R [RSS9 gNFr4)r!rr5rrr$r$s rtest_lchmod_filePosixTester.test_lchmod_files; y'7'78 i&6&6NrMcUR5nUR[RU5 UR[RUSS9 gr7)r,r!rr5r$r+s rtest_lchmod_dirPosixTester.test_lchmod_dirs: v. feDrMc b[R"U5Rn[R"U5RnU[R[R -[R -)-nU"X740UD6 UR[R"U5RU5 UR[R"U5RU5 U[R[R -[R --nU"X740UD6 UR[R"U5RU5 UR[R"U5RU5 [R"X%5 g![R"X%5 f=fr{) rorrrrrrrFrr$r%rrlinkr target_mode link_moder s rcheck_chmod_linkPosixTester.check_chmod_link sggfo-- HHTN**  -"t||dll'BT\\'Q%RRH t 0 0   RWWV_44h ?   RXXd^33Y ?"dllT\\&ADLL&PQH t 0 0   RWWV_44h ?   RXXd^33Y ? KK ,EKK ,s D=FF.c [R"U5Rn[R"U5RnU[R[R -[R -)-nU"X740UD6 UR[R"U5RU5 UR[R"U5RU5 U[R[R -[R --nU"X740UD6 UR[R"U5RU5 UR[R"U5RU5 gr{)rorrrrrrrFr>s rcheck_lchmod_linkPosixTester.check_lchmod_linksggfo-- HHTN**  ! $//: t|| ;dll JK4,V, 00+> $//:rMc[Rn[RS-n[R"X5 UR [ R U5 [RS:Xa!UR[ RX5 O UR[ RX5 UR[ RXSS9 g)N-linkntTr4) rrrorrrrr>rEr$rBr%rr?s rtest_chmod_file_symlink#PosixTester.test_chmod_file_symlink(s!!') 6   d+ 77d?  " "5;; =  ! !%++v < ekk6NrMcUR5n[RS-n[R"XSS9 UR [ RU5 [RS:Xa!UR[ RX5 O UR[ RX5 UR[ RXSS9 g)NrHT)target_is_directoryrIr4) r,rrrorrrrr>rEr$rBrJs rtest_chmod_dir_symlink"PosixTester.test_chmod_dir_symlink4s') 6T:  d+ 77d?  " "5;; =  ! !%++v < ekk6NrMc4[Rn[RS-n[R"X5 UR [ R U5 UR[ RXSS9 UR[ RX5 gNrHFr4) rrrorrrrrEr$r5rJs rtest_lchmod_file_symlink$PosixTester.test_lchmod_file_symlink@sj!!') 6   d+ u{{F%P u||V:rMc4UR5n[RS-n[R"X5 UR [ RU5 UR[ RXSS9 UR[ RX5 grR) r,rrrorrrrrEr$r5rJs rtest_lchmod_dir_symlink#PosixTester.test_lchmod_dir_symlinkJsj') 6   d+ u{{F%P u||V:rMc [R"U5nUR[US55 UR[R -nU"X%40UD6 [R"U5nURUR[R -UR5 [US5n [R"X$R5 g![ a<nUR[R:waeSnURU5 SnANSnAff=f![ a4n URU R[R5 Sn A NSn A ff=f![R"X$R5 f=f)Nst_flags2chflag UF_IMMUTABLE not supported by underlying fsr)rorr|r rY UF_IMMUTABLErrrrrFrrvrchflags) r% chflags_func target_filerrflagserrrnew_strrs r_test_chflags_regular_file&PosixTester._test_chflags_regular_fileTs WW[ ! J/0 d///   6v 6 4WW[)F   R[[4+<+<.chflags_nofollows==eD DrMrZ)rorrrr|r rrrrrrrgrYr[rrrrrF) r% testfn_stdummy_symlink_strmfnr_r`r new_testfn_stnew_dummy_symlink_sts rtest_lchflags_symlink!PosixTester.test_lchflags_symlinkvssGGI,,-   :67  ((.9 9##^488N3 E>>#34B$--0A0AAE #>5)  > " (8(8 9 ')xx'?$  !3!3]5K5KL  !1!:!:T=N=N!N!5!>!>@>#3#<#<=%5  #99 0 00J c""  #>#3#<#<=s% F"+BG+" G(,2G##G(+Hc[RS:Xa[nO[n[R R 5H;up#UR[U5U5 UR[U5U5 M= g)NrI) ror>rrrritemsrFtype)r% item_typekvs r test_environPosixTester.test_environsX 77d?IIMM'')DA   T!Wi 0   T!Wi 0*rMczUR[5 [R"SS5 SSS5 UR[5 [R"SS5 SSS5 UR[5 [R"SS5 SSS5 [RS:XaUR[5 [R"SS 5 SSS5 UR[5 [R"S S 5 SSS5 UR[5 [R"S S 5 SSS5 gg!,(df  GN.=f!,(df  GN =f!,(df  N=f!,(df  N=f!,(df  N=f!,(df  g=f)NzFRUITVEGETABLEcabbageFRUITzorangeVEGETABLE=cabbagez FRUIT=ORANGElemonrsFRUITVEGETABLEscabbagesFRUITsorangeVEGETABLE=cabbages FRUIT=ORANGEslemon)r;r/roputenvr>r$s r test_putenvPosixTester.test_putenvs   z * II() 4+   z * IIg: ;+   z * IIng .+ 77g "":. -z:/"":. ($@A/"":. /84/.  + * * * * */.....sGE E'E9 F >F3F, E$' E69 F F F), F:r*ztest needs posix.getcwd()c^Sn[R"5n[RR[R 5S-n[R "U5 [R"U5 [R"U5 [R"U5 g! [R"U5 [R"U5 g=f![R"U5 [R"U5 f=f)Nz8getcwd-test-directory-0123456789abcdef-01234567890abcdefz.getcwd) ror*rabspathrrr)rrmtree)r%dirnamer} base_path_create_and_do_getcwds @rtest_getcwd_long_pathnames&PosixTester.test_getcwd_long_pathnamessLGGOOI$4$45 A  ( HHY  HHY 2 HHV    Y '3 + ( HHV    Y ' HHV    Y 's ,B$$C&CC.D getgrouplistztest needs posix.getgrouplist()r6ztest needs os.getuid()c[R"[R"55Sn[R"[R"55SnUR U[ R "X55 g)NrrE)rprjror6rrr)r%usergroups rtest_getgrouplistPosixTester.test_getgrouplistsO||BIIK(+ RYY[)!, eU//<=rMr/ztest needs os.getegid()popenztest needs os.popen()c[R"S5nUR5R5nUR 5nSSS5 [ SWR 555nWcU(d[R"S5e[RS:Xa\SSK nURS5=(d Sn[SUR S 5SS 55S :a[R"S 5eUR[ R""55nUR%U(+=(d U[ R&"51:H5 g!,(df  GN=f![a [ 5nGNf=f) Nzid -G 2>/dev/nullc38# UHn[U5v M g7fr{r.).0gs r -PosixTester.test_getgroups..s<^SVV^zneed working 'id -G'darwinrMACOSX_DEPLOYMENT_TARGETz10.3c38# UHn[U5v M g7fr{r)rrs rrrs8%7SVV%7rrr)rrjz$getgroups(2) is broken prior to 10.6)rorrstriprsetrr/rsrtrr sysconfigget_config_vartuplesymmetric_differencerr2r|r/)r%idggroupsret idg_groupsrdtsymdiffs rtest_getgroupsPosixTester.test_getgroupss"XX) *cXXZ%%'F))+C+ schedpossible_schedulersmineparentparamlarges r$test_get_and_set_scheduler_and_param0PosixTester.test_get_and_set_scheduler_and_params38=8L8L8N=8N"&//("; %8N=''* d0 7--bjjl;F MM& 6 '5#;#;R@ '5#7#7<$$Q' e22C8 ||&&'<== ((D8$$Q.   gu';';R G '5#;#;RM )U%=%=q$M )U%9%91bA!!$' )U%9%91eD!!%( -)=)=q%H!!%8 -)=)=q%HK=    $#  s/KK3)K.K& K#"K#& K43K4c[R"S5n[[RS-5H>n[R "[R "X55nURX15 M@ [R"U5nURX15 URX15 [R"U5nURX15 URX15 [R"U5nURX15 URX15 [R"USS9nURX15 URURS5 g)Nr8rr)rrrangepickleHIGHEST_PROTOCOLloadsdumpsrFcopy assertIsNotdeepcopyreplaceassertNotEqualr)r%rprotonewparams rtest_sched_paramPosixTester.test_sched_paramFs!!!$622145E||FLL$>?H   X -699U# ) )==' ) )<<& ) )<<a8 H, 00!4rMsched_rr_get_intervalz no functionc4[R"S5nUR W[5 URUS5 URUS5 g![a:nUR[R:waeUR S5 SnANzSnAff=f)Nrz only works on SCHED_RR processesgg?) rrrrrrrLrrH assertLess)r%intervalrs rtest_sched_rr_get_interval&PosixTester.test_sched_rr_get_intervalYs~ >2215H h. "- "% >ww%,,& MM< = =  >sA B0BBc[R"S5nURU[5 UR [ U5S5 [ RRS5(d%UR[[RS5 UH=nURU[5 UR US5 URUS5 M? g)Nrr8rrVr ) rsched_getaffinityrLrrHrGrrrr;rr.r)r%maskcpus rtest_sched_getaffinity"PosixTester.test_sched_getaffinityhs&&q) dC( D 1-||&&y11   gu'>'> CC  ! !#s +  # #C + OOC )rMc ,[R"S5nUR[RS[ U55 [ U5S:aUR 5 [R"SU5 UR[R"S5U5 [R"S/5 UR[[RSS/5 UR[[RS[[S55 UR[[RSSS-/5 [RR!S5(d'UR[[RSU5 gg![a Nf=f)Nrr8i0XrrV)rrrrrrGpoprFrr;r/mapr.rrrr)r%rs rtest_sched_setaffinity"PosixTester.test_sched_setaffinityus(&&q) //DJ? t9q= HHJ 4( 003T:   # #Ar * *e&=&=q3%H *e&=&=q#c4.Q -)@)@!afXN||&&y11   gu'>'>D I2   sF FFzNo dynamic linking on WASIrzPOSIX-only testc[R [R [R [R gr{)r RTLD_LAZYRTLD_NOW RTLD_GLOBAL RTLD_LOCALr$s rtest_rtld_constantsPosixTester.test_rtld_constantss$    rM SEEK_HOLEz(test needs an OS that reports file holesc [[RS5nURS5 UR 5 UR 5nUR 5n[U5HmnURU[R"X4[R55 URU[R"X4[R55 Mo UR[[RX2[R5 UR[[RX2[R5 SSS5 g![a [ R""S5ef=f!,(df  g=f)Nzr+bshellozOSError raised!)rrrrrtellrrrFror SEEK_DATAassertLessEqualrr;rrsrt)r%rr=fnors r test_fs_holesPosixTester.test_fs_holess)""E *b HHX  HHJ779D))+C ;tA$$Q(FG((rxx /MN%!!'288S M!!'288S M+ * ; ''(9::  ;+ *sAE0C$E  !E--E00 E>c 6SHPn[[US5nUcMS[R4H nU"SU5 M URSU-5 MR g![a6nUR SR U5[U55 SnA MSnAff=f)zV Test functions that call path_error2(), providing two filenames in their exceptions. )renamerr?Nnoodly2doesnotexistfilenamez'doesnotexistfilename' -> '{}'z#No valid path_error2() test for os.) r9rorrrrformatrru)r%r>functiondstrs rtest_path_error2PosixTester.test_path_error2s2Dr4.H!9#3#343S95 ?$FG2MM"B"I"I#"NPSTUPVWs A B"*BBcZ[RnUS-nUR[RU5 [R"U5 SnUR [ 5 [ R"U[ R[ R-5nSSS5 Ub[ R"U5 UR[ RRU55 UR [ [ RU5 UR[ RRU55 [US5R5 UR [ [ RU5 g!,(df  N=f!Ub[ R"U5 ff=f)Nr)rrrrr;r/rorrrrrmrexistsr)rr%rq fn_with_NULrs rtest_path_with_null_character)PosixTester.test_path_with_null_characters   4i   (("-  "":.WW["++ *BC/~  +, *bhh < +, R *bgg{;/.~ s$F$7E=F= F FF*c[R"[R5nUS-nUR [R U5 [R "U5 SnUR [5 [R"U[R[R-5nSSS5 Ub[R"U5 UR[RRU55 UR [[RU5 UR[RRU55 [US5R5 UR [[R U5 g!,(df  N=f!Ub[R"U5 ff=f)Nrr)rorrrrrr;r/rrrrrmrrr)rrs rtest_path_with_null_byte$PosixTester.test_path_with_null_bytes" [[)) *5j   (("-  "":.WW["++ *BC/~  +, *bhh < +, R *bgg{;/.~ s$#F"87F/F" FF""F> pidfd_openzpidfd_open unavailablec`UR[5n[R"S5 SSS5 WRR [ R :XaURS5 [UR[5(aURSUR<35 URURR [ R5 [R"[R"[R"5S55 g!,(df  N=f)NrVz"system does not support pidfd_openzpidfd_open syscall blocked: r)r;rrorrrrrrrrFrrr3)r%rs rtest_pidfd_openPosixTester.test_pidfd_opens   w '2 MM" ( <<   - MM> ? bllO 4 4 MM88HI J ++U\\: ryy{A./( 's D D-r)__name__ __module__ __qualname____firstlineno__r&r@rs skipUnlessr rrKrQrYr^rcrgrprwr~rrrr9ro supports_fdr requires_forkrrrrrrr requires_32brrrrr rrr#r&r-r1supports_follow_symlinksr8r>rArErHskipIfis_wasirMrYrargrequires_linux_versionrequires_subprocessrorurzrrrrrrrrrrskip_unless_working_chmodrrrrrrrrrrrrrr  cpython_onlyrrr!r%r,r/r3r8r;rBrEskip_unless_symlinkrKrOrSrVrbrerirtr|rrrrsignalrrequires_sched_hrequires_sched_affinityrrrequires_schedrrrrrr>rrrrrr__static_attributes__rrMrrr8s0@  479,9,  479,9,  479797  479G9G 479797  479H9H 557 j13NOIP7I. 257272 3688 4799 35RS,T, Xt4FHyz  { 13NO .P. =%=%~02LM N 02LM N 13NOP13NO  46RSTP(13NO P 13NOP 24PQ R  24PQ  68PQ RR  24PQR(9:,..((9:,..8*,,8*,,R^^35XYZ(R%@%@@Brs =t =13NOP*13NOP02LMN*02LM N .13 __W__&@AB3 257 N7 N 257G7G /24 __W__&ABC4[13GH ##Aq"-   "1#.I1  346 6  346 6 035 5 A"13HI FJ F0MWT95M57N7N, 24PQ%AR%ANG!RW-/DE __W**,@AOBFO(( 13KL __W**,@A BM) (( 13KLCM)C02LMBNBB9 J ) "..8DF F 13NOAPA02LMN  368+8+/1JKL W-/FG ##Aq"-.H4  W-/FG ##Aq"-K.HK 02LM 2N 2%,((8)8 ((.).((6)6 13KLOMO13KLEME - ;"" O# O"" O# O13KL"";#M;13KL"";#M;40 24MNIOI 35OP?Q?  35OP>Q>@1 513NO!(P!(F79Z[ j13NO X.0HI>JP\> Y/1JK W-/FG   "E#HLE435ij _57TUVk **75-+H+JL&11'%AT2U2UW (@A<> J> J&I&IP55$(?@-P &Q & * *JJ2__W__&BC G+->?@D[1CE;E;2H$<$<$\24LM0N0rMrc\rSrSrSr\S5r\S5r\R"\ R\ R;S5S5r \R"\ R\ R;S5S5r\R"\"\ S 5=(a \ R"\ R;S 5\R$"\R(S 5S 55r\R"\ R,\ R;S 5S5r\R"\ R0\ R;S5S5r\R$"\R4S5\R"\"\ S5=(a \ R6\ R;S5S55r\R"\ R:\ R;S5S5r\R"\"\ S5=(a) \ R>\ R;=(a \"\S5S5S5r \R"\ RB\ R;S5S5r"\R"\"\ S5=(a \ RF\ R;S5S5r$\R"\ RJ\ R;S 5S!5r&\R"\ RN\ R;S"5S#5r(\R"\ RR\ R;S$5S%5r*\R"\"\ S&5=(a \ RV\ R;S'5S(5r,S)r-g*)+TestPosixDirFdirc## [=RS- sl[RSUR3n[RSURS3n[R "U5 UR [RU5 [RRX!5n[R"U5nXAU4v SSS5 g!,(df  g=f7f)Nr8_base) r7countrrrr)rr*rorr open_dir_fd)r%r>base_dirfullnamers rprepareTestPosixDirFd.prepares!""#1TZZL1&&'q D9 H  X.77<</  " "8 ,* *- , ,sCC'C C' C$ C'c## UR5upn[R"U5 UR[R U5 XU4v SSS5 g!,(df  g=f7fr{)r?rrrrrr%rr>r>s r prepare_fileTestPosixDirFd.prepare_filesI \\^7h  ' ' 1 OOELL( 3* *^^sA-AA A- A*&A-z)test needs dir_fd support for os.access()c UR5upnUR[R"U[R US95 SSS5 g!,(df  g=fNr)rCr|rrrorrBs rtest_access_dir_fd!TestPosixDirFd.test_access_dir_fd s>    $r>ss rtest_chmod_dir_fd TestPosixDirFd.test_chmod_dir_fds    $r>outfiles1s2rrs rtest_stat_dir_fdTestPosixDirFd.test_stat_dir_fd!s \\^7hh$ l+% OOELL( 3H%BD0B   R $HT2B   R $  " "9.NJJU\\^ # =  " "9.NJJU6] # <   mJJV  5"**>;=@B**73 =<4=  h7 "%^$$(43=='^sRG>G D.G>!G-7G G-,G> G G> G* &G-- G; 7G>> H z'test needs dir_fd support in os.utime()c NUR5upn[R"5n[R"USUS9 [R"X!S9 UR [ [RUXAS9 UR [ [RUSUS9 UR [ [RUUS4US9 UR [ [RUSU4US9 UR [ [RUUS4US9 [R"U[ U5[ U54US9 [R"X$U4US9 [R"U[ U5[ U[ U5- S-54US9 [R"X![ U5[ U[ U5- S-54S9 [R[R;a[R"USUS9 SSS5 g![a Nf=f!,(df  g=f)NrGr)rr+)rr-F)r5r) rCr,rr-r;r<r.ror)r/)r%rr>r>r0s rtest_utime_dir_fd TestPosixDirFd.test_utime_dir_fd<s    $r>dir_fd2linkname fulllinknamers rtest_link_dir_fdTestPosixDirFd.test_link_dir_fd[s   $r>rrs rtest_mknod_dir_fd TestPosixDirFd.test_mknod_dir_fdvs\\^7h<<$,,.=D M D&9  h7 ejj.B.J.J KL^ R agg U\\5<<'PQQ R ^s76D*C A#D* D'A D"D*"D''D** D8z&test needs dir_fd support in os.open()c UR5upn[US5nURS5 SSS5 UR[R U5 [R"U[R US9n[R"US5nURSU5 [R"U5 SSS5 g!,(df  N=f![R"U5 f=f!,(df  g=f)Nrs testline rG ) r?rrrrrrrrFr)r%rr>r>rWrrs rtest_open_dir_fdTestPosixDirFd.test_open_dir_fds \\^7hh% m,& OOELL( 3D%..@B jjQ'  4 B^%% B^s:C5C A C5)C)C5 C C5C22C55 Dreadlinkz*test needs dir_fd support in os.readlink()cUR5upn[R"SU5 UR[R U5 UR [R"X!S9S5 SSS5 g!,(df  g=fNrrG)r?rorrrrrFrrrBs rtest_readlink_dir_fd#TestPosixDirFd.test_readlink_dir_fdsW\\^7h JJy( + OOELL( 3   U^^D@) L^^ AA99 Bz(test needs dir_fd support in os.rename()c :UR5upnUR5upEn[R"X%XS9 [R"U5 [R"Xc5 SSS5 SSS5 g!,(df  N=f!,(df  g=f)Nr`)rCr?rr r)r%rr>r>rcname2 fullname2s rtest_rename_dir_fd!TestPosixDirFd.test_rename_dir_fdsk    $r>rs rtest_mkfifo_dir_fd!TestPosixDirFd.test_mkfifo_dir_fds \\^7h 8 T4<<$,,#>vN OOELL( 3 OODMM%**X*>*F*FG H ^# 8 2Q677 8^s5C"5B7 A#C"7 CCC"CC"" C0rN).r!r"r#r$r;r r?rCrsr%rorsupports_dir_fdrHr$rMr rr*rrrPrrZr-r]r+r?rfr)rirrlrrprrrur r{rr~rrrrr5rrMrr7r7s E + +++ b&8&88:efHgHR%7%779bc:d:W-R288r?Q?Q3QBD __W**,@AGBDGB$6$668`a8b84R%7%779bcd<__?F=2+=+= =0 -   -R%7%779bc!d! W-6 hh"*<*<<6$T95\^ M ^ MB$6$668`a  b  Z0XbkkREWEW6WEGMGM b&8&88:de.f.r'9'99;fgBhB b&8&88:de f X.R299@R@R3RT~I@IrMr7c\rSrSrSrSr\R"\"\ S5S5S5r \R"\"\ S5S5S 5r S r g ) PosixGroupsTesteric@[R"5S:wa[R"S5e[ [S5(d[R"S5e[ R S:Xa[R"S5e[R"5Ulg)Nrznot enough privilegesr2zneed posix.getgroupsrzgetgroups(2) is broken on OSX) rr6rsrtr rrr2 saved_groupsr$s rr&PosixGroupsTester.setUpsn <<>Q ##$;< <uk**##$:; ; <<8 ###$CD D!OO-rMcH[[S5(a![R"UR5 g[[S5(aW[R "[R "55Rn[R"XRS5 gg)N setgroupsrir) r rrrrprjr6rqrir%r>s rtearDownPosixGroupsTester.tearDownsf 5+ & & OOD-- . UL ) )<< /77D   T#4#4Q#7 8*rMriztest needs posix.initgroups()c$[UR=(d S/5S-n[R"[R "55R n[R"X!5 URU[R"55 gr ) maxrrprjrr6rqrirr2)r%rr>s rrw!PosixGroupsTester.test_initgroupss] !!(aS )A -||ELLN+33 ! a*+rMrztest needs posix.setgroups()cS/[[S554H>n[R"U5 UR U[R "55 M@ g)Nr)rrrrassertListEqualr2)r%rs rtest_setgroups PosixGroupsTester.test_setgroupss@sDrO,F OOF #  ): ;-rM)rN) r!r"r#r$r&rrsr%r rrwrr5rrMrrrsb.9 58:,:, 479<9 > ?s"A##B3BBc[RnUR[RU5 SU<S3nUR SU5nUR USU0[ RESS0E5n[R"USS9 [USS 9nURUR5S5 SSS5 g!,(df  g=f) Nrz^, "w", encoding="utf-8") as envfile: envfile.write(os.environ['foo']) rrrlbarrrr) rrrrrrrorrrrrFr)r%envfilerrrrs rtest_specify_environment)_PosixSpawnMixin.test_specify_environments""  (('2k"   f-ood1gt::UE:<S1- 'G ,   QVVXu -- , ,s !B== C cURURSUR[RSS9n[R "USS9 gNr file_actionsrr NOOP_PROGRAMrorrrr%rs rtest_none_file_actions'_PosixSpawnMixin.test_none_file_actions"sHoo   a    JJ   S1-rMcURURSUR[R/S9n[R "USS9 grrrs rtest_empty_file_actions(_PosixSpawnMixin.test_empty_file_actions+sHoo   a    JJ   S1-rMcUR[R[RSS/[RSS9n[ R "USS9 g)NrrFresetidsrrrrrrorrrrs rtest_resetids_explicit_default/_PosixSpawnMixin.test_resetids_explicit_default4sFoo NN ^^T6 * JJ   S1-rMcUR[R[RSS/[RSS9n[ R "USS9 g)NrrTrrrrrs r test_resetids_PosixSpawnMixin.test_resetids=sFoo NN ^^T6 * JJ   S1-rMcUR[R[RSS/[R[R "5S9n[ R"USS9 g)Nrr setpgrouprr)rrrrorr4rrrs rtest_setpgroup_PosixSpawnMixin.test_setpgroupFsLoo NN ^^T6 * JJjjl   S1-rMcUR[5 UR[R[RSS/[ R SS9 SSS5 g!,(df  g=f)Nrr023r)r;r<rrrrorr$s rtest_setpgroup_wrong_type*_PosixSpawnMixin.test_setpgroup_wrong_typeOsJ   y ) OOCNN ^^T6:JJ%  9* ) )s AA A-pthread_sigmaskzneed signal.pthread_sigmask()c[R"S5nUR[R[RSU/[ R [R/S9n[R"USS9 g)NI import signal signal.raise_signal(signal.SIGUSR1)r setsigmaskrr) textwrapdedentrrrrorr1SIGUSR1rr)r%rrs rtest_setsigmask _PosixSpawnMixin.test_setsigmaskUsd 34oo NN ^^T4 ( JJ'   S1-rMc UR[5 UR[R[RSS/[ R SS9 SSS5 UR[5 UR[R[RSS/[ R S/S9 SSS5 UR[5 UR[R[RSS/[ R [R[RS-/S9 SSS5 g!,(df  N=f!,(df  N=f!,(df  g=f)Nrr"rjr8 r;r<rrrrorr/r1NSIGr$s rtest_setsigmask_wrong_type+_PosixSpawnMixin.test_setsigmask_wrong_typeds   y ) OOCNN ^^T6:JJ2  7*  y ) OOCNN ^^T6:JJC5  :*  z * OOCNN ^^T6:JJFKK4:KKM4C  D+ ** )* )+ *&AD;3AE A!E; E  E E+c@[R"5upUR[RU5 [R"US5 [ R "SUS35nUR[R[RSU/[RSS9n[R"U5 [R"WSS 9 [R "US 5n[#U5n[R$"[R&"55nUR)X5 g![anURSU<35 SnANSnAf[anURSU<35 SnANSnAff=f![R"U5 f=f) NTz0 import os fd = z` sid = os.getsid(0) os.write(fd, str(sid).encode()) r)setsidzsetsid is not supported: zsetsid failed with: rrr)rorrrset_inheritablerrrrrrrrrrrrr.getsidr3r) r%rfdwfdrrroutput child_sid parent_sids r test_setsid_PosixSpawnMixin.test_setsidss=779 #&    sD )??(U $D >oocnn'*~~tT&B&(jj&? HHSMS1-c"K YYryy{+  J2' C 9#ABB" > 4SG<== > HHSMsA1F+?D22 F<EF F#E=8F=FFFc[R"[R[R5n[R"S5nUR [ R[ RSU/[R[R/S9n[R"[RU5 [R"U[R*S9 g![R"[RU5 f=f)Nrr setsigdefr) r1rSIG_IGNrrrrrrorrr)r%original_handlerrrs rtest_setsigdef_PosixSpawnMixin.test_setsigdefs"==H 34 <//t, !>>* "C MM&..*: ;SFNN?; MM&..*: ;s AC##'D c UR[5 UR[R[RSS/[ R SS9 SSS5 UR[5 UR[R[RSS/[ R S/S9 SSS5 UR[5 UR[R[RSS/[ R [R[RS-/S9 SSS5 g!,(df  N=f!,(df  N=f!,(df  g=f)Nrrrrrr8rr$s rtest_setsigdef_wrong_type*_PosixSpawnMixin.test_setsigdef_wrong_types   y ) OOCNN ^^T6:JJ"  6*  y ) OOCNN ^^T6:JJ3%  9*  z * OOCNN ^^T6:JJ6;; A 2N  P+ ** )* )+ *rrzbpo-34685: test can fail on BSDc j[R"S5n[R"U5n[R"SUSUS35nUR [ R[ RSU/[RS[R"U54S9n[R"USS9 gNrzF 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 ror rrrrrrrrrrr%policypriorityrrs rtest_setscheduler_only_param-_PosixSpawnMixin.test_setscheduler_only_params&&q),,V4$,,28477?jA  !" oo NN ^^T4 ( JJR^^H56   S1-rMc j[R"S5n[R"U5n[R"SUSUS35nUR [ R[ RSU/[RU[R"U54S9n[R"USS9 grrrs rtest_setscheduler_with_policy._PosixSpawnMixin.test_setscheduler_with_policys&&q),,V4$,,28477?jA  !" oo NN ^^T4 ( JJr~~h78   S1-rMcl[RS[RR[5[R S4[R S4[RSS4/nURURSUR[RUS9n[R"USS9 g)NrErr8rrr) roPOSIX_SPAWN_OPENrrealpathrVrPOSIX_SPAWN_CLOSEPOSIX_SPAWN_DUP2rrrrr)r%rrs rtest_multiple_file_actions+_PosixSpawnMixin.test_multiple_file_actionss  !RWW%5%5h%?a P  ! !1 %  !Q ' ood//2"// jj+79 S1-rMc URnUR[5 URUSU[R S/S9 SSS5 UR[5 URUSU[R S/S9 SSS5 UR[5 URUSU[R S/S9 SSS5 UR[5 URUSU[R S/S9 SSS5 UR[5 URUSU[R [R 4/S9 SSS5 UR[5 URUSU[R [R SS4/S9 SSS5 UR[5 URUSU[R [R S4/S9 SSS5 UR[5 URUSU[R [RS[S -[RS4/S9 SSS5 g!,(df  GN6=f!,(df  GN=f!,(df  GN=f!,(df  GN=f!,(df  GNg=f!,(df  GN&=f!,(df  N=f!,(df  g=f) Nrrrr{)i90r8rrEr) rr;r<rrorrr/r rVrrs rtest_bad_file_actions&_PosixSpawnMixin.test_bad_file_actionsse     y ) OODGT2::*.  1*  y ) OODGT2::*,  /*  y ) OODGT2::*1  4*  y ) OODGT2::*2  5*  y ) OODGT2::+-+?+?*A)B  D*  y ) OODGT2::+-+?+?A*F)G  I*  y ) OODGT2::+-+?+?*F)G  I*  z * OODGT2::+-+>+>+,ho+-;;+;*<  =+ *+* )* )* )* )* )* )* )+ *s`%I6$%J&%J(%J,*4J>;6K5K" A K36 J J J), J;> K  K" K03 LcN[RnUR[RU5 Sn[R SU[R [R-[R-[R[R-4/nURSU5nURUSU[RUS9n[R "USS9 [#USS9nUR%UR'5S 5 SSS5 g!,(df  g=f) NOif 1: import sys sys.stdout.write("hello") r8rrrrrrhello)rrrrror rrO_TRUNCrrrrrrrrrrFr)r%rWrrrrrs rtest_open_file_PosixSpawnMixin.test_open_files""  (('2  !W bjj(2::5 t||+ - f-ood1gtRZZ+79 S1- 'G ,   QVVXw /- , ,s ,!D D$c[RnUR[RU5 SU<S3nUR SU5nUR USU[ R[ RS4/S9n[R"USS9 [USS9nURUR5S [R-5 SSS5 g!,(df  g=f) 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)rrrrrrrorrrrrrFrrr)r% closefilerrrrs rtest_close_file _PosixSpawnMixin.test_close_files$$   (()4 %-( f-ood1gtRZZ-/-A-A1,E+FH S1- )g .!   QVVX~ 'C D/ . .s 2C C&c[RnUR[RU5 Sn[ US5n[ R UR5S4/nURSU5nURUSU[ RUS9n[R"USS9 SSS5 [ USS 9nURUR5S 5 SSS5 g!,(df  NB=f!,(df  g=f) Nrrr8rrrrrrr)rrrrrrorrrrrrrrFr)r%dupfiler childfilerrrrs rrg_PosixSpawnMixin.test_dup2+s""  (('2'4 I$$i&6&6&8!<L##D&1D//$q'4/;"=C  q 1!'G ,   QVVXw /- ,! - ,sA-C(>!C9( C69 Dr)'r!r"r#r$rrrrrrrrrrrrrrrsr%r r1rrrrrr4r*rrrr rrrrrgr5rrMrrrsDNND$f=LJ3 1 + ......9 ):;:< .< . D3>):;8:<:<" P __S\\,,-BC68.8." __S\\,,-BC68.8." .=:0(E&0rMr posix_spawnztest needs os.posix_spawnc(\rSrSr\"\SS5rSrg)TestPosixSpawni>r#Nr)r!r"r#r$r9rrr5rrMrr%r%>s t4JrMr% posix_spawnpztest needs os.posix_spawnpcL\rSrSr\"\SS5r\RS5r Sr g)TestPosixSpawnPiDr&Nc[R"5nUR[RU5 Sn[ R RX5n[ R"[RU5 [ RRU[ RS45nUSSSS4n[R"SU<S35nSU4n[!USU06 g![a UnN@f=f) 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) )tempfilemkdtemprrrrorrrrrpathseprrrrrr)r%temp_dirprogramprogram_fullpathr spawn_argsrrs rtest_posix_spawnp!TestPosixSpawnP.test_posix_spawnpIs##%  (((3177<<: 3>>#34 ::??Hbjj.@#ABDtT48  d|$*T*% D s=2C!! C0/C0r) r!r"r#r$r9rrrr0r2r5rrMrr(r(Ds*5J""+#+rMr(rztest weak linking on macOSc\rSrSrSrSrSrSrSrSr Sr S r S r S r S rS rSrSrSrSrSrSrSrSrg)TestPosixWeaklinkingijc"SSKnSSKnUR5nUVs1sH'oDRS5(dMX4(dM%UiM) snUl[ SUR "5SRS555Ulgs snf)NrHAVE_c38# UHn[U5v M g7fr{r)rparts rr-TestPosixWeaklinking.setUp..wsT3S4SYY3Srr)rrget_config_varsr availablermac_verr)r%rr config_varsnms rr&TestPosixWeaklinking.setUpqsn//1 (3c "}}W7M2R]Ra2 cT83C3C3Ea3H3N3Ns3STT dsB B B cTXR;a[R"US35eg)Nz not weak-linked)r<rsrtrs r_verify_available&TestPosixWeaklinking._verify_availableys* ~~ %##tf,<$=> > &rMcHURS5 URS:aAUR[[S5S5 UR[[S5S5 gUR [[S5S5 UR [[S5S5 g) N HAVE_PWRITEV)rrrzos.pwritev is not availablerzos.readv is not availablezos.pwritev is availablezos.readv is available)rBr=r|r rormr$s rr!TestPosixWeaklinking.test_pwritev}sz ~. <<8 # OOGB 24Q R OOGB13N O   WR35N O   WR24K LrMcRURS5 URS:a!URS[R5 gUR S[R5 UR [S5 [R"SSS9 SSS5 g!,(df  g=f)N HAVE_FSTATATrrdir_fd unavailablefilerrG) rBr=rr_have_functions assertNotInrVrrorr$s rrTestPosixWeaklinking.test_statsu ~. <<8 # MM.%*?*? @   ^U-B-B C''(;=QRq)SRR 9B B&cURS5 URS:a!URS[R5 gUR S[R5 g)NHAVE_PTSNAME_R)rrmr)rBr=rrrLrMr$s rtest_ptsname_r#TestPosixWeaklinking.test_ptsname_rsI /0 <<; & MM*E,A,A B   -u/D/D ErMcURS5 URS:a!URS[R5 gUR S[R5 UR [S5 [R"S[RSS9 SSS5 UR [S5 [R"S[RSS 9 SSS5 UR [S 5 [R"S[RS S 9 SSS5 g!,(df  N=f!,(df  Nc=f!,(df  g=f) NHAVE_FACCESSATrIrJrKrrGzfollow_symlinks unavailableFr4zeffective_ids unavailableT) effective_ids) rBr=rrrLrMrVrrorrr$s rr TestPosixWeaklinking.test_accesss /0 <<8 # MM*E,A,A B   -u/D/D E''(;=QR &"''!4S''(;=Z[ &"''5A\''(;=XY &"''>ZY SR\[ZYs$9%D-<%D>?%E- D;> E  EcURS5 URS:a!URS[R5 gUR S[R5 URS[R5 UR [S5 [R"SSSS9 SSS5 g!,(df  g=f) N HAVE_FCHMODATrI HAVE_LCHMODrJrKirrG) rBr=rrrLrMrVrror$r$s r test_chmodTestPosixWeaklinking.test_chmods / <<8 # MM/5+@+@ A   _e.C.C D MM-)>)> ?''(;=QRq1SRRs B99 CcURS5 URS:a!URS[R5 gUR S[R5 URS[R5 UR [S5 [R"SSSSS9 SSS5 g!,(df  g=f)N HAVE_FCHOWNATrI HAVE_LCHOWNrJrKrrG) rBr=rrrLrMrVrrorr$s rrTestPosixWeaklinking.test_chowns / <<8 # MM/5+@+@ A   _e.C.C D MM-)>)> ?''(;=QRAa0SRRs B:: Cc>URS5 URS:a!URS[R5 gUR S[R5 UR [S5 [R"SSSS9 SSS5 UR [S5 [R"SSSS 9 SSS5 UR [S5 [R"SSSSS 9 SSS5 [R"5n[RRUS 5n[RRUS5n[RRUS5n[US 5nURS 5 SSS5 [R "SU5 UR#[$5 [R"XBSS9 SSS5 UR#[$5 [R"XBSS9 SSS5 SSS5 g!,(df  GN=f!,(df  GNy=f!,(df  GNU=f!,(df  N=f!,(df  N=f!,(df  No=f!,(df  g=f)N HAVE_LINKATrIzsrc_dir_fd unavailablesourcerrrazdst_dir_fd unavailablerbr`r?rdataTr4F)rBr=rrrLrMrVrror?rr.rrrrrr;FileExistsError)r%r link_path target_path source_pathrs r test_linkTestPosixWeaklinking.test_links }- <<8 # MM-)>)> ?   ]E,A,A B''(;=UV(:W''(;=UV(:W''(;=UV(aHW##%GGLLF;  ggll9h?  ggll9h? +s+rHHV$, 8Y/ &&7GGKDI8&&7GGKEJ8#&%WVWVWV,+8787#&%sy9H%.H7#I A-JI4J I,!J>I=J% H47 I I I) %J, I: 6J= J J JcURS5 URS:a!URS[R5 gUR S[R5 UR [S5 [R"S5 SSS5 UR [S5 [R"S5 SSS5 g!,(df  ND=f!,(df  g=f)NHAVE_FDOPENDIRrIzClistdir: path should be string, bytes, os.PathLike or None, not intrzCscandir: path should be string, bytes, os.PathLike or None, not int) rBr=rrrLrMrVr<rorscandirr$s rtest_listdir_scandir)TestPosixWeaklinking.test_listdir_scandirs /0 <<8 # MM*E,A,A B   -u/D/D E'' 3xy 1 z'' 3xy 1 zyzyzys9C.C C C-cRURS5 URS:a!URS[R5 gUR S[R5 UR [S5 [R"SSS9 SSS5 g!,(df  g=f)N HAVE_MKDIRATrIrJdirrrG) rBr=rrrLrMrVrror)r$s r test_mkdirTestPosixWeaklinking.test_mkdirsu ~. <<8 # MM.%*?*? @   ^U-B-B C''(;=QRq)SRRrOcRURS5 URS:a!URS[R5 gUR S[R5 UR [S5 [R"SSS9 SSS5 g!,(df  g=f)N HAVE_MKFIFOATrmrrJrrrG) rBr=rrrLrMrVrrorr$s rr TestPosixWeaklinking.test_mkfifo su / <<7 " MM/5+@+@ A   _e.C.C D''(;=QR &+SRRrOcRURS5 URS:a!URS[R5 gUR S[R5 UR [S5 [R"SSS9 SSS5 g!,(df  g=f)N HAVE_MKNODATryrJrrrG) rBr=rrrLrMrVrrorr$s rrTestPosixWeaklinking.test_mknod su ~. <<7 " MM.%*?*? @   ^U-B-B C''(;=QR*SRRrOcURS5 URS:a!URS[R5 gUR S[R5 UR [S5 [R"SSSS9 SSS5 UR [S5 [R"SSSS9 SSS5 UR [S5 [R"SSSS9 SSS5 UR [S5 [R"SSSS9 SSS5 g!,(df  N=f!,(df  N=f!,(df  Nf=f!,(df  g=f) N HAVE_RENAMEATrIz%src_dir_fd and dst_dir_fd unavailableabrrdre) rBr=rrrLrMrVrror rr$s rtest_rename_replace(TestPosixWeaklinking.test_rename_replace s / <<8 # MM/5+@+@ A   _e.C.C D''(;=de #sq1f''(;=de #sq1f''(;=de 32f''(;=de 32fefefefefes09D8.E #EE+8 E E E(+ E9cURS5 URS:a!URS[R5 gUR S[R5 UR [S5 [R"SSS9 SSS5 UR [S5 [R"SSS9 SSS5 g!,(df  NC=f!,(df  g=f)N HAVE_UNLINKATrIrJrrrG) rBr=rrrLrMrVrrorr*r$s rtest_unlink_rmdir&TestPosixWeaklinking.test_unlink_rmdir, s / <<8 # MM/5+@+@ A   _e.C.C D''(;=QR &+S''(;=QR*SRSRSRs9C -C C C+cpURS5 URS:a!URS[R5 gUR S[R5 UR [S5 [R"S[RSS9 SSS5 g!,(df  g=f)N HAVE_OPENATrIrJrrrG) rBr=rrrLrMrVrrorrr$s r test_openTestPosixWeaklinking.test_open: s{ }- <<8 # MM-)>)> ?   ]E,A,A B''(;=QR A6SRRs 9%B'' B5cRURS5 URS:a!URS[R5 gUR S[R5 UR [S5 [R"SSS9 SSS5 g!,(df  g=f)NHAVE_READLINKATrIrJrrrG) rBr=rrrLrMrVrrorrr$s r test_readlink"TestPosixWeaklinking.test_readlinkE sx 01 <<8 # MM+U-B-B C   .0E0E F''(;=QR FA.SRRrOcTURS5 URS:a!URS[R5 gUR S[R5 UR [S5 [R"SSSS9 SSS5 g!,(df  g=f)NHAVE_SYMLINKATrIrJrrrrG) rBr=rrrLrMrVrrorr$s r test_symlink!TestPosixWeaklinking.test_symlinkP sz /0 <<8 # MM*E,A,A B   -u/D/D E''(;=QR 3Q/SRRs 9B B'cURS5 URS5 URS:aAURS[R5 URS[R5 gUR S[R5 UR S[R5 UR [S5 [R"SSS9 SSS5 g!,(df  g=f)N HAVE_FUTIMENSHAVE_UTIMENSAT)rrmrJrrrG) rBr=rrrLrMrVrror-r$s rrTestPosixWeaklinking.test_utime[ s / /0 <<8 # MM/5+@+@ A MM*E,A,A B   _e.C.C D   -u/D/D E''(;=QR*SRRs C)) C7)r<r=N)r!r"r#r$r&rBrrrRrr[rrkrprurrrrrrrrr5rrMrr5r5jsfU?M *F?" 2 1$KN  * , +3( + 7 / 0 +rMr5c\rSrSrSr\R "\"\S5S5\R "\"\S5S5\R "\RRS5S5\ R"S S S 5S 5555r S rg )NamespacesTestsij z&Tests for os.unshare() and os.setns().unsharezneeds os.unshare()setnszneeds os.setns()z/proc/self/ns/utszneed /proc/self/ns/utsrErc Sn[SU5 g)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_setns"NamespacesTests.test_unshare_setnsm s "H t$rMrN)r!r"r#r$__doc__rsr%r rorrrr,rr5rrMrrrj s0 Y/1EF W-/AB (;<>VW ##Aq!,%%-XCG%%rMrc.[R"5 gr{)r reap_childrenrrMrtearDownModuler s rM__main__)6rrr test.supportrrrtest.support.script_helperrrrrr1r,rorrrr+rsr!r contextlibr r ImportErrorrIrprr gettempdirrrr%maxsizerr+r(rr4TestCaserr7rrr r-r%r(r5rrr!mainrrMrrsP!"(7  %h113'..1AAC""KK%J!6!6!I'//J. $$_%68VWz0(##z0|-LIX&&LI^!<))!