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_tempfile.cpython-310.opt-2.pyc
o

�i��@sBddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlZddlmZddlmZddlmZddlmZejejkZeed�Zej�d�rfd	Znd
ZGdd�dej�ZGd
d�dej�ZGdd�de�ZGdd�de�Z Gdd�de�Z!Gdd�de�Z"Gdd�de�Z#ej$dd��Z%dd�Z&Gdd�d�Z'Gdd �d e'e�Z(Gd!d"�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/ej0ej1u�rGd/d0�d0e�Z2Gd1d2�d2�Z3Gd3d4�d4e�Z4e5d5k�re�6�dSdS)6�N)�mock)�support)�	os_helper)�
script_helper)�warnings_helper�spawnlZopenbsd�0�dc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestLowLevelInternalscCs:|�tt�d��|�tt�d��|�tt�d��dS�N��)�assertIs�str�tempfile�_infer_return_type�bytes��self�r�//usr/local/lib/python3.10/test/test_tempfile.py�test_infer_return_type_singles&sz4TestLowLevelInternals.test_infer_return_type_singlescCs�|�tt�dd��|�tt�dd��|�t��t�dd�Wd�n1s*wY|�t��t�dd�Wd�dS1sFwYdSr�rrrrr�assertRaises�	TypeErrorrrrr� test_infer_return_type_multiples+s�"�z6TestLowLevelInternals.test_infer_return_type_multiplescCs�|�tt�dd��|�tt�dd��|�tt�dd��|�tt�dd��|�tt�dd��|�t��t�ddd�Wd�n1sIwY|�t��t�ddd�Wd�dS1sfwYdSrrrrrr�)test_infer_return_type_multiples_and_none3s�"�z?TestLowLevelInternals.test_infer_return_type_multiples_and_nonecCs|�tt�t�d���dS)N�/)rrrr�pathlib�Pathrrrr�test_infer_return_type_pathlib>sz4TestLowLevelInternals.test_infer_return_type_pathlibcCsGdd�d�}|�tt�|d���|�tt�|d���|�tt�d|d���|�tt�d|d���|�tt�d|d���|�tt�d|d���|�t��t�d|d��Wd�n1sewY|�t��t�d|d��Wd�dS1s�wYdS)Nc@seZdZdd�Zdd�ZdS)zCTestLowLevelInternals.test_infer_return_type_pathlike.<locals>.PathcSs
||_dS�N��path)rr#rrr�__init__Cs
zLTestLowLevelInternals.test_infer_return_type_pathlike.<locals>.Path.__init__cSs|jSr!r"rrrr�
__fspath__F�zNTestLowLevelInternals.test_infer_return_type_pathlike.<locals>.Path.__fspath__N)�__name__�
__module__�__qualname__r$r%rrrrrBsrr�/rr
r)rrrrr�test_infer_return_type_pathlikeAs�"�z5TestLowLevelInternals.test_infer_return_type_pathlikeN)r'r(r)rrrr r+rrrrr
%sr
c@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�RuntimeWarningr'rrrr�setUp\s



�zBaseTestCase.setUpcCs|j�ddd�dSr!)r3�__exit__rrrr�tearDownbszBaseTestCase.tearDownc
Cs�tj�|�\}}|dt|��}|t|�t|�d�}|dur7|�t|�t|�tus1t|tj�r3tnt	d�|durL|�t|�t|�turHtnt	d�|dura|�t|�t|�tur]tnt	d�|||fdkrq|�t|�td�|�
tj�|�tj�|�d||f�|�
||d||f�|�
||d||f�|t|�t|�t|��}t|t�r�|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)�osr#�split�lenr�typer�
isinstance�PathLiker�assertEqual�abspath�	str_check�b_check�
assertTrue�match�pattern)
r�name�dir�pre�suf�ndir�nbaseZnpreZnsuf�checkrrr�	nameCheckesJ����
�
�
���zBaseTestCase.nameCheckN)
r'r(r)�re�compilerDrEr8r:rPrrrrr,Ws

r,c@seZdZdd�ZdS)�TestExportscCsptj}ddddddddddddddd�}g}|D]}|ddkr)||vr)|�|�q|�t|�dkd|�dS)N�)�NamedTemporaryFile�
TemporaryFile�mkstemp�mkdtempr.�TMP_MAX�
gettempprefix�gettempprefixb�
gettempdir�gettempdirb�tempdir�template�SpooledTemporaryFile�TemporaryDirectoryr�_zunexpected keys: %s)r�__dict__�appendrFr>)r�dict�expectedZunexp�keyrrr�test_exports�s0�
��zTestExports.test_exportsN)r'r(r)rhrrrrrS�srScsPeZdZ	�fdd�Zdd�Zdd�Zdd�Ze�e	e
d	�d
�dd��Z�ZS)
�TestRandomNameSequencec�t��|_t���dSr!)r�_RandomNameSequence�r�superr8r��	__class__rrr8��
zTestRandomNameSequence.setUpcCst|j�}|�|ddd�dS�Nr)�nextrlrP)r�srrr�test_get_eight_char_str�s
z.TestRandomNameSequence.test_get_eight_char_strcCsHi}|j}tt�D]}t|�}|�|ddd�|�||�d||<q	dS)NrrT)rl�range�
TEST_FILESrrrP�assertNotIn)rrerl�irsrrr�	test_many�s
�z TestRandomNameSequence.test_manycCs.d}|j}|D]
}|d7}|dkrdSqdS)NrrT�)rl)rrxrlrsrrr�
supports_iter�s��z$TestRandomNameSequence.supports_iter�forkz!os.fork is required for this testc
Cs�t��\}}d}zFt��}|s*t�|�t�|t|j��d��t�|�t�d�t|j�}t�	|t
|���d�}W|rDtj
|dd�t�|�t�|�n|rXtj
|dd�t�|�t�|�w|�||�dS)N�asciir)�exitcode)r<�piper|�close�writerrrl�encode�_exit�readr>�decoderZwait_process�assertNotEqual)rZread_fdZwrite_fd�pidZparent_valueZchild_valuerrr�test_process_awareness�s(




�
z-TestRandomNameSequence.test_process_awareness)
r'r(r)r8rtryr{�unittest�
skipUnless�hasattrr<r��
__classcell__rrrnrri�s
�ric@�eZdZ	dd�Zdd�ZdS)�TestCandidateTempdirListcCs4t��}|�t|�dk�|D]}|�|t�qdS�Nr)r�_candidate_tempdir_list�assertFalser>�assertIsInstancer)r�cand�crrr�test_nonempty_list�s
�z+TestCandidateTempdirList.test_nonempty_listc
Cs�t���P}dD]}t�|�}|stj�|�||<qt��}dD]}t�|�}|s*t�|�	||�qzt�
�}WnttfyEtj
}Ynw|�	||�Wd�dS1sWwYdS)N)�TMPDIR�TEMP�TMP)r�EnvironmentVarGuardr<�getenvr#rCrr��
ValueError�assertIn�getcwd�AttributeError�OSError�curdir)r�env�envname�dirnamer�rrr�test_wanted_dirs�s$

�

�"�z)TestCandidateTempdirList.test_wanted_dirsN)r'r(r)r�r�rrrrr��s	r�c@seZdZ	dd�ZdS)�TestGetDefaultTempdircs~t������fdd�}t�td|���t��|�t���g�dd�}t�td|��*|�t	��t��Wd�n1s@wY|�t���g�Wd�n1sXwYt�td|��*|�t	��t��Wd�n1sywY|�t���g�Wd�n1s�wYWd�n1s�wYWd�dSWd�dS1s�wYdS)Ncs�gSr!rr�Zour_temp_directoryrr�our_candidate_listr&zKTestGetDefaultTempdir.test_no_files_left_behind.<locals>.our_candidate_listr�c_st��r!)r�)�args�kwargsrrr�
raise_OSError"r&zFTestGetDefaultTempdir.test_no_files_left_behind.<locals>.raise_OSError�openr�)
rrar�	swap_attr�_get_default_tempdirrBr<�listdirr�FileNotFoundError)rr�r�rr�r�test_no_files_left_behinds2
�
��
�����"�z/TestGetDefaultTempdir.test_no_files_left_behindN)r'r(r)r�rrrrr�sr�c@r�)�TestGetCandidateNamescCst��}|�|tj�dSr!)r�_get_candidate_namesr�rk)r�objrrr�test_retval5sz!TestGetCandidateNames.test_retvalcCs"t��}t��}|�||u�dSr!)rr�rF)r�a�brrr�test_same_thing:sz%TestGetCandidateNames.test_same_thingN)r'r(r)r�r�rrrrr�2sr�c	csl�t��}z*t�td|��dVWd�n1swYWt�|�dSWt�|�dSt�|�w)Nr^)rrXrr�r�rmtree�rJrrr�_inside_empty_temp_dirBs���r�cst�td�fdd��S)Nr�cst��Sr!)�iterr��namesrr�<lambda>Osz'_mock_candidate_names.<locals>.<lambda>)rr�rr�rr�r�_mock_candidate_namesLs
�r�c@�$eZdZdd�Zdd�Zdd�ZdS)�TestBadTempdircCs�t��gt�tj�j}}|tjtjBtjBM}t�	tj|�z9t�
tjtj�r.|�d�|�
t��|��Wd�n1sBwY|�t�tj�g�Wt�	tj|�nt�	tj|�wWd�dS1smwYdS)Nz!can't set the directory read-only)r�r<�statrr^�st_mode�S_IWUSR�S_IWGRP�S_IWOTH�chmod�access�W_OK�skipTestr�PermissionError�	make_temprBr�)rZoldmode�moderrr�test_read_only_directoryTs

�""�z'TestBadTempdir.test_read_only_directoryc
Cs�t��Itj�tjd�}t�td|��!|�t	��|�
�Wd�n1s(wYWd�n1s7wYWd�dSWd�dS1sOwYdS)N�nonexistentr^)r�r<r#�joinrr^rr�rr�r��rr^rrr�test_nonexisting_directorybs
����"�z)TestBadTempdir.test_nonexisting_directoryc
Cs�t��Rtj�tjd�}t|d���t�	td|��#|�
ttf��|�
�Wd�n1s1wYWd�n1s@wYWd�dSWd�dS1sXwYdS)N�file�wbr^)r�r<r#r�rr^r�r�rr�r�NotADirectoryErrorr�r�r�rrr�test_non_directoryis
����"�z!TestBadTempdir.test_non_directoryN)r'r(r)r�r�r�rrrrr�Rsr�c@s�eZdZ	Gdd�d�Zddd�Zdd�Zd	d
�Zdd�Zd
d�Zdd�Z	e
�ed�dd��Z
e
�ed�dd��Zdd�Zdd�Zdd�ZdS)�TestMkstempInnerc@s<eZdZejZejZej	Z
ejZdd�Z
dd�Zdd�ZdS)zTestMkstempInner.mkstempedcCs>|r|j}n|j}t�|||�}t�|||||�\|_|_dSr!)�_bflags�_tflagsrr�_mkstemp_inner�fdrI)rrJrKrL�bin�flags�output_typerrrr${sz#TestMkstempInner.mkstemped.__init__cCst�|j|�dSr!)r<r�r�)rrrrrr��sz TestMkstempInner.mkstemped.writecCs|�|j�|�|j�dSr!)�_closer��_unlinkrIrrrr�__del__�sz"TestMkstempInner.mkstemped.__del__N)r'r(r)r�_bin_openflagsr��_text_openflagsr�r<r�r��unlinkr�r$r�r�rrrr�	mkstempedusr�NrTcCsrt�|||�}|dur|turt��}nt��}|dur|�}|dur&|�}|�||||�}|�|j|||�|Sr!)rrrr\r]r�rPrI)rrJrKrLr�r�r�rrr�	do_create�s
zTestMkstempInner.do_createcCs^|���d�|jdd��d�|jdd��d�|jddd��d�|jddd��d�dS)	N�blatr��rKr��rL�rKrL�aa�.txt)r�r�rrrr�
test_basic��
zTestMkstempInner.test_basiccCs2t��}|j|dd��d�|j|dd��d�|j|dd��d�|j|ddd��d�|j|dd	d��d�|�t��|jd
dd��d�Wd�n1sRwY|�t��|j|d
d��d�Wd�n1sqwY|�t��|j|dd
d��d�Wd�dS1s�wYdS)Nr
�rJrLr��a�rJrK�b�rJrKrL�aa�.txtr)rr]r�r�rr)rZdir_brrr�test_basic_with_bytes_names�s��"�z,TestMkstempInner.test_basic_with_bytes_namescCs*ttt��}|D]
}|jdd�||<qdS�Nr�r�)�listrurvr��rZextantrxrrr�test_basic_many�s�z TestMkstempInner.test_basic_manyc	Cs`t��}z!|j|d��d�|jt�|�d��d�Wt��t�	|�dSt��t�	|�w�Nr�r�)
rrXr�r�rrr�
gc_collectr<�rmdir�rrJrrr�test_choose_directory�s�z&TestMkstempInner.test_choose_directorycCsJ|��}t�t�|j�j�}d}tjdkr|d?}|d}|�||�dS)N��win32��I)	r�r��S_IMODEr<rIr��sys�platformrB)rr�r�rf�userrrr�test_file_mode�s
zTestMkstempInner.test_file_modezos.spawnl not availablecCs�tjrd}nd}|��}|�t�|j�d�d|j}zt}Wnty-t	j
d}Ynwtj�tj�
tj�|��d�}t	jdkrLdt	j}d|}nt	j}t�tjt	j||||�}|�|dkd	|�|�|dkd
|�dS)N�v�qFz%drztf_inherit_check.pyrz"%s"z$child process caught fatal signal %dz child process reports failure %d)r�verboser�rBr<�get_inheritabler��__file__�	NameErrorr�argvr#r�r�rCr�
executabler�P_WAITr�)rr	r�r��meZtesterZ	decoratedZretvalrrr�test_noinherit�s.
��



�zTestMkstempInner.test_noinheritztext mode not availablecCsL|jdd�}|�d�|�d�t�|jdtj�|�t�|jd�d�dS)Nr)r�sblatsextra
rzr�)r�r�r<�lseekr��SEEK_SETrBr��r�frrr�
test_textmode�s


zTestMkstempInner.test_textmodecCst�t��t��dtjt�Srq)rr�r\rZr�rrrrrr�s
�zTestMkstempInner.make_tempc	Cs�t��Mtddd��.|��\}}t�|�|�|�d��|��\}}t�|�|�|�d��Wd�n1s;wYWd�dSWd�dS1sSwYdS�N�aaa�bbb)r�r�r�r<r�rF�endswith)r�fd1Zname1�fd2Zname2rrr�!test_collision_with_existing_files
�

P�z2TestMkstempInner.test_collision_with_existing_filec	Cs�t��Ftddd��'t��}|�|�d��|��\}}t�|�|�|�d��Wd�n1s4wYWd�dSWd�dS1sLwYdSr)	r�r�rrXrFrr�r<r�)rrJr�rIrrr�&test_collision_with_existing_directorys
�
P�z7TestMkstempInner.test_collision_with_existing_directory)NNNrT)r'r(r)r�r�r�r�r�r�rr�r��
has_spawnlr�has_textmoderr�rr rrrrr�rs 




%


r�c@r�)�TestGetTempPrefixcCsLt��}|�|t�|�t|�d�t��}|�|t�|�t|�d�dSr�)rrZr�rZ
assertGreaterr>r[r)r�pZpbrrr�test_sane_template$sz$TestGetTempPrefix.test_sane_templatec	Cslt��d}tjdd�}z#tj�||�}t�|tjtjB�}t�	|�t�
|�Wt�|�dSt�|�w)Nz
xxxxxx.xxxr��prefix)rrZrXr<r#r�r��O_RDWR�O_CREATr�r�r�)rr$�dr�rrr�test_usable_template0s
z&TestGetTempPrefix.test_usable_templateN)r'r(r)r%r+rrrrr#!sr#c@s.eZdZ	dd�Zdd�Zdd�Zdd�Zd	S)
�TestGetTempDircCsTt��t��fD]}|�tj�|�p|tjkd|�|�tj�|�d|�qdS)Nz%r is not an absolute pathz%r is not a directory)	rr\r]rFr<r#�isabsr��isdir�rr*rrr�test_directory_existsDs���z$TestGetTempDir.test_directory_existscCs8t���}|�d�Wd�dS1swYdS)Nr�)rrUr�)rr�rrr�test_directory_writableMs
"�z&TestGetTempDir.test_directory_writablecCsPt��}t��}t��}|�||u�|�t|�t|��|�|t�|��dSr!)	rr\r]rFr�r?rBr<�fsdecode)rr�r�r�rrrr�VszTestGetTempDir.test_same_thingc	Cs�t�d�}tjd}t_z6t���}||d<|�t��|�Wd�n1s(wYW|t_t�|�dSW|t_t�|�dS|t_t�|�w)Nz-Tempr�)rrXr^rr�rBr\r�)rZcase_sensitive_tempdirZ_tempdirr�rrr�test_case_sensitive`s

���z"TestGetTempDir.test_case_sensitiveN)r'r(r)r0r1r�r3rrrrr,As		
r,c@s8eZdZ	ddd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�TestMkstempNc
	Cs�t�|||�}|dur|turt��}nt��}|dur|�}|dur&|�}tj|||d�\}}tj�|�\}}tj�	|�}	|�
|	|d|	|f�z|�||||�Wt�|�t�
|�dSt�|�t�
|�w)N�rJr'�suffixz+Directory '%s' incorrectly returned as '%s')rrrr\r]rWr<r#r=rCrBrPr�r�)
rrJrKrLr�r�rIrMrNZadirrrrr�rs*

�

�zTestMkstemp.do_createcCsL|��|jdd�|jdd�|jddd�|jddd�|jdd	�dS)
Nr�r�r�r�r�r�r��.r��r�rrrrr��szTestMkstemp.test_basiccCst��}|j|dd�|j|dd�|j|dd�|j|ddd�|j|ddd�|jd	d
�|�t��|jdddd�Wd�n1sGwY|�t��|jd	ddd�Wd�n1sdwY|�t��|jd	dd
d�Wd�dS1s�wYdS)Nr
r�r�r�r�r�r�r��.r�r7r�r�)rr]r�rrr/rrrr��s ��"�z'TestMkstemp.test_basic_with_bytes_namesc	CsDt��}z|j|d�|jt�|�d�Wt�|�dSt�|�w�Nr�)rrXr�rrr<r�r�rrrr��s
z!TestMkstemp.test_choose_directorycCsVtj}|�tjttd�f�z�t��\}}t�|�t�|�|�|t�t�	�t_|�tjt
�|�t��t�|�t�	�t
�t��\}}t�|�t�|�|�|t
�tjdd�\}}t�|�t�|�|�|t�tjdd�\}}t�|�t�|�|�|t�tjt��d�\}}t�|�t�|�|�|t�W|t_dS|t_w)Nr��r6z
test-temp-r&r�)rr^r�rr?rWr<r�r�r]rr\)r�orig_tempdirr�r#rrr�.test_for_tempdir_is_bytes_issue40701_api_warts�s8










z:TestMkstemp.test_for_tempdir_is_bytes_issue40701_api_wartsr;)r'r(r)r�r�r�r�r=rrrrr4os
		r4c@s`eZdZ	dd�Zddd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�ZdS)�TestMkdtempcCst��Sr!)rrXrrrrr��szTestMkdtemp.make_tempNcCs�t�|||�}|dur|turt��}nt��}|dur|�}|dur&|�}tj|||d�}z|�||||�|WSt�|��)Nr5)	rrrr\r]rXrPr<r�)rrJrKrLr�rIrrrr��s 

zTestMkdtemp.do_createcCs^t�|���t�|jdd��t�|jdd��t�|jddd��t�|jddd��dS�Nr�r�r�r�r�r�r�)r<r�r�rrrrr��r�zTestMkdtemp.test_basiccCs4t��}t�|j|d��t�|j|dd��t�|j|dd��t�|j|ddd��t�|j|ddd��|�t��t�|j|d	dd��Wd�n1sRwY|�t��t�|j|dd
d��Wd�n1srwY|�t��t�|jdddd��Wd�dS1s�wYdS)Nr�r�r�r�r�r�r�r�r�r�r)rr]r<r�r�rrr/rrrr��s��"�z'TestMkdtemp.test_basic_with_bytes_namesc
Cslttt��}z|D]
}|jdd�||<q	W|D]}t|t�r#t�|�qdS|D]}t|t�r4t�|�q(wr�)r�rurvr�r@rr<r�r�rrrr��s�

��

��zTestMkdtemp.test_basic_manyc	CsPt��}zt�|j|d��t�|jt�|�d��Wt�|�dSt�|�wr:)rrXr<r�r�rrr�rrrr�	s
z!TestMkdtemp.test_choose_directoryc	Csj|��}z*t�t�|�j�}|dM}d}tjdkr!|d?}|d}|�||�Wt�|�dSt�|�w)Ni�i�rrr)	r�r�rr<r�rrrBr�)rrJr�rfrrrr�	test_modes
zTestMkdtemp.test_modec	Cs�t��Ftddd��'tjdd�}|��|�|j�d��t��}|�|�d��Wd�n1s4wYWd�dSWd�dS1sLwYdS)NrrF)�delete)	r�r�rrUr�rFrIrrX)rr�rJrrrr#s
�P�z-TestMkdtemp.test_collision_with_existing_filec	Cs�t��?tddd�� t��}|�|�d��t��}|�|�d��Wd�n1s-wYWd�dSWd�dS1sEwYdSr)r�r�rrXrFr)r�dir1Zdir2rrrr .s
�P�z2TestMkdtemp.test_collision_with_existing_directorycCstj}|�tjttd�f�zut��}t�|�|�|t�t��t_|�tjt	�|�t�
�t�|�t��t	�t��}t�|�|�|t	�tjdd�}t�|�|�|t�tjdd�}t�|�|�|t�tjt�
�d�}t�|�|�|t�W|t_dS|t_w)Nz-dirr;z
test-mkdtemp-r&r�)rr^r�rr?rXr<r�r]rr\)rr<r#rrrr=8s.





z:TestMkdtemp.test_for_tempdir_is_bytes_issue40701_api_wartsr;)
r'r(r)r�r�r�r�r�r�r@rr r=rrrrr>�s
	
r>csReZdZ	�fdd�Z�fdd�ZGdd�d�Zddd	�Zd
d�Zdd
�Z�Z	S)�
TestMktempcrjr!)rrXrJrmr8rrnrrr8XrpzTestMktemp.setUpcs&|jrt�|j�d|_t���dSr!)rJr<r�rmr:rrnrrr:\szTestMktemp.tearDownc@s(eZdZejZejZdd�Z	dd�Z
dS)zTestMktemp.mktempedcCs.tj|||d�|_t�t�|j|jd��dS)Nr5r)rr.rIr<r�r�r�)rrJrKrLrrrr$fszTestMktemp.mktemped.__init__cCs|�|j�dSr!)r�rIrrrrr�lszTestMktemp.mktemped.__del__N)r'r(r)r<r�r�rr�r�r$r�rrrr�mktempedbs
rDrcCs(|�|j||�}|�|j|j||�|Sr!)rDrJrPrI)rrKrLr�rrrr�oszTestMktemp.do_createcC�@|��|jdd�|jdd�|jddd�|jddd�dSr?r8rrrrr�u�
zTestMktemp.test_basiccCs4ttt��}|D]
}|jdd�||<q~t��dSr�)r�rurvr�rr�r�rrrry}s
zTestMktemp.test_many)rr)
r'r(r)r8r:rDr�r�ryr�rrrnrrCSs

rCc@speZdZ	ddd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�TestNamedTemporaryFileNrTcCs8|durt��}tj||||d�}|�|j|||�|S)N)rJr'r6rA)rr\rUrPrI)rrJrKrLrAr�rrrr��s
�z TestNamedTemporaryFile.do_createcCrEr?r8rrrrr��rFz!TestNamedTemporaryFile.test_basiccCsT|��}t�|�}|j}|j}~|d�~|d�~tjdd�r(|�|��dSdS)NsfoosbarT)Zcpython)r��weakref�refr�rZcheck_impl_detail�assertIsNone)rr�wrr�Zwrite2rrr�test_method_lookup�s
�z)TestNamedTemporaryFile.test_method_lookupcsPgd���fdd�}t|��D]\}}|�|�|�q|�|t��d�dS)N)sspam
seggs
sbeans
cs*tjdd�}|�d����|�d�|S)N�w+b�r�r
r)rrUr�r��seek�r��linesrr�	make_file�s
z3TestNamedTemporaryFile.test_iter.<locals>.make_filerT)�	enumeraterBr>)rrSrx�lrrQr�	test_iter�s
z TestNamedTemporaryFile.test_itercCs(t��}|�tj�|j�d|j�dS)Nz$NamedTemporaryFile %s does not exist)rrUrFr<r#�existsrIrrrr�test_creates_named�s�z)TestNamedTemporaryFile.test_creates_namedc	Cs�t��}z:tj|d��
}|�d�Wd�n1swY|�t�|�g�|�tj�	|j
�d|j
�Wt�|�dSt�|�w)Nr�r�z(NamedTemporaryFile %s exists after close)rrXrUr�rBr<r�r�r#rWrIr��rrJrrrr�test_del_on_close�s��z(TestNamedTemporaryFile.test_del_on_closec	Cs�t��}d}z2tj|dd�}|j}|�d�|��|�tj�	|j�d|j�W|dur2t�
|�t�|�dS|durBt�
|�t�|�w)NF)rJrAr�z)NamedTemporaryFile %s missing after close)rrXrUrIr�r�rFr<r#rWr�r�)rrJ�tmprrrr�test_dis_del_on_close�s 
�
�
z,TestNamedTemporaryFile.test_dis_del_on_closecC�.t��}|�d�|��|��|��dS�N�abc
)rrUr�r�rrrr�test_multiple_close��

z*TestNamedTemporaryFile.test_multiple_closecslt����|�tj��j��Wd�n1swY|�tj��j���fdd�}|�t	|�dS)Nc�*��	Wd�dS1swYdSr!rrrPrr�
use_closed��"�z?TestNamedTemporaryFile.test_context_manager.<locals>.use_closed)
rrUrFr<r#rWrIr�rr��rrcrrPr�test_context_manager�s
�z+TestNamedTemporaryFile.test_context_managercC�t��}|�tj|�|�t��tjd|d�Wd�n1s"wY|�t��tjd|d�Wd�n1s>wY|�	t
�|�g�dS�NrK)r�rJ�)rrX�
addCleanuprr�rr�rUrrBr<r�r�rrr�
test_bad_mode����z$TestNamedTemporaryFile.test_bad_modecC�ft��}|�tj|�|�t��tjdd|d�Wd�n1s#wY|�t	�
|�g�dS�N�wzbad-encoding)�encodingrJ)rrXrjrr�r�LookupErrorrUrBr<r�r�rrr�test_bad_encoding��z(TestNamedTemporaryFile.test_bad_encodingc
Cs�t��}|�tj|�t�d��?}t�dt����'}t�|_	|�
t��tj|d�Wd�n1s4wYWd�n1sCwYWd�n1sRwY|�j�
�|�t�|�g�dS)Nztempfile._TemporaryFileWrapperzio.openr�)rrXrjrr�r�patch�	mock_open�KeyboardInterrupt�side_effectrrUr��
assert_calledrBr<r�)rrJZmock_ntfrurrr�test_unexpected_errors �����z,TestNamedTemporaryFile.test_unexpected_error)NrrT)r'r(r)r�r�rLrVrXrZr\r`rfrkrrryrrrrrG�s



	rGc@s�eZdZ	d,dd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�ZdS)-�TestSpooledTemporaryFilerNrcCs&|durt��}tj||||d�}|S)N)�max_sizerJr'r6)rr\r`)rr{rJrKrLr�rrrr�sz"TestSpooledTemporaryFile.do_createcCs4|��}|�|j�|jdddd�}|�|j�dS)Nr	r�r�)r{rKrL)r�r��_rolledrrrrr�sz#TestSpooledTemporaryFile.test_basicc	Cs�t��}zItjd|d�}|�|j�|�d�|�|j�|j}|��|�	t
�|�g�t|t
�sF|�t
j�|�d|�Wt
�|�dSWt
�|�dSt
�|�w)N�
)r{rJsblat blat blat blat blat z*SpooledTemporaryFile %s exists after close)rrXr`r�r|r�rFrIr�rBr<r�r@�intr#rWr�)rrJr�filenamerrrrZ&s 

��z*TestSpooledTemporaryFile.test_del_on_closecCsL|jdd�}|�|j�td�D]
}|�dd�|�d�q|�|j�dS)N��r{�r�xxxxxxxxxxxxxxxxxxxx)r�r�r|rurOr�)rrrxrrr�test_rewrite_small7sz+TestSpooledTemporaryFile.test_rewrite_smallcCs^|jdd�}|�|j�|�d�|�|j�|�d�|�|j�|�d�|�|j�dS)Nr�r�r��
xxxxxxxxxx�x)r�r�r|r�rFrrrr�test_write_sequential@s


z.TestSpooledTemporaryFile.test_write_sequentialcCs@|��}|�d�|�d�}|�|d�|��}|�|d�dS)N)r��y�zrsxyz)r��
writelinesrOrBr�)rr�pos�bufrrr�test_writelinesLs

z(TestSpooledTemporaryFile.test_writelinescCs<|jdd�}|�d�|�|j�|�d�|�|j�dS)N�#r�)r�r�sxxxxxr�)r�r�r�r|r�rFrrrr�test_writelines_sequentialUs


z3TestSpooledTemporaryFile.test_writelines_sequentialcCsV|jdd�}|�|j�|�dd�}|�|d�|�|j�|�d�|�|j�dS)Nr�r�r	rr�)r�r�r|rOrBr�rF)rrr�rrr�test_sparse^s
z$TestSpooledTemporaryFile.test_sparsecCs:|jdd�}|�|j�|�|��dk�|�|j�dS)Nr�r�r)r�r�r|rF�filenorrrr�test_filenoisz$TestSpooledTemporaryFile.test_filenocCs:t��}|�d�|�|j�|��|��|��dSr^)rr`r�r�r|r�rrrr�#test_multiple_close_before_rolloverps
z<TestSpooledTemporaryFile.test_multiple_close_before_rollovercCs>tjdd�}|�d�|�|j�|��|��|��dS)NrTr�r_)rr`r�rFr|r�rrrr�"test_multiple_close_after_rolloverys
z;TestSpooledTemporaryFile.test_multiple_close_after_rollovercCsL|jdd�}|j}|j}|j}|d�|d�|dd�|�|d�d�dS)Nr�r�s#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas#bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr�FsFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)r�r�r�rOrB)rrr�r�rOrrr�test_bound_methods�s
z+TestSpooledTemporaryFile.test_bound_methodscCs�tjdd�}|�d�|�|j�|�|jd�|�|j�|�	t
��|jWd�n1s1wY|�	t
��|jWd�n1sIwY|�	t
��|j
Wd�n1sawY|�d�|�|j�|�|jd�|�|j�|�	t
��|jWd�n1s�wY|�	t
��|jWd�n1s�wY|�	t
��|j
Wd�dS1s�wYdS)Nr}r�r�rMr�zrb+)rr`r�r�r|rBr�rJrIrr��newlinesrp�errorsrF�assertIsNotNonerrrr�test_properties�s6
���
��"�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+r}�utf-8)r�r{rpzabc
rzdef
zabc
def
�strictzxyzzy
zabc
def
xyzzy
zfoobar
zabc
def
xyzzy
foobar
)rr`r�rOrBr�r�r|r�rJrIr�r<�lineseprpr�rFr�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�r}rr�r-)r�r{�newlinerpr�uΛ
ruΜΜΜΜΜΜΜΜΜΜ
u(ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝuBΛ
ΜΜΜΜΜΜΜΜΜΜ
ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ)rr`r�rOrBr�r�r|r�rJrIr�r�rpr�rFrrrr�test_text_newline_and_encoding�s2�





�z7TestSpooledTemporaryFile.test_text_newline_and_encodingcsltjdd���|��j�|��j�Wd�n1swY|��j��fdd�}|�t|�dS)NrTr�crbr!rrrPrrrc�rdzQTestSpooledTemporaryFile.test_context_manager_before_rollover.<locals>.use_closed)rr`r�r|�closedrFrr�rerrPr�$test_context_manager_before_rollover�s�z=TestSpooledTemporaryFile.test_context_manager_before_rollovercs�tjdd��#�|��j���d����|��j�|��j�Wd�n1s,wY|��j��fdd�}|�t	|�dS)NrTr�r_crbr!rrrPrrrc�rdzQTestSpooledTemporaryFile.test_context_manager_during_rollover.<locals>.use_closed)
rr`r�r|r��flushrFr�rr�rerrPr�$test_context_manager_during_rollover�s
�z=TestSpooledTemporaryFile.test_context_manager_during_rollovercs�tjdd����d����|��j���|��j�Wd�n1s(wY|��j��fdd�}|�t	|�dS)NrTr�r_crbr!rrrPrrrcrdzPTestSpooledTemporaryFile.test_context_manager_after_rollover.<locals>.use_closed)
rr`r�r�rFr|r�r�rr�rerrPr�#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)	Nr}r�sabcdefg
rr
�sabcdrz)rr`r�rO�truncater�r|rB�_file�getvaluerFr<�fstatr��st_sizerrrr�!test_truncate_with_size_parameter	s 





z:TestSpooledTemporaryFile.test_truncate_with_size_parametercCs|�tjttj�dSr!)r�rr`r�types�GenericAliasrrrr�test_class_getitems�z+TestSpooledTemporaryFile.test_class_getitem)rNrr)r'r(r)r�r�rZr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrzs,
					 rzc@sFeZdZ	dd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�TestTemporaryFilecCst��dSr!)rrVrrrrr�'szTestTemporaryFile.test_basiccCsJt��}tj|d�}|�d�zt�|�WdS|��t�|��r�)rrXrVr�r<r�r�rYrrr�test_has_no_name,s

z"TestTemporaryFile.test_has_no_namecCr]r^)rrVr�r�rrrrr`<raz%TestTemporaryFile.test_multiple_closecs@�fdd�}|dd�|dd�|dddd	�|d
ddd�dS)
NcsZtj|i|���}|�|�|�d���||���Wd�dS1s&wYdSr�)rrVr�rOrBr�)�inputr�r��fileobjrrr�	roundtripGs


"�z;TestTemporaryFile.test_mode_and_encoding.<locals>.roundtrips1234rMzabdc
r�uΛzutf-16)rpzfoo
r)r�r)rr�rrr�test_mode_and_encodingEs


z(TestTemporaryFile.test_mode_and_encodingcCrgrh)rrXrjrr�rr�rVrrBr<r�r�rrrrkRrlzTestTemporaryFile.test_bad_modecCrmrn)rrXrjrr�rrqrVrBr<r�r�rrrrr[rsz#TestTemporaryFile.test_bad_encodingcCst��}|�tj|�t�dd��ft�d��Q}t�d��<}t�d��'}t�|_|�	t��tj
|d�Wd�n1s>wYWd�n1sMwYWd�n1s\wYWd�n1skwYWd�n1szwY|��|�t
�|�g�dS)Nztempfile._O_TMPFILE_WORKSFz	os.unlinkzos.openzos.closer�)rrXrjrr�rrtrvrwrrVrxrBr<r�)rrJZmock_unlinkruZ
mock_closerrrrybs4���������z'TestTemporaryFile.test_unexpected_errorN)
r'r(r)r�r�r`r�rkrrryrrrrr�$s	
	r�c@r�)�
NulledModulescGs&dd�|D�|_dd�|jD�|_dS)NcSsg|]}|j�qSr)rc)�.0�modrrr�
<listcomp>ssz*NulledModules.__init__.<locals>.<listcomp>cSsg|]}|���qSr)�copy)r�rIrrrr�ts)�refs�contents)r�modulesrrrr$rszNulledModules.__init__cCs"|jD]}|D]}d||<qqdSr!)r�)rr*rgrrrr4vs


��zNulledModules.__enter__cGs.t|j|j�D]
\}}|��|�|�qdSr!)�zipr�r��clear�update)r�exc_infor*r�rrrr9{s�zNulledModules.__exit__N)r'r(r)r$r4r9rrrrr�qsr�c@s�eZdZ			d-dd�Zd.dd�Zd	d
�Zdd�Zd
d�Zej	dd��Z
ej	dd��Ze�
eed�d�ej	dd���Zejdd��Zejdd��Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Ze�
eed�d�d+d,��ZdS)/�TestTemporaryDirectoryNrrTFc	CsJ|durt��}tj||||d�}|�|j|||�|�|j|||�|S)N)rJr'r6�ignore_cleanup_errors)rr\rarPrI�
do_create2)	rrJrKrL�recurse�dirs�filesr�r[rrrr��s�z TestTemporaryDirectory.do_createc	Cs�|r!t|�D]}tj�|d|�}t�|�|�||d||�qt|�D]#}ttj�|d|�d��
}|�d�Wd�n1sCwYq%dS)Nzdir%drTz
test%d.txtr�sHello world!)rur<r#r��mkdirr�r�r�)rr#r�r�r�rxrIrrrrr��s
���z!TestTemporaryDirectory.do_create2cCstt���}Wd�n1swY|�t��}tj|d�Wd�n1s*wY|�|jjtj�dSr:)rrarr�rB�	exception�errno�ENOENT)rr��cmrrr�test_mkdtemp_failure�s
��z+TestTemporaryDirectory.test_mkdtemp_failurec	Csrt��}z.|j|d�}|�tj�|j�d|j�|��|�	tj�|j�d|j�Wt�
|�dSt�
|�w)Nr�z$TemporaryDirectory %s does not exist�*TemporaryDirectory %s exists after cleanup)rrXr�rFr<r#rWrI�cleanupr�r�)rrJr*rrr�test_explicit_cleanup�s��z,TestTemporaryDirectory.test_explicit_cleanupc	Cs	t���z}|j|dd�}t�|j�}|�|��d|�d��t|dd��}|�	d�|�
�Wd�n1s:wY|�tt
|�d���ttj�d	��d
|���|�|��tj�d	�d|�d��|�
�|�|��d|�d��Wd�dS1s�wYdS)
NT�rJr��TemporaryDirectory � does not exist�
a_file.txt�w+t�
Hello world!
�*�win�1Unexpected number of files in TemporaryDirectory � existence state unexpectedz exists after cleanup)rrar�rrrIrFrWr�r�r�rBr>r��globr~rr�
startswithr��r�working_dirZtemp_dir�	temp_pathZ	open_filerrr�"test_explict_cleanup_ignore_errors�s<
�

�

���

�
�"�z9TestTemporaryDirectory.test_explict_cleanup_ignore_errorscCs�|��}|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�r<�symlinkrIr#r�r�r�rWrFrBr�)r�d1�d2rrr�(test_cleanup_with_symlink_to_a_directory�s���z?TestTemporaryDirectory.test_cleanup_with_symlink_to_a_directorycs�jdd���}tj�|d�}t|d���tj�|d�}t�|�td�D]̉�dK��jt	�d�d	�����fd
d�}��d��|d
dd�Wd�n1sRwY��d��|d
dd�Wd�n1smwY��d��+t�
|��t�|�j}||dd�t�|�j}��
||d||f�Wd�n1s�wY��d��+t�
|��t�|�j}||dd�t�|�j}��
||d||f�Wd�n1s�wYWd�n1s�wYq%Wd�dS1s�wYdS)Nrr��file1r�rB�r�03orNc��jdd�}tj�|jd�}tj|||d�z
tj|�dd�Wn	ty)Ynwzt�|��Wn	ty;Ynwt�|j��|�	���
tj�|j��dS�Nrr�r���target_is_directoryF)�follow_symlinks)r�r<r#r�rIr�r��NotImplementedErrorr�r�r�rW��targetr�r�r��r�rrr�test��$���zDTestTemporaryDirectory.test_cleanup_with_symlink_modes.<locals>.test�nonexisting file�nonexistingFr��nonexisting dirT�
existing filez%03o != %03o�existing dir)r�r<r#r�r�r�r�ru�subTest�formatr�r�r�rB)rr�r�rBr�Zold_modeZnew_moderr�r�test_cleanup_with_symlink_modes�sL
��
��
������"�z6TestTemporaryDirectory.test_cleanup_with_symlink_modes�chflagszrequires os.chflagsc	s�tjtjB������jdd���}tj�|d�}t|d��	�tj�|d�}t�
|���fdd�}��d��|d	d
d�Wd�n1sIwY��d��|d	d
d�Wd�n1sdwY��d��&t�|��t�|�j
}||d
d�t�|�j
}��||�Wd�n1s�wY��d��&t�|��t�|�j
}||d
d�t�|�j
}��||�Wd�n1s�wYWd�dSWd�dS1s�wYdS)Nrr�r�r�rBcr�r�)r�r<r#r�rIr�r�r�r�r�r�rWr��r�rrrr�r�zDTestTemporaryDirectory.test_cleanup_with_symlink_flags.<locals>.testr�r�Fr�r�Tr�r�)r��UF_IMMUTABLE�UF_NOUNLINK�check_flagsr�r<r#r�r�r�r�r�r��st_flagsrB)rr�r�rBr�Z	old_flagsZ	new_flagsrr�r�test_cleanup_with_symlink_flagss>

�����""�z6TestTemporaryDirectory.test_cleanup_with_symlink_flagsc	CsRt��}z|j|d�}|j}~|�tj�|�d|�Wt�|�dSt�|�w)Nr��*TemporaryDirectory %s exists after __del__)	rrXr�rIr�r<r#rWr��rrJr*rIrrr�test_del_on_collection?s�z-TestTemporaryDirectory.test_del_on_collectionc	Cs�	t���g}|j|dd�}t�|j�}|�|��d|�d��t|dd��}|�	d�~Wd�n1s7wY|�
tt|�
d���ttj�d	��d
|���|�
|��tj�d	�d|�d��Wd�dS1sowYdS)NTr�r�r�r�r�r�r�r�r�r�)rrar�rrrIrFrWr�r�rBr>r�r�r~rrr�r�rrr�$test_del_on_collection_ignore_errorsLs2
�

�
���

�"�z;TestTemporaryDirectory.test_del_on_collection_ignore_errorscCs�|���B}dD]6}dj||d�}t�d|�\}}}|����}|�tj�	|�d|�|�dd�}|�
d|�|�d	|�qWd�dS1sIwYdS)
N)�builtinsr<�shutilrrr5a�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)
                    )rJr��-cr�r��backslashreplace�
Exception �'ResourceWarning: Implicitly cleaning up�r�r�r�assert_python_okr��stripr�r<r#rWrwr�)rrJr��code�rc�out�err�tmp_namerrr�test_del_on_shutdownas
���"�z+TestTemporaryDirectory.test_del_on_shutdowncCs�	t���a}dj|d�}t�d|�\}}}t�|�����}|�	t
t|�d���t
tj�d��d|���|�	|��tj�d�d|�d��|�d	d
�}|�d|�|�d|�|�d
|�Wd�dS1siwYdS)Na�if True:
                import pathlib
                import sys
                import tempfile
                import warnings

                temp_dir = tempfile.TemporaryDirectory(
                    dir={working_dir!r}, ignore_cleanup_errors=True)
                sys.stdout.buffer.write(temp_dir.name.encode())

                temp_dir_2 = pathlib.Path(temp_dir.name) / "test_dir"
                temp_dir_2.mkdir()
                with open(temp_dir_2 / "test0.txt", "w") as test_file:
                    test_file.write("Hello world!")
                open_file = open(temp_dir_2 / "open_file.txt", "w")
                open_file.write("Hello world!")

                warnings.filterwarnings("always", category=ResourceWarning)
                )r�r
r�r�r�r�r�r�r�	Exception�Errorr
)rrar�rrrrr�rrBr>r�r�r~rrr�rWrwr�)rr�r�__rrr�rrr�"test_del_on_shutdown_ignore_errors�s.
���

�"�z9TestTemporaryDirectory.test_del_on_shutdown_ignore_errorscCs�|���<}dj|d�}t�d|�\}}}|����}|�tj�	|�d|�|�dd�}|�
d|�|�d|�Wd�dS1sCwYdS)	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�rrr
r)rrJrrrrrrrr�test_exit_on_shutdown�s
�
�"�z,TestTemporaryDirectory.test_exit_on_shutdownc	Cs�|���D}|j|dd�}|j}tjdtfdd��tjdtd�~t��Wd�n1s/wY|�	t
j�|�d|�Wd�dS1sKwYdS)	N�)rJr�Z
ImplicitlyF)�quiet�always)r/r)
r�rIrr2�ResourceWarningr5r6rr�r�r<r#rWrrrr�test_warnings_on_cleanup�s 
��
��"�z/TestTemporaryDirectory.test_warnings_on_cleanupcCs$|��}|��|��|��dSr!)r�r�r/rrrr`�sz*TestTemporaryDirectory.test_multiple_closecCsb|��}|�}|�tj�|��|�||j�Wd�n1s!wY|�tj�|��dSr!)r�rFr<r#rWrBrIr�)rr*rIrrrrf�s�z+TestTemporaryDirectory.test_context_managercCs�td�D]k}|dK}|jt|d�d��T|jdddd�}|�0tj|jdd	�D]\}}}|D]
}t�tj�	||�|�q.t�||�q'|�
�Wd�n1sQwY|�tj�|j��Wd�n1sjwYqdS)
Nr�rr�rNrri�r�r�r�F��topdown)
rur�r�r�r<�walkrIr�r#r�r�r�rW)rr�r*�rootr�r�rIrrr�
test_modes�s
����z!TestTemporaryDirectory.test_modesc
Cs�tj}zDt|d���zt�||�Wnty1}z|�d|d�d|���WYd}~nd}~wwt�|d�Wt�|�dSWt�|�dSt�|�w)Nroz chflags() doesn't support flags z#bz: r)	rZTESTFNr�r�r<r�r�r�r�)rr�r�excrrrr�s"�����z"TestTemporaryDirectory.check_flagsc	Cs�tjtjB}|�|�|jdddd�}|�0tj|jdd�D]\}}}|D]
}t�tj	�
||�|�q%t�||�q|��Wd�n1sHwY|�tj	�
|j��dS)Nrrir!Fr")r�r�rrr�r<r$rIr�r#r�r�r�rW)rr�r*r%r�r�rIrrr�
test_flags�s

�z!TestTemporaryDirectory.test_flags)NrrrTrTrTF)rTrTrT)r'r(r)r�r�r�r�r�rZskip_unless_symlinkr�r�r�r�r�r<rrZcpython_onlyrrrrrr r`rfr&rr(rrrrr��s<
�




0.

 %r��__main__)7rr��ior<rrrQr5�
contextlibr�r�rHr�rr�rZtest.supportrrrr�r�r"r�r!rr�rvZTestCaser
r,rSrir�r�r��contextmanagerr�r�r�r�r#r,r4r>rCrGrzrUrVr�r�r�r'�mainrrrr�<module>sr
23@* 
	 0 .^>M

