o
    HXīh/  ć                   @   s   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
 d
ZG dd deejZG dd deejZG dd dZG dd deejZG dd deejZedkr~e ”  dS dS )é    N)Śarray)Śproxy)Ś
gc_collect)ŚTESTFN)Ś	os_helper)Śwarnings_helper)ŚUserListc                   @   st   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd ZdS )ŚAutoFileTestsc                 C   s   |   td”| _d S )NŚwb)Śopenr   Śf©Śself© r   ś8/opt/python-3.10.19/usr/lib/python3.10/test/test_file.pyŚsetUp   s   zAutoFileTests.setUpc                 C   s   | j r| j  ”  t t” d S ©N)r   Ścloser   Śunlinkr   r   r   r   r   ŚtearDown   s   
zAutoFileTests.tearDownc                 C   sT   t | j}| d” |  | j ” | ” ” | j ”  d | _t  |  tt	|d” d S )Ns
   teststringŚtell)
r   r   ŚwriteŚassertEqualr   r   r   ŚassertRaisesŚReferenceErrorŚgetattr)r   Śpr   r   r   ŚtestWeakRefs   s   


zAutoFileTests.testWeakRefsc                 C   s   | j }|j |j |j d S r   )r   ŚnameŚmodeŚclosed©r   r   r   r   r   ŚtestAttributes%   s   
zAutoFileTests.testAttributesc                 C   sV   | j  d” | j  ”  tdd}|  td”| _ | j  |”}|  d| ” d | ” d S )Nó   12Śbó
   xxxxxxxxxxŚrb)	r   r   r   r   r   r   Śreadintor   Śtobytes)r   ŚaŚnr   r   r   ŚtestReadinto,   s   

zAutoFileTests.testReadintoc                 C   sJ   t dd}| j ”  | jtdd| _t| jdr#|  t| jj|” d S d S )Nr$   r%   zutf-8)Śencodingr'   )	r   r   r   r   r   Śhasattrr   Ś	TypeErrorr'   )r   r)   r   r   r   ŚtestReadinto_text5   s   

’zAutoFileTests.testReadinto_textc                 C   sJ   t ddg}| j |” | j ”  |  td”| _| j ” }|  |d” d S )Nó   1ó   2r&   r#   )r   r   Ś
writelinesr   r   r   Śreadr   )r   ŚlŚbufr   r   r   ŚtestWritelinesUserList=   s   

z$AutoFileTests.testWritelinesUserListc                 C   s   |   t| jjg d¢” d S ©N)é   é   é   ©r   r.   r   r2   r   r   r   r   ŚtestWritelinesIntegersF   s   z$AutoFileTests.testWritelinesIntegersc                 C   s"   t g d¢}|  t| jj|” d S r7   )r   r   r.   r   r2   )r   r4   r   r   r   ŚtestWritelinesIntegersUserListJ   s   z,AutoFileTests.testWritelinesIntegersUserListc                 C   s,   G dd d}|   t| jj| | g” d S )Nc                   @   s   e Zd ZdS )z8AutoFileTests.testWritelinesNonString.<locals>.NonStringN)Ś__name__Ś
__module__Ś__qualname__r   r   r   r   Ś	NonStringQ   s    rA   r;   )r   rA   r   r   r   ŚtestWritelinesNonStringO   s   
’z%AutoFileTests.testWritelinesNonStringc                 C   sd   | j }|  |jt” |  | ” ” |  |j” t|dr&|  t	t
f|jd” | ”  |  |j” d S )Nr'   Ś )r   r   r   r   ZassertFalseŚisattyr    r-   r   ŚOSErrorr.   r'   r   Ś
assertTruer!   r   r   r   Ś
testErrorsW   s   
zAutoFileTests.testErrorsc                 C   sĘ   ddddddddd	d
ddg ffdg}|  d” | j d d d ” |  | jj” |D ]\}}t| j|}| jt|g|¢R   q(|  | j d d d ”d ” zdd  W d S    |  | jjt	 
”  d ” Y d S )N)Śfilenor   )Śflushr   )rD   r   )Ś__next__r   ©r3   r   )r   )ó    ©Śreadliner   ©Ś	readlinesr   )Śseek)r   )r   r   r2   )Ś__iter__r   )Śtruncater   r8   r   )Śappendr   Ś__exit__rF   r    r   r   Ś
ValueErrorr   ŚsysŚexc_info)r   ŚmethodsŚ
methodnameŚargsŚmethodr   r   r   ŚtestMethodsb   s2   ō
zAutoFileTests.testMethodsc                 C   s   |   t| jj” d S r   )r   rE   r   r3   r   r   r   r   ŚtestReadWhenWriting   s   z!AutoFileTests.testReadWhenWritingN)r>   r?   r@   r   r   r   r"   r+   r/   r6   r<   r=   rB   rG   r]   r^   r   r   r   r   r	      s    
		"r	   c                   @   ó   e Zd ZejZdS )ŚCAutoFileTestsN©r>   r?   r@   Śior   r   r   r   r   r`      ó    
