zwS:SSKrSSKrSSKrSSKrSSKrSSKrSSKJr SSKJ r J r SSK J r \ "S5r \ "S5r"SS\R5r\R""\"\S 5S 5"S S \R55r\S :Xa\R*"5 gg)N)support) os_helperthreading_helper) import_modulefcntltermioscf\rSrSr\S5rSrSrSrSSjr SSjr SS jr S r S r S rS rg) IoctlTestsTty c [R"[S5n[SS5nU [RX![R"SS55nSSS5 [R"SW5SnU[R"5[R"S54;a[ R "S5eg![a [ R "S5ef=f!,(df  N=f)N TIOCGPGRP/dev/ttyrbzUnable to open /dev/ttyirzBNeither the process group nor the session are attached to /dev/tty)r get_attributeropenOSErrorunittestSkipTestrioctlstructpackunpackosgetpgrpgetsid)clsr ttyrrpgrps 6/opt/alt/python313/lib64/python3.13/test/test_ioctl.py setUpClassIoctlTestsTty.setUpClasss))';?  ?z4(C CFKKQ,?@A c1%a( ryy|4 4##%?@ @ 5  ?##$=> > ? Ss B?,C#?!C # C1c6[R"5[R"S54n[SS5nSn[R U[ RU5nURU[5 [U5RS5SnURXQ5 Sn[R U[ RU5nURU[5 [U5RS5SnURXQ5 [R U[ R[U55nURU[5 [U5RS5SnURXQ5 SSS5 g!,(df  g=f)Nrrrz r ) rrrrrrrr assertIsInstancebytes memoryviewcastassertInselfidsrbufrr s r!test_ioctl_immutable_buf&IoctlTestsTty.test_ioctl_immutable_bufs-zz|RYYq\* *d #sC C!2!2C8A  ! !!U +qM&&s+A.E MM% %C C!2!2C8A  ! !!U +qM&&s+A.E MM% % C!2!2JsODA  ! !!U +qM&&s+A.E MM% %'$ # #s E F  Fc[R"5[R"S54n[SS5n[ S5n[ R U[RU5nURUS5 [U5RS5SnURXQ5 SSS5 g!,(df  g=f)Nrrrr%r) rrrr bytearrayrrrr assertEqualr(r)r*r+s r!test_ioctl_mutable_buf$IoctlTestsTty.test_ioctl_mutable_buf6szz|RYYq\* *d #sF#C C!2!2C8A   Q "sO((-a0E MM% % $ # #s A1B22 Cc[R"5[R"S54n[SS5n[ S5n[ U5n[ RU[RUS5nUR[ U5U5 URU[ 5 [U5RS5SnURXa5 SSS5 g!,(df  g=f)Nrrrr%Fr)rrrrr2r'rrrr r3r&r(r)r*)r,r-rr.save_bufrr s r!test_ioctl_no_mutate_buf&IoctlTestsTty.test_ioctl_no_mutate_buf?szz|RYYq\* *d #sF#CSzH C!2!2C?A   U3Z 2  ! !!U +qM&&s+A.E MM% %$ # #s BC C+Nc[R"S5nURnSnUb7URU/X--5 UR[ U5U-U5 U$UR U5 U$)Nri)arrayitemsizeextendr3lenappend)r,nbytesr.intsizefills r!_create_int_bufIoctlTestsTty._create_int_bufJsmkk#,,   JJv!23 4   SX/ 8  JJt  cb[R"5[R"S54nURU5n[ SS5n[ R U[RU5nSSS5 USnURWS5 URXb5 g!,(df  N7=f)Nrrr) rrrrCrrrrr r3r*)r,r@r-r.rrr s r!_check_ioctl_mutate_len%IoctlTestsTty._check_ioctl_mutate_lenWszz|RYYq\*""6* *d #s C!2!2C8A$A A e! $ #s &B  B.c:[R"5[R"S54nURU5n[ U5n[ SS5n[ RU[RUS5nSSS5 URW[5 UR[U5[U55 UR[ U5U5 [R"SU5Sn[U5RS5SnUR!Xr5 [ U5n[ SS5n[ RU[RUS5nSSS5 URU[5 UR[U5[U55 URX45 [R"SU5Sn[U5RS5SnUR!Xr5 g!,(df  GN=f!,(df  N=f)NrrrFrT)rrrrCr'rrrrr r&r3r>r;r(r)r*)r,r@r-r.r7rrr s r!_check_ioctl_not_mutate_len)IoctlTestsTty._check_ioctl_not_mutate_len`szz|RYYq\*""6*: *d #s C!2!2C?A$ a' QX/ sX. C#A&1 ""3'* e!Cj *d #s C!2!2C>A$ a' QX/ ' C#A&1 ""3'* e!#$ #$ #s'G:7'H : H  HcDUR5 UR5 gNrGrJr,s r!test_ioctl_mutateIoctlTestsTty.test_ioctl_mutatews $$& ((*rEcHURS5 URS5 g)NrNrOs r!test_ioctl_mutate_1024$IoctlTestsTty.test_ioctl_mutate_1024{s  $$T* ((.rEchURS5 UR[URS5 g)Ni)rG assertRaises ValueErrorrJrOs r!test_ioctl_mutate_2048$IoctlTestsTty.test_ioctl_mutate_2048s( $$T* *d&F&FMrErM)__name__ __module__ __qualname____firstlineno__ classmethodr"r/r4r8rCrGrJrPrTrY__static_attributes__r[rEr!r r sD @ @&2& & "".+/ NrEr openptyzneed os.openpty()c&\rSrSrSr\R "\"\S5S5S5r \R "\ RS:HS5\R "\"\S5S 5S 55r S r \R "\"\S 5S 5S5rSrg) IoctlTestsPtyc[R"5uUlUlUR [R UR5 UR [R UR5 grM)rrb master_fdslave_fd addCleanupcloserOs r!setUpIoctlTestsPty.setUpsB(* %  $--0 $..1rETCFLSHzrequires termios.TCFLSHcXURnURn[RS;n[R "US5 UR [R"US5S5 U(a4[RU[R[R5 O3[RU[R[R5 UR [R"US5S5 U(a4[RU[R[R5 O3[RU[R[R5 [R "US5 UR [R"US5S5 g)N)linuxandroidsabcdefsabscdsABCDEFrS)rhrgsysplatformrwriter3readrrrrmTCOFLUSHTCIFLUSH)r,wfdrfdinbufs r! test_ioctl_clear_input_or_output.IoctlTestsPty.test_ioctl_clear_input_or_outputsmmnn 44 i  a%0  KKW^^W-=-= > KKW^^W-=-= > a%0  KKW^^W-=-= > KKW^^W-=-= > i  d+Y7rErozonly works on LinuxTCXONCzrequires termios.TCXONCc^^^^TRmTRn[R"5m[R"5mUUUU4Sjn[R "[R "US9/5 TR[R"US5S5 [RT[R[R5 TR5 TR!TR#S5S5 [RT[R[R$5 TR'TR#[(R*5S5 TR[R"US5S 5 SSS5 g!TR5 f=f![RT[R[R$5 f=f!,(df  g=f) Nc>[R"TS5 TRTR[R 55 [R"TS5 TR 5 g)Nabcdef)rrt assertTruewaitr SHORT_TIMEOUTset)r,rxwrite_finishedwrite_suspendedsr!writerBIoctlTestsPty.test_ioctl_suspend_and_resume_output..writersH HHS& ! OOO001F1FG H HHS& !    rE)targetrg?zoutput was not suspendedzoutput was not resumedrSr)rhrg threadingEventr start_threadsThreadr3rrurrrr}TCOOFFr assertFalserTCOONrrr)r,ryrrxrrs` @@@r!$test_ioctl_suspend_and_resume_output2IoctlTestsPty.test_ioctl_suspend_and_resume_outputsSmmnn#//+"* ! !  + +Y-=-=V-L,M N   RWWS!_f 5 @*KKW^^W^^D#'')  !4!4S!9!;= C? OON//0E0EF4 6   RWWS$/ 8O N $'') C?O Ns79(G&#3F1F.B G&F++F..5G##G&& G4c[RS:a$[Rn[RS-nOL[Rn[R"S[R"S[R55un[R"SSSSS5n[ R URX#5n[ R URX5ng)NrlrIHHHHP)r TIOCSWINSZrrrrrrg)r,set_winsz_opcode_maybe_negset_winsz_opcode_pos our_winsz new_winszs r!%test_ioctl_signed_unsigned_code_param3IoctlTestsPty.test_ioctl_signed_unsigned_code_params    !)0);); &#*#5#5 #B #*#5#5 *0--KKW%7%78+: ' &KKr"Qq1 KK0DP KK0JV rEFICLONEzneed fcntl.FICLONEc~[R"5nUR[5 [R U[R U5 SSS5 UR[5 [R U[R S5 SSS5 g!,(df  NR=f!,(df  g=f)Ns)r make_bad_fdrWrrrr)r,fds r! test_bad_fdIoctlTestsPty.test_bad_fdss " " $   w ' KKEMM2 .(   w ' KKEMM< 8( '( ' ' 's&B.&B. B+. B<)rgrhN)r\r]r^r_rkr skipUnlesshasattrrr{rrrsrrrrrar[rEr!rdrds2 (35NO8P8202GH (35NO9PI96 W 24HI9J9rErd__main__)r;rrrrrrtestr test.supportrrtest.support.import_helperrrrTestCaser rrrdr\mainr[rEr!rs 44g  "wNH%%wNt WR+-@AR9H%%R9BR9j z MMOrE