a
    äze‡O  ã                   @   s  d dl Z d dlZ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m	Z	 d dl
mZmZmZmZmZmZmZ d dlmZ d dlZd dl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dd„ Zedkre ¡  dS )é    N)Úarray)Úproxy©Úwraps)ÚTESTFNÚTESTFN_UNICODEÚcheck_warningsÚmake_bad_fdÚcpython_onlyÚ	swap_attrÚ
gc_collect)ÚUserListc                   @   sz  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d„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Ze ejd)kd*¡d+d,„ ƒZd-d.„ Zd/d0„ Zed1d2„ ƒZed3d4„ ƒZed5d6„ ƒZ ed7d8„ ƒZ!ed9d:„ ƒZ"ed;d<„ ƒZ#ed=d>„ ƒZ$ed?d@„ ƒZ%edAdB„ ƒZ&edCdD„ ƒZ'dEdF„ Z(edGdH„ ƒZ)edIdJ„ ƒZ*edKdL„ ƒZ+dMS )NÚAutoFileTestsc                 C   s   |   td¡| _d S ©NÚw)ÚFileIOr   Úf©Úself© r   ú&/usr/lib/python3.9/test/test_fileio.pyÚsetUp   s    zAutoFileTests.setUpc                 C   s   | j r| j  ¡  t t¡ d S ©N)r   ÚcloseÚosÚremover   r   r   r   r   ÚtearDown   s    
zAutoFileTests.tearDownc                 C   s\   t | jƒ}| ttdƒƒ¡ |  | j ¡ | ¡ ¡ | j ¡  d | _tƒ  |  	t
t|d¡ d S )Né
   Útell)r   r   ÚwriteÚbytesÚrangeÚassertEqualr   r   r   ÚassertRaisesÚReferenceErrorÚgetattr)r   Úpr   r   r   ÚtestWeakRefs   s    

zAutoFileTests.testWeakRefsc                 C   sÆ   | j  ttdƒƒ¡ |  | j  ¡ d¡ | j  d¡ |  | j  ¡ d¡ | j  d¡ |  | j  ¡ d¡ | j  dd¡ |  | j  ¡ d¡ | j  dd¡ |  | j  ¡ d¡ | j  dd¡ |  | j  ¡ d¡ d S )	Né   r   r   é   é   é   éûÿÿÿé   )r   r   r    r!   r"   r   Úseekr   r   r   r   ÚtestSeekTell)   s    zAutoFileTests.testSeekTellc                 C   sF   | j }|  |jd¡ |  |jd¡ dD ]}|  ttft||d¡ q&d S )NÚwbF)ÚmodeÚclosedZoops)r   r"   r1   r2   r#   ÚAttributeErrorÚ	TypeErrorÚsetattr)r   r   Úattrr   r   r   ÚtestAttributes7   s    
ÿzAutoFileTests.testAttributesc                 C   s@   t j}ttdƒr,t | j ¡ ¡}t|d|ƒ}|  | jj	|¡ d S )NÚfstatÚ
st_blksize)
ÚioÚDEFAULT_BUFFER_SIZEÚhasattrr   r8   r   Úfilenor%   r"   Ú_blksize)r   ZblksizeZfstr   r   r   ÚtestBlksizeC   s
    
zAutoFileTests.testBlksizec                 C   sx   | j  tg d¢ƒ¡ | j  ¡  tdƒ}|  td¡}| |¡}W d   ƒ n1 sR0    Y  |  |d¡ |  |d¡ d S )N©r*   r-   r   éÿ   ó   abcdefghÚró    ÿefghé   )	r   r   r    r   Ú	bytearrayr   r   Úreadintor"   )r   Zbar   Únr   r   r   ÚtestReadintoByteArrayM   s    
(z#AutoFileTests.testReadintoByteArrayc                 C   sè   | j  tg d¢ƒ¡ | j  ¡  ttdƒƒ}|  td¡}| |¡}W d   ƒ n1 sV0    Y  |  	|d¡ |  	|d¡ ttdƒƒj
dddgd}|  td¡}| |¡}W d   ƒ n1 s¾0    Y  |  	t|ƒd¡ |  	|d¡ d S )	Nr@   rB   rC   rD   rE   ÚHr-   )Úshape)r   r   r    r   Ú
memoryviewrF   r   r   rG   r"   Úcast)r   Úmr   rH   r   r   r   Ú_testReadintoMemoryviewW   s    
((z%AutoFileTests._testReadintoMemoryviewc                 C   sF  | j  tg d¢ƒ¡ | j  ¡  tddƒ}|  td¡}| |¡}W d   ƒ n1 sT0    Y  |  |tdg d¢ƒ¡ |  |d¡ tddƒ}|  td¡}| |¡}W d   ƒ n1 s¶0    Y  |  |tdg d¢ƒ¡ |  |d¡ td	dƒ}|  td¡}| |¡}W d   ƒ n1 s0    Y  |  |td	d
ƒ¡ |  |d¡ d S )Nr@   ÚBrB   rC   )r*   r-   r   rA   ée   éf   ég   éh   rE   Úb)r*   r-   r   éÿÿÿÿrQ   rR   rS   rT   ÚIrD   )	r   r   r    r   r   r   r   rG   r"   )r   Úar   rH   r   r   r   Ú_testReadintoArrayg   s"    

