Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_tempfile.cpython-311.opt-1.pyc
�

�Ke\����ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlZddlmZddlmZddlmZddlmZejejkZeed��Zej�d��rd	Znd
ZGd�dej��ZGd
�dej��ZGd�de��ZGd�de��Z Gd�de��Z!Gd�de��Z"Gd�de��Z#ej$d���Z%d�Z&Gd�d��Z'Gd�de'e��Z(Gd�d e��Z)Gd!�d"e��Z*Gd#�d$e��Z+Gd%�d&e'e��Z,Gd'�d(e��Z-Gd)�d*e��Z.Gd+�d,e��Z/ej0ej1urGd-�d.e��Z2Gd/�d0��Z3Gd1�d2e��Z4e5d3krej6��dSdS)4�N)�mock)�support)�	os_helper)�
script_helper)�warnings_helper�spawnl�openbsd�0�dc�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�TestLowLevelInternalsc��|�ttjd����|�ttjd����|�ttjd����dS�N��)�assertIs�str�tempfile�_infer_return_type�bytes��selfs �</usr/local/apps/python3/lib/python3.11/test/test_tempfile.py�test_infer_return_type_singlesz4TestLowLevelInternals.test_infer_return_type_singles&se���
�
�c�8�6�r�:�:�;�;�;��
�
�e�X�8��=�=�>�>�>��
�
�c�8�6�t�<�<�=�=�=�=�=rc���|�ttjdd����|�ttjdd����|�t��5tjdd��ddd��n#1swxYwY|�t��5tjdd��ddd��dS#1swxYwYdSr�rrrrr�assertRaises�	TypeErrorrs r� test_infer_return_type_multiplesz6TestLowLevelInternals.test_infer_return_type_multiples+sK���
�
�c�8�6�r�2�>�>�?�?�?��
�
�e�X�8��c�B�B�C�C�C�
�
�
�y�
)�
)�	1�	1��'��C�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�
�
�
�y�
)�
)�	1�	1��'��R�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s$�7B�B� B�>C!�!C%�(C%c���|�ttjdd����|�ttjdd����|�ttjdd����|�ttjdd����|�ttjdd����|�t��5tjddd��ddd��n#1swxYwY|�t��5tjddd��ddd��dS#1swxYwYdSrrrs r�)test_infer_return_type_multiples_and_nonez?TestLowLevelInternals.test_infer_return_type_multiples_and_none3s����
�
�c�8�6�t�R�@�@�A�A�A��
�
�c�8�6�r�4�@�@�A�A�A��
�
�c�8�6�t�T�B�B�C�C�C��
�
�e�X�8��d�C�C�D�D�D��
�
�e�X�8��s�C�C�D�D�D�
�
�
�y�
)�
)�	7�	7��'��D�#�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�
�
�
�y�
)�
)�	7�	7��'��T�2�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s$�D$�$D(�+D(�	E-�-E1�4E1c��|�ttjt	jd������dS)N�/)rrrr�pathlib�Pathrs r�test_infer_return_type_pathlibz4TestLowLevelInternals.test_infer_return_type_pathlib>s1���
�
�c�8�6�w�|�C�7H�7H�I�I�J�J�J�J�Jrc	���Gd�d��}|�ttj|d������|�ttj|d������|�ttjd|d������|�ttjd|d������|�ttjd|d������|�ttjd|d������|�t��5tjd|d����ddd��n#1swxYwY|�t��5tjd|d����ddd��dS#1swxYwYdS)Nc��eZdZd�Zd�ZdS)�CTestLowLevelInternals.test_infer_return_type_pathlike.<locals>.Pathc��||_dS�N��path)rr-s  r�__init__zLTestLowLevelInternals.test_infer_return_type_pathlike.<locals>.Path.__init__Cs
�� ��	�	�	rc��|jSr+r,rs r�
__fspath__zNTestLowLevelInternals.test_infer_return_type_pathlike.<locals>.Path.__fspath__Fs
���y� rN)�__name__�
__module__�__qualname__r.r0�rrr%r)Bs2������
!�
!�
!�
!�
!�
!�
!�
!rr%r#�/rrr)rr%s  r�test_infer_return_type_pathlikez5TestLowLevelInternals.test_infer_return_type_pathlikeAs5��	!�	!�	!�	!�	!�	!�	!�	!�	
�
�
�c�8�6�t�t�C�y�y�A�A�B�B�B��
�
�e�X�8���d���D�D�E�E�E��
�
�c�8�6�r�4�4��8�8�D�D�E�E�E��
�
�e�X�8��d�d�3�i�i�H�H�I�I�I��
�
�e�X�8��t�t�C�y�y�I�I�J�J�J��
�
�c�8�6�t�T�T�"�X�X�F�F�G�G�G�
�
�
�y�
)�
)�	7�	7��'��D�D��I�I�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�
�
�
�y�
)�
)�	7�	7��'��T�T�"�X�X�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s$�0F�F�"F�G,�,G0�3G0N)r1r2r3rrr!r&r6r4rrr
r
%sb������>�>�>�
1�1�1�	7�	7�	7�K�K�K�7�7�7�7�7rr
c�Z�eZdZejd��Zejd��Zd�Zd�ZdS)�BaseTestCasez^[a-z0-9_-]{8}$s^[a-z0-9_-]{8}$c��|�tj����tjdt
dt���dS)N�ignore�mktemp)�category�message�module)�enterContextr�check_warnings�warnings�filterwarnings�RuntimeWarningr1rs r�setUpzBaseTestCase.setUp\sR�����/�8�:�:�;�;�;����>�(0��	C�	C�	C�	C�	C�	Crc�F�tj�|��\}}|dt|���}|t|��t|��z
d�}|�`|�t|��t|��tust|tj��rtntd��|�F|�t|��t|��turtntd��|�F|�t|��t|��turtntd��|||fdkr)|�t|��td��|�
tj�|��tj�|��d|�d|����|�
||d|�d|����|�
||d|�d|����|t|��t|��t|��z
�}t|t��r|jn|j
}	|�|	�|��d|�d	|	j����dS)
Nzunexpected return type�NNNzdefault return type must be strzfile z not in directory z does not begin with z does not end with zrandom characters z do not match )�osr-�split�lenr�typer�
isinstance�PathLiker�assertEqual�abspath�	str_check�b_check�
assertTrue�match�pattern)
r�name�dir�pre�suf�ndir�nbase�npre�nsuf�checks
          r�	nameCheckzBaseTestCase.nameCheckas}����
�
�d�+�+�
��u��i�s�3�x�x�i� ���c�%�j�j��S���)�*�*�+���?��M�M��T�
�
���9�9��#�#�z�#�r�{�'C�'C�#����(�
�
�
��?��M�M�$�t�*�*�T�#�Y�Y�#�-=�-=�c�c�5�2�
4�
4�
4��?��M�M�$�t�*�*�T�#�Y�Y�#�-=�-=�c�c�5�2�
4�
4�
4���c�?�0�0�0��M�M�$�t�*�*�c�+L�M�M�M�	
��������.�.������0D�0D�0D�:>�$�$���D�	F�	F�	F�����s�s�=B�U�U�C�C�H�	J�	J�	J�����s�s�;@�5�5�#�#�F�	H�	H�	H��c�#�h�h�s�5�z�z�#�c�(�(�2�2�3��",�U�C�"8�"8�J����d�l��������E�*�*�*� �5�5�%�-�-�1�	2�	2�	2�	2�	2rN)	r1r2r3�re�compilerOrPrDr]r4rrr8r8WsY��������
�-�.�.�I��b�j�,�-�-�G�C�C�C�
"2�"2�"2�"2�"2rr8c��eZdZd�ZdS)�TestExportsc���tj}ddddddddddddddd�}g}|D]'}|ddkr||vr|�|���(|�t	|��dkd|z��dS)N�)�NamedTemporaryFile�
TemporaryFile�mkstemp�mkdtempr;�TMP_MAX�
gettempprefix�gettempprefixb�
gettempdir�gettempdirb�tempdir�template�SpooledTemporaryFile�TemporaryDirectoryr�_zunexpected keys: %s)r�__dict__�appendrQrI)r�dict�expected�unexp�keys     r�test_exportszTestExports.test_exports�s���� ��$%������� �����%&�#$�
�
��"���	"�	"�C��1�v��}�}��H�!4�!4����S�!�!�!������E�
�
�a��-��5�	7�	7�	7�	7�	7rN)r1r2r3rxr4rrrara�s#������7�7�7�7�7rrac�d��eZdZdZ�fd�Zd�Zd�Zd�Zej	��d���Z
�xZS)�TestRandomNameSequencez6Test the internal iterator object _RandomNameSequence.c�x��tj��|_t�����dSr+)r�_RandomNameSequence�r�superrD�r�	__class__s �rrDzTestRandomNameSequence.setUp�s(����-�/�/���
���
�
�����rc�^�t|j��}|�|ddd��dS�Nr)�nextr}r])r�ss  r�test_get_eight_char_strz.TestRandomNameSequence.test_get_eight_char_str�s-�����L�L�����q�"�b�"�%�%�%�%�%rc���i}|j}tt��D]D}t|��}|�|ddd��|�||��d||<�EdS)Nrrc)r}�range�
TEST_FILESr�r]�assertNotIn)rrtr}�ir�s     r�	test_manyz TestRandomNameSequence.test_many�su�����F���z�"�"�	�	�A��Q���A��N�N�1�b�"�b�)�)�)����Q��%�%�%��D��G�G�		�	rc�>�d}|j}|D]}|dz
}|dkrdS�dS)Nrrc�)r})rr�r}r�s    r�
supports_iterz$TestRandomNameSequence.supports_iter�sG��
���F���	�	�A�
��F�A��B�w�w�����	�	rc��tj��\}}d}	tj��}|svtj|��tj|t|j���d����tj|��tjd��t|j��}tj	|t|�����d��}|rtj
|d���tj|��tj|��nE#|rtj
|d���tj|��tj|��wxYw|�||��dS)N�asciir)�exitcode)rG�pipe�fork�close�writer�r}�encode�_exit�readrI�decoder�wait_process�assertNotEqual)r�read_fd�write_fd�pid�parent_value�child_values      r�test_process_awarenessz-TestRandomNameSequence.test_process_awareness�sb���G�I�I������	��'�)�)�C��
����!�!�!����4���<�<�#6�#6�w�#?�#?�@�@�@����"�"�"������� ���<�<�L��'�'�3�|�+<�+<�=�=�D�D�W�M�M�K��
6��$�S�1�5�5�5�5��H�W�����H�X������	�
6��$�S�1�5�5�5�5��H�W�����H�X�����������K��6�6�6�6�6s
�CD/�/AE1)r1r2r3�__doc__rDr�r�r�r�
requires_forkr��
__classcell__�r�s@rrzrz�s��������@�@������&�&�&�
	�	�	�����W����7�7���7�7�7�7�7rrzc��eZdZdZd�Zd�ZdS)�TestCandidateTempdirListz3Test the internal function _candidate_tempdir_list.c��tj��}|�t|��dk��|D]}|�|t
���dS�Nr)r�_candidate_tempdir_list�assertFalserI�assertIsInstancer)r�cand�cs   r�test_nonempty_listz+TestCandidateTempdirList.test_nonempty_list�sb���/�1�1������T���a��(�(�(��	*�	*�A��!�!�!�S�)�)�)�)�	*�	*rc�
�tj��5}dD]:}tj|��}|s"tj�|��||<�;t
j��}dD]5}tj|��}|st�|�	||���6	tj
��}n##ttf$rtj
}YnwxYw|�	||��ddd��dS#1swxYwYdS)N)�TMPDIR�TEMP�TMP)r�EnvironmentVarGuardrG�getenvr-rNrr��
ValueError�assertIn�getcwd�AttributeError�OSError�curdir)r�env�envname�dirnamer�s     r�test_wanted_dirsz)TestCandidateTempdirList.test_wanted_dirs�sS���
*�
,�
,�	)��2�
<�
<���)�G�,�,���<�#%�7�?�?�7�#;�#;�C��L���3�5�5�D�2�
-�
-���)�G�,�,���0�j� 0��
�
�g�t�,�,�,�,�
$��)�+�+����"�G�,�
$�
$�
$��)����
$����
�M�M�'�4�(�(�(�%	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�	)�	)s6�B	C8�B2�1C8�2C�C8�C�C8�8C<�?C<N)r1r2r3r�r�r�r4rrr�r��s8������=�=�*�*�*�)�)�)�)�)rr�c��eZdZdZd�ZdS)�TestGetDefaultTempdirzTest _get_default_tempdir().c	����tj��5��fd�}tjtd|��5tj��|�t
j���g��d�}tjtd|��5|�t��5tj��ddd��n#1swxYwY|�t
j���g��ddd��n#1swxYwYtjtd|��5|�t��5tj��ddd��n#1swxYwY|�t
j���g��ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)Nc�
���gSr+r4)�our_temp_directorys�r�our_candidate_listzKTestGetDefaultTempdir.test_no_files_left_behind.<locals>.our_candidate_lists���*�+�+rr�c��t���r+)r�)�args�kwargss  r�
raise_OSErrorzFTestGetDefaultTempdir.test_no_files_left_behind.<locals>.raise_OSErrors��!�)�)�Or�openr�)
rrpr�	swap_attr�_get_default_tempdirrMrG�listdirr�FileNotFoundError)rr�r�r�s   @r�test_no_files_left_behindz/TestGetDefaultTempdir.test_no_files_left_behinds����
�
(�
*�
*�	I�.@�
,�
,�
,�
,�
,��"�8�-F�#5�7�7�
I�
I��-�/�/�/�� � ���,>�!?�!?��D�D�D�$�$�$��&�r�6�=�A�A�I�I��*�*�+<�=�=�8�8� �5�7�7�7�8�8�8�8�8�8�8�8�8�8�8����8�8�8�8��$�$�R�Z�0B�%C�%C�R�H�H�H�	I�I�I�I�I�I�I�I�I�I�I����I�I�I�I��&�r�7�M�B�B�I�I��*�*�+<�=�=�8�8� �5�7�7�7�8�8�8�8�8�8�8�8�8�8�8����8�8�8�8��$�$�R�Z�0B�%C�%C�R�H�H�H�	I�I�I�I�I�I�I�I�I�I�I����I�I�I�I�
I�
I�
I�
I�
I�
I�
I�
I�
I�
I�
I����
I�
I�
I�
I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I����	I�	I�	I�	I�	I�	Is��!G�AG�D
�+C	�?D
�C
�D
�C
�+D
�>G�
D�G�D�G�0F*�E+	�F*�+E/
�/F*�2E/
�3+F*�G�*F.�.G�1F.�2G�5G�G	�G�G	�	G�G� GN)r1r2r3r�r�r4rrr�r�
s.������&�&�I�I�I�I�Irr�c��eZdZdZd�Zd�ZdS)�TestGetCandidateNamesz0Test the internal function _get_candidate_names.c�l�tj��}|�|tj��dSr+)r�_get_candidate_namesr�r|)r�objs  r�test_retvalz!TestGetCandidateNames.test_retval0s/���+�-�-�����c�8�#?�@�@�@�@�@rc��tj��}tj��}|�||u��dSr+)rr�rQ)r�a�bs   r�test_same_thingz%TestGetCandidateNames.test_same_thing5s:���)�+�+���)�+�+������Q������rN)r1r2r3r�r�r�r4rrr�r�-s;������:�:�A�A�A�
 � � � � rr�c#�K�tj��}	tjtd|��5dV�ddd��n#1swxYwYt	j|��dS#t	j|��wxYw)Nrm)rrgrr�r�rmtree�rUs r�_inside_empty_temp_dirr�=s�����
�
�
�
�C��
�
�x��C�
8�
8�	�	��E�E�E�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	���������	���������s-�A$�A�A$�A�A$�
A�A$�$A:c�@��tjtd�fd���S)Nr�c�"��t���Sr+)�iter��namess�r�<lambda>z'_mock_candidate_names.<locals>.<lambda>Js
���T�%�[�[�r)rr�rr�s`r�_mock_candidate_namesr�Gs)�����X�3�0�0�0�0�2�2�2rc�X�eZdZejejd��d���Zd�Zd�Z	dS)�TestBadTempdirz$Emscripten cannot remove write bits.c�(�t��5tjtj��jx}}|tjtjztjzz}tj	tj|��	tj
tjtj��r|�d��|�
t��5|���ddd��n#1swxYwY|�tjtj��g��tj	tj|��n$#tj	tj|��wxYw	ddd��dS#1swxYwYdS)Nz!can't set the directory read-only)r�rG�statrrm�st_mode�S_IWUSR�S_IWGRP�S_IWOTH�chmod�access�W_OK�skipTestr�PermissionError�	make_temprMr�)r�oldmode�modes   r�test_read_only_directoryz'TestBadTempdir.test_read_only_directoryOs���$�
%�
%�	4�	4��W�X�%5�6�6�>�>�G�d��d�l�T�\�1�D�L�@�A�A�D��H�X�%�t�,�,�,�
4��9�X�-�r�w�7�7�G��M�M�"E�F�F�F��&�&��7�7�%�%��N�N�$�$�$�%�%�%�%�%�%�%�%�%�%�%����%�%�%�%�� � ���H�,<�!=�!=�r�B�B�B����)�7�3�3�3�3�����)�7�3�3�3�3����3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	4�	4sO�A/F�?AE�C8�,E�8C<	�<E�?C<	�5E�5 F�!E6�6F�F�Fc��t��5tj�tjd��}t
jtd|��5|�t��5|�
��ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)N�nonexistentrm)r�rGr-�joinrrmrr�rr�r��rrms  r�test_nonexisting_directoryz)TestBadTempdir.test_nonexisting_directory`sn��
#�
%�
%�	%�	%��g�l�l�8�#3�]�C�C�G��"�8�Y��@�@�
%�
%��&�&�'8�9�9�%�%��N�N�$�$�$�%�%�%�%�%�%�%�%�%�%�%����%�%�%�%�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%����
%�
%�
%�
%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%�	%�	%sZ�AC�B(�0B�B(�B�B(�B�B(�C�(B,	�,C�/B,	�0C�C�Cc���t��5tj�tjd��}t
|d�����tj	td|��5|�
ttf��5|�
��ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)N�file�wbrm)r�rGr-r�rrmr�r�rr�r�NotADirectoryErrorr�r�r�s  r�test_non_directoryz!TestBadTempdir.test_non_directorygs���
#�
%�
%�	%�	%��g�l�l�8�#3�V�<�<�G���$���%�%�'�'�'��"�8�Y��@�@�
%�
%��&�&�(:�<M�'N�O�O�%�%��N�N�$�$�$�%�%�%�%�%�%�%�%�%�%�%����%�%�%�%�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%����
%�
%�
%�
%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%�	%�	%sZ�A(C)�7"C�B:�.C�:B>�>C�B>�C�C)�C	�C)�C	�C)�)C-�0C-N)
r1r2r3�unittest�skipIfr�
is_emscriptenr�r�r�r4rrr�r�Mse�������X�_���E���4�4���4�%�%�%�%�%�%�%�%rr�c��eZdZdZGd�d��Zdd�Zd�Zd�Zd	�Zd
�Z	e
jd���Ze
jed��ej��d
�����Ze
jed��d���Zd�Zd�Zd�ZdS)�TestMkstempInnerz*Test the internal function _mkstemp_inner.c�X�eZdZejZejZej	Z
ejZd�Z
d�Zd�ZdS)�TestMkstempInner.mkstempedc��|r|j}n|j}tj|||��}tj|||||��\|_|_dSr+)�_bflags�_tflagsrr�_mkstemp_inner�fdrT)rrUrVrW�bin�flags�output_types       rr.z#TestMkstempInner.mkstemped.__init__ysS���
)�D�L�E�E� �L�E�"�5�c�3��D�D�K�#+�#:�3��S�%�Q\�#]�#]� �T�W�d�i�i�irc�:�tj|j|��dSr+)rGr�r)rrs  rr�z TestMkstempInner.mkstemped.write�s���H�T�W�c�"�"�"�"�"rc�n�|�|j��|�|j��dSr+)�_closer�_unlinkrTrs r�__del__z"TestMkstempInner.mkstemped.__del__�s0���K�K��� � � ��L�L���#�#�#�#�#rN)r1r2r3r�_bin_openflagsr�_text_openflagsr	rGr�r�unlinkrr.r�rr4rr�	mkstempedrssb�������)���*������)��	^�	^�	^�	#�	#�	#�	$�	$�	$�	$�	$rrNrcc�0�tj|||��}|�0|turtj��}ntj��}|�
|��}|�
|��}|�||||��}|�|j|||��|Sr+)rrrrkrlrr]rT)rrUrVrWrrr�s       r�	do_createzTestMkstempInner.do_create�s����1�#�s�C�@�@���;��c�!�!��)�+�+����*�,�,���;��+�-�-�C��;��+�-�-�C��~�~�c�3��S�1�1�����t�y�#�s�C�0�0�0��rc��|����d��|�d����d��|�d����d��|�dd����d��|�dd����d��dS)	N�blatr��rVr��rW�rVrW�aa�.txt)rr�rs r�
test_basiczTestMkstempInner.test_basic�s����������w�'�'�'����3����%�%�g�.�.�.����3����%�%�g�.�.�.����3�C��(�(�.�.�w�7�7�7����4�V��,�,�2�2�7�;�;�;�;�;rc��tj��}|�|d����d��|�|d����d��|�|d����d��|�|dd����d��|�|dd	����d��|�t
��5|�d
d����d��ddd��n#1swxYwY|�t
��5|�|d
����d��ddd��n#1swxYwY|�t
��5|�|dd
����d��ddd��dS#1swxYwYdS)Nr�rUrWr�a�rUrV�b�rUrVrW�aa�.txtr)rrlrr�rr)r�dir_bs  r�test_basic_with_bytes_namesz,TestMkstempInner.test_basic_with_bytes_names�s����$�&�&�����5�c��*�*�0�0��9�9�9����5�d��+�+�1�1�'�:�:�:����5�d��+�+�1�1�'�:�:�:����5�d���5�5�;�;�G�D�D�D����5�e���9�9�?�?��H�H�H�
�
�
�y�
)�
)�	;�	;��N�N�r�s�N�+�+�1�1�'�:�:�:�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�
�
�
�y�
)�
)�	=�	=��N�N�u�"�N�-�-�3�3�G�<�<�<�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�
�
�
�y�
)�
)�	F�	F��N�N�u�#�2�N�6�6�<�<�W�E�E�E�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F����	F�	F�	F�	F�	F�	Fs6�+D9�9D=�D=�+F�F�F�:,G3�3G7�:G7c��ttt����}|D]}|�d���||<�dS�Nrr)�listr�r�r�r�extantr�s   r�test_basic_manyz TestMkstempInner.test_basic_many�sI���e�J�'�'�(�(���	1�	1�A����4��0�0�F�1�I�I�	1�	1rc��tj��}	|�|����d��|�t	j|������d��t
j��tj	|��dS#t
j��tj	|��wxYw�Nr�r)
rrgrr�r$r%r�
gc_collectrG�rmdir�rrUs  r�test_choose_directoryz&TestMkstempInner.test_choose_directory�s����� � ��	��N�N�s�N�#�#�)�)�'�2�2�2��N�N�w�|�C�0�0�N�1�1�7�7��@�@�@��� � � ��H�S�M�M�M�M�M��
�� � � ��H�S�M�M�M�M���s�A$B"�")Cc���|���}tjtj|j��j��}d}tjdkr
|dz	}|dz}|�||��dS)N��win32��I)	rr��S_IMODErGrTr��sys�platformrM)rr�r�ru�users     r�test_file_modezTestMkstempInner.test_file_mode�st���~�~�����|�B�G�D�I�.�.�6�7�7�����<�7�"�"��q�=�D��z�*�H�����x�(�(�(�(�(rzos.spawnl not availablec��tjrd}nd}|���}|�t	j|j��d��d|jz}	t}n"#t$rtj
d}YnwxYwtj�tj�
tj�|����d��}tjdkrdtjz}d|z}ntj}t	jtjtj||||��}|�|dkd	|z��|�|dkd
|z��dS)N�v�qFz%drztf_inherit_check.pyr:z"%s"z$child process caught fatal signal %dz child process reports failure %d)r�verboserrMrG�get_inheritabler�__file__�	NameErrorr>�argvr-r�r�rNr?�
executabler�P_WAITr�)rrCr�r�me�tester�	decorated�retvals        r�test_noinheritzTestMkstempInner.test_noinherit�s`��
�?�	��A�A��A��~�~��������+�D�G�4�4�e�<�<�<�
�D�G�^��	��B�B���	�	�	���!��B�B�B�	��������b�g�o�o�b�g�o�o�b�.A�.A�B�B�3�5�5���<�7�"�"����/�I��f�_�F�F���I���2�9�c�n�i���B�O�O������!��:�f�W�D�	F�	F�	F�����!��%G��%N�O�O�O�O�Os�A&�&B�Bztext mode not availablec�,�|�d���}|�d��|�d��tj|jdtj��|�tj|jd��d��dS)Nr)rsblatsextra
r�r)rr�rG�lseekr�SEEK_SETrMr��r�fs  r�
test_textmodezTestMkstempInner.test_textmode�s}��

