
    /hh!/                        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rS SKrS SK	J
r
  S SKJr  S SK	Jr  S SK	Jr  S SKJ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  \R2                  " 5         gg)    N)array)proxy)
gc_collect)TESTFN)	os_helper)warnings_helper)UserListc                   b    \ 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g)AutoFileTests   c                 :    U R                  [        S5      U l        g )Nwb)openr   fselfs    7/opt/python-3.13.8/usr/lib/python3.13/test/test_file.pysetUpAutoFileTests.setUp   s    64(    c                     U R                   (       a  U R                   R                  5         [        R                  " [        5        g N)r   closer   unlinkr   r   s    r   tearDownAutoFileTests.tearDown   s$    66FFLLN r   c                 N   [        U R                  5      nUR                  S5        U R                  U R                  R	                  5       UR	                  5       5        U R                  R                  5         S U l        [        5         U R                  [        [        US5        g )Ns
   teststringtell)
r   r   writeassertEqualr   r   r   assertRaisesReferenceErrorgetattr)r   ps     r   testWeakRefsAutoFileTests.testWeakRefs   sh    $&&M	1.'1f=r   c                 d    U R                   nUR                    UR                    UR                    g r   )r   namemodeclosedr   r   s     r   testAttributesAutoFileTests.testAttributes%   s     FF			r   c                 8   U R                   R                  S5        U R                   R                  5         [        SS5      nU R	                  [
        S5      U l         U R                   R                  U5      nU R                  SUR                  5       S U 5        g )N   12b
   xxxxxxxxxxrb)	r   r   r   r   r   r   readintor    tobytes)r   ans      r   testReadintoAutoFileTests.testReadinto,   sk    U#w64(FFOOA		BQ0r   c                    [        SS5      nU R                  R                  5         U R                  [        SS9U l        [        U R                  S5      (       a,  U R                  [        U R                  R                  U5        g g )Nr0   r1   zutf-8)encodingr3   )	r   r   r   r   r   hasattrr!   	TypeErrorr3   )r   r5   s     r   testReadinto_textAutoFileTests.testReadinto_text5   s_    #w6G4466:&&i!< 'r   c                    [        SS/5      nU R                  R                  U5        U R                  R                  5         U R	                  [
        S5      U l        U R                  R                  5       nU R                  US5        g )N   1   2r2   r/   )r	   r   
writelinesr   r   r   readr    )r   lbufs      r   testWritelinesUserList$AutoFileTests.testWritelinesUserList=   s`    dD\"!64(ffkkme$r   c                 ^    U R                  [        U R                  R                  / SQ5        g N)         r!   r<   r   rB   r   s    r   testWritelinesIntegers$AutoFileTests.testWritelinesIntegersF   s    )TVV%6%6	Br   c                 t    [        / SQ5      nU R                  [        U R                  R                  U5        g rI   )r	   r!   r<   r   rB   )r   rD   s     r   testWritelinesIntegersUserList,AutoFileTests.testWritelinesIntegersUserListJ   s(    W)TVV%6%6:r   c                      " S S5      nU R                  [        U R                  R                  U" 5       U" 5       /5        g )Nc                       \ rS rSrSrg)8AutoFileTests.testWritelinesNonString.<locals>.NonStringQ    N)__name__
__module____qualname____firstlineno____static_attributes__rW   r   r   	NonStringrU   Q   s    r   r]   rM   )r   r]   s     r   testWritelinesNonString%AutoFileTests.testWritelinesNonStringO   s6    	 	 	)TVV%6%6$;	4	6r   c                    U R                   nU R                  UR                  [        5        U R	                  UR                  5       5        U R	                  UR                  5        [        US5      (       a'  U R                  [        [        4UR                  S5        UR                  5         U R                  UR                  5        g )Nr3    )r   r    r(   r   assertFalseisattyr*   r;   r!   OSErrorr<   r3   r   
assertTruer+   s     r   
testErrorsAutoFileTests.testErrorsW   s    FF($"1j!!w	2AJJC		!r   c                 ,   SSSSSSSSS	S
SS/ 44S/nUR                  S5        U R                  R                  S S S 5        U R                  U R                  R                  5        U H3  u  p#[        U R                  U5      nU R                  " [        U/UQ76   M5     U R                  U R                  R                  S S S 5      S 5         SS-    g !   U R                  U R                  R                  " [        R                  " 5       6 S 5         g = f)N)filenorW   )flushrW   )rc   rW   )__next__rW   rC   rW   )r   )r   readlinerW   	readlinesrW   )seek)r   )r   rW   rB   )__iter__rW   )truncaterW   rJ   r   )appendr   __exit__re   r*   r#   r!   
ValueErrorr    sysexc_info)r   methods
methodnameargsmethods        r   testMethodsAutoFileTests.testMethodsb   s    ! !#$#$!$ 2%(# 	'( 	dD)& 'JTVVZ0Fj&848 !( 	tT:DA	EaC	ETVV__clln=tDs   C >Dc                 X    U R                  [        U R                  R                  5        g r   )r!   rd   r   rC   r   s    r   testReadWhenWriting!AutoFileTests.testReadWhenWriting   s    '466;;/r   )r   N)rX   rY   rZ   r[   r   r   r%   r,   r7   r=   rF   rN   rQ   r^   rf   r}   r   r\   rW   r   r   r   r      sF    )!
>1=%C;
6	" ED0r   r   c                   ,    \ rS rSr\R
                  rSrg)CAutoFileTests   rW   NrX   rY   rZ   r[   ior   r\   rW   r   r   r   r          77Dr   r   c                   8    \ rS rSr\" \R                  5      rSrg)PyAutoFileTests   rW   NrX   rY   rZ   r[   staticmethodpyior   r\   rW   r   r   r   r          		"Dr   r   c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)OtherFileTests   c                 8    [         R                  " [        5        g r   )r   r   r   r   s    r   r   OtherFileTests.tearDown   s     r   c                     U R                  [        S5      R                  5         S H>  n U R                  [        U5      nUR                  5         U R                  SU-  5        M@     g ! [         a     MP  f = f)Nr   )ra   aUzwU+zU+z+UzrU+z%r is an invalid file mode)r   r   r   failrv   )r   r)   r   s      r   testModeStringsOtherFileTests.testModeStrings   si    		&$%%'8D?IIfd+ 			6=> 9  s   A**
A87A8c                    [         R                  S:X  a  U R                  S5        [         R                  R	                  5       (       d  U R                  S5        U R                  [        [        45         [         R                  R                  S5        S S S 5        U R                  [        [        45         [         R                  R                  5         S S S 5        g ! , (       d  f       NQ= f! , (       d  f       g = f)Nosf1V5zE sys.stdin.seek(-1) may crash the interpreter on OSF1. Test manually.z stdin must be a TTY in this test)
rw   platformskipTeststdinrc   r!   IOErrorrv   rq   rs   r   s    r   	testStdinOtherFileTests.testStdin   s    <<8#MM"# yy!!MM<=45IINN2 645II  65 6555s   5 C 8C1 
C.1
C?c                 B   Sn U R                  [        U5      nUR                  5         U R                  SU-  5        g ! [         aU  nUR
                  S   S:w  a8  [        U5      n[        U;   d  X;  a  U R                  SU-  5         S nAg  S nAg  S nAg S nAff = f)Nqwertyzno error for invalid mode: %sr   z&bad error message for invalid mode: %s)r   r   r   r   rv   r{   str)r   bad_moder   msgss        r   testBadModeArgument"OtherFileTests.testBadModeArgument   s    	B		&(+A GGIII5@A  	Lxx{aHQ;("3IIFJKK #4  	Ls   ? 
B	ABBc                     U R                  [        SU5      nUR                  [        U5      R	                  S5      5        UR                  5         UR                  5         U R                  [        SU5      n[        UR                  5       R                  S5      5      nUR                  5         UR                  5         U R                  WU5        g ! [         a)  nU R                  SU[        U5      4-  5         S nANAS nAff = f)Nr   asciir2   z error setting buffer size %d: %s)r   r   r   r   encoder   intrC   decoderd   r   r    )r   r   r   dr   s        r   _checkBufferSizeOtherFileTests._checkBufferSize   s    
	J		&$*AGGCFMM'*+GGIGGI		&$*AAFFHOOG,-AGGIGGI 	A  	JII8As3x=HII	Js   B?C 
DDDc                 $   S H7  n[         R                  " U S[        S9   U R                  U5        S S S 5        M9     U R	                  [        S5         U R                  S5        S S S 5        g ! , (       d  f       M{  = f! , (       d  f       g = f)N)r   r   i   zline buffering)messagecategoryrJ   )r   check_no_warningsRuntimeWarningr   assertWarnsRegex)r   r   s     r   testSetBufferSize OtherFileTests.testSetBufferSize   s     A 2243C4BD %%a(D D  "">3CD!!!$ EDD D EDs   A/B/
A>	
Bc                    U R                  [        S5      n UR                  S5        UR                  5         U R                  [        S5      nUR	                  S5      nUS:w  a  U R                  SU-  5        UR                  5       S:w  a"  U R                  SUR                  5       -  5        UR                  5         UR                  5       S:w  a"  U R                  SUR                  5       -  5        UR                  5         [        R                  R                  [        5      nUS:w  a  U R                  S	U-  5        UR                  5         g ! UR                  5         f = f)
Nr   s   12345678901zrb+   s   12345z(Read on file opened for update failed %rzFile pos after read wrong %dz!File pos after ftruncate wrong %dz"File size after ftruncate wrong %d)r   r   r   r   rC   r   r   rs   ospathgetsize)r   r   datasizes       r   testTruncateOnWindows$OtherFileTests.testTruncateOnWindows   s     IIfd#	GGN#GGI		&'A66!9Dx		DtKLvvx1}		81668CDJJLvvx1}		=HIGGI77??6*Dqy		>EFGGIAGGIs   D+E E&c                    SnSnU[        U5      -  (       a   S5       eU[        U5      -  n/ SQnSSSS[        S	S
5      44/nU R                  [        S5      nUR	                  X#-  5        UR                  U5        UR                  5         U HV  u  pxU R                  [        S5      n	U R                  [        U	5      U5        [        X5      n
U
" U6   U	R                  5         MX     U R                  [        S5      n	[        U5       H  n[        U	5        M     UR                  S5      n U	R                  5       nWU:w  a  U R                  SU< SU< 35        UR                  S5      n[        S	S[        U5      -  5      n U	R                  U5        UR!                  5       nX:w  a  U R                  SU< SU< 35        UR                  S5      n U	R#                  [        U5      5      nX:w  a  U R                  SU< SU< 35         U	R%                  5       nWU:w  a  U R                  SU< SU< 35        U	R                  5         U R                  [        S5      n	 U	 H  nM      U	R                  5         U	R                  U5        U	R#                  5         U	R%                  5         U	R                  5         g ! [         a    U R                  S5         GNf = f! [         a    U R                  S5         GNkf = f! [         a    U R                  S5         GN3f = f! [         a    U R                  S5         GN&f = f! [         a    U R                  S5         Nf = f! U	R                  5         f = f)Ni @  s   ham
z*dataoffset must be multiple of len(filler))s   spam, spam and eggs
s   eggs, spam, ham and spam
s   saussages, spam, spam and eggs
s   spam, ham, spam and eggs
s(   spam, spam, spam, spam, spam, ham, spam
s   wonderful spaaaaaam.
rm   rl   ro   r3   r0   sd                                                                                                       r   r2   r   zLreadline() after next() with supposedly empty iteration-buffer failed anywayz6readline() after next() with empty buffer failed. Got z, expected     zLreadinto() after next() with supposedly empty iteration-buffer failed anywayz6readinto() after next() with empty buffer failed. Got zHread() after next() with supposedly empty iteration-buffer failed anywayz2read() after next() with empty buffer failed. Got zMreadlines() after next() with supposedly empty iteration-buffer failed anywayz7readlines() after next() with empty buffer failed. Got z'read* failed after next() consumed file)lenr   r   r   r   rB   r   r    nextr#   rangepoprn   rv   r   r3   r4   rC   rp   )r   
dataoffsetfillernchunks	testlinesry   bagrz   r{   r   methitestlinelinerE   liness                   r   testIterationOtherFileTests.testIteration   s6    
F+ 	98	9+F+
	 $\3DsH!5 78: ii%		&"#y!		 'J		&$'AT!Wf-1)D$KGGI !( IIfd#wAG  ==#	:::<D 8II9=xI J==#C3x=01	:JJsO {{}II9=xI J ==#	:66#h-(D II9=xI J	:KKME III9=xI J		 IIfd#	 E



3 GGIe  	:II 9 :	:  	:II 9 :	:  	:II 9 :	:  	:II 9 :	:$  E		CDE GGIss   /K K& L L* (	M- 2AM K#"K#&LLL'&L'*M	M	M*'M- )M**M- -M?rW   N)rX   rY   rZ   r[   r   r   r   r   r   r   r   r   r\   rW   r   r   r   r      s,    !
?! B %8_r   r   c                   ,    \ rS rSr\R
                  rSrg)COtherFileTestsiX  rW   Nr   rW   r   r   r   r   X  r   r   r   c                   8    \ rS rSr\" \R                  5      rSrg)PyOtherFileTestsi[  rW   Nr   rW   r   r   r   r   [  r   r   r   __main__)rw   r   unittestr   weakrefr   r   _pyior   test.supportr   test.support.os_helperr   r   r   collectionsr	   r   TestCaser   r   r   r   r   rX   mainrW   r   r   <module>r      s    
 	    	  # ) " (  u0 u0n]H$5$5 #mX%6%6 #H HTnh&7&7 #~x'8'8 # zMMO r   