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.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rScsReZdZdZ�fdd�Zdd�Zdd�Zdd	�Ze�	e
ed
�d�dd
��Z�Z
S)�TestRandomNameSequencez6Test the internal iterator object _RandomNameSequence.c�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)�__doc__r8rtryr{�unittest�
skipUnless�hasattrr<r��
__classcell__rrrnrri�s
�ric@� eZdZdZdd�Zdd�ZdS)�TestCandidateTempdirListz3Test the internal function _candidate_tempdir_list.cCs4t��}|�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�r�rrrrr��s	r�c@seZdZdZdd�ZdS)�TestGetDefaultTempdirzTest _get_default_tempdir().cs~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�r�rrrrr�sr�c@r�)�TestGetCandidateNamesz0Test the internal function _get_candidate_names.cCst��}|�|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�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�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�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�r��
has_spawnlr�has_textmoderr�r r!rrrrr�rs 




%


r�c@r�)�TestGetTempPrefixzTest gettempprefix().cCsLt��}|�|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&r,rrrrr$!sr$c@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)	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)r�r1r2r�r4rrrrr-As		
r-c@s:eZdZdZd
dd�Zdd�Zdd�Zd	d
�Zdd�ZdS)�TestMkstempzTest mkstemp().Nc
	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�r8r�r�)rr]r�rrr0rrrr��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��r7z
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�rr>rrrrr5os
		r5c@sbeZdZdZdd�Zddd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�TestMkdtempzTest mkdtemp().cCst��Sr!)rrXrrrrr��szTestMkdtemp.make_tempNcCs�t�|||�}|dur|turt��}nt��}|dur|�}|dur&|�}tj|||d�}z|�||||�|WSt�|��)Nr6)	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�rrr0rrrr��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�rrAr r!r>rrrrr?�s
	
r?csTeZdZdZ�fdd�Z�fdd�ZGdd�d�Zdd	d
�Zdd�Zd
d�Z	�Z
S)�
TestMktempzTest mktemp().crjr!)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)Nr6r)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
rErcCs(|�|j||�}|�|j|j||�|Sr!)rErJrPrI)rrKrLr�rrrr�oszTestMktemp.do_createcC�@|��|jdd�|jdd�|jddd�|jddd�dSr@r9rrrrr�u�
zTestMktemp.test_basiccCs4ttt��}|D]
}|jdd�||<q~t��dSr�)r�rurvr�rr�r�rrrry}s
zTestMktemp.test_many)rr)r'r(r)r�r8r:rEr�r�ryr�rrrnrrDSs

rDc@sreZdZdZddd�Zdd�Zd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�TestNamedTemporaryFilezTest NamedTemporaryFile().NrTcCs8|durt��}tj||||d�}|�|j|||�|S)N)rJr(r7rB)rr\rUrPrI)rrJrKrLrBr�rrrr��s
�z TestNamedTemporaryFile.do_createcCrFr@r9rrrrr��rGz!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>)rrTrx�lrrRr�	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#rXrIr��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)rJrBr�z)NamedTemporaryFile %s missing after close)rrXrUrIr�r�rFr<r#rXr�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!rrrQrr�
use_closed��"�z?TestNamedTemporaryFile.test_context_manager.<locals>.use_closed)
rrUrFr<r#rXrIr�rr��rrdrrQr�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�NrL)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)rrXrkrr�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�)rrXrkrr�r�patch�	mock_open�KeyboardInterrupt�side_effectrrUr��
assert_calledrBr<r�)rrJZmock_ntfrvrrr�test_unexpected_errors �����z,TestNamedTemporaryFile.test_unexpected_error)NrrT)r'r(r)r�r�r�rMrWrYr[r]rargrlrsrzrrrrrH�s



	rHc@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*�Zd+d,�ZdS).�TestSpooledTemporaryFilezTest SpooledTemporaryFile().rNrcCs&|durt��}tj||||d�}|S)N)�max_sizerJr(r7)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#rXr�)rrJr�filenamerrrr[&s 

��z*TestSpooledTemporaryFile.test_del_on_closecCsL|jdd�}|�|j�td�D]
}|�dd�|�d�q|�|j�dS)N��r|�r�xxxxxxxxxxxxxxxxxxxx)r�r�r}rurPr�)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��
writelinesrPrBr�)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}rPrBr�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�rPrB)rrr�r�rPrrr�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�rNr�zrb+)rr`r�r�r}rBr�rKrIrr��newlinesrq�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|rqzabc
rzdef
zabc
def
�strictzxyzzy
zabc
def
xyzzy
zfoobar
zabc
def
xyzzy
foobar
)rr`r�rPrBr�r�r}r�rKrIr�r<�lineseprqr�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|�newlinerqr�uΛ
ruΜΜΜΜΜΜΜΜΜΜ
u(ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝuBΛ
ΜΜΜΜΜΜΜΜΜΜ
ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ)rr`r�rPrBr�r�r}r�rKrIr�r�rqr�rFrrrr�test_text_newline_and_encoding�s2�





�z7TestSpooledTemporaryFile.test_text_newline_and_encodingcsltjdd���|��j�|��j�Wd�n1swY|��j��fdd�}|�t|�dS)NrTr�crcr!rrrQrrrd�rezQTestSpooledTemporaryFile.test_context_manager_before_rollover.<locals>.use_closed)rr`r�r}�closedrFrr�rfrrQr�$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`crcr!rrrQrrrd�rezQTestSpooledTemporaryFile.test_context_manager_during_rollover.<locals>.use_closed)
rr`r�r}r��flushrFr�rr�rfrrQr�$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`crcr!rrrQrrrdrezPTestSpooledTemporaryFile.test_context_manager_after_rollover.<locals>.use_closed)
rr`r�r�rFr}r�r�rr�rfrrQr�#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�rP�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�r�r[r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr{s,
					 r{c@sHeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)�TestTemporaryFilezTest TemporaryFile().cCst��dSr!)rrVrrrrr�'szTestTemporaryFile.test_basiccCsJt��}tj|d�}|�d�zt�|�WdS|��t�|��r�)rrXrVr�r<r�r�rZrrr�test_has_no_name,s

z"TestTemporaryFile.test_has_no_namecCr^r_)rrVr�r�rrrrra<rbz%TestTemporaryFile.test_multiple_closecs@�fdd�}|dd�|dd�|dddd	�|d
ddd�dS)
NcsZtj|i|���}|�|�|�d���||���Wd�dS1s&wYdSr�)rrVr�rPrBr�)�inputr�r��fileobjrrr�	roundtripGs


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

z(TestTemporaryFile.test_mode_and_encodingcCrhri)rrXrkrr�rr�rVrrBr<r�r�rrrrlRrmzTestTemporaryFile.test_bad_modecCrnro)rrXrkrr�rrrrVrBr<r�r�rrrrs[rtz#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�)rrXrkrr�rrurwrxrrVryrBr<r�)rrJZmock_unlinkrvZ
mock_closerrrrzbs4���������z'TestTemporaryFile.test_unexpected_errorN)r'r(r)r�r�r�rar�rlrsrzrrrrr�$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�rJrrrr�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�eZdZdZ		d.dd�Zd/dd	�Zd
d�Zdd
�Zdd�Ze	j
dd��Ze	j
dd��Ze
�eed�d�e	j
dd���Zejdd��Zejdd��Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Ze
�eed�d�d,d-��ZdS)0�TestTemporaryDirectoryzTest TemporaryDirectory().NrrTFc	CsJ|durt��}tj||||d�}|�|j|||�|�|j|||�|S)N)rJr(r7�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#rXrI�cleanupr�r�)rrJr+rrr�test_explicit_cleanup�s��z,TestTemporaryDirectory.test_explicit_cleanupc	Cst���z}|j|dd�}t�|j�}|�|��d|�d��t|dd��}|�	d�|�
�Wd�n1s9wY|�tt
|�d	���ttj�d
��d|���|�|��tj�d
�d|�d��|�
�|�|��d|�d
��Wd�dS1s�wYdS)z=Test that cleanup doesn't return an error when ignoring them.T�rJr��TemporaryDirectory � does not exist�
a_file.txt�w+t�
Hello world!
N�*�win�1Unexpected number of files in TemporaryDirectory � existence state unexpectedz exists after cleanup)rrar�rrrIrFrXr�r�r�rBr>r��globrrr�
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�rXrFrBr�)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�rC�r�03orOc��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�rX��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�rCr�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�rCcr�r�)r�r<r#r�rIr�r�r�r�r�r�rXr��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�rCr�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#rXr��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�n1s6wY|�
tt|�
d	���ttj�d
��d|���|�
|��tj�d
�d|�d��Wd�dS1snwYdS)
z@Test that ignoring errors works when TemporaryDirectory is gced.Tr�r�r�r�r�r�Nr�r�r�r�)rrar�rrrIrFrXr�r�rBr>r�r�rrrr�r�rrr�$test_del_on_collection_ignore_errorsLs0
�

�
���

�"�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#rXrwr�)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�dS1shwYdS)z?Test ignoring errors works when a tempdir is gc'ed on shutdown.a�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�rr�r�r�r�r�r�r�	Exception�ErrorrN)rrar�rrrrr�rrBr>r�r�rrrr�rXrwr�)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�rr�r�rr
rr)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#rXrrrr�test_warnings_on_cleanup�s 
��
��"�z/TestTemporaryDirectory.test_warnings_on_cleanupcCs$|��}|��|��|��dSr!)r�r�r0rrrra�sz*TestTemporaryDirectory.test_multiple_closecCsb|��}|�}|�tj�|��|�||j�Wd�n1s!wY|�tj�|��dSr!)r�rFr<r#rXrBrIr�)rr+rIrrrrg�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�rOrrj�r�r�r�F��topdown)
rur�r�r�r<�walkrIr�r#r�r�r�rX)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)Nrpz 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)Nrrjr"Fr#)r�rrrr�r<r%rIr�r#r�r�r�rX)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�r�rZskip_unless_symlinkr�r�r�r�r�r<rrZcpython_onlyrrrrrr!rargr'rr)rrrrr��s<
�




0.

 %r��__main__)7rr��ior<rrrQr5�
contextlibr�r�rIr�rr�rZtest.supportrrrr�r�r#r�r"rr�rvZTestCaser
r,rSrir�r�r��contextmanagerr�r�r�r�r$r-r5r?rDrHr{rUrVr�r�r�r'�mainrrrr�<module>sr
23@* 
	 0 .^>M