�N�N�q�N�!�!��	�������	���
����
����q�"�+�&�&�&��������r�*�*�G�4�4�4�4�4rc��tjtj��tj��dtjt
��Sr�)rr
rkrirrrs rr�zTestMkstempInner.make_temps:���&�x�':�'<�'<�'/�'=�'?�'?�')�'/�'>�'*�	,�,�	,rc���t��5tddd��5|���\}}tj|��|�|�d����|���\}}tj|��|�|�d����ddd��n#1swxYwYddd��dS#1swxYwYdS�N�aaa�bbb)r�r�r�rGr�rQ�endswith)r�fd1�name1�fd2�name2s     r�!test_collision_with_existing_filez2TestMkstempInner.test_collision_with_existing_filesW��$�
%�
%�	3�	3�
"�5�%��
7�
7�	3�	3��>�>�+�+�L�S�%��H�S�M�M�M��O�O�E�N�N�5�1�1�2�2�2��>�>�+�+�L�S�%��H�S�M�M�M��O�O�E�N�N�5�1�1�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	3�	3s5�C,�B'C�C,�C	�C,�C	�C,�,C0�3C0c���t��5tddd��5tj��}|�|�d����|���\}}tj|��|�|�d����ddd��n#1swxYwYddd��dS#1swxYwYdSrY)	r�r�rrgrQr\r�rGr�)rrUrrTs    r�&test_collision_with_existing_directoryz7TestMkstempInner.test_collision_with_existing_directorysE��$�
%�
%�	2�	2�
"�5�%��
7�
7�	2�	2��"�$�$�C��O�O�C�L�L��/�/�0�0�0����)�)�J�R���H�R�L�L�L��O�O�D�M�M�%�0�0�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2s5�C�BB<�0C�<C	�C�C	�C�C�C)NNNrc)r1r2r3r�rrr!r+r1r7r�skip_unless_working_chmodrAr�
skipUnless�
has_spawnlr�requires_subprocessrP�has_textmoderVr�rarcr4rrrrpsU������4�4�$�$�$�$�$�$�$�$�(���� <�<�<�F�F�F�"1�1�1�����(�)�)�)�(�)��X���%>�?�?� �W� �"�"�#P�#P�#�"�@�?�#P�J�X���'@�A�A�5�5�B�A�5�,�,�,�3�3�3�
2�
2�
2�
2�
2rrc��eZdZdZd�Zd�ZdS)�TestGetTempPrefixzTest gettempprefix().c�J�tj��}|�|t��|�t|��d��tj��}|�|t��|�t|��d��dSr�)rrir�r�
assertGreaterrIrjr)r�p�pbs   r�test_sane_templatez$TestGetTempPrefix.test_sane_template$s����"�$�$�����a��%�%�%����3�q�6�6�1�%�%�%�
�
$�
&�
&�����b�%�(�(�(����3�r�7�7�A�&�&�&�&�&rc��tj��dz}tjd���}	tj�||��}tj|tjtjz��}tj	|��tj
|��tj|��dS#tj|��wxYw)Nz
xxxxxx.xxxr��prefix)rrirgrGr-r�r��O_RDWR�O_CREATr�rr5)rrm�drs    r�test_usable_templatez&TestGetTempPrefix.test_usable_template0s���
�"�$�$�|�3����B�'�'�'��	�����Q��"�"�A����B�I��
�2�3�3�B��H�R�L�L�L��I�a�L�L�L��H�Q�K�K�K�K�K��B�H�Q�K�K�K�K���s�A4B7�7C
N)r1r2r3r�rorvr4rrrjrj!s8��������
'�
'�
'�����rrjc�*�eZdZdZd�Zd�Zd�Zd�ZdS)�TestGetTempDirzTest gettempdir().c�P�tj��tj��fD]~}|�tj�|��p|tjkd|z��|�tj�|��d|z���dS)Nz%r is not an absolute pathz%r is not a directory)	rrkrlrQrGr-�isabsr��isdir�rrus  r�test_directory_existsz$TestGetTempDir.test_directory_existsDs����%�'�'��)=�)?�)?�@�	9�	9�A��O�O�B�G�M�M�!�,�,�>��R�Y��8�1�<�
>�
>�
>��O�O�B�G�M�M�!�,�,�3�a�7�
9�
9�
9�
9�	9�	9rc��tj��5}|�d��ddd��dS#1swxYwYdS)Nr)rrdr�)rr�s  r�test_directory_writablez&TestGetTempDir.test_directory_writableMs����
(�
*�
*�	 �d��J�J�w����	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �	 �	 s�7�;�;c�V�tj��}tj��}tj��}|�||u��|�t|��t|����|�|tj|����dSr+)	rrkrlrQr�rJrMrG�fsdecode)rr�r�r�s    rr�zTestGetTempDir.test_same_thingVs�����!�!����!�!��� �"�"������Q��������D��G�G�T�!�W�W�-�-�-�����B�K��N�N�+�+�+�+�+rc��tjd��}tjdc}t_	tj��5}||d<|�tj��|��ddd��n#1swxYwY|t_tj|��dS#|t_tj|��wxYw)Nz-Tempr�)rrgrmrr�rMrkr5)r�case_sensitive_tempdir�_tempdirr�s    r�test_case_sensitivez"TestGetTempDir.test_case_sensitive`s	��"*�!1�'�!:�!:��%-�%5�t�"��(�"�	4��.�0�0�
P�C� 6��H�
�� � ��!4�!6�!6�8N�O�O�O�
P�
P�
P�
P�
P�
P�
P�
P�
P�
P�
P����
P�
P�
P�
P�
 (�H���O�2�3�3�3�3�3�� (�H���O�2�3�3�3�3���s/�B(�-A;�/B(�;A?�?B(�A?�B(�("C
N)r1r2r3r�r}rr�r�r4rrrxrxAsV��������9�9�9� � � �,�,�,�4�4�4�4�4rrxc�2�eZdZdZdd�Zd�Zd�Zd�Zd�ZdS)	�TestMkstempzTest mkstemp().Nc	��tj|||��}|�0|turtj��}ntj��}|�
|��}|�
|��}tj|||���\}}tj�|��\}}tj�	|��}	|�
|	|d|	�d|�d���	|�||||��t
j|��t
j
|��dS#t
j|��t
j
|��wxYw)N�rUrr�suffixzDirectory 'z' incorrectly returned as '�')rrrrkrlrfrGr-rHrNrMr]r�r)
rrUrVrWrrrTrXrY�adirs
          rrzTestMkstemp.do_creaters7���1�#�s�C�@�@���;��c�!�!��)�+�+����*�,�,���;��+�-�-�C��;��+�-�-�C��%�#�c�#�F�F�F�
