
    0hh4                     &   S SK r S SKrS SKrS SKrS SKrS SKrS SKJr  S SKJ	r	  S SK
Jr  \" S5      r\R                  " \" \S5      S5       " S S	\R                  5      5       r " S
 S\R                  5      r\S:X  a  \R&                  " 5         gg)    N)support)threading_helper)import_moduletermiosopenptyzneed os.openpty()c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS r\R(                  " \R,                  S:H  S5      S 5       rS rS rS rS rSrg)TestFunctions   c                 `   [         R                  " 5       u  U l        U l        U R	                  [         R
                  U R                  5        U R                  [        U R                  SSS95      U l        U R                  [        R                  " SSS95      nUR                  5       U l        g )Nwbr   )	buffering)moder   )osr   	master_fdfd
addCleanupcloseenterContextopenstreamtempfileTemporaryFilefilenobad_fd)selftmps     :/opt/python-3.13.8/usr/lib/python3.13/test/test_termios.pysetUpTestFunctions.setUp   su    "$**,$..1''TWWda(HI 6 6DA NOjjl    c                     U R                  [        R                  5       nU" U6   S S S 5        U R                  WR                  R
                  S   U5        g ! , (       d  f       N8= f)Nr   )assertRaisesr   errorassertEqual	exceptionargs)r   errnocallabler&   cms        r   assertRaisesTermiosError&TestFunctions.assertRaisesTermiosError   sJ    w}}-dO .**1-u5 .-s   A
A&c                    [         R                  U R                  5      nU R                  U[        5        U R                  [        U5      S5        [        S5       H  nU R                  X   [        5        M     Uu  p4pVpxn	U R                  U	[        5        U R                  [        U	5      [         R                  5        [        U	5       H  u  p*U[         R                  -  S:X  a@  U[         R                  :X  d  U[         R                  :X  a  U R                  U
[        5        M\  U R                  U
[        5        U R                  [        U
5      S5        M     U R                  [         R                  U R                  5      U5        g )N      r      )r   	tcgetattrr   assertIsInstancelistr$   lenrangeintNCCS	enumerateICANONVMINVTIMEbytesr   )r   attrsiiflagoflagcflaglflagispeedospeedccxs              r   test_tcgetattrTestFunctions.test_tcgetattr   s   !!$''*eT*UQ'qA!!%(C0 9>6eFBb$'R',,/bMDA'A-gll"a7==&8%%a-%%a/  Q+ " 	**4;;7?r    c                    U R                  [        R                  [        R                  U R
                  5        U R                  [        [        R                  S5        U R                  [        [        R                  SS-  5        U R                  [        [        R                  [        5       5        U R                  [        [        R                  5        g N     )r*   r'   ENOTTYr   r0   r   r"   
ValueErrorOverflowError	TypeErrorobjectr   s    r   test_tcgetattr_errors#TestFunctions.test_tcgetattr_errors/   s    %%ellG4E4Et{{S*g&7&7<-):):AtGD)W%6%6A)W%6%67r    c                    [         R                  U R                  5      n[         R                  U R                  [         R                  U5        [         R                  U R                  [         R
                  U5        [         R                  U R                  [         R                  U5        [         R                  U R                  [         R                  U5        g N)r   r0   r   	tcsetattrTCSANOW	TCSADRAIN	TCSAFLUSHr   )r   r<   s     r   test_tcsetattrTestFunctions.test_tcsetattr6   s    !!$''*$''7??E:$''7#4#4e<$''7#4#4e<$++w>r    c           
         [         R                  U R                  5      nU R                  [        [         R
                  U R                  [         R                  [        U5      5        U R                  [        [         R
                  U R                  [         R                  US S 5        U R                  [        [         R
                  U R                  [         R                  US/-   5        [        S5       H  nUS S  nSS-  X2'   U R                  [        [         R
                  U R                  [         R                  U5        [        5       X2'   U R                  [        [         R
                  U R                  [         R                  U5        M     U R                  [        [         R
                  U R                  [         R                  US S US   S S /-   5        U R                  [        [         R
                  U R                  [         R                  US S US   S/-   /-   5        [        [        US   5      5       GH;  nUS S  nUS   S S  US'   SS-  US   U'   U R                  [        [         R
                  U R                  [         R                  U5        [        5       US   U'   U R                  [        [         R
                  U R                  [         R                  U5        SUS   U'   U R                  [        [         R
                  U R                  [         R                  U5        SUS   U'   U R                  [        [         R
                  U R                  [         R                  U5        GM>     U R                  [        [         R
                  U R                  [         R                  [        5       5        U R                  [        [         R
                  U R                  [         R                  5        U R                  [        R                  [         R
                  U R                  SU5        U R                  [        [         R
                  U R                  SS-  U5        U R                  [        [         R
                  U R                  [        5       U5        U R                  [        R                  [         R
                  U R                   [         R                  U5        U R                  ["        [         R
                  S[         R                  U5        U R                  [        [         R
                  SS-  [         R                  U5        U R                  [        [         R
                  [        5       [         R                  U5        U R                  [        [         R
                  U R                  [         R                  5        g )	NrJ   r   r.   rK   rL       r    s     )r   r0   r   r"   rP   rW   rX   tupler4   rO   rQ   r3   r*   r'   EINVALrM   r   rN   )r   r<   r=   attrs2s       r   test_tcsetattr_errors#TestFunctions.test_tcsetattr_errors=   s   !!$''*)W%6%6RWX]R^_)W%6%6RWX[Y[R\])W%6%6RW[\Z]R]^qA1XF4FImW->->Z`aFIi):):DGGW__V\]  	)W%6%6RWX[Y[R\`efh`ijmkm`n_oRop)W%6%6RWX[Y[R\`efh`imrls`s_tRtus59~&A1XFAF2JtGF2JqMmW->->Z`a"HF2JqMi):):DGGW__V\]F2JqMi):):DGGW__V\]#F2JqMi):):DGGW__V\] ' 	)W%6%6RXRZ[)W%6%6Q%%ellG4E4EtwwPRTYZ-):):DGGQWeT)W%6%65Q%%ellG4E4Et{{T[TcTcejk*g&7&7W__eT-):):AtGW__V[\)W%6%6'//SXY)W%6%6Qr    c                 l    [         R                  U R                  S5        [         R                  U R                  S5        g ! [         R                   a\  nUR                  S   [
        R                  :X  a5  [        R                  R                  S5      (       a  U R                  S5        e S nAff = f)Nr/   r   )freebsdnetbsdzQtermios.tcsendbreak() is not supported with pseudo-terminals (?) on this platform)r   tcsendbreakr   r#   r&   r'   rM   sysplatform
startswithskipTestr   )r   excs     r   test_tcsendbreakTestFunctions.test_tcsendbreak`   s    	+ 	DKK+ }} 	xx{ell*s||/F/FG\/]/] K L		s    A B3AB..B3c                    U R                  [        [        R                  U R                  SS-  5        U R                  [
        [        R                  U R                  S5        U R                  [
        [        R                  U R                  [        5       5        U R                  [        R                  [        R                  U R                  S5        U R                  [        [        R                  SS5        U R                  [        [        R                  SS-  S5        U R                  [
        [        R                  [        5       S5        U R                  [
        [        R                  U R                  5        g )NrK   rL   g        r   rJ   )r"   rO   r   rg   r   rP   rQ   r*   r'   rM   r   rN   rR   s    r   test_tcsendbreak_errors%TestFunctions.test_tcsendbreak_errorsj   s    -)<)<dggq$wO)W%8%8$''3G)W%8%8$''68L%%ellG4G4GVWX*g&9&92qA-)<)<agqI)W%8%8&(AF)W%8%8$''Br    c                     [         R                  U R                  5        [         R                  U R                  5        g rV   )r   tcdrainr   r   rR   s    r   test_tcdrainTestFunctions.test_tcdraint   s"     $r    c                    U R                  [        R                  [        R                  U R
                  5        U R                  [        [        R                  S5        U R                  [        [        R                  SS-  5        U R                  [        [        R                  [        5       5        U R                  [        [        R                  5        g rI   )r*   r'   rM   r   rs   r   r"   rN   rO   rP   rQ   rR   s    r   test_tcdrain_errors!TestFunctions.test_tcdrain_errorsx   s|    %%ellGOOT[[Q*goor:-!T'B)W__fh?)W__5r    c                    [         R                  U R                  [         R                  5        [         R                  U R                  [         R                  5        [         R                  U R                  [         R
                  5        g rV   )r   tcflushr   TCIFLUSHTCOFLUSH	TCIOFLUSHrR   s    r   test_tcflushTestFunctions.test_tcflush   sJ    !1!12!1!12!2!23r    c                    U R                  [        R                  [        R                  U R
                  S5        U R                  [        [        R                  U R
                  SS-  5        U R                  [        [        R                  U R
                  [        5       5        U R                  [        R                  [        R                  U R                  [        R                  5        U R                  [        [        R                  S[        R                  5        U R                  [        [        R                  SS-  [        R                  5        U R                  [        [        R                  [        5       [        R                  5        U R                  [        [        R                  U R
                  5        g rI   )r*   r'   r`   r   rz   r   r"   rO   rP   rQ   rM   r   r{   rN   rR   s    r   test_tcflush_errors!TestFunctions.test_tcflush_errors   s   %%ellGOOTWWbQ-$''1d7K)W__dggvxH%%ellGOOT[[RYRbRbc*goor7;K;KL-!T'7CSCST)W__fh@P@PQ)W__dgg>r    c                    U R                   nU R                  n[        R                  S;   n[        R
                  " US5        U R                  [        R                  " US5      S5        U(       a%  [        R                  U[        R                  5        O$[        R                  U[        R                  5        U R                  [        R                  " US5      S5        U(       a%  [        R                  U[        R                  5        O$[        R                  U[        R                  5        [        R
                  " US5        U R                  [        R                  " US5      S5        g )N)linuxandroids   abcdefrK   s   abs   cds   ABCDEF   )r   r   rh   ri   r   writer$   readr   rz   r|   r{   )r   wfdrfdinbufs       r   "test_tcflush_clear_input_or_output0TestFunctions.test_tcflush_clear_input_or_output   s    ggnn  44
i a%0OOC!1!12 OOC!1!12a%0OOC!1!12 OOC!1!12
i d+Y7r    c                 t   [         R                  U R                  [         R                  5        [         R                  U R                  [         R                  5        [         R                  U R                  [         R
                  5        [         R                  U R                  [         R                  5        g rV   )r   tcflowr   TCOOFFTCOONTCIOFFTCIONrR   s    r   test_tcflowTestFunctions.test_tcflow   sZ    tww/tww.tww/tww.r    c                    U R                  [        R                  [        R                  U R
                  S5        U R                  [        [        R                  U R
                  SS-  5        U R                  [        [        R                  U R
                  [        5       5        U R                  [        R                  [        R                  U R                  [        R                  5        U R                  [        [        R                  S[        R                  5        U R                  [        [        R                  SS-  [        R                  5        U R                  [        [        R                  [        5       [        R                  5        U R                  [        [        R                  U R
                  5        g rI   )r*   r'   r`   r   r   r   r"   rO   rP   rQ   rM   r   r   rN   rR   s    r   test_tcflow_errors TestFunctions.test_tcflow_errors   s    %%ellGNNDGGRP-!T'J)W^^TWWfhG%%ellGNNDKKQXQ^Q^_*gnnb'--H-D'--P)W^^VXw}}M)W^^TWW=r    r   zonly works on Linuxc                   ^ ^^^ T R                   mT R                  n[        R                  " 5       m[        R                  " 5       mU UUU4S jn[        R
                  " [        R                  " US9/5         T R                  [        R                  " US5      S5          [        R                  T[        R                  5        TR                  5         T R                  TR                  S5      S5        [        R                  T[        R                   5        T R#                  TR                  [$        R&                  5      S5        T R                  [        R                  " US5      S	5        S S S 5        g ! TR                  5         f = f! [        R                  T[        R                   5        f = f! , (       d  f       g = f)
Nc                     > [         R                  " TS5        T R                  TR                  [        R
                  5      5        [         R                  " TS5        TR                  5         g )N   abc   def)r   r   
assertTruewaitr   SHORT_TIMEOUTset)r   r   write_finishedwrite_suspendeds   r   writerCTestFunctions.test_tcflow_suspend_and_resume_output.<locals>.writer   sH    HHS&!OOO001F1FGHHHS&! r    )target   r   g      ?zoutput was not suspendedzoutput was not resumedr   r   )r   r   	threadingEventr   start_threadsThreadr$   r   r   r   r   r   r   assertFalser   r   r   r   r   )r   r   r   r   r   r   s   `  @@@r   %test_tcflow_suspend_and_resume_output3TestFunctions.test_tcflow_suspend_and_resume_output   s>   ggnn#//+"*	! 	! ++Y-=-=V-L,MNRWWS!_f53*NN37#'')  !4!4S!9!;= sGMM2OON//0E0EF46RWWS$/8 ON $'') sGMM2 ONs7   9(F9#$E;1F8A:F9;FF&F66F99
Gc                 f   [         R                  U R                  5      nU R                  U[        5        U R                  [        U5      S5        U R                  US   [        5        U R                  US   [        5        U R                  [         R                  U R                  5      U5        g )NrK   r   r/   )	r   tcgetwinsizer   r1   r_   r$   r3   r5   r   r   sizes     r   test_tcgetwinsizeTestFunctions.test_tcgetwinsize   s    ##DGG,dE*TA&d1gs+d1gs+--dkk:DAr    c                    U R                  [        R                  [        R                  U R
                  5        U R                  [        [        R                  S5        U R                  [        [        R                  SS-  5        U R                  [        [        R                  [        5       5        U R                  [        [        R                  5        g rI   )r*   r'   rM   r   r   r   r"   rN   rO   rP   rQ   rR   s    r   test_tcgetwinsize_errors&TestFunctions.test_tcgetwinsize_errors   s    %%ellG4H4H$++V*g&:&:B?-)=)=q$wG)W%9%968D)W%9%9:r    c                    [         R                  U R                  5      n[         R                  U R                  U5        [         R                  U R                  [	        U5      5        [         R                  U R
                  U5        g rV   )r   r   r   tcsetwinsizer2   r   r   s     r   test_tcsetwinsizeTestFunctions.test_tcsetwinsize   sV    ##DGG,TWWd+TWWd4j1T[[$/r    c           
      "   [         R                  U R                  5      nU R                  [        [         R
                  U R                  US S 5        U R                  [        [         R
                  U R                  US-   5        U R                  [        [         R
                  U R                  [        5       5        U R                  [        [         R
                  U R                  US   SS-  45        U R                  [        [         R
                  U R                  US   [        US   5      45        U R                  [        [         R
                  U R                  US   [        5       45        U R                  [        [         R
                  U R                  SS-  US   45        U R                  [        [         R
                  U R                  [        US   5      US   45        U R                  [        [         R
                  U R                  [        5       US   45        U R                  [        R                  [         R
                  U R                  U5        U R                  [        [         R
                  SU5        U R                  [        [         R
                  SS-  U5        U R                  [        [         R
                  [        5       U5        U R                  [        [         R
                  U R                  5        g )NrJ   )r   r   rK   rL   r/   )r   r   r   r"   rP   r   rQ   rO   floatr*   r'   rM   r   rN   r   s     r   test_tcsetwinsize_errors&TestFunctions.test_tcsetwinsize_errors   s#   ##DGG,)W%9%9477D"IN)W%9%9477D4KP)W%9%9477FHM-)=)=twwaRSUYRYHZ[)W%9%9477T!WeTXYZT[nD]^)W%9%9477T!WfhDWX-)=)=twwDRVWXRYHZ[)W%9%9477U4PQ7^UYZ[U\D]^)W%9%9477VXtTUwDWX%%ellG4H4H$++W[\*g&:&:BE-)=)=q$wM)W%9%968TJ)W%9%9477Cr    )r   r   r   r   N)__name__
__module____qualname____firstlineno__r   r*   rF   rS   r[   rb   rm   rp   rt   rw   r~   r   r   r   r   unittest
skipUnlessrh   ri   r   r   r   r   r   __static_attributes__ r    r   r	   r	      s    #6
@$8?!RF,C%64
?82/> 02GH9 I96B;0Dr    r	   c                        \ rS rSrS rS rSrg)
TestModule   c                    U R                  [        R                  [        5        U R                  [        R                  [        5        U R                  [        R
                  [        5        U R                  [        R                  [        5        U R                  [        R                  [        5        U R                  [        R                  [        5        U R                  [        R                  [        5        U R                  [        R                  [        5        U R                  [        R                  [        5        U R                  [        R                  [        5        U R                  [        R                  [        5        U R                  [        R                  [        5        U R                  [        R                  [        5        U R                  [        R                   [        5        U R                  [        R"                  [        5        U R%                  [        R                  [        R"                  5        U R%                  [        R                   [        R"                  5        g rV   )r1   r   B0r5   B38400rX   rY   rZ   r{   r|   r}   r   r   r   r   r:   r9   r6   
assertLessrR   s    r   test_constantsTestModule.test_constants   sd   gjj#.gnnc2goos3g//5g//5g..4g..4g//5gnnc2gmmS1gnnc2gmmS1gmmS1gllC0gllC0w||4gll3r    c                     U R                  [        [        R                  [        5      5        U R                  [        [        R                  [        5      5        g rV   )r   
issubclassr   r#   	Exceptionr   OSErrorrR   s    r   test_exceptionTestModule.test_exception  s2    
7==)<=GMM7;<r    r   N)r   r   r   r   r   r   r   r   r    r   r   r      s    4&=r    r   __main__)r'   r   rh   r   r   r   testr   test.supportr   test.support.import_helperr   r   r   hasattrTestCaser	   r   r   mainr   r    r   <module>r      s     	 
     ) 4
	
" 
WR+-@AhDH%% hD BhDV="" =2 zMMO r    