403Webshell
Server IP : 118.27.122.248  /  Your IP : 216.73.216.153
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.pyc
3

�w2_}`�@s:dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZmZddlmZmZddlmZddlmZmZddlmZddlZddlZddlZyddlZWne k
r�dZYnXyddl!Z!Wne k
�rdd	�Z"YnXd
d	�Z"Gdd�de!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 �d e-ej'�Z/Gd!d"�d"e*�Z0Gd#d$�d$e0ej'�Z1Gd%d&�d&e0ej'�Z2Gd'd(�d(�Z3Gd)d*�d*e3ej4�Z5Gd+d,�d,e3ej4�Z6Gd-d.�d.�Z7Gd/d0�d0e7ej4�Z8Gd1d2�d2e7ej4�Z9Gd3d4�d4�Z:Gd5d6�d6e:ej'�Z;Gd7d8�d8e:ej'�Z<Gd9d:�d:ej=�Z>Gd;d<�d<e>�Z?Gd=d>�d>e>�Z@ejAGd?d@�d@ej=��ZBGdAdB�dB�ZCGdCdD�dD�ZDGdEdF�dFej=eC�ZEGdGdH�dHeEeD�ZFGdIdJ�dJeE�ZGGdKdL�dLej=eC�ZHGdMdN�dNeHeD�ZIGdOdP�dPeH�ZJGdQdR�dRej=�ZKGdSdT�dTeK�ZLGdUdV�dVeK�ZMGdWdX�dXeEeH�ZNGdYdZ�dZeNeD�ZOGd[d\�d\eN�ZPGd]d^�d^ejQ�ZRejSeRjT�Gd_d`�d`ej=�ZUGdadb�dbej=�ZVGdcdd�ddej4�ZWdedf�ZXGdgdh�dheV�ZYGdidj�djeV�ZZGdkdl�dlej=�Z[Gdmdn�dne[�Z\Gdodp�dpe[�Z]Gdqdr�drej=�Z^Gdsdt�dte^�Z_Gdudv�dve^�Z`ejaejbdwkdx�Gdydz�dzej=��ZcGd{d|�d|ec�ZdGd}d~�d~ec�Zedd��Zfegd�k�r6ejh�dS)�zUnit tests for the io module.�N)�deque�UserList)�cycle�count)�support)�assert_python_ok�run_python_until_end)�FakePathcOstjdt||��S)N�b)�array�bytes)�pos�kw�r�1/opt/alt/python36/lib64/python3.6/test/test_io.py�	byteslike4srcOs:t||�}t�}tj|t|��|t|�jd�dd�<|S)z?Create a bytes-like object having no string or sequence methods�BN)r�EmptyStruct�ctypesZresize�len�
memoryview�cast)r
r�data�objrrrr7s

c@seZdZdS)rN)�__name__�
__module__�__qualname__rrrrr>src	Cs ttddd��}|jSQRXdS)z(Get the default TextIOWrapper chunk size�rzlatin-1)�encodingN)�open�__file__�_CHUNK_SIZE)�frrr�_default_chunk_sizeAsr#c@sfeZdZdZffdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zddd�Z
dS)�MockRawIOWithoutReadzmA RawIO implementation without read(), so as to exercise the default
    RawIO.read() which calls readinto().cCs 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)rrr�__doc__r+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)rrrrBrrrrr?�sr?c@seZdZdS)�
CMockRawION)rrrrrrrrC�srCc@seZdZdS)�PyMockRawION)rrrrrrrrD�srDcsFeZdZ�fdd�Zd�fdd�	Zdd�Zdd	�Z�fd
d�Z�ZS)
�MisbehavedRawIOcst�j|�dS)N�)�superr-)r*r
)�	__class__rrr-�szMisbehavedRawIO.writeNcst�j|�dS)NrF)rGrB)r*r9)rHrrrB�szMisbehavedRawIO.readcCsdS)N�{i����r)r*r
r3rrrr4�szMisbehavedRawIO.seekcCsdS)Ni�i8���r)r*rrrr5�szMisbehavedRawIO.tellcst�j|�t|�dS)N�)rGr:r)r*r8)rHrrr:�szMisbehavedRawIO.readinto)N)	rrrr-rBr4r5r:�
__classcell__rr)rHrrE�s
rEc@seZdZdS)�CMisbehavedRawION)rrrrrrrrL�srLc@seZdZdS)�PyMisbehavedRawION)rrrrrrrrM�srMc@seZdZdZdd�ZdS)�CloseFailureIOrcCs|jsd|_t�dS)Nr6)�closed�OSError)r*rrr�close�szCloseFailureIO.closeN)rrrrOrQrrrrrN�srNc@seZdZdS)�CCloseFailureION)rrrrrrrrR�srRc@seZdZdS)�PyCloseFailureION)rrrrrrrrS�srScs6eZdZ�fdd�Zd�fdd�	Z�fdd�Z�ZS)	�
MockFileIOcsg|_t�j|�dS)N)�read_historyrGr+)r*r)rHrrr+�szMockFileIO.__init__Ncs,t�j|�}|jj|dkrdnt|��|S)N)rGrBrUr,r)r*r9�res)rHrrrB�szMockFileIO.readcst�j|�}|jj|�|S)N)rGr:rUr,)r*r
rV)rHrrr:�szMockFileIO.readinto)N)rrrr+rBr:rKrr)rHrrT�srTc@seZdZdS)�CMockFileION)rrrrrrrrW�srWc@seZdZdS)�PyMockFileION)rrrrrrrrX�srXc@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)rZ)r*r[rrrr5�szMockUnseekableIO.tellcGs|jd��dS)Nznot seekable)rZ)r*r[rrrr;�szMockUnseekableIO.truncateN)rrrr2r4r5r;rrrrrY�srYc@seZdZejZdS)�CMockUnseekableION)rrr�iorZrrrrr\�sr\c@seZdZejZdS)�PyMockUnseekableION)rrr�pyiorZrrrrr^�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)z'Block when a given char is encountered.N)ra)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ra�index�
ValueErrorr'r,r)r*r
r9rrrr-szMockNonBlockWriterIO.writeN)
rrrr+rdrfr1r2r.r-rrrrr`�sr`c@seZdZejZdS)�CMockNonBlockWriterION)rrrr]�BlockingIOErrorrrrrrjsrjc@seZdZejZdS)�PyMockNonBlockWriterION)rrrr_rkrrrrrlsrlc@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)rrnro)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.rJrsHello.�r6s	 world


�	�*�hrF�
�grgs	*********rg)�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)NrJshellos worlrFsd
r�shello world
r6r@�xrrsworld�
gsworld
i����i����)rBrxrr:rryrr4r5rzr{�	readinto1)r*r"Zbufferedrrrr�read_ops<s>