(
(
*z AutoFileTests._testReadintoArrayc                 C   sF   ddg}| j  |¡ | j  ¡  |  td¡| _ | j  ¡ }|  |d¡ d S ©Ns   123s   456Úrbs   123456)r   Ú
writelinesr   r   r   Úreadr"   ©r   ÚlÚbufr   r   r   ÚtestWritelinesList}   s    

z AutoFileTests.testWritelinesListc                 C   sJ   t ddgƒ}| j |¡ | j ¡  |  td¡| _| j ¡ }|  |d¡ d S rZ   )r   r   r\   r   r   r   r]   r"   r^   r   r   r   ÚtestWritelinesUserList…   s    

z$AutoFileTests.testWritelinesUserListc                 C   s>   |   t| jjg d¢¡ |   t| jjd ¡ |   t| jjd¡ d S )N)r*   r-   é   Úabc)r#   r4   r   r\   r   r   r   r   ÚtestWritelinesError   s    z!AutoFileTests.testWritelinesErrorc                 C   st   | j  d¡ | j  ¡  |  td¡| _ |  | j  d ¡d¡ | j  d¡ |  | j  d ¡d¡ |  | j  	d ¡ddg¡ d S )Ns
   hi
bye
abcrC   r   s   hi
s   bye
ó   abc)
r   r   r   r   r   r"   r]   r.   ÚreadlineÚ	readlinesr   r   r   r   Útest_none_args’   s    
zAutoFileTests.test_none_argsc                 C   s   |   t| jjd¡ d S )NzHello!)r#   r4   r   r   r   r   r   r   Útest_reject›   s    zAutoFileTests.test_rejectc                 C   s|   |   t| jƒd| j| jj| jjf ¡ | j`|   t| jƒd| j| j ¡ | jjf ¡ | j ¡  |   t| jƒd| jf ¡ d S )Nz(<%s.FileIO name=%r mode=%r closefd=True>z&<%s.FileIO fd=%r mode=%r closefd=True>z<%s.FileIO [closed]>)r"   Úreprr   Ú
modulenameÚnamer1   r=   r   r   r   r   r   ÚtestReprž   s    ÿÿÿÿ

