
    daf!/                        d dl Z d dlZd dlZd dlmZ d dlmZ d dlZd dlZd dl	m
Z
 d dlmZ d dl	mZ d dl	mZ d dlmZ  G d	 d
      Z G d deej$                        Z G d deej$                        Z G d d      Z G d deej$                        Z G d deej$                        Zedk(  r ej2                          yy)    N)array)proxy)
gc_collect)TESTFN)	os_helper)warnings_helper)UserListc                   Z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)AutoFileTestsc                 :    | j                  t        d      | _        y )Nwb)openr   fselfs    )/root/Python-3.12.4/Lib/test/test_file.pysetUpzAutoFileTests.setUp   s    64(    c                     | j                   r| j                   j                          t        j                  t               y N)r   closer   unlinkr   r   s    r   tearDownzAutoFileTests.tearDown   s$    66FFLLN r   c                 N   t        | j                        }|j                  d       | j                  | j                  j	                         |j	                                | j                  j                          d | _        t                | j                  t        t        |d       y )Ns
   teststringtell)
r   r   writeassertEqualr   r   r   assertRaisesReferenceErrorgetattr)r   ps     r   testWeakRefszAutoFileTests.testWeakRefs   sh    $&&M	1.'1f=r   c                 d    | j                   }|j                   |j                   |j                   y r   )r   namemodeclosedr   r   s     r   testAttributeszAutoFileTests.testAttributes%   s     FF			r   c                 8   | j                   j                  d       | j                   j                          t        dd      }| j	                  t
        d      | _         | j                   j                  |      }| j                  d|j                         d |        y )N   12b
   xxxxxxxxxxrb)	r   r   r   r   r   r   readintor   tobytes)r   ans      r   testReadintozAutoFileTests.testReadinto,   sk    U#w64(FFOOA		BQ0r   c                    t        dd      }| j                  j                          | j                  t        d      | _        t        | j                  d      r,| j                  t        | j                  j                  |       y y )Nr+   r,   zutf-8)encodingr.   )	r   r   r   r   r   hasattrr   	TypeErrorr.   )r   r0   s     r   testReadinto_textzAutoFileTests.testReadinto_text5   s\    #w6G4466:&i!< 'r   c                    t        ddg      }| j                  j                  |       | j                  j                          | j	                  t
        d      | _        | j                  j                         }| j                  |d       y )N   1   2r-   r*   )r	   r   
writelinesr   r   r   readr   )r   lbufs      r   testWritelinesUserListz$AutoFileTests.testWritelinesUserList=   s`    dD\"!64(ffkkme$r   c                 ^    | j                  t        | j                  j                  g d       y N)         r   r6   r   r;   r   s    r   testWritelinesIntegersz$AutoFileTests.testWritelinesIntegersF   s    )TVV%6%6	Br   c                 t    t        g d      }| j                  t        | j                  j                  |       y rA   )r	   r   r6   r   r;   )r   r=   s     r   testWritelinesIntegersUserListz,AutoFileTests.testWritelinesIntegersUserListJ   s(    W)TVV%6%6:r   c                      G d d      }| j                  t        | j                  j                   |        |       g       y )Nc                       e Zd Zy)8AutoFileTests.testWritelinesNonString.<locals>.NonStringN)__name__
__module____qualname__ r   r   	NonStringrK   Q   s    r   rP   rE   )r   rP   s     r   testWritelinesNonStringz%AutoFileTests.testWritelinesNonStringO   s6    	 	 	)TVV%6%6$;	4	6r   c                    | j                   }| j                  |j                  t               | j	                  |j                                | j	                  |j                         t        |d      r'| j                  t        t        f|j                  d       |j                          | j                  |j                         y )Nr.    )r   r   r$   r   assertFalseisattyr&   r5   r   OSErrorr6   r.   r   
assertTruer'   s     r   
testErrorszAutoFileTests.testErrorsW   s    FF($"1j!w	2AJJC		!r   c                 (   ddddddddd	d
ddg ffdg}|j                  d       | j                  j                  d d d        | j                  | j                  j                         |D ]3  \  }}t        | j                  |      } | j                  t        |g|  5 | j                  | j                  j                  d d d       d        	 ddz   y #  | j                   | j                  j                  t        j                          d        Y y xY w)N)filenorO   )flushrO   )rU   rO   )__next__rO   r<   rO   )r   )r   readlinerO   	readlinesrO   )seek)r   )r   rO   r;   )__iter__rO   )truncaterO   rB   r   )appendr   __exit__rW   r&   r    r   
ValueErrorr   sysexc_info)r   methods
methodnameargsmethods        r   testMethodszAutoFileTests.testMethodsb   s   ! !#$#$!$ 2%(# 	'( 	dD)& ' 	9JTVVZ0FDj&848	9 	tT:DA	EaC	E_TVV__clln=tDs   C =Dc                 X    | j                  t        | j                  j                         y r   )r   rV   r   r<   r   s    r   testReadWhenWritingz!AutoFileTests.testReadWhenWriting   s    '466;;/r   N)rL   rM   rN   r   r   r"   r(   r2   r7   r?   rF   rH   rQ   rX   rn   rp   rO   r   r   r   r      sF    )!
>1=%C;
6	" ED0r   r   c                   $    e Zd Zej                  Zy)CAutoFileTestsNrL   rM   rN   ior   rO   r   r   rr   rr          77Dr   rr   c                   0    e Zd Z eej
                        Zy)PyAutoFileTestsNrL   rM   rN   staticmethodpyior   rO   r   r   rw   rw          		"Dr   rw   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
OtherFileTestsc                 6    t        j                  t               y r   )r   r   r   r   s    r   r   zOtherFileTests.tearDown   s     r   c                     | j                  t        d      j                          dD ]=  }	 | j                  t        |      }|j                          | j                  d|z         ? y # t        $ r Y Lw xY w)Nr   )rS   aUzwU+zU+z+UzrU+z%r is an invalid file mode)r   r   r   failrg   )r   r%   r   s      r   testModeStringszOtherFileTests.testModeStrings   sn    		&$%%'8 	?D?IIfd+ 			6=>	?  s   A((	A43A4c                    t         j                  dk(  r| j                  d       t         j                  j	                         s| j                  d       | j                  t        t        f      5  t         j                  j                  d       d d d        | j                  t        t        f      5  t         j                  j                          d d d        y # 1 sw Y   LxY w# 1 sw Y   y xY w)Nosf1V5zE sys.stdin.seek(-1) may crash the interpreter on OSF1. Test manually.z stdin must be a TTY in this test)
rh   platformskipTeststdinrU   r   IOErrorrg   rb   rd   r   s    r   	testStdinzOtherFileTests.testStdin   s    <<8#MM"# yy!MM<=45 	IINN2	45 	!II 	! 	!	 		! 	!s   / C2C&C#&C/c                 8   d}	 | j                  t        |      }|j                          | j                  d|z         y # t        $ rQ}|j
                  d   dk7  r5t        |      }t        |v s||vr| j                  d|z         Y d }~y Y d }~y Y d }~y d }~ww xY w)Nqwertyzno error for invalid mode: %sr   z&bad error message for invalid mode: %s)r   r   r   r   rg   rl   str)r   bad_moder   msgss        r   testBadModeArgumentz"OtherFileTests.testBadModeArgument   s    	B		&(+A GGIII5@A  	Lxx{aHQ;(!"3IIFJKK #4  	Ls   ? 	B=BBc                    	 | j                  t        d|      }|j                  t        |      j	                  d             |j                          |j                          | j                  t        d|      }t        |j                         j                  d            }|j                          |j                          | j                  |       y # t        $ r)}| j                  d|t        |      fz         Y d }~@d }~ww xY w)Nr   asciir-   z error setting buffer size %d: %s)r   r   r   r   encoder   intr<   decoderV   r   r   )r   r   r   dr   s        r   _checkBufferSizez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                    dD ]8  }t        j                  | dt              5  | j                  |       d d d        : | j	                  t        d      5  | j                  d       d d d        y # 1 sw Y   uxY w# 1 sw Y   y xY w)N)r   r   i   zline buffering)messagecategoryrB   )r   check_no_warningsRuntimeWarningr   assertWarnsRegex)r   r   s     r   testSetBufferSizez OtherFileTests.testSetBufferSize   s      	)A 2243C4BD ) %%a() )	) "">3CD 	%!!!$	% 	%) )	% 	%s   A/A;/A8	;Bc                    | j                  t        d      }	 |j                  d       |j                          | j                  t        d      }|j	                  d      }|dk7  r| j                  d|z         |j                         dk7  r"| j                  d|j                         z         |j                          |j                         dk7  r"| j                  d|j                         z         |j                          t        j                  j                  t              }|dk7  r| j                  d	|z         |j                          y # |j                          w xY w)
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   r<   r   r   rd   ospathgetsize)r   r   datasizes       r   testTruncateOnWindowsz$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                    d}d}|t        |      z  rJ d       |t        |      z  }g d}ddddt        d	d
      ffg}| j                  t        d      }|j	                  ||z         |j                  |       |j                          |D ]W  \  }}| j                  t        d      }	| j                  t        |	      |       t        |	|      }
 |
|  |	j                          Y | j                  t        d      }	t        |      D ]  }t        |	        |j                  d      }	 |	j                         }|k7  r| j                  d|d|       |j                  d      }t        d	dt        |      z        }	 |	j                  |       |j!                         }||k7  r| j                  d|d|       |j                  d      }	 |	j#                  t        |            }||k7  r| j                  d|d|       	 |	j%                         }|k7  r| j                  d|d|       |	j                          | j                  t        d      }		 |	D ]  } 	 |	j                          |	j                  |       |	j#                          |	j%                          |	j                          y # t        $ r | j                  d       Y w xY w# t        $ r | j                  d       Y `w xY w# t        $ r | j                  d       Y )w xY w# t        $ r | j                  d       Y w xY w# t        $ r | j                  d       Y w xY w# |	j                          w xY w)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.
r^   r]   r`   r.   r+   sd                                                                                                       r   r-   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   r;   r   r   nextr    rangepopr_   rg   r   r.   r/   r<   ra   )r   
dataoffsetfillernchunks	testlinesrj   bagrk   rl   r   methitestlineliner>   liness                   r   testIterationzOtherFileTests.testIteration   sO    
F+ 	98	9+F+
	 $\3DsH!5 78: ii%		&7"#y!		 ' 	J		&$'AT!Wf-1j)D$KGGI	 IIfd#w 	AG	==#	:::<D 8II9=xI J==#C3x=01	:JJsO {{}8II9=xI J ==#	:66#h-(D 8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   )J2 ?K K4 L M  AL6 2KKK10K14LLL32L36MM MM M(N)rL   rM   rN   r   r   r   r   r   r   r   r   rO   r   r   r}   r}      s,    !
?! B %8_r   r}   c                   $    e Zd Zej                  Zy)COtherFileTestsNrs   rO   r   r   r   r   X  ru   r   r   c                   0    e Zd Z eej
                        Zy)PyOtherFileTestsNrx   rO   r   r   r   r   [  r{   r   r   __main__)rh   r   unittestr   weakrefr   rt   _pyiorz   test.supportr   test.support.os_helperr   r   r   collectionsr	   r   TestCaserr   rw   r}   r   r   rL   mainrO   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HMMO r   