HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/test/__pycache__/test_fileinput.cpython-310.opt-2.pyc
o

�i���@sr	ddlZddlZddlZddlZddlZddlZddlZddlZddlZzddl	Z	Wne
y6dZ	YnwzddlZWne
yHdZYnwddlmZm
Z
ddlmZmZddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZGdd
�d
�ZGdd�d�ZGdd�deej�Z Gdd�d�Z!Gdd�deej�Z"Gdd�d�Z#Gdd�dej�Z$Gdd�de$�Z%Gdd�de$�Z&Gdd�de$�Z'Gd d!�d!e$�Z(Gd"d#�d#e$�Z)Gd$d%�d%e$�Z*Gd&d'�d'e$�Z+Gd(d)�d)e$�Z,Gd*d+�d+e$�Z-Gd,d-�d-�Z.Gd.d/�d/ej�Z/Gd0d1�d1ej�Z0Gd2d3�d3ej�Z1e2d4k�r7e�3�dSdS)5�N)�BytesIO�StringIO)�	FileInput�hook_encoded)�Path)�verbose)�TESTFN)�unlink)�	os_helper)�warnings_helper)�support)�mockc@seZdZdd�dd�ZdS)�	BaseTests�w��modecCsht��\}}|�tj|�d|vrdnd}t|||d��}|�|�Wd�|S1s-wY|S)N�b�utf-8��encoding)�tempfile�mkstemp�
addCleanupr
r	�open�write)�selfZcontentr�fd�namer�f�r�0/usr/local/lib/python3.10/test/test_fileinput.py�writeTmp,s
��zBaseTests.writeTmpN)�__name__�
__module__�__qualname__r!rrrr r)src@sDeZdZdd�Zedd��Zdd�Zddd	�Zddd�Zd
d�Z	dS)�
LineReadercCs
g|_dS�N��
_linesread�rrrr �__init__6�
zLineReader.__init__cCs z|jdd�Wg|_Sg|_wr&r'r)rrr �	linesread9szLineReader.linesreadcCst|�d��|_|S�NT)�iter�
splitlines�it)r�filenamerrrr �openhook@szLineReader.openhookNcCst|jd�}|j�|�|S)N�)�nextr0r(�append)r�size�linerrr �readlineDszLineReader.readline���cCs>g}d}	|��}|s
|S|�|�|t|�7}||kr|Sq�Nr)r8r5�len)rZhint�linesr6r7rrr �	readlinesIs
�zLineReader.readlinescC�dSr&rr)rrr �closeUszLineReader.closer&)r9)
r"r#r$r*�propertyr,r2r8r=r?rrrr r%4s


r%c@�eZdZdd�ZdS)�BufferSizesTestsc
Cs�|�d�dd�td�D���}|�d�dd�td�D���}|�d�dd�td�D���}|�d�d	d�td
�D���}t�d�}trGtd�t||||fd
d�}t|�}|�	�|�
t|�d�|�
|dd�|�
|dd�|�
|��d�|�
|�
�|�tr�td�t||||fd
d�}d}|r�|dkr�|��}|r�|dks�|�
|�
�|�|�
|��d�|�
|��d�|�|���|�|���tr�td�|��|�
|��d�|�
|��d�|�	�tr�td�t||||dfd
d�}tj}	z*td�t_t|�}|�
t|�d�|�
|d d!�|�
|�
�d"�|��W|	t_n|	t_wt�r1td#�t||||fd
d�}|�
|��d$�|�
|�
�d�|��|�
|��d$�|�
|�
�d�t�rftd%�tj}
z&t||||fd
d
d&�}|D]}|dd'���}t|��qw|�	�W|
t_n|
t_wt||||fd
d�}|D]'}|�
|d'd(�|�|dd'��}|�|d�|�
t|�d
��|����q�|�	�dS))Nr3cs��|]	}d|dVqdS)zLine %s of file 1
�Nr��.0�irrr �	<genexpr>[��z5BufferSizesTests.test_buffer_sizes.<locals>.<genexpr>�csrC)zLine %s of file 2
rDNrrErrr rH\rI�
csrC)zLine %s of file 3
rDNrrErrr rH]rI�csrC)zLine %s of file 4
rDNrrErrr rH^rIrDzLINE (\d+) OF FILE (\d+)z1. Simple iterationr��filesr��zLine 5 of file 1
�zLine 1 of file 4
z2. Status variables�xzLine 6 of file 2
��z3. NextfilezLine 1 of file 3
�z4. Stdin�-z Line 1 of stdin
Line 2 of stdin
�!� zLine 2 of stdin
z<stdin>z5. Boundary conditionsrz
6. Inplace�rN�inplacerr9�
)r!�join�range�re�compiler�printr�listr?�assertEqualr;�linenor1r8�
filelineno�assertFalse�isfirstline�isstdin�nextfile�sys�stdinr�stdout�upper�match�assertNotEqual�int�group)
r�t1�t2�t3�t4�pat�fir<�sZ	savestdinZ
savestdoutr7�mrrr �test_buffer_sizesYs�
�


z"BufferSizesTests.test_buffer_sizesN)r"r#r$ryrrrr rBXsrBc@�eZdZdd�Zdd�ZdS)�UnconditionallyRaisecCs||_d|_dS�NF)�exception_type�invoked)rr}rrr r*�s
zUnconditionallyRaise.__init__cOsd|_|���r-)r~r}�r�args�kwargsrrr �__call__�szUnconditionallyRaise.__call__N�r"r#r$r*r�rrrr r{�sr{c@seZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zejed�d d!��Zd"d#�Zejed�d$d%��Zejed�d&d'��Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Z d8S)9�FileInputTestscCs�|�d�}|�d�}|�d�}|�d�}t||||fdd�}|��}|�|d�|�|��d�|�|��d�|�|��|�|��}|�|�|�|��d�|�|��d�|�|��|�|��dS)Nr3zThe only line there is.
rrMrDr)	r!rr8rbrcrdr1rer?)rrqrrrsrtrvr7rrr �test_zero_byte_files�s 




z#FileInputTests.test_zero_byte_filescCs`|�d�}|�d�}t||fdd�}t|�}|�|gd��|�|��d�|�|��d�dS)N�A
B
C�D
E
FrrM��A
�B
�CzD
zE
�F�rT)r!rrarbrdrc�rrqrrrvr<rrr �%test_files_that_dont_end_with_newline�s

z4FileInputTests.test_files_that_dont_end_with_newlinecCs�|�d�}|�d�}t||fdd�}|�|��d�t|�}|�|��d�|��|�|��d�t|�}|�|��d�dS)NzA
BzC
DrrMr9)r!rrb�filenor4rnrhra)rrqrrrvr7rrr �test_fileno�s

zFileInputTests.test_filenocCs�z
tddd�}|�d�Wn	tyYnw|jddd�}t�dtf��t|d	dd
�}Wd�n1s7wYt�dtf��t|�}Wd�n1sRwY|�|gd��dS)Nrr)rrz-FileInput should reject invalid mode argument�A
B
C
D�wbrr3�U)rNrr)r�r��C
�D)	r�fail�
ValueErrorr!rZcheck_warnings�DeprecationWarningrarb)rrvrqr<rrr �test_opening_mode�s��
�z FileInputTests.test_opening_modecCs^t�d�� }td�|_tdgdd�}t|�}|�|dg�Wd�dS1s(wYdS)Nz	sys.stdin�spam, bacon, sausage, and spamrV�rb�rNr)r
Zpatchr�bufferrrarb)rZm_stdinrvr<rrr �test_stdin_binary_mode�s
"�z%FileInputTests.test_stdin_binary_modecCs\tj}z&td�t_|�ttjd��tdgdd�}t|�}|�|dg�W|t_dS|t_w)Nr�r�rVr�r�)rirjrre�hasattrrrarb)rZ
orig_stdinrvr<rrr �test_detached_stdin_binary_mode�s
z.FileInputTests.test_detached_stdin_binary_modecCs�ztddd�d�}|�d�Wn	tyYnwztdd�}|�d�Wn	ty.YnwGdd	�d	�}|�d
�}|�}t|g|d��}|��Wd�n1sTwY|�|jd�dS)NrDcSr>r&r)rrxrrr �<lambda>
�z7FileInputTests.test_file_opening_hook.<locals>.<lambda>)rZr2zGFileInput should raise if both inplace and openhook arguments are given�r2z2FileInput should check openhook for being callablec@rz)z=FileInputTests.test_file_opening_hook.<locals>.CustomOpenHookcS�
d|_dSr|)r~r)rrr r*r+zFFileInputTests.test_file_opening_hook.<locals>.CustomOpenHook.__init__c_sd|_t|ddi�S)NTrr)r~r)rr�Zkargsrrr r�szFFileInputTests.test_file_opening_hook.<locals>.CustomOpenHook.__call__Nr�rrrr �CustomOpenHook�r�r[zopenhook not invoked)rr�r�r!r8�
assertTruer~)rrvr��tZcustom_open_hookrrr �test_file_opening_hook
s&�
�

�z%FileInputTests.test_file_opening_hookc	Cs2ttd��}|�d�|�dd�|�d�Wd�n1s!wY|�tt�tttd�d��[}z|�|��d�|�|��d	�|�|��d
�Wnt	y]|�
d�Ynw|�t	��t|�Wd�n1srwY|�|��d�|�|��d�Wd�dS1s�wYdS)
Nr�sA
B
C
s
123456789
i����ascii�rNr2r�r�r�zRead to end of filer3)
rrrr�safe_unlinkrrrbr8�UnicodeDecodeErrorr��assertRaisesra�rrrvrrr �
test_readline%s.
���
�"�zFileInputTests.test_readlinecCs�ttd��
}|�d�Wd�n1swY|�tt�ttdd��1}|�|��d�|�|��d�|�|��d�|�|��d�|�|��d�Wd�dS1sZwYdS)	Nr�r�r�r�sA
sB
sC
D�)rrrrr�rrbr8r�rrr �test_readline_binary_mode<s�"�z(FileInputTests.test_readline_binary_modecCs�|jddd�}t|ddd��}|��}|�|d�tj�d�Wd�n1s)wYt|d��}|�|��d�Wd�dS1sGwYdS)Ns
Initial text.r�rr�T)rrZs	New line.)	r!rr8rbrirkrr�read�rZ	temp_fileZfobjr7rrrr �test_inplace_binary_write_modeIs�"�z-FileInputTests.test_inplace_binary_write_modecCs�|jddd�}t|dddd��}|��}|�|d�td	�Wd�n1s(wYt|d
��}|�|���d�d�Wd�dS1sIwYdS)
NsInitial text �r�rTr��replace)rZr�errorsuInitial text �uNew line ˆr�s
s
New line ?)r!rr8rbr`rr��rstripr�rrr �test_inplace_encoding_errorsSs�
�"�z+FileInputTests.test_inplace_encoding_errorscCsXdd�}|�d�}t|g|d��}|��}Wd�n1swY|�|d�dS)NcS�
t�d�S)N�(I used to receive only filename and mode)�ior�r1rrrr �old_hook^r+zFFileInputTests.test_file_hook_backward_compatibility.<locals>.old_hookr[r�r�)r!rr8rb)rr�r�rv�resultrrr �%test_file_hook_backward_compatibility]s

�z4FileInputTests.test_file_hook_backward_compatibilitycCs�|�d�}|�d�}t||fdd��}t|�}Wd�n1s!wY|�|gd��|�|��d�|�|��d�|�|jd�dS)	Nr�r�rrMr�r�rTr)r!rrarbrdrc�_filesr�rrr �test_context_manageres


�z#FileInputTests.test_context_managercCsV|�d�}zt|dd��}t�1swYWdSty*|�|jd�YdSw)Nr3rrMr)r!r�OSErrorrbr�)rrqrvrrr �test_close_on_exceptionos
��z&FileInputTests.test_close_on_exceptioncCs@tgdd��}|�|jd�Wd�dS1swYdS)NrrM)rV)rrbr�)rrvrrr �.test_empty_files_list_specified_to_constructorws"�z=FileInputTests.test_empty_files_list_specified_to_constructor)�categorycCsh	|�d�}t|gdd��}|d}|�|d�|d}|�|d�Wd�dS1s-wYdS)N�line1
line2
rrMr�line1
rDzline2
)r!rrb)rr�rvZretval1Zretval2rrr �test__getitem__{s
"�zFileInputTests.test__getitem__c	Cs�|�d�}|�td��/t|gd��}|�|dd�Wd�n1s%wYWd�dSWd�dS1s=wYdS)Nr�zUse iterator protocol instead)rNrr�)r!ZassertWarnsRegexr�rrb)rr�rvrrr �test__getitem___deprecation�s
���"�z*FileInputTests.test__getitem___deprecationc	C�	|�d�}t|gdd��!}|�t��}|dWd�n1s"wYWd�n1s1wY|�|jjd�dS)Nr�rrMrD)zaccessing lines out of order)r!rr��RuntimeErrorrb�	exceptionr��rr�rv�cmrrr �test__getitem__invalid_key��

���z)FileInputTests.test__getitem__invalid_keyc	Cr�)Nr3rrMr)zend of input reached)r!rr��
IndexErrorrbr�r�r�rrr �test__getitem__eof�r�z!FileInputTests.test__getitem__eofcCs�	tj}tt�}z5|�d�}|�t|d�t|gddd��}t|�|t_|�	�Wd�n1s4wYW|t_n|t_w|�
|jd�dS)Nr[z.bakTrrYzos.unlink() was not invoked)�osr	r{r�r!rr�rr4rhr�r~)rZos_unlink_origZos_unlink_replacementr�rvrrr �%test_nextfile_oserror_deleting_backup�s 

���z4FileInputTests.test_nextfile_oserror_deleting_backupcC�~	tj}tt�}z)|�d�}t|gddd��}|t_|��Wd�n1s(wYW|t_n|t_w|�|jd�dS�Nr[TrrYzos.fstat() was not invoked)	r��fstatr{r�r!rr8r�r~)rZ
os_fstat_origZos_fstat_replacementr�rvrrr �%test_readline_os_fstat_raises_OSError��

���z4FileInputTests.test_readline_os_fstat_raises_OSErrorcCr�r�)	r��chmodr{r�r!rr8r�r~)rZ
os_chmod_origZos_chmod_replacementr�rvrrr �%test_readline_os_chmod_raises_OSError�r�z4FileInputTests.test_readline_os_chmod_raises_OSErrorc	Cs�Gdd�dt�}|�}|�d�}t|gdd��}|j}z||_|��}W||_n||_wWd�n1s6wY|�|jd�|�|dd�dS)	Nc@rz)zQFileInputTests.test_fileno_when_ValueError_raised.<locals>.FilenoRaisesValueErrorcS�t�|t�dSr&)r{r*r�r)rrr r*��zZFileInputTests.test_fileno_when_ValueError_raised.<locals>.FilenoRaisesValueError.__init__cSs|��dSr&)r�r)rrr r���zXFileInputTests.test_fileno_when_ValueError_raised.<locals>.FilenoRaisesValueError.filenoN)r"r#r$r*r�rrrr �FilenoRaisesValueError�r�r�r[rrMz_file.fileno() was not invokedr9zfileno() should return -1)r{r!r�_filer�r�r~rb)rr�Z unconditionally_raise_ValueErrorr�rvZfile_backupr�rrr �"test_fileno_when_ValueError_raised�s

�	�z1FileInputTests.test_fileno_when_ValueError_raisedcCs�t�}tddg|jd��`}|�|jg�|�|��d�|�|jdg�|�|��d�|�|jdg�|�|��d�|�|jddg�|�|��d�|�|jdg�|�|��d�|�|jg�Wd�dS1sowYdS�Nzline1
line2zline3
r�r�Zline2r3)r%rr2rbr,r8�r�srcrvrrr �test_readline_buffering�s"�"�z&FileInputTests.test_readline_bufferingcCs�t�}tddg|jd��^}|�|jg�|�t|�d�|�|jdg�|�t|�d�|�|jdg�|�t|�d�|�|jddg�|�tt|�|�|jdg�|�tt|�|�|jg�Wd�dS1smwYdSr�)r%rr2rbr,r4r��
StopIterationr�rrr �test_iteration_bufferings"�"�z'FileInputTests.test_iteration_bufferingcCs�t|�d��}t|dd��.}|��}|�|d�|�|��d�|�|��d�|�|��t�	|��Wd�dS1s>wYdS)N�
Pathlib file.rrrD)
rr!rr8rbrcrdr1r��fspath)rrqrvr7rrr �test_pathlib_files"�z FileInputTests.test_pathlib_filecCs�t|�d��}t|ddd��}|��}|�|d�td|�Wd�n1s)wYt|dd��}|�|��d�Wd�dS1sHwYdS)Nr�Tr)rZrzModified %srzModified Pathlib file.
)rr!rr8rbr`rr�)rrqrvr7rrrr �test_pathlib_file_inplaces�"�z(FileInputTests.test_pathlib_file_inplaceN)!r"r#r$r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rZignore_warningsr�r�r�r�r�r�r�r�r�r�r�r�r�rrrr r��s>









	
		r�c@sdeZdZ	dddddd�dd�Zdd	�Zd
d�Zdd
�Zdd�Zdd�Zdd�Z	dd�Z
dd�ZdS)�
MockFileInputNFr3�r)rr2rr�cCsJ||_||_||_||_||_||_||_d|_t�	dd��|_
i|_dS)NcSsdSr:rrrrr r�1r�z(MockFileInput.__init__.<locals>.<lambda>)rNrZ�backuprr2rr�r��collections�defaultdict�invocation_counts�
return_values)rrNrZr�rr2rr�rrr r*'s
zMockFileInput.__init__cCs|jdd7<dS)Nr?rD)r�r)rrr r?4szMockFileInput.closecC�|jdd7<|jdS)NrhrD�r�r�r)rrr rh7�
zMockFileInput.nextfilecCr�)Nr1rDr�r)rrr r1;r�zMockFileInput.filenamecCr�)NrcrDr�r)rrr rc?r�zMockFileInput.linenocCr�)NrdrDr�r)rrr rdCr�zMockFileInput.filelinenocCr�)Nr�rDr�r)rrr r�Gr�zMockFileInput.filenocCr�)NrfrDr�r)rrr rfKr�zMockFileInput.isfirstlinecCr�)NrgrDr�r)rrr rgOr�zMockFileInput.isstdin)NFr3)r"r#r$r*r?rhr1rcrdr�rfrgrrrr r�$s�
r�c@�&eZdZ	dd�Zdd�Zdd�ZdS)�BaseFileInputGlobalMethodsTestcCstj|_tj|_tt_dSr&)�	fileinput�_state�_orig_stater�_orig_FileInputr�r)rrr �setUpWs
z$BaseFileInputGlobalMethodsTest.setUpcCs|jt_|jt_dSr&)r�r�rr�r�r)rrr �tearDown\sz'BaseFileInputGlobalMethodsTest.tearDowncCs2|j|}|�|d|�t|j�}|�|d�dS)NrD)r�rbr;)rZmock_file_inputZmethod_nameZactual_countZactual_total_countrrr �assertExactlyOneInvocation`s

z9BaseFileInputGlobalMethodsTest.assertExactlyOneInvocationN)r"r#r$r�rrrrrr r�Ss
r�c@s.eZdZ	dd�Zdd�Zdd�Zdd�Zd	S)
�Test_fileinput_inputcCsl	t�}t�|_|t_|�t��}t��Wd�n1swY|�d|j	j
�|�|tjd�dS)N)zinput() already active�fileinput._state)r��objectr�r�r�r�r��inputrbr�r��assertIs)r�instancer�rrr �1test_state_is_not_None_and_state_file_is_not_Noneks
�zFTest_fileinput_input.test_state_is_not_None_and_state_file_is_not_NonecCs 	t�}d|_|t_|��dSr&)r�r�r�r��do_test_call_input�rrrrr �-test_state_is_not_None_and_state_file_is_Nonexs
zBTest_fileinput_input.test_state_is_not_None_and_state_file_is_NonecCs	dt_|��dSr&)r�r�r	r)rrr �test_state_is_None�sz'Test_fileinput_input.test_state_is_NonecCs�	t�}t�}t�}t�}t�}t�}tj||||||d�}|�|tjd�|�||jd�|�||jd�|�||jd�|�||jd�|�||j	d�dS)N)rNrZr�rr2rrrNrZr�rr2)
rr�rrr�rNrZr�rr2)rrNrZr�rr2rr�rrr r	�s 
�z'Test_fileinput_input.do_test_call_inputN)r"r#r$rrrr	rrrr rhs
	rc@�eZdZ	dd�Zdd�ZdS)�Test_fileinput_closecCs 	dt_t��|�tj�dSr&)r�r�r?�assertIsNoner)rrr r�sz'Test_fileinput_close.test_state_is_NonecCs2	t�}|t_t��|�|d�|�tj�dS)Nr?)r�r�r�r?rrr
rrr �test_state_is_not_None�sz+Test_fileinput_close.test_state_is_not_NoneN�r"r#r$rrrrrr r�src@r
)�Test_fileinput_nextfilecC�Z	dt_|�t��}t��Wd�n1swY|�d|jj�|�tj�dS�N)zno active input())	r�r�r�r�rhrbr�r�r�rr�rrr r��
�z*Test_fileinput_nextfile.test_state_is_NonecC�P	t�}t�}||jd<|t_t��}|�|d�|�||�|�tj|�dS)Nrh)rr�r�r�r�rhrr)rZnextfile_retvalr�retvalrrr r��
z.Test_fileinput_nextfile.test_state_is_not_NoneNrrrrr r��
rc@r
)�Test_fileinput_filenamecCrr)	r�r�r�r�r1rbr�r�rrrrr r�rz*Test_fileinput_filename.test_state_is_NonecCr)Nr1)rr�r�r�r�r1rr)rZfilename_retvalrrrrr r�rz.Test_fileinput_filename.test_state_is_not_NoneNrrrrr r�rrc@r
)�Test_fileinput_linenocCrr)	r�r�r�r�rcrbr�r�rrrrr r�rz(Test_fileinput_lineno.test_state_is_NonecCr)Nrc)rr�r�r�r�rcrr)rZ
lineno_retvalrrrrr r�rz,Test_fileinput_lineno.test_state_is_not_NoneNrrrrr r�rrc@r
)�Test_fileinput_filelinenocCrr)	r�r�r�r�rdrbr�r�rrrrr rrz,Test_fileinput_filelineno.test_state_is_NonecCr)Nrd)rr�r�r�r�rdrr)rZfilelineno_retvalrrrrr rrz0Test_fileinput_filelineno.test_state_is_not_NoneNrrrrr rrrc@r
)�Test_fileinput_filenocCrr)	r�r�r�r�r�rbr�r�rrrrr r)rz(Test_fileinput_fileno.test_state_is_NonecCsV	t�}t�}||jd<||_|t_t��}|�|d�|�||�|�tj|�dS)Nr�)	rr�r��
fileno_retvalr�r�r�rr)rrrrrrr r3s
z,Test_fileinput_fileno.test_state_is_not_NoneNrrrrr r&rrc@r
)�Test_fileinput_isfirstlinecCrr)	r�r�r�r�rfrbr�r�rrrrr rErz-Test_fileinput_isfirstline.test_state_is_NonecCr)Nrf)rr�r�r�r�rfrr)rZisfirstline_retvalrrrrr rOrz1Test_fileinput_isfirstline.test_state_is_not_NoneNrrrrr r Brr c@r
)�Test_fileinput_isstdincCrr)	r�r�r�r�rgrbr�r�rrrrr r`rz)Test_fileinput_isstdin.test_state_is_NonecCr)Nrg)rr�r�r�r�rgrr)rZisstdin_retvalrrrrr rjrz-Test_fileinput_isstdin.test_state_is_not_NoneNrrrrr r!]rr!c@rz)�InvocationRecordercCr�r:)�invocation_countr)rrr r*zr+zInvocationRecorder.__init__cOs"|jd7_||f|_t�d�S)NrDs
some bytes)r#�last_invocationr�rrrrr r�}s

zInvocationRecorder.__call__Nr�rrrr r"xsr"c@s�eZdZ	dd�Zdd�Zdd�Ze�ed�dd	��Z	e�ed�d
d��Z
e�ed�d
d��Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zedd��ZdS) �Test_hook_compressedcCst�|_dSr&)r"�	fake_openr)rrr r��r�zTest_hook_compressed.setUpcC�|�dd�dS)Nr3r���do_test_use_builtin_open_textr)rrr �test_empty_string�r�z&Test_hook_compressed.test_empty_stringcCr'�N�abcdr�r(r)rrr �test_no_ext�r�z Test_hook_compressed.test_no_extzRequires gzip and zlibcC�Vtj}|jt_zt�dd�}W|t_n|t_w|�|jjd�|�|jjdif�dS)N�test.gzr�rD)r/r�)�gziprr&r��hook_compressedrbr#r$�r�
original_openr�rrr �test_gz_ext_fake��z%Test_hook_compressed.test_gz_ext_fakecCsJtj}dd�t_z
tjdddd�}W|t_n|t_w|�t|�dg�dS)NcSr�)NsEx-binary string)r�rr�rrr r��s
zATest_hook_compressed.test_gz_with_encoding_fake.<locals>.<lambda>r/r�rrzEx-binary string)r0rr�r1rbrar2rrr �test_gz_with_encoding_fake�s
z/Test_hook_compressed.test_gz_with_encoding_fakezRequires bz2cCr.)N�test.bz2r�rD)r7r�)�bz2�BZ2Filer&r�r1rbr#r$r2rrr �test_bz2_ext_fake�r5z&Test_hook_compressed.test_bz2_ext_fakecCr')Nz	abcd.blahr���do_test_use_builtin_open_binaryr)rrr �
test_blah_ext�r�z"Test_hook_compressed.test_blah_extcCr')Nzabcd.Gzr�r;r)rrr �test_gz_ext_builtin�r�z(Test_hook_compressed.test_gz_ext_builtincCr')Nzabcd.Bz2r�r;r)rrr �test_bz2_ext_builtin�r�z)Test_hook_compressed.test_bz2_ext_builtincCr')Nr,r�r;r)rrr �test_binary_mode_encoding�r�z.Test_hook_compressed.test_binary_mode_encodingcCr'r+r(r)rrr �test_text_mode_encoding�r�z,Test_hook_compressed.test_text_mode_encodingc	Csf|�|j�}z
t�||�}W|�|�n|�|�w|�|jjd�|�|jj||fddd�f�dS)NrD�rr���replace_builtin_openr&r�r1rbr#r$�rr1rr3r�rrr r<��
�z4Test_hook_compressed.do_test_use_builtin_open_binaryc	Csf|�|j�}z
t�||�}W|�|�n|�|�w|�|jjd�|�|jj||fddd�f�dS)NrD�localerBrCrErrr r)�rFz2Test_hook_compressed.do_test_use_builtin_open_textcCstj}|t_|Sr&)�builtinsr)Z
new_open_funcr3rrr rD�sz)Test_hook_compressed.replace_builtin_openN)r"r#r$r�r*r-�unittestZ
skipUnlessr0r4r6r8r:r=r>r?r@rAr<r)�staticmethodrDrrrr r%�s(




	
r%c@r�)�Test_hook_encodedcCs�t�}t�}tj||d�}t�}tj}|t_zt�}t�}|||�}W|t_n|t_w|�|jd�|j\}	}
|�	|	d|�|�	|	d|�|�	|
�
d�|�|�	|
�
d�|�|�|
�dS)N�r�rDrrr�)rr�rr"rHrrbr#r$r�popre)rrr�r�r&r3r1rZopen_resultr�r�rrr �test�s$
zTest_hook_encoded.testcs�ttd��
}|�d�Wd�n1swY��tt��fdd�}|ddg���t��|ddg�Wd�n1sBwY|dd	g�|d
dg�dS)Nr�s�abccsNttdtd|d�d��}t|�}Wd�n1swY��||�dS)Nr�rrL�rNrr2�rrrrarb)r��expected_linesrvr<r)rr �check�s
�
�z,Test_hook_encoded.test_errors.<locals>.check�ignore�abc�strictr�u�abc�backslashreplacez\x80abc)rrrrr�r�r��rrrRrr)r �test_errors�s��zTest_hook_encoded.test_errorscsttd��
}|�d�Wd�n1swY��tt��fdd�}|dgd����t��|dgd��Wd�n1sDwY��t��|dgd��Wd�n1s`wY��t��|d	gd
��Wd�dS1s}wYdS)Nr�s
A
B
C
D+IKw-csJtt|td�d��}t|�}Wd�n1swY��||�dS)Nzutf-7rOrP)rrQrvr<r)rr rRs�
�z+Test_hook_encoded.test_modes.<locals>.checkr�)r�r�r��D€ZrUr�r�)r�zB
zC
rY)	rrrrr�ZassertWarnsr�r�r�rWrr)r �
test_modess���"�zTest_hook_encoded.test_modesN)r"r#r$rNrXrZrrrr rK�s
rKc@rA)�MiscTestcCr�r&)rZcheck__all__r�r)rrr �test_allr�zMiscTest.test_allN)r"r#r$r\rrrr r[sr[�__main__)4r�r�rir^r�r�rHrrIr8�ImportErrorr0rrrr�pathlibrZtest.supportrZtest.support.os_helperrr	r�r
rrNrr
rr%ZTestCaserBr{r�r�r�rrrrrrrr r!r"r%rKr[r"�mainrrrr �<module>sn��$Ss/?YA