��T���
�
�d�+�+�
��u��w���s�#�#������t�t�=A�T�T�4�4�4�H�	J�	J�	J�	��N�N�4��c�3�/�/�/��H�R�L�L�L��I�d�O�O�O�O�O��
�H�R�L�L�L��I�d�O�O�O�O���s�D�*Ec��|���|�d���|�d���|�dd���|�dd���|�d�	��dS)
Nr�rr�rrrr �.r��rrs rr!zTestMkstemp.test_basic�s������������3��������3��������3�C��(�(�(����4�V��,�,�,����3������rc��tj��}|�|d���|�|d���|�|d���|�|dd���|�|dd���|�d	�
��|�t��5|�ddd���ddd��n#1swxYwY|�t��5|�d	dd���ddd��n#1swxYwY|�t��5|�d	dd
���ddd��dS#1swxYwYdS)Nrr#r$r%r&r'r(r)�.r�r�rr )rrlrrrr|s  rr+z'TestMkstemp.test_basic_with_bytes_names�s*��
� �"�"�����1�#��&�&�&����1�$��'�'�'����1�$��'�'�'����1�$�D��1�1�1����1�%�W��5�5�5����4�� � � �
�
�
�y�
)�
)�	<�	<��N�N�s��7�N�;�;�;�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�
�
�
�y�
)�
)�	<�	<��N�N�t��7�N�;�;�;�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�
�
�
�y�
)�
)�	<�	<��N�N�t��F�N�;�;�;�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�	<�	<s6�9C�C"�%C"�D(�(D,�/D,�
E3�3E7�:E7c��tj��}	|�|���|�tj|�����tj|��dS#tj|��wxYw�Nr�)rrgrr$r%rGr5r6s  rr7z!TestMkstemp.test_choose_directory�sj���� � ��	��N�N�s�N�#�#�#��N�N�w�|�C�0�0�N�1�1�1��H�S�M�M�M�M�M��B�H�S�M�M�M�M���s�>A)�)A?c��tj}|�tjtt	d��f��	tj��\}}t
j|��t
j|��|�|t��tj	��t_|�tjt��|�tj��t��|�tj	��t��tj��\}}t
j|��t
j|��|�|t��tjd���\}}t
j|��t
j|��|�|t��tjd���\}}t
j|��t
j|��|�|t��tjtj�����\}}t
j|��t
j|��|�|t��|t_dS#|t_wxYw)Nr �r�z
test-temp-rqr�)rrmr�rrJrfrGr�rrlrrk)r�orig_tempdirrr-s    r�.test_for_tempdir_is_bytes_issue40701_api_wartsz:TestMkstemp.test_for_tempdir_is_bytes_issue40701_api_warts�s���'�����h�.��d�4�j�j�0A�B�B�B�	,��'�)�)�H�B���H�R�L�L�L��I�d�O�O�O��!�!�$��,�,�,�'�3�5�5�H���!�!�(�"2�E�:�:�:��!�!�(�"5�"7�"7��=�=�=��!�!�(�"6�"8�"8�%�@�@�@��'�)�)�H�B���H�R�L�L�L��I�d�O�O�O��!�!�$��.�.�.��'�v�6�6�6�H�B���H�R�L�L�L��I�d�O�O�O��!�!�$��,�,�,��'�|�<�<�<�H�B���H�R�L�L�L��I�d�O�O�O��!�!�$��,�,�,��'�H�,?�,A�,A�B�B�B�H�B���H�R�L�L�L��I�d�O�O�O��!�!�$��,�,�,�+�H�����|�H��+�+�+�+s
�I.J>�>KrF)	r1r2r3r�rr!r+r7r�r4rrr�r�osj������������. � � �<�<�<�$���,�,�,�,�,rr�c�j�eZdZdZd�Zd
d�Zd�Zd�Zd�Zd�Z	e
jd	���Zd
�Z
d�Zd�ZdS)�TestMkdtempzTest mkdtemp().c�(�tj��Sr+)rrgrs rr�zTestMkdtemp.make_temp�s����!�!�!rNc�Z�tj|||��}|�0|turtj��}ntj��}|�
|��}|�
|��}tj|||���}	|�||||��|S#tj|���xYw)Nr�)	rrrrkrlrgr]rGr5)rrUrVrWrrTs      rrzTestMkdtemp.do_create�s����1�#�s�C�@�@���;��c�!�!��)�+�+����*�,�,���;��+�-�-�C��;��+�-�-�C���C��C�@�@�@��	��N�N�4��c�3�/�/�/��K��	��H�T�N�N�N����s�9B�B*c��tj|�����tj|�d�����tj|�d�����tj|�dd�����tj|�dd�����dS�Nr�rr�rrrr )rGr5rrs rr!zTestMkdtemp.test_basic�s���
�����!�!�"�"�"�
�����C��(�(�)�)�)�
�����C��(�(�)�)�)�
�����C�S��1�1�2�2�2�
�����D�f��5�5�6�6�6�6�6rc���tj��}tj|�|�����tj|�|d�����tj|�|d�����tj|�|dd�����tj|�|dd�����|�t��5tj|�|d	d�����ddd��n#1swxYwY|�t��5tj|�|dd
�����ddd��n#1swxYwY|�t��5tj|�ddd�����ddd��dS#1swxYwYdS)Nr�r$r%r&r#r'r(r)rr r)rrlrGr5rrrr|s  rr+z'TestMkdtemp.test_basic_with_bytes_names�s���� �"�"��
�����A��&�&�'�'�'�
�����A�4��0�0�1�1�1�
�����A�4��0�0�1�1�1�
�����A�4�T��:�:�;�;�;�
�����A�5�g��>�>�?�?�?�
�
�
�y�
)�
)�	C�	C��H�T�^�^��t��^�A�A�B�B�B�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C����	C�	C�	C�	C�
�
�
�y�
)�
)�	C�	C��H�T�^�^��u�&�^�A�A�B�B�B�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C����	C�	C�	C�	C�
�
�
�y�
)�
)�	E�	E��H�T�^�^���7�^�C�C�D�D�D�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E����	E�	E�	E�	E�	E�	Es6�<+D3�3D7�:D7�+F�F�F�4+G,�,G0�3G0c�J�ttt����}	|D]}|�d���||<�	|D]+}t	|t
��rt
j|���,dS#|D]+}t	|t
��rt
j|���,wxYwr-)r.r�r�rrKrrGr5r/s   rr1zTestMkdtemp.test_basic_many�s����e�J�'�'�(�(��	 ��
5�
5�� �N�N�t�N�4�4��q�	�	�
5��
 �
 ���a��%�%� ��H�Q�K�K�K��
 �
 ��V�
 �
 ���a��%�%� ��H�Q�K�K�K��
 ���s�A2�20B"c�L�tj��}	tj|�|�����tj|�tj|�������tj|��dS#tj|��wxYwr�)rrgrGr5rr$r%r6s  rr7z!TestMkdtemp.test_choose_directory	s~���� � ��	��H�T�^�^��^�,�,�-�-�-��H�T�^�^���S�(9�(9�^�:�:�;�;�;��H�S�M�M�M�M�M��B�H�S�M�M�M�M���s�A"B
�
B#c�N�|���}	tjtj|��j��}|dz}d}t
jdkr
|dz	}|dz}|�||��tj|��dS#tj|��wxYw)Ni�i�r:r;r<)	rr�r=rGr�r>r?rMr5)rrUr�rur@s     r�	test_modezTestMkdtemp.test_modes����n�n����	��<������ 4�5�5�D��E�M�D��H��|�w�&�&� �1�}���:�.�����T�8�,�,�,��H�S�M�M�M�M�M��B�H�S�M�M�M�M���s�A"B�B$c���t��5tddd��5tjd���}|���|�|j�d����tj��}|�|�d����ddd��n#1swxYwYddd��dS#1swxYwYdS)NrZr[F)�delete)	r�r�rrdr�rQrTr\rg)rr�rUs   rraz-TestMkdtemp.test_collision_with_existing_file$sI��$�
%�
%�	1�	1�
"�5�%��
7�
7�	1�	1��.�e�<�<�<�D��J�J�L�L�L��O�O�D�I�.�.�u�5�5�6�6�6��"�$�$�C��O�O�C�L�L��/�/�0�0�0�
	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s5�C�BB?�3C�?C	�C�C	�C�C�Cc��t��5tddd��5tj��}|�|�d����tj��}|�|�d����ddd��n#1swxYwYddd��dS#1swxYwYdSrY)r�r�rrgrQr\)r�dir1�dir2s   rrcz2TestMkdtemp.test_collision_with_existing_directory/s3��$�
%�
%�	2�	2�
"�5�%��
7�
7�	2�	2��#�%�%�D��O�O�D�M�M�%�0�0�1�1�1��#�%�%�D��O�O�D�M�M�%�0�0�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2s5�B<�A7B$�B<�$B(	�(B<�+B(	�,B<�<C�Cc��tj}|�tjtt	d��f��	tj��}t
j|��|�|t��tj��t_|�tjt��|�tj
��t��|�tj��t��tj��}t
j|��|�|t��tjd���}t
j|��|�|t��tjd���}t
j|��|�|t��tjtj
�����}t
j|��|�|t��|t_dS#|t_wxYw)Nz-dirr�z
test-mkdtemp-rqr�)rrmr�rrJrgrGr5rlrrk)rr�r-s   rr�z:TestMkdtemp.test_for_tempdir_is_bytes_issue40701_api_warts9s����'�����h�.��d�4�j�j�0A�B�B�B�	,��#�%�%�D��H�T�N�N�N��!�!�$��,�,�,�'�3�5�5�H���!�!�(�"2�E�:�:�:��!�!�(�"5�"7�"7��=�=�=��!�!�(�"6�"8�"8�%�@�@�@��#�%�%�D��H�T�N�N�N��!�!�$��.�.�.��#�6�2�2�2�D��H�T�N�N�N��!�!�$��,�,�,��#�?�;�;�;�D��H�T�N�N�N��!�!�$��,�,�,��#��(;�(=�(=�>�>�>�D��H�T�N�N�N��!�!�$��,�,�,�+�H�����|�H��+�+�+�+s
�G;I�IrF)r1r2r3r�r�rr!r+r1r7rrdr�rarcr�r4rrr�r��s���������"�"�"�����(7�7�7�
E�
E�
E�	 �	 �	 �����(���)�(��"	1�	1�	1�2�2�2�,�,�,�,�,rr�c�Z��eZdZdZ�fd�Z�fd�ZGd�d��Zd
d�Zd�Zd	�Z	�xZ
S)�
TestMktempzTest mktemp().c�x��tj��|_t�����dSr+)rrgrUr~rDrs �rrDzTestMktemp.setUpYs(����#�%�%���
���
�
�����rc���|jr tj|j��d|_t�����dSr+)rUrGr5r~�tearDownrs �rr�zTestMktemp.tearDown]sB����8�	��H�T�X�����D�H�
���������rc�6�eZdZejZejZd�Z	d�Z
dS)�TestMktemp.mktempedc��tj|||���|_tjtj|j|jd����dS)Nr�r9)rr;rTrGr�r�r)rrUrVrWs    rr.zTestMktemp.mktemped.__init__gsD�� ��C��C�H�H�H�D�I�
�H�R�W�T�Y���e�<�<�=�=�=�=�=rc�:�|�|j��dSr+)rrTrs rrzTestMktemp.mktemped.__del__ms���L�L���#�#�#�#�#rN)r1r2r3rGrrrrrr.rr4rr�mktempedr�csA�������)���)��	>�	>�	>�	$�	$�	$�	$�	$rr�rc��|�|j||��}|�|j|j||��|Sr+)r�rUr]rT)rrVrWr�s    rrzTestMktemp.do_createps:���}�}�T�X�s�C�0�0�����t�y�$�(�C��5�5�5��rc���|���|�d���|�d���|�dd���|�dd���dSr�r�rs rr!zTestMktemp.test_basicv�l�����������3��������3��������3�C��(�(�(����4�V��,�,�,�,�,rc��ttt����}|D]}|�d���||<�~t	j��dSr-)r.r�r�rrr4r/s   rr�zTestMktemp.test_many~sW���e�J�'�'�(�(���	1�	1�A����4��0�0�F�1�I�I��������r)rr)r1r2r3r�rDr�r�rr!r�r�r�s@rr�r�Ts��������������������$�$�$�$�$�$�$�$�����-�-�-�������rr�c�\�eZdZdZdd�Zd�Zd�Zd�Zd	�Zd
�Z	d�Z
d�Zd
�Zd�Z
d�Zd�ZdS)�TestNamedTemporaryFilezTest NamedTemporaryFile().NrTc��|�tj��}tj||||���}|�|j|||��|S)N)rUrrr�r�)rrkrdr]rT)rrUrVrWr�r�s      rrz TestNamedTemporaryFile.do_create�sV���;��%�'�'�C��*�s�3�s�28�:�:�:��	
���t�y�#�s�C�0�0�0��rc���|���|�d���|�d���|�dd���|�dd���dSr�r�rs rr!z!TestNamedTemporaryFile.test_basic�r�rc��|���}tj|��}|j}|j}~|d��~|d��~t	jd���r|�|����dSdS)N�foosbarT)�cpython)r�weakref�refr�r�check_impl_detail�assertIsNone)rrU�wrr��write2s     r�test_method_lookupz)TestNamedTemporaryFile.test_method_lookup�s���
�N�N����
�[��^�^��������
�
��f�
�
�
����v������$�T�2�2�2�	$����b�b�d�d�#�#�#�#�#�	$�	$rc����gd���fd�}t|����D]!\}}|�|�|���"|�|t���dz
��dS)N)sspam
seggs
sbeans
c���tjd���}|�d������|�d��|S)N�w+b�r�rr)rrdr�r��seek)rU�liness �r�	make_filez3TestNamedTemporaryFile.test_iter.<locals>.make_file�sF����+��7�7�7�A�
�G�G�C�H�H�U�O�O�$�$�$�
�F�F�1�I�I�I��Hrrc)�	enumeraterMrI)rr�r��lr�s    @r�	test_iterz TestNamedTemporaryFile.test_iter�s����3�2�2��	�	�	�	�	�
�i�i�k�k�*�*�	*�	*�D�A�q����Q��a��)�)�)�)�����C��J�J��N�+�+�+�+�+rc��tj��}|�tj�|j��d|jz��dS)Nz$NamedTemporaryFile %s does not exist)rrdrQrGr-�existsrTrTs  r�test_creates_namedz)TestNamedTemporaryFile.test_creates_named�sQ���'�)�)���������q�v�.�.�>���G�	I�	I�	I�	I�	Irc���tj��}	tj|���5}|�d��ddd��n#1swxYwY|�tj|��g��|�t
j�	|j
��d|j
z��tj|��dS#tj|��wxYw)Nr�rz(NamedTemporaryFile %s exists after close)rrgrdr�rMrGr�r�r-r�rTr5�rrUrUs   r�test_del_on_closez(TestNamedTemporaryFile.test_del_on_close�s���� � ��	��,��5�5�5�
!������ � � �
!�
!�
!�
!�
!�
!�
!�
!�
!�
!�
!����
!�
!�
!�
!����R�Z��_�_�b�1�1�1����R�W�^�^�A�F�3�3�B�Q�V�K�
M�
M�
M�
�H�S�M�M�M�M�M��B�H�S�M�M�M�M���s/�C�A�C�A�C�A�A+C�C+c���tj��}d}	tj|d���}|j}|�d��|���|�tj�	|j��d|jz��|�tj
|��tj|��dS#|�tj
|��tj|��wxYw)NF)rUr�rz)NamedTemporaryFile %s missing after close)rrgrdrTr�r�rQrGr-r�rr5)rrU�tmprUs    r�test_dis_del_on_closez,TestNamedTemporaryFile.test_dis_del_on_close�s����� � ����
	��+��E�B�B�B�A��&�C�
�G�G�G����
�G�G�I�I�I��O�O�B�G�N�N�1�6�2�2�C�a�f�L�
N�
N�
N����	�#�����H�S�M�M�M�M�M�����	�#�����H�S�M�M�M�M���s�BC	�	,C5c���tj��}|�d��|���|���|���dS�N�abc
)rrdr�r�rTs  r�test_multiple_closez*TestNamedTemporaryFile.test_multiple_close�sM���'�)�)��	�������	���	�	�	�	���	�	�	�	���	�	�	�	�	rc�z��tj��5�|�tj��j����ddd��n#1swxYwY|�tj��j�����fd�}|�t|��dS)Nc�@���5	ddd��dS#1swxYwYdSr+r4�rUs�r�
use_closedz?TestNamedTemporaryFile.test_context_manager.<locals>.use_closed��p����
�
��
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�
����)
rrdrQrGr-r�rTr�rr��rr�rUs  @r�test_context_managerz+TestNamedTemporaryFile.test_context_manager�s����
�
(�
*�
*�	4�a��O�O�B�G�N�N�1�6�2�2�3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4����������/�/�0�0�0�	�	�	�	�	�	
���*�j�1�1�1�1�1s�8A�A� Ac���tj��}|�tj|��|�t��5tjd|���ddd��n#1swxYwY|�t��5tjd|���ddd��n#1swxYwY|�	tj|��g��dS�Nr�)r�rU�)rrg�
addCleanuprr�rr�rdrrMrGr�r6s  r�
test_bad_modez$TestNamedTemporaryFile.test_bad_mode�sI���� � �����	�(�#�.�.�.�
�
�
�z�
*�
*�	<�	<��'�T�s�;�;�;�;�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�
�
�
�y�
)�
)�	9�	9��'�Q�C�8�8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9������C���"�-�-�-�-�-�$�A1�1A5�8A5�B9�9B=�B=c�N�tj��}|�tj|��|�t��5tjdd|���ddd��n#1swxYwY|�tj
|��g��dS�N�wzbad-encoding)�encodingrU)rrgr�rr�r�LookupErrorrdrMrGr�r6s  r�test_bad_encodingz(TestNamedTemporaryFile.test_bad_encodings����� � �����	�(�#�.�.�.�
�
�
�{�
+�
+�	O�	O��'��n�#�N�N�N�N�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O����	O�	O�	O�	O������C���"�-�-�-�-�-��A2�2A6�9A6c��tj��}|�tj|��tjd��5}tjdtj����5}t��|_	|�
t��5tj|���ddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwY|��j�
��|�tj|��g��dS)Nztempfile._TemporaryFileWrapperzio.openr�)rrgr�rr�r�patch�	mock_open�KeyboardInterrupt�side_effectrrdr��
assert_calledrMrGr�)rrU�mock_ntfr�s    r�test_unexpected_errorz,TestNamedTemporaryFile.test_unexpected_errors����� � �����	�(�#�.�.�.�
�Z�8�
9�
9�	5�X�
�Z�	�4�>�#3�#3�
4�
4�	5�8A�#4�#6�#6�H� ��"�"�#4�5�5�
5�
5��+��4�4�4�4�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5����
5�
5�
5�
5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�
	�	����'�'�)�)�)������C���"�-�-�-�-�-sZ�'C-�/.C�B?�3C�?C�C�C�C�
C-�C	�C-�C	�C-�-C1�4C1)NrrT)r1r2r3r�rr!r�r�r�r�r�r�r�r�r�r�r4rrr�r��s�������$�$�����-�-�-�$�$�$� ,�,�,�I�I�I�
�
�
���� ���2�2�2�.�.�.�.�.�.�	.�	.�	.�	.�	.rr�c��eZdZdZdd�Zd�Zd�Zd�Zd	�Zd
�Z	e
jej
d��d���Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Ze
jej
d��d���Zd�ZdS)�TestSpooledTemporaryFilezTest SpooledTemporaryFile().rNrc�`�|�tj��}tj||||���}|S)N)�max_sizerUrrr�)rrkro)rr�rUrVrWr�s      rrz"TestSpooledTemporaryFile.do_creates5���;��%�'�'�C��,�h�C�PS�\_�`�`�`���rc���|���}|�|j��|�ddd���}|�|j��dS)Nrr�r )r�rVrW)rr��_rolledrTs  rr!z#TestSpooledTemporaryFile.test_basic sZ���N�N���������#�#�#��N�N�C�S�f�N�=�=�������#�#�#�#�#rc�j�|�|���tj��dSr+)r�r�io�IOBasers r�test_is_iobasez'TestSpooledTemporaryFile.test_is_iobase's*�����d�n�n�.�.��	�:�:�:�:�:rc��hd�}tttj����}||z
}|�|d��dS)N>r�r��tellr��flush�read1r��closed�detach�errors�fileno�isatty�__exit__�__iter__�__next__r��newlines�readable�readinto�readline�seekable�truncate�writable�	__enter__�	readinto1�	readlines�
writelineszMSpooledTemporaryFile missing attributes from IOBase/BufferedIOBase/TextIOBase)�setrUrror�)r�iobase_attrs�spooledtempfile_attrs�
missing_attrss    r�test_iobase_interfacez.TestSpooledTemporaryFile.test_iobase_interface+sa��	
�	
�	
��!$�C��(E�$F�$F� G� G��$�'<�<�
�����[�	
�	
�	
�	
�	
rc�b�tj��}	tjd|���}|�|j��|�d��|�|j��|j}|���|�	tj|��g��t|t��s6|�tj�|��d|z��tj|��dS#tj|��wxYw)N�
)r�rUsblat blat blat blat blat z*SpooledTemporaryFile %s exists after close)rrgror�r�r�rQrTr�rMrGr�rK�intr-r�r5)rrUrU�filenames    rr�z*TestSpooledTemporaryFile.test_del_on_close?s���� � ��	��-�r�s�C�C�C�A����Q�Y�'�'�'�
�G�G�L�!�!�!��O�O�A�I�&�&�&��v�H�
�G�G�I�I�I����R�Z��_�_�b�1�1�1��h��,�,�
M�� � ������!9�!9�@�8�K�M�M�M�
�H�S�M�M�M�M�M��B�H�S�M�M�M�M���s�C-D�D.c� �|�d���}|�d��|�|jd��|�t
��5|���ddd��dS#1swxYwYdS)Nr �r�r�)rr�rMrT�assertWarns�ResourceWarningrrTs  r�test_del_unrolled_filez/TestSpooledTemporaryFile.test_del_unrolled_filePs���
�N�N�B�N�'�'��	�������������&�&�&�
�
�
�o�
.�
.�	�	�
�I�I�K�K�K�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�!B�B�
Bz&Emscripten cannot fstat renamed files.c���|�d���}|�d��|j}|�tj�|����|�t��5|�	��ddd��n#1swxYwY|�
tj�|��d|z��dS)Nr�r$r�z9Rolled SpooledTemporaryFile (name=%s) exists after delete)rr�rTrQrGr-r�r%r&rr�)rrUrTs   r�test_del_rolled_filez-TestSpooledTemporaryFile.test_del_rolled_fileYs���
�N�N�A�N�&�&��	��������v���������t�,�,�-�-�-�
�
�
�o�
.�
.�	�	�
�I�I�K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�����G�N�N�4� � �G�$�N�	
�	
�	
�	
�	
s�?B � B$�'B$c��|�d���}|�|j��td��D]-}|�dd��|�d���.|�|j��dS)N�r$�r�xxxxxxxxxxxxxxxxxxxx)rr�r�r�r�r�)rrUr�s   r�test_rewrite_smallz+TestSpooledTemporaryFile.test_rewrite_smallks����N�N�B�N�'�'�������#�#�#��q���	�	�A�
�F�F�1�a�L�L�L�
�G�G�I����������#�#�#�#�#rc��|�d���}|�|j��|�d��|�|j��|�d��|�|j��|�d��|�|j��dS)Nr+r$r-�
xxxxxxxxxx�x)rr�r�r�rQrTs  r�test_write_sequentialz.TestSpooledTemporaryFile.test_write_sequentialts���
�N�N�B�N�'�'�������#�#�#�	���	���������#�#�#�	���	���������#�#�#�	����
�
�
�����	�"�"�"�"�"rc��|���}|�d��|�d��}|�|d��|���}|�|d��dS)N)r1�y�zrsxyz)rrr�rMr�)rrU�pos�bufs    r�test_writelinesz(TestSpooledTemporaryFile.test_writelines�sr���N�N����	���'�(�(�(��f�f�Q�i�i������a� � � ��f�f�h�h������f�%�%�%�%�%rc���|�d���}|�d��|�|j��|�d��|�|j��dS)N�#r$)r-r0sxxxxxr1)rrr�r�r�rQrTs  r�test_writelines_sequentialz3TestSpooledTemporaryFile.test_writelines_sequential�si��
�N�N�B�N�'�'��	���5�6�6�6������#�#�#�	����
�
�
�����	�"�"�"�"�"rc�P�|�d���}|�|j��|�dd��}|�|d��|�|j��|�d��|�|j��dS)Nr+r$rrr1)rr�r�r�rMr�rQ)rrUr6s   r�test_sparsez$TestSpooledTemporaryFile.test_sparse�s���
�N�N�B�N�'�'�������#�#�#��f�f�S�!�n�n������c�"�"�"������#�#�#�	����
�
�
�����	�"�"�"�"�"rc���|�d���}|�|j��|�|���dk��|�|j��dS)Nr+r$r)rr�r�rQr
rTs  r�test_filenoz$TestSpooledTemporaryFile.test_fileno�sc���N�N�B�N�'�'�������#�#�#�������
�
�Q��'�'�'�����	�"�"�"�"�"rc��tj��}|�d��|�|j��|���|���|���dSr�)rror�r�r�r�rTs  r�#test_multiple_close_before_rolloverz<TestSpooledTemporaryFile.test_multiple_close_before_rollover�sc���)�+�+��	������������#�#�#�	���	�	�	�	���	�	�	�	���	�	�	�	�	rc��tjd���}|�d��|�|j��|���|���|���dS)Nrcr$r�)rror�rQr�r�rTs  r�"test_multiple_close_after_rolloverz;TestSpooledTemporaryFile.test_multiple_close_after_rollover�sf���)�1�5�5�5��	�����������	�"�"�"�	���	�	�	�	���	�	�	�	���	�	�	�	�	rc���|�d���}|j}|j}|j}|d��|d��|dd��|�|d��d��dS)Nr+r$s#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas#bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr�FsFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)rr�r�r�rM)rrUr�r�r�s     r�test_bound_methodsz+TestSpooledTemporaryFile.test_bound_methods�s���
�N�N�B�N�'�'���v������v��
��i����
��i������Q��
�
�
������b���#4�5�5�5�5�5rc�n�tjd���}|�d��|�|j��|�|jd��|�|j��|�	t��5|jddd��n#1swxYwY|�	t��5|jddd��n#1swxYwY|�	t��5|j
ddd��n#1swxYwY|�d��|�|j��|�|jd��|�|j��|�	t��5|jddd��n#1swxYwY|�	t��5|jddd��n#1swxYwY|�	t��5|j
ddd��dS#1swxYwYdS)Nr r$r0r�r1zrb+)rror�r�r�rMr�r�rTrr�rr�r	rQ�assertIsNotNonerTs  r�test_propertiesz(TestSpooledTemporaryFile.test_properties�sm���)�2�6�6�6��	���	���������#�#�#�������'�'�'����!�&�!�!�!�
�
�
�~�
.�
.�	�	�
�J�J�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�~�
.�
.�	�	�
�J�J�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�~�
.�
.�	�	�
�H�H�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
����
�
�
�����	�"�"�"�������'�'�'����Q�V�$�$�$�
�
�
�~�
.�
.�	�	�
�J�J�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�~�
.�
.�	�	�
�J�J�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�~�
.�
.�	�	�
�H�H�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	sl�B(�(B,�/B,�
C!�!C%�(C%�D�D�!D�#F7�7F;�>F;�G0�0G4�7G4�H*�*H.�1H.c�l�tjddd���}|�d��|�d��|�|���d��|�d��|�d��|�|���d��|�|j��|�|jd��|�	|j
��|�|jtj
��|�|jd��|�|jd	��|�d
��|�d��|�|���d��|�d��|�d��|�|���d
��|�|j��|�|jd��|�|j
��|�|jtj
��|�|jd��|�|jd	��dS)N�w+r �utf-8)r�r�r�zabc
rzdef
zabc
def
�strictzxyzzy
zabc
def
xyzzy
zfoobar
zabc
def
xyzzy
foobar
)rror�r�rMr�r�r�r�r�rTrrG�linesepr�r	rQrHrTs  r�test_text_modez'TestSpooledTemporaryFile.test_text_mode�s@��
�)�t�b�3:�
<�
<�
<��	�������	���q�	�	�	���������7�+�+�+�	�������	���q�	�	�	���������<�0�0�0������#�#�#�������&�&�&����!�&�!�!�!������R�Z�0�0�0������W�-�-�-������8�,�,�,�	���	����	���q�	�	�	���������#6�7�7�7�	�������	���q�	�	�	���������#B�C�C�C�����	�"�"�"�������&�&�&����Q�V�$�$�$������R�Z�0�0�0������W�-�-�-������8�,�,�,�,�,rc�&�tjddddd���}|�d��|�d��|�|���d��|�|j��|�|jd��|�	|j
��|�|j��|�|j
d��|�|jd��|�d	��|�d
��|�d��|�|���d��|�|j��|�|jd��|�|j
��|�|j��|�|j
d��|�|jd��dS)NrKr rrLr:)r�r��newliner�r	uΛ
ruΜΜΜΜΜΜΜΜΜΜ
u(ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝuBΛ
ΜΜΜΜΜΜΜΜΜΜ
ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ)rror�r�rMr�r�r�r�r�rTrHrr�r	rQrTs  r�test_text_newline_and_encodingz7TestSpooledTemporaryFile.test_text_newline_and_encoding�s����)�t�b�24�w�19�
;�
;�
;��	
�������	���q�	�	�	���������<�0�0�0������#�#�#�������&�&�&����!�&�!�!�!����Q�Z�(�(�(������W�-�-�-������8�,�,�,�	���&�'�'�'�	���
����	���q�	�	�	���������I�	K�	K�	K�����	�"�"�"�������&�&�&����Q�V�$�$�$����Q�Z�(�(�(������W�-�-�-������8�,�,�,�,�,rc�>��tjd���5�|��j��|��j��ddd��n#1swxYwY|��j���fd�}|�t|��dS)Nrcr$c�@���5	ddd��dS#1swxYwYdSr+r4r�s�rr�zQTestSpooledTemporaryFile.test_context_manager_before_rollover.<locals>.use_closedr�r�)rror�r�rrQrr�r�s  @r�$test_context_manager_before_rolloverz=TestSpooledTemporaryFile.test_context_manager_before_rollovers����
�
*�A�
6�
6�
6�	'�!����Q�Y�'�'�'����Q�X�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	
�����!�!�!�	�	�	�	�	�	
���*�j�1�1�1�1�1s�5A�A�Ac����tjd���5�|��j����d������|��j��|��j��ddd��n#1swxYwY|��j���fd�}|�t|��dS)Nrcr$r�c�@���5	ddd��dS#1swxYwYdSr+r4r�s�rr�zQTestSpooledTemporaryFile.test_context_manager_during_rollover.<locals>.use_closed*r�r�)
rror�r�r�rrQrrr�r�s  @r�$test_context_manager_during_rolloverz=TestSpooledTemporaryFile.test_context_manager_during_rollover!s���
�
*�A�
6�
6�
6�	'�!����Q�Y�'�'�'�
�G�G�H����
�G�G�I�I�I��O�O�A�I�&�&�&����Q�X�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	
�����!�!�!�	�	�	�	�	�	
���*�j�1�1�1�1�1s�A8B�B�"Bc���tjd������d������|��j���5|��j��ddd��n#1swxYwY|��j���fd�}|�t|��dS)Nrcr$r�c�@���5	ddd��dS#1swxYwYdSr+r4r�s�rr�zPTestSpooledTemporaryFile.test_context_manager_after_rollover.<locals>.use_closed8r�r�)
rror�rrQr�r�rrr�r�s  @r�#test_context_manager_after_rolloverz<TestSpooledTemporaryFile.test_context_manager_after_rollover/s����)�1�5�5�5��	�������	���	�	�	�����	�"�"�"�
�	'�	'����Q�X�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'������!�!�!�	�	�	�	�	�	
���*�j�1�1�1�1�1s�B�B�
Bc�v�tjd���}|�d��|�d��|���|�|j��|�|j�	��d��tjd���}|�d��|�d��|�|j��|�|j�	��d��tjd���}|�d��|�d��|�
|j��|�tj|�
����jd��dS)	Nr r$sabcdefg
rr�sabcdr�)rror�r�rr�r�rM�_file�getvaluerQrG�fstatr
�st_sizerTs  r�!test_truncate_with_size_parameterz:TestSpooledTemporaryFile.test_truncate_with_size_parameter=sf��

�)�2�6�6�6��	�������	���q�	�	�	�	�
�
���������#�#�#������)�)�+�+�S�1�1�1��)�2�6�6�6��	�������	�
�
�1�
�
�
������#�#�#������)�)�+�+�W�5�5�5��)�2�6�6�6��	�������	�
�
�2��������	�"�"�"������!�(�(�*�*�-�-�5�r�:�:�:�:�:rc�p�|�tjttj��dSr+)r�rror�types�GenericAliasrs r�test_class_getitemz+TestSpooledTemporaryFile.test_class_getitemUs4�����h�;�E�B��(�	*�	*�	*�	*�	*r)rNrr) r1r2r3r�rr!rrr�r'rrrrr)r.r2r8r;r=r?rArCrFrIrOrRrUrXr[rbrfr4rrr�r�s�������&�&�����$�$�$�;�;�;�
�
�
�(���"����X�_���G���

�

���

�$�$�$�
#�
#�
#�&�&�&�#�#�#�	#�	#�	#�#�#�#�������6�6�6����0-�-�-�@-�-�-�4	2�	2�	2�2�2�2�2�2�2��X�_���G���;�;���;�**�*�*�*�*rr�c�<�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	S)
�TestTemporaryFilezTest TemporaryFile().c�,�tj��dSr+)rrers rr!zTestTemporaryFile.test_basic^s��
�"�$�$�$�$�$rc��tj��}tj|���}|�d��	t	j|��dS#|���t	j|���xYwr3)rrgrer�rGr5r�r�s   r�test_has_no_namez"TestTemporaryFile.test_has_no_namecsq���"�$�$�C��&�3�/�/�/�A�
�G�G�G����
����
�
�
�
�
��
����	�	�	����
�
�
����s�A�+Bc���tj��}|�d��|���|���|���dSr�)rrer�r�rTs  rr�z%TestTemporaryFile.test_multiple_closessM���&�(�(�A�
�G�G�H����
�G�G�I�I�I�
�G�G�I�I�I�
�G�G�I�I�I�I�Irc�z���fd�}|dd��|dd��|ddd���|d	dd
���dS)Nc���tj|i|��5}|�|��|�d����||�����ddd��dS#1swxYwYdSr�)rrer�r�rMr�)�inputr�r��fileobjrs    �r�	roundtripz;TestTemporaryFile.test_mode_and_encoding.<locals>.roundtrip~s�����+�T�<�V�<�<�<���M�M�%�(�(�(��L�L��O�O�O��$�$�U�G�L�L�N�N�;�;�;�<�<�<�<�<�<�<�<�<�<�<�<����<�<�<�<�<�<s�AA3�3A7�:A7s1234r�zabdc
rKuΛzutf-16)r�zfoo
r)rQr4)rrqs` r�test_mode_and_encodingz(TestTemporaryFile.test_mode_and_encoding|sv���
<�
<�
<�
<�
<�
�I�g�u�%�%�%��I�h��%�%�%��I�h��x�8�8�8�8��I�i��r�2�2�2�2�2�2rc���tj��}|�tj|��|�t��5tjd|���ddd��n#1swxYwY|�t��5tjd|���ddd��n#1swxYwY|�	tj|��g��dSr�)rrgr�rr�rr�rerrMrGr�r6s  rr�zTestTemporaryFile.test_bad_mode�sI���"�$�$�C��O�O�I�,�c�2�2�2��"�"�:�.�.�
;�
;��&�D�c�:�:�:�:�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;����
;�
;�
;�
;��"�"�9�-�-�
8�
8��&�A�3�7�7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8����R�Z��_�_�b�1�1�1�1�1r�c�N�tj��}|�tj|��|�t��5tjdd|���ddd��n#1swxYwY|�tj
|��g��dSr�)rrgr�rr�rr�rerMrGr�r6s  rr�z#TestTemporaryFile.test_bad_encoding�s����"�$�$�C��O�O�I�,�c�2�2�2��"�"�;�/�/�
N�
N��&�s�^��M�M�M�M�
N�
N�
N�
N�
N�
N�
N�
N�
N�
N�
N����
N�
N�
N�
N����R�Z��_�_�b�1�1�1�1�1r�c
��tj��}|�tj|��tjdd��5tjd��5}tjd��5}tjd��5}t��|_|�	t��5tj
|���ddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwY|���|�tj|��g��dS)Nztempfile._O_TMPFILE_WORKSFz	os.unlinkzos.openzos.closer�)rrgr�rr�rr�r�r�rrer�rMrGr�)rrU�mock_unlinkr��
mock_closes     rr�z'TestTemporaryFile.test_unexpected_error�s~���"�$�$�C��O�O�I�,�c�2�2�2���7��?�?�
4�
4���K�(�(�
4�,7���I�&�&�
4�*3���J�'�'�
4�,6�*;�*=�*=��'��&�&�'8�9�9�4�4��*�s�3�3�3�3�4�4�4�4�4�4�4�4�4�4�4����4�4�4�4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4����
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4����
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4����
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4����
4�
4�
4�
4�
�$�$�&�&�&����R�Z��_�_�b�1�1�1�1�1s��	D4�D�3D�.C/	�6C�C/	�C�C/	�C� C/	�#D�/C3
�3D�6C3
�7D�:D�D
�
D�
D
�D�D4�D!	�!D4�$D!	�%D4�4D8�;D8N)r1r2r3r�r!rkr�rrr�r�r�r4rrrhrh[s�������#�#�	%�	%�	%�
	�	�	� 	�	�	�	3�	3�	3�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2rrhc� �eZdZd�Zd�Zd�ZdS)�
NulledModulesc�T�d�|D��|_d�|jD��|_dS)Nc��g|]	}|j��
Sr4)rr)�.0�mods  r�
<listcomp>z*NulledModules.__init__.<locals>.<listcomp>�s��5�5�5�c�S�\�5�5�5rc�6�g|]}|�����Sr4)�copy)r|r�s  rr~z*NulledModules.__init__.<locals>.<listcomp>�s ��9�9�9�������9�9�9r)�refs�contents)r�moduless  rr.zNulledModules.__init__�s2��5�5�W�5�5�5��	�9�9�t�y�9�9�9��
�
�
rc�.�|jD]}|D]}d||<��
dSr+)r�)rrurws   rrzNulledModules.__enter__�s<����	�	�A��
�
����#���
�	�	rc��t|j|j��D].\}}|���|�|���/dSr+)�zipr�r��clear�update)r�exc_inforur�s    rrzNulledModules.__exit__�sK����	�4�=�1�1�	�	�D�A�q�
�G�G�I�I�I�
�H�H�Q�K�K�K�K�	�	rN)r1r2r3r.rrr4rrryry�sA������:�:�:����
����rryc�
�eZdZdZ		dd�Zdd�Zd�Zd	�Zd
�Ze	j
d���Zej
d���Zej
d
���Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zejeed��d��d���ZdS)�TestTemporaryDirectoryzTest TemporaryDirectory().NrrcFc���|�tj��}tj||||���}|�|j|||��|�|j|||��|S)N)rUrrr��ignore_cleanup_errors)rrkrpr]rT�
do_create2)	rrUrVrW�recurse�dirs�filesr�r�s	         rrz TestTemporaryDirectory.do_create�sq���;��%�'�'�C��)��C��"7�9�9�9��	
���s�x��c�3�/�/�/������'�4��7�7�7��
rc��|rdt|��D]T}tj�|d|z��}tj|��|�||dz
||���Ut|��D]`}t
tj�|d|z��d��5}|�d��ddd��n#1swxYwY�adS)Nzdir%drcz
test%d.txtr�sHello world!)r�rGr-r��mkdirr�r�r�)rr-r�r�r�r�rTrUs        rr�z!TestTemporaryDirectory.do_create2�s
���	>��4�[�[�
>�
>���w�|�|�D�'�A�+�6�6������������g�a�i��u�=�=�=�=��u���	)�	)�A��b�g�l�l�4���)9�:�:�D�A�A�
)�Q�����(�(�(�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)����
)�
)�
)�
)��	)�	)s�)C�C	�C	c�@�tj��5}	ddd��n#1swxYwY|�t��5}tj|���ddd��n#1swxYwY|�|jjtj��dSr�)rrprr�rM�	exception�errno�ENOENT)rr��cms   r�test_mkdtemp_failurez+TestTemporaryDirectory.test_mkdtemp_failure�s���
(�
*�
*�	�k��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�0�
1�
1�	9�R��'�K�8�8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9������+�U�\�:�:�:�:�:s�"�&�&�A)�)A-�0A-c���tj��}	|�|���}|�tj�|j��d|jz��|���|�	tj�|j��d|jz��t	j
|��dS#t	j
|��wxYw)Nr�z$TemporaryDirectory %s does not exist�*TemporaryDirectory %s exists after cleanup)rrgrrQrGr-r�rT�cleanupr�r5)rrUrus   r�test_explicit_cleanupz,TestTemporaryDirectory.test_explicit_cleanup�s����� � ��	����3��'�'�A��O�O�B�G�N�N�1�6�2�2�B�Q�V�K�
M�
M�
M�
�I�I�K�K�K����R�W�^�^�A�F�3�3�D�q�v�M�
O�
O�
O�
�H�S�M�M�M�M�M��B�H�S�M�M�M�M���s�B*C�C+c
��tj��5}|�|d���}tj|j��}|�|���d|�d���t|dzd��5}|�	d��|�
��ddd��n#1swxYwY|�tt|�d	������tt j�d
����d|����|�|���t j�d
��d|�d���|�
��|�|���d|�d
���ddd��dS#1swxYwYdS)z=Test that cleanup doesn't return an error when ignoring them.T�rUr��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)rrprr$r%rTrQr�r�r�r�rMrIr.�globr!r>r?�
startswithr��r�working_dir�temp_dir�	temp_path�	open_files     r�"test_explict_cleanup_ignore_errorsz9TestTemporaryDirectory.test_explict_cleanup_ignore_errors�sx��
�
(�
*�
*�	J�k��~�~��t�&�=�=�H���X�]�3�3�I��O�O�I�,�,�.�.�N�)�N�N�N�
P�
P�
P��i�,�.��6�6�
#�)���� 0�1�1�1�� � �"�"�"�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#����
#�
#�
#�
#�
���S��i�n�n�S�&9�&9�!:�!:�;�;� ���!8�!8��!?�!?�@�@�A�3<�A�A�
B�
B�
B�
���� � �"�"���'�'��.�.�N�i�N�N�N�
P�
P�
P�
���������� � �"�"�H�i�H�H�H�
J�
J�
J�%	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J����	J�	J�	J�	J�	J�	Js7�A0G
�*B:�.G
�:B>	�>G
�B>	�C>G
�
G�Gc�r�|���}|�d���}tj|jtj�|jd����|���|�tj�|j��d|jz��|�	tj�|j��d��|�
tj|j��dgd��|���dS)Nr)r��foor�z-Directory pointed to by a symlink was deletedz	test0.txtz>Contents of the directory pointed to by a symlink were deleted)rrG�symlinkrTr-r�r�r�r�rQrMr�)r�d1�d2s   r�(test_cleanup_with_symlink_to_a_directoryz?TestTemporaryDirectory.test_cleanup_with_symlink_to_a_directorys���^�^�
�
��
�^�^�A�^�
&�
&��	�
�2�7�B�G�L�L���%�8�8�9�9�9�	�
�
�������������0�0�E���O�	Q�	Q�	Q��������r�w�/�/�G�	I�	I�	I������B�G�,�,�{�m�(�	)�	)�	)�	�
�
�����rc�0�tj��}	|�|���}|j}~|�t
j�|��d|z��tj|��dS#tj|��wxYw)Nr��*TemporaryDirectory %s exists after __del__)	rrgrrTr�rGr-r�r5�rrUrurTs    r�test_del_on_collectionz-TestTemporaryDirectory.test_del_on_collections����� � ��	����3��'�'�A��6�D�����R�W�^�^�D�1�1�D�t�K�
M�
M�
M�
�H�S�M�M�M�M�M��B�H�S�M�M�M�M���s�AA?�?Bc
��tj��5}|�|d���}tj|j��}|�|���d|�d���t|dzd��5}|�	d��~ddd��n#1swxYwY|�
tt|�
d	������ttj�d
����d|����|�
|���tj�d
��d|�d���ddd��dS#1swxYwYdS)
z@Test that ignoring errors works when TemporaryDirectory is gced.Tr�r�r�r�r�r�Nr�r�r�r�)rrprr$r%rTrQr�r�r�rMrIr.r�r!r>r?r�r�s     r�$test_del_on_collection_ignore_errorsz;TestTemporaryDirectory.test_del_on_collection_ignore_errors"s���
(�
*�
*�	P�k��~�~��t�&�=�=�H���X�]�3�3�I��O�O�I�,�,�.�.�N�)�N�N�N�
P�
P�
P��i�,�.��6�6�
�)���� 0�1�1�1��
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
���S��i�n�n�S�&9�&9�!:�!:�;�;� ���!8�!8��!?�!?�@�@�A�3<�A�A�
B�
B�
B�
���� � �"�"���'�'��.�.�N�i�N�N�N�
P�
P�
P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P����	P�	P�	P�	P�	P�	Ps7�A0E:�B'�E:�'B+	�+E:�.B+	�/B>E:�:E>�E>c��|���5}dD]�}d�||���}tjd|��\}}}|������}|�tj�	|��d|z��|�dd��}|�
d|��|�d	|����	ddd��dS#1swxYwYdS)
N)�builtinsrG�shutilr>rrAa�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)
                    )rUr}�-cr�rL�backslashreplace�
Exception �'ResourceWarning: Implicitly cleaning up�r�formatr�assert_python_okr��stripr�rGr-r�r�r�)rrUr}�code�rc�out�err�tmp_names        r�test_del_on_shutdownz+TestTemporaryDirectory.test_del_on_shutdown7sb��
�^�^�
�
�	N��R�
N�
N���&��3�C��0�0�'�( -�=�d�D�I�I���C���:�:�<�<�-�-�/�/��� � ������!9�!9�H�8�S�U�U�U��j�j��*<�=�=��� � ��s�3�3�3��
�
�G��M�M�M�M�7
N�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N����	N�	N�	N�	N�	N�	Ns�CC7�7C;�>C;c
�R�tj��5}d�|���}tjd|��\}}}tj|��������}|�	tt|�d������ttj�d����d|����|�	|���tj�d��d|�d���|�d	d
��}|�d|��|�d|��|�d
|��ddd��dS#1swxYwYdS)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�r�r�r�r�r�r�rLr��	Exception�Errorr�N)rrpr�rr�r$r%r�r�rMrIr.r�r!r>r?r�r�r�r�)rr�r��__r�r�r�s       r�"test_del_on_shutdown_ignore_errorsz9TestTemporaryDirectory.test_del_on_shutdown_ignore_errorsWs���
�
(�
*�
*�!	J�k��$�F�{�F�3�3�%
�&)�9�$��E�E�L�B��S���S�Z�Z�\�\�%7�%7�%9�%9�:�:�I����S��i�n�n�S�&9�&9�!:�!:�;�;� ���!8�!8��!?�!?�@�@�A�3<�A�A�
B�
B�
B�
���� � �"�"���'�'��.�.�N�i�N�N�N�
P�
P�
P��*�*�W�&8�9�9�C����[�#�.�.�.����W�c�*�*�*��M�M�C�S�I�I�I�C!	J�!	J�!	J�!	J�!	J�!	J�!	J�!	J�!	J�!	J�!	J�!	J����!	J�!	J�!	J�!	J�!	J�!	Js�E;F�F �#F c��|���5}d�|���}tjd|��\}}}|������}|�tj�	|��d|z��|�dd��}|�
d|��|�d|��ddd��dS#1swxYwYdS)	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�rLr�r�r�r�)rrUr�r�r�r�r�s       r�test_exit_on_shutdownz,TestTemporaryDirectory.test_exit_on_shutdown|sD��
�^�^�
�
�	J����F�s�F�O�O�
�)�9�$��E�E�L�B��S��z�z�|�|�)�)�+�+�H����R�W�^�^�H�5�5�D�x�O�
Q�
Q�
Q��*�*�W�&8�9�9�C����\�3�/�/�/��M�M�C�S�I�I�I�)	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J����	J�	J�	J�	J�	J�	Js�CC0�0C4�7C4c���|���5}|�|d���}|j}tjdtfd���5tjdt���~tj��ddd��n#1swxYwY|�	tj�|��d|z��ddd��dS#1swxYwYdS)	N�)rUr��
ImplicitlyF)�quiet�always)r<r�)
rrTrr@r&rArBrr4r�rGr-r�r�s    r�test_warnings_on_cleanupz/TestTemporaryDirectory.test_warnings_on_cleanup�s~��
�^�^�
�
�	M�����3���2�2�A��6�D�!�/��1@�1B�6;�=�=�=�
%�
%��'��?�K�K�K�K���"�$�$�$�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%����
%�
%�
%�
%�
���R�W�^�^�D�1�1�D�t�K�
M�
M�
M�	M�	M�	M�	M�	M�	M�	M�	M�	M�	M�	M�	M����	M�	M�	M�	M�	M�	Ms5�<C�0B
�C�
B	�C�B	�9C�C�"Cc��|���}|���|���|���dSr+)rr�r|s  rr�z*TestTemporaryDirectory.test_multiple_close�s<���N�N����	�	�	����	�	�	����	�	�	�����rc�`�|���}|5}|�tj�|����|�||j��ddd��n#1swxYwY|�tj�|����dSr+)rrQrGr-r�rMrTr�)rrurTs   rr�z+TestTemporaryDirectory.test_context_manager�s����N�N����
�	+�$��O�O�B�G�N�N�4�0�0�1�1�1����T�1�6�*�*�*�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�	
��������-�-�.�.�.�.�.s�AA1�1A5�8A5c��td��D�]0}|dz}|�t|d�����5|�ddd���}|5t	j|jd�	��D]S\}}}|D]5}t	jtj�	||��|���6t	j||���T|�
��ddd��n#1swxYwY|�tj�|j����ddd��n#1swxYwY��2dS)
N�r;�03or�r�r��r�r�r�F��topdown)
r��subTestr�rrG�walkrTr�r-r�r�r�r�)rr�ru�rootr�r�rTs       r�
test_modesz!TestTemporaryDirectory.test_modes�s����!�H�H�	9�	9�D��Q�J�D����6�$��#6�#6��7�7�	
9�	
9��N�N�1�1�A�N�>�>��� � �-/�W�Q�V�U�-K�-K�-K�-�-�)��d�E�$)�E�E�D��H�R�W�\�\�$��%=�%=�t�D�D�D�D����t�,�,�,�,��I�I�K�K�K�
 � � � � � � � � � � ���� � � � �� � �������!7�!7�8�8�8�	
9�	
9�	
9�	
9�	
9�	
9�	
9�	
9�	
9�	
9�	
9����	
9�	
9�	
9�	
9��	9�	9s6�D5�BC'�D5�'C+�+D5�.C+�/:D5�5D9	�<D9	�chflagszrequires os.lchflagsc	��tjtjz}|�ddd���}|5t	j|jd���D]S\}}}|D]5}t	jtj�	||��|���6t	j||���T|�
��ddd��n#1swxYwY|�tj�|j����dS)Nr�r�r�Fr�)
r��UF_IMMUTABLE�UF_NOUNLINKrrGr�rTr�r-r�r�r�r�)rr
rur�r�r�rTs       r�
test_flagsz!TestTemporaryDirectory.test_flags�s/���!�D�$4�4���N�N�1�1�A�N�6�6��
�	�	�%'�W�Q�V�U�%C�%C�%C�
(�
(�!��d�E�!�@�@�D��J�r�w�|�|�D�$�7�7��?�?�?�?��
�4��'�'�'�'�
�I�I�K�K�K�
	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
���������/�/�0�0�0�0�0s�BC�C�C)NrrrcrcrcF)rcrcrc)r1r2r3r�rr�r�r�r�r�skip_unless_symlinkr�r�cpython_onlyr�r�r�r�r�r�r�r�r�rre�hasattrrGr�r4rrr�r��s�������$�$�KL�(-�	�	�	�	�	)�	)�	)�	)�;�;�;����J�J�J�0�"���#�"��(
��
�
���
�
��P�P���P�(N�N�N�@#J�#J�#J�JJ�J�J�0M�M�M� ���/�/�/�9�9�9��X�����Y�/�/�1G�H�H�
1�
1�I�H�
1�
1�
1rr��__main__)7rr�rrGr$r>r^rA�
contextlibr�rdr�rr�testr�test.supportrrrrrrhr�rfr?r�r��TestCaser
r8rarzr�r�r��contextmanagerr�r�r�rrjrxr�r�r�r�r�rdrerhryr�r1�mainr4rr�<module>r�s�����������	�	�	�	�	�	�	�	�����
�
�
�
�	�	�	�	�������������������������������������"�"�"�"�"�"�&�&�&�&�&�&�(�(�(�(�(�(��(�H�,C�C��
�W�R��
"�
"�
��<���9�%�%���J�J��J�.7�.7�.7�.7�.7�H�-�.7�.7�.7�d,2�,2�,2�,2�,2�8�$�,2�,2�,2�^7�7�7�7�7�,�7�7�7�<;7�;7�;7�;7�;7�\�;7�;7�;7�~")�")�")�")�")�|�")�")�")�TI�I�I�I�I�L�I�I�I�@
 �
 �
 �
 �
 �L�
 �
 �
 � �������2�2�2� %� %� %� %� %� %� %� %�Fn2�n2�n2�n2�n2�~�|�n2�n2�n2�b���������@+4�+4�+4�+4�+4�\�+4�+4�+4�\[,�[,�[,�[,�[,�,�[,�[,�[,�|D,�D,�D,�D,�D,�.�,�D,�D,�D,�N0�0�0�0�0��0�0�0�|.�.�.�.�.�\�.�.�.�FB*�B*�B*�B*�B*�|�B*�B*�B*�H
��h�&<�<�<�I2�I2�I2�I2�I2�L�I2�I2�I2�Z
�
�
�
�
�
�
�
� T1�T1�T1�T1�T1�\�T1�T1�T1�n�z����H�M�O�O�O�O�O��r