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.7/test/__pycache__/test_tempfile.cpython-37.opt-1.pyc
B

��g	��@s:ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddlZddl
mZddlmZeed�r�ddlZdZndZejejkZeed�Zej�d�r�d	Znd
ZGdd�dej�ZGd
d�dej�ZGdd�de�ZGdd�de�ZGdd�de�Z Gdd�de�Z!Gdd�de�Z"e	j#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.ej/ej0k	�rGd/d0�d0e�Z1Gd1d2�d2�Z2Gd3d4�d4e�Z3e4d5k�r6e�5�dS)6�N)�mock)�support)�
script_helper�stat��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�./usr/local/lib/python3.7/test/test_tempfile.py�test_infer_return_type_singles)sz4TestLowLevelInternals.test_infer_return_type_singlesc	Csp|�tt�dd��|�tt�dd��|�t��t�dd�WdQRX|�t��t�dd�WdQRXdS)Nrr)r
rrrr�assertRaises�	TypeError)rrrr� 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�WdQRX|�t��t�ddd�WdQRXdS)Nrr)r
rrrrrr)rrrr�)test_infer_return_type_multiples_and_none6sz?TestLowLevelInternals.test_infer_return_type_multiples_and_nonecCs|�tt�t�d���dS)N�/)r
rrr�pathlib�Path)rrrr�test_infer_return_type_pathlibAsz4TestLowLevelInternals.test_infer_return_type_pathlibN)�__name__�
__module__�__qualname__rrrrrrrrr
(sr
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�setUpLs

zBaseTestCase.setUpcCs|j�ddd�dS)N)r(�__exit__)rrrr�tearDownRszBaseTestCase.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�nbaseZnpreZnsufZcheckrrr�	nameCheckUs8zBaseTestCase.nameCheckN)
rrr �re�compiler9r:r-r/rDrrrrr!Gs


r!c@seZdZdd�ZdS)�TestExportscCsttj}ddddddddddddddd�}g}x*|D]"}|ddkr2||kr2|�|�q2W|�t|�dkd|�dS)Nr)�NamedTemporaryFile�
TemporaryFile�mkstemp�mkdtempr#�TMP_MAX�
gettempprefix�gettempprefixb�
gettempdir�gettempdirb�tempdir�template�SpooledTemporaryFile�TemporaryDirectoryr�_zunexpected keys: %s)r�__dict__�appendr;r3)r�dict�expectedZunexp�keyrrr�test_exports{s*
zTestExports.test_exportsN)rrr r[rrrrrGzsrGcsReZdZdZ�fdd�Zdd�Zdd�Zdd	�Ze�	e
ed
�d�dd
��Z�Z
S)�TestRandomNameSequencez6Test the internal iterator object _RandomNameSequence.cst��|_t���dS)N)r�_RandomNameSequence�r�superr-)r)�	__class__rrr-�s
zTestRandomNameSequence.setUpcCst|j�}|�|ddd�dS)Nr)�nextr^rD)r�srrr�test_get_six_char_str�s
z,TestRandomNameSequence.test_get_six_char_strcCsLi}|j}x<tt�D]0}t|�}|�|ddd�|�||�d||<qWdS)Nrr)r^�range�
TEST_FILESrarD�assertNotIn)rrXr^�irbrrr�	test_many�sz TestRandomNameSequence.test_manycCs.d}|j}x|D]}|d7}|dkrPqWdS)Nrr�)r^)rrgr^rbrrr�
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�}Wd|r�yt�|t
j�Wntk
r�YnXt�|d�t�|�t�|�X|�||�dS)N�asciir)r0�piperk�close�writerar^�encode�_exit�readr3�decode�kill�signal�SIGKILL�OSError�waitpid�assertNotEqual)rZread_fdZwrite_fd�pidZparent_valueZchild_valuerrr�test_process_awareness�s(




z-TestRandomNameSequence.test_process_awareness)rrr �__doc__r-rcrhrj�unittest�
skipUnless�hasattrr0r{�
__classcell__rr)r`rr\�s
r\c@s eZdZdZdd�Zdd�ZdS)�TestCandidateTempdirListz3Test the internal function _candidate_tempdir_list.cCs8t��}|�t|�dk�x|D]}|�|t�q WdS)Nr)r�_candidate_tempdir_list�assertFalser3�assertIsInstancer)r�cand�crrr�test_nonempty_list�s
z+TestCandidateTempdirList.test_nonempty_listc
Cs�t����}x*dD]"}t�|�}|stj�|�||<qWt��}x*dD]"}t�|�}|sZt�|�	||�qDWyt�
�}Wnttfk
r�tj
}YnX|�	||�WdQRXdS)N)�TMPDIRZTEMPZTMP)r�EnvironmentVarGuardr0�getenvr1r8rr��
ValueError�assertIn�getcwd�AttributeErrorrw�curdir)r�envZenvname�dirnamer�rrr�test_wanted_dirs�s 




z)TestCandidateTempdirList.test_wanted_dirsN)rrr 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��WdQRX|�t���g�WdQRX��fdd�}t�td|��6�|�	t
��t��WdQRX|�t���g�WdQRXWdQRXWdQRXdS)	Ncs�gS)Nrr)�our_temp_directoryrr�our_candidate_listszKTestGetDefaultTempdir.test_no_files_left_behind.<locals>.our_candidate_listr�c_s
t��dS)N)rw)�args�kwargsrrr�
raise_OSErrorszFTestGetDefaultTempdir.test_no_files_left_behind.<locals>.raise_OSError�opencs�||�}�|_|S)N)ro)r�r��fp)�	orig_openr�rr�
bad_writer#s
zCTestGetDefaultTempdir.test_no_files_left_behind.<locals>.bad_writer)rrTr�	swap_attrZ_get_default_tempdirr7r0�listdir�ior�FileNotFoundError)rr�r�r)r�r�r�r�test_no_files_left_behind
s 
z/TestGetDefaultTempdir.test_no_files_left_behindN)rrr r|r�rrrrr�
sr�c@s eZdZdZdd�Zdd�ZdS)�TestGetCandidateNamesz0Test the internal function _get_candidate_names.cCst��}|�|tj�dS)N)r�_get_candidate_namesr�r])r�objrrr�test_retval2sz!TestGetCandidateNames.test_retvalcCs"t��}t��}|�||k�dS)N)rr�r;)r�a�brrr�test_same_thing7sz%TestGetCandidateNames.test_same_thingN)rrr r|r�r�rrrrr�/sr�c	cs>t��}z$t�td|��dVWdQRXWdt�|�XdS)NrQ)rrKrr��rmtree)r?rrr�_inside_empty_temp_dir?s
r�cst�td�fdd��S)Nr�cst��S)N)�iterr)�namesrr�<lambda>Lrz'_mock_candidate_names.<locals>.<lambda>)rr�r)r�r)r�r�_mock_candidate_namesIsr�c@s$eZdZdd�Zdd�Zdd�ZdS)�TestBadTempdircCs�t���t�tj�j}}|tjtjBtjBM}t�	tj|�zPt�
tjtj�r\|�d�|�
t��|��WdQRX|�t�tj�g�Wdt�	tj|�XWdQRXdS)Nz!can't set the directory read-only)r�r0rrrQ�st_mode�S_IWUSR�S_IWGRP�S_IWOTH�chmod�access�W_OKZskipTestr�PermissionError�	make_tempr7r�)rZoldmode�moderrr�test_read_only_directoryQs
z'TestBadTempdir.test_read_only_directorycCs^t��Ntj�tjd�}t�td|��$|�t	��|�
�WdQRXWdQRXWdQRXdS)N�nonexistentrQ)r�r0r1�joinrrQrr�rr�r�)rrQrrr�test_nonexisting_directory_s
z)TestBadTempdir.test_nonexisting_directorycCspt��`tj�tjd�}t|d���t�	td|��(|�
ttf��|�
�WdQRXWdQRXWdQRXdS)N�file�wbrQ)r�r0r1r�rrQr�rnrr�r�NotADirectoryErrorr�r�)rrQrrr�test_non_directoryfsz!TestBadTempdir.test_non_directoryN)rrr r�r�r�rrrrr�Osr�c@s�eZdZdZGdd�d�Zddd�Zdd	�Zd
d�Zdd
�Zdd�Z	e
�ed�dd��Z
e
�ed�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�|||||�\|_|_dS)N)�_bflags�_tflagsrr�_mkstemp_inner�fdr>)rr?r@rA�bin�flags�output_typerrr�__init__xs
z#TestMkstempInner.mkstemped.__init__cCst�|j|�dS)N)r0ror�)rrrrrrosz TestMkstempInner.mkstemped.writecCs|�|j�|�|j�dS)N)�_closer��_unlinkr>)rrrr�__del__�sz"TestMkstempInner.mkstemped.__del__N)rrr r�_bin_openflagsr��_text_openflagsr�r0rnr��unlinkr�r�ror�rrrr�	mkstempedrsr�NrcCsrt�|||�}|dkr0|tkr(t��}nt��}|dkr>|�}|dkrL|�}|�||||�}|�|j|||�|S)N)rrrrOrPr�rDr>)rr?r@rAr�r�r�rrr�	do_create�s
zTestMkstempInner.do_createcCs^|���d�|jdd��d�|jdd��d�|jddd��d�|jddd��d�dS)	Nsblatr�)r@r�)rA)r@rA�aaz.txt)r�ro)rrrr�
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�WdQRX|�t��|j|d
d��d�WdQRX|�t��|j|dd
d��d�WdQRXdS)Nr)r?rAsblat�a)r?r@�b)r?r@rAsaas.txtr)rrPr�rorr)rZdir_brrr�test_basic_with_bytes_names�sz,TestMkstempInner.test_basic_with_bytes_namescCs.ttt��}x|D]}|jdd�||<qWdS)Nr�)r@)�listrdrer�)r�extantrgrrr�test_basic_many�s
z TestMkstempInner.test_basic_manyc	CsHt��}z.|j|d��d�|jt�|�d��d�Wdt�|�XdS)N)r?sblat)rrKr�rorrr0�rmdir)rr?rrr�test_choose_directory�s
z&TestMkstempInner.test_choose_directoryzos.stat not availablecCsJ|��}t�t�|j�j�}d}tjdkr:|d?}|d}|�||�dS)Ni��win32��I)	r�r�S_IMODEr0r>r��sys�platformr7)rr�r�rY�userrrr�test_file_mode�s
zTestMkstempInner.test_file_modezos.spawnl not availablecCs�tjrd}nd}|��}|�t�|j�d�d|j}yt}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�r7r0�get_inheritabler��__file__�	NameErrorr��argvr1r�r�r8r��
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
risblat)r�ror0�lseekr��SEEK_SETr7rr)r�frrr�
test_textmode�s


zTestMkstempInner.test_textmodecCst�t��t��dtjt�S)Nr)rr�rOrMr�r)rrrrr��s

zTestMkstempInner.make_tempc
Cszt��jtddd��R|��\}}t�|�|�|�d��|��\}}t�|�|�|�d��WdQRXWdQRXdS)N�aaa�bbb)r�r�r�r0rnr;�endswith)rZfd1Zname1Zfd2Zname2rrr�!test_collision_with_existing_files

z2TestMkstempInner.test_collision_with_existing_filec
Cslt��\tddd��Dt��}|�|�d��|��\}}t�|�|�|�d��WdQRXWdQRXdS)Nr�r�)	r�r�rrKr;r�r�r0rn)rr?r�r>rrr�&test_collision_with_existing_directorys
z7TestMkstempInner.test_collision_with_existing_directory)NNNr)rrr r|r�r�r�r�r�r�r}r~�has_statr��
has_spawnlr��has_textmoder�r�r�r�rrrrr�os
	&
r�c@s eZdZdZdd�Zdd�ZdS)�TestGetTempPrefixzTest gettempprefix().cCsLt��}|�|t�|�t|�d�t��}|�|t�|�t|�d�dS)Nr)rrMr�rZ
assertGreaterr3rNr)r�pZpbrrr�test_sane_template!sz$TestGetTempPrefix.test_sane_templatec	Csdt��d}tjdd�}z:tj�||�}t�|tjtjB�}t�	|�t�
|�Wdt�|�XdS)Nz
xxxxxx.xxxr)�prefix)rrMrKr0r1r�r��O_RDWR�O_CREATrnr�r�)rr��dr�rrr�test_usable_template-s
z&TestGetTempPrefix.test_usable_templateN)rrr r|r�rrrrrr�sr�c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�TestGetTempDirzTest gettempdir().cCsXxRt��t��fD]>}|�tj�|�p.|tjkd|�|�tj�|�d|�qWdS)Nz%r is not an absolute pathz%r is not a directory)	rrOrPr;r0r1�isabsr��isdir)rrrrr�test_directory_existsAs

z$TestGetTempDir.test_directory_existscCst��}|�d�|��dS)Nsblat)rrHrorn)rr�rrr�test_directory_writableJs
z&TestGetTempDir.test_directory_writablecCsPt��}t��}t��}|�||k�|�t|�t|��|�|t�|��dS)N)	rrOrPr;ryr4r7r0�fsdecode)rr�r�r�rrrr�TszTestGetTempDir.test_same_thingc	Cs`t�d�}tjd}t_z0t���}||d<|�t��|�WdQRXWd|t_t�|�XdS)Nz-Tempr�)rrKrQrr�r7rOr�)rZcase_sensitive_tempdirZ_tempdirr�rrr�test_case_sensitive^s

z"TestGetTempDir.test_case_sensitiveN)rrr r|rrr�r
rrrrr>s
	

rc@s2eZdZdZddd�Zdd�Zdd�Zd	d
�ZdS)�TestMkstempzTest mkstemp().Nc
	Cs�t�|||�}|dkr0|tkr(t��}nt��}|dkr>|�}|dkrL|�}tj|||d�\}}tj�|�\}}tj�	|�}	|�
|	|d|	|f�z|�||||�Wdt�|�t�
|�XdS)N)r?r��suffixz+Directory '%s' incorrectly returned as '%s')rrrrOrPrJr0r1r2r8r7rDrnr�)
rr?r@rAr�r�r>rBrCZadirrrrr�ps$

zTestMkstemp.do_createcCsL|��|jdd�|jdd�|jddd�|jddd�|jdd	�dS)
Nr�)r@r�)rA)r@rAr�z.txt�.)r?)r�)rrrrr��szTestMkstemp.test_basicc	Cs�t��}|j|dd�|j|dd�|j|dd�|j|ddd�|j|ddd�|jd	d
�|�t��|jdddd�WdQRX|�t��|jd	ddd�WdQRX|�t��|jd	dd
d�WdQRXdS)Nr)r?rAr�)r?r@r�)r?r@rAsaas.txt�.)r?r
r�z.txt)rrPr�rr)rrrrrr��sz'TestMkstemp.test_basic_with_bytes_namesc	Cs<t��}z"|j|d�|jt�|�d�Wdt�|�XdS)N)r?)rrKr�rrr0r�)rr?rrrr��s
z!TestMkstemp.test_choose_directory)NNN)rrr r|r�r�r�r�rrrrrms

	rc@sfeZdZdZdd�Zddd�Zdd�Zd	d
�Zdd�Zd
d�Z	e
�ed�dd��Z
dd�Zdd�ZdS)�TestMkdtempzTest mkdtemp().cCst��S)N)rrK)rrrrr��szTestMkdtemp.make_tempNcCs�t�|||�}|dkr0|tkr(t��}nt��}|dkr>|�}|dkrL|�}tj|||d�}y|�||||�|St�|��YnXdS)N)r?r�r)	rrrrOrPrKrDr0r�)rr?r@rAr�r>rrrr��s 

zTestMkdtemp.do_createcCs^t�|���t�|jdd��t�|jdd��t�|jddd��t�|jddd��dS)Nr�)r@r�)rA)r@rAr�z.txt)r0r�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��WdQRX|�t��t�|j|dd
d��WdQRX|�t��t�|jdddd��WdQRXdS)N)r?r�)r?r@r�)r?rA)r?r@rAsaas.txtr�z.txtr)rrPr0r�r�rr)rrrrrr��s  z'TestMkdtemp.test_basic_with_bytes_namesc
CsXttt��}z"x|D]}|jdd�||<qWWdx |D]}t|t�r6t�|�q6WXdS)Nr�)r@)r�rdrer�r5rr0r�)rr�rgrrrr��s


zTestMkdtemp.test_basic_manyc	CsHt��}z.t�|j|d��t�|jt�|�d��Wdt�|�XdS)N)r?)rrKr0r�r�rr)rr?rrrr��s
z!TestMkdtemp.test_choose_directoryzos.stat not availablec	Csb|��}zHt�t�|�j�}|dM}d}tjdkrB|d?}|d}|�||�Wdt�|�XdS)Ni�i�r�r�r�)	r�rr�r0r�r�r�r7r�)rr?r�rYr�rrr�	test_mode�s
zTestMkdtemp.test_modec
Cslt��\tddd��Dtjdd�}|��|�|j�d��t��}|�|�d��WdQRXWdQRXdS)Nr�r�F)�delete)	r�r�rrHrnr;r>r�rK)rr�r?rrrr�sz-TestMkdtemp.test_collision_with_existing_filec
Cs^t��Ntddd��6t��}|�|�d��t��}|�|�d��WdQRXWdQRXdS)Nr�r�)r�r�rrKr;r�)rZdir1Zdir2rrrr�sz2TestMkdtemp.test_collision_with_existing_directory)NNN)rrr r|r�r�r�r�r�r�r}r~r�rr�r�rrrrr�s
	rcsTeZdZdZ�fdd�Z�fdd�ZGdd�d�Zdd	d
�Zdd�Zd
d�Z	�Z
S)�
TestMktempzTest mktemp().cst��|_t���dS)N)rrKr?r_r-)r)r`rrr-s
zTestMktemp.setUpcs&|jrt�|j�d|_t���dS)N)r?r0r�r_r/)r)r`rrr/"szTestMktemp.tearDownc@s(eZdZejZejZdd�Z	dd�Z
dS)zTestMktemp.mktempedcCs.tj|||d�|_t�t�|j|jd��dS)N)r?r�ri�)rr#r>r0rnr�r�)rr?r@rArrrr�,szTestMktemp.mktemped.__init__cCs|�|j�dS)N)r�r>)rrrrr�2szTestMktemp.mktemped.__del__N)rrr r0r�r�rr�r�r�r�rrrr�mktemped(srrcCs(|�|j||�}|�|j|j||�|S)N)rr?rDr>)rr@rAr�rrrr�5szTestMktemp.do_createcCs@|��|jdd�|jdd�|jddd�|jddd�dS)Nr�)r@r�)rA)r@rAr�z.txt)r�)rrrrr�;s
zTestMktemp.test_basiccCs.ttt��}x|D]}|jdd�||<qWdS)Nr�)r@)r�rdrer�)rr�rgrrrrhCs
zTestMktemp.test_many)rr)rrr r|r-r/rr�r�rhr�rr)r`rrs
rc@sjeZdZdZddd�Zdd�Zd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�TestNamedTemporaryFilezTest NamedTemporaryFile().NrTcCs8|dkrt��}tj||||d�}|�|j|||�|S)N)r?r�rr)rrOrHrDr>)rr?r@rArr�rrrr�Xs
z TestNamedTemporaryFile.do_createcCs@|��|jdd�|jdd�|jddd�|jddd�dS)Nr�)r@r�)rA)r@rAr�z.txt)r�)rrrrr�bs
z!TestNamedTemporaryFile.test_basiccCsP|��}t�|�}|j}|j}~|d�~|d�~tjdd�rL|�|��dS)NsfoosbarT)Zcpython)r��weakref�refrorZcheck_impl_detail�assertIsNone)rr��wrroZwrite2rrr�test_method_lookupjs
z)TestNamedTemporaryFile.test_method_lookupcsVdddg��fdd�}x&t|��D]\}}|�|�|�q"W|�|t��d�dS)Nsspam
seggs
sbeans
cs*tjdd�}|�d����|�d�|S)Nzw+b)r�rr)rrHror��seek)r�)�linesrr�	make_file~s
z3TestNamedTemporaryFile.test_iter.<locals>.make_filer)�	enumerater7r3)rrrg�lr)rr�	test_iterzs

z TestNamedTemporaryFile.test_itercCs(t��}|�tj�|j�d|j�dS)Nz$NamedTemporaryFile %s does not exist)rrHr;r0r1�existsr>)rr�rrr�test_creates_named�sz)TestNamedTemporaryFile.test_creates_namedc	CsXt��}z>tj|d�}|�d�|��|�tj�|j	�d|j	�Wdt�
|�XdS)N)r?sblatz(NamedTemporaryFile %s exists after close)rrKrHrornr�r0r1r r>r�)rr?r�rrr�test_del_on_close�s
z(TestNamedTemporaryFile.test_del_on_closec	Csvt��}d}zFtj|dd�}|j}|�d�|��|�tj�	|j�d|j�Wd|dk	rft�
|�t�|�XdS)NF)r?rsblatz)NamedTemporaryFile %s missing after close)rrKrHr>rornr;r0r1r r�r�)rr?�tmpr�rrr�test_dis_del_on_close�s

z,TestNamedTemporaryFile.test_dis_del_on_closecCs.t��}|�d�|��|��|��dS)Nsabc
)rrHrorn)rr�rrr�test_multiple_close�s

z*TestNamedTemporaryFile.test_multiple_closec	sXt����|�tj��j��WdQRX|�tj��j���fdd�}|�t	|�dS)Nc	s��WdQRXdS)Nrr)r�rr�
use_closed�sz?TestNamedTemporaryFile.test_context_manager.<locals>.use_closed)
rrHr;r0r1r r>r�rr�)rr&r)r�r�test_context_manager�s

z+TestNamedTemporaryFile.test_context_managerc
sng�tj���fdd�}tjd|d��>tjdtd��$|�ttj�|�t	��d�WdQRXWdQRXdS)Ncs��|��|�dS)N)rW)r�)�closed�os_closerrrn�s
z5TestNamedTemporaryFile.test_no_leak_fd.<locals>.closezos.close)�side_effectzio.openr)
r0rnr�patchr�rrrHr7r3)rrnr)r(r)r�test_no_leak_fd�sz&TestNamedTemporaryFile.test_no_leak_fdc	Cstt��}|�tj|�|�t��tjd|d�WdQRX|�t��tjd|d�WdQRX|�	t
�|�g�dS)Nr)r�r?�)rrKZ
addCleanuprr�rr�rHrr7r0r�)rr?rrr�
test_bad_mode�sz$TestNamedTemporaryFile.test_bad_mode)NrrT)rrr r|r�r�rrr!r"r$r%r'r,r.rrrrrUs




rc@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().rNrcCs&|dkrt��}tj||||d�}|S)N)�max_sizer?r�r)rrOrS)rr0r?r@rAr�rrrr��sz"TestSpooledTemporaryFile.do_createcCs4|��}|�|j�|jdddd�}|�|j�dS)Nr	r�z.txt)r0r@rA)r�r��_rolled)rr�rrrr��sz#TestSpooledTemporaryFile.test_basicc	Cs~t��}zdtjd|d�}|�|j�|�d�|�|j�|j}|��|�t	|t
�o`tj�
|�d|�Wdt�|�XdS)N�
)r0r?sblat blat blat blat blat z*SpooledTemporaryFile %s exists after close)rrKrSr�r1ror;r>rnr5rr0r1r r�)rr?r��filenamerrrr"�s
z*TestSpooledTemporaryFile.test_del_on_closecCsP|jdd�}|�|j�x&td�D]}|�dd�|�d�q"W|�|j�dS)N�)r0�rsxxxxxxxxxxxxxxxxxxxx)r�r�r1rdrro)rr�rgrrr�test_rewrite_small�sz+TestSpooledTemporaryFile.test_rewrite_smallcCs^|jdd�}|�|j�|�d�|�|j�|�d�|�|j�|�d�|�|j�dS)Nr4)r0sxxxxxxxxxxxxxxxxxxxxs
xxxxxxxxxx�x)r�r�r1ror;)rr�rrr�test_write_sequential�s


z.TestSpooledTemporaryFile.test_write_sequentialcCs@|��}|�d�|�d�}|�|d�|��}|�|d�dS)N)r7�y�zrsxyz)r��
writelinesrr7rr)rr��pos�bufrrr�test_writelines	s

z(TestSpooledTemporaryFile.test_writelinescCs<|jdd�}|�d�|�|j�|�d�|�|j�dS)N�#)r0)sxxxxxxxxxxxxxxxxxxxxs
xxxxxxxxxxsxxxxxr7)r�r;r�r1ror;)rr�rrr�test_writelines_sequentials


z3TestSpooledTemporaryFile.test_writelines_sequentialcCsV|jdd�}|�|j�|�dd�}|�|d�|�|j�|�d�|�|j�dS)Nr4)r0r	rr7)r�r�r1rr7ror;)rr�r<rrr�test_sparses
z$TestSpooledTemporaryFile.test_sparsecCs:|jdd�}|�|j�|�|��dk�|�|j�dS)Nr4)r0r)r�r�r1r;�fileno)rr�rrr�test_fileno&sz$TestSpooledTemporaryFile.test_filenocCs:t��}|�d�|�|j�|��|��|��dS)Nsabc
)rrSror�r1rn)rr�rrr�#test_multiple_close_before_rollover-s
z<TestSpooledTemporaryFile.test_multiple_close_before_rollovercCs>tjdd�}|�d�|�|j�|��|��|��dS)Nr)r0sabc
)rrSror;r1rn)rr�rrr�"test_multiple_close_after_rollover6s
z;TestSpooledTemporaryFile.test_multiple_close_after_rollovercCsL|jdd�}|j}|j}|j}|d�|d�|dd�|�|d�d�dS)Nr4)r0s#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas#bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr�FsFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)r�rrrorr7)rr�rrrorrrr�test_bound_methods?s
z+TestSpooledTemporaryFile.test_bound_methodsc	Cs�tjdd�}|�d�|�|j�|�|jd�|�|j�|�	t
��|jWdQRX|�	t
��|jWdQRX|�d�|�
|j�|�|jd�|�|j�|�	t
��|jWdQRX|�	t
��|jWdQRXdS)Nr2)r0s
xxxxxxxxxxzw+br7zrb+)rrSror�r1r7r�rr>rr��newlines�encodingr;�assertIsNotNone)rr�rrr�test_propertiesMs"

z(TestSpooledTemporaryFile.test_propertiescCs,tjdddd�}|�d�|�d�|�|��d�|�d�|�d�|�|��d�|�|j�|�|jd�|�	|j
�|�|jtj
�|�|jd�|�d	�|�d�|�|��d
�|�d�|�d�|�|��d�|�|j�|�|jd�|�|j
�|�|jtj
�|�|jd�dS)
Nzw+r2zutf-8)r�r0rIzabc
rzdef
zabc
def
zxyzzy
zabc
def
xyzzy
zfoobar
zabc
def
xyzzy
foobar
)rrSrorr7rrr�r1r�rr>rHr0�lineseprIr;rJ)rr�rrr�test_text_modeas0







z'TestSpooledTemporaryFile.test_text_modecCs�tjddddd�}|�d�|�d�|�|��d�|�|j�|�|jd�|�	|j
�|�|j�|�|j
d�|�d�|�d	�|�d�|�|��d
�|�|j�|�|jd�|�|j
�|�|j�|�|j
d�dS)Nzw+r2rzutf-8)r�r0�newlinerIuΛ
ruΜΜΜΜΜΜΜΜΜΜ
u(ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝuBΛ
ΜΜΜΜΜΜΜΜΜΜ
ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ)rrSrorr7rrr�r1r�rr>rJrHrIr;)rr�rrr�test_text_newline_and_encodings(






z7TestSpooledTemporaryFile.test_text_newline_and_encodingc	sXtjdd���|��j�|��j�WdQRX|��j��fdd�}|�t|�dS)Nr)r0c	s��WdQRXdS)Nrr)r�rrr&�szQTestSpooledTemporaryFile.test_context_manager_before_rollover.<locals>.use_closed)rrSr�r1r(r;rr�)rr&r)r�r�$test_context_manager_before_rollover�sz=TestSpooledTemporaryFile.test_context_manager_before_rolloverc	svtjdd��<�|��j���d����|��j�|��j�WdQRX|��j��fdd�}|�t	|�dS)Nr)r0sabc
c	s��WdQRXdS)Nrr)r�rrr&�szQTestSpooledTemporaryFile.test_context_manager_during_rollover.<locals>.use_closed)
rrSr�r1ro�flushr;r(rr�)rr&r)r�r�$test_context_manager_during_rollover�s
z=TestSpooledTemporaryFile.test_context_manager_during_rolloverc	sntjdd����d����|��j���|��j�WdQRX|��j��fdd�}|�t	|�dS)Nr)r0sabc
c	s��WdQRXdS)Nrr)r�rrr&�szPTestSpooledTemporaryFile.test_context_manager_after_rollover.<locals>.use_closed)
rrSrorQr;r1r�r(rr�)rr&r)r�r�#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�tr�|�t�
|���jd�dS)	Nr2)r0sabcdefg
rr�sabcdri)rrSror�truncater�r1r7Z_file�getvaluer;r�r0�fstatrB�st_size)rr�rrr�!test_truncate_with_size_parameter�s"





z:TestSpooledTemporaryFile.test_truncate_with_size_parameter)rNrr)rrr r|r�r�r"r6r8r>r@rArCrDrErGrKrMrOrPrRrSrYrrrrr/�s(
					r/c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�TestTemporaryFilezTest TemporaryFile().cCst��dS)N)rrI)rrrrr��szTestTemporaryFile.test_basiccCsRt��}tj|d�}|�d�yt�|�Wn |��t�|��YnXdS)N)r?sblat)rrKrIror0r�rn)rr?r�rrr�test_has_no_name�s

z"TestTemporaryFile.test_has_no_namecCs.t��}|�d�|��|��|��dS)Nsabc
)rrIrorn)rr�rrrr%�s

z%TestTemporaryFile.test_multiple_closecs@�fdd�}|dd�|dd�|dddd	�|d
ddd�dS)
Nc	s@tj||��*}|�|�|�d���||���WdQRXdS)Nr)rrIrorr7rr)�inputr�r�Zfileobj)rrr�	roundtrip�s

z;TestTemporaryFile.test_mode_and_encoding.<locals>.roundtrips1234zw+bzabdc
zw+uΛzutf-16)rIzfoo
r)rNr)rr]r)rr�test_mode_and_encoding�s


z(TestTemporaryFile.test_mode_and_encodingc
sng�tj���fdd�}tjd|d��>tjdtd��$|�ttj�|�t	��d�WdQRXWdQRXdS)Ncs��|��|�dS)N)rW)r�)r(r)rrrns
z0TestTemporaryFile.test_no_leak_fd.<locals>.closezos.close)r*zio.openr)
r0rnrr+r�rrrIr7r3)rrnr)r(r)rr,sz!TestTemporaryFile.test_no_leak_fdN)	rrr r|r�r[r%r^r,rrrrrZ�s	
rZc@s$eZdZdd�Zdd�Zdd�ZdS)�
NulledModulescGs&dd�|D�|_dd�|jD�|_dS)NcSsg|]
}|j�qSr)rV)�.0�modrrr�
<listcomp>sz*NulledModules.__init__.<locals>.<listcomp>cSsg|]}|���qSr)�copy)r`rrrrrbs)�refs�contents)r�modulesrrrr�szNulledModules.__init__cCs*x$|jD]}x|D]}d||<qWqWdS)N)rd)rrrZrrrr)s
zNulledModules.__enter__cGs2x,t|j|j�D]\}}|��|�|�qWdS)N)�ziprdre�clear�update)r�exc_inforr�rrrr.szNulledModules.__exit__N)rrr r�r)r.rrrrr_sr_c@sneZdZdZddd�Zdd�Zd	d
�Zejdd��Z	ej
d
d��Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�TestTemporaryDirectoryzTest TemporaryDirectory().Nrrc	Cs�|dkrt��}tj|||d�}|�|j|||�|rR|�|j|||d�}d|_ttj�	|jd�d��}|�
d�WdQRX|S)N)r?r�rrztest.txtr�sHello world!)rrOrTrDr>r�r�r0r1r�ro)rr?r@rA�recurser#�d1r�rrrr�&sz TestTemporaryDirectory.do_createc	CsLt���}WdQRX|�t��}tj|d�WdQRX|�|jjtj�dS)N)r?)rrTrr�r7Z	exception�errno�ENOENT)rr��cmrrr�test_mkdtemp_failure3s


z+TestTemporaryDirectory.test_mkdtemp_failurec	Csjt��}zP|j|d�}|�tj�|j�d|j�|��|�	tj�|j�d|j�Wdt�
|�XdS)N)r?z$TemporaryDirectory %s does not existz*TemporaryDirectory %s exists after cleanup)rrKr�r;r0r1r r>�cleanupr�r�)rr?rrrr�test_explicit_cleanup=sz,TestTemporaryDirectory.test_explicit_cleanupcCs�|��}|jdd�}t�|jtj�|jd��|��|�tj�|j�d|j�|�	tj�|j�d�|�
t�|j�dgd�|��dS)Nr)rlZfooz*TemporaryDirectory %s exists after cleanupz-Directory pointed to by a symlink was deletedztest.txtz>Contents of the directory pointed to by a symlink were deleted)r�r0�symlinkr>r1r�rrr�r r;r7r�)rrmZd2rrr�(test_cleanup_with_symlink_to_a_directoryJsz?TestTemporaryDirectory.test_cleanup_with_symlink_to_a_directoryc	CsJt��}z0|j|d�}|j}~|�tj�|�d|�Wdt�|�XdS)N)r?z*TemporaryDirectory %s exists after __del__)	rrKr�r>r�r0r1r r�)rr?rr>rrr�test_del_on_collection_sz-TestTemporaryDirectory.test_del_on_collectionc	Cs�|���|}xtdD]l}dj||d�}t�d|�\}}}|����}|�tj�	|�d|�|�dd�}|�
d|�|�d	|�qWWdQRXdS)
N)�builtinsr0Zshutilr�rr*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, "test.txt"), "w") as f:
                        f.write("Hello world!")

                    {mod}.tmp = tmp

                    warnings.filterwarnings("always", category=ResourceWarning)
                    )r?raz-cz*TemporaryDirectory %s exists after cleanupzutf-8�backslashreplacez
Exception z'ResourceWarning: Implicitly cleaning up)r��formatr�assert_python_okrs�stripr�r0r1r rfr�)rr?ra�code�rc�out�err�tmp_namerrr�test_del_on_shutdownls


z+TestTemporaryDirectory.test_del_on_shutdownc	Cs~|���l}dj|d�}t�d|�\}}}|����}|�tj�	|�d|�|�dd�}|�
d|�|�d|�WdQRXdS)	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?z-cz*TemporaryDirectory %s exists after cleanupzutf-8rxz
Exception z'ResourceWarning: Implicitly cleaning up)r�ryrrzrsr{r�r0r1r rfr�)rr?r|r}r~rr�rrr�test_exit_on_shutdown�s


z,TestTemporaryDirectory.test_exit_on_shutdownc
Csz|���h}|j|dd�}|j}tjdtfdd��tjdtd�~t��WdQRX|�t	j
�|�d|�WdQRXdS)	N�)r?rlZ
ImplicitlyF)�quiet�always)r$z*TemporaryDirectory %s exists after __del__)r�r>rr'�ResourceWarningr*r+Z
gc_collectr�r0r1r )rr?rr>rrr�test_warnings_on_cleanup�s
z/TestTemporaryDirectory.test_warnings_on_cleanupcCs$|��}|��|��|��dS)N)r�rr)rrrrrr%�sz*TestTemporaryDirectory.test_multiple_closec	CsN|��}|�&}|�tj�|��|�||j�WdQRX|�tj�|��dS)N)r�r;r0r1r r7r>r�)rrr>rrrr'�s
z+TestTemporaryDirectory.test_context_manager)Nrrr)rrr r|r�rqrsrZskip_unless_symlinkruZcpython_onlyrvr�r�r�r%r'rrrrrk#s




 rk�__main__)6rrnr�r0rrur�rEr*�
contextlibrr}rZtestrZtest.supportrrrr�r�r�r�r�r��
startswithreZTestCaser
r!rGr\r�r�r��contextmanagerr�r�r�r�r�rrrrrr/rHrIrZr_rkr�mainrrrr�<module>sf

3H*%
 0 /?m<~>