ÿzAutoFileTests.testReprc              	   C   s~   t  tt j¡}z^| j|ddd0}|  t|ƒd| j|j|j	f ¡ W d   ƒ n1 sV0    Y  W t  
|¡ nt  
|¡ 0 d S )NrC   F)Úclosefdz)<%s.FileIO name=%r mode=%r closefd=False>)r   Úopenr   ÚO_RDONLYr   r"   rk   rl   rm   r1   r   )r   Úfdr   r   r   r   ÚtestReprNoCloseFDª   s    
ÿÿ$zAutoFileTests.testReprNoCloseFDc              	   C   sh   t | jd| jƒD |  t¡ t| jƒ W d   ƒ n1 s<0    Y  W d   ƒ n1 sZ0    Y  d S )Nrm   )r   r   r#   ÚRuntimeErrorrk   r   r   r   r   ÚtestRecursiveRepr´   s    zAutoFileTests.testRecursiveReprc                 C   s„   | j }|  | ¡ ¡ |  |j¡ |  t|jd¡ | ¡  |  |j¡ |  	t
d¡}|  t|jd¡ |  |j¡ | ¡  |  |j¡ d S )Nr   rC   Ú )r   ZassertFalseÚisattyr2   r#   Ú
ValueErrorr]   r   Ú
assertTruer   r   r4   rG   ©r   r   r   r   r   Ú
testErrorsº   s    zAutoFileTests.testErrorsc                 C   sÒ   g d¢}| j  ¡  |  | j j¡ |D ]}t| j |ƒ}|  t|¡ q$|  t| j j¡ |  t| j jt	dƒ¡ |  t| j j
¡ |  t| j j
d¡ |  t| j j¡ |  t| j jd¡ |  t| j j¡ |  t| j jd¡ d S )N)r=   rw   ÚseekableÚreadableÚwritabler]   Úreadallrg   rh   r   ÚtruncateÚflushr*   r   ó    )r   r   ry   r2   r%   r#   rx   r4   rG   rF   r.   r   r\   )r   ÚmethodsZ
methodnameÚmethodr   r   r   ÚtestMethodsÈ   s    
zAutoFileTests.testMethodsc              
   C   s`   z|   dd¡ W n@ tyP } z(|  |jd¡ |  |jd¡ W Y d }~nd }~0 0 |  d¡ d S )NÚ.rC   r   úShould have raised OSError)r   ÚOSErrorÚassertNotEqualÚerrnor"   ÚfilenameÚfail)r   Úer   r   r   ÚtestOpendirÞ   s    $zAutoFileTests.testOpendirÚntz&test only works on a POSIX-like systemc                 C   sd   t  dt j¡}|  t¡}|  |d¡ W d   ƒ n1 s:0    Y  t  |¡ |  |jj	t	j
¡ d S )Nr†   rC   )r   rp   rq   r#   rˆ   r   r   r"   Ú	exceptionrŠ   ZEISDIR)r   rr   Úcmr   r   r   ÚtestOpenDirFDê   s
    *
zAutoFileTests.testOpenDirFDc                    s   t ˆ ƒ‡ fdd„ƒ}|S )Nc                    sn   | j }t | ¡ ¡ z0ˆ | |ƒ W z| j  ¡  W qj tyB   Y qj0 n$z| j  ¡  W n tyf   Y n0 0 d S r   )r   r   r   r=   rˆ   rz   ©Úfuncr   r   Úwrapperõ   s    ýz'AutoFileTests.ClosedFD.<locals>.wrapperr   ©r”   r•   r   r“   r   ÚClosedFDô   s    zAutoFileTests.ClosedFDc                    s   t ˆ ƒ‡ fdd„ƒ}|S )Nc                    s²   | j }t | ¡ ¡ ztzˆ | |ƒ W n4 tyX } z|  |jtj¡ W Y d }~nd }~0 0 |  d¡ W z| j  ¡  W q® ty†   Y q®0 n$z| j  ¡  W n tyª   Y n0 0 d S )Nr‡   )	r   r   r   r=   rˆ   r"   rŠ   ÚEBADFrŒ   )r   r   r   r“   r   r   r•     s    &ýz-AutoFileTests.ClosedFDRaises.<locals>.wrapperr   r–   r   r“   r   ÚClosedFDRaises  s    zAutoFileTests.ClosedFDRaisesc                 C   s   |  ¡  d S r   )r   rz   r   r   r   ÚtestErrnoOnClose  s    zAutoFileTests.testErrnoOnClosec                 C   s   |  d¡ d S )Nó   a)r   rz   r   r   r   ÚtestErrnoOnClosedWrite  s    z$AutoFileTests.testErrnoOnClosedWritec                 C   s   |  d¡ d S ©Nr   )r.   rz   r   r   r   ÚtestErrnoOnClosedSeek  s    z#AutoFileTests.testErrnoOnClosedSeekc                 C   s   |  ¡  d S r   )r   rz   r   r   r   ÚtestErrnoOnClosedTell"  s    z#AutoFileTests.testErrnoOnClosedTellc                 C   s   |  d¡ d S r   )r€   rz   r   r   r   ÚtestErrnoOnClosedTruncate&  s    z'AutoFileTests.testErrnoOnClosedTruncatec                 C   s   |  ¡  d S r   )r|   rz   r   r   r   ÚtestErrnoOnClosedSeekable*  s    z'AutoFileTests.testErrnoOnClosedSeekablec                 C   s   |  ¡  d S r   )r}   rz   r   r   r   ÚtestErrnoOnClosedReadable.  s    z'AutoFileTests.testErrnoOnClosedReadablec                 C   s   |  ¡  d S r   )r~   rz   r   r   r   ÚtestErrnoOnClosedWritable2  s    z'AutoFileTests.testErrnoOnClosedWritablec                 C   s   |  ¡  d S r   )r=   rz   r   r   r   ÚtestErrnoOnClosedFileno6  s    z%AutoFileTests.testErrnoOnClosedFilenoc                 C   s   |   | ¡ d¡ d S )NF)r"   rw   rz   r   r   r   ÚtestErrnoOnClosedIsatty:  s    z%AutoFileTests.testErrnoOnClosedIsattyc                 C   sF   z| j  ¡  W n ty    Y n0 |  td¡| _ t | j  ¡ ¡ | j S )NrC   )r   r   rˆ   r   r   r   r=   r   r   r   r   ÚReopenForRead>  s    zAutoFileTests.ReopenForReadc                 C   s   |   ¡ }| d¡ d S )Nr*   )r¦   r]   rz   r   r   r   ÚtestErrnoOnClosedReadG  s    z#AutoFileTests.testErrnoOnClosedReadc                 C   s   |   ¡ }| ¡  d S r   )r¦   r   rz   r   r   r   ÚtestErrnoOnClosedReadallL  s    z&AutoFileTests.testErrnoOnClosedReadallc                 C   s    |   ¡ }tddƒ}| |¡ d S )NrU   s
   xxxxxxxxxx)r¦   r   rG   )r   r   rX   r   r   r   ÚtestErrnoOnClosedReadintoQ  s    
z'AutoFileTests.testErrnoOnClosedReadintoN),Ú__name__Ú
__module__Ú__qualname__r   r   r'   r/   r7   r?   rI   rO   rY   ra   rb   re   ri   rj   rn   rs   ru   r{   r…   rŽ   ÚunittestÚskipIfr   rm   r’   r—   r™   rš   rœ   rž   rŸ   r    r¡   r¢   r£   r¤   r¥   r¦   r§   r¨   r©   r   r   r   r   r      sf   


	

	









	

r   c                   @   s   e Zd ZejZdZdS )ÚCAutoFileTestsÚ_ioN)rª   r«   r¬   r°   r   rl   r   r   r   r   r¯   W  s   r¯   c                   @   s   e Zd ZejZdZdS )ÚPyAutoFileTestsÚ_pyioN)rª   r«   r¬   r²   r   rl   r   r   r   r   r±   [  s   r±   c                   @   s˜   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Ze 	e
 ¡ dkd¡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 )"ÚOtherFileTestsc              	   C   sž  zŠ|   td¡}|  | ¡ d¡ |  | ¡ d¡ |  | ¡ d¡ | ¡  |   td¡}|  | ¡ d¡ |  | ¡ d¡ |  | ¡ d¡ | ¡  |   td¡}|  | ¡ d¡ |  | ¡ d¡ |  | ¡ d¡ |  | ¡ d¡ | ¡  tj	dkr€z|   dd¡}W n t
y   Y np0 |  | ¡ d¡ |  | ¡ d¡ tj	d	krhd
tj	vrhtj	 d¡sh|  | ¡ d¡ |  | ¡ d¡ | ¡  W t t¡ nt t¡ 0 d S )Nr   FTrC   za+Úwin32z/dev/ttyrX   ÚdarwinZbsd)ZsunosZaix)r   r   r"   r}   r~   r|   r   rw   ÚsysÚplatformrˆ   Ú
startswithr   Úunlinkrz   r   r   r   Ú	testAblesb  sB    ÿ
þ
zOtherFileTests.testAblesc              	   C   sH   dD ]>}z|   t|¡}W n ty*   Y q0 | ¡  |  d| ¡ qd S )N)rv   ZaUzwU+ÚrwÚrtz%r is an invalid file mode)r   r   rx   r   rŒ   )r   r1   r   r   r   r   ÚtestInvalidModeStringsŒ  s    z%OtherFileTests.testInvalidModeStringsc              	   C   s„   zfdD ]F}|   t|d ¡"}|  |j|d ¡ W d   ƒ q1 sB0    Y  qW tj t¡r€t t¡ ntj t¡r~t t¡ 0 d S )N))r   r0   )r0   r0   )zwb+úrb+)zw+br¾   )rX   Úab)r¿   r¿   )úab+rÀ   )za+brÀ   )rC   r[   )r[   r[   )r¾   r¾   )zr+br¾   r   r*   )r   r   r"   r1   r   ÚpathÚexistsr¹   )r   Zmodesr   r   r   r   ÚtestModeStrings—  s    4ÿzOtherFileTests.testModeStringsc                 C   s&   |   ttƒd¡}| ¡  t t¡ d S r   )r   Ústrr   r   r   r¹   rz   r   r   r   ÚtestUnicodeOpen¦  s    zOtherFileTests.testUnicodeOpenc              	   C   s¨   zt  d¡}W n  ty.   |  dt  ¡ Y n0 |  |d¡}zZ| d¡ | ¡  tt dƒ }|  | 	¡ d¡ W d   ƒ n1 s€0    Y  W t
 t ¡ nt
 t ¡ 0 d S )NÚasciizcould not encode %r to asciir   rf   r[   )r   ÚencodeÚUnicodeEncodeErrorÚskipTestr   r   r   rp   r"   r]   r   r¹   ©r   Úfnr   r   r   r   ÚtestBytesOpen¬  s    
0zOtherFileTests.testBytesOpenúutf-8z%test only works for utf-8 filesystemsc              	   C   s¨   zt  d¡}W n  ty.   |  dt  ¡ Y n0 |  |d¡}zZ| d¡ | ¡  tt dƒ }|  | 	¡ d¡ W d   ƒ n1 s€0    Y  W t
 t ¡ nt
 t ¡ 0 d S )NrÍ   zcould not encode %r to utf-8r   rf   r[   )r   rÇ   rÈ   rÉ   r   r   r   rp   r"   r]   r   r¹   rÊ   r   r   r   ÚtestUtf8BytesOpen»  s    
0z OtherFileTests.testUtf8BytesOpenc                 C   s2   d}|   t| j|d¡ |   t| jt|dƒd¡ d S )Nzfoo barr   rÆ   )r#   rx   r   r    )r   Zfn_with_NULr   r   r   ÚtestConstructorHandlesNULCharsÌ  s    z-OtherFileTests.testConstructorHandlesNULCharsc                 C   sJ   |   t| jd¡ |   t| jtƒ ¡ tjdkrFdd l}|   t|jtƒ ¡ d S )Niöÿÿÿr´   r   )	r#   rx   r   rˆ   r	   r¶   r·   ÚmsvcrtZget_osfhandle)r   rÐ   r   r   r   ÚtestInvalidFdÑ  s
    
zOtherFileTests.testInvalidFdc              
   C   sˆ   d}z|   t|¡}W nX tyl } z@|jd dkrXt|ƒ}t|v sJ||vrX|  d| ¡ W Y d }~n d }~0 0 | ¡  |  d| ¡ d S )NZqwertyr   z&bad error message for invalid mode: %szno error for invalid mode: %s)r   r   rx   ÚargsrÄ   rŒ   r   )r   Zbad_moder   ÚmsgÚsr   r   r   ÚtestBadModeArgumentØ  s    $z"OtherFileTests.testBadModeArgumentc                 C   sž   |   td¡}| tttdƒƒƒ¡ |  | ¡ d¡ | d¡ |  | ¡ d¡ |  | 	dt
j¡d¡ | d¡ |  | ¡ d¡ |  | 	dt
j¡d¡ | ¡  d S )Nr   r   r)   r   r+   )r   r   r   r    rF   r!   r"   r   r€   r.   r:   ÚSEEK_ENDr   rz   r   r   r   ÚtestTruncateè  s    

zOtherFileTests.testTruncatec              	      s2   ‡ fdd„}z|ƒ  W t  t¡ nt  t¡ 0 d S )Nc                     sÌ   ˆ   td¡} |  ttdƒƒ¡ |  ¡  ˆ   td¡} |  d¡}|ttdƒƒkrZˆ  d| ¡ |  ¡ dkrxˆ  d|  ¡  ¡ |  	¡  |  ¡ dkržˆ  d|  ¡  ¡ |  ¡  t
j t¡}|dkrÈˆ  d| ¡ d S )	Nr   é   zr+r)   z(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]   rŒ   r   r€   r   rÁ   Úgetsize)r   ÚdataÚsizer   r   r   Ú	bug801631õ  s     
z7OtherFileTests.testTruncateOnWindows.<locals>.bug801631)r   r¹   r   )r   rÜ   r   r   r   ÚtestTruncateOnWindowsô  s    z$OtherFileTests.testTruncateOnWindowsc                 C   s¢   z~t tdƒ}| d¡ | ¡  t tdƒ}| d¡ | ¡  t tdƒ}| ¡ }| ¡  |  |d¡ W zt t¡ W qž   Y qž0 nzt t¡ W n   Y n0 0 d S )Nr0   s   spamr¿   s   eggsr[   s   spameggs)rp   r   r   r   r]   r"   r   r¹   )r   r   Údr   r   r   Ú
testAppend  s&    




ýzOtherFileTests.testAppendc                 C   s   |   t| jddd¡ d S )NÚ1r   )r#   r4   r   r   r   r   r   ÚtestInvalidInit#  s    zOtherFileTests.testInvalidInitc                 C   sz   t dd\}|  |jg ¡ |  t| jg ¡ |  |jg ¡ |  t| jdd¡ |  |jg ¡ W d   ƒ n1 sl0    Y  d S )NT©Úquietz/some/invalid/namer¼   )r   r"   Úwarningsr#   r4   r   rx   )r   r   r   r   r   ÚtestWarnings&  s    zOtherFileTests.testWarningsc                    sR   G dd„ dt ƒ‰ G ‡ ‡fdd„d| jƒ‰t ttj¡}|  ˆ ˆ|¡ t |¡ d S )Nc                   @   s   e Zd ZdS )z=OtherFileTests.testUnclosedFDOnException.<locals>.MyExceptionN)rª   r«   r¬   r   r   r   r   ÚMyException/  r‚   ræ   c                       s    e Zd Z‡‡‡ fdd„Z‡  ZS )z:OtherFileTests.testUnclosedFDOnException.<locals>.MyFileIOc                    s"   |dkrˆ dƒ‚t ˆ| ƒ ||¡S )Nrm   zblocked setting name)ÚsuperÚ__setattr__)r   rm   Úvalue)ræ   ÚMyFileIOÚ	__class__r   r   rè   1  s    zFOtherFileTests.testUnclosedFDOnException.<locals>.MyFileIO.__setattr__)rª   r«   r¬   rè   Ú__classcell__r   ©ræ   rê   )rë   r   rê   0  s   rê   )Ú	Exceptionr   r   rp   Ú__file__rq   r#   r   )r   rr   r   rí   r   ÚtestUnclosedFDOnException.  s
    z(OtherFileTests.testUnclosedFDOnExceptionN)rª   r«   r¬   rº   r½   rÃ   rÅ   rÌ   r­   r®   r¶   ÚgetfilesystemencodingrÎ   rÏ   rÑ   rÕ   r×   rÝ   rß   rá   rå   rð   r   r   r   r   r³   `  s$   *ÿ