r`   c                   @   ó   e Zd ZeejZdS )ŚPyAutoFileTestsN©r>   r?   r@   ŚstaticmethodŚpyior   r   r   r   r   re      ó    re   c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )ŚOtherFileTestsc                 C   s   t  t” d S r   )r   r   r   r   r   r   r   r      s   zOtherFileTests.tearDownc              	   C   sX   |   td” ”  dD ]}z|   t|”}W n	 ty   Y q
w | ”  |  d| ” q
d S )Nr
   )rC   ZaUzwU+zU+z+UzrU+z%r is an invalid file mode)r   r   r   rV   Śfail)r   r   r   r   r   r   ŚtestModeStrings   s   ’łzOtherFileTests.testModeStringsc                 C   s    t jdkr
|  d” t j ” s|  d” |  ttf” t j d” W d    n1 s,w   Y  |  ttf” t j 	”  W d    d S 1 sIw   Y  d S )NZosf1V5zE sys.stdin.seek(-1) may crash the interpreter on OSF1. Test manually.z stdin must be a TTY in this testé’’’’)
rW   ŚplatformZskipTestŚstdinrD   r   ŚIOErrorrV   rQ   rS   r   r   r   r   Ś	testStdin   s   
’

’"’zOtherFileTests.testStdinc              
   C   s¦   d}z|   t|”}W n; tyE } z/|jd dkr3t|}t|v s%||vr:|  d| ” W Y d }~d S W Y d }~d S W Y d }~d S d }~ww | ”  |  d| ” d S )NZqwertyr   z&bad error message for invalid mode: %szno error for invalid mode: %s)r   r   rV   r[   Śstrrk   r   )r   Zbad_moder   ŚmsgŚsr   r   r   ŚtestBadModeArgumentÆ   s   żżz"OtherFileTests.testBadModeArgumentc              
   C   s²   z3|   td|”}| t| d”” | ”  | ”  |   td|”}t| ”  d”}| ”  | ”  W n t	yP } z|  
d|t|f ” W Y d }~nd }~ww |  ||” d S )Nr
   Śasciir&   z error setting buffer size %d: %s)r   r   r   rr   Śencoder   Śintr3   ŚdecoderE   rk   r   )r   rt   r   Śdrs   r   r   r   Ś_checkBufferSizeæ   s   "’zOtherFileTests._checkBufferSizec              	   C   s   dD ]}t j| dtd |  |” W d    n1 sw   Y  q|  td” |  d” W d    d S 1 s9w   Y  d S )N)rm   r   i   zline buffering)ŚmessageŚcategoryr8   )r   Zcheck_no_warningsŚRuntimeWarningr{   ZassertWarnsRegex)r   rt   r   r   r   ŚtestSetBufferSizeĶ   s   žż"’z OtherFileTests.testSetBufferSizec                 C   są   |   td”}zd| d” | ”  |   td”}| d”}|dkr&|  d| ” | ” dkr5|  d| ”  ” | ”  | ” dkrH|  d| ”  ” | ”  tj	 
t”}|dkrd|  d	| ” W | ”  d S W | ”  d S | ”  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   r3   rk   r   rS   ŚosŚpathŚgetsize)r   r   ŚdataŚsizer   r   r   ŚtestTruncateOnWindowsŪ   s(   

żz$OtherFileTests.testTruncateOnWindowsc                 C   s¦  d}d}|t | }g d¢}ddddtdd	ffg}|  td
”}| || ” | |” | ”  |D ]\}}|  td”}	|  t|	|” t	|	|}
|
|  |	 ”  q2|  td”}	t
|D ]}t|	 q\| d”}z|	 ” }W n ty|   |  d” Y nw ||kr|  d||f ” | d”}tddt | }z|	 |” W n ty­   |  d” Y nw | ” }||kræ|  d||f ” | d”}z	|	 t |”}W n tyŪ   |  d” Y nw ||kré|  d||f ” z|	 ” }W n tyż   |  d” Y nw ||kr|  d||f ” |	 ”  |  td”}	z7|	D ]}qz|	 ”  |	 |” |	 ”  |	 ”  W n ty?   |  d” Y nw W |	 ”  d S W |	 ”  d S |	 ”  w )Ni @  s   ham
)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   rK   rO   r'   r$   sd                                                                                                       r
   r&   r   zLreadline() after next() with supposedly empty iteration-buffer failed anywayzEreadline() after next() with empty buffer failed. Got %r, expected %ró    zLreadinto() after next() with supposedly empty iteration-buffer failed anywayzEreadinto() after next() with empty buffer failed. Got %r, expected %rzHread() after next() with supposedly empty iteration-buffer failed anywayzAread() after next() with empty buffer failed. Got %r, expected %rzMreadlines() after next() with supposedly empty iteration-buffer failed anywayzFreadlines() after next() with empty buffer failed. Got %r, expected %rz'read* failed after next() consumed file)Ślenr   r   r   r   r2   r   r   Śnextr   ŚrangeŚpoprN   rV   rk   r'   r(   r3   rP   )r   Z
dataoffsetZfillerZnchunksZ	testlinesrY   ZbagrZ   r[   r   ŚmethŚiZtestlineŚliner5   Ślinesr   r   r   ŚtestIteration÷   s   ’


	

’’
’’
’’’
’
’’žzOtherFileTests.testIterationN)r>   r?   r@   r   rl   rq   ru   r{   r   r   r   r   r   r   r   rj      s    rj   c                   @   r_   )ŚCOtherFileTestsNra   r   r   r   r   r   X  rc   r   c                   @   rd   )ŚPyOtherFileTestsNrf   r   r   r   r   r   [  ri   r   Ś__main__)rW   r   Zunittestr   Śweakrefr   rb   Z_pyiorh   Ztest.supportr   Ztest.support.os_helperr   r   r   Ścollectionsr   r	   ZTestCaser`   re   rj   r   r   r>   Śmainr   r   r   r   Ś<module>   s,    w K’