Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /opt/cppython/lib/python3.8/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : //opt/cppython/lib/python3.8/test/__pycache__/test_tempfile.cpython-38.opt-1.pyc
U

>��g���@s&ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlZddlmZddlmZejejkZeed�Zej�d�r�dZndZGd	d
�d
ej�ZGdd�dej�ZGd
d�de�ZGdd�de�ZGdd�de�ZGdd�de�Z Gdd�de�Z!e	j"dd��Z#dd�Z$Gdd�d�Z%Gdd�de%e�Z&Gdd �d e�Z'Gd!d"�d"e�Z(Gd#d$�d$e�Z)Gd%d&�d&e%e�Z*Gd'd(�d(e�Z+Gd)d*�d*e�Z,Gd+d,�d,e�Z-ej.ej/k	�r�Gd-d.�d.e�Z0Gd/d0�d0�Z1Gd1d2�d2e�Z2e3d3k�r"e�4�dS)4�N)�mock)�support)�
script_helper�spawnlZopenbsd�0�dc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestLowLevelInternalscCs:|�tt�d��|�tt�d��|�tt�d��dS�N��)�assertIs�str�tempfile�_infer_return_type�bytes��self�r�1/opt/cppython/lib/python3.8/test/test_tempfile.py�test_infer_return_type_singles$sz4TestLowLevelInternals.test_infer_return_type_singlesc	Csp|�tt�dd��|�tt�dd��|�t��t�dd�W5QRX|�t��t�dd�W5QRXdSr	�rr
rrr�assertRaises�	TypeErrorrrrr� test_infer_return_type_multiples)sz6TestLowLevelInternals.test_infer_return_type_multiplesc	Cs�|�tt�dd��|�tt�dd��|�tt�dd��|�tt�dd��|�tt�dd��|�t��t�ddd�W5QRX|�t��t�ddd�W5QRXdSr	rrrrr�)test_infer_return_type_multiples_and_none1sz?TestLowLevelInternals.test_infer_return_type_multiples_and_nonecCs|�tt�t�d���dS)N�/)rr
rr�pathlib�Pathrrrr�test_infer_return_type_pathlib<sz4TestLowLevelInternals.test_infer_return_type_pathlibN)�__name__�
__module__�__qualname__rrrrrrrrr#src@s8eZdZe�d�Ze�d�Zdd�Zdd�Zdd�Z	d	S)
�BaseTestCasez^[a-z0-9_-]{8}$s^[a-z0-9_-]{8}$cCs*t��|_|j��tjdtdtd�dS)N�ignore�mktemp)�category�message�module)r�check_warnings�_warnings_manager�	__enter__�warnings�filterwarnings�RuntimeWarningrrrrr�setUpGs

�zBaseTestCase.setUpcCs|j�ddd�dS�N)r)�__exit__rrrr�tearDownMszBaseTestCase.tearDownc
Cs�tj�|�\}}|dt|��}|t|�t|�d�}|dk	rn|�t|�t|�tksbt|tj�rftnt	d�|dk	r�|�t|�t|�tkr�tnt	d�|dk	r�|�t|�t|�tkr�tnt	d�|||fdkr�|�t|�td�|�
tj�|�tj�|�d||f�|�
||d||f�|�
||d||f�|t|�t|�t|��}t|t��rb|jn|j
}	|�|	�|�d||	jf�dS)Nzunexpected return type)NNNzdefault return type must be strzfile %r not in directory %rzfile %r does not begin with %rzfile %r does not end with %rz$random characters %r do not match %r)�os�path�split�lenr�typer
�
isinstance�PathLiker�assertEqual�abspath�	str_check�b_check�
assertTrue�match�pattern)
r�name�dir�pre�suf�ndir�nbaseZnpreZnsuf�checkrrr�	nameCheckPsN
�
����
�
�
���zBaseTestCase.nameCheckN)
rr r!�re�compiler;r<r.r1rGrrrrr"Bs


r"c@seZdZdd�ZdS)�TestExportscCsptj}ddddddddddddddd�}g}|D]"}|ddkr0||kr0|�|�q0|�t|�dkd|�dS)N�)�NamedTemporaryFile�
TemporaryFile�mkstemp�mkdtempr$�TMP_MAX�
gettempprefix�gettempprefixb�
gettempdir�gettempdirb�tempdir�template�SpooledTemporaryFile�TemporaryDirectoryr�_zunexpected keys: %s)r�__dict__�appendr=r5)r�dict�expectedZunexp�keyrrr�test_exportsvs.��zTestExports.test_exportsN)rr r!r_rrrrrJusrJcsReZdZdZ�fdd�Zdd�Zdd�Zdd	�Ze�	e
ed
�d�dd
��Z�Z
S)�TestRandomNameSequencez6Test the internal iterator object _RandomNameSequence.cst��|_t���dSr/)r�_RandomNameSequence�r�superr.r��	__class__rrr.�s
zTestRandomNameSequence.setUpcCst|j�}|�|ddd�dS�Nr
)�nextrbrG)r�srrr�test_get_six_char_str�s
z,TestRandomNameSequence.test_get_six_char_strcCsHi}|j}tt�D]0}t|�}|�|ddd�|�||�d||<qdS)Nr
rK)rb�range�
TEST_FILESrgrG�assertNotIn)rr\rb�irhrrr�	test_many�sz TestRandomNameSequence.test_manycCs,d}|j}|D]}|d7}|dkrq(qdS)NrrK�)rb)rrmrbrhrrr�
supports_iter�sz$TestRandomNameSequence.supports_iter�forkz!os.fork is required for this testcCs�t��\}}d}zft��}|sTt�|�t�	|t
|j��d��t�|�t�
d�t
|j�}t�|t|���d�}W5|r�zt�|tj�Wntk
r�YnXt�|d�t�|�t�|�X|�||�dS)Nr�ascii)r2�pipe�kill�signal�SIGKILL�OSError�waitpid�closerq�writergrb�encode�_exit�readr5�decode�assertNotEqual)rZread_fdZwrite_fd�pidZparent_valueZchild_valuerrr�test_process_awareness�s(




z-TestRandomNameSequence.test_process_awareness)rr r!�__doc__r.rirnrp�unittest�
skipUnless�hasattrr2r��
__classcell__rrrdrr`�s
�r`c@s eZdZdZdd�Zdd�ZdS)�TestCandidateTempdirListz3Test the internal function _candidate_tempdir_list.cCs4t��}|�t|�dk�|D]}|�|t�qdS�Nr)r�_candidate_tempdir_list�assertFalser5�assertIsInstancer
)r�cand�crrr�test_nonempty_list�sz+TestCandidateTempdirList.test_nonempty_listc
Cs�t����}dD]"}t�|�}|stj�|�||<qt��}dD]"}t�|�}|sTt�|�	||�q>zt�
�}Wnttfk
r�tj
}YnX|�	||�W5QRXdS)N)�TMPDIR�TEMP�TMP)r�EnvironmentVarGuardr2�getenvr3r:rr��
ValueError�assertIn�getcwd�AttributeErrorrw�curdir)r�env�envname�dirnamer�rrr�test_wanted_dirs�s 


z)TestCandidateTempdirList.test_wanted_dirsN)rr r!r�r�r�rrrrr��s	r�c@seZdZdZdd�ZdS)�TestGetDefaultTempdirzTest _get_default_tempdir().cst�����fdd�}t�td|���t��|�t���g�dd��t�td���6|�	t
��t��W5QRX|�t���g�W5QRX��fdd�}t�td|��6�|�	t
��t��W5QRX|�t���g�W5QRXW5QRXW5QRXdS)	Ncs�gSr/rr)�our_temp_directoryrr�our_candidate_listszKTestGetDefaultTempdir.test_no_files_left_behind.<locals>.our_candidate_listr�c_s
t��dSr/)rw)�args�kwargsrrr�
raise_OSErrorszFTestGetDefaultTempdir.test_no_files_left_behind.<locals>.raise_OSError�opencs�||�}�|_|Sr/)rz)r�r��fp)�	orig_openr�rr�
bad_writers
zCTestGetDefaultTempdir.test_no_files_left_behind.<locals>.bad_writer)rrXr�	swap_attr�_get_default_tempdirr9r2�listdir�ior�FileNotFoundError)rr�r�r)r�r�r�r�test_no_files_left_behinds"
�z/TestGetDefaultTempdir.test_no_files_left_behindN)rr r!r�r�rrrrr�sr�c@s eZdZdZdd�Zdd�ZdS)�TestGetCandidateNamesz0Test the internal function _get_candidate_names.cCst��}|�|tj�dSr/)r�_get_candidate_namesr�ra)r�objrrr�test_retval-sz!TestGetCandidateNames.test_retvalcCs"t��}t��}|�||k�dSr/)rr�r=)r�a�brrr�test_same_thing2sz%TestGetCandidateNames.test_same_thingN)rr r!r�r�r�rrrrr�*sr�c	cs>t��}z$t�td|��dVW5QRXW5t�|�XdS)NrU)rrOr�rmtreer��rArrr�_inside_empty_temp_dir:s
r�cst�td�fdd��S)Nr�cst��Sr/)�iterr��namesrr�<lambda>Grz'_mock_candidate_names.<locals>.<lambda>)rr�rr�rr�r�_mock_candidate_namesDs
�r�c@s$eZdZdd�Zdd�Zdd�ZdS)�TestBadTempdircCs�t���t�tj�j}}|tjtjBtjBM}t�	tj|�zPt�
tjtj�r\|�d�|�
t��|��W5QRX|�t�tj�g�W5t�	tj|�XW5QRXdS)Nz!can't set the directory read-only)r�r2�statrrU�st_mode�S_IWUSR�S_IWGRP�S_IWOTH�chmod�access�W_OK�skipTestr�PermissionError�	make_tempr9r�)rZoldmode�moderrr�test_read_only_directoryLs
z'TestBadTempdir.test_read_only_directorycCs^t��Ntj�tjd�}t�td|��$|�t	��|�
�W5QRXW5QRXW5QRXdS)N�nonexistentrU)r�r2r3�joinrrUrr�rr�r��rrUrrr�test_nonexisting_directoryZs
z)TestBadTempdir.test_nonexisting_directorycCspt��`tj�tjd�}t|d���t�	td|��(|�
ttf��|�
�W5QRXW5QRXW5QRXdS)N�file�wbrU)r�r2r3r�rrUr�ryrr�r�NotADirectoryErrorr�r�r�rrr�test_non_directoryasz!TestBadTempdir.test_non_directoryN)rr r!r�r�r�rrrrr�Jsr�c@s�eZdZdZGdd�d�Zddd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
e�e
d�dd��Ze�ed�dd��Zdd�Zdd�Zdd�ZdS)�TestMkstempInnerz*Test the internal function _mkstemp_inner.c@s<eZdZejZejZej	Z
ejZdd�Z
dd�Zdd�ZdS)zTestMkstempInner.mkstempedcCs>|r|j}n|j}t�|||�}t�|||||�\|_|_dSr/)�_bflags�_tflagsrr�_mkstemp_inner�fdr@)rrArBrC�bin�flags�output_typerrr�__init__ss
z#TestMkstempInner.mkstemped.__init__cCst�|j|�dSr/)r2rzr�)rr
rrrrzzsz TestMkstempInner.mkstemped.writecCs|�|j�|�|j�dSr/)�_closer��_unlinkr@rrrr�__del__}sz"TestMkstempInner.mkstemped.__del__N)rr r!r�_bin_openflagsr��_text_openflagsr�r2ryr��unlinkr�r�rzr�rrrr�	mkstempedmsr�NrKcCsrt�|||�}|dkr0|tkr(t��}nt��}|dkr>|�}|dkrL|�}|�||||�}|�|j|||�|Sr/)rrr
rSrTr�rGr@)rrArBrCr�r�r�rrr�	do_create�s
zTestMkstempInner.do_createcCs^|���d�|jdd��d�|jdd��d�|jddd��d�|jddd��d�dS)	N�blatr��rBr��rC�rBrC�aa�.txt)r�rzrrrr�
test_basic�s
zTestMkstempInner.test_basicc	Cs�t��}|j|dd��d�|j|dd��d�|j|dd��d�|j|ddd��d�|j|dd	d��d�|�t��|jd
dd��d�W5QRX|�t��|j|d
d��d�W5QRX|�t��|j|dd
d��d�W5QRXdS)Nr�rArCr��a�rArB�b�rArBrC�aa�.txtr
)rrTr�rzrr)rZdir_brrr�test_basic_with_bytes_names�sz,TestMkstempInner.test_basic_with_bytes_namescCs*ttt��}|D]}|jdd�||<qdS�Nr�r���listrjrkr��rZextantrmrrr�test_basic_many�sz TestMkstempInner.test_basic_manyc	CsHt��}z.|j|d��d�|jt�|�d��d�W5t�|�XdS�Nr�r�)rrOr2�rmdirr�rzrr�rrArrr�test_choose_directory�s
z&TestMkstempInner.test_choose_directorycCsJ|��}t�t�|j�j�}d}tjdkr:|d?}|d}|�||�dS)N��win32��I)	r�r��S_IMODEr2r@r��sys�platformr9)rr�r�r]�userrrr�test_file_mode�s
zTestMkstempInner.test_file_modezos.spawnl not availablecCs�tjrd}nd}|��}|�t�|j�d�d|j}zt}Wntk
r\t	j
d}YnXtj�tj�
tj�|��d�}t	jdkr�dt	j}d|}nt	j}t�tjt	j||||�}|�|dkd	|�|�|dkd
|�dS)N�v�qFz%drztf_inherit_check.pyr�z"%s"z$child process caught fatal signal %dz child process reports failure %d)r�verboser�r9r2�get_inheritabler��__file__�	NameErrorr�argvr3r�r�r:r�
executabler�P_WAITr�)rrr�r��meZtesterZ	decoratedZretvalrrr�test_noinherit�s,
�



�zTestMkstempInner.test_noinheritztext mode not availablecCsL|jdd�}|�d�|�d�t�|jdtj�|�t�|jd�d�dS)Nr)r�sblatsextra
ror�)r�rzr2�lseekr��SEEK_SETr9r}�r�frrr�
test_textmode�s


zTestMkstempInner.test_textmodecCst�t��t��dtjt�Srf)rr�rSrQr�r
rrrrr��s
�zTestMkstempInner.make_tempc
Cszt��jtddd��R|��\}}t�|�|�|�d��|��\}}t�|�|�|�d��W5QRXW5QRXdS�N�aaa�bbb)r�r�r�r2ryr=�endswith)r�fd1Zname1�fd2Zname2rrr�!test_collision_with_existing_file�s
�

z2TestMkstempInner.test_collision_with_existing_filec
Cslt��\tddd��Dt��}|�|�d��|��\}}t�|�|�|�d��W5QRXW5QRXdSr)	r�r�rrOr=rr�r2ry)rrAr�r@rrr�&test_collision_with_existing_directorys
�
z7TestMkstempInner.test_collision_with_existing_directory)NNNrK)rr r!r�r�r�r�r�r�r�rr�r��
has_spawnlr�has_textmoderr�rrrrrrr�js
	

%



r�c@s eZdZdZdd�Zdd�ZdS)�TestGetTempPrefixzTest gettempprefix().cCsLt��}|�|t�|�t|�d�t��}|�|t�|�t|�d�dSr�)rrQr�r
Z
assertGreaterr5rRr)r�pZpbrrr�test_sane_templatesz$TestGetTempPrefix.test_sane_templatec	Csdt��d}tjdd�}z:tj�||�}t�|tjtj	B�}t�
|�t�|�W5t�|�XdS)Nz
xxxxxx.xxxr
)�prefix)rrQrOr2r�r3r�r��O_RDWR�O_CREATryr�)rr�dr�rrr�test_usable_template's
z&TestGetTempPrefix.test_usable_templateN)rr r!r�r r%rrrrrsrc@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�TestGetTempDirzTest gettempdir().cCsTt��t��fD]>}|�tj�|�p,|tjkd|�|�tj�|�d|�qdS)Nz%r is not an absolute pathz%r is not a directory)	rrSrTr=r2r3�isabsr��isdir�rr$rrr�test_directory_exists;s��z$TestGetTempDir.test_directory_existsc	Cs"t���}|�d�W5QRXdS)Nr�)rrLrz)rr�rrr�test_directory_writableDs
z&TestGetTempDir.test_directory_writablecCsPt��}t��}t��}|�||k�|�t|�t|��|�|t�|��dSr/)	rrSrTr=rr6r9r2�fsdecode)rr�r�r�rrrr�MszTestGetTempDir.test_same_thingc	Cs`t�d�}tjd}t_z0t���}||d<|�t��|�W5QRXW5|t_t�|�XdS)Nz-Tempr�)rrOrUrr�r�r9rS)rZcase_sensitive_tempdirZ_tempdirr�rrr�test_case_sensitiveWs

z"TestGetTempDir.test_case_sensitiveN)rr r!r�r*r+r�r-rrrrr&8s
		
r&c@s2eZdZdZddd�Zdd�Zdd�Zd	d
�ZdS)�TestMkstempzTest mkstemp().Nc
	Cs�t�|||�}|dkr0|tkr(t��}nt��}|dkr>|�}|dkrL|�}tj|||d�\}}tj�|�\}}tj�	|�}	|�
|	|d|	|f�z|�
||||�W5t�|�t�|�XdS)N�rAr!�suffixz+Directory '%s' incorrectly returned as '%s')rrr
rSrTrNr2r3r4r:r9ryr�rG)
rrArBrCr�r�r@rDrEZadirrrrr�is&

�
zTestMkstemp.do_createcCsL|��|jdd�|jdd�|jddd�|jddd�|jdd	�dS)
Nr�r�r�r�r�r�r��.r��r�rrrrr��szTestMkstemp.test_basicc	Cs�t��}|j|dd�|j|dd�|j|dd�|j|ddd�|j|ddd�|jd	d
�|�t��|jdddd�W5QRX|�t��|jd	ddd�W5QRX|�t��|jd	dd
d�W5QRXdS)Nrr�r�r�r�r�r�r��.r�r1r�r�)rrTr�rrr)rrrr��sz'TestMkstemp.test_basic_with_bytes_namesc	Cs<t��}z"|j|d�|jt�|�d�W5t�|�XdS�Nr��rrOr2r�r�rrr�rrrr��s
z!TestMkstemp.test_choose_directory)NNN)rr r!r�r�r�r�r�rrrrr.fs

	r.c@sZeZdZdZdd�Zddd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�TestMkdtempzTest mkdtemp().cCst��Sr/)rrOrrrrr��szTestMkdtemp.make_tempNcCs�t�|||�}|dkr0|tkr(t��}nt��}|dkr>|�}|dkrL|�}tj|||d�}z|�||||�|WSt�|��YnXdS�Nr/)	rrr
rSrTrOrGr2r�)rrArBrCr�r@rrrr��s 

zTestMkdtemp.do_createcCs^t�|���t�|jdd��t�|jdd��t�|jddd��t�|jddd��dS�Nr�r�r�r�r�r�r�)r2r�r�rrrrr��s
zTestMkdtemp.test_basicc	Cs�t��}t�|j|d��t�|j|dd��t�|j|dd��t�|j|ddd��t�|j|ddd��|�t��t�|j|d	dd��W5QRX|�t��t�|j|dd
d��W5QRX|�t��t�|jdddd��W5QRXdS)Nr�r�r�r�r�r�r�r�r�r�r
)rrTr2r�r�rrr)rrrr��s  z'TestMkdtemp.test_basic_with_bytes_namesc
CsPttt��}z|D]}|jdd�||<qW5|D]}t|t�r0t�|�q0XdSr�)r�rjrkr7r
r2r�r�r�rrrr��s
zTestMkdtemp.test_basic_manyc	CsHt��}z.t�|j|d��t�|jt�|�d��W5t�|�XdSr4r5r�rrrr��s
z!TestMkdtemp.test_choose_directoryc	Csb|��}zHt�t�|�j�}|dM}d}tjdkrB|d?}|d}|�||�W5t�|�XdS)Ni�i�r�r�r�)	r�r2r�r�r�r�rrr9)rrAr�r]rrrr�	test_mode�s
zTestMkdtemp.test_modec
Cslt��\tddd��Dtjdd�}|��|�|j�d��t��}|�|�d��W5QRXW5QRXdS)NrrF)�delete)	r�r�rrLryr=r@rrO)rr�rArrrr�s
�z-TestMkdtemp.test_collision_with_existing_filec
Cs^t��Ntddd��6t��}|�|�d��t��}|�|�d��W5QRXW5QRXdSr)r�r�rrOr=r)r�dir1Zdir2rrrrs
�z2TestMkdtemp.test_collision_with_existing_directory)NNN)
rr r!r�r�r�r�r�r�r�r9rrrrrrr6�s
	r6csTeZdZdZ�fdd�Z�fdd�ZGdd�d�Zdd	d
�Zdd�Zd
d�Z	�Z
S)�
TestMktempzTest mktemp().cst��|_t���dSr/)rrOrArcr.rrdrrr.s
zTestMktemp.setUpcs&|jrt�|j�d|_t���dSr/)rAr2r�rcr1rrdrrr1szTestMktemp.tearDownc@s(eZdZejZejZdd�Z	dd�Z
dS)zTestMktemp.mktempedcCs.tj|||d�|_t�t�|j|jd��dS)Nr/r�)rr$r@r2ryr�r�)rrArBrCrrrr�$szTestMktemp.mktemped.__init__cCs|�|j�dSr/)r�r@rrrrr�*szTestMktemp.mktemped.__del__N)rr r!r2r�r�rr�r�r�r�rrrr�mktemped sr=r
cCs(|�|j||�}|�|j|j||�|Sr/)r=rArGr@)rrBrCr�rrrr�-szTestMktemp.do_createcCs@|��|jdd�|jdd�|jddd�|jddd�dSr8r2rrrrr�3s
zTestMktemp.test_basiccCs*ttt��}|D]}|jdd�||<qdSr�r�r�rrrrn;szTestMktemp.test_many)r
r
)rr r!r�r.r1r=r�r�rnr�rrrdrr<s
r<c@sjeZdZdZddd�Zdd�Zd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�TestNamedTemporaryFilezTest NamedTemporaryFile().Nr
TcCs8|dkrt��}tj||||d�}|�|j|||�|S)N)rAr!r0r:)rrSrLrGr@)rrArBrCr:r�rrrr�Ps
�z TestNamedTemporaryFile.do_createcCs@|��|jdd�|jdd�|jddd�|jddd�dSr8r2rrrrr�Zs
z!TestNamedTemporaryFile.test_basiccCsP|��}t�|�}|j}|j}~|d�~|d�~tjdd�rL|�|��dS)NsfoosbarT)Zcpython)r��weakref�refrzrZcheck_impl_detail�assertIsNone)rr�wrrzZwrite2rrr�test_method_lookupbs
z)TestNamedTemporaryFile.test_method_lookupcsRdddg��fdd�}t|��D]\}}|�|�|�q |�|t��d�dS)Nsspam
seggs
sbeans
cs*tjdd�}|�d����|�d�|S)N�w+b�r�rr)rrLrzr��seek�r��linesrr�	make_filevs
z3TestNamedTemporaryFile.test_iter.<locals>.make_filerK)�	enumerater9r5)rrJrm�lrrHr�	test_iterrs

z TestNamedTemporaryFile.test_itercCs(t��}|�tj�|j�d|j�dS)Nz$NamedTemporaryFile %s does not exist)rrLr=r2r3�existsr@rrrr�test_creates_nameds�z)TestNamedTemporaryFile.test_creates_namedc	Cs\t��}zBtj|d��}|�d�W5QRX|�tj�|j	�d|j	�W5t�|�XdS)Nr�r�z(NamedTemporaryFile %s exists after close)
rrOr2r�rLrzr�r3rNr@�rrArrrr�test_del_on_close�s�z(TestNamedTemporaryFile.test_del_on_closec	Csvt��}d}zFtj|dd�}|j}|�d�|��|�	tj
�|j�d|j�W5|dk	rft�|�t�|�XdS)NF)rAr:r�z)NamedTemporaryFile %s missing after close)rrOr2r�r�rLr@rzryr=r3rN)rrA�tmprrrr�test_dis_del_on_close�s
�
z,TestNamedTemporaryFile.test_dis_del_on_closecCs.t��}|�d�|��|��|��dS�N�abc
)rrLrzryrrrr�test_multiple_close�s

z*TestNamedTemporaryFile.test_multiple_closec	sXt����|�tj��j��W5QRX|�tj��j���fdd�}|�t	|�dS)Nc	s��W5QRXdSr/rrrGrr�
use_closed�sz?TestNamedTemporaryFile.test_context_manager.<locals>.use_closed)
rrLr=r2r3rNr@r�rr��rrWrrGr�test_context_manager�s

z+TestNamedTemporaryFile.test_context_managerc
sng�tj���fdd�}tjd|d��>tjdtd��$|�ttj�|�t	��d�W5QRXW5QRXdS)Ncs��|��|�dSr/�r[�r���closedZos_closerrry�s
z5TestNamedTemporaryFile.test_no_leak_fd.<locals>.close�os.close�Zside_effect�io.openrK)
r2ryr�patchr�rrrLr9r5�rryrr\r�test_no_leak_fd�sz&TestNamedTemporaryFile.test_no_leak_fdc	Cstt��}|�tj|�|�t��tjd|d�W5QRX|�t��tjd|d�W5QRX|�	t
�|�g�dS)NrB)r�rA�)rrOZ
addCleanuprr�rr�rLrr9r2r�r�rrr�
test_bad_mode�sz$TestNamedTemporaryFile.test_bad_mode)Nr
r
T)rr r!r�r�r�rCrMrOrQrSrVrYrcrerrrrr>Ms




r>c@s�eZdZdZd+dd�Zdd�Zd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�ZdS),�TestSpooledTemporaryFilezTest SpooledTemporaryFile().rNr
cCs&|dkrt��}tj||||d�}|S)N)�max_sizerAr!r0)rrSrW)rrgrArBrCr�rrrr��sz"TestSpooledTemporaryFile.do_createcCs4|��}|�|j�|jdddd�}|�|j�dS)Nrr�r�)rgrBrC)r�r��_rolledrrrrr��sz#TestSpooledTemporaryFile.test_basicc	Cs~t��}zdtjd|d�}|�|j�|�d�|�|j�|j	}|�
�|�t|t�o`tj
�|�d|�W5t�|�XdS)N�
)rgrAsblat blat blat blat blat z*SpooledTemporaryFile %s exists after close)rrOr2r�rWr�rhrzr=r@ryr7r
r3rN)rrAr�filenamerrrrQ�s
�z*TestSpooledTemporaryFile.test_del_on_closecCsL|jdd�}|�|j�td�D]}|�dd�|�d�q |�|j�dS)N��rg�r�xxxxxxxxxxxxxxxxxxxx)r�r�rhrjrFrz)rrrmrrr�test_rewrite_small�sz+TestSpooledTemporaryFile.test_rewrite_smallcCs^|jdd�}|�|j�|�d�|�|j�|�d�|�|j�|�d�|�|j�dS)Nrkrlrn�
xxxxxxxxxx�x)r�r�rhrzr=rrrr�test_write_sequential�s


z.TestSpooledTemporaryFile.test_write_sequentialcCs@|��}|�d�|�d�}|�|d�|��}|�|d�dS)N)rq�y�zrsxyz)r��
writelinesrFr9r})rr�pos�bufrrr�test_writeliness

z(TestSpooledTemporaryFile.test_writelinescCs<|jdd�}|�d�|�|j�|�d�|�|j�dS)N�#rl)rnrpsxxxxxrq)r�rur�rhrzr=rrrr�test_writelines_sequential	s


z3TestSpooledTemporaryFile.test_writelines_sequentialcCsV|jdd�}|�|j�|�dd�}|�|d�|�|j�|�d�|�|j�dS)Nrkrlrrrq)r�r�rhrFr9rzr=)rrrvrrr�test_sparses
z$TestSpooledTemporaryFile.test_sparsecCs:|jdd�}|�|j�|�|��dk�|�|j�dS)Nrkrlr)r�r�rhr=�filenorrrr�test_filenosz$TestSpooledTemporaryFile.test_filenocCs:t��}|�d�|�|j�|��|��|��dSrT)rrWrzr�rhryrrrr�#test_multiple_close_before_rollover$s
z<TestSpooledTemporaryFile.test_multiple_close_before_rollovercCs>tjdd�}|�d�|�|j�|��|��|��dS)NrKrlrU)rrWrzr=rhryrrrr�"test_multiple_close_after_rollover-s
z;TestSpooledTemporaryFile.test_multiple_close_after_rollovercCsL|jdd�}|j}|j}|j}|d�|d�|dd�|�|d�d�dS)Nrkrls#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas#bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr�FsFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)r�r}rzrFr9)rrr}rzrFrrr�test_bound_methods6s
z+TestSpooledTemporaryFile.test_bound_methodsc	Cstjdd�}|�d�|�|j�|�|jd�|�|j�|�	t
��|jW5QRX|�	t
��|jW5QRX|�	t
��|j
W5QRX|�d�|�|j�|�|jd�|�|j�|�	t
��|jW5QRX|�	t
��|jW5QRX|�	t
��|j
W5QRXdS)NrirlrprDrqzrb+)rrWrzr�rhr9r�rAr@rr��newlines�encoding�errorsr=�assertIsNotNonerrrr�test_propertiesDs*

z(TestSpooledTemporaryFile.test_propertiescCsHtjdddd�}|�d�|�d�|�|��d�|�d�|�d�|�|��d�|�|j�|�|jd�|�	|j
�|�|jtj
�|�|jd�|�|jd	�|�d
�|�d�|�|��d�|�d�|�d�|�|��d
�|�|j�|�|jd�|�|j
�|�|jtj
�|�|jd�|�|jd	�dS)N�w+ri�utf-8)r�rgr�zabc
rzdef
zabc
def
�strictzxyzzy
zabc
def
xyzzy
zfoobar
zabc
def
xyzzy
foobar
)rrWrzrFr9r}r�rhr�rAr@r�r2�linesepr�r�r=r�rrrr�test_text_mode\s6�







z'TestSpooledTemporaryFile.test_text_modecCstjdddddd�}|�d�|�d�|�|��d�|�|j�|�|jd�|�	|j
�|�|j�|�|j
d�|�|jd�|�d	�|�d
�|�d�|�|��d�|�|j�|�|jd�|�|j
�|�|j�|�|j
d�|�|jd�dS)Nr�rir
r�r#)r�rg�newliner�r�uΛ
ruΜΜΜΜΜΜΜΜΜΜ
u(ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝuBΛ
ΜΜΜΜΜΜΜΜΜΜ
ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ)rrWrzrFr9r}r�rhr�rAr@r�r�r�r�r=rrrr�test_text_newline_and_encoding|s4�





�z7TestSpooledTemporaryFile.test_text_newline_and_encodingc	sXtjdd���|��j�|��j�W5QRX|��j��fdd�}|�t|�dS)NrKrlc	s��W5QRXdSr/rrrGrrrW�szQTestSpooledTemporaryFile.test_context_manager_before_rollover.<locals>.use_closed)rrWr�rhr]r=rr�rXrrGr�$test_context_manager_before_rollover�sz=TestSpooledTemporaryFile.test_context_manager_before_rolloverc	svtjdd��<�|��j���d����|��j�|��j�W5QRX|��j��fdd�}|�t	|�dS)NrKrlrUc	s��W5QRXdSr/rrrGrrrW�szQTestSpooledTemporaryFile.test_context_manager_during_rollover.<locals>.use_closed)
rrWr�rhrz�flushr=r]rr�rXrrGr�$test_context_manager_during_rollover�s
z=TestSpooledTemporaryFile.test_context_manager_during_rolloverc	sntjdd����d����|��j���|��j�W5QRX|��j��fdd�}|�t	|�dS)NrKrlrUc	s��W5QRXdSr/rrrGrrrW�szPTestSpooledTemporaryFile.test_context_manager_after_rollover.<locals>.use_closed)
rrWrzr�r=rhr�r]rr�rXrrGr�#test_context_manager_after_rollover�s
z<TestSpooledTemporaryFile.test_context_manager_after_rollovercCs�tjdd�}|�d�|�d�|��|�|j�|�|j�	�d�tjdd�}|�d�|�d�|�|j�|�|j�	�d�tjdd�}|�d�|�d�|�
|j�|�t�|�
��jd�dS)	Nrirlsabcdefg
rr�sabcdro)rrWrzrF�truncater�rhr9�_file�getvaluer=r2�fstatr|�st_sizerrrr�!test_truncate_with_size_parameter�s 





z:TestSpooledTemporaryFile.test_truncate_with_size_parameter)rNr
r
)rr r!r�r�r�rQrorrrxrzr{r}r~rr�r�r�r�r�r�r�r�rrrrrf�s(
					 rfc@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�TestTemporaryFilezTest TemporaryFile().cCst��dSr/)rrMrrrrr��szTestTemporaryFile.test_basiccCsRt��}tj|d�}|�d�zt�|�Wn |��t�|��YnXdSr�)rrOrMrzr2r�ryrPrrr�test_has_no_name�s

z"TestTemporaryFile.test_has_no_namecCs.t��}|�d�|��|��|��dSrT)rrMrzryrrrrrV�s

z%TestTemporaryFile.test_multiple_closecs@�fdd�}|dd�|dd�|dddd	�|d
ddd�dS)
Nc	s@tj||��*}|�|�|�d���||���W5QRXdSr�)rrMrzrFr9r})�inputr�r��fileobjrrr�	roundtrip�s

z;TestTemporaryFile.test_mode_and_encoding.<locals>.roundtrips1234rDzabdc
r�uΛzutf-16)r�zfoo
r
)r�r)rr�rrr�test_mode_and_encoding�s


z(TestTemporaryFile.test_mode_and_encodingc
sng�tj���fdd�}tjd|d��>tjdtd��$|�ttj�|�t	��d�W5QRXW5QRXdS)Ncs��|��|�dSr/rZr[r\rrrys
z0TestTemporaryFile.test_no_leak_fd.<locals>.closer^r_r`rK)
r2ryrrar�rrrMr9r5rbrr\rrcsz!TestTemporaryFile.test_no_leak_fdN)	rr r!r�r�r�rVr�rcrrrrr��s	
r�c@s$eZdZdd�Zdd�Zdd�ZdS)�
NulledModulescGs&dd�|D�|_dd�|jD�|_dS)NcSsg|]
}|j�qSr)rZ)�.0�modrrr�
<listcomp>sz*NulledModules.__init__.<locals>.<listcomp>cSsg|]}|���qSr)�copy)r�r@rrrr�s)�refs�contents)r�modulesrrrr�szNulledModules.__init__cCs"|jD]}|D]}d||<qqdSr/)r�)rr$r^rrrr*s
zNulledModules.__enter__cGs.t|j|j�D]\}}|��|�|�qdSr/)�zipr�r��clear�update)r�exc_infor$r�rrrr0szNulledModules.__exit__N)rr r!r�r*r0rrrrr�sr�c@s�eZdZdZd'dd�Zd(dd�Zd	d
�Zdd�Zej	d
d��Z
ej	dd��Ze�
eed�d�ej	dd���Zejdd��Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Ze�
eed�d�d%d&��ZdS))�TestTemporaryDirectoryzTest TemporaryDirectory().Nr
rKcCsH|dkrt��}tj|||d�}|�|j|||�|�|j|||�|Sr7)rrSrXrGr@�
do_create2)rrArBrC�recurse�dirs�filesrRrrrr�%sz TestTemporaryDirectory.do_createc
Cs�|rBt|�D]4}tj�|d|�}t�|�|�||d||�qt|�D]2}ttj�|d|�d��}|�d�W5QRXqJdS)Nzdir%drKz
test%d.txtr�sHello world!)rjr2r3r��mkdirr�r�rz)rr3r�r�r�rmr@rrrrr�-s
z!TestTemporaryDirectory.do_create2c	CsLt���}W5QRX|�t��}tj|d�W5QRX|�|jjtj�dSr4)rrXrr�r9�	exception�errno�ENOENT)rr��cmrrr�test_mkdtemp_failure8s


z+TestTemporaryDirectory.test_mkdtemp_failurec	Csjt��}zP|j|d�}|�tj�|j�d|j�|�	�|�
tj�|j�d|j�W5t�|�XdS)Nr�z$TemporaryDirectory %s does not exist�*TemporaryDirectory %s exists after cleanup)rrOr2r�r�r=r3rNr@�cleanupr�)rrAr$rrr�test_explicit_cleanupBs��z,TestTemporaryDirectory.test_explicit_cleanupcCs�|��}|jdd�}t�|jtj�|jd��|��|�tj�|j�d|j�|�	tj�|j�d�|�
t�|j�dgd�|��dS)Nr�r�Zfoor�z-Directory pointed to by a symlink was deletedz	test0.txtz>Contents of the directory pointed to by a symlink were deleted)r�r2�symlinkr@r3r�r�r�rNr=r9r�)r�d1�d2rrr�(test_cleanup_with_symlink_to_a_directoryOs���z?TestTemporaryDirectory.test_cleanup_with_symlink_to_a_directorycs��jdd���|}tj�|d�}t|d���tj�|d�}t�|�td�D�]6��dK��jt	�d�d	�����fd
d�}��d��|d
dd�W5QRX��d��|d
dd�W5QRX��d��Lt�
|��t�|�j}||dd�t�|�j}��
||d||f�W5QRX��d��Lt�
|��t�|�j}||dd�t�|�j}��
||d||f�W5QRXW5QRXqLW5QRXdS)Nrr��file1r�r;�r��03orEcs��jdd�}tj�|jd�}tj|||d�ztj|�dd�Wntk
rTYnXzt�|��Wntk
rzYnXt�|j��|�	���
tj�|j��dS�Nrr�r���target_is_directoryF)�follow_symlinks)r�r2r3r�r@r�r��NotImplementedErrorr�r�r�rN��targetr�r�r��r�rrr�testos �zDTestTemporaryDirectory.test_cleanup_with_symlink_modes.<locals>.test�nonexisting file�nonexistingFr��nonexisting dirT�
existing filez%03o != %03o�existing dir)r�r2r3r�r�ryr�rj�subTest�formatr�r�r�r9)rr�r�r;r�Zold_modeZnew_moderr�r�test_cleanup_with_symlink_modesds:

�
�z6TestTemporaryDirectory.test_cleanup_with_symlink_modes�chflagszrequires os.chflagsc
s^tjtjB������jdd���0}tj�|d�}t|d��	�tj�|d�}t�
|���fdd�}��d��|d	d
d�W5QRX��d��|d	d
d�W5QRX��d��Bt�|��t�|�j
}||d
d�t�|�j
}��||�W5QRX��d��Bt�|��t�|�j
}||d
d�t�|�j
}��||�W5QRXW5QRXdS)Nrr�r�r�r;cs��jdd�}tj�|jd�}tj|||d�ztj|�dd�Wntk
rTYnXzt�|��Wntk
rzYnXt�|j��|�	���
tj�|j��dSr�)r�r2r3r�r@r�r�r�r�r�r�rNr��r�rrrr��s �zDTestTemporaryDirectory.test_cleanup_with_symlink_flags.<locals>.testr�r�Fr�r�Tr�r�)r��UF_IMMUTABLE�UF_NOUNLINK�check_flagsr�r2r3r�r�ryr�r�r��st_flagsr9)rr�r�r;r�Z	old_flagsZ	new_flagsrr�r�test_cleanup_with_symlink_flags�s0

z6TestTemporaryDirectory.test_cleanup_with_symlink_flagsc	CsJt��}z0|j|d�}|j}~|�tj�|�d|�W5t�|�XdS)Nr��*TemporaryDirectory %s exists after __del__)	rrOr2r�r�r@r�r3rN�rrAr$r@rrr�test_del_on_collection�s�z-TestTemporaryDirectory.test_del_on_collectionc	Cs�|���x}dD]l}dj||d�}t�d|�\}}}|����}|�tj�	|�d|�|�dd�}|�
d|�|�d	|�qW5QRXdS)
N)�builtinsr2�shutilrrr+a�if True:
                    import builtins
                    import os
                    import shutil
                    import sys
                    import tempfile
                    import warnings

                    tmp = tempfile.TemporaryDirectory(dir={dir!r})
                    sys.stdout.buffer.write(tmp.name.encode())

                    tmp2 = os.path.join(tmp.name, 'test_dir')
                    os.mkdir(tmp2)
                    with open(os.path.join(tmp2, "test0.txt"), "w") as f:
                        f.write("Hello world!")

                    {mod}.tmp = tmp

                    warnings.filterwarnings("always", category=ResourceWarning)
                    )rAr��-cr�r��backslashreplace�
Exception �'ResourceWarning: Implicitly cleaning up�r�r�rZassert_python_okr~�stripr�r2r3rNrlr�)rrAr��code�rc�out�err�tmp_namerrr�test_del_on_shutdown�s
��z+TestTemporaryDirectory.test_del_on_shutdownc	Cs~|���l}dj|d�}t�d|�\}}}|����}|�tj�	|�d|�|�dd�}|�
d|�|�d|�W5QRXdS)	Na�if True:
                import sys
                import tempfile
                import warnings

                def generator():
                    with tempfile.TemporaryDirectory(dir={dir!r}) as tmp:
                        yield tmp
                g = generator()
                sys.stdout.buffer.write(next(g).encode())

                warnings.filterwarnings("always", category=ResourceWarning)
                r�r�r�r�r�r�r�r�)rrAr�r�r�r�r�rrr�test_exit_on_shutdown�s
�
�z,TestTemporaryDirectory.test_exit_on_shutdownc
Csz|���h}|j|dd�}|j}tjdtfdd��tjdtd�~t��W5QRX|�t	j
�|�d|�W5QRXdS)	N�)rAr�Z
ImplicitlyF)�quiet�always)r%r�)r�r@rr(�ResourceWarningr+r,�
gc_collectr�r2r3rNr�rrr�test_warnings_on_cleanup
s
�z/TestTemporaryDirectory.test_warnings_on_cleanupcCs$|��}|��|��|��dSr/)r�r�r)rrrrVsz*TestTemporaryDirectory.test_multiple_closec	CsN|��}|�&}|�tj�|��|�||j�W5QRX|�tj�|��dSr/)r�r=r2r3rNr9r@r�)rr$r@rrrrYs
z+TestTemporaryDirectory.test_context_managercCs�td�D]�}|dK}|jt|d�d���|jdddd�}|�Vtj|jdd	�D]6\}}}|D]}t�tj�	||�|�q\t�||�qN|�
�W5QRX|�tj�|j��W5QRXqdS)
Nr�r�r�rEr�rd�r�r�r�F��topdown)
rjr�r�r�r2�walkr@r�r3r�r�r�rN)rr�r$�rootr�r�r@rrr�
test_modes'sz!TestTemporaryDirectory.test_modesc
Cs�tj}zjt|d���zt�||�Wn:tk
r`}z|�d|d�d|���W5d}~XYnXt�|d�W5t�|�XdS)N�wz chflags() doesn't support flags z#bz: r)	rZTESTFNr�r�ryr2r�rwr�)rr�rj�excrrrr�5s*z"TestTemporaryDirectory.check_flagsc	Cs�tjtjB}|�|�|jdddd�}|�Vtj|jdd�D]6\}}}|D]}t�tj	�
||�|�qJt�||�q<|��W5QRX|�tj	�
|j��dS)Nr�rdr�Fr�)r�r�r�r�r�r2r�r@r�r3r�r�r�rN)rr�r$r�r�r�r@rrr�
test_flagsEs
z!TestTemporaryDirectory.test_flags)Nr
r
rKrKrK)rKrKrK)rr r!r�r�r�r�r�rZskip_unless_symlinkr�r�r�r�r�r2r�Zcpython_onlyr�r�r�r�rVrYr�r�r�rrrrr�"s.





0.
 r��__main__)5rr�r�r2rrurrHr+�
contextlibr�r?r�rr�rZtest.supportrr�r�rr�rr�
startswithrkZTestCaserr"rJr`r�r�r��contextmanagerr�r�r�r�rr&r.r6r<r>rfrLrMr�r�r�r�mainrrrr�<module>sd
3H*%
	 / .?l<}>5


F1le Man4ger