zIOTest.read_opsrF�cCsj|j�st�|j�st�y|j|j|j�|j�Wn"ttfk
rT|jd�YnX|j|j	�|j�|j|j
d�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�r6rFrrrgrg)
r1�AssertionErrorr.rxr4�LARGE�
OverflowErrorri�skipTestr5r-r;rB)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�rg)rZrrrorzrB�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�piperQ�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)�targetr[r�)
r�r��
addCleanuprQ�	threading�ThreadrB�startrbr�)rr�Zthread)r*rr�pipe_writer�sz3IOTest.test_optional_abilities.<locals>.pipe_writercs�j�j��S)N)�BufferedReaderrYr)r*rr�buffered_reader�sz7IOTest.test_optional_abilities.<locals>.buffered_readercs�j�j��S)N)�BufferedWriterrYr)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)�BufferedRWPairrYr)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)rY�
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�r1rBr)r*rr�UnseekableWriter�sr�r�)rYr�)r�)r*rr�text_writer�sz3IOTest.test_optional_abilities.<locals>.text_writer�fr�fwrr�Zrws�rw�3�3zUnknown base classr"r6�winrcr)r��StringIOr��subTestrxr1r.�
isinstance�
TextIOBaser��	RawIOBase�failr0rzrPrBr-�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)rzrirr�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�)	rrrorxr1r.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�)	rrrorxr1r.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
r�sdef
rFsxy�szzy
sfoobar
sanother lineg333333@r)rrror-rxr�rzr{)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�)�IOBaserzr{�
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�rzr{�	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}�getvaluerxr�)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�rror�)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�)rrror-rxrO�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)rrror-rxr5�
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,rG�__del__�AttributeError)r*r")rH�recordrrr�es
z0IOTest.test_destructor.<locals>.MyFileIO.__del__cs�jd�t�j�dS)NrF)r,rGrQ)r*)rHr�rrrQms
z.IOTest.test_destructor.<locals>.MyFileIO.closecs�jd�t�j�dS)Nr�)r,rG�flush)r*)rHr�rrr�ps
z.IOTest.test_destructor.<locals>.MyFileIO.flush)rrrr�rQr�rKr)r�)rHr�MyFileIOdsr��r�sxxxr6rFr�r�)
r�r�check_warnings�ResourceWarningror-�
gc_collectrxrrB)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)Nr6rFr�)�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�rGr�r�)r*r")rHr�rrr��sz3IOTest._check_base_destructor.<locals>.MyIO.__del__cs�j|j�t�j�dS)N)r,r�rGrQ)r*)rHr�rrrQ�sz1IOTest._check_base_destructor.<locals>.MyIO.closecs�j|j�t�j�dS)N)r,r�rGr�)r*)rHr�rrr��sz1IOTest._check_base_destructor.<locals>.MyIO.flush)rrrr+r�rQr�rKr)r�)rHr�MyIO~sr�r6rFr�)rr�rx)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�)rrror-rxrB)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�ir�c
s2|�$�j|j����|j�f�WdQRXdS)N)rxr-r�)r")r�r9r*rr�check�sz'IOTest.test_array_writes.<locals>.checkr�)r�ranger�tobytesr�r�rror�r?r�r�)r*r�r)r�r9r*r�test_array_writes�szIOTest.test_array_writescCs|jt|jtjddd�dS)Nr�F)�closefd)rzrirrro)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)
rrror-r0rxrBr4rQrzrir:ry)r*r"�filerrr�test_read_closed�s
zIOTest.test_read_closedcCs|jt|jtjddd�dS)NrF)r�)rzrirrro)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�)	rrror-rxr|�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�ror-r"�weakref�refr��assertIsNonerrxrB)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_2Grrzr�rB)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)rOrPr)rOr"rr�	bad_flush�sz4IOTest.check_flush_error_on_close.<locals>.bad_flushrcSsdS)Nrrrrr�<lambda>sz3IOTest.check_flush_error_on_close.<locals>.<lambda>)rr�rzrPrQ�
assertTruerO�assertFalse)r*r[�kwargsrr)rOr"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�)rrror�r�O_WRONLY�O_CREATrQ)r*�fdrrr�test_flush_error_on_closes$