r³   c                   @   s*   e Zd ZejZdZedd„ ƒZdd„ ZdS )ÚCOtherFileTestsr°   c                 C   s8   dd l }|  t| j|jd ¡ |  t| j|jd ¡ d S )Nr   r*   )Ú	_testcapir#   r4   r   ZINT_MAXZINT_MIN)r   ró   r   r   r   ÚtestInvalidFd_overflow>  s    z&COtherFileTests.testInvalidFd_overflowc                 C   sv   |   td¡}| ¡ }W d   ƒ n1 s*0    Y  t t¡}| ¡ }W d   ƒ n1 s\0    Y  |  ||¡ d S )Nr[   )r   rï   r]   r°   Ú	open_coder"   )r   r   ÚexpectedÚactualr   r   r   Útest_open_codeE  s
    &&zCOtherFileTests.test_open_codeN)	rª   r«   r¬   r°   r   rl   r
   rô   rø   r   r   r   r   rò   :  s
   
rò   c                   @   s   e Zd ZejZdZdd„ ZdS )ÚPyOtherFileTestsr²   c              	   C   s®   |   td¡}| ¡ }W d   ƒ n1 s*0    Y  tdd\}t t¡}| ¡ }W d   ƒ n1 sh0    Y  |  ||¡ |  |jg ¡ W d   ƒ n1 s 0    Y  d S )Nr[   Trâ   )	r   rï   r]   r   r²   Z_open_code_with_warningr"   r‰   rä   )r   r   rö   r   r÷   r   r   r   rø   S  s    &&zPyOtherFileTests.test_open_codeN)rª   r«   r¬   r²   r   rl   rø   r   r   r   r   rù   O  s   rù   c                   C   s   t j t¡rt  t¡ d S r   )r   rÁ   rÂ   r   r¹   r   r   r   r   ÚtearDownModule`  s    rú   Ú__main__) r¶   r   r:   rŠ   r­   r   Úweakrefr   Ú	functoolsr   Ztest.supportr   r   r   r	   r
   r   r   Úcollectionsr   r°   r²   r   ZTestCaser¯   r±   r³   rò   rù   rú   rª   Úmainr   r   r   r   Ú<module>   s.   $  E [
