+
    Bi+                     d   ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ]P                  '       g   ]P                  ! R4      h^ RIt^ RIt]P                  ! ] P                  R8H  R4       ! R R4      4       t ! R R	]]P                   4      t ! R
 R]]P                   4      t ! R R]4      t ! R R]]P                   4      t ! R R]]P                   4      t ! R R]4      t ! R R]]P                   4      t ! R R]]P                   4      t]R8X  d   ]P4                  ! 4        R# R# )    N)supportztest module requires subprocessposixztests requires a posix system.c                   X   a  ] tR t^t o R tR tR tRR ltR tRt	R t
R tR	 tR
tV tR# )TestFileIOSignalInterruptc                    R V n         R # N_processselfs   &+/usr/lib/python3.14/test/test_file_eintr.pysetUpTestFileIOSignalInterrupt.setUp   s	        c                    V P                   '       d<   V P                   P                  4       f    V P                   P                  4        R # R # R #   \         d     R # i ; ir   )r
   pollkillOSErrorr   s   &r   tearDown"TestFileIOSignalInterrupt.tearDown    sM    ===T]]//19""$ :=  s   A AAc                (    R V P                   ,          # )z=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           	        V P                   P                  4       f2   \        P                  ! R4        V P                   P	                  4        V'       d-   V P                   P                  4       w  rVW%,          pW6,          pV P                  RV: RVP                  4       : RVP                  4       : R24       R #   \
         d     L}i ; i)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   B> >CCc                   V P                  4       p\        P                  ! \        P                  R RRV,           R,           R,           V,           R,           R,           .\        P
                  \        P
                  \        P
                  R7      V n        V P                  P                  P                  \        R4      4      pVR8w  d   V P                  RVR	7       V P                  P                  P                  V4       ^ p. pV'       g   \        P                  ! V P                  P                  .RRR
4      w  p pV P                  P                  \        P                   4       V^,          pV^8  g   Ku  V P                  P#                  4        V P%                  R4       K  V P                  P                  P'                  4       pVR8w  d   V P                  RVR	7       V P                  P)                  RR7      w  rV P                  P*                  '       d2   V P                  RV P                  P*                  ,          WRR7       R# R# )z-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&   g?z,reader process failed to handle our signals.s   $
zwhile awaiting signal   
)inputzexited rc=%dF)r!   N )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                b    V P                  R V P                  P                  RRR7      R7       R# )   hello, world!r<   s   hello, world!
read_method_nameexpectedr>   r?   NrF   _READING_CODE_TEMPLATEformatr   s   &r   test_readline'TestFileIOSignalInterrupt.test_readline   s8    .%)%@%@%G%G)3!3 &H &5 	 	6r   c                f    V P                  R V P                  P                  RRR.R7      R7       R# )   hello
world!	readliness   hello
s   world!
rJ   rM   NrN   r   s   &r   test_readlines(TestFileIOSignalInterrupt.test_readlines   s=    .%)%@%@%G%G)4",k!: &H &< 	 	=r   c                    V P                  R V P                  P                  RRR7      R7       V P                  R V P                  P                  RRR7      R7       R# )rT   readall   hello
world!
rJ   rM   r5   NrN   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)   rF   rO   rQ   rV   r[   __static_attributes____classdictcell____classdict__s   @r   r   r      s?     ;6D7RE 6=6 6r   r   c                       ] tR t^tRtRtR# )CTestFileIOSignalInterrupt_ior/   Nr]   r^   r_   r`   r   ra   r/   r   r   rf   rf          Gr   rf   c                       ] tR t^tRtRtR# )PyTestFileIOSignalInterrupt_pyior/   Nrh   r/   r   r   rk   rk          Gr   rk   c                   ,   a  ] tR t^t o R tR tRtV tR# )TestBufferedIOSignalInterruptc                (    R V P                   ,          # )ziimport %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                b    V P                  R V P                  P                  RRR7      R7       R# )rT   r5   rZ   rJ   rM   NrN   r   s   &r   r[   *TestBufferedIOSignalInterrupt.test_readall   s8    .%)%@%@%G%G)/!3 &H &5 	 	6r   r/   N)r]   r^   r_   r`   r   r[   ra   rb   rc   s   @r   ro   ro      s     6 6r   ro   c                       ] tR t^tRtRtR# )CTestBufferedIOSignalInterruptrg   r/   Nrh   r/   r   r   ru   ru      ri   r   ru   c                       ] tR t^tRtRtR# )PyTestBufferedIOSignalInterruptrl   r/   Nrh   r/   r   r   rw   rw      rm   r   rw   c                   8   a  ] tR t^t o R tR tR tR tRtV t	R# )TestTextIOSignalInterruptc                (    R V P                   ,          # )zimport %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                b    V P                  R V P                  P                  RRR7      R7       R# )rI   r<   zhello, world!
rJ   rM   NrN   r   s   &r   rQ   'TestTextIOSignalInterrupt.test_readline   s8    .%)%@%@%G%G)3!2 &H &4 	 	5r   c                f    V P                  R V P                  P                  RRR.R7      R7       R# )s   hello
world!rU   zhello
zworld!
rJ   rM   NrN   r   s   &r   rV   (TestTextIOSignalInterrupt.test_readlines   s=    0%)%@%@%G%G)4"+Z!8 &H &: 	 	;r   c                b    V P                  R V P                  P                  RRR7      R7       R# )rT   r5   zhello
world!
rJ   rM   NrN   r   s   &r   r[   &TestTextIOSignalInterrupt.test_readall   s8    .%)%@%@%G%G)/!2 &H &4 	 	5r   r/   N)
r]   r^   r_   r`   r   rQ   rV   r[   ra   rb   rc   s   @r   ry   ry      s     5;5 5r   ry   c                       ] tR t^tRtRtR# )CTestTextIOSignalInterruptrg   r/   Nrh   r/   r   r   r   r      ri   r   r   c                       ] tR t^tRtRtR# )PyTestTextIOSignalInterruptrl   r/   Nrh   r/   r   r   r   r      rm   r   r   __main__)osr8   r:   r0   r2   r   unittesttestr   has_subprocess_supportSkipTestrg   rl   
skipUnlessnamer   TestCaserf   rk   ro   ru   rw   ry   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   