403Webshell
Server IP : 118.27.122.248  /  Your IP : 216.73.216.124
Web Server : Apache
System : Linux web0264.sh.tyo1 4.18.0-553.79.1.lve.el7h.x86_64 #1 SMP Wed Oct 15 16:34:46 UTC 2025 x86_64
User : c9415830 ( 11735)
PHP Version : 8.4.17
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/alt/python36/lib64/python3.6/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/alt/python36/lib64/python3.6/test/__pycache__/test_io.cpython-36.opt-2.pyc
3

�
�^}`�@s6ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
mZmZddlmZmZddlmZddlmZmZddlmZddlZddlZddlZyddlZWnek
r�dZYnXyddl Z Wnek
�rdd�Z!YnXd	d�Z!Gd
d�de j"�Z#dd
�Z$Gdd�d�Z%Gdd�de%ej&�Z'Gdd�de%ej&�Z(Gdd�de%�Z)Gdd�de)ej&�Z*Gdd�de)ej&�Z+Gdd�de)�Z,Gdd�de,ej&�Z-Gdd�de,ej&�Z.Gd d!�d!e)�Z/Gd"d#�d#e/ej&�Z0Gd$d%�d%e/ej&�Z1Gd&d'�d'�Z2Gd(d)�d)e2ej3�Z4Gd*d+�d+e2ej3�Z5Gd,d-�d-�Z6Gd.d/�d/e6ej3�Z7Gd0d1�d1e6ej3�Z8Gd2d3�d3�Z9Gd4d5�d5e9ej&�Z:Gd6d7�d7e9ej&�Z;Gd8d9�d9e
j<�Z=Gd:d;�d;e=�Z>Gd<d=�d=e=�Z?ej@Gd>d?�d?e
j<��ZAGd@dA�dA�ZBGdBdC�dC�ZCGdDdE�dEe
j<eB�ZDGdFdG�dGeDeC�ZEGdHdI�dIeD�ZFGdJdK�dKe
j<eB�ZGGdLdM�dMeGeC�ZHGdNdO�dOeG�ZIGdPdQ�dQe
j<�ZJGdRdS�dSeJ�ZKGdTdU�dUeJ�ZLGdVdW�dWeDeG�ZMGdXdY�dYeMeC�ZNGdZd[�d[eM�ZOGd\d]�d]ejP�ZQejReQjS�Gd^d_�d_e
j<�ZTGd`da�dae
j<�ZUGdbdc�dcej3�ZVddde�ZWGdfdg�dgeU�ZXGdhdi�dieU�ZYGdjdk�dke
j<�ZZGdldm�dmeZ�Z[Gdndo�doeZ�Z\Gdpdq�dqe
j<�Z]Gdrds�dse]�Z^Gdtdu�due]�Z_e
j`ejadvkdw�Gdxdy�dye
j<��ZbGdzd{�d{eb�ZcGd|d}�d}eb�Zdd~d�Zeefd�k�r2e
jg�dS)��N)�deque�UserList)�cycle�count)�support)�assert_python_ok�run_python_until_end)�FakePathcOstjdt||��S)N�b)�array�bytes)�pos�kw�r�,/opt/alt/python36/lib64/python3.6/test_io.py�	byteslike4srcOs:t||�}t�}tj|t|��|t|�jd�dd�<|S)N�B)r�EmptyStruct�ctypesZresize�len�
memoryview�cast)r
r�data�objrrrr7s

c@seZdZdS)rN)�__name__�
__module__�__qualname__rrrrr>src	Cs ttddd��}|jSQRXdS)N�rzlatin-1)�encoding)�open�__file__�_CHUNK_SIZE)�frrr�_default_chunk_sizeAsr#c@sbeZdZffdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zddd�ZdS)�MockRawIOWithoutReadcCs t|�|_g|_d|_d|_dS)Nr)�list�_read_stack�_write_stack�_reads�_extraneous_reads)�selfZ
read_stackrrr�__init__Ks
zMockRawIOWithoutRead.__init__cCs|jjt|��t|�S)N)r'�appendrr)r*r
rrr�writeQszMockRawIOWithoutRead.writecCsdS)NTr)r*rrr�writableUszMockRawIOWithoutRead.writablecCsdS)N�*r)r*rrr�filenoXszMockRawIOWithoutRead.filenocCsdS)NTr)r*rrr�readable[szMockRawIOWithoutRead.readablecCsdS)NTr)r*rrr�seekable^szMockRawIOWithoutRead.seekablecCsdS)Nrr)r*r
�whencerrr�seekaszMockRawIOWithoutRead.seekcCsdS)Nrr)r*rrr�telldszMockRawIOWithoutRead.tellcCs�|jd7_t|�}y|jd}Wn"tk
rF|jd7_dSX|dkr\|jd=dSt|�}t|�|kr�|jd=||d|�<|S|d|�|dd�<||d�|jd<|SdS)N�r)r(rr&�
IndexErrorr))r*�bufZmax_lenr�nrrr�readintogs$zMockRawIOWithoutRead.readintoNcCs|S)Nr)r*r
rrr�truncate|szMockRawIOWithoutRead.truncate)N)
rrrr+r-r.r0r1r2r4r5r:r;rrrrr$Gsr$c@seZdZdS)�CMockRawIOWithoutReadN)rrrrrrrr<sr<c@seZdZdS)�PyMockRawIOWithoutReadN)rrrrrrrr=�sr=c@seZdZddd�ZdS)�	MockRawIONc	Cs8|jd7_y|jjd�S|jd7_dSdS)Nr6r�)r(r&�popr))r*r9rrr�read�szMockRawIO.read)N)rrrrArrrrr>�sr>c@seZdZdS)�
CMockRawION)rrrrrrrrB�srBc@seZdZdS)�PyMockRawION)rrrrrrrrC�srCcsFeZdZ�fdd�Zd�fdd�	Zdd�Zdd	�Z�fd
d�Z�ZS)
�MisbehavedRawIOcst�j|�dS)N�)�superr-)r*r
)�	__class__rrr-�szMisbehavedRawIO.writeNcst�j|�dS)NrE)rFrA)r*r9)rGrrrA�szMisbehavedRawIO.readcCsdS)N�{i����r)r*r
r3rrrr4�szMisbehavedRawIO.seekcCsdS)Ni�i8���r)r*rrrr5�szMisbehavedRawIO.tellcst�j|�t|�dS)N�)rFr:r)r*r8)rGrrr:�szMisbehavedRawIO.readinto)N)	rrrr-rAr4r5r:�
__classcell__rr)rGrrD�s
rDc@seZdZdS)�CMisbehavedRawION)rrrrrrrrK�srKc@seZdZdS)�PyMisbehavedRawION)rrrrrrrrL�srLc@seZdZdZdd�ZdS)�CloseFailureIOrcCs|jsd|_t�dS)Nr6)�closed�OSError)r*rrr�close�szCloseFailureIO.closeN)rrrrNrPrrrrrM�srMc@seZdZdS)�CCloseFailureION)rrrrrrrrQ�srQc@seZdZdS)�PyCloseFailureION)rrrrrrrrR�srRcs6eZdZ�fdd�Zd�fdd�	Z�fdd�Z�ZS)	�
MockFileIOcsg|_t�j|�dS)N)�read_historyrFr+)r*r)rGrrr+�szMockFileIO.__init__Ncs,t�j|�}|jj|dkrdnt|��|S)N)rFrArTr,r)r*r9�res)rGrrrA�szMockFileIO.readcst�j|�}|jj|�|S)N)rFr:rTr,)r*r
rU)rGrrr:�szMockFileIO.readinto)N)rrrr+rAr:rJrr)rGrrS�srSc@seZdZdS)�CMockFileION)rrrrrrrrV�srVc@seZdZdS)�PyMockFileION)rrrrrrrrW�srWc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�MockUnseekableIOcCsdS)NFr)r*rrrr2�szMockUnseekableIO.seekablecGs|jd��dS)Nznot seekable)�UnsupportedOperation)r*�argsrrrr4�szMockUnseekableIO.seekcGs|jd��dS)Nznot seekable)rY)r*rZrrrr5�szMockUnseekableIO.tellcGs|jd��dS)Nznot seekable)rY)r*rZrrrr;�szMockUnseekableIO.truncateN)rrrr2r4r5r;rrrrrX�srXc@seZdZejZdS)�CMockUnseekableION)rrr�iorYrrrrr[�sr[c@seZdZejZdS)�PyMockUnseekableION)rrr�pyiorYrrrrr]�sr]c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�MockNonBlockWriterIOcCsg|_d|_dS)N)r'�
_blocker_char)r*rrrr+�szMockNonBlockWriterIO.__init__cCsdj|j�}g|jdd�<|S)Nr?)�joinr')r*�srrr�pop_written�sz MockNonBlockWriterIO.pop_writtencCs
||_dS)N)r`)r*�charrrr�block_on�szMockNonBlockWriterIO.block_oncCsdS)NTr)r*rrrr1�szMockNonBlockWriterIO.readablecCsdS)NTr)r*rrrr2�szMockNonBlockWriterIO.seekablecCsdS)NTr)r*rrrr.�szMockNonBlockWriterIO.writablecCsvt|�}d}|jrby|j|j�}Wntk
r6Yn,X|dkrX|jj|d|��|Sd|_dS|jj|�t|�S)Nr6r���)rr`�index�
ValueErrorr'r,r)r*r
r9rrrr-szMockNonBlockWriterIO.writeN)
rrrr+rcrer1r2r.r-rrrrr_�sr_c@seZdZejZdS)�CMockNonBlockWriterION)rrrr\�BlockingIOErrorrrrrrisric@seZdZejZdS)�PyMockNonBlockWriterION)rrrr^rjrrrrrksrkc@s�eZdZdd�Zdd�Zdd�Zdcdd	�ZddZdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Zd<d=�Z d>d?�Z!d@dA�Z"dBdC�Z#dDdE�Z$dFdG�Z%dHdI�Z&dJdK�Z'dLdM�Z(dNdO�Z)dPdQ�Z*dRdS�Z+dTdU�Z,dVdW�Z-dXdY�Z.dZd[�Z/d\d]�Z0d^d_�Z1d`da�Z2dbS)e�IOTestcCstjtj�dS)N)r�unlink�TESTFN)r*rrr�setUpszIOTest.setUpcCstjtj�dS)N)rrmrn)r*rrr�tearDown!szIOTest.tearDowncCsD|j|jd�d�|jd�|j|j�d�|jd�|j|jd�d�|j|jd�d�|j|jd�d�|j|j�d�|j|jdd�d�|j|j�d�td�}|j|j|�d�d|dd�<|j|jd�d�|j|jd
�d�|j|jdd�d�|j|j�d�|j|jd
�d
�|j|j�d�|jt|jd�dS)Nsblah.rIrsHello.�r6s	 world


�	�*�hrE�
�grfs	*********rf)�assertEqualr-r;r5r4�	bytearray�assertRaises�	TypeError)r*r"�bufferrrr�	write_ops$s(

zIOTest.write_opsFcCs�|jd�}|j|d�t|�}|j|j|�d�|jt|�d�td�}|j|j|�d�|jt|�d�|j|dd�d�|j|jd�d�|j|jd�d�|j|jd	�d
�|j|jtd��d�|j|jdd�d�|j|jd�d
�|j|jd�d
�|j|jt��d�|j|jdd	�d�|j|jd�d�|j|j�d�|j	t
|jd�|�r�|jd�|j|j�d�|jd�|j|j�d�|j|j�d
�|jd�td�}|j|j|�d�|jt|�d�dS)NrIshellos worlrEsd
r�shello world
r6r?�xrqsworld�
gsworld
i����i����)rArwrr:rrxrr4r5ryrz�	readinto1)r*r"Zbufferedrrrr�read_ops<s>



zIOTest.read_opsrE�cCsRy|j|j|j�|j�Wn"ttfk
r<|jd�YnX|j|j�|j�|j|jd�d�|j|j�|jd�|j|jdd�|jd�|j|j�|jd�|j|j�|jd�|j|jdd�|jd�|j|j|jd�|jd�|j|j�|jd�|j|jdd�|jd�|j|jd	d�|j�|j|j	d�d�dS)
Nzno largefile supportsxxx�r6rErr~rfrf)
rwr4�LARGE�
OverflowErrorrh�skipTestr5r-r;rA)r*r"rrr�large_file_ops_s zIOTest.large_file_opsc!Csh|j}xBdD]:}|jtj|��"}|j||j�|j||j�WdQRXqW|jtjddd��"}|j||j�|j||j�WdQRX|jtjddd��(}|j||jd�|j||jdg�WdQRX|jtjd��(}|j||jd�|j||jdg�WdQRX|jtjd��P}|j||jd	�|j||jd
g�|j||j	d|j
�|j||j	d
|j�WdQRXdS)N�w�wbr)�	buffering�rbsblahsblah
rZblahzblah
r6)r�r�rf)rYrrrnryrA�readliner-�
writelinesr4�SEEK_CUR�SEEK_END)r*�exc�mode�fprrr�test_invalid_operationsss&
zIOTest.test_invalid_operationscs��fdd�}�fdd�}�fdd�}�fdd�}�fd	d
�}�fdd�}�fd
d�}�fdd�}|df|df|df|df|df|df|df|df�jdf�jdff
}	�x�|	D�]�\}
}|
|kr�tr�q��j|
����|
����}d|k}
�j|j�|
�d|k}�j|j�|�t|�j��r"d}n$t|�j	�j
f��r<d}n
�jd�d|k�rZ|j�n�j
t|j�|
�r�|jd�|j�n�j
t|jd��j
t|j�|�r�|j|�n�j
t|j|�tjjd��r�|
||fk�r�w�d|k}�j|j�|�|�r|j�|jd�n�j
t|j��j
t|jd�|�rP|�rP|j�|jd�n�j
t|j��j
t|jd�WdQRXWdQRXq�WdS)Ncs"tj�\}}tj|��j|d�S)Nr)�os�piperP�FileIO)rr�)r*rr�pipe_reader�s
z3IOTest.test_optional_abilities.<locals>.pipe_readercsNtj�\}}�jtj|�tjtj|dfd�}|j��j|j��j	|d�S)N�d)�targetrZr�)
r�r��
addCleanuprP�	threading�ThreadrA�startrar�)rr�Zthread)r*rr�pipe_writer�sz3IOTest.test_optional_abilities.<locals>.pipe_writercs�j�j��S)N)�BufferedReaderrXr)r*rr�buffered_reader�sz7IOTest.test_optional_abilities.<locals>.buffered_readercs�j�j��S)N)�BufferedWriterrXr)r*rr�buffered_writer�sz7IOTest.test_optional_abilities.<locals>.buffered_writercs�j�j��S)N)�BufferedRandom�BytesIOr)r*rr�buffered_random�sz7IOTest.test_optional_abilities.<locals>.buffered_randomcs�j�j��j��S)N)�BufferedRWPairrXr)r*rr�buffered_rw_pair�s
z8IOTest.test_optional_abilities.<locals>.buffered_rw_paircs$G�fdd�d�j�}�j|�d�S)NcseZdZ�jjZ�jjZdS)zMIOTest.test_optional_abilities.<locals>.text_reader.<locals>.UnseekableReaderN)rrr�BufferedIOBaser.r-r)r*rr�UnseekableReader�sr��ascii)rX�
TextIOWrapper)r�)r*rr�text_reader�sz3IOTest.test_optional_abilities.<locals>.text_readercs$G�fdd�d�j�}�j|�d�S)NcseZdZ�jjZ�jjZdS)zMIOTest.test_optional_abilities.<locals>.text_writer.<locals>.UnseekableWriterN)rrrr�r1rAr)r*rr�UnseekableWriter�sr�r�)rXr�)r�)r*rr�text_writer�sz3IOTest.test_optional_abilities.<locals>.text_writer�fr�fwrr�Zrws�rw�3�3zUnknown base classr"r6�winrbr)r��StringIOr��subTestrwr1r.�
isinstance�
TextIOBaser��	RawIOBase�failr0ryrOrAr-�sys�platform�
startswithr2r5r4r;)r*r�r�r�r�r�r�r�r��tests�testZ	abilitiesrr1r.rr2r)r*r�test_optional_abilities�sh	




zIOTest.test_optional_abilitiescCsVd}|jt|j|d�t|d�}tj��$tjdt�|jt|j|d�WdQRXdS)Nzfoobarr�r��ignore)ryrhrr�warnings�catch_warnings�simplefilter�DeprecationWarning)r*Zfn_with_NULZbytes_fnrrr�test_open_handles_NUL_chars�s

z"IOTest.test_open_handles_NUL_charscCs�|jtjddd��@}|j|j�d�|j|j�d�|j|j�d�|j|�WdQRX|jtjddd��@}|j|j�d�|j|j�d�|j|j�d�|j|�WdQRXdS)Nr�r)r�FTr�)	rrrnrwr1r.r2r|r�)r*r"rrr�test_raw_file_io�szIOTest.test_raw_file_iocCs�|jtjd��@}|j|j�d�|j|j�d�|j|j�d�|j|�WdQRX|jtjd��B}|j|j�d�|j|j�d�|j|j�d�|j|d�WdQRXdS)Nr�FTr�)	rrrnrwr1r.r2r|r�)r*r"rrr�test_buffered_file_io	szIOTest.test_buffered_file_iocCs�|jtjd��}|jd�WdQRX|jtjd��~}|j|j�d�|j|jd�d�|j|jd�d�|j|jd	�d
�|j|j�d�|j|jd�d�|jt|jd
�WdQRX|jtjd��}|jt|jd
�WdQRXdS)Nr�s"abc
def
xyzzy
foobar
another liner�sabc
rsdef
rEsxy�szzy
sfoobar
sanother lineg333333@r)rrrnr-rwr�ryrz)r*r"rrr�
test_readlineszIOTest.test_readlinecCs*Gdd�d|j�}|jttft|��dS)Nc@seZdZdd�ZdS)z+IOTest.test_readline_nonsizeable.<locals>.RcSsdS)Nr)r*rrrr�'sz4IOTest.test_readline_nonsizeable.<locals>.R.readlineN)rrrr�rrrr�R&sr�)�IOBaseryrz�
StopIteration�next)r*r�rrr�test_readline_nonsizeable#sz IOTest.test_readline_nonsizeablecCs(Gdd�d|j�}|jt|�jd�dS)Nc@seZdZdd�ZdS)z'IOTest.test_next_nonsizeable.<locals>.RcSsdS)Nr)r*rrr�__next__/sz0IOTest.test_next_nonsizeable.<locals>.R.__next__N)rrrr�rrrrr�.sr�r6)r�ryrz�	readlines)r*r�rrr�test_next_nonsizeable+szIOTest.test_next_nonsizeablecCs@|j�}|j|�|j�}|j|d�|j|�}|j|d�dS)Nshello world
T)r�r|�getvaluerwr�)r*r"rrrr�test_raw_bytes_io3s

zIOTest.test_raw_bytes_iocCs|tjdd�dkstjdkr.tjdd|j�|jtjdd��}|j|�WdQRX|jtjd��}|j|�WdQRXdS)Nr�r��darwinZ	largefilez-test requires %s bytes and a long time to runzw+br)r�r�rZrequiresr�rrnr�)r*r"rrr�test_large_file_ops;szIOTest.test_large_file_opscCs�x�dD]�}d}|jtjd|��}|jd�WdQRX|j|jd�d}y(|jtjd|��}ddWdQRXWn"tk
r�|j|jd�YqX|jd�qWdS)	Nrr6r�r�sxxxTz1/0 didn't raise an exception)rr6r�)rrrnr-rwrN�ZeroDivisionErrorr�)r*�bufsizer"rrr�test_with_openHs
zIOTest.test_with_opencCs�|jtjd��}|jd�WdQRX|jtjddd��}|j|j�d�WdQRX|jtjd��}|j|j�d�WdQRX|jtjd��}|j|j�d�WdQRXdS)Nr�sxxx�abr)r�r��a)rrrnr-rwr5�
assertGreater)r*r"rrr�test_append_mode_tellXszIOTest.test_append_mode_tellcs�g�G�fdd�d|j�}tjdtf��b|tjd�}|jd�~tj�|j�dddg�|jtjd	��}|j|j	�d�WdQRXWdQRXdS)
Ncs:eZdZ��fdd�Z��fdd�Z��fdd�Z�ZS)z(IOTest.test_destructor.<locals>.MyFileIOcs6�jd�yt�j}Wntk
r*YnX|�dS)Nr6)r,rF�__del__�AttributeError)r*r")rG�recordrrr�es
z0IOTest.test_destructor.<locals>.MyFileIO.__del__cs�jd�t�j�dS)NrE)r,rFrP)r*)rGr�rrrPms
z.IOTest.test_destructor.<locals>.MyFileIO.closecs�jd�t�j�dS)Nr�)r,rF�flush)r*)rGr�rrr�ps
z.IOTest.test_destructor.<locals>.MyFileIO.flush)rrrr�rPr�rJr)r�)rGr�MyFileIOdsr��r�sxxxr6rEr�r�)
r�r�check_warnings�ResourceWarningrnr-�
gc_collectrwrrA)r*r�r"r)r�r�test_destructorbs
zIOTest.test_destructorcs>g�G�fdd�d|�}|�}~tj�|j�dddg�dS)NcsBeZdZdd�Z��fdd�Z��fdd�Z��fdd�Z�ZS)	z+IOTest._check_base_destructor.<locals>.MyIOcSsd|_d|_d|_dS)Nr6rEr�)�on_del�on_close�on_flush)r*rrrr+sz4IOTest._check_base_destructor.<locals>.MyIO.__init__cs8�j|j�yt�j}Wntk
r,YnX|�dS)N)r,r�rFr�r�)r*r")rGr�rrr��sz3IOTest._check_base_destructor.<locals>.MyIO.__del__cs�j|j�t�j�dS)N)r,r�rFrP)r*)rGr�rrrP�sz1IOTest._check_base_destructor.<locals>.MyIO.closecs�j|j�t�j�dS)N)r,r�rFr�)r*)rGr�rrr��sz1IOTest._check_base_destructor.<locals>.MyIO.flush)rrrr+r�rPr�rJr)r�)rGr�MyIO~sr�r6rEr�)rr�rw)r*�baser�r"r)r�r�_check_base_destructor|szIOTest._check_base_destructorcCs|j|j�dS)N)r�r�)r*rrr�test_IOBase_destructor�szIOTest.test_IOBase_destructorcCs|j|j�dS)N)r�r�)r*rrr�test_RawIOBase_destructor�sz IOTest.test_RawIOBase_destructorcCs|j|j�dS)N)r�r�)r*rrr�test_BufferedIOBase_destructor�sz%IOTest.test_BufferedIOBase_destructorcCs|j|j�dS)N)r�r�)r*rrr�test_TextIOBase_destructor�sz!IOTest.test_TextIOBase_destructorcCsR|jtjd��}|jd�WdQRX|jtjd��}|j|j�d�WdQRXdS)Nr�sxxxr�)rrrnr-rwrA)r*r"rrr�test_close_flushes�szIOTest.test_close_flushescs�tjdtd���t�j������fdd�}|�j��|�jtjd��|�j�j	���|�j
�j	���|�j�j	��j	���dS)N�irc
s2|�$�j|j����|j�f�WdQRXdS)N)rwr-r�)r")r�r9r*rr�check�sz'IOTest.test_array_writes.<locals>.checkr�)r�ranger�tobytesr�r�rrnr�r>r�r�)r*r�r)r�r9r*r�test_array_writes�szIOTest.test_array_writescCs|jt|jtjddd�dS)Nr�F)�closefd)ryrhrrrn)r*rrr�test_closefd�szIOTest.test_closefdcCs�|jtjd��}|jd�WdQRX|jtjd��J}|j|j�ddd�}|j|j�d�|jd�|j�|j	t
|j�WdQRX|jtjd��N}|j|j�ddd�}|j|j�dd�d	�|j�|j	t
|jtd
��WdQRXdS)Nr�zegg
rF)r�rr�r�seggr6)
rrrnr-r0rwrAr4rPryrhr:rx)r*r"�filerrr�test_read_closed�s
zIOTest.test_read_closedcCs|jt|jtjddd�dS)NrF)r�)ryrhrrrn)r*rrr�test_no_closefd_with_filename�sz$IOTest.test_no_closefd_with_filenamecCsz|jtjd��}|jd�WdQRX|jtjd��>}|j|jjjd�|j|j�ddd�}|j|jjjd�WdQRXdS)Nr�segg
rTF)r�)	rrrnr-rwr{�rawr�r0)r*r"r�rrr�test_closefd_attr�szIOTest.test_closefd_attrcCs�tjdtf��8|jtjd�}|jd�||_tj|�}~tj	�WdQRX|j
|�|�|jtjd��}|j|j
�d�WdQRXdS)Nr�r�sabcxxxr�)rr�r�r�rnr-r"�weakref�refr��assertIsNonerrwrA)r*r"�wrrrr�test_garbage_collection�s

zIOTest.test_garbage_collectioncCs�d}tjj|�s |jdj|��tjdkr4|jd�tjtj	krJ|jd�|j
|ddd��}|jt|j
�WdQRX|j
|d��}|jt|j
�WdQRX|j
|d	��}|jt|j
�WdQRXdS)
Nz	/dev/zeroz{0} does not existi���z+test can only run in a 32-bit address spacez$test requires at least 2GB of memoryr�r)r�r)r��path�existsr��formatr��maxsizerZreal_max_memuseZ_2Grryr�rA)r*Zzeror"rrr�test_unbounded_file�s


zIOTest.test_unbounded_filecsd|j||��g���fdd�}|�_|jt�j�|j�j�|j��|j�d�dd��_dS)Ncs�jg�dd�<t��dS)N)rNrOr)rNr"rr�	bad_flush�sz4IOTest.check_flush_error_on_close.<locals>.bad_flushrcSsdS)Nrrrrr�<lambda>sz3IOTest.check_flush_error_on_close.<locals>.<lambda>)rr�ryrOrP�
assertTruerN�assertFalse)r*rZ�kwargsr	r)rNr"r�check_flush_error_on_close�s
z!IOTest.check_flush_error_on_closecCs.|jtjddd�tjtjtjtjB�}|j|ddd�tjtjtjtjB�}|j|dddd�tj|�|jtjd�tjtjtjtjB�}|j|d�tjtjtjtjB�}|j|ddd�tj|�|jtjd�tjtjtjtjB�}|j|d�tjtjtjtjB�}|j|ddd�tj|�dS)Nr�r)r�F)r�r�)r�r�)rrrnr�r�O_WRONLY�O_CREATrP)r*�fdrrr�test_flush_error_on_closes$

z IOTest.test_flush_error_on_closecCs<|jtjddd�}|j�|j�|j�|jt|j�dS)Nr�r)r�)rrrnrPryrhr�)r*r"rrr�test_multi_closes
zIOTest.test_multi_closecCs�|jd
�}|j|jd�d�|j|jd�d�|j|jd�d�|j|jd�d�|j|jd�d�|j|jd�d�|j|jd�d�|j|jd�d	�dS)N�abc�d�efgrEsab�csef�gr?)rrNrN)r$rwrA)r*�rawiorrr�test_RawIOBase_read$s
zIOTest.test_RawIOBase_readcCsD|j�|j�|j�|j�|j�f}x|D]}|jt|d��q(WdS)N�__dict__)r�r�r�r�r�r�hasattr)r*r�rrrr�test_types_have_dict1s

zIOTest.test_types_have_dictcsp|jtjd��}|jd�WdQRXtjtjtj���fdd�}|jdd|d��}|j|j�d�WdQRXdS)Nr�zegg
cs�S)Nr)r�flags)rrr�opener@sz"IOTest.test_opener.<locals>.openerznon-existentr)r)rrrnr-r��O_RDONLYrwrA)r*r"rr)rr�test_opener<szIOTest.test_openercCsBdd�}|jt��}tdd|d�WdQRX|jt|j�d�dS)NcSsdS)Nr6rfr)�fnamerrrr�	badopenerGsz4IOTest.test_bad_opener_negative_1.<locals>.badopenerznon-existentr)rzopener returned -1)ryrhrrw�str�	exception)r*r#�cmrrr�test_bad_opener_negative_1Esz!IOTest.test_bad_opener_negative_1cCsBdd�}|jt��}tdd|d�WdQRX|jt|j�d�dS)NcSsdS)NrE���r)r"rrrrr#Osz8IOTest.test_bad_opener_other_negative.<locals>.badopenerznon-existentr)rzopener returned -2)ryrhrrwr$r%)r*r#r&rrr�test_bad_opener_other_negativeMsz%IOTest.test_bad_opener_other_negativecCsp|jtd��Z}|jtd��B}|j|j�dd�}|j|j�dd�|j�|j�|j�WdQRXWdQRXdS)Nr�F)r�)rr r�r0r+r�rP)r*�f1�f2Zfileiorrr�test_fileio_closefdUszIOTest.test_fileio_closefdcCsBtj|��.|jt��|jtjddd�WdQRXWdQRXdS)Nr�r)r�)r�check_no_resource_warningryrhrrn)r*rrr�test_nonbuffered_textioaszIOTest.test_nonbuffered_textiocCsBtj|��.|jt��|jtjddd�WdQRXWdQRXdS)Nr�Zinvalid)�newline)rr-ryrhrrn)r*rrr�test_invalid_newlinefszIOTest.test_invalid_newlinecCsnGdd�d|j�}|�}xPdD]H}|j|��4td�}|jt||�|�d�|jt|�d�WdQRXqWdS)Nc@seZdZdd�ZeZdS)z3IOTest.test_buffered_readinto_mixin.<locals>.StreamcSsdS)Ns12345r)r*�sizerrrrAnsz8IOTest.test_buffered_readinto_mixin.<locals>.Stream.readN)rrrrA�read1rrrr�Streammsr3r:r�rIs12345)r:r�)r�r�rrw�getattrr)r*r3�stream�methodr{rrr�test_buffered_readinto_mixinks
z#IOTest.test_buffered_readinto_mixinc&s��fdd�}|ttj��|ttjjd����jtjd��4}t|j��}�jt���j|d�WdQRXWdQRXtd�}�jt���j|d�WdQRXtt�}�jt���j|d�WdQRX�j	t
d���jttj�d�WdQRXdS)NcsN�j|d��}|jd�WdQRX�j|d��}�j|j�d�WdQRXdS)Nr�zegg
r)rr-rwrA)rr")r*rr�check_path_succeedsysz7IOTest.test_fspath_support.<locals>.check_path_succeedszutf-8r�zread/write/append modeZrwxa)r	rrn�encoderr0ryrz�FloatingPointError�assertRaisesRegexrh)r*r8r"Zbad_pathr)r*r�test_fspath_supportxs zIOTest.test_fspath_supportcCs8|jd�}|j|j�d�|jd�}|j|j�d�dS)N�abcr�efgsabcdefg)r=rr>)r=rr>)r$rwrA�readall)r*rrrr�test_RawIOBase_readall�s

zIOTest.test_RawIOBase_readallc
Cs�Gdd�d|j�}d}d
}x�|D]�}|j|���|\}}}}|tt|���}	t|f|�}
t|	|�}|j||
�|�|jt|
�|�|j|
d|�t|��|f||}|j|
|d�|�|jt|	j	�||�WdQRXq WdS)Nc@s$eZdZdd�Zdd�Zdd�ZdS)z3IOTest.test_BufferedIOBase_readinto.<locals>.ReadercSs
||_dS)N)�avail)r*rArrrr+�sz<IOTest.test_BufferedIOBase_readinto.<locals>.Reader.__init__cSs"|jd|�}|j|d�|_|S)N)rA)r*r1�resultrrrrA�sz8IOTest.test_BufferedIOBase_readinto.<locals>.Reader.readcSs|jt|d��S)NrI)rA�min)r*r1rrrr2�sz9IOTest.test_BufferedIOBase_readinto.<locals>.Reader.read1N)rrrr+rAr2rrrr�Reader�srDr:rrIrq�rr���r:rrIrI�r:rrqrq�r:rIrqrI�r:rqrErq�r:rrr�r�rrIrI�r�rrqrI�r�rIrqrI�r�rqrErI�r�rrr)
rGrHrIrJrKrLrMrNrOrP)
r�r�rr�rxr4rwrZassertSequenceEqualrA)r*rDr�ZUNUSED_BYTEr�r6rAZrequestrB�readerr{Zunusedrrr�test_BufferedIOBase_readinto�s0


z#IOTest.test_BufferedIOBase_readintocCs*Gdd�d|j�}|�}|jt|j�dS)Nc@seZdZdd�Zdd�ZdS)z#IOTest.test_close_assert.<locals>.RcSsdS)Nr)r*�name�valuerrr�__setattr__�sz/IOTest.test_close_assert.<locals>.R.__setattr__cSs
t��dS)N)rO)r*rrrr��sz)IOTest.test_close_assert.<locals>.R.flushN)rrrrUr�rrrrr��sr�)r�ryrOrP)r*r�r"rrr�test_close_assert�szIOTest.test_close_assertN)Fl)3rrrrorpr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrrr!r'r)r,r.r0r7r<r@rRrVrrrrrls`
!j	



	
)rlc@seZdZdd�ZdS)�CIOTestcCsLGdd�d|j�}|�|�}||_tj|�}~~tj�|j|�|�dS)Nc@seZdZdd�ZdS)z*CIOTest.test_IOBase_finalize.<locals>.MyIOcSsdS)Nr)r*rrrrP�sz0CIOTest.test_IOBase_finalize.<locals>.MyIO.closeN)rrrrPrrrrr��sr�)r�rr�rrr�r)r*r�rrrrr�test_IOBase_finalize�s
zCIOTest.test_IOBase_finalizeN)rrrrXrrrrrW�srWc@seZdZdS)�PyIOTestN)rrrrrrrrY�srYc@seZdZdd�Zdd�ZdS)�APIMismatchTestcCs*tjtjtjdd�}|j|t�dd�dS)N�__weakref__)r�z6Python RawIOBase does not have all C RawIOBase methods)�msg)r[)r�detect_api_mismatchr^r�r\rw�set)r*�mismatchrrr�test_RawIOBase_io_in_pyio_match�sz/APIMismatchTest.test_RawIOBase_io_in_pyio_matchcCs&tjtjtj�}|j|t�dd�dS)Nz6C RawIOBase does not have all Python RawIOBase methods)r\)rr]r\r�r^rwr^)r*r_rrr�test_RawIOBase_pyio_in_io_match�sz/APIMismatchTest.test_RawIOBase_pyio_in_io_matchN)rrrr`rarrrrrZ�srZc@s|eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�CommonBufferedTestscCs<|j�}|j|�}|j|j�|�|jt|j�t|�dS)N)r>�tp�assertIs�detachryrh�repr)r*r�r8rrr�test_detach�s

zCommonBufferedTests.test_detachcCs&|j�}|j|�}|jd|j��dS)Nr/)r>rcrwr0)r*r�bufiorrr�test_filenos
zCommonBufferedTests.test_filenocCs:|j�}|j|�}|jt|jdd�|jt|jdd�dS)Nrr6rrrf)r>rcryrhr4)r*rrhrrr�test_invalid_argss
z%CommonBufferedTests.test_invalid_argscsN|j}g�G�fdd�d|�}|j�}||�}~tj�|j�dddg�dS)Ncs:eZdZ��fdd�Z��fdd�Z��fdd�Z�ZS)zBCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIOcs6�jd�yt�j}Wntk
r*YnX|�dS)Nr6)r,rFr�r�)r*r")rGr�rrr�s
zJCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.__del__cs�jd�t�j�dS)NrE)r,rFrP)r*)rGr�rrrPs
zHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.closecs�jd�t�j�dS)Nr�)r,rFr�)r*)rGr�rrr�s
zHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.flush)rrrr�rPr�rJr)r�)rGr�MyBufferedIOsrkr6rEr�)rcr>rr�rw)r*rcrkrrhr)r�r�test_override_destructorsz,CommonBufferedTests.test_override_destructorcs4|j�}|j|���fdd�}|�|jt|�dS)Nc	s��WdQRXdS)Nrr)rhrr�_with+sz7CommonBufferedTests.test_context_manager.<locals>._with)r>rcryrh)r*rrmr)rhr�test_context_manager's

z(CommonBufferedTests.test_context_managerc
s��j����fdd�}tjd��}�jt|�WdQRX|j�j�}|r��jt|j	��d��j
|jd�|��j
|jd�|�dS)Ncs�j��jdS)N)rc�xyzzyr)rr*rrr"7sz<CommonBufferedTests.test_error_through_destructor.<locals>.f�stderrr6zException OSError: z ignored)
rMr�captured_outputryr�r��striprwr�
splitlinesrr��endswith)r*r"rbr)rr*r�test_error_through_destructor3sz1CommonBufferedTests.test_error_through_destructorcCsr|j�}|j|�}d|jj|jjf}|jt|�d|�d|_|jt|�d|�d|_|jt|�d|�dS)Nz%s.%sz<%s>�dummyz<%s name='dummy'>sdummyz<%s name=b'dummy'>)r>rcrrrwrfrS)r*r�r
Zclsnamerrr�	test_reprBs
zCommonBufferedTests.test_reprcCsR|j�}|j|�}tj|d|��(yt|�Wntk
rBYnXWdQRXdS)NrS)r>rcr�	swap_attrrf�RuntimeError)r*r�r
rrr�test_recursive_reprLs
z'CommonBufferedTests.test_recursive_reprcs�|j��g����fdd�}|�_|j���|jt�j�|j�j�|j�j�|j��|j�d�|j�d�dd��_dS)Ncs�j�jg�dd�<t��dS)N)rNrOr)r
rNr�rrr	[sz@CommonBufferedTests.test_flush_error_on_close.<locals>.bad_flushrr6cSsdS)Nrrrrrr
fsz?CommonBufferedTests.test_flush_error_on_close.<locals>.<lambda>)	r>r�rcryrOrPrrNr)r*r	r)r
rNr�rrVs

z-CommonBufferedTests.test_flush_error_on_closec
Cs�|j�}dd�}dd�}||_|j|�}||_|jt��}|j�WdQRX|j|jjd�|j	|jj
t�|j|jj
jd�|j|j�dS)	NcSstd��dS)Nr�)rOrrrrr	jsz@CommonBufferedTests.test_close_error_on_close.<locals>.bad_flushcSstd��dS)NrP)rOrrrr�	bad_closelsz@CommonBufferedTests.test_close_error_on_close.<locals>.bad_closerPr�)rP)r�)
r>rPrcr�ryrOrwr%rZ�assertIsInstance�__context__rrN)r*r�r	r{r
�errrrr�test_close_error_on_closehs
z-CommonBufferedTests.test_close_error_on_closecCs�|j�}dd�}dd�}||_|j|�}||_|jt��}|j�WdQRX|jdt|j��|j	|jj
t�|jdt|jj
��|j|j�dS)NcSst�dS)N)�non_existing_flushrrrrr	{szNCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.bad_flushcSst�dS)N)�non_existing_closerrrrr{}szNCommonBufferedTests.test_nonnormalized_close_error_on_close.<locals>.bad_closer�r�)
r>rPrcr�ry�	NameError�assertInr$r%r|r}rrN)r*r�r	r{r
r~rrr�'test_nonnormalized_close_error_on_closexs
z;CommonBufferedTests.test_nonnormalized_close_error_on_closecCs<|j�}|j|�}|j�|j�|j�|jt|j�dS)N)r>rcrPryrhr�)r*r�r
rrrr�s
z$CommonBufferedTests.test_multi_closecCs6|j|jd��}|j|j|j�|j|j|jd�dS)N�Arrs
AAAAAAAAAA)rcrXryrYr5r4)r*rhrrr�test_unseekable�sz#CommonBufferedTests.test_unseekablec	Cs:|j�}|j|�}|j�}|jt��||_WdQRXdS)N)r>rcryr�r�)r*r�r8�xrrr�test_readonly_attributes�s

z,CommonBufferedTests.test_readonly_attributesN)rrrrgrirjrlrnrurwrzrrr�rr�r�rrrrrb�s

rbc@s(eZdZejdd��Zejdd��ZdS)�
SizeofTestcCs\d}d}|j�}|j||d�}tj|�|}|j�}|j||d�}|jtj|�||�dS)Nii )�buffer_size)r>rcr��	getsizeofrw)r*Zbufsize1Zbufsize2rrhr1rrr�test_sizeof�szSizeofTest.test_sizeofcCsFd}|j�}|j||d�}tj|�|}|j�|jtj|�|�dS)Ni)r�)r>rcr�r�rPrw)r*r�rrhr1rrr�test_buffer_freeing�szSizeofTest.test_buffer_freeingN)rrrr�cpython_onlyr�r�rrrrr��sr�c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zejed�ejd�dd���Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(S))�BufferedReaderTestr�cCs�|jdg�}|j|�}|j|�|j|dd�|j|dd�|jd|j��|jt|j|dd�|jt|j|dd�|jt|j|dd�|jdg�}|j|�|jd|j��dS)	Nsabci)r��rr6i�rf)r>rcr+rwrAryrh)r*rrhrrr�test_constructor�s


z#BufferedReaderTest.test_constructorcCsX|jj|j�}~|jj|j�}|jttfd|jd�|j|j��|j|jd�d�dS)Nzuninitialized|has no attributerr?)	rc�__new__r;rhr�rAr+r>rw)r*rhrrr�test_uninitialized�s

z%BufferedReaderTest.test_uninitializedcCsHx2dD]*}|jd�}|j|�}|jd|j|��qW|jt|jd	�dS)
NrE�abcr�efgsabcdefgrE)NrE)r�rr�r()r>rcrwrAryrh)r*�argrrhrrr�	test_read�s



zBufferedReaderTest.test_readcCs�|jd
�}|j|�}|jd|jd��|jd|jd��|j|jd�|jd|jd��|j|jd�|jd|jd��|j|jd	�|jd|jd��|j|jd
�|jd|jd��|j|jd�|jt|jd�dS)N�abcr�efg�ar6�brr�rEr�r?r�)r�rr�rf)r>rcrwrAr2r(ryrh)r*rrhrrr�
test_read1�s

zBufferedReaderTest.test_read1cCs|jd�}|j|�}td�}|j|j|�d�|j|d�|j|j|�d�|j|d�|j|j|�d�|j|d�|j|j|�d�|j|d	�|j|j|�d
�|j|d	�|jd
�}|j|�}|j|j|�d�|j|d�|j|j|�d�|j|d�dS)N�abcr�efgrEsabscdsefr6sgfrscb)r�rr�)r�N)r>rcrxrwr:)r*rrhr
rrr�
test_readinto�s&



z BufferedReaderTest.test_readintocCs4d}|jd�}|j||d�}td�}|j|jd�d�|j|jd	�|j|j|�d�|j|d
�|j|jd	�|j|j|�d	�|j|dd	�d�|j|jd	�|j|j|�d�|j|d�|j|jd�td|�}|j|jd�d�|j|jd�|j|j|�d�|j|dd�d
�|j|jd�dS)Nr�abc�de�fgh�jkl)r�rEr�r6sabrrqsfghjklr�)r�r�r�r�)r>rcrxrw�peekr(r�)r*r�rrhr
rrr�test_readinto1�s*
z!BufferedReaderTest.test_readinto1cCs�d}dd}|j|f�}|j||d�}tjddd�}|j|�}|j|t|��t|�jd�}|j|t|��|j	|d|�|d|��|j	||d�dt||d���dS)	N�<r��)r�r�r~� r)
r>rcrr:r�rrr�
assertLessrw)r*r�rrrhr
r9�bmrrr�test_readinto_arrays
z&BufferedReaderTest.test_readinto_arraycCs�d}dd}|j|f�}|j||d�}tjddd�}|j|�}|j|t|��t|�jd�}|j|t|��|j	|d|�|d|��|j	||d�dt||d���dS)	Nr�r�r�)r�r�r~r�r)
r>rcrr�r�rrrr�rw)r*r�rrrhr
r9r�rrr�test_readinto1_array)s
z'BufferedReaderTest.test_readinto1_arraycsZ�fdd�}�j|�j�dddg��j|�jd�ddg��j|�jd�dddg�dS)Ncs�jd�}�j|�S)N�abc
�d
�ef)r�r�r�)r>rc)r)r*rrrh?s
z0BufferedReaderTest.test_readlines.<locals>.bufiosabc
sd
sefrI)rwr�)r*rhr)r*r�test_readlines>sz!BufferedReaderTest.test_readlinescCs�d}t|�}dddddg|dggddddg|ggdddddgdddggg}xp|D]h\}}}|j|�}|j||d	�}d}	x2|D]*}
|j|j|
�||	|	|
��|	|
7}	q|W|j|j|�qPWdS)
Ns	abcdefghir�r�r6r��rrE)r�)rrSrcrwrArT)r*rZdlenr�r�Zbuf_read_sizesZraw_read_sizesrrhr
�nbytesrrr�test_bufferingFs

z!BufferedReaderTest.test_bufferingcCs�|jd�}|j|�}|jd|jd��|jd|jd��|jd|j��|jd	|jd��|j|j��|jd	|j��|jd�}|jd
|j��|j|j��dS)
N�abcr�efgsabcdrq�er6sfgr?r�)r�rNr�NNN)r�NN)r>rcrwrAr�rr?)r*rrhrrr�test_read_non_blockingZs


z)BufferedReaderTest.test_read_non_blockingcCs*|jd�}|j|�}|jd|jd��dS)N�abcr�efgsabcdefgi(#)r�rr�)r>rcrwrA)r*rrhrrr�test_read_past_eofis

z%BufferedReaderTest.test_read_past_eofcCs(|jd�}|j|�}|jd|j��dS)N�abcr�efgsabcdefg)r�rr�)r>rcrwrA)r*rrhrrr�
test_read_allos

z BufferedReaderTest.test_read_allz!Threading required for this test.�cpucs.�zd}ttd��|}tj|�tt|��}|jtjd����j	|�WdQRX|jtj|j
dd���}|j|d��g�g����fdd���fd	d
�td�D�}tj|��t
jd�WdQRX|j�d
��dj��}x0td�D]$}tt|g��}|j|j|�|�q�WWdQRXWdtjtj�XdS)Ni��r�r)r�r�cshy4x.tddg�D]}�j|�}|s$P�j|�qWWn.tk
rb}z�j|��WYdd}~XnXdS)Nr6�)rrAr,�	Exception)r9rb�e)rh�errors�resultsrrr"�s

z*BufferedReaderTest.test_threads.<locals>.fcsg|]}tj�d��qS))r�)r�r�)�.0r�)r"rr�
<listcomp>�sz3BufferedReaderTest.test_threads.<locals>.<listcomp>r}g{�G�z�?z(the following exceptions were caught: %rr?)r%r��randomZshufflerrxrrrnr-�	read_moderc�
start_threads�time�sleeprrarwrrm)r*�N�lrbr��threadsr��cr)rhr�r"r�r�test_threadsus,


$zBufferedReaderTest.test_threadscCsb|j|jd��}|j|j|j�|j|j|jd�|jd�|j|j|jd�|j|j|j�dS)Nr�rrr6s
AAAAAAAAAA)rcrXryrYr5r4rA)r*rhrrrr��s
z"BufferedReaderTest.test_unseekablecCs6|jd�}|j|�}|jt|jd�|jt|j�dS)N�abcr�efgr)r�rr�)rDrcryrOr4r5)r*rrhrrr�test_misbehaved_io�s

z%BufferedReaderTest.test_misbehaved_iocCs�d}x�d|d||d|dfD]�}|jd|g�}|j||�}|j|j|�d|�|j|jddj||j��|jd|ddg�}|j||�}|j|j|�d|�|j|jddj||j��q WdS)Nr�rEr6r~rzfailed for {}: {} != 0)r>rcrwrAr)r)r*r�r9rrhrrr�test_no_extraneous_read�s 

z*BufferedReaderTest.test_no_extraneous_readcCsDtjtjd��}|jd�|j�|jt|j�|jt|jd�dS)Ns12r6)	r\r�r�rArPryrhr�r2)r*r
rrr�test_read_on_closed�s

z&BufferedReaderTest.test_read_on_closedN)rrrr�r�r�r�r�r�r�r�r�r�r�r�r�r��unittest�
skipUnlessr�r�requires_resourcer�r�r�r�r�rrrrr��s(

(r�c@s:eZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dS)�CBufferedReaderTestcCsDtj|�tjdkr@|j�}|j|�}|jttt	f|j
|tj�dS)Ni���)r�r�r�rr>rcryr��MemoryErrorrhr+)r*rrhrrrr��s


z$CBufferedReaderTest.test_constructorcCs�|jdg�}|j|�}|jt|j|dd�|jt|j�|jt|j|dd�|jt|j�|jt|j|dd�|jt|j�dS)Nsabcr)r�r�r6i�rf)r>rcryrhr+rA)r*rrhrrr�test_initialization�s
z'CBufferedReaderTest.test_initializationcCs(|jd�}|j|�}|jt|jd�dS)N�abcr�efgr)r�rr�)rDrcryrOrA)r*rrhrrr�test_misbehaved_io_read�s

z+CBufferedReaderTest.test_misbehaved_io_readc
Csn|jtjtj�tjdtf��8|jtjd�}|j|�}||_t	j
|�}~tj�WdQRX|j|�|�dS)Nr�zw+b)
r�rrmrnr�r�r�rcr"r�rr�r)r*rr"rrrrr�s

z+CBufferedReaderTest.test_garbage_collectioncCs0|jtd��|jtj�ddd�WdQRXdS)Nr�i)r;rzrcr\r�)r*rrr�test_args_error�sz#CBufferedReaderTest.test_args_errorN)rrrr\r�rcr�r�r�rr�rrrrr��s


r�c@seZdZejZdS)�PyBufferedReaderTestN)rrrr^r�rcrrrrr��sr�c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zejed(�ejd)�d*d+���Zd,d-�Zd.d/�Zd0d1�Zd2S)3�BufferedWriterTestr�cCs�|j�}|j|�}|j|�|j|dd�|j|dd�|jd|jd��|j�|jt|j|dd�|jt|j|dd�|jt|j|dd�|j|�|jd|jd��|j�|jd	j|j	�d
�dS)
Ni)r�r�r�sabcrr6sghir?sabcghii�rf)
r>rcr+rwr-r�ryrhrar')r*rrhrrrr�s


z#BufferedWriterTest.test_constructorcCsX|jj|j�}~|jj|j�}|jttfd|jd�|j|j��|j|jd�d�dS)Nzuninitialized|has no attributer?r)	rcr�r;rhr�r-r+r>rw)r*rhrrrr�s

z%BufferedWriterTest.test_uninitializedcCsD|j�}|j|�}|jd�|j|j�|j�|j|jdg�dS)Nshowdy!)r>rcr-rr'rerw)r*r�r8rrr�test_detach_flushs

z$BufferedWriterTest.test_detach_flushcCsh|j�}|j|d�}|jd�|j|j�td�}|j|�d|dd�<|j�|jdj|j�d�dS)Nr�sabcsdefs***r?sabcdef)	r>rcr-rr'rxr�rwra)r*�writerrhr{rrr�
test_write#s

zBufferedWriterTest.test_writecCsr|j�}|j|d�}d}x.tdt|�d�D]}|j|||d��q*Wdj|j�}|j|j|dd��|�dS)Nr�sabcdefghijklmnoprr�r?i����)	r>rcr�rr-rar'rr�)r*r�rh�contentsr9Zflushedrrr�test_write_overflow/sz&BufferedWriterTest.test_write_overflowc	Cs�ttd��d}d}|j�}|j|d�}dd�}|�}xT|t|�kr�tt|�t|�|�}|j|j||||��|�||�||7}q8W|j	�|j|dj
|j��dS)Nr�i�rrucss.x(td�D]}xtd�D]
}|VqWq
WdS)Nr6�)rr�)r1r�rrr�	gen_sizesAsz2BufferedWriterTest.check_writes.<locals>.gen_sizesr?)rr�r>rcrrCr�rwr-r�rar')	r*Zintermediate_funcr�r9r�rhr��sizesr1rrr�check_writes:szBufferedWriterTest.check_writescCs|jdd��dS)NcSsdS)Nr)rhrrrr
Osz0BufferedWriterTest.test_writes.<locals>.<lambda>)r�)r*rrr�test_writesNszBufferedWriterTest.test_writescCs|jdd��dS)NcSs|j�S)N)r�)rhrrrr
Rsz<BufferedWriterTest.test_writes_and_flushes.<locals>.<lambda>)r�)r*rrr�test_writes_and_flushesQsz*BufferedWriterTest.test_writes_and_flushescCs(dd�}|j|�dd�}|j|�dS)NcSs8|j�}|j|dd�|j|dd�|j|d�dS)Nr6r)r5r4)rhr
rrr�_seekabsUsz:BufferedWriterTest.test_writes_and_seeks.<locals>._seekabscSs4|jdd�}|jdd�|jdd�|j|d�dS)Nrr6r6rf)r4)rhr
rrr�_seekrel[sz:BufferedWriterTest.test_writes_and_seeks.<locals>._seekrel)r�)r*r�r�rrr�test_writes_and_seeksTs
z(BufferedWriterTest.test_writes_and_seekscCs|jdd��dS)NcSs|j|j��S)N)r;r5)rhrrrr
csz>BufferedWriterTest.test_writes_and_truncates.<locals>.<lambda>)r�)r*rrr�test_writes_and_truncatesbsz,BufferedWriterTest.test_writes_and_truncatescCs�|j�}|j|d�}|j|jd�d�|j|jd�d�|jd�|j|jd�d�|jd�y|jd	�Wn*|jk
r�}z|j}WYdd}~XnX|jd
�|j|d�|j|j�d�|j|jd
�d�|j�}|j	|j
d�|�dS)Nr�sabcdr�sefghirI�ksjklmn�0sopqrwxyz0123456789z'BlockingIOError should have been raisedr�sabcdefghijklmnopqrwxyzs	ABCDEFGHIrrs	01234567A)r_rcrwr-rerj�characters_writtenr�rcrr�)r*r�rhr��writtenrbrrr�test_write_non_blockinges$



z*BufferedWriterTest.test_write_non_blockingcCs�tj�}|j|d�}|j|jd�d�|j|j�d�|jdd�|j|jd�d�|jdd�|j|j�d�|j|jd�d�|j�|j|j�d	�dS)
Nr�sabcdefrqrsXYrEsXYcdefs123456sXYcdef123456)	r\r�rcrwr-r5r4r�r�)r*r�rhrrr�test_write_and_rewind�sz(BufferedWriterTest.test_write_and_rewindcCs<|j�}|j|d�}|jd�|j�|jd|jd�dS)Nr�sabcr)r>rcr-r�rwr')r*r�rhrrr�
test_flush�s

zBufferedWriterTest.test_flushcCsHdddg}|j�}|j|d�}|j|�|j�|jdj|j�d�dS)Nsabscdsefr�r?sabcdef)r>rcr�r�rwrar')r*r�r�rhrrr�test_writelines�s

z"BufferedWriterTest.test_writelinescCsLtdddg�}|j�}|j|d�}|j|�|j�|jdj|j�d�dS)Nsabscdsefr�r?sabcdef)rr>rcr�r�rwrar')r*r�r�rhrrr�test_writelines_userlist�s
z+BufferedWriterTest.test_writelines_userlistcCsN|j�}|j|d�}|jt|jdddg�|jt|jd�|jt|jd�dS)Nr�r6rEr��abc)r>rcryrzr�)r*r�rhrrr�test_writelines_error�s
z(BufferedWriterTest.test_writelines_errorcCs>|j�}|j|d�}|jd�~tj�|jd|jd�dS)Nr�sabcr)r>rcr-rr�rwr')r*r�rhrrrr��s
z"BufferedWriterTest.test_destructorcCs�|jtjtj�|jtj|jdd��>}|j|d�}|jd�|j|j	d�d�|j|j
�d�WdQRX|jtjddd��}|j|j�d�WdQRXdS)	Nr)r�r�sabcdefr�rqr�sabc)r�rrmrnr�
write_modercr-rwr;r5rA)r*r�rhr"rrr�
test_truncate�s
z BufferedWriterTest.test_truncatecCs�|jtjtj�|jtjd��}|jdd�WdQRXdddg}xb|D]Z}|jtjd|d��>}|jd|d	�|jd	�|j�|j|j	�|d
�WdQRXqHWdS)Nr��i'i i��zr+b)r�r6rE)
r�rrmrnrr-rAr;rwr5)r*r"Zbuffer_sizesr�rrr�test_truncate_after_write�s


z,BufferedWriterTest.test_truncate_after_writez!Threading required for this test.r�c
 sZ�zDd}ttd��|}tddg�}d}t��x6|t|�krdt|�}�j||||��||7}q0W~|jtj	|j
dd��t}|j|d��g����fdd	���fd
d�td�D�}tj|��t
jd
�WdQRX|j�d���j�WdQRX|jtj	d����j�}WdQRXx*td�D]}	|j|jt|	g��|��q"WWdtjtj	�XdS)Ni�r�r6r�r)r�r�csjy6x0y�j�}Wntk
r$dSX�j|�qWWn.tk
rd}z�j|��WYdd}~XnXdS)N)�popleftr7r-r�r,)rbr�)rhr��queuerrr"�s
z*BufferedWriterTest.test_threads.<locals>.fcsg|]}tj�d��qS))r�)r�r�)r�r�)r"rrr��sz3BufferedWriterTest.test_threads.<locals>.<listcomp>r}g{�G�z�?z(the following exceptions were caught: %rr�)rr�rrrr�r,rrrnr�rcr�r�r�rrPrArwrrm)
r*r�r�r�r9r1r�r�rbr�r)rhr�r"rrr��s4
"zBufferedWriterTest.test_threadscCsF|j�}|j|d�}|jt|jd�|jt|j�|jt|jd�dS)NrIrsabcdef)rDrcryrOr4r5r-)r*rrhrrrr�s
z%BufferedWriterTest.test_misbehaved_iocCs,|jt��|j|j�dd�WdQRXdS)Nr�rv)ryrzrcr>)r*rrr�test_max_buffer_size_removalsz/BufferedWriterTest.test_max_buffer_size_removalcCsH|j�}dd�}||_|j|�}|jd�|jt|j�|j|j�dS)NcSs
t��dS)N)rO)r
rrr�	bad_write
sz?BufferedWriterTest.test_write_error_on_close.<locals>.bad_writesspam)r>r-rcryrOrPrrN)r*r�rr
rrr�test_write_error_on_closes

z,BufferedWriterTest.test_write_error_on_closeN) rrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�r�r�rr�r�r�rrrrrrr��s2


/r�c@s2eZdZejZdd�Zdd�Zdd�Zdd�Z	d	S)
�CBufferedWriterTestcCsDtj|�tjdkr@|j�}|j|�}|jttt	f|j
|tj�dS)Ni���)r�r�r�rr>rcryr�r�rhr+)r*rrhrrrr�s


z$CBufferedWriterTest.test_constructorcCs�|j�}|j|�}|jt|j|dd�|jt|jd�|jt|j|dd�|jt|jd�|jt|j|dd�|jt|jd�dS)Nr)r�sdefr�r6i�rf)r>rcryrhr+r-)r*rrhrrrr�#s
z'CBufferedWriterTest.test_initializationcCs�|jtjtj�tjdtf��B|jtjd�}|j|�}|jd�||_	t
j|�}~tj�WdQRX|j
|�|�|jtjd��}|j|j�d�WdQRXdS)Nr�zw+bs123xxxr�)r�rrmrnr�r�r�rcr-r�r�rr�rrrwrA)r*rr"rrrrr-s


z+CBufferedWriterTest.test_garbage_collectioncCs0|jtd��|jtj�ddd�WdQRXdS)Nr�i)r;rzrcr\r�)r*rrrr�>sz#CBufferedWriterTest.test_args_errorN)
rrrr\r�rcr�r�rr�rrrrrs


rc@seZdZejZdS)�PyBufferedWriterTestN)rrrr^r�rcrrrrrDsrc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+S),�BufferedRWPairTestcCs$|j|j�|j��}|j|j�dS)N)rcr>rrN)r*�pairrrrr�Isz#BufferedRWPairTest.test_constructorcCs�|jj|j�}~|jj|j�}|jttfd|jd�|jttfd|jd�|j|j�|j��|j	|jd�d�|j	|jd�d�dS)Nzuninitialized|has no attributerr?)
rcr�r;rhr�rAr-r+r>rw)r*r	rrrr�Ms



z%BufferedRWPairTest.test_uninitializedcCs(|j|j�|j��}|j|j|j�dS)N)rcr>ryrYre)r*r	rrrrg[szBufferedRWPairTest.test_detachcCs2|jt��|j|j�|j�dd�WdQRXdS)Nr�rv)ryrzrcr>)r*rrr�(test_constructor_max_buffer_size_removal_sz;BufferedRWPairTest.test_constructor_max_buffer_size_removalcCs,Gdd�dt�}|jt|j|�|j��dS)Nc@seZdZdd�ZdS)zJBufferedRWPairTest.test_constructor_with_not_readable.<locals>.NotReadablecSsdS)NFr)r*rrrr1eszSBufferedRWPairTest.test_constructor_with_not_readable.<locals>.NotReadable.readableN)rrrr1rrrr�NotReadabledsr)r>ryrOrc)r*rrrr�"test_constructor_with_not_readablecsz5BufferedRWPairTest.test_constructor_with_not_readablecCs,Gdd�dt�}|jt|j|j�|��dS)Nc@seZdZdd�ZdS)zLBufferedRWPairTest.test_constructor_with_not_writeable.<locals>.NotWriteablecSsdS)NFr)r*rrrr.lszUBufferedRWPairTest.test_constructor_with_not_writeable.<locals>.NotWriteable.writableN)rrrr.rrrr�NotWriteableksr
)r>ryrOrc)r*r
rrr�#test_constructor_with_not_writeablejsz6BufferedRWPairTest.test_constructor_with_not_writeablecCsv|j|jd�|j��}|j|jd�d�|j|jd�d�|j|j�d�|j|jd�|j��}|j|jd�d�dS)Nsabcdefr�sabcr6rsef)rcr�r>rwrA)r*r	rrrr�qszBufferedRWPairTest.test_readcsX�fdd�}�j|�j�dddg��j|�j�dddg��j|�jd�ddg�dS)Ncs�j�jd��j��S)Ns	abc
def
h)rcr�r>r)r*rrr
{sz3BufferedRWPairTest.test_readlines.<locals>.<lambda>sabc
sdef
rtrI)rwr�)r*r	r)r*rr�zsz!BufferedRWPairTest.test_readlinescCs,|j|jd�|j��}|j|jd�d�dS)Nsabcdefr�sabc)rcr�r>rwr2)r*r	rrrr��szBufferedRWPairTest.test_read1cCslxfdD]^}|j|��J|j|jd�|j��}td�}|jt||�|�d�|jt|�d�WdQRXqWdS)	Nr:r�sabcdefr�rIsabcde)r:r�s)r�rcr�r>rrwr4r)r*r6r	rrrrr��s
z BufferedRWPairTest.test_readintocCsf|j�}|j|j�|�}|jd�|j�td�}|j|�d|dd�<|j�|j|jddg�dS)Nsabcsdefs***)r>rcr-r�rxrwr')r*r�r	r{rrrr��s

zBufferedRWPairTest.test_writecCsB|j|jd�|j��}|j|jd�jd��|j|jd�d�dS)Nsabcdefr�sabc)rcr�r>rr�r�rwrA)r*r	rrr�	test_peek�szBufferedRWPairTest.test_peekcCs&|j|j�|j��}|j|j��dS)N)rcr>rr1)r*r	rrr�
test_readable�sz BufferedRWPairTest.test_readablecCs&|j|j�|j��}|j|j��dS)N)rcr>rr.)r*r	rrr�test_writeable�sz!BufferedRWPairTest.test_writeablecCs&|j|j�|j��}|j|j��dS)N)rcr>rr2)r*r	rrr�
test_seekable�sz BufferedRWPairTest.test_seekablecCs8|j|j�|j��}|j|j�|j�|j|j�dS)N)rcr>rrNrPr)r*r	rrr�test_close_and_closed�sz(BufferedRWPairTest.test_close_and_closedcCs�dd�}|j�}||_|j�}|j||�}|jt��}|j�WdQRX|jdt|j��|j|j	�|j
|j	�|j|j	�dS)NcSstdS)N)�reader_non_existingrrrr�reader_close�szIBufferedRWPairTest.test_reader_close_error_on_close.<locals>.reader_closer)r>rPrcryr�r�r$r%rrNr)r*rrQr�r	r~rrr� test_reader_close_error_on_close�sz3BufferedRWPairTest.test_reader_close_error_on_closecCs�dd�}|j�}|j�}||_|j||�}|jt��}|j�WdQRX|jdt|j��|j|j	�|j
|j	�|j|j	�dS)NcSstdS)N)�writer_non_existingrrrr�writer_close�szIBufferedRWPairTest.test_writer_close_error_on_close.<locals>.writer_closer)r>rPrcryr�r�r$r%rrNr)r*rrQr�r	r~rrr� test_writer_close_error_on_close�sz3BufferedRWPairTest.test_writer_close_error_on_closecCs�dd�}dd�}|j�}||_|j�}||_|j||�}|jt��}|j�WdQRX|jdt|j��|j|jj	t�|jdt|jj	��|j
|j�|j
|j�|j
|j�dS)NcSstdS)N)rrrrrr�szPBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.reader_closecSstdS)N)rrrrrr�szPBufferedRWPairTest.test_reader_writer_close_error_on_close.<locals>.writer_closerr)r>rPrcryr�r�r$r%r|r}rrN)r*rrrQr�r	r~rrr�'test_reader_writer_close_error_on_close�sz:BufferedRWPairTest.test_reader_writer_close_error_on_closecCs�Gdd�dt�}|j|d�|d��}|j|j��|j|d�|d��}|j|j��|j|d�|d��}|j|j��|j|d�|d��}|j|j��dS)Nc@seZdZdd�Zdd�ZdS)z8BufferedRWPairTest.test_isatty.<locals>.SelectableIsAttycSstj|�||_dS)N)r>r+�_isatty)r*�isattyrrrr+�s
zABufferedRWPairTest.test_isatty.<locals>.SelectableIsAtty.__init__cSs|jS)N)r)r*rrrr�sz?BufferedRWPairTest.test_isatty.<locals>.SelectableIsAtty.isattyN)rrrr+rrrrr�SelectableIsAtty�srFT)r>rcrrr)r*rr	rrr�test_isatty�szBufferedRWPairTest.test_isattycCs*|j|j�|j��}tj|�}d}d}dS)N)rcr>r�r)r*Zbrwrrrr�test_weakref_clearing�s
z(BufferedRWPairTest.test_weakref_clearingN)rrrr�r�rgr
rrr�r�r�r�r�rrrrrrrrrrrrrrrGs*			rc@seZdZejZdS)�CBufferedRWPairTestN)rrrr\r�rcrrrrr sr c@seZdZejZdS)�PyBufferedRWPairTestN)rrrr^r�rcrrrrr!sr!c@s�eZdZdZdZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+Zd+S),�BufferedRandomTestzrb+zwb+cCstj|�tj|�dS)N)r�r�r�)r*rrrr�s
z#BufferedRandomTest.test_constructorcCstj|�tj|�dS)N)r�r�r�)r*rrrr�s
z%BufferedRandomTest.test_uninitializedcCsn|jd
�}|j|d�}|jd|jd��|jd�|jd�|j|j�|jd|j��|jd|jd	�dS)N�asdf�ghjkr�sasrEsdddseeesdddeeer)r#r$)r>rcrwrAr-rr')r*r�r�rrr�test_read_and_writes


z&BufferedRandomTest.test_read_and_writecCs|jd�}|j|�}|jd|jd��|jd|j��|jdd�|jd|jd��|jd�|jdd�|jd|j��|jd	|j��|jdd�|jd
|j��|jdd�|jd|j��|jd
|jd��|j�|jd|j��|j	t
|jd�dS)Ns	asdfghjklsasrErsasdfr�s123fs	asdf123flrrrIr6rEsfl�g���)r�rcrwrAr5r4r-r�r�ryrz)r*r�r�rrr�test_seek_and_tell!s$


z%BufferedRandomTest.test_seek_and_tellcCs�|jd�}|j|�}|jd||d��|jd�|jd||d��|jd|j��|j�|jd|j��|jd||��|jdd�|jd	�|j�|jdd�|jd	||d
��dS)Ns	abcdefghisabrEs12sefrqsghirsXYZr�)r�rcrwr-r5r�r4)r*Z	read_funcr�rhrrr�check_flush_and_read8s



z'BufferedRandomTest.check_flush_and_readcCs|jdd��dS)NcWs
|j|�S)N)rA)rhrZrrrr
Ksz8BufferedRandomTest.test_flush_and_read.<locals>.<lambda>)r))r*rrr�test_flush_and_readJsz&BufferedRandomTest.test_flush_and_readcCsddd�}|j|�dS)Nr6cSs.t|dkr|nd�}|j|�}t|d|��S)Nri')rxr:r)rhr9r
rrr�	_readintoNs
z=BufferedRandomTest.test_flush_and_readinto.<locals>._readintorf)rf)r))r*r+rrr�test_flush_and_readintoMs
z*BufferedRandomTest.test_flush_and_readintocCsddd�}|j|�dS)Nr6cSs2|j|�}|dkr|d|�}|jt|�d�|S)Nr6rf)r�r4r)rhr9r
rrr�_peekUs

z5BufferedRandomTest.test_flush_and_peek.<locals>._peekrf)rf)r))r*r-rrr�test_flush_and_peekTs
z&BufferedRandomTest.test_flush_and_peekcCsh|jd�}|j|�}|jd�|j�|jd�|j�|jdd�|jd|j��|jd|j��dS)Ns	abcdefghis123s45rs	12345fghi)r�rcr-r�r4rwr�rA)r*r�rhrrr�test_flush_and_write_s



z'BufferedRandomTest.test_flush_and_writecCstj|�tj|�dS)N)r�r�r�)r*rrrr�ks
zBufferedRandomTest.test_threadscCs(dd�}|j|�dd�}|j|�dS)NcSs|jd�dS)Nr6)r�)rhrrrr-psz6BufferedRandomTest.test_writes_and_peek.<locals>._peekcSs.|j�}|jdd�|jd�|j|d�dS)Nr6rrf)r5r4r�)rhr
rrrr-ss
)r�)r*r-rrr�test_writes_and_peekos
z'BufferedRandomTest.test_writes_and_peekcCsdd�}|j|�dS)NcSs|jdd�|jd�dS)Nr6rf)r4rA)rhrrr�_read{sz7BufferedRandomTest.test_writes_and_reads.<locals>._read)r�)r*r1rrr�test_writes_and_readszsz(BufferedRandomTest.test_writes_and_readscCsdd�}|j|�dS)NcSs|jdd�|jd�dS)Nr6rf)r4r2)rhrrr�_read1�sz9BufferedRandomTest.test_writes_and_read1s.<locals>._read1)r�)r*r3rrr�test_writes_and_read1s�sz)BufferedRandomTest.test_writes_and_read1scCsdd�}|j|�dS)NcSs|jdd�|jtd��dS)Nr6rf)r4r:rx)rhrrrr1�sz;BufferedRandomTest.test_writes_and_readintos.<locals>._read)r�)r*r1rrr�test_writes_and_readintos�sz,BufferedRandomTest.test_writes_and_readintoscCs�x�dD]�}|jd	�}|j|d�}|j|jd�d�|j|j�d�|jd|�|j|j�|d�|j�|j|j�|d�|j�}|j|dd|dd|�qWdS)
Nr6rIr�rr��Brr)r6rIs
AAAAAAAAAA)r�rcrwrAr5r-r�r�)r*Zoverwrite_sizer�rhrbrrr�test_write_after_readahead�s

z-BufferedRandomTest.test_write_after_readaheadcCs�dd�}d}x�tdt|��D]x}xrt|t|��D]`}|j|�}|j|d�}||||�|j�t|�}d||<d||<|j|j�|d||f�q0WqWdS)	NcSs:|j|�|j||�|jd�|j|�|jd�dS)N��)r4rAr-)rhZpos1Zpos2rrr�mutate�s



z:BufferedRandomTest.test_write_rewind_write.<locals>.mutates�����rr�rEr6zfailed result for i=%d, j=%d)r�rr�rcr�rxrwr�)r*r:r
r��jr�rh�expectedrrr�test_write_rewind_write�s
z*BufferedRandomTest.test_write_rewind_writecCs^|jd�}|j|d�}|j|jd�d�|j|j�d�|j|jd�d�|j|j�d�dS)	Nr�rr�rEsAAsBBr�s
AAAAAAAAAA)r�rcrwrAr;r-)r*r�rhrrr�!test_truncate_after_read_or_write�s
z4BufferedRandomTest.test_truncate_after_read_or_writecCstj|�tj|�dS)N)r�r�r�)r*rrrr��s
z%BufferedRandomTest.test_misbehaved_iocCs:|jd���}|j|d���}|jd�|j|jd�d�|jd�|j|jd�d�|jd�td�}|j|�|j|d	�|jd
�|j|jd�d�|j	�|j|j
�d�WdQRXWdQRX|jd
��d}|j|d��L}|j|jd�d�|jd�|j|jd�d�|j	�|j|j
�d�WdQRXWdQRXdS)Nsabcdefghr��1r6r��2rr��f�4rts1b2d3f4hsabcr�rsa2c)r�rcr-rwrAr2rxr:r�r�r�)r*r�r"r8rrr�test_interleaved_read_write�s*




$
z.BufferedRandomTest.test_interleaved_read_writecCs�|jd���}|j|��l}|jd�|j|j�d�|jd�|j|j�d�|jd�|j|j�d�|j�|j|j�d�WdQRXWdQRXdS)	Ns
ab
cdef
g
r?sb
r@sdef
r��
s
1b
2def
3
)r�rcr-rwr�r�r�)r*r�r"rrr�test_interleaved_readline_write�s


z2BufferedRandomTest.test_interleaved_readline_writeN)rrrr�r�r�r�r%r(r)r*r,r.r/r�r0r2r4r5r7r=r>r�rCrEr�rrrrr"
s.
r"c@s*eZdZejZdd�Zdd�Zdd�ZdS)�CBufferedRandomTestcCsDtj|�tjdkr@|j�}|j|�}|jttt	f|j
|tj�dS)Ni���)r"r�r�rr>rcryr�r�rhr+)r*rrhrrrr��s


z$CBufferedRandomTest.test_constructorcCstj|�tj|�dS)N)r�rr)r*rrrr�s
z+CBufferedRandomTest.test_garbage_collectioncCs0|jtd��|jtj�ddd�WdQRXdS)Nr�i)r;rzrcr\r�)r*rrrr�	sz#CBufferedRandomTest.test_args_errorN)	rrrr\r�rcr�rr�rrrrrF�s
rFc@seZdZejZdS)�PyBufferedRandomTestN)rrrr^r�rcrrrrrG	srGc@sXeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
d�Zdd�Z	dZ
edd��ZdS)�StatefulIncrementalDecoder�strictcCstjj||�|j�dS)N)�codecs�IncrementalDecoderr+�reset)r*r�rrrr+'	sz#StatefulIncrementalDecoder.__init__cCsdt|�S)Nz<SID %x>)�id)r*rrr�__repr__+	sz#StatefulIncrementalDecoder.__repr__cCsd|_d|_t�|_dS)Nr6)r��orxr{)r*rrrrL.	sz StatefulIncrementalDecoder.resetcCs,|jdA|jdA}}t|j�|d|fS)Nr6r�)r�rOrr{)r*r�rOrrr�getstate3	sz#StatefulIncrementalDecoder.getstatecCs:|\}}t|�|_t|d�\}}|dA|dA|_|_dS)Nr�r6)rxr{�divmodr�rO)r*�stater{r\r�rOrrr�setstate7	s
z#StatefulIncrementalDecoder.setstateFcCs�d}xl|D]d}|jdkrF|td�kr8|jrD||j�7}qn|jj|�q
|jj|�t|j�|jkr
||j�7}q
W|r�|jr�||j�7}|S)Nr�r�.)r��ordr{�process_wordr,r)r*�input�final�outputr
rrr�decode=	s


z!StatefulIncrementalDecoder.decodecCs�d}|jdtd�kr6tdt|jdd�p,d��|_nv|jdtd�krhtdt|jdd�p^d��|_nD|jjd�}t|�|jkr�|d|j7}|jr�|d|j�}|d	7}t�|_|S)
Nr�rr��cr6rOr��-rT)	r{rUrC�intr�rOrZrrx)r*rYrrrrVN	s  z'StatefulIncrementalDecoder.process_wordc	Cs6|jr2|dkr2tjd�}tjd|jdddd|d�SdS)N�test_decoderzlatin-1)rSr9rZ�incrementalencoder�streamreader�streamwriter�incrementaldecoder)�codecEnabledrJ�lookup�	CodecInfor9)�clsrS�latin1rrr�lookupTestDecoder`	s
z,StatefulIncrementalDecoder.lookupTestDecoderN)rI)F)
rrrr+rNrLrPrSrZrVrc�classmethodrhrrrrrH	s

rHc
@s&eZdZddddd d!d+gZdd�ZdS),�StatefulIncrementalDecoderTest�abcdF�a.b.c.d.�oiabcdT�abcd.�oi...abcd...�i.o6.x.xyz.toolongtofit.�x-----.xyz---.toolon.�
i.i2.o6xyz�xy----.z-----.�i.o3.i6.abcdefghijklmnop�abc.ghi.mno.�;i.o29.a.b.cde.o15.abcdefghijabcdefghij.i3.a.b.c.d.ei00k.l.mza----------------------------.zb----------------------------.zcde--------------------------.zabcdefghijabcde.za.b------------.z.c.------------.zd.e------------.zk--------------.zl--------------.zm--------------.cCs`x.|jD]$\}}}t�}|j|j||�|�qWt�}|j|jd�d�|j|jdd�d�dS)Nsoiabcdr�r?r6zabcd.)�
test_casesrHrwrZ)r*rW�eofrY�drrrr^�	sz+StatefulIncrementalDecoderTest.test_decoderN)rkFrl)rmTrn)roTrn)rpFrq)rrTrs)rtTruz<a----------------------------.b----------------------------.zZa----------------------------.b----------------------------.cde--------------------------.zja----------------------------.b----------------------------.cde--------------------------.abcdefghijabcde.zza----------------------------.b----------------------------.cde--------------------------.abcdefghijabcde.a.b------------.z�a----------------------------.b----------------------------.cde--------------------------.abcdefghijabcde.a.b------------..c.------------.z�a----------------------------.b----------------------------.cde--------------------------.abcdefghijabcde.a.b------------..c.------------.d.e------------.z�a----------------------------.b----------------------------.cde--------------------------.abcdefghijabcde.a.b------------..c.------------.d.e------------.k--------------.z�a----------------------------.b----------------------------.cde--------------------------.abcdefghijabcde.a.b------------..c.------------.d.e------------.k--------------.l--------------.��a----------------------------.b----------------------------.cde--------------------------.abcdefghijabcde.a.b------------..c.------------.d.e------------.k--------------.l--------------.m--------------.)rvTrz)rrrrwr^rrrrrjo	s	rjc@s(eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Ze
jdd��Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Z d9d:�Z!d;d<�Z"d=d>�Z#d?d@�Z$dAdB�Z%dCdD�Z&dEdF�Z'dGdH�Z(dIdJ�Z)dKdL�Z*dMdN�Z+dOdP�Z,dQdR�Z-dSdT�Z.dUdV�Z/dWdX�Z0e
j1e2j3e4dY�dZd[���Z5d\d]�Z6d^d_�Z7d`da�Z8dbdc�Z9ddde�Z:dfdg�Z;dhdi�Z<djdk�Z=dldm�Z>dndo�Z?dpdq�Z@drds�ZAdtdu�ZBe
jCdvdw��ZDe
jCdxdy��ZEdzd{�ZFd|d}�ZGd~d�ZHd�S)��TextIOWrapperTestcCs"d|_djd�|_tjtj�dS)NsAAA
BBB
CCC
DDD
EEE
sAAA
BBB
CCC
DDD
EEE
r�)�testdatarZ�
normalizedrrmrn)r*rrrro�	szTextIOWrapperTest.setUpcCstjtj�dS)N)rrmrn)r*rrrrp�	szTextIOWrapperTest.tearDowncCs�|jd�}|j|d�}|j|�}|j|ddd�|j|jd�|j|jd�|j|ddd	�|j|jd�|j|jd�|jd
|j��|jt	|j|dd�|jt
|j|d
d�dS)Nsé

i�zlatin-1z
)rr/Fzutf-8T)r�line_bufferingué
r/)r/ro)r�r�r�r+rwrr~r�ryrzrh)r*rr
�trrrr��	s

z"TextIOWrapperTest.test_constructorcCsf|jj|j�}~|jj|j�}|jtt|�|jttfd|jd�|j	|j
��|j|jd�d�dS)Nzuninitialized|has no attributerr�)r�r�ryr�rfr;rhr�rAr+r>rw)r*rrrrr��	s

z$TextIOWrapperTest.test_uninitializedcCs<|j�}|j|�}|jtd��|j|dd�WdQRXdS)Nzis not a text encoding�hex)r)r�r�r;�LookupErrorr�)r*rr
rrr�*test_non_text_encoding_codecs_are_rejected�	s
z<TextIOWrapperTest.test_non_text_encoding_codecs_are_rejectedcCs�|j�}|j|�}|j|�}|j|j�|�|j|dd�}|jd�|j|j��|j�|j|j�d�|j	t
|j�t|�|j|jd�|j|j
d�|j|j�dS)Nr�)rZhowdyshowdyrI)r�r�r�rdrer-rr�rwryrhrfrr�r~)r*rr
rrrrrg�	s


zTextIOWrapperTest.test_detachcCs�|jdjd��}|j|�}|j|dd�}|jj}|jt|�d|�d|_|jt|�d|�d|_|jt|�d|�d	|_|jt|�d
|�|j	j
�t|�dS)NZhellozutf-8)rz#<%s.TextIOWrapper encoding='utf-8'>rvz0<%s.TextIOWrapper name='dummy' encoding='utf-8'>rz9<%s.TextIOWrapper name='dummy' mode='r' encoding='utf-8'>sdummyz:<%s.TextIOWrapper name=b'dummy' mode='r' encoding='utf-8'>)r�r9r�r�rrwrfrSr�r{re)r*r�r
r�modnamerrrrw�	s"









zTextIOWrapperTest.test_reprcCsR|j�}|j|�}tj|d|��(yt|�Wntk
rBYnXWdQRXdS)NrS)r�r�rrxrfry)r*r�rrrrrz�	s
z%TextIOWrapperTest.test_recursive_reprcCsv|j�}|j|d�}|j|ddd�}|jd�|j|j�d�|jd�|j|j�d�|jd	�|j|j�d
�dS)Ni��
T)r/r~�Xr?zY
ZsXY
ZzA
BsXY
ZA
B)r�r�r�r-rwr�)r*rr
rrrr�test_line_buffering�	s


z%TextIOWrapperTest.test_line_bufferingcCsvttj�}zNxdD]}|tjkrtj|=qWtjd�}|j�}|j|�}|j|j|�Wdtjj	�tjj
|�XdS)N�LC_ALL�LANG�LC_CTYPEF)r�r�r�)�dictr��environ�locale�getpreferredencodingr�r�rwr�clear�update)r*Zold_environ�keyZcurrent_locale_encodingr
rrrr�test_default_encoding
s





z'TextIOWrapperTest.test_default_encodingcsPddl�|j�}�fdd�|_|jt|j|��fdd�|_|jt|j|�dS)Nrcs
�jdS)Nr6)ZINT_MAXr)�	_testcapirrr

sz8TextIOWrapperTest.test_device_encoding.<locals>.<lambda>cs
�jdS)Nr6)ZUINT_MAXr)r�rrr

s)r�r�r0ryr�r�)r*r
r)r�r�test_device_encoding
sz&TextIOWrapperTest.test_device_encodingcCsJ|j�}|j|dd�}|j|jd�|j|�}|j|j�tj|j�dS)Nzutf-8)r)r�r�rwr�assertIsNotNonerJrd)r*r
rrrr�
test_encoding
s
zTextIOWrapperTest.test_encodingcCs�|jd�}|j|dd�}|jt|j�|jd�}|j|ddd�}|jt|j�|jd�}|j|ddd�}|j|j�d�|jd�}|j|ddd�}|j|j�d	�dS)
Nsabc
�
r�)rrI)rr�r�zabc

�replaceuabc
�
)r�r�ry�UnicodeErrorrArw)r*r
rrrr�test_encoding_errors_reading'
s



z.TextIOWrapperTest.test_encoding_errors_readingcCs�|j�}|j|dd�}|jt|jd�|j�}|j|ddd�}|jt|jd�|j�}|j|dddd�}|jd	�|j�|j|j�d
�|j�}|j|dddd�}|jd	�|j�|j|j�d�dS)
Nr�)r�ÿrI)rr�r�r�)rr�r/u	abcÿdef
sabcdef
r�sabc?def
)r�r�ryr�r-r�rwr�)r*r
rrrr�test_encoding_errors_writing9
s$



z.TextIOWrapperTest.test_encoding_errors_writingc	CsXdddddg}ddddddggd|gd	ddd
dggddd
ggddddggg}d }�x|D]�}tdj|�j|��}x�d!D]�}x�tdd�D]�}x�|D]�\}}	|j|j|�|�}
|j|
||d�}|�rg}xD|jd�}
|
dkr�P|jt	|
�d�|j
|
|j��q�Wnt|�}x$t
||	�D]\}}|j||��qW|jt	|�t	|	��q�Wq�WqvWqXWdS)"Nzunix
z	windows
zos9
zlast
Znonlzwindows
zos9
r�r�z	os9
last
z
zunix
windows
z
os9
last
nonl�
z
unix
windows
z
os9
z	last
nonl�utf-8�latin-1�utf-16�	utf-16-le�	utf-16-be�utf-32�	utf-32-le�	utf-32-beFTr6r)r/rrE)r�r�r�r�r�r�r�r�)FT)rrar9r�r�r�r�rArwrr,r�r%�zip)r*Zinput_linesr��	encodingsrrZdo_readsr�r/Z	exp_linesrh�textioZ	got_linesZc2Zgot_lineZexp_linerrr�
test_newlinesQ
s:


zTextIOWrapperTest.test_newlinesc
Cs�d}|jdd�jdd�}x�d|jd�jdd�fd|jd�jdd�fd	d
ddd
dgfddd
dgfddddddgfgD]R\}}|j|�}|j|d|d�}|j|j�|�|jd�|j|j�dj	|��qrWdS)NsAAA
BBB
CCC
DDD
EEE
FFF
GGGs
rD�
r�T)�keependsr�r�zAAA
zBBB
z
CCC
DDD
EEE
zFFF
ZGGGz
zAAA
BBB
CCC
DDD
EEE
r�z
AAA
BBB
CCC
zDDD
zEEE
z
FFF
z
GGG)rr/r)
r�rZrsr�r�rwr�r4rAra)r*r|r}r/r<r8�txtrrr�test_newlines_input{
s

z%TextIOWrapperTest.test_newlines_inputcCs�ddddd�}d|tjfgt|j��}xl|D]d\}}|j�}|j|d|d�}|jd�|jd�|jd	�|j�|j|j	d
�|j|j
�|�q0WdS)NsAAA
BBB
CCC
X
Y
ZsAAA
BBB
CCC
X
Y

ZsAAA
BBB
CCC
X
Y

Z)r�r�r�z
r�)rr/zAAA
BzBB
CCC
zX
Y
ZF)r��linesep�sorted�itemsr�r�r-r�rwrNr�)r*Ztestdictr�r/r<r8r�rrr�test_newlines_output�
s


z&TextIOWrapperTest.test_newlines_outputcsZg�|j�G��fdd�d��}|�}|j|dd�}|jd�~tj�|jdg��dS)NcseZdZ��fdd�ZdS)z4TextIOWrapperTest.test_destructor.<locals>.MyBytesIOcs�j|j���j|�dS)N)r,r�rP)r*)r�r�rrrP�
sz:TextIOWrapperTest.test_destructor.<locals>.MyBytesIO.closeN)rrrrPr)r�r�rr�	MyBytesIO�
sr�r�)rr�sabc)r�r�r-rr�rw)r*r�r
rr)r�r�rr��
s
z!TextIOWrapperTest.test_destructorcsNg�G�fdd�d|j�}|j�}||dd�}~tj�|j�dddg�dS)Ncs:eZdZ��fdd�Z��fdd�Z��fdd�Z�ZS)z<TextIOWrapperTest.test_override_destructor.<locals>.MyTextIOcs6�jd�yt�j}Wntk
r*YnX|�dS)Nr6)r,rFr�r�)r*r")rGr�rrr��
s
zDTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.__del__cs�jd�t�j�dS)NrE)r,rFrP)r*)rGr�rrrP�
s
zBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.closecs�jd�t�j�dS)Nr�)r,rFr�)r*)rGr�rrr��
s
zBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.flush)rrrr�rPr�rJr)r�)rGr�MyTextIO�
sr�r�)rr6rEr�)r�r�rr�rw)r*r�r
rr)r�rrl�
sz*TextIOWrapperTest.test_override_destructorc
s��j����fdd�}tjd��}�jt|�WdQRX|j�j�}|r��jt|j	��d��j
|jd�|��j
|jd�|�dS)Ncs�j��jdS)N)r�ror)rr*rrr"�
sz:TextIOWrapperTest.test_error_through_destructor.<locals>.frpr6zException OSError: z ignored)
rMrrqryr�r�rrrwrrsrr�rt)r*r"rbr)rr*rru�
sz/TextIOWrapperTest.test_error_through_destructorcCs��x�dD�]�}�x~dD�]t}|jtjd|d�}||_|j|jd�d�|j�|jtjd|d�}||_|j|j�d�|j|j�d�|j�}|j|j	d�d�|j|jd�d�|j	d�|j|jd�d�|j|jd�d�|j|jd�d�|j|j�d�|j|j�|�|j|j	d�d�|j|j	dd�|�|j|jd�d�|j|j	|�|�|j|j�d�|j
d��r�|j||�|j�qWqWdS)Nr6rEr�r�rIr�r��r�r��!�?�@�Ar��latin-1�utf-8zw+)rr�zr+rr�r�r��def�utf)r6rEr�r�rIr�r�r�r�r�r�r�r�r�)r�r�r�)rrrnr!rwr-rPr5rAr4r��multi_line_test)r*Z	chunksize�encr"�cookierrr�
test_basic_io�
s6
zTextIOWrapperTest.test_basic_iocCs�|jd�|j�d}g}xbdD]Z}g}x&t|�D]}|j||t|��q2Wdj|�d}|j|j�|f�|j|�q W|jd�g}	x(|j�}
|j�}|s�P|	j|
|f�q�W|j	|	|�dS)Nru	sÿ࿿￿r6rEr�r�rI�r�r�r��>r�r�r���r�r�)rr6rEr�r�rIr�r�r�r�r�r�r�r�r�)
r4r;r�r,rrar5r-r�rw)r*r"r�ZsampleZwlinesr1�charsr��lineZrlinesr
rrrr��
s(


z!TextIOWrapperTest.multi_line_testcCs�|jtjddd�}|j�}|jd�|j�}|jd�|j�}|jd�|j|j�|�|j|j�d�|j|j�|�|j|j�d�|j|j�|�|jd�x&|D]}|j|d�|jt	|j�q�W|j|j�|�|j
�dS)Nzw+zutf-8)ruÿ
r)rrrnr5r-r4rwr�ryrOrP)r*r"Zp0Zp1Zp2r�rrr�test_tellings$




zTextIOWrapperTest.test_tellingc
Cs�t�}|d}d|}t|jd��}|jt|�t|��d}t|jd��}||}|jtjd��}|j|d�WdQRX|jtjddd��B}|j	|�}	|j|	t
|d��|j|j�|�|j|j�|�WdQRXdS)	NrEr�zutf-8u袈
r�r)rr�)
r#rr9rwrrrrnr-rAr$r5r�)
r*Z
chunk_sizeZprefix_sizeZu_prefix�prefixZu_suffix�suffixr�r"rbrrr�test_seekings
zTextIOWrapperTest.test_seekingcCsfd}|jtjd��}|j|�WdQRX|jtjddd��"}|jd|_|j�|j�WdQRXdS)Ns࿿
r�rzutf-8)rrE)rrrnr-r!r�r5)r*rr"rrr�test_seeking_too+sz"TextIOWrapperTest.test_seeking_toocs�d�d��fdd�	}dt_zfxtjD]\}}}||�q$WxBtjD]8\}}}�t|�d}d|}|d}||||�qBWWddt_XdS)	N�rcs��jtjd�}|j|�|j��jtjdd�}�|_|j�}|j�x�t|t|�d�D]�}x�ddt|�|gD]~}�jtjdd�}�j	|j|�|d|��|j
�}�j	|j|�||||��|j|��j	|j�||d��|j�qrWqZWdS)Nr�r^)rr6rI)rrrnr-rPr!rAr�rrwr5r4)r�min_posr"Zdecodedr�r;r�)�
CHUNK_SIZEr*rr�test_seek_and_tell_with_data;s 

zJTextIOWrapperTest.test_seek_and_tell.<locals>.test_seek_and_tell_with_datar6rE�.)r)rHrcrjrwr)r*r�rW�_�offsetr�r�r)r�r*rr(6sz$TextIOWrapperTest.test_seek_and_tellcCs�d}d}x�|D]�}|j�}|j||d�}|j|�|j|�|jd	�|j|j�|d
�|jd	�|j|j�|d
�|j|j�|d
j|��qWdS)NZ
1234567890�utf-16�	utf-16-le�	utf-16-be�utf-32�	utf-32-le�	utf-32-be)rrrE)r�r�r�r�r�r�)r�r�r-r4rwrAr�r9)r*rr�rr8r"rrr�test_encoded_writeses"




z%TextIOWrapperTest.test_encoded_writescCs0Gdd�d|j�}|j|��}|jt|j�dS)Nc@seZdZdd�ZdS)z5TextIOWrapperTest.test_unreadable.<locals>.UnReadablecSsdS)NFr)r*rrrr1{sz>TextIOWrapperTest.test_unreadable.<locals>.UnReadable.readableN)rrrr1rrrr�
UnReadablezsr�)r�r�ryrOrA)r*r�r�rrr�test_unreadableysz!TextIOWrapperTest.test_unreadablecCsB|j|jd��}d}x|jd�}|s&P||7}qW|j|d�dS)NsAA
BBr�r6zAA
BB)r�r�rArw)r*r��readsr�rrr�test_read_one_by_one�s
z&TextIOWrapperTest.test_read_one_by_onecCsl|j|jd��}|j|j�dddg�|jd�|j|jd�dddg�|jd�|j|jd�ddg�dS)NsAA
BB
CCzAA
zBB
�CCrrI)r�r�rwr�r4)r*r�rrrr��s

z TextIOWrapperTest.test_readlinescCsR|j|jddd��}d}x|jd�}|s.P||7}qW|j|ddd�dS)Nr��s
Br�r��Az
B)r�r�rArw)r*r�r�r�rrr�test_read_by_chunk�s
z$TextIOWrapperTest.test_read_by_chunkcCsBdddg}|j�}|j|�}|j|�|j�|j|j�d�dS)Nr��cd�efsabcdef)r�r�r�r�rwr�)r*r�r8r�rrrr��s


z!TextIOWrapperTest.test_writelinescCsFtdddg�}|j�}|j|�}|j|�|j�|j|j�d�dS)Nr�r�r�sabcdef)rr�r�r�r�rwr�)r*r�r8r�rrrr��s

z*TextIOWrapperTest.test_writelines_userlistcCsH|j|j��}|jt|jdddg�|jt|jd�|jt|jd�dS)Nr6rEr�sabc)r�r�ryrzr�)r*r�rrrr��sz'TextIOWrapperTest.test_writelines_errorcCsJ|j|j|j�dd�}d}x|jd�}|s,P||7}qW|j||j�dS)Nr�)rr�r6)r�r�r|rArwr})r*r�r�r�rrr�test_issue1395_1�s
z"TextIOWrapperTest.test_issue1395_1cCsP|j|j|j�dd�}d|_d}x|jd�}|s2P||7}q"W|j||j�dS)Nr�)rr�r�)r�r�r|r!rArwr})r*r�r�r�rrr�test_issue1395_2�s
z"TextIOWrapperTest.test_issue1395_2cCsj|j|j|j�dd�}d|_|jd�}||jd�7}||j�7}||j�7}||j�7}|j||j�dS)Nr�)rr�)r�r�r|r!rAr�rwr})r*r�r�rrr�test_issue1395_3�s
z"TextIOWrapperTest.test_issue1395_3cCsD|j|j|j�dd�}d|_|jd�}||j�7}|j||j�dS)Nr�)rr�)r�r�r|r!rArwr})r*r�r�rrr�test_issue1395_4�s

z"TextIOWrapperTest.test_issue1395_4cCsX|j|j|j�dd�}d|_|jd�}|j�}|jd�|j|�|j|jd�d�dS)Nr�)rr�rzBBB
)r�r�r|r!rAr5r4rw)r*r�r�r
rrr�test_issue1395_5�s


z"TextIOWrapperTest.test_issue1395_5cCs2|j|j�}|j|dd�}|j|j�|j��dS)Nr�)r)r�r|r�rwr2)r*r{r�rrr�test_issue2282�sz TextIOWrapperTest.test_issue2282c!Cs�tj}x�dD]�}|j|d|d��}|jd�|j�}WdQRX|j|d��}|j|j�dj|��WdQRX|j|d|d��}|jd	�WdQRX|j|d��}|j|j�d
j|��WdQRXqWdS)N�	utf-8-sig�utf-16�utf-32r�)r�aaar�r��xxx�aaaxxx)r�r�r�)rrnrr-r5rwrAr9)r*�filename�charsetr"r
rrr�test_append_bom�s

 z!TextIOWrapperTest.test_append_bomcCs�tj}x�d
D]�}|j|d|d��}|jd�|j�}WdQRX|j|d|d��.}|j|�|jd�|jd	�|jd
�WdQRX|j|d��}|j|j�dj|��WdQRXqWdS)N�	utf-8-sig�utf-16�utf-32r�)rr�zr+ZzzzrZbbbr�Zbbbzzz)r�r�r�)	rrnrr-r5r4rwrAr9)r*r�r�r"r
rrr�
test_seek_bom�s




zTextIOWrapperTest.test_seek_bomcCs�tj}x�dD]�}|j|d|d��}|jd�WdQRX|j|d|d��(}|jd�|jd|j�|jd	�WdQRX|j|d
��}|j|j�dj|��WdQRXqWdS)
N�	utf-8-sig�utf-16�utf-32r�)rr�r�rr�r�r�)r�r�r�)	rrnrr-r4r�rwrAr9)r*r�r�r"rrr�test_seek_append_bom
s

z&TextIOWrapperTest.test_seek_append_bomcCsX|jtjd��}|j|jd�WdQRX|jtjddd��}|j|jd�WdQRXdS)Nr�rIr�)r�)rrrnrwr�)r*r"rrr�test_errors_propertysz&TextIOWrapperTest.test_errors_propertyz!Threading required for this test.cs�tj��|jtjddd��N���fdd���fdd�td�D�}tj|�j��tj	d	�WdQRXWdQRX|jtj��6��j
�}x&td�D]}|j|jd
|�d�q�WWdQRXdS)Nr�r6)r�csd|}�j��j|�dS)NzThread%03d
)�waitr-)r9�text)�eventr"rr�run&sz1TextIOWrapperTest.test_threads_write.<locals>.runcsg|]}tj�|fd��qS))r�rZ)r�r�)r�r�)r�rrr�*sz8TextIOWrapperTest.test_threads_write.<locals>.<listcomp>r}g{�G�z�?zThread%03d
)
r�ZEventrrrnr�r�r^r�r�rArwr)r*r�Zcontentr9r)r�r"r�r�test_threads_write s
z$TextIOWrapperTest.test_threads_writecs�|j|j|j�dd��g���fdd�}|�_|jt�j�|j�j�|j�j	j�|j��|j
�d�|j
�d�dd��_dS)	Nr�)rcs �j�jjg�dd�<t��dS)N)rNr{rOr)rNr�rrr	8sz>TextIOWrapperTest.test_flush_error_on_close.<locals>.bad_flushrr6cSsdS)Nrrrrrr
Bsz=TextIOWrapperTest.test_flush_error_on_close.<locals>.<lambda>)r�r�r|r�ryrOrPrrNr{r)r*r	r)rNr�rr3s
z+TextIOWrapperTest.test_flush_error_on_closec
Cs�|j|j�}dd�}dd�}||_|j|dd�}||_|jt��}|j�WdQRX|j|jj	d	�|j
|jjt�|j|jjj	d
�|j|j
�dS)NcSstd��dS)Nr�)rOrrrrr	Fsz>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_flushcSstd��dS)NrP)rOrrrrr{Hsz>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_closer�)rrPr�)rP)r�)r�r|rPr�r�ryrOrwr%rZr|r}rrN)r*r{r	r{r�r~rrrrDsz+TextIOWrapperTest.test_close_error_on_closecCs�|j|j�}dd�}dd�}||_|j|dd�}||_|jt��}|j�WdQRX|jdt|j	��|j
|j	jt�|jdt|j	j��|j|j
�dS)	NcSst�dS)N)r�rrrrr	WszLTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.bad_flushcSst�dS)N)r�rrrrr{YszLTextIOWrapperTest.test_nonnormalized_close_error_on_close.<locals>.bad_closer�)rr�r�)r�r|rPr�r�ryr�r�r$r%r|r}rrN)r*r{r	r{r�r~rrrr�Tsz9TextIOWrapperTest.test_nonnormalized_close_error_on_closecCs@|j|j|j�dd�}|j�|j�|j�|jt|j�dS)Nr�)r)r�r�r|rPryrhr�)r*r�rrrres
z"TextIOWrapperTest.test_multi_closecCs8|j|j|j��}|j|j|j�|j|j|jd�dS)Nr)r�rXr|ryrYr5r4)r*r�rrrr�lsz!TextIOWrapperTest.test_unseekablec	CsB|j|j|j�dd�}|j|j�}|jt��||_WdQRXdS)Nr�)r)r�r�r|ryr�r{)r*r�r8rrrr�qsz*TextIOWrapperTest.test_readonly_attributescCsZ|jdddg�}|j|ddd�}|j|jd�d�|j|j�d	�|jt|�d
dg�dS)Nsabcsdefsghi
jkl
opq
r�r�)rr/r�Zabcdzefghi
zjkl
zopq
)r>r�rwrAr�r%)r*r�r�rrr�
test_rawiows
zTextIOWrapperTest.test_rawiocCsX|jdddg�}|j|dddd�}|jd�|jd	�|jd
�|jdj|j�d�dS)
Nsabcsdefsghi
jkl
opq
r�r�T)rr/�
write_through�1z23
4�5r?s123
45)r>r�r-rwrar')r*r�r�rrr�test_rawio_write_through�s



z*TextIOWrapperTest.test_rawio_write_throughcs�gg��G��fdd�d|j�}|j�}d}||t|�d�}|j|ddd�}|jd�}|j|�|j��|j��|j|j	�d�g�|j|d	�|j��|j|j	�|d
�dS)Ncs,eZdZ��fdd�Z��fdd�Z�ZS)zBTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWritercs�jd�t�j||�S)NT)r,rFr�)r*rZr
)rG�flush_calledrrr��s
zHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.flushcs�jd�t�j||�S)NT)r,rFr-)r*rZr
)rG�write_calledrrr-�s
zHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.write)rrrr�r-rJr)rr)rGrr��sr�r�rEr�T)rr�r?rr&)
r�r�rr�rZr-rrrwr�)r*r�rrrhr�r�r)rrr�test_bufio_write_through�s 





z*TextIOWrapperTest.test_bufio_write_throughcCs`|j|jd��}|jt|jd�|j|jd��}|jt|j�|j|jd��}|jt|j�dS)Nr�r6)r�r�ryrzrAr�)r*rrrr�test_read_nonbytes�sz$TextIOWrapperTest.test_read_nonbytescCsLtjd�}tj|dd��tjtjd�dd�}WdQRX|jt|j	d�dS)N�rot13�_is_text_encodingTsfoo)rZbar)
rJrdrrxr\r�r�ryrzr-)r*rrrrr�test_illegal_encoder�s
z&TextIOWrapperTest.test_illegal_encodercs��fdd����}�jt|jd���}�jt|j���}�jt|j��fdd�}|d�}�jt|jd�|f�}�jt|jd�|d�}�jt|jd�dS)	Ncs8tjd�}d|_z�j�jd�ddd�}Wdd|_X|S)N�quopriTsaaaaaar�)r/rF)rJrdrr�r�)r
r)r*rr�_make_illegal_wrapper�s
zETextIOWrapperTest.test_illegal_decoder.<locals>._make_illegal_wrapperr6c	sHG�fdd�d���fdd�}tjd�}tj|d|����SQRXdS)NcseZdZ�fdd�ZdS)z^TextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>.BadDecodercs�S)Nr)r*)�getstate_ret_valrrrP�szgTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>.BadDecoder.getstateN)rrrrPr)rrr�
BadDecoder�sr
cs��S)Nr)rv)r
rr�_get_bad_decoder�szdTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>._get_bad_decoderr
rb)rJrdrrx)rrr
)r)r
rr�_make_very_illegal_wrapper�s
zJTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapperr/rE)r6rE)ryrzrAr�)r*rrr)rr*r�test_illegal_decoder�s

z&TextIOWrapperTest.test_illegal_decodercKs |jj}dj||d�}td|�S)Na�if 1:
            import codecs
            import {iomod} as io

            # Avoid looking up codecs at shutdown
            codecs.lookup('utf-8')

            class C:
                def __init__(self):
                    self.buf = io.BytesIO()
                def __del__(self):
                    io.TextIOWrapper(self.buf, **{kwargs})
                    print("ok")
            c = C()
            )�iomodr
z-c)r\rrr)r*r
r�coderrr�_check_create_at_shutdown�sz+TextIOWrapperTest._check_create_at_shutdowncCs>|j�\}}}|r&|j|j|j��n|jd|j�j��dS)N�ok)rr��shutdown_errorrZrwrr)r*�rc�outr~rrr�(test_create_at_shutdown_without_encoding�sz:TextIOWrapperTest.test_create_at_shutdown_without_encodingcCs6|jddd�\}}}|j|�|jd|j�j��dS)Nzutf-8rI)rr�r)rrrwrZrr)r*rrr~rrr�%test_create_at_shutdown_with_encoding
s
z7TextIOWrapperTest.test_create_at_shutdown_with_encodingcCs@td�}|j|d�}t|j��j�}|j|jd�|jd��dS)NsJust some random string
zutf-8r�)�MemviewBytesIOr��_to_memoryviewr�r�rwrArZ)r*rrZ	bytes_valrrr�test_read_byteslike
sz%TextIOWrapperTest.test_read_byteslikecCsjGdd�dt�}x:td�D].}y|j|�dd�Wqtk
rFYqXqWdd�|_|j|�dd�}dS)Nc@s$eZdZdd�Zdd�Zdd�ZdS)z,TextIOWrapperTest.test_issue22849.<locals>.FcSsdS)NTr)r*rrrr1
sz5TextIOWrapperTest.test_issue22849.<locals>.F.readablecSsdS)NTr)r*rrrr.
sz5TextIOWrapperTest.test_issue22849.<locals>.F.writablecSsdS)NTr)r*rrrr2
sz5TextIOWrapperTest.test_issue22849.<locals>.F.seekableN)rrrr1r.r2rrrr�F
srrzutf-8)rcSsdS)Nrr)r�rrrr
#
sz3TextIOWrapperTest.test_issue22849.<locals>.<lambda>)�objectr�r�r�r5)r*rr�rrrr�test_issue22849
s

z!TextIOWrapperTest.test_issue22849cCsb|j|jd�dd�}|jd�|j�|j�|j|jd�dd�}|jd�|jd�|j�dS)Nstestr�)rr6r�)r�r�rAr5r-)r*rrrr�test_issue25862&
s


z!TextIOWrapperTest.test_issue25862N)Irrrrorpr�r�r�rgrwrzr�r�rr�r�r�r�r�r�r�r�r�rlrur�r�r�r�r�r(r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��
no_tracingr�r�r�r�rrr�rr�r�r�rrrr	rrZrequires_type_collectingrrrrr rrrrr{�	s�	

	*/
	


 
(
r{cs(eZdZ�fdd�Z�fdd�Z�ZS)rcstt�j|��S)N)rrFr2)r*�len_)rGrrr26
szMemviewBytesIO.read1cstt�j|��S)N)rrFrA)r*r")rGrrrA9
szMemviewBytesIO.read)rrrr2rArJrr)rGrr2
srcCs:tjd�}t|�t|�|j}|j|d|��t|�S)Nr�)rr�itemsizeZ	frombytesr)r8Zarr�idxrrrr<
s
rc@s,eZdZeZdZdd�Zdd�Zdd�ZdS)	�CTextIOWrapperTestz,RuntimeError: could not find io module statecCsb|jd�}|j|d�}|j|�}|jt|j|dd�|jt|j�|jj|j�}|jtt	|�dS)Nsé

i�ro)r/)
r�r�r�ryrhr+rAr�r�rf)r*rr
rrrrr�I
s

z&CTextIOWrapperTest.test_initializationcCs�tjdtf��Ptjtjd�}|j|�}|j|dd�}|jd�||_	t
j|�}~tj�WdQRX|j
|�|�|jtjd��}|j|j�d�WdQRXdS)Nr�r�r�)rZ456defr�s456def)rr�r�r\r�rnr�r�r-r�r�rr�rrrwrA)r*rr
rrr"rrrrS
s


z*CTextIOWrapperTest.test_garbage_collectioncCsnx`td�D]T}|j|j�|j��}|j|dd�}|j|j�|j��}|j|dd�}||_||_q
Wtj�dS)Ni�r�)r)r�r�r>r�Zbuddyrr�)r*r�Zb1Zt1Zb2Zt2rrr�!test_rwpair_cleared_before_textiod
s
z4CTextIOWrapperTest.test_rwpair_cleared_before_textioN)rrrr\rr�rr&rrrrr%E
s

r%c@seZdZeZdZdS)�PyTextIOWrapperTestz$LookupError: unknown encoding: asciiN)rrrr^r\rrrrrr's
sr'c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�IncrementalNewlineDecoderTestcs��fdd�}|dd�|dd�|dd�|dd�|dd�|dd�|dd�|dd��jt�jd	d
d��j�|dd
�|dd�|d	d
d
d�|dd
d
d�|dd�|dd�|dd�|dd�|dd
�|dd�|dd�|dd�|dd
�|dd�|dd
�dS)NcsB�j�}�j�j|f|�|��j|��j�j|f|�|�dS)N)rPrwrZrS)r
rbr
rR)�decoderr*rr�
_check_decode|
s
zPIncrementalNewlineDecoderTest.check_newline_decoding_utf8.<locals>._check_decodes袈u袈��r�����r?T)rXrDr�r�r�z
as

z

s
as袈
u袈
s袈
)ry�UnicodeDecodeErrorrZrL)r*r)r*r)r)r*r�check_newline_decoding_utf8z
s4



















z9IncrementalNewlineDecoderTest.check_newline_decoding_utf8csg�|dk	r*tj|������fdd�}nd���fdd�}|j�jd�|d�|j�jd�|d�|j�jd
�|d�|j�jd�|d	�|j�jd�|d�|jdj��d��j�d	}�dk	r�j��j|�}|j�j|�d	�|j�jd�dS)Ncs.x(�j|�D]}�j�jt|g���qWdS)N)r9r,rZr)rbr
)r)�encoderrBrr�_decode_bytewise�
szNIncrementalNewlineDecoderTest.check_newline_decoding.<locals>._decode_bytewisecs"x|D]}�j�j|��qWdS)N)r,rZ)rbr�)r)rBrrr1�
s
zabc

r�z
abc�
zabc
r�r�r�zabc

abcabc
abcabc)r�r2)r�r2)r�r�r2)rJ�getincrementalencoderrw�newlinesrarLr9rZ)r*r)rr1rWr)r)r0rBr�check_newline_decoding�
s0
z4IncrementalNewlineDecoderTest.check_newline_decodingc	Cstd}x6|D].}|otj|��}|j|d	d
�}|j||�q
Wtjd��}|j|d	d
�}|j|�|jt|jd�dS)
N�utf-8�latin-1�utf-16�	utf-16-le�	utf-16-be�utf-32�	utf-32-le�	utf-32-beT)�	translater/)	Nr6r7r8r9r:r;r<r=)rJ�getincrementaldecoder�IncrementalNewlineDecoderr5r/ryrzrS)r*r�r�r)rrr�test_newline_decoder�
s

z2IncrementalNewlineDecoderTest.test_newline_decodercs<�fdd�}�jddd�}||��jddd�}||�dS)NcsR�j|jd��j|jd�d��j|jd��j|jd�d��j|jd�dS)Nuഀu਀)rwr4rZ)�dec)r*rr�_check�
s
z@IncrementalNewlineDecoderTest.test_newline_bytes.<locals>._checkF)r>T)r@)r*rCrBr)r*r�test_newline_bytes�
s
z0IncrementalNewlineDecoderTest.test_newline_bytescCs`x.d
D]&}tjd��}|j||�}|j|�qWtjd��}|j|dd�}|j|jd�d�dS)NrEr6zutf-8r)r>s

z

r(rf)r(rfr6rE)rJr?r@r/rwrZ)r*r>r)rrr�test_translate�
s
z,IncrementalNewlineDecoderTest.test_translateN)rrrr/r5rArDrErrrrr(x
s
*!
r(c@seZdZdS)�CIncrementalNewlineDecoderTestN)rrrrrrrrF�
srFc@seZdZdS)�PyIncrementalNewlineDecoderTestN)rrrrrrrrG�
srGc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zejeed!�d"�d#d$��Zd%d&�Zd'd(�Zd)d*�Zd+S),�
MiscIOTestcCstjtj�dS)N)rrmrn)r*rrrrp�
szMiscIOTest.tearDowncCs�xz|jjD]n}t|j|d�}|j||�|dkr4q
q
d|j�ksH|dkr\|jt|t�|�q
|jd�s
|jt||j	��q
WdS)Nr�errorrYZSEEK_)
r\�__all__r4r��lowerr�
issubclassr�r�r�)r*rSrrrr�test___all__�
s
zMiscIOTest.test___all__cCsh|jtjddd�}|j|jd�|j�tjdtf��|jtjd�}WdQRX|j|jtj�|j|j	jtj�|j|j	j
jtj�|j|jd�|j|j	jd�|j|j	j
jd�|j�|jtjd�}|j|jd�|j|j	jd�|j|j	j
jd�|j|j�dd	d
�}|j|jd�|j|j
jd�|j|j|j��|j|j
j|j��|j�|j�dS)Nr�r)r�r��Ur�zw+zrb+F)r�)rrrnrwr�rPr�r�rSr{r�r0)r*r"�grrr�test_attributess.zMiscIOTest.test_attributescCs�xddiddiddd�ddd�ddd�ddidd	iddd�ddd�d	dd�dd
iddid
dd�d
dd�ddd�gD�]�}|jtjf|�}|j�|jt|j�|jt|j�|jt|j�|jt|j	�t
|d�r�|jt|jd�|jt|j�t
|d
��r|jt|j
d�t
|d��r(|jt|j�t
|d��rH|jt|jtd��t
|d��rh|jt|jtd��|jt|j�|jt|j�|jt|jd�|jt|jd�|jt|j�|jt|j�|jt|jd|dk�r�dnd�|jt|jg�|jtt|�qtWdS)Nr�r�r�r6)r�r�rErrr�zw+zw+br�r2ir?r:r�r
r?r�)rrrnrPryrhr�r0r�__iter__rr�rAr2r?r:rxr�r�r�r4r5r;r-r�r�)r*r
r"rrr�test_io_after_close"sV

zMiscIOTest.test_io_after_closecCsXGdd�dt�}|d�}|jd|�}||_||_tj|�}~~tj�|j|�|�dS)Nc@seZdZdS)z*MiscIOTest.test_blockingioerror.<locals>.CN)rrrrrrr�CRsrSr�r6)	r$rjr
r�r�rrr�r)r*rSr�r
rrrr�test_blockingioerrorPs
zMiscIOTest.test_blockingioerrorcCsD|j|jtj�|j|jtj�|j|jtj�|j|jtj�dS)N)r|r�r��ABCMetar�r�r�)r*rrr�	test_abcs]szMiscIOTest.test_abcscCs�|jtjddd��>}|j||j�|j||j�|j||j�|j||j�WdQRX|jtjd��>}|j||j�|j||j�|j||j�|j||j�WdQRX|jtjd��>}|j||j�|j||j�|j||j�|j||j�WdQRXdS)Nr�r)r�r�)	rrrnr|r�r�ZassertNotIsInstancer�r�)r*Z	abcmoduler"rrr�_check_abc_inheritancedsz!MiscIOTest._check_abc_inheritancecCs|j|�dS)N)rW)r*rrr�test_abc_inheritanceuszMiscIOTest.test_abc_inheritancecCs|jt�dS)N)rWr\)r*rrr�test_abc_inheritance_officialysz(MiscIOTest.test_abc_inheritance_officialcOsPt||�}t|�}|jt��}d}tj�WdQRX|j|t|jj	d��dS)Nr)
rrfZassertWarnsr�rr�r�r$ZwarningrZ)r*rZr
r"rr&rrr�_check_warn_on_dealloc~s
z!MiscIOTest._check_warn_on_dealloccCs2|jtjddd�|jtjd�|jtjd�dS)Nr�r)r�r�)rZrrn)r*rrr�test_warn_on_dealloc�szMiscIOTest.test_warn_on_dealloccs�g��fdd�}|j|�tj�\}}�||f7�|j|f|�|�tj�\}}�||f7�tj|��t|f|�ddi|��WdQRXdS)NcsRxL�D]D}ytj|�Wqtk
rH}z|jtjkr8�WYdd}~XqXqWdS)N)r�rPrO�errno�EBADF)rr�)�fdsrr�cleanup_fds�s
z9MiscIOTest._check_warn_on_dealloc_fd.<locals>.cleanup_fdsr�F)r�r�r�rZrr-r)r*rZr
r_rr�r)r^r�_check_warn_on_dealloc_fd�s
z$MiscIOTest._check_warn_on_dealloc_fdcCs&|jddd�|jd�|jd�dS)Nr�r)r�r)r`)r*rrr�test_warn_on_dealloc_fd�s
z"MiscIOTest.test_warn_on_dealloc_fdcCs�x�ddiddiddd�ddiddiddd�ddidd	id	dd�g	D]J}xDttjd
�D]2}|jtjf|��}|jttj||�WdQRXqVWqBWdS)Nr�r�r�r)r�r�rr�zw+zw+br6)	r��pickleZHIGHEST_PROTOCOLrrrnryrz�dumps)r*r
Zprotocolr"rrr�
test_pickling�szMiscIOTest.test_picklingcCs|jd�dS)Nr�ii@)�_test_nonblock_pipe_write)r*rrr�test_nonblock_pipe_write_bigbuf�sz*MiscIOTest.test_nonblock_pipe_write_bigbufcCs|jd�dS)Ni)re)r*rrr�!test_nonblock_pipe_write_smallbuf�sz,MiscIOTest.test_nonblock_pipe_write_smallbuf�set_blockingz(os.set_blocking() required for this testcCsg}g}tj�\}}tj|d�tj|d�|j|dd|d�}|j|dd|d�}|���|��rx�dD]�}y@d	}	x6t|	d
dg�|}
|j|
�|j|
�|	d7}	qrWWqf|jk
�r4}zj|j|j	d	t
j�|j|j	d
|j�|dd|j�|d<|j|j
��d}
|j|
�|j|
�WYdd}~XqfXqfWx�y|j�PWnj|jk
�r�}zJ|j|j	d	t
j�|j|j	d
|j�|j|jd	�|j|j
��WYdd}~XnX�q<W|t|j
d�7}WdQRXWdQRXdj|�dj|�}}|j||�|j|j�|j|j�dS)NFr�T)r�r�r�r��'�I�rr��ar6rEsBLOCKEDr?)rirjrkrfrf)r�r�rhrrr,r-rjrwrZr\ZEAGAINr�rAr��iterrarrN)r*r�ZsentZreceivedrr�ZrfZwfr�r�r\r�rrrre�sL



 &$z$MiscIOTest._test_nonblock_pipe_writecCs2|jtjd��WdQRX|jt|jtjd�dS)Nr�r�)rrrnry�FileExistsError)r*rrr�test_create_fail�s
zMiscIOTest.test_create_failcCsR|jtjd��}|jd�WdQRX|jtjd��}|jd|j��WdQRXdS)NZxbsspamr�)rrrnr-rwrA)r*r"rrr�test_create_writes�szMiscIOTest.test_create_writescCs|jt|jtjd�dS)Nzrwax+)ryrhrrrn)r*rrr�test_open_allargs�szMiscIOTest.test_open_allargsN)rrrrprMrPrRrTrVrWrXrYrZr[r`rardrfrgr�r�rr�rerorprqrrrrrH�
s*.
3rHc@s<eZdZeZdd�Zejed�dd��Zdd�Z	dd	�Z
d
S)�CMiscIOTestcCs6Gdd�d|jj�}|�}td�}|jt|j|�dS)Nc@seZdZddd�ZdS)z<CMiscIOTest.test_readinto_buffer_overflow.<locals>.BadReaderr6cSsddS)Nr~rrqi@Br)r*r9rrrrAszACMiscIOTest.test_readinto_buffer_overflow.<locals>.BadReader.readNrf)rf)rrrrArrrr�	BadReadersrsrE)r\r�rxryrhr:)r*rsrhr
rrr�test_readinto_buffer_overflowsz)CMiscIOTest.test_readinto_buffer_overflowz!Threading required for this test.cCsXdjt��}td|�\}}|jj�}|jdkrD|jdjt��|�n|j|jd��dS)Na�if 1:
            import sys
            import time
            import threading
            from test.support import SuppressCrashReport

            file = sys.{stream_name}

            def run():
                while True:
                    file.write('.')
                    file.flush()

            crash = SuppressCrashReport()
            crash.__enter__()
            # don't call __exit__(): the crash occurs at Python shutdown

            thread = threading.Thread(target=run)
            thread.daemon = True
            thread.start()

            time.sleep(0.5)
            file.write('!')
            file.flush()
            z-crz�Fatal Python error: could not acquire lock for <_io.BufferedWriter name='<{stream_name}>'> at interpreter shutdown, possibly due to daemon threadsz.!)	�
format_map�localsrr~rZrr�rrr)r*Zstream_namerrUr�r~rrr�&check_daemon_threads_shutdown_deadlock
s

z2CMiscIOTest.check_daemon_threads_shutdown_deadlockcCs|jd�dS)N�stdout)rw)r*rrr�,test_daemon_threads_shutdown_stdout_deadlock6sz8CMiscIOTest.test_daemon_threads_shutdown_stdout_deadlockcCs|jd�dS)Nrp)rw)r*rrr�,test_daemon_threads_shutdown_stderr_deadlock9sz8CMiscIOTest.test_daemon_threads_shutdown_stderr_deadlockN)rrrr\rtr�r�r�rwryrzrrrrrrs
	)rrc@seZdZeZdS)�PyMiscIOTestN)rrrr^r\rrrrr{=sr{�ntz%POSIX signals required for this test.c@s�eZdZdd�Zdd�Zdd�Zejed�dd	��Z	d
d�Z
dd
�Zej
d�dd��Zejdd��Zdd�Zdd�Zdd�Zdd�Zdd�Zejed�dd��Zdd �Zd!d"�Zd#S)$�SignalsTestcCstjtj|j�|_dS)N)�signal�SIGALRM�alarm_interrupt�oldalrm)r*rrrroDszSignalsTest.setUpcCstjtj|j�dS)N)r~rr�)r*rrrrpGszSignalsTest.tearDowncCsdddS)Nr6rr)r*�sig�framerrrr�JszSignalsTest.alarm_interruptz!Threading required for this test.c
s.g���fdd�}tj|d�}d|_tj�\�}d|d<|tjt|�d}z�|jj	|f|�}|j
�tjd�z|j
t|j|�Wdtjd�|j�X�jtj�d��|j�|dd�|dd	�g�Wdtj|�tj��y|j�Wn4tk
�r&}	z|	jtjk�r�WYdd}	~	XnXXdS)
Ncs6ttd�rtjtjtjg�tj�d�}�j|�dS)N�pthread_sigmaskr6)rr~r��	SIG_BLOCKrr�rAr,)rb)r�read_resultsrrr1Ss
z2SignalsTest.check_interrupted_write.<locals>._read)r�TFr�r6rrE)r�r��daemonr�r�r�
PIPE_MAX_SIZErr\rr�r~�alarmryr�r-rar,rArwrPrOr\r])
r*�itemr�
fdopen_kwargsr1rr��
large_data�wior�r)rr�r�check_interrupted_writeMs0


$

z#SignalsTest.check_interrupted_writecCs|jddddd�dS)Nsxyr�r)r�r�)r�)r*rrr�!test_interrupted_write_unbuffered|sz-SignalsTest.test_interrupted_write_unbufferedcCs|jdddd�dS)Nsxyr�)r�)r�)r*rrr�test_interrupted_write_bufferedsz+SignalsTest.test_interrupted_write_bufferedr�cCs|jddddd�dS)N�xysxyr�r�)r�r)r�)r*rrr�test_interrupted_write_text�sz'SignalsTest.test_interrupted_write_textc	s���fdd�}tjtj|�tj�\}}|jj|f|��z�tjd�|jtt	f��D}x<x"t
d�D]}�j���j�q`Wtj
|t��d�qVWWdQRX|j}t|t	�r�|jt|�jd�t|��Wdtjd��j�tj|�XdS)Ncs�j��dddS)Nr6r)r-)rZ)rr�rr�on_alarm�s
z3SignalsTest.check_reentrant_write.<locals>.on_alarmr6r�zreentrant callr)r~rr�r�r\rr�ryr�ryr�r-r�rArr%r�rr$r�rP)	r*rr�r�rr�r&r�r�r)rr�r�check_reentrant_write�s$

"

z!SignalsTest.check_reentrant_writecCs|jddd�dS)Nsxyr�)r�)r�)r*rrr�test_reentrant_write_buffered�sz)SignalsTest.test_reentrant_write_bufferedcCs|jdddd�dS)Nr�r�r�)r�r)r�)r*rrr�test_reentrant_write_text�sz%SignalsTest.test_reentrant_write_textcs�tj�\}�d|d<�fdd�}tjtj|�z@|jj|f|�}tj�d�tjd�|j||j	d��d�Wdtjd	�|j
�tj
��tj
|�XdS)
NFr�cstj�d�dS)Nsbar)r�r-)r�r�)r�rr�
alarm_handler�sz?SignalsTest.check_interrupted_read_retry.<locals>.alarm_handlersfoor6rqZfoobarr)r�r�r~rr\rr-r�rwrArP)r*rZr�rr�Zrior)r�r�check_interrupted_read_retry�s


z(SignalsTest.check_interrupted_read_retrycCs|jdd�dd�dS)NcSs
|jd�S)Nrg)rZ)r�rrrr
�szBSignalsTest.test_interrupted_read_retry_buffered.<locals>.<lambda>r�)r�)r�)r*rrr�$test_interrupted_read_retry_buffered�s
z0SignalsTest.test_interrupted_read_retry_bufferedcCs|jdd�dd�dS)NcSs|S)Nr)r�rrrr
�sz>SignalsTest.test_interrupted_read_retry_text.<locals>.<lambda>r)r�)r�)r*rrr� test_interrupted_read_retry_text�s
z,SignalsTest.test_interrupted_read_retry_textcs\tjd��tj}tj�\�}d|d<g�d�d������fdd�}tj|d��d�_�fdd	�}�fd
d��||}tjtj	|�zl|j
j|f|�}tjd�|j
|�}	|j||	�|j�d��j�|j��|j|td
d��D���Wdtjd�d�tj|�tj��y|j�Wn4tk
�rT}
z|
jtjk�rD�WYdd}
~
XnXXdS)N�selectFr�cspyDx>�s@x4��j�gggd�dkr<tj�d�}�j|�q
WqWWn&tk
rj}z
|�WYdd}~XnXdS)Ng�?ri)r�r�rAr,�
BaseException)rbr�)rIrr�r��write_finishedrrr1�sz8SignalsTest.check_interrupted_write_retry.<locals>._read)r�Tcstjtj��tjd�dS)Nr6)r~rr�)r�r�)�alarm2rr�alarm1�sz9SignalsTest.check_interrupted_write_retry.<locals>.alarm1cs�j�dS)N)r�)r�r�)rrrr��sz9SignalsTest.check_interrupted_write_retry.<locals>.alarm2r6css|]}t|�VqdS)N)r)r�r�rrr�	<genexpr>�sz<SignalsTest.check_interrupted_write_retry.<locals>.<genexpr>r)r�
import_moduler�r�r�r�r�r�r~rr\rr�r-rwr�rar�sumrPrOr\r])r*r�r�r�r�r1r�r�r�r�r�r)r�rIrr�r�rr�r�check_interrupted_write_retry�sB
	





z)SignalsTest.check_interrupted_write_retrycCs|jddd�dS)Nr~r�)r�)r�)r*rrr�%test_interrupted_write_retry_bufferedsz1SignalsTest.test_interrupted_write_retry_bufferedcCs|jdddd�dS)Nr�r�rg)r�r)r�)r*rrr�!test_interrupted_write_retry_textsz-SignalsTest.test_interrupted_write_retry_textN)rrrrorpr�r�r�r�r�r�r�rZrequires_freebsd_versionr�r!r�r�r�r�r�r�r�r�r�rrrrr}As /Er}c@seZdZeZdS)�CSignalsTestN)rrrr\rrrrr�sr�c@seZdZeZdZdZdS)�
PySignalsTestN)rrrr^r\r�r�rrrrr�sr�c
s*tttttttttt	t
ttt
ttttttf}tttttttf}tjdg}dd�|D�}dd�|D�}t��|j�fdd�|D��|j�fdd�|D��tj |d<xj|D]b}|j!j"d	�r�xP|j#�D]\}}t$|||�q�Wq�|j!j"d
�r�x |j#�D]\}}t$|||�q�Wq�Wt%j&dd�|D��}	|	S)
Nr@cSsi|]}tt|�|�qSr)r4r\)r�rSrrr�
<dictcomp>3szload_tests.<locals>.<dictcomp>cSsi|]}tt|�|�qSr)r4r^)r�rSrrrr�4sc3s"|]}|j�d|jfVqdS)rSN)r)r�r�)�globsrrr�6szload_tests.<locals>.<genexpr>c3s"|]}|j�d|jfVqdS)�PyN)r)r�r�)r�rrr�7srrSr�cSsg|]}tj|��qSr)r�Z	makeSuite)r�r�rrrr�Bszload_tests.<locals>.<listcomp>)'rWrYrZr�r�rrr r!rFrGrjrFrGr%r'rrr{r�r�r>rDrSrMr_rXr$r\rJ�globalsr�r^�OpenWrapperrr�r��setattrr�Z	TestSuite)
rZr�ZmocksZall_membersZc_io_nsZpy_io_nsr�rSrZsuiter)r�r�
load_tests!s8


r��__main__)hr�rr\r�r�rbr�r~r�r�r�r�r��collectionsrr�	itertoolsrrr�rZtest.support.script_helperrrZtest.supportr	rJr\Z_pyior^r��ImportErrorrrZ	Structurerr#r$r�r<r=r>rBrCrDrKrLrMrQrRrSr�rVrWrXr[r]r_rirkZTestCaserlrWrYr�rZrbr�r�r�r�r�rrrr r!r"rFrGrKrH�registerrhrjr{rrr%r'r(rFrGrHrrr{ZskipIfrSr}r�r�r�r�mainrrrr�<module>s�
8

,9
(1.=fW+
	.u
<
T	$


Youez - 2016 - github.com/yon3zu
LinuXploit