
    /hh*                     \   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rS SKJr  \R                  (       d  \R                  " S5      eS SKrS SKr\R                  " \ R                  S:H  S5       " S S5      5       r " S S	\\R                   5      r " S
 S\\R                   5      r " S S\5      r " S S\\R                   5      r " S S\\R                   5      r " S S\5      r " S S\\R                   5      r " S S\\R                   5      r\S:X  a  \R4                  " 5         gg)    N)supportztest module requires subprocessposixztests requires a posix system.c                   P    \ rS rSrS rS rS r  SS jrS rSr	S r
S	 rS
 rSrg)TestFileIOSignalInterrupt   c                     S U l         g N_processselfs    =/opt/python-3.13.8/usr/lib/python3.13/test/test_file_eintr.pysetUpTestFileIOSignalInterrupt.setUp   s	        c                     U R                   (       a8  U R                   R                  5       c   U R                   R                  5         g g g ! [         a     g f = fr	   )r   pollkillOSErrorr   s    r   tearDown"TestFileIOSignalInterrupt.tearDown    sK    ==T]]//19""$ :=  s   A 
AAc                      SU R                   -  $ )Nz=import %s as io ;infile = io.FileIO(sys.stdin.fileno(), "rb")modnamer   s    r   _generate_infile_setup_code5TestFileIOSignalInterrupt._generate_infile_setup_code'   s    
? 	r   c           	         U R                   R                  5       c1  [        R                  " S5         U R                   R	                  5         U(       a$  U R                   R                  5       u  pVX%-  nX6-  nU R                  SU< SUR                  5       < SUR                  5       < S35        g ! [
         a     Nrf = f)Ng?zError from IO process z
:
STDOUT:
zSTDERR:

)	r   r   timesleep	terminater   communicatefaildecode)r   whystdoutstderrr"   
stdout_end
stderr_ends          r   fail_with_process_info0TestFileIOSignalInterrupt.fail_with_process_info0   s     =='JJsO'') %)]]%>%>%@"J F F		: 	;  s   B3 3
C ?C c                 F   U R                  5       n[        R                  " [        R                  SSSU-   S-   S-   U-   S-   S-   /[        R
                  [        R
                  [        R
                  S9U l        U R                  R                  R                  [        S5      5      nUS:w  a  U R                  S	US
9  U R                  R                  R                  U5        Sn/ nU(       d  [        R                  " U R                  R                  /SSS5      u  n  nU R                  R                  [        R                   5        US-  nUS:  a+  U R                  R#                  5         U R%                  S5        U(       d  M  U R                  R                  R'                  5       nUS:w  a  U R                  SUS
9  U R                  R)                  SS9u  pU R                  R*                  (       a)  U R                  SU R                  R*                  -  XSS9  g g )Nz-uz-czXimport signal, sys ;signal.signal(signal.SIGINT, lambda s, f: sys.stderr.write("$\n")) ;z ;z"sys.stderr.write("Worm Sign!\n") ;zinfile.close())stdinr&   r'   s   Worm Sign!
zwhile awaiting a sign)r'   r    g?      z,reader process failed to handle our signals.s   $
zwhile awaiting signal   
)inputzexited rc=%dF)r"   )r   
subprocessPopensys
executablePIPEr   r'   readlenr*   r-   writeselectsend_signalsignalSIGINTr   r#   readliner"   
returncode)r   data_to_writeread_and_verify_codeinfile_setup_code	worm_signsignals_sentrlist_signal_liner&   r'   s              r   _test_reading'TestFileIOSignalInterrupt._test_readingK   s    !<<> #((tJ %% (,, 7	7
 ((
 +// "" !oojoo!( MM((--c/.BC	'''(?/8 ( :!!-0  --)=)=(>BMKE1aMM%%fmm4ALc!""$		HI % mm**335& ''(?/: ( < 222?==##''"T]]%=%== ( 7 $r   zgot = infile.{read_method_name}() ;expected = {expected!r} ;assert got == expected, ("{read_method_name} returned wrong data.\n""got data %r\nexpected %r" % (got, expected))c                 T    U R                  SU R                  R                  SSS9S9  g )N   hello, world!r?   s   hello, world!
read_method_nameexpectedrA   rB   rI   _READING_CODE_TEMPLATEformatr   s    r   test_readline'TestFileIOSignalInterrupt.test_readline   s8    .%)%@%@%G%G)3!3 &H &5 	 	6r   c                 X    U R                  SU R                  R                  SSS/S9S9  g )N   hello
world!	readliness   hello
s   world!
rM   rP   rQ   r   s    r   test_readlines(TestFileIOSignalInterrupt.test_readlines   s=    .%)%@%@%G%G)4",k!: &H &< 	 	=r   c                     U R                  SU R                  R                  SSS9S9  U R                  SU R                  R                  SSS9S9  g )NrW   readall   hello
world!
rM   rP   r8   rQ   r   s    r   test_readall&TestFileIOSignalInterrupt.test_readall   sp    .%)%@%@%G%G)2!3 &H &5 	 	6 	.%)%@%@%G%G)/!3 &H &5 	 	6r   r
   N)r   r   T)__name__
__module____qualname____firstlineno__r   r   r   r*   rI   rR   rT   rY   r^   __static_attributes__r.   r   r   r   r      s@     >A+/;6D7RE 6=6r   r   c                       \ rS rSrSrSrg)CTestFileIOSignalInterrupt   _ior.   Nr`   ra   rb   rc   r   rd   r.   r   r   rf   rf          Gr   rf   c                       \ rS rSrSrSrg)PyTestFileIOSignalInterrupt   _pyior.   Nri   r.   r   r   rl   rl          Gr   rl   c                        \ rS rSrS rS rSrg)TestBufferedIOSignalInterrupt   c                      SU R                   -  $ )Nziimport %s as io ;infile = io.open(sys.stdin.fileno(), "rb") ;assert isinstance(infile, io.BufferedReader)r   r   s    r   r   9TestBufferedIOSignalInterrupt._generate_infile_setup_code   s    ? 	r   c                 T    U R                  SU R                  R                  SSS9S9  g )NrW   r8   r]   rM   rP   rQ   r   s    r   r^   *TestBufferedIOSignalInterrupt.test_readall   s8    .%)%@%@%G%G)/!3 &H &5 	 	6r   r.   N)r`   ra   rb   rc   r   r^   rd   r.   r   r   rq   rq      s    6r   rq   c                       \ rS rSrSrSrg)CTestBufferedIOSignalInterrupt   rh   r.   Nri   r.   r   r   rx   rx      rj   r   rx   c                       \ rS rSrSrSrg)PyTestBufferedIOSignalInterrupt   rn   r.   Nri   r.   r   r   r{   r{      ro   r   r{   c                   ,    \ rS rSrS rS rS rS rSrg)TestTextIOSignalInterrupt   c                      SU R                   -  $ )Nzimport %s as io ;infile = io.open(sys.stdin.fileno(), encoding="utf-8", newline=None) ;assert isinstance(infile, io.TextIOWrapper)r   r   s    r   r   5TestTextIOSignalInterrupt._generate_infile_setup_code   s    >  	r   c                 T    U R                  SU R                  R                  SSS9S9  g )NrL   r?   zhello, world!
rM   rP   rQ   r   s    r   rT   'TestTextIOSignalInterrupt.test_readline   s8    .%)%@%@%G%G)3!2 &H &4 	 	5r   c                 X    U R                  SU R                  R                  SSS/S9S9  g )Ns   hello
world!rX   zhello
zworld!
rM   rP   rQ   r   s    r   rY   (TestTextIOSignalInterrupt.test_readlines   s=    0%)%@%@%G%G)4"+Z!8 &H &: 	 	;r   c                 T    U R                  SU R                  R                  SSS9S9  g )NrW   r8   zhello
world!
rM   rP   rQ   r   s    r   r^   &TestTextIOSignalInterrupt.test_readall   s8    .%)%@%@%G%G)/!2 &H &4 	 	5r   r.   N)	r`   ra   rb   rc   r   rT   rY   r^   rd   r.   r   r   r~   r~      s    5;5r   r~   c                       \ rS rSrSrSrg)CTestTextIOSignalInterrupt   rh   r.   Nri   r.   r   r   r   r      rj   r   r   c                       \ rS rSrSrSrg)PyTestTextIOSignalInterrupt   rn   r.   Nri   r.   r   r   r   r      ro   r   r   __main__)osr;   r=   r3   r5   r   unittesttestr   has_subprocess_supportSkipTestrh   rn   
skipUnlessnamer   TestCaserf   rl   rq   rx   r{   r~   r   r   r`   mainr.   r   r   <module>r      s&   
    
   %%


=
>>  	RWW')IJ[6 [6 K[6|!:H<M<M ";X=N=N 6$= 6%BHDUDU &CXEVEV 5 9 5@!:H<M<M ";X=N=N  zMMO r   