z IOTest.test_flush_error_on_closecCs<|jtjddd�}|j�|j�|j�|jt|j�dS)Nr�r)r�)rrrorQrzrir�)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�efgrFsab�csef�gr@)rrNrN)r$rxrB)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!)rrror-r��O_RDONLYrxrB)r*r"r!r)rr�test_opener<szIOTest.test_openercCsBdd�}|jt��}tdd|d�WdQRX|jt|j�d�dS)NcSsdS)Nr6rgr)�fnamer rrr�	badopenerGsz4IOTest.test_bad_opener_negative_1.<locals>.badopenerznon-existentr)r!zopener returned -1)rzrirrx�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)NrF���r)r$r rrrr%Osz8IOTest.test_bad_opener_other_negative.<locals>.badopenerznon-existentr)r!zopener returned -2)rzrirrxr&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�rQ)r*�f1�f2Zfileiorrr�test_fileio_closefdUszIOTest.test_fileio_closefdcCsBtj|��.|jt��|jtjddd�WdQRXWdQRXdS)Nr�r)r�)r�check_no_resource_warningrzrirro)r*rrr�test_nonbuffered_textioaszIOTest.test_nonbuffered_textiocCsBtj|��.|jt��|jtjddd�WdQRXWdQRXdS)Nr�Zinvalid)�newline)rr/rzrirro)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*�sizerrrrBnsz8IOTest.test_buffered_readinto_mixin.<locals>.Stream.readN)rrrrB�read1rrrr�Streammsr5r:r�rJs12345)r:r�)r�r�rrx�getattrr)r*r5�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-rxrB)rr")r*rr�check_path_succeedsysz7IOTest.test_fspath_support.<locals>.check_path_succeedszutf-8r�zread/write/append modeZrwxa)r	rro�encoderr0rzr{�FloatingPointError�assertRaisesRegexri)r*r:r"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$rxrB�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*rCrrrr+�sz<IOTest.test_BufferedIOBase_readinto.<locals>.Reader.__init__cSs"|jd|�}|j|d�|_|S)N)rC)r*r3�resultrrrrB�sz8IOTest.test_BufferedIOBase_readinto.<locals>.Reader.readcSs|jt|d��S)z$Returns no more than 5 bytes at oncerJ)rB�min)r*r3rrrr4�sz9IOTest.test_BufferedIOBase_readinto.<locals>.Reader.read1N)rrrr+rBr4rrrr�Reader�srFr:r�rJrr�rr���r:r�rJrJ�r:r�rrrr�r:rJrrrJ�r:rrrGrr�r:r�rr�r�r�rJrJ�r�r�rrrJ�r�rJrrrJ�r�rrrGrJ�r�r�rr)
rIrJrKrLrMrNrOrPrQrR)
r�r�rr�ryr6rxrZassertSequenceEqualrC)r*rFr�ZUNUSED_BYTEr�r8rCZrequestrD�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)rP)r*rrrr��sz)IOTest.test_close_assert.<locals>.R.flushN)rrrrWr�rrrrr��sr�)r�rzrPrQ)r*r�r"rrr�test_close_assert�szIOTest.test_close_assertN)Fl)3rrrrprqr}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�rrr
rrrrrr#r)r+r.r0r2r9r>rBrTrXrrrrrms`
!j	



	
)rmc@seZdZdd�ZdS)�CIOTestcCsLGdd�d|j�}|�|�}||_tj|�}~~tj�|j|�|�dS)Nc@seZdZdd�ZdS)z*CIOTest.test_IOBase_finalize.<locals>.MyIOcSsdS)Nr)r*rrrrQ�sz0CIOTest.test_IOBase_finalize.<locals>.MyIO.closeN)rrrrQrrrrr��sr�)r�rrrrr�r)r*r�rrrrr�test_IOBase_finalize�s
zCIOTest.test_IOBase_finalizeN)rrrrZrrrrrY�srYc@seZdZdS)�PyIOTestN)rrrrrrrr[�sr[c@seZdZdd�Zdd�ZdS)�APIMismatchTestcCs*tjtjtjdd�}|j|t�dd�dS)z:Test that pyio RawIOBase class has all c RawIOBase methods�__weakref__)r�z6Python RawIOBase does not have all C RawIOBase methods)�msgN)r])r�detect_api_mismatchr_r�r]rx�set)r*�mismatchrrr�test_RawIOBase_io_in_pyio_match�sz/APIMismatchTest.test_RawIOBase_io_in_pyio_matchcCs&tjtjtj�}|j|t�dd�dS)z:Test that c RawIOBase class has all pyio RawIOBase methodsz6C RawIOBase does not have all Python RawIOBase methods)r^N)rr_r]r�r_rxr`)r*rarrr�test_RawIOBase_pyio_in_io_match�sz/APIMismatchTest.test_RawIOBase_pyio_in_io_matchN)rrrrbrcrrrrr\�sr\c@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�detachrzri�repr)r*r�r8rrr�test_detach�s

zCommonBufferedTests.test_detachcCs&|j�}|j|�}|jd|j��dS)Nr/)r?rerxr0)r*r�bufiorrr�test_filenos
zCommonBufferedTests.test_filenocCs:|j�}|j|�}|jt|jdd�|jt|jdd�dS)Nrr6rsrg)r?rerzrir4)r*rrjrrr�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,rGr�r�)r*r")rHr�rrr�s
zJCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.__del__cs�jd�t�j�dS)NrF)r,rGrQ)r*)rHr�rrrQs
zHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.closecs�jd�t�j�dS)Nr�)r,rGr�)r*)rHr�rrr�s
zHCommonBufferedTests.test_override_destructor.<locals>.MyBufferedIO.flush)rrrr�rQr�rKr)r�)rHr�MyBufferedIOsrmr6rFr�)rer?rr�rx)r*rermrrjr)r�r�test_override_destructorsz,CommonBufferedTests.test_override_destructorcs4|j�}|j|���fdd�}|�|jt|�dS)Nc	s��WdQRXdS)Nrr)rjrr�_with+sz7CommonBufferedTests.test_context_manager.<locals>._with)r?rerzri)r*rror)rjr�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)re�xyzzyr)rr*rrr"7sz<CommonBufferedTests.test_error_through_destructor.<locals>.f�stderrr6zException OSError: z ignored)
rNr�captured_outputrzr�r��striprxr�
splitlinesr
r��endswith)r*r"rcr)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?rerrrxrhrU)r*r�r
Zclsnamerrr�	test_reprBs
zCommonBufferedTests.test_reprcCsR|j�}|j|�}tj|d|��(yt|�Wntk
rBYnXWdQRXdS)NrU)r?rer�	swap_attrrh�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)rOrPr)r
rOr�rrr[sz@CommonBufferedTests.test_flush_error_on_close.<locals>.bad_flushrr6cSsdS)Nrrrrrrfsz?CommonBufferedTests.test_flush_error_on_close.<locals>.<lambda>)	r?r�rerzrPrQr
rOr)r*rr)r
rOr�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�)rPrrrrrjsz@CommonBufferedTests.test_close_error_on_close.<locals>.bad_flushcSstd��dS)NrQ)rPrrrr�	bad_closelsz@CommonBufferedTests.test_close_error_on_close.<locals>.bad_closerQr�)rQ)r�)
r?rQrer�rzrPrxr'r[�assertIsInstance�__context__rrO)r*r�rr}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?rQrer�rz�	NameError�assertInr&r'r~rrrO)r*r�rr}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?rerQrzrir�)r*r�r
rrrr�s
z$CommonBufferedTests.test_multi_closecCs6|j|jd��}|j|j|j�|j|j|jd�dS)N�Ar�rs
AAAAAAAAAA)rerYrzrZr5r4)r*rjrrr�test_unseekable�sz#CommonBufferedTests.test_unseekablec	Cs:|j�}|j|�}|j�}|jt��||_WdQRXdS)N)r?rerzr�r�)r*r�r8�xrrr�test_readonly_attributes�s

z,CommonBufferedTests.test_readonly_attributesN)rrrrirkrlrnrprwryr|rr�r�rr�r�rrrrrd�s

rdc@s(eZdZejdd��Zejdd��ZdS)�
SizeofTestcCs\d}d}|j�}|j||d�}tj|�|}|j�}|j||d�}|jtj|�||�dS)Nii )�buffer_size)r?rer��	getsizeofrx)r*Zbufsize1Zbufsize2rrjr3rrr�test_sizeof�szSizeofTest.test_sizeofcCsFd}|j�}|j||d�}tj|�|}|j�|jtj|�|�dS)Ni)r�)r?rer�r�rQrx)r*r�rrjr3rrr�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�rg)r?rer+rxrBrzri)r*rrjrrr�test_constructor�s


z#BufferedReaderTest.test_constructorcCsX|jj|j�}~|jj|j�}|jttfd|jd�|j|j��|j|jd�d�dS)Nzuninitialized|has no attributerr@)	re�__new__r=rir�rBr+r?rx)r*rjrrr�test_uninitialized�s

z%BufferedReaderTest.test_uninitializedcCsHx2dD]*}|jd�}|j|�}|jd|j|��qW|jt|jd	�dS)
NrG�abcr�efgsabcdefgrF)NrG)r�rr�r*)r?rerxrBrzri)r*�argrrjrrr�	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�rFr�r@r�)r�rr�rg)r?rerxrBr4r(rzri)r*rrjrrr�
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�efgrFsabscdsefr6sgfrscb)r�rr�)r�N)r?reryrxr:)r*rrjr
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�rFr�r6sabrrrsfghjklr�)r�r�r�r�)r?reryrx�peekr(r�)r*r�rrjr
rrr�test_readinto1�s*
z!BufferedReaderTest.test_readinto1cCs�d}dd}|j|f�}|j||d�}tjddd�}t|�dksFt�|j|�}|j|t|��t|�jd	�}|j	|t|��|j
|d|�|d|��|j
||d�dt||d���dS)
N�<r��)r�r�r� r�r)r?rerrr�r:r�rr�
assertLessrx)r*r�rrrjr
r9�bmrrr�test_readinto_arrays
z&BufferedReaderTest.test_readinto_arraycCs�d}dd}|j|f�}|j||d�}tjddd�}t|�dksFt�|j|�}|j|t|��t|�jd	�}|j	|t|��|j
|d|�|d|��|j
||d�dt||d���dS)
Nr�r�r�)r�r�rr�r�r)r?rerrr�r�r�rrr�rx)r*r�rrrjr
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?re)r)r*rrrj?s
z0BufferedReaderTest.test_readlines.<locals>.bufiosabc
sd
sefrJ)rxr�)r*rjr)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��rrF)r�)rrTrerxrBrU)r*rZdlenr�r�Zbuf_read_sizesZraw_read_sizesrrjr
�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�efgsabcdrr�er6sfgr@r�)r�rNr�NNN)r�NN)r?rerxrBr�rrA)r*rrjrrr�test_read_non_blockingZs


z)BufferedReaderTest.test_read_non_blockingcCs*|jd�}|j|�}|jd|jd��dS)N�abcr�efgsabcdefgi(#)r�rr�)r?rerxrB)r*rrjrrr�test_read_past_eofis

z%BufferedReaderTest.test_read_past_eofcCs(|jd�}|j|�}|jd|j��dS)N�abcr�efgsabcdefg)r�rr�)r?rerxrB)r*rrjrrr�
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�)rrBr,�	Exception)r9rc�e)rj�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ryrrror-�	read_modere�
start_threads�time�sleeprrbrxrrn)r*�N�lrcr��threadsr��cr)rjr�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�r�rr6s
AAAAAAAAAA)rerYrzrZr5r4rB)r*rjrrrr��s
z"BufferedReaderTest.test_unseekablecCs6|jd�}|j|�}|jt|jd�|jt|j�dS)N�abcr�efgr)r�rr�)rErerzrPr4r5)r*rrjrrr�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�rFr6rrzfailed for {}: {} != 0)r?rerxrBr)r)r*r�r9rrjrrr�test_no_extraneous_read�s 

z*BufferedReaderTest.test_no_extraneous_readcCsDtjtjd��}|jd�|j�|jt|j�|jt|jd�dS)Ns12r6)	r]r�r�rBrQrzrir�r4)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�r	r?rerzr��MemoryErrorrir+)r*rrjrrrr��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�rg)r?rerzrir+rB)r*rrjrrr�test_initialization�s
z'CBufferedReaderTest.test_initializationcCs(|jd�}|j|�}|jt|jd�dS)N�abcr�efgr�)r�rr�)rErerzrPrB)r*rrjrrr�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�rrnror�r�r�rer"rrr�r)r*rr"rrrrr�s

z+CBufferedReaderTest.test_garbage_collectioncCs0|jtd��|jtj�ddd�WdQRXdS)Nr�i)r=r{rer]r�)r*rrr�test_args_error�sz#CBufferedReaderTest.test_args_errorN)rrrr]r�rer�r�r�rr�rrrrr��s


r�c@seZdZejZdS)�PyBufferedReaderTestN)rrrr_r�rerrrrr��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�rg)
r?rer+rxr-r�rzrirbr')r*rrjrrrr�s


z#BufferedWriterTest.test_constructorcCsX|jj|j�}~|jj|j�}|jttfd|jd�|j|j��|j|jd�d�dS)Nzuninitialized|has no attributer@r)	rer�r=rir�r-r+r?rx)r*rjrrrr�s

z%BufferedWriterTest.test_uninitializedcCsD|j�}|j|�}|jd�|j|j�|j�|j|jdg�dS)Nshowdy!)r?rer-rr'rgrx)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?rer-rr'ryr�rxrb)r*�writerrjr|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?rer�rr-rbr'r
r�)r*r�rj�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�rrvcss.x(td�D]}xtd�D]
}|VqWq
WdS)Nr6�)rr�)r3r�rrr�	gen_sizesAsz2BufferedWriterTest.check_writes.<locals>.gen_sizesr@)rr�r?rerrEr�rxr-r�rbr')	r*Zintermediate_funcr�r9r�rjr��sizesr3rrr�check_writes:szBufferedWriterTest.check_writescCs|jdd��dS)NcSsdS)Nr)rjrrrrOsz0BufferedWriterTest.test_writes.<locals>.<lambda>)r�)r*rrr�test_writesNszBufferedWriterTest.test_writescCs|jdd��dS)NcSs|j�S)N)r�)rjrrrr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)rjr
rrr�_seekabsUsz:BufferedWriterTest.test_writes_and_seeks.<locals>._seekabscSs4|jdd�}|jdd�|jdd�|j|d�dS)Nrr6r6rg)r4)rjr
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)rjrrrr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�sefghirJ�ksjklmn�0sopqrwxyz0123456789z'BlockingIOError should have been raisedr�sabcdefghijklmnopqrwxyzs	ABCDEFGHIrss	01234567A)r`rerxr-rfrk�characters_writtenr�rdr
r�)r*r�rjr��writtenrcrrr�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�sabcdefrrrsXYrFsXYcdefs123456sXYcdef123456)	r]r�rerxr-r5r4r�r�)r*r�rjrrr�test_write_and_rewind�sz(BufferedWriterTest.test_write_and_rewindcCs<|j�}|j|d�}|jd�|j�|jd|jd�dS)Nr�sabcr)r?rer-r�rxr')r*r�rjrrr�
test_flush�s

zBufferedWriterTest.test_flushcCsHdddg}|j�}|j|d�}|j|�|j�|jdj|j�d�dS)Nsabscdsefr�r@sabcdef)r?rer�r�rxrbr')r*r�r�rjrrr�test_writelines�s

z"BufferedWriterTest.test_writelinescCsLtdddg�}|j�}|j|d�}|j|�|j�|jdj|j�d�dS)Nsabscdsefr�r@sabcdef)rr?rer�r�rxrbr')r*r�r�rjrrr�test_writelines_userlist�s
z+BufferedWriterTest.test_writelines_userlistcCsN|j�}|j|d�}|jt|jdddg�|jt|jd�|jt|jd�dS)Nr�r6rFr��abc)r?rerzr{r�)r*r�rjrrr�test_writelines_error�s
z(BufferedWriterTest.test_writelines_errorcCs>|j�}|j|d�}|jd�~tj�|jd|jd�dS)Nr�sabcr)r?rer-rr�rxr')r*r�rjrrrr��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�rrr�sabc)r�rrnror�
write_moderer-rxr;r5rB)r*r�rjr"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�r6rF)
r�rrnrorr-rBr;rxr5)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,)rcr�)rjr��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,rrror�rer�r�r�rrQrBrxrrn)
r*r�r�r�r9r3r�r�rcr�r)rjr�r"rrr��s4
"zBufferedWriterTest.test_threadscCsF|j�}|j|d�}|jt|jd�|jt|j�|jt|jd�dS)NrJrsabcdef)rErerzrPr4r5r-)r*rrjrrrr�s
z%BufferedWriterTest.test_misbehaved_iocCs,|jt��|j|j�dd�WdQRXdS)Nr�rw)rzr{rer?)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)rP)r
rrr�	bad_write
sz?BufferedWriterTest.test_write_error_on_close.<locals>.bad_writesspam)r?r-rerzrPrQr
rO)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�r	r?rerzr�r�rir+)r*rrjrrrr�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�rg)r?rerzrir+r-)r*rrjrrrr�#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�rrnror�r�r�rer-r�rrr�rrrxrB)r*rr"rrrrr-s


z+CBufferedWriterTest.test_garbage_collectioncCs0|jtd��|jtj�ddd�WdQRXdS)Nr�i)r=r{rer]r�)r*rrrr�>sz#CBufferedWriterTest.test_args_errorN)
rrrr]r�rer�r�rr�rrrrrs


rc@seZdZejZdS)�PyBufferedWriterTestN)rrrr_r�rerrrrr	Dsr	c@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)rer?rrO)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@)
rer�r=rir�rBr-r+r?rx)r*rrrrr�Ms



z%BufferedRWPairTest.test_uninitializedcCs(|j|j�|j��}|j|j|j�dS)N)rer?rzrZrg)r*rrrrri[szBufferedRWPairTest.test_detachcCs2|jt��|j|j�|j�dd�WdQRXdS)Nr�rw)rzr{rer?)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?rzrPre)r*r
rrr�"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?rzrPre)r*rrrr�#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)rer�r?rxrB)r*rrrrr�qszBufferedRWPairTest.test_readcsX�fdd�}�j|�j�dddg��j|�j�dddg��j|�jd�ddg�dS)Ncs�j�jd��j��S)Ns	abc
def
h)rer�r?r)r*rrr{sz3BufferedRWPairTest.test_readlines.<locals>.<lambda>sabc
sdef
rurJ)rxr�)r*rr)r*rr�zsz!BufferedRWPairTest.test_readlinescCs,|j|jd�|j��}|j|jd�d�dS)Nsabcdefr�sabc)rer�r?rxr4)r*rrrrr��szBufferedRWPairTest.test_read1cCslxfdD]^}|j|��J|j|jd�|j��}td�}|jt||�|�d�|jt|�d�WdQRXqWdS)	Nr:r�sabcdefrrJsabcde)r:r�s)r�rer�r?rrxr6r)r*r8rrrrrr��s
z BufferedRWPairTest.test_readintocCsf|j�}|j|j�|�}|jd�|j�td�}|j|�d|dd�<|j�|j|jddg�dS)Nsabcsdefs***)r?rer-r�ryrxr')r*r�rr|rrrr��s

zBufferedRWPairTest.test_writecCsB|j|jd�|j��}|j|jd�jd��|j|jd�d�dS)Nsabcdefr�sabc)rer�r?r
r�r�rxrB)r*rrrr�	test_peek�szBufferedRWPairTest.test_peekcCs&|j|j�|j��}|j|j��dS)N)rer?r
r1)r*rrrr�
test_readable�sz BufferedRWPairTest.test_readablecCs&|j|j�|j��}|j|j��dS)N)rer?r
r.)r*rrrr�test_writeable�sz!BufferedRWPairTest.test_writeablecCs&|j|j�|j��}|j|j��dS)N)rer?rr2)r*rrrr�
test_seekable�sz BufferedRWPairTest.test_seekablecCs8|j|j�|j��}|j|j�|j�|j|j�dS)N)rer?rrOrQr
)r*rrrr�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?rQrerzr�r�r&r'r
rOr)r*rrSr�rr�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?rQrerzr�r�r&r'rrOr
)r*rrSr�rr�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?rQrerzr�r�r&r'r~rrrO)r*rrrSr�rr�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?rerrr
)r*rrrrr�test_isatty�szBufferedRWPairTest.test_isattycCs*|j|j�|j��}tj|�}d}d}dS)N)rer?rr)r*Zbrwrrrr�test_weakref_clearing�s
z(BufferedRWPairTest.test_weakref_clearingN)rrrr�r�rirrrr�r�r�r�r�rrrrrrrrr r!rrrrr
Gs*			r
c@seZdZejZdS)�CBufferedRWPairTestN)rrrr]r�rerrrrr"sr"c@seZdZejZdS)�PyBufferedRWPairTestN)rrrr_r�rerrrrr#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�sasrFsdddseeesdddeeer)r%r&)r?rerxrBr-rr')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	asdfghjklsasrFrsasdfr�s123fs	asdf123flrsrJr6rGsfl�g���)r�rerxrBr5r4r-r�r�rzr{)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	abcdefghisabrFs12sefrrsghirsXYZr�)r�rerxr-r5r�r4)r*Z	read_funcr�rjrrr�check_flush_and_read8s



z'BufferedRandomTest.check_flush_and_readcCs|jdd��dS)NcWs
|j|�S)N)rB)rjr[rrrr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')ryr:r)rjr9r
rrr�	_readintoNs
z=BufferedRandomTest.test_flush_and_readinto.<locals>._readintorg)rg)r+)r*r-rrr�test_flush_and_readintoMs
z*BufferedRandomTest.test_flush_and_readintocCsddd�}|j|�dS)Nr6cSs2|j|�}|dkr|d|�}|jt|�d�|S)Nr6rg)r�r4r)rjr9r
rrr�_peekUs

z5BufferedRandomTest.test_flush_and_peek.<locals>._peekrg)rg)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�rer-r�r4rxr�rB)r*r�rjrrr�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�)rjrrrr/psz6BufferedRandomTest.test_writes_and_peek.<locals>._peekcSs.|j�}|jdd�|jd�|j|d�dS)Nr6rrg)r5r4r�)rjr
rrrr/ss
)r�)r*r/rrr�test_writes_and_peekos
z'BufferedRandomTest.test_writes_and_peekcCsdd�}|j|�dS)NcSs|jdd�|jd�dS)Nr6rg)r4rB)rjrrr�_read{sz7BufferedRandomTest.test_writes_and_reads.<locals>._read)r�)r*r3rrr�test_writes_and_readszsz(BufferedRandomTest.test_writes_and_readscCsdd�}|j|�dS)NcSs|jdd�|jd�dS)Nr6rg)r4r4)rjrrr�_read1�sz9BufferedRandomTest.test_writes_and_read1s.<locals>._read1)r�)r*r5rrr�test_writes_and_read1s�sz)BufferedRandomTest.test_writes_and_read1scCsdd�}|j|�dS)NcSs|jdd�|jtd��dS)Nr6rg)r4r:ry)rjrrrr3�sz;BufferedRandomTest.test_writes_and_readintos.<locals>._read)r�)r*r3rrr�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)
Nr6rJr�r�r��Brs)r6rJs
AAAAAAAAAA)r�rerxrBr5r-r�r�)r*Zoverwrite_sizer�rjrcrrr�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)	NcSsF||kst�|j|�|j||�|jd�|j|�|jd�dS)N��)r�r4rBr-)rjZpos1Zpos2rrr�mutate�s


z:BufferedRandomTest.test_write_rewind_write.<locals>.mutates�����rr�rFr6zfailed result for i=%d, j=%d)r�rr�rer�ryrxr�)r*r<r
r��jr�rj�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�r�r�rFsAAsBBr�s
AAAAAAAAAA)r�rerxrBr;r-)r*r�rjrrr�!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�4rus1b2d3f4hsabcr�rsa2c)r�rer-rxrBr4ryr: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
rAsb
rBsdef
r��
s
1b
2def
3
)r�rer-rxr�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.r0r1r�r2r4r6r7r9r?r@r�rErGr�rrrrr$
s.
r$c@s*eZdZejZdd�Zdd�Zdd�ZdS)�CBufferedRandomTestcCsDtj|�tjdkr@|j�}|j|�}|jttt	f|j
|tj�dS)Ni���)r$r�r�r	r?rerzr�r�rir+)r*rrjrrrr��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=r{rer]r�)r*rrrr�	sz#CBufferedRandomTest.test_args_errorN)	rrrr]r�rer�rr�rrrrrH�s
rHc@seZdZejZdS)�PyBufferedRandomTestN)rrrr_r�rerrrrrI	srIc@s\eZdZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zddd�Z	dd�Z
d
Zedd��Z
dS)�StatefulIncrementalDecodera�
    For testing seek/tell behavior with a stateful, buffering decoder.

    Input is a sequence of words.  Words may be fixed-length (length set
    by input) or variable-length (period-terminated).  In variable-length
    mode, extra periods are ignored.  Possible words are:
      - 'i' followed by a number sets the input length, I (maximum 99).
        When I is set to 0, words are space-terminated.
      - 'o' followed by a number sets the output length, O (maximum 99).
      - Any other word is converted into a word followed by a period on
        the output.  The output word consists of the input word truncated
        or padded out with hyphens to make its length equal to O.  If O
        is 0, the word is output verbatim without truncating or padding.
    I and O are initially set to 1.  When I changes, any buffered input is
    re-scanned according to the new I.  EOF also terminates the last word.
    �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��oryr|)r*rrrrN.	sz StatefulIncrementalDecoder.resetcCs,|jdA|jdA}}t|j�|d|fS)Nr6r�)r�rQrr|)r*r�rQrrr�getstate3	sz#StatefulIncrementalDecoder.getstatecCs:|\}}t|�|_t|d�\}}|dA|dA|_|_dS)Nr�r6)ryr|�divmodr�rQ)r*�stater|r]r�rQrrr�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��cr6rQr��-rV)	r|rWrE�intr�rQr\rry)r*r[rrrrXN	s  z'StatefulIncrementalDecoder.process_wordc	Cs6|jr2|dkr2tjd�}tjd|jdddd|d�SdS)N�test_decoderzlatin-1)rUr;r\�incrementalencoder�streamreader�streamwriter�incrementaldecoder)�codecEnabledrL�lookup�	CodecInfor;)�clsrU�latin1rrr�lookupTestDecoder`	s
z,StatefulIncrementalDecoder.lookupTestDecoderN)rK)F)rrrr<r+rPrNrRrUr\rXre�classmethodrjrrrrrJ	s

rJc
@s*eZdZdZdddd d!d"d,gZdd�ZdS)-�StatefulIncrementalDecoderTestzB
    Make sure the StatefulIncrementalDecoder actually works.
    �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_casesrJrxr\)r*rY�eofr[�drrrr`�	sz+StatefulIncrementalDecoderTest.test_decoderN)rmFrn)roTrp)rqTrp)rrFrs)rtTru)rvTrwz<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--------------.)rxTr|)rrrr<ryr`rrrrrlo	s	rlc@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�)�testdatar\�
normalizedrrnro)r*rrrrp�	szTextIOWrapperTest.setUpcCstjtj�dS)N)rrnro)r*rrrrq�	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
)rr1Fzutf-8T)r�line_bufferingué
r/)r1rq)r�r�r�r+rxrr�r�rzr{ri)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�rzr�rhr=rir�rBr+r?rx)r*r�rrrr��	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�)rZhowdyshowdyrK)r�r�r�rfrgr-rr�rxrzrirhrr�r�)r*rr
r�rrrri�	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'>rxz0<%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�r;r�r�rrxrhrUr�r|rg)r*r�r
r��modnamerrrry�	s"









zTextIOWrapperTest.test_reprcCsR|j�}|j|�}tj|d|��(yt|�Wntk
rBYnXWdQRXdS)NrU)r�r�rrzrhr{)r*r�r�rrrr|�	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)r1r��Xr@zY
ZsXY
ZzA
BsXY
ZA
B)r�r�r�r-rxr�)r*rr
r�rrr�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�rxr�clear�update)r*Zold_environ�keyZcurrent_locale_encodingr
r�rrr�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�r0rzr�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�rxr�assertIsNotNonerLrf)r*r
r�rrr�
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�)rrK)rr�r�zabc

�replaceuabc
�
)r�r�rz�UnicodeErrorrBrx)r*r
r�rrr�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�ÿrK)rr�r�r�)rr�r1u	abcÿdef
sabcdef
r�sabc?def
)r�r�rzr�r-r�rxr�)r*r
r�rrr�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�)r1rrF)r�r�r�r�r�r�r�r�)FT)rrbr;r�r�r�r�rBrxrr,r�r%�zip)r*Zinput_linesr��	encodingsrrZdo_readsr�r1Z	exp_linesrj�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
rF�
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)rr1r)
r�r\rur�r�rxr�r4rBrb)r*r~rr1r>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�)rr1zAAA
BzBB
CCC
zX
Y
ZF)r��linesep�sorted�itemsr�r�r-r�rxrOr�)r*Ztestdictr�r1r>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�rQ)r*)r�r�rrrQ�
sz:TextIOWrapperTest.test_destructor.<locals>.MyBytesIO.closeN)rrrrQr)r�r�rr�	MyBytesIO�
sr�r�)rr�sabc)r�r�r-rr�rx)r*r�r
r�r)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,rGr�r�)r*r")rHr�rrr��
s
zDTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.__del__cs�jd�t�j�dS)NrF)r,rGrQ)r*)rHr�rrrQ�
s
zBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.closecs�jd�t�j�dS)Nr�)r,rGr�)r*)rHr�rrr��
s
zBTextIOWrapperTest.test_override_destructor.<locals>.MyTextIO.flush)rrrr�rQr�rKr)r�)rHr�MyTextIO�
sr�r�)rr6rFr�)r�r�rr�rx)r*r�r
r�r)r�rrn�
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�rqr)rr*rrr"�
sz:TextIOWrapperTest.test_error_through_destructor.<locals>.frrr6zException OSError: z ignored)
rNrrsrzr�r�rtrxrrur
r�rv)r*r"rcr)rr*rrw�
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)Nr6rFr�r�rJr�r��r�r��!�?�@�Ar��latin-1�utf-8zw+)rr�zr+rr�r�r��def�utf)r6rFr�r�rJr�r�r�r�r�r�r�r�r�)r�r�r�)rrror!rxr-rQr5rBr4r��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ÿ࿿￿r6rFr�r�rJ�r�r�r��>r�r�r���r�r�)rr6rFr�r�rJr�r�r�r�r�r�r�r�r�)
r4r;r�r,rrbr5r-r�rx)r*r"r�ZsampleZwlinesr3�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)rrror5r-r4rxr�rzrPrQ)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)	NrFr�zutf-8u袈
r�r)rr�)
r#rr;rxrrrror-rBr&r5r�)
r*Z
chunk_sizeZprefix_sizeZu_prefix�prefixZu_suffix�suffixr�r"rcrrr�test_seekings
zTextIOWrapperTest.test_seekingcCsfd}|jtjd��}|j|�WdQRX|jtjddd��"}|jd|_|j�|j�WdQRXdS)Ns࿿
r�rzutf-8)rrF)rrror-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)zTell/seek to various points within a data stream and ensure
            that the decoded data returned by read() is consistent.r�r`)rr6rJN)rrror-rQr!rBr�rrxr5r4)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_datar6rF�.)r)rJrerlryr)r*r�rY�_�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)rrrF)r�r�r�r�r�r�)r�r�r-r4rxrBr�r;)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�rzrPrB)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�rBrx)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
�CCrrJ)r�r�rxr�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�rBrx)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�rxr�)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�rxr�)r*r�r8r�rrrr��s

z*TextIOWrapperTest.test_writelines_userlistcCsH|j|j��}|jt|jdddg�|jt|jd�|jt|jd�dS)Nr6rFr�sabc)r�r�rzr{r�)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~rBrxr)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!rBrxr)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!rBr�rxr)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!rBrxr)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!rBr5r4rx)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�rxr2)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�)rrorr-r5rxrBr;)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�)	rrorr-r5r4rxrBr;)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�)	rrorr-r4r�rxrBr;)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�rKr�)r�)rrrorxr�)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�r[)r�r�)r�r�)r�rrr�*sz8TextIOWrapperTest.test_threads_write.<locals>.<listcomp>r~g{�G�z�?zThread%03d
)
r�ZEventrrror�r�r`r�r�rBrxr)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)rOr|rPr)rOr�rrr8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�rzrPrQr
rOr|r)r*rr)rOr�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�)rPrrrrrFsz>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_flushcSstd��dS)NrQ)rPrrrrr}Hsz>TextIOWrapperTest.test_close_error_on_close.<locals>.bad_closer�)rrQr�)rQ)r�)r�r~rQr�r�rzrPrxr'r[r~rrrO)r*r|rr}r�r�rrrr�D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�rrrrrW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~rQr�r�rzr�r�r&r'r~rrrO)r*r|rr}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~rQrzrir�)r*r�rrrres
z"TextIOWrapperTest.test_multi_closecCs8|j|j|j��}|j|j|j�|j|j|jd�dS)Nr)r�rYr~rzrZr5r4)r*r�rrrr�lsz!TextIOWrapperTest.test_unseekablec	CsB|j|j|j�dd�}|j|j�}|jt��||_WdQRXdS)Nr�)r)r�r�r~rzr�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�)rr1r�Zabcdzefghi
zjkl
zopq
)r?r�rxrBr�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)rr1�
write_through�1z23
4�5r@s123
45)r?r�r-rxrbr')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,rGr�)r*r[r)rH�flush_calledrrr��s
zHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.flushcs�jd�t�j||�S)NT)r,rGr-)r*r[r)rH�write_calledrrr-�s
zHTextIOWrapperTest.test_bufio_write_through.<locals>.BufferedWriter.write)rrrr�r-rKr)rr)rHrr��sr�r�rFr�T)rrr@r�r()
r�r�rr�r\r-rr
rxr�)r*r�rrrjr�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�rzr{rBr�)r*r�rrr�test_read_nonbytes�sz$TextIOWrapperTest.test_read_nonbytescCsLtjd�}tj|dd��tjtjd�dd�}WdQRX|jt|j	d�dS)N�rot13�_is_text_encodingTsfoo)rZbar)
rLrfrrzr]r�r�rzr{r-)r*r	r�rrr�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�)r1rF)rLrfr
r�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_valrrrR�szgTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>.BadDecoder.getstateN)rrrrRr)rrr�
BadDecoder�srcs��S)Nr)rx)rrr�_get_bad_decoder�szdTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapper.<locals>._get_bad_decoderrrd)rLrfrrz)rrr)r
)rrr�_make_very_illegal_wrapper�s
zJTextIOWrapperTest.test_illegal_decoder.<locals>._make_very_illegal_wrapperr/rF)r6rF)rzr{rBr�)r*r�rr)r
r*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()
            )�iomodrz-c)r]rrr)r*rr�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_errorr\rxrt)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-8rK)rr�r)rrrxr\rt)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�rxrBr\)r*rr�Z	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
srr�zutf-8)rcSsdS)Nrr)r�rrrr#
sz3TextIOWrapperTest.test_issue22849.<locals>.<lambda>)�objectr�r�r�r5)r*rr�r�rrr�test_issue22849
s

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


z!TextIOWrapperTest.test_issue25862N)Irrrrprqr�r�r�riryr|r�r�rr�r�r�r�r�r�r�r�r�rnrwr�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�rr�r�rr�r�rrrrrrrZrequires_type_collectingrrrr!r"rrrrr}�	s�	

	*/
	


 
(
r}cs,eZdZdZ�fdd�Z�fdd�Z�ZS)rzOA BytesIO object whose read method returns memoryviews
       rather than bytescstt�j|��S)N)rrGr4)r*�len_)rHrrr46
szMemviewBytesIO.read1cstt�j|��S)N)rrGrB)r*r$)rHrrrB9
szMemviewBytesIO.read)rrrr<r4rBrKrr)rHrr2
srcCs:tjd�}t|�t|�|j}|j|d|��t|�S)z6Convert bytes-object *buf* to a non-trivial memoryviewr�N)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�rq)r1)
r�r�r�rzrir+rBr�r�rh)r*rr
r�rrrr�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�ror�r�r-r�rrr�rrrxrB)r*rr
r�rr"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)rRrxr\rU)r
rcrrT)�decoderr*rr�
_check_decode|
s
zPIncrementalNewlineDecoderTest.check_newline_decoding_utf8.<locals>._check_decodes袈u袈��r�����r@T)rZrFr�r�r�z
as

z

s
as袈
u袈
s袈
)rz�UnicodeDecodeErrorr\rN)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)r;r,r\r)rcr
)r+�encoderrDrr�_decode_bytewise�
szNIncrementalNewlineDecoderTest.check_newline_decoding.<locals>._decode_bytewisecs"x|D]}�j�j|��qWdS)N)r,r\)rcr�)r+rDrrr3�
s
zabc

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

abcabc
abcabc)r�r4)r�r4)r�r�r4)rL�getincrementalencoderrx�newlinesrbrNr;r\)r*r+rr3rYr)r+r2rDr�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/)	Nr8r9r:r;r<r=r>r?)rL�getincrementaldecoder�IncrementalNewlineDecoderr7r1rzr{rU)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਀)rxr6r\)�dec)r*rr�_check�
s
z@IncrementalNewlineDecoderTest.test_newline_bytes.<locals>._checkF)r@T)rB)r*rErDr)r*r�test_newline_bytes�
s
z0IncrementalNewlineDecoderTest.test_newline_bytescCs`x.d
D]&}tjd��}|j||�}|j|�qWtjd��}|j|dd�}|j|jd�d�dS)NrFr6zutf-8r)r@s

z

r*rg)r*rgr6rF)rLrArBr1rxr\)r*r@r+rrr�test_translate�
s
z,IncrementalNewlineDecoderTest.test_translateN)rrrr1r7rCrFrGrrrrr*x
s
*!
r*c@seZdZdS)�CIncrementalNewlineDecoderTestN)rrrrrrrrH�
srHc@seZdZdS)�PyIncrementalNewlineDecoderTestN)rrrrrrrrI�
srIc@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)rrnro)r*rrrrq�
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�errorrZZSEEK_)
r]�__all__r6r��lowerr
�
issubclassr�r�r�)r*rUrrrr�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�)rrrorxr�rQr�r�rUr|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�rFrrr�zw+zw+br�r4irAr:r�r
r@r�)rrrorQrzrir�r0r�__iter__rr�rBr4rAr:ryr�r�r�r4r5r;r-r�r�)r*rr"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�CRsrUr�r6)	r&rkr
r�rrrr�r)r*rUr�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�)	rrror~r�r�ZassertNotIsInstancer�r�)r*Z	abcmoduler"rrr�_check_abc_inheritancedsz!MiscIOTest._check_abc_inheritancecCs|j|�dS)N)rY)r*rrr�test_abc_inheritanceuszMiscIOTest.test_abc_inheritancecCs|jt�dS)N)rYr])r*rrr�test_abc_inheritance_officialysz(MiscIOTest.test_abc_inheritance_officialcOsPt||�}t|�}|jt��}d}tj�WdQRX|j|t|jj	d��dS)Nr)
rrhZassertWarnsr�rr�r�r&Zwarningr[)r*r[rr"rr(rrr�_check_warn_on_dealloc~s
z!MiscIOTest._check_warn_on_dealloccCs2|jtjddd�|jtjd�|jtjd�dS)Nr�r)r�r�)r\rro)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�rQrP�errno�EBADF)rr�)�fdsrr�cleanup_fds�s
z9MiscIOTest._check_warn_on_dealloc_fd.<locals>.cleanup_fdsr�F)r�r�r�r\rr/r)r*r[rrarr�r)r`r�_check_warn_on_dealloc_fd�s
z$MiscIOTest._check_warn_on_dealloc_fdcCs&|jddd�|jd�|jd�dS)Nr�r)r�r)rb)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_PROTOCOLrrrorzr{�dumps)r*rZprotocolr"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)rg)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��ar6rFsBLOCKEDr@)rkrlrmrgrg)r�r�rjrrr,r-rkrxr[r^ZEAGAINr�rBr��iterrbr
rO)r*r�ZsentZreceivedrr�ZrfZwfr�r�r^r�rrrrg�sL



 &$z$MiscIOTest._test_nonblock_pipe_writecCs2|jtjd��WdQRX|jt|jtjd�dS)Nr�r�)rrrorz�FileExistsError)r*rrr�test_create_fail�s
zMiscIOTest.test_create_failcCsR|jtjd��}|jd�WdQRX|jtjd��}|jd|j��WdQRXdS)NZxbsspamr�)rrror-rxrB)r*r"rrr�test_create_writes�szMiscIOTest.test_create_writescCs|jt|jtjd�dS)Nzrwax+)rzrirrro)r*rrr�test_open_allargs�szMiscIOTest.test_open_allargsN)rrrrqrOrRrTrVrXrYrZr[r\r]rbrcrfrhrir�r�rr�rgrqrrrsrrrrrJ�
s*.
3rJc@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)Nrr�rri@Br)r*r9rrrrBszACMiscIOTest.test_readinto_buffer_overflow.<locals>.BadReader.readNrg)rg)rrrrBrrrr�	BadReadersrurF)r]r�ryrzrir:)r*rurjr
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�r\rr�rrt)r*Zstream_namerrVr�r�rrr�&check_daemon_threads_shutdown_deadlock
s

z2CMiscIOTest.check_daemon_threads_shutdown_deadlockcCs|jd�dS)N�stdout)ry)r*rrr�,test_daemon_threads_shutdown_stdout_deadlock6sz8CMiscIOTest.test_daemon_threads_shutdown_stdout_deadlockcCs|jd�dS)Nrr)ry)r*rrr�,test_daemon_threads_shutdown_stderr_deadlock9sz8CMiscIOTest.test_daemon_threads_shutdown_stderr_deadlockN)rrrr]rvr�r�r�ryr{r|rrrrrts
	)rtc@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*rrrrpDszSignalsTest.setUpcCstjtj|j�dS)N)r�r�r�)r*rrrrqGszSignalsTest.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�|d	d�|dd
�g�Wdtj|�tj��y|j�Wn4tk
�r&}	z|	jtjk�r�WYdd}	~	XnXXdS)z�Check that a partial write, when it gets interrupted, properly
        invokes the signal handler, and bubbles up the exception raised
        in the latter.cs6ttd�rtjtjtjg�tj�d�}�j|�dS)N�pthread_sigmaskr6)rr�r��	SIG_BLOCKr�r�rBr,)rc)r�read_resultsrrr3Ss
z2SignalsTest.check_interrupted_write.<locals>._read)r�TFr�r6NrrF)r�r��daemonr�r�r�
PIPE_MAX_SIZErr]rr�r��alarmrzr�r-rbr,rBrxrQrPr^r_)
r*�itemr�
fdopen_kwargsr3r�r��
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-)r[)rr�rr�on_alarm�s
z3SignalsTest.check_reentrant_write.<locals>.on_alarmr6r�zreentrant callr)r�r�r�r�r]rr�rzr�r{r�r-r�rBrr'r�r
r&r�rQ)	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�Wd	tjd
�|j
�tj
��tj
|�Xd	S)z�Check that a buffered read, when it gets interrupted (either
        returning a partial result or EINTR), properly invokes the signal
        handler and retries if the latter returned successfully.Fr�cstj�d�dS)Nsbar)r�r-)r�r�)r�rr�
alarm_handler�sz?SignalsTest.check_interrupted_read_retry.<locals>.alarm_handlersfoor6rrZfoobarNr)r�r�r�r�r]rr-r�rxrBrQ)r*r\r�rr�Zrior)r�r�check_interrupted_read_retry�s


z(SignalsTest.check_interrupted_read_retrycCs|jdd�dd�dS)NcSs
|jd�S)Nri)r\)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�_�fd	d
�}�fdd��||}tjtj	|�zl|j
j|f|�}tjd
�|j
|�}	|j||	�|j�d��j�|j��|j|tdd��D���Wdtjd�d�tj|�tj��y|j�Wn4tk
�rT}
z|
jtjk�rD�WYdd}
~
XnXXdS)z�Check that a buffered write, when it gets interrupted (either
        returning a partial result or EINTR), properly invokes the signal
        handler and retries if the latter returned successfully.�selectFr�NcspyDx>�s@x4��j�gggd�dkr<tj�d�}�j|�q
WqWWn&tk
rj}z
|�WYdd}~XnXdS)Ng�?ri)r�r�rBr,�
BaseException)rcr�)rKrr�r��write_finishedrrr3�sz8SignalsTest.check_interrupted_write_retry.<locals>._read)r�Tcstjtj��tjd�dS)Nr6)r�r�r�)r�r�)�alarm2rr�alarm1�sz9SignalsTest.check_interrupted_write_retry.<locals>.alarm1cs�j�dS)N)r�)r�r�)r�rrr��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�r�r]rr�r-rxr�rbr�sumrQrPr^r_)r*r�r�r�r�r3r�r�r�r�r�r)r�rKrr�r�r�r�r�check_interrupted_write_retry�sB
	





z)SignalsTest.check_interrupted_write_retrycCs|jddd�dS)Nrr�)r�)r�)r*rrr�%test_interrupted_write_retry_bufferedsz1SignalsTest.test_interrupted_write_retry_bufferedcCs|jdddd�dS)Nr�r�ri)r�r)r�)r*rrr�!test_interrupted_write_retry_textsz-SignalsTest.test_interrupted_write_retry_textN)rrrrprqr�r�r�r�r�r�r�rZrequires_freebsd_versionr�r#r�r�r�r�r�r�r�r�r�rrrrrAs /Erc@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)
NrBcSsi|]}tt|�|�qSr)r6r])r�rUrrr�
<dictcomp>3szload_tests.<locals>.<dictcomp>cSsi|]}tt|�|�qSr)r6r_)r�rUrrrr�4sc3s"|]}|j�d|jfVqdS)rUN)r)r�r�)�globsrrr�6szload_tests.<locals>.<genexpr>c3s"|]}|j�d|jfVqdS)�PyN)r)r�r�)r�rrr�7srrUr�cSsg|]}tj|��qSr)r�Z	makeSuite)r�r�rrrr�Bszload_tests.<locals>.<listcomp>)'rYr[r\r�r�rr	r"r#rHrIrlrHrIr'r)rtr}r�r�r?rErTrNr`rYr$r]rL�globalsr�r_�OpenWrapperrr�r��setattrr�Z	TestSuite)
r[r�ZmocksZall_membersZc_io_nsZpy_io_nsr�rUrZsuiter)r�r�
load_tests!s8


r��__main__)ir<r�rr^r�r�rdr�r�r�r�r�r�r�collectionsrr�	itertoolsrrr�rZtest.support.script_helperrrZtest.supportr	rLr]Z_pyior_r��ImportErrorrrZ	Structurerr#r$r�r=r>r?rCrDrErLrMrNrRrSrTr�rWrXrYr\r^r`rjrlZTestCasermrYr[r�r\rdr�r�r�r�r�rr	r
r"r#r$rHrIrMrJ�registerrjrlr}rrr'r)r*rHrIrJrtr}ZskipIfrUrr�r�r�r�mainrrrr�<module>s�
8

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


Youez - 2016 - github.com/yon3zu
LinuXploit