
    z%i                       d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlmZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ e j,                  e j.                  k7  Z eed      Zej6                  j9                  d      rd	Znd
Z G d dej<                        Z G d dej<                        Z  G d de       Z! G d de       Z" G d de       Z# G d de       Z$ G d de       Z%ejL                  d        Z'd Z( G d d      Z) G d de)e       Z* G d d e       Z+ G d! d"e       Z, G d# d$e       Z- G d% d&e)e       Z. G d' d(e       Z/ G d) d*e       Z0 G d+ d,e       Z1e jd                  e jf                  ur G d- d.e       Z4 G d/ d0      Z5 G d1 d2e       Z6e7d3k(  r ejp                          yy)4    N)mock)support)	os_helper)script_helper)warnings_helperspawnlopenbsd0   d   c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestLowLevelInternalsc                     | j                  t        t        j                  d             | j                  t        t        j                  d             | j                  t        t        j                  d              y N     )assertIsstrtempfile_infer_return_typebytesselfs    F/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_tempfile.pytest_infer_return_type_singlesz4TestLowLevelInternals.test_infer_return_type_singles(   sM    c866r:;eX88=>c866t<=r   c                    | j                  t        t        j                  dd             | j                  t        t        j                  dd             | j                  t              5  t        j                  dd       d d d        | j                  t              5  t        j                  dd       d d d        y # 1 sw Y   >xY w# 1 sw Y   y xY wr   r   r   r   r   r   assertRaises	TypeErrorr   s    r    test_infer_return_type_multiplesz6TestLowLevelInternals.test_infer_return_type_multiples-   s    c866r2>?eX88cBCy) 	1''C0	1y) 	1''R0	1 	1	1 	1	1 	1s   *B>C
>C
Cc                    | j                  t        t        j                  d d             | j                  t        t        j                  dd              | j                  t        t        j                  d d              | j                  t        t        j                  dd              | j                  t        t        j                  d d             | j                  t              5  t        j                  dd d       d d d        | j                  t              5  t        j                  dd d       d d d        y # 1 sw Y   ?xY w# 1 sw Y   y xY wr   r   r   s    r   )test_infer_return_type_multiples_and_nonez?TestLowLevelInternals.test_infer_return_type_multiples_and_none5   s    c866tR@Ac866r4@Ac866tTBCeX88dCDeX88sCDy) 	7''D#6	7y) 	7''T26	7 	7	7 	7	7 	7s   (D>E
>E
Ec                 |    | j                  t        t        j                  t	        j
                  d                   y )N/)r   r   r   r   pathlibPathr   s    r   test_infer_return_type_pathlibz4TestLowLevelInternals.test_infer_return_type_pathlib@   s$    c866w||C7HIJr   c           	      l    G d d      }| j                  t        t        j                   |d                   | j                  t        t        j                   |d                   | j                  t        t        j                  d |d                   | j                  t        t        j                  d |d                   | j                  t        t        j                  d  |d                   | j                  t        t        j                  d  |d                   | j                  t              5  t        j                  d |d             d d d        | j                  t              5  t        j                  d |d             d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)Nc                       e Zd Zd Zd Zy)CTestLowLevelInternals.test_infer_return_type_pathlike.<locals>.Pathc                     || _         y Npathr   r-   s     r   __init__zLTestLowLevelInternals.test_infer_return_type_pathlike.<locals>.Path.__init__E   s	     	r   c                     | j                   S r+   r,   r   s    r   
__fspath__zNTestLowLevelInternals.test_infer_return_type_pathlike.<locals>.Path.__fspath__H   s    yy r   N)__name__
__module____qualname__r/   r1    r   r   r%   r)   D   s    !!r   r%   r#      /r   r   r   )r   r%   s     r   test_infer_return_type_pathlikez5TestLowLevelInternals.test_infer_return_type_pathlikeC   s7   	! 	! 	c866tCyABeX88dDEc866r48DEeX88d3iHIeX88tCyIJc866tT"XFGy) 	7''DI6	7y) 	7''T"X6	7 	7	7 	7	7 	7s   >F8F*F'*F3N)r2   r3   r4   r   r   r!   r&   r7   r5   r   r   r   r   '   s    >
1	7K7r   r   c                   `    e Zd Z ej                  d      Z ej                  d      Zd Zd Zy)BaseTestCasez^[a-z0-9_-]{8}$s   ^[a-z0-9_-]{8}$c                     | j                  t        j                                t        j                  dt
        dt               y )Nignoremktemp)categorymessagemodule)enterContextr   check_warningswarningsfilterwarningsRuntimeWarningr2   r   s    r   setUpzBaseTestCase.setUp^   s1    /88:;>(0	Cr   c                 t   t         j                  j                  |      \  }}|d t        |       }|t        |      t        |      z
  d  }|Q| j	                  t        |      t        |      t        u st        |t         j                        rt        nt        d       |7| j	                  t        |      t        |      t        u rt        nt        d       |7| j	                  t        |      t        |      t        u rt        nt        d       |||fdk(  r | j	                  t        |      t        d       | j                  t         j                  j                  |      t         j                  j                  |      d|d|       | j                  ||d|d|       | j                  ||d|d|       |t        |      t        |      t        |      z
   }t        |t              r| j                  n| j                  }	| j                  |	j                  |      d|d	|	j                          y )
Nzunexpected return typeNNNzdefault return type must be strzfile z not in directory z does not begin with z does not end with zrandom 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   	nameCheckzBaseTestCase.nameCheckc   s   d+uis3x c%jS)*+?MMT
9#z#r{{'C ( ?MM$t*T#Y#-=c524?MM$t*T#Y#-=c524c?00MM$t*c+LM 	.0D:>D	Fs=BCH	Js;@#F	H c#hs5z#c(23",UC"8dllE* %--1	2r   N)	r2   r3   r4   recompilerP   rQ   rE   r^   r5   r   r   r9   r9   Y   s/    

-.Ibjj,-GC
"2r   r9   c                       e Zd Zd Zy)TestExportsc                     t         j                  }ddddddddddddddd}g }|D ]!  }|d   dk7  s||vs|j                  |       # | j                  t	        |      dk(  d|z         y )N   )NamedTemporaryFileTemporaryFilemkstempmkdtempr<   TMP_MAXgettempprefixgettempprefixb
gettempdirgettempdirbtempdirtemplateSpooledTemporaryFileTemporaryDirectoryr   _zunexpected keys: %s)r   __dict__appendrR   rJ   )r   dictexpectedunexpkeys        r   test_exportszTestExports.test_exports   s       $% %&#$
"  	"C1v}H!4S!	" 	E
a-5	7r   N)r2   r3   r4   ry   r5   r   r   rb   rb      s    7r   rb   c                   `     e Zd Z	  fdZd Zd Zd Z ej                         d        Z	 xZ
S )TestRandomNameSequencec                 T    t        j                         | _        t        |           y r+   )r   _RandomNameSequencersuperrE   r   	__class__s    r   rE   zTestRandomNameSequence.setUp   s    --/r   c                 V    t        | j                        }| j                  |ddd       y Nr   )nextr~   r^   )r   ss     r   test_get_eight_char_strz.TestRandomNameSequence.test_get_eight_char_str   s!    Lq"b"%r   c                     i }| j                   }t        t              D ]8  }t        |      }| j	                  |ddd       | j                  ||       d||<   : y )Nr   rd   )r~   range
TEST_FILESr   r^   assertNotIn)r   ru   r~   ir   s        r   	test_manyz TestRandomNameSequence.test_many   sZ     FFz" 	AQANN1b"b)Q%DG		r   c                 F    d}| j                   }|D ]  }|dz  }|dk(  s y  y )Nr   rd      )r~   )r   r   r~   r   s       r   supports_iterz$TestRandomNameSequence.supports_iter   s4     FF 	AFABw	r   c                    t        j                         \  }}d }	 t        j                         }|swt        j                  |       t        j                  |t        | j                        j                  d             t        j                  |       t        j                  d       t        | j                        }t        j                  |t        |            j                  d      }|rt        j                  |d       t        j                  |       t        j                  |       | j                  ||       y # |rt        j                  |d       t        j                  |       t        j                  |       w xY w)Nasciir   )exitcode)rH   pipeforkclosewriter   r~   encode_exitreadrJ   decoder   wait_processassertNotEqual)r   read_fdwrite_fdpidparent_valuechild_values         r   test_process_awarenessz-TestRandomNameSequence.test_process_awareness   s    GGI	'')C!4<#6#6w#?@"   <L'''3|+<=DDWMK$$S15HHWHHXK6 $$S15HHWHHXs   CE AF)r2   r3   r4   rE   r   r   r   r   requires_forkr   __classcell__r   s   @r   r{   r{      s9    @&
	 W7 7r   r{   c                       e Zd Z	 d Zd Zy)TestCandidateTempdirListc                     t        j                         }| j                  t        |      dk(         |D ]  }| j	                  |t
                y Nr   )r   _candidate_tempdir_listassertFalserJ   assertIsInstancer   )r   candcs      r   test_nonempty_listz+TestCandidateTempdirList.test_nonempty_list   sG     //1Ta( 	*A!!!S)	*r   c                    t        j                         5 }dD ]<  }t        j                  |      }|rt        j                  j                  |      ||<   > t        j                         }dD ]1  }t        j                  |      }|st        | j                  ||       3 	 t        j                         }| j                  ||       d d d        y # t        t        f$ r t        j                  }Y <w xY w# 1 sw Y   y xY w)N)TMPDIRTEMPTMP)r   EnvironmentVarGuardrH   getenvr-   rO   r   r   
ValueErrorassertIngetcwdAttributeErrorOSErrorcurdir)r   envenvnamedirnamer   s        r   test_wanted_dirsz)TestCandidateTempdirList.test_wanted_dirs   s     **, 	)2 <))G,#%77??7#;CL<
 335D2 -))G,j 0gt,-
$))+ MM'4(%	) 	) #G, $))$	) 	)s5   C6A.C6"C6C6C30C62C33C66C?N)r2   r3   r4   r   r   r5   r   r   r   r      s    =*)r   r   c                       e Zd Z	 d Zy)TestGetDefaultTempdirc           	         t        j                         5 fd}t        j                  t         d|      5  t        j                          | j                  t        j                        g        d }t        j                  t        d|      5  | j                  t              5  t        j                          d d d        | j                  t        j                        g        d d d        t        j                  t        d|      5  | j                  t              5  t        j                          d d d        | j                  t        j                        g        d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   _xY w# 1 sw Y   >xY w# 1 sw Y   BxY w# 1 sw Y   y xY w)Nc                  
     gS r+   r5   )our_temp_directorys   r   our_candidate_listzKTestGetDefaultTempdir.test_no_files_left_behind.<locals>.our_candidate_list  s    *++r   r   c                      t               r+   )r   )argskwargss     r   raise_OSErrorzFTestGetDefaultTempdir.test_no_files_left_behind.<locals>.raise_OSError  s	    !)Or   openr   )
r   rq   r   	swap_attr_get_default_tempdirrN   rH   listdirr   FileNotFoundError)r   r   r   r   s      @r   test_no_files_left_behindz/TestGetDefaultTempdir.test_no_files_left_behind  s   ((* 	I.@, ""8-F#57 I --/  ,>!?D$ &&r6=A I**+<= 8 5578$$RZZ0B%CRH	I &&r7MB I**+<= 8 5578$$RZZ0B%CRH	II	I 	I 8 8I I8 8I II I	I 	Is   !F7AF+F%E;	:-F'#F+
F F	5-F"F+*F7;F FFF+FFF($F++F4	0F77G N)r2   r3   r4   r   r5   r   r   r   r     s    &Ir   r   c                       e Zd Z	 d Zd Zy)TestGetCandidateNamesc                 l    t        j                         }| j                  |t         j                         y r+   )r   _get_candidate_namesr   r}   )r   objs     r   test_retvalz!TestGetCandidateNames.test_retval2  s&    ++-c8#?#?@r   c                 z    t        j                         }t        j                         }| j                  ||u        y r+   )r   r   rR   )r   abs      r   test_same_thingz%TestGetCandidateNames.test_same_thing7  s.    ))+))+Qr   N)r2   r3   r4   r   r   r5   r   r   r   r   /  s    :A
 r   r   c               #      K   t        j                         } 	 t        j                  t         d|       5  d  d d d        t	        j
                  |        y # 1 sw Y   xY w# t	        j
                  |        w xY ww)Nrn   )r   rh   r   r   r   rmtreerV   s    r   _inside_empty_temp_dirr   ?  sc     



CxC8 		 		 	 	s2   A<A" AA"  A<AA" "A99A<c                  @     t        j                  t        d fd      S )Nr   c                      t               S r+   )iternamess   r   <lambda>z'_mock_candidate_names.<locals>.<lambda>L  s    T%[ r   )r   r   r   r   s   `r   _mock_candidate_namesr   I  s    X302 2r   c                   ^    e Zd Z ej                  ej                  d      d        Zd Zd Z	y)TestBadTempdirz$Emscripten cannot remove write bits.c                 R   t               5  t        j                  t        j                        j
                  x}}|t        j                  t        j                  z  t        j                  z   z  }t        j                  t        j                  |       	 t        j                  t        j                  t        j                        r| j                  d       | j                  t              5  | j                          d d d        | j!                  t        j"                  t        j                        g        t        j                  t        j                  |       	 d d d        y # 1 sw Y   jxY w# t        j                  t        j                  |       w xY w# 1 sw Y   y xY w)Nz!can't set the directory read-only)r   rH   statr   rn   st_modeS_IWUSRS_IWGRPS_IWOTHchmodaccessW_OKskipTestr   PermissionError	make_temprN   r   )r   oldmodemodes      r   test_read_only_directoryz'TestBadTempdir.test_read_only_directoryQ  s    $% 	4WWX%5%56>>>GddllT\\1DLL@AADHHX%%t,499X--rww7MM"EF&&7 %NN$%  H,<,<!=rB))73	4 	4% % ))73	4 	4s=   B
FAE4.E(?;E4:$F(E1	-E44&FFF&c                 r   t               5  t        j                  j                  t        j
                  d      }t        j                  t        d|      5  | j                  t              5  | j                          d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nnonexistentrn   )r   rH   r-   joinr   rn   r   r   r   r   r   r   rn   s     r   test_nonexisting_directoryz)TestBadTempdir.test_nonexisting_directoryb  s    #% 	%ggll8#3#3]CG""8Y@ %&&'89 %NN$%%	% 	%% %% %	% 	%s<   A
B-B!+B<B!B-BB!!B*	&B--B6c                    t               5  t        j                  j                  t        j
                  d      }t        |d      j                          t        j                  t        d|      5  | j                  t        t        f      5  | j                          d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nfilewbrn   )r   rH   r-   r   r   rn   r   r   r   r   r   NotADirectoryErrorr   r   r   s     r   test_non_directoryz!TestBadTempdir.test_non_directoryi  s    #% 	%ggll8#3#3V<G$%%'""8Y@ %&&(:<M'NO %NN$%%	% 	%% %% %	% 	%s<   A$C/CB5C$C5B>:CC
	CCN)
r2   r3   r4   unittestskipIfr   is_emscriptenr   r   r   r5   r   r   r   r   O  s5    X__E44%%r   r   c                      e Zd Z	  G d d      ZddZd Zd Zd Zd Ze	j                  d	        Z ej                  ed
       ej                          d               Z ej                  ed      d        Zd Zd Zd Zy)TestMkstempInnerc                   ~    e Zd Zej                  Zej                  Zej                  Z
ej                  Zd Zd Zd Zy)TestMkstempInner.mkstempedc                     |r| j                   }n| j                  }t        j                  |||      }t        j                  |||||      \  | _        | _        y r+   )_bflags_tflagsr   r   _mkstemp_innerfdrU   )r   rV   rW   rX   binflagsoutput_types          r   r/   z#TestMkstempInner.mkstemped.__init__{  sL    DLLE LLE"55c3DK#+#:#:3S%Q\#] TWdir   c                 D    t        j                  | j                  |       y r+   )rH   r   r  )r   r   s     r   r   z TestMkstempInner.mkstemped.write  s    HHTWWc"r   c                 p    | j                  | j                         | j                  | j                         y r+   )_closer  _unlinkrU   r   s    r   __del__z"TestMkstempInner.mkstemped.__del__  s"    KK LL#r   N)r2   r3   r4   r   _bin_openflagsr  _text_openflagsr	  rH   r   r  unlinkr  r/   r   r  r5   r   r   	mkstempedr  u  s:    ))**))	^	#	$r   r  Nc                 "   t        j                  |||      }|1|t        u rt        j                         }nt        j                         }| |       }| |       }| j                  ||||      }| j                  |j                  |||       |S r+   )r   r   r   rl   rm   r  r^   rU   )r   rV   rW   rX   r  r  r   s          r   	do_createzTestMkstempInner.do_create  s    11#sC@;c!))+**,;-C;-C~~c3S1tyy#sC0r   c                 N   | j                         j                  d       | j                  d      j                  d       | j                  d      j                  d       | j                  dd      j                  d       | j                  dd      j                  d       y )	N   blatr   rW   r   rX   rW   rX   aa.txt)r  r   r   s    r   
test_basiczTestMkstempInner.test_basic  s    w'3%%g.3%%g.3C(..w74V,227;r   c                 N   t        j                         }| j                  |d      j                  d       | j                  |d      j                  d       | j                  |d      j                  d       | j                  |dd      j                  d       | j                  |dd	      j                  d       | j	                  t
              5  | j                  d
d      j                  d       d d d        | j	                  t
              5  | j                  |d
      j                  d       d d d        | j	                  t
              5  | j                  |dd
      j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   WxY w# 1 sw Y   y xY w)Nr   rV   rX   r     arV   rW      brV   rW   rX      aa   .txtr   )r   rm   r  r   r   r   )r   dir_bs     r   test_basic_with_bytes_namesz,TestMkstempInner.test_basic_with_bytes_names  sc    $$&5c*0095d+11':5d+11':5d5;;GD5e9??Hy) 	;NNrsN+11':	;y) 	=NNu"N-33G<	=y) 	FNNu#2N6<<WE	F 	F		; 	;	= 	=	F 	Fs$   #F#F$FFFF$c                 l    t        t        t                    }|D ]  }| j                  d      ||<    y Nr  r  )listr   r   r  r   extantr   s      r   test_basic_manyz TestMkstempInner.test_basic_many  s4    eJ'( 	1A40F1I	1r   c                    t        j                         }	 | j                  |      j                  d       | j                  t	        j
                  |            j                  d       t        j                          t        j                  |       y # t        j                          t        j                  |       w xY wNr   r  )
r   rh   r  r   r$   r%   r   
gc_collectrH   rmdirr   rV   s     r   test_choose_directoryz&TestMkstempInner.test_choose_directory  s     	NNsN#))'2NNw||C0N177@ HHSM  HHSMs   AB +C c                     | j                         }t        j                  t        j                  |j                        j
                        }d}t        j                  dk(  r
|dz	  }|dz  }| j                  ||       y )N  win32   I   )	r  r   S_IMODErH   rU   r   sysplatformrN   )r   r   r   rv   users        r   test_file_modezTestMkstempInner.test_file_mode  sg     ~~||BGGDII.667<<7" q=Dz*Hx(r   zos.spawnl not availablec                    t         j                  rd}nd}| j                         }| j                  t	        j
                  |j                        d       d|j                  z  }	 t        }t        j                  j                  t        j                  j                  t        j                  j                  |            d      }t        j                  dk(  rdt        j                   z  }d|z  }nt        j                   }t	        j"                  t        j$                  t        j                   ||||      }| j'                  |dk  d	| z         | j'                  |dkD  d
|z         y # t        $ r t        j                  d   }Y w xY w)NvqFz%dr   ztf_inherit_check.pyr:  z"%s"z$child process caught fatal signal %dz child process reports failure %d)r   verboser  rN   rH   get_inheritabler  __file__	NameErrorr>  argvr-   r   r   rO   r?  
executabler   P_WAITr   )r   rC  r   r  metester	decoratedretvals           r   test_noinheritzTestMkstempInner.test_noinherit  s/   
 ??AA~~++DGG4e<DGG^	B bggoobggoob.AB35 <<7"/If_FI299cnniBO!:fWD	F!%G%NO+  	!B	s   %E) )F	F	ztext mode not availablec                 *   | j                  d      }|j                  d       |j                  d       t        j                  |j                  dt        j
                         | j                  t        j                  |j                  d      d       y )Nr   )r  s   blats   extra
r   r  )r  r   rH   lseekr  SEEK_SETrN   r   r   fs     r   test_textmodezTestMkstempInner.test_textmode  sc    
 NNqN!		

q"++&r*G4r   c                     t        j                  t        j                         t        j                         dt         j                  t
              S r   )r   r
  rl   rj   r  r   r   s    r   r   zTestMkstempInner.make_temp  s;    &&x':':'<'/'='='?')'/'>'>'*	, 	,r   c                    t               5  t        ddd      5  | j                         \  }}t        j                  |       | j                  |j                  d             | j                         \  }}t        j                  |       | j                  |j                  d             d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wNaaabbb)r   r   r   rH   r   rR   endswith)r   fd1name1fd2name2s        r   !test_collision_with_existing_filez2TestMkstempInner.test_collision_with_existing_file	  s     $% 	3"5%7	3>>+LS%HHSMOOENN512>>+LS%HHSMOOENN512	3 	3 	3 	3 	3 	3s#   CBB;*C;C	 CCc                 ~   t               5  t        ddd      5  t        j                         }| j	                  |j                  d             | j                         \  }}t        j                  |       | j	                  |j                  d             d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wrY  )	r   r   r   rh   rR   r\  r   rH   r   )r   rV   r  rU   s       r   &test_collision_with_existing_directoryz7TestMkstempInner.test_collision_with_existing_directory  s     $% 	2"5%7	2""$COOCLL/0)JRHHRLOODMM%01	2 	2 	2 	2 	2 	2s#   B3A=B'B3'B0	,B33B<)NNNrd   )r2   r3   r4   r  r  r!  r+  r1  r7  r   skip_unless_working_chmodrA  r   
skipUnless
has_spawnlr   requires_subprocessrP  has_textmoderV  r   ra  rc  r5   r   r   r  r  r  s    4$ $( <F"1 (() )) X%>? W  "#P # @#PJ X'@A5 B5,3
2r   r  c                       e Zd Z	 d Zd Zy)TestGetTempPrefixc                    t        j                         }| j                  |t               | j	                  t        |      d       t        j                         }| j                  |t               | j	                  t        |      d       y r   )r   rj   r   r   assertGreaterrJ   rk   r   )r   ppbs      r   test_sane_templatez$TestGetTempPrefix.test_sane_template&  sf    ""$a%3q61%$$&b%(3r7A&r   c                    t        j                         dz   }t        j                  d      }	 t        j                  j                  ||      }t        j                  |t        j                  t        j                  z        }t        j                  |       t        j                  |       t        j                  |       y # t        j                  |       w xY w)Nz
xxxxxx.xxxr   prefix)r   rj   rh   rH   r-   r   r   O_RDWRO_CREATr   r  r5  )r   rm  dr  s       r   test_usable_templatez&TestGetTempPrefix.test_usable_template2  s     ""$|3B'	Q"ABII

23BHHRLIIaLHHQKBHHQKs   A?C CN)r2   r3   r4   ro  rv  r5   r   r   rj  rj  #  s    
'r   rj  c                   &    e Zd Z	 d Zd Zd Zd Zy)TestGetTempDirc                 P   t        j                         t        j                         fD ]{  }| j                  t        j
                  j                  |      xs |t        j                  k(  d|z         | j                  t        j
                  j                  |      d|z         } y )Nz%r is not an absolute pathz%r is not a directory)	r   rl   rm   rR   rH   r-   isabsr   isdirr   ru  s     r   test_directory_existsz$TestGetTempDir.test_directory_existsF  s}     %%')=)=)?@ 	9AOOBGGMM!,>RYY81<>OOBGGMM!,3a79	9r   c                 x    t        j                         5 }|j                  d       d d d        y # 1 sw Y   y xY w)Nr  )r   re   r   )r   r   s     r   test_directory_writablez&TestGetTempDir.test_directory_writableO  s3     ((* 	 dJJw	  	  	 s   09c                 4   t        j                         }t        j                         }t        j                         }| j                  ||u        | j	                  t        |      t        |             | j                  |t        j                  |             y r+   )	r   rl   rm   rR   r   rK   rN   rH   fsdecode)r   r   r   r   s       r   r   zTestGetTempDir.test_same_thingX  sl    !!  "QDGT!W-BKKN+r   c                    t        j                  d      }t         j                  d c}t         _        	 t        j                         5 }||d<   | j                  t        j                         |       d d d        |t         _        t        j                  |       y # 1 sw Y   *xY w# |t         _        t        j                  |       w xY w)Nz-Tempr   )r   rh   rn   r   r   rN   rl   r5  )r   case_sensitive_tempdir_tempdirr   s       r   test_case_sensitivez"TestGetTempDir.test_case_sensitiveb  s     "*!1!1'!:%-%5%5t"("	4..0 PC 6H  !4!4!68NOP
  (HOO23P P
  (HOO23s#   B& *B1B& B#B& &"CN)r2   r3   r4   r}  r  r   r  r5   r   r   rx  rx  C  s    9 ,4r   rx  c                   .    e Zd Z	 ddZd Zd Zd Zd Zy)TestMkstempNc           	         t        j                  |||      }|1|t        u rt        j                         }nt        j                         }| |       }| |       }t        j
                  |||      \  }}t        j                  j                  |      \  }}t        j                  j                  |      }	| j                  |	|d|	d|d       	 | j                  ||||       t        j                  |       t        j                  |       y # t        j                  |       t        j                  |       w xY w)NrV   rr  suffixzDirectory 'z' incorrectly returned as '')r   r   r   rl   rm   rg   rH   r-   rI   rO   rN   r^   r   r  )
r   rV   rW   rX   r  r  rU   rY   rZ   adirs
             r   r  zTestMkstemp.do_createt  s    11#sC@;c!))+**,;-C;-C%%#c#F
Td+uwws#t=A4H	J	NN4c3/HHRLIIdO HHRLIIdOs   D ,D?c                     | j                          | j                  d       | j                  d       | j                  dd       | j                  dd       | j                  d	       y )
Nr   r  r   r  r  r  r   .r   r  r   s    r   r!  zTestMkstemp.test_basic  sV    333C(4V,3r   c                    t        j                         }| j                  |d       | j                  |d       | j                  |d       | j                  |dd       | j                  |dd       | j                  d	
       | j                  t              5  | j                  ddd       d d d        | j                  t              5  | j                  d	dd       d d d        | j                  t              5  | j                  d	dd       d d d        y # 1 sw Y   nxY w# 1 sw Y   HxY w# 1 sw Y   y xY w)Nr   r#  r$  r%  r&  r'  r(  r)     .r   r  r  r   )r   rm   r  r   r   r|  s     r   r+  z'TestMkstemp.test_basic_with_bytes_names  s      "1#&1$'1$'1$D11%W54 y) 	<NNs7N;	<y) 	<NNt7N;	<y) 	<NNtFN;	< 	<		< 	<	< 	<	< 	<s$   DD+D7D(+D47E c                     t        j                         }	 | j                  |       | j                  t        j                  |             t        j                  |       y # t        j                  |       w xY wNr   )r   rh   r  r$   r%   rH   r5  r6  s     r   r7  z!TestMkstemp.test_choose_directory  sQ     	NNsN#NNw||C0N1HHSMBHHSMs   7A# #A:c                 r   t         j                  }| j                  t         j                  t        t	        d       f       	 t        j
                         \  }}t        j                  |       t        j                  |       | j                  |t               t        j                         t         _        | j                  t         j                  t               | j                  t        j                         t               | j                  t        j                         t               t        j
                         \  }}t        j                  |       t        j                  |       | j                  |t               t        j
                  d      \  }}t        j                  |       t        j                  |       | j                  |t               t        j
                  d      \  }}t        j                  |       t        j                  |       | j                  |t               t        j
                  t        j                               \  }}t        j                  |       t        j                  |       | j                  |t               |t         _        y # |t         _        w xY w)Nr   r  z
test-temp-rq  r   )r   rn   r   r   rK   rg   rH   r   r  rm   r   rl   )r   orig_tempdirr  r-   s       r   .test_for_tempdir_is_bytes_issue40701_api_wartsz:TestMkstemp.test_for_tempdir_is_bytes_issue40701_api_warts  s   ''h..d4j0AB	,'')HBHHRLIIdO!!$,'335H!!("2"2E:!!("5"5"7=!!("6"6"8%@'')HBHHRLIIdO!!$.''v6HBHHRLIIdO!!$,''|<HBHHRLIIdO!!$,''H,?,?,ABHBHHRLIIdO!!$,+H|Hs   IJ) )J6rG   )r2   r3   r4   r  r!  r+  r7  r  r5   r   r   r  r  q  s    . <$,r   r  c                   p    e Zd Z	 d ZddZd Zd Zd Zd Ze	j                  d        Zd	 Zd
 Zd Zd Zy)TestMkdtempc                 *    t        j                         S r+   )r   rh   r   s    r   r   zTestMkdtemp.make_temp  s    !!r   Nc                 N   t        j                  |||      }|1|t        u rt        j                         }nt        j                         }| |       }| |       }t        j
                  |||      }	 | j                  ||||       |S #  t        j                  |        xY w)Nr  )	r   r   r   rl   rm   rh   r^   rH   r5  )r   rV   rW   rX   r  rU   s         r   r  zTestMkdtemp.do_create  s    11#sC@;c!))+**,;-C;-CCC@	NN4c3/K	HHTNs   6B B$c                 v   t        j                  | j                                t        j                  | j                  d             t        j                  | j                  d             t        j                  | j                  dd             t        j                  | j                  dd             y Nr   r  r   r  r  r  r   )rH   r5  r  r   s    r   r!  zTestMkdtemp.test_basic  su    
!"
C()
C()
CS12
Df56r   c                    t        j                         }t        j                  | j	                  |             t        j                  | j	                  |d             t        j                  | j	                  |d             t        j                  | j	                  |dd             t        j                  | j	                  |dd             | j                  t              5  t        j                  | j	                  |d	d             d d d        | j                  t              5  t        j                  | j	                  |dd
             d d d        | j                  t              5  t        j                  | j	                  ddd             d d d        y # 1 sw Y   xY w# 1 sw Y   [xY w# 1 sw Y   y xY w)Nr   r$  r%  r&  r#  r'  r(  r)  r  r   r   )r   rm   rH   r5  r  r   r   r|  s     r   r+  z'TestMkdtemp.test_basic_with_bytes_names  s[     "
A&'
A401
A401
A4T:;
A5g>?y) 	CHHT^^t^AB	Cy) 	CHHT^^u&^AB	Cy) 	EHHT^^7^CD	E 	E		C 	C	C 	C	E 	Es$   )(F$.(F03(F<$F-0F9<Gc                 .   t        t        t                    }	 |D ]  }| j                  d      ||<    	 |D ](  }t	        |t
              st        j                  |       * y # |D ](  }t	        |t
              st        j                  |       * w xY wr-  )r.  r   r   r  rL   r   rH   r5  r/  s      r   r1  zTestMkdtemp.test_basic_many   s    eJ'(	  5 NNtN4q	5   a%HHQK V  a%HHQK s   A% %B<Bc                 F   t        j                         }	 t        j                  | j	                  |             t        j                  | j	                  t        j                  |                   t        j                  |       y # t        j                  |       w xY wr  )r   rh   rH   r5  r  r$   r%   r6  s     r   r7  z!TestMkdtemp.test_choose_directory  sc     	HHT^^^,-HHT^^S(9^:;HHSMBHHSMs   AB	 	B c                 T   | j                         }	 t        j                  t        j                  |      j                        }|dz  }d}t
        j                  dk(  r
|dz	  }|dz  }| j                  ||       t        j                  |       y # t        j                  |       w xY w)Ni  i  r:  r;  r<  )	r  r   r=  rH   r   r>  r?  rN   r5  )r   rV   r   rv   r@  s        r   	test_modezTestMkdtemp.test_mode  s     nn	<< 4 45DEMDH||w&  1}:.T8,HHSMBHHSMs   A(B B'c                    t               5  t        ddd      5  t        j                  d      }|j	                          | j                  |j                  j                  d             t        j                         }| j                  |j                  d             d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NrZ  r[  Fdelete)	r   r   r   re   r   rR   rU   r\  rh   )r   r   rV   s      r   ra  z-TestMkdtemp.test_collision_with_existing_file&  s     $% 	1"5%7	1..e<DJJLOODII..u56""$COOCLL/0	1 	1 	1 	1 	1 	1s#   B;BB/B;/B8	4B;;Cc                 V   t               5  t        ddd      5  t        j                         }| j	                  |j                  d             t        j                         }| j	                  |j                  d             d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wrY  )r   r   r   rh   rR   r\  )r   dir1dir2s      r   rc  z2TestMkdtemp.test_collision_with_existing_directory1  s     $% 	2"5%7	2##%DOODMM%01##%DOODMM%01	2 	2 	2 	2 	2 	2s#   BA)BBB	BB(c                    t         j                  }| j                  t         j                  t        t	        d       f       	 t        j
                         }t        j                  |       | j                  |t               t        j                         t         _        | j                  t         j                  t               | j                  t        j                         t               | j                  t        j                         t               t        j
                         }t        j                  |       | j                  |t               t        j
                  d      }t        j                  |       | j                  |t               t        j
                  d      }t        j                  |       | j                  |t               t        j
                  t        j                               }t        j                  |       | j                  |t               |t         _        y # |t         _        w xY w)Nz-dirr  ztest-mkdtemp-rq  r   )r   rn   r   r   rK   rh   rH   r5  rm   r   rl   )r   r  r-   s      r   r  z:TestMkdtemp.test_for_tempdir_is_bytes_issue40701_api_warts;  sw   ''h..d4j0AB	,##%DHHTN!!$,'335H!!("2"2E:!!("5"5"7=!!("6"6"8%@##%DHHTN!!$.##62DHHTN!!$,##?;DHHTN!!$,##(;(;(=>DHHTN!!$,+H|Hs   G$H1 1H>c                     	 t        j                  d      }| j                  t        j                  j                  |             t        j                  |       y # t        j                         w xY w)Nr  r   )r   rh   rR   rH   r-   rz  r5  r.   s     r   test_path_is_absolutez!TestMkdtemp.test_path_is_absoluteU  sG    	##,DOOBGGMM$/0HHTNBHHTNs   AA A3rG   )r2   r3   r4   r   r  r!  r+  r1  r7  r   rd  r  ra  rc  r  r  r5   r   r   r  r    sR    "(7E	  (( )"	12,4r   r  c                   R     e Zd Z	  fdZ fdZ G d d      ZddZd Zd Z xZ	S )	
TestMktempc                 T    t        j                         | _        t        |           y r+   )r   rh   rV   r   rE   r   s    r   rE   zTestMktemp.setUpd  s    ##%r   c                     | j                   r&t        j                  | j                          d | _         t        |           y r+   )rV   rH   r5  r   tearDownr   s    r   r  zTestMktemp.tearDownh  s,    88HHTXXDHr   c                   H    e Zd Zej                  Zej                  Zd Z	d Z
y)TestMktemp.mktempedc                     t        j                  |||      | _        t        j                  t        j
                  | j                  | j                  d             y )Nr  r9  )r   r<   rU   rH   r   r   r  )r   rV   rW   rX   s       r   r/   zTestMktemp.mktemped.__init__r  s9     CCHDI HHRWWTYYe<=r   c                 :    | j                  | j                         y r+   )r  rU   r   s    r   r  zTestMktemp.mktemped.__del__x  s    LL#r   N)r2   r3   r4   rH   r  r  r   r  r  r/   r  r5   r   r   mktempedr  n  s     ))))	>	$r   r  c                     | j                  | j                  ||      }| j                  |j                  | j                  ||       |S r+   )r  rV   r^   rU   )r   rW   rX   r   s       r   r  zTestMktemp.do_create{  s7    }}TXXsC0tyy$((C5r   c                     | j                          | j                  d       | j                  d       | j                  dd       | j                  dd       y r  r  r   s    r   r!  zTestMktemp.test_basic  H    333C(4V,r   c                     t        t        t                    }|D ]  }| j                  d      ||<    ~t	        j
                          y r-  )r.  r   r   r  r   r4  r/  s      r   r   zTestMktemp.test_many  sC    eJ'( 	1A40F1I	1r   )r   r   )
r2   r3   r4   rE   r  r  r  r!  r   r   r   s   @r   r  r  _  s)    $ $-r   r  c                   v    e Zd Z	 ddZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestNamedTemporaryFileNc                     |t        j                         }t        j                  ||||      }| j                  |j                  |||       |S )N)rV   rr  r  r  )r   rl   re   r^   rU   )r   rV   rW   rX   r  r   s         r   r  z TestNamedTemporaryFile.do_create  sK    ;%%'C**s3s28: 	tyy#sC0r   c                     | j                          | j                  d       | j                  d       | j                  dd       | j                  dd       y r  r  r   s    r   r!  z!TestNamedTemporaryFile.test_basic  r  r   c                     | j                         }t        j                  |      }|j                  }|j                  }~ |d       ~ |d       ~t	        j
                  d      r| j                   |              y y )N   foos   barT)cpython)r  weakrefrefr   r   check_impl_detailassertIsNone)r   rU  wrr   write2s        r   test_method_lookupz)TestNamedTemporaryFile.test_method_lookup  si     NN[[^fv$$T2bd# 3r   c                     g dfd}t         |             D ]  \  }}| j                  ||           | j                  t              dz
         y )N)s   spam
s   eggs
s   beans
c                      t        j                  d      } | j                  dj                               | j	                  d       | S )Nw+br   r   r   )r   re   r   r   seek)rU  liness    r   	make_filez3TestNamedTemporaryFile.test_iter.<locals>.make_file  s7    ++7AGGCHHUO$FF1IHr   rd   )	enumeraterN   rJ   )r   r  r   lr  s       @r   	test_iterz TestNamedTemporaryFile.test_iter  sW     3	
 ik* 	*DAqQa)	*CJN+r   c                     t        j                         }| j                  t        j                  j                  |j                        d|j                  z         y )Nz$NamedTemporaryFile %s does not exist)r   re   rR   rH   r-   existsrU   rT  s     r   test_creates_namedz)TestNamedTemporaryFile.test_creates_named  s<    '')qvv.>G	Ir   c                    t        j                         }	 t        j                  |      5 }|j                  d       d d d        | j	                  t        j                  |      g        | j                  t
        j                  j                  j                        d|j                  z         t        j                  |       y # 1 sw Y   xY w# t        j                  |       w xY w)Nr   r  z(NamedTemporaryFile %s exists after close)r   rh   re   r   rN   rH   r   r   r-   r  rU   r5  r   rV   rU  s      r   test_del_on_closez(TestNamedTemporaryFile.test_del_on_close  s     	,,5 ! !RZZ_b1RWW^^AFF3BQVVKM HHSM! ! HHSMs"   C CA3C CC C*c                     t        j                         }d }	 t        j                  |d      }|j                  }|j	                  d       |j                          | j                  t        j                  j                  |j                        d|j                  z         |t        j                  |       t        j                  |       y # |t        j                  |       t        j                  |       w xY w)NF)rV   r  r  z)NamedTemporaryFile %s missing after close)r   rh   re   rU   r   r   rR   rH   r-   r  r  r5  )r   rV   tmprU  s       r   test_dis_del_on_closez,TestNamedTemporaryFile.test_dis_del_on_close  s     
	++EBA&&CGGGGGIOOBGGNN1662CaffLN 		#HHSM 		#HHSMs   B
C .C=c                     t        j                         }|j                  d       |j                          |j                          |j                          y N   abc
)r   re   r   r   rT  s     r   test_multiple_closez*TestNamedTemporaryFile.test_multiple_close  s7    '')							r   c                 n   t        j                         5 | j                  t        j                  j                  j                               d d d        | j                  t        j                  j                  j                               fd}| j                  t        |       y # 1 sw Y   ]xY w)Nc                  6     5  	 d d d        y # 1 sw Y   y xY wr+   r5   rU  s   r   
use_closedz?TestNamedTemporaryFile.test_context_manager.<locals>.use_closed            )
r   re   rR   rH   r-   r  rU   r   r   r   r   r  rU  s     @r   test_context_managerz+TestNamedTemporaryFile.test_context_manager  sy    ((* 	4aOOBGGNN16623	4/0	 	*j1	4 	4s   9B++B4c                    t        j                         }	 t        j                  |dd      5 }|j                  d       |j                  }|j                          | j                         5  | j                  t        j                  j                  |j                        d|j                  d       d d d        d d d        | j                         5  | j                  t        j                  j                  j                        d|j                  d       d d d        t        j                  |       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   7xY w# t        j                  |       w xY w)NTFrV   r  delete_on_closer  NamedTemporaryFile z= is incorrectly deleted on closure when delete_on_close=Falsez" exists after context manager exit)r   rh   re   r   rU   r   subTestrR   rH   r-   r  r   r5  )r   rV   rU  f_names       r   :test_context_man_not_del_on_close_if_delete_on_close_falsezQTestNamedTemporaryFile.test_context_man_not_del_on_close_if_delete_on_close_false  s8   
  	,,48=BD 
NGH 	\\^ NOOBGGNN166$:1!&& <L MNN
N  @  !7#6qvvj A> "?@@ HHSMN N
N 
N@ @ HHSMsT   E >E,AD:4E<E AEE :E	?EEE EE E5c                 f   t        j                         }	 t        j                  |dd      5 }|j                  d       |j	                          t        j                  |j                         d d d        t        j                  |       y # 1 sw Y   xY w# t        j                  |       w xY wNTFr  r  )	r   rh   re   r   r   rH   r  rU   r5  r  s      r   &test_context_man_ok_to_delete_manuallyz=TestNamedTemporaryFile.test_context_man_ok_to_delete_manually  s      		,,48=BD "GH 			!&&!" HHSM" " HHSMs#   B AB/B BB B0c                    t        j                         }d}	 t        j                  |dd      5 }|j                  d       |j                  }d d d        | j                  t        j                  j                  j                        d|j                  d       t        j                  |       t        j                  |       y # 1 sw Y   {xY w# t        j                  |       t        j                  |       w xY w)Nr   FTr  r  r  z exists after close)r   rh   re   r   rU   rR   rH   r-   r  r  r5  )r   rV   r  rU  s       r   (test_context_man_not_del_if_delete_falsez?TestNamedTemporaryFile.test_context_man_not_del_if_delete_false.  s     
	,,U=AC  FG   OOBGGNN1662-affZ7JKM IIfHHSM    IIfHHSMs#   C CAC CC ,D c                 0   d }t        j                          t        j                         }	  ||      }| j	                  t
        j                  j                  |      d|d       t        j                  |       y # t        j                  |       w xY w)Nc                 p    t        j                  | dd      }|j                  }|j                  d       |S r  )r   re   rU   r   rV   rU  tmp_names      r   my_funcz=TestNamedTemporaryFile.test_del_by_finalizer.<locals>.my_funcA  s6    ++D<ACAvvHGGG Or   r  z exists after finalizer )	gccollectr   rh   r   rH   r-   r  r5  )r   r  rV   r  s       r   test_del_by_finalizerz,TestNamedTemporaryFile.test_del_by_finalizer>  su    	 	

 	s|HRWW^^H5-h\ :2 34 HHSMBHHSMs   ;A> >Bc                 @    dt         fd}t        j                          y )Nreturnc                     t        j                  | dd      }|j                  }|j                  d       |j	                          t        j                  |       |S r  )r   re   rU   r   r   rH   r  r  s      r   r  zVTestNamedTemporaryFile.test_correct_finalizer_work_if_already_deleted.<locals>.my_funcX  sI    ++D<ACAvvHGGGGGIIIhOr   )r   r  r  )r   r  s     r   .test_correct_finalizer_work_if_already_deletedzETestNamedTemporaryFile.test_correct_finalizer_work_if_already_deletedT  s    	# 	 	

r   c                    t        j                         }| j                  t        j                  |       | j                  t              5  t        j                  d|       d d d        | j                  t              5  t        j                  d|       d d d        | j                  t        j                  |      g        y # 1 sw Y   dxY w# 1 sw Y   ;xY wNr  )r   rV      )r   rh   
addCleanupr   r   r   r   re   r   rN   rH   r   r6  s     r   test_bad_modez$TestNamedTemporaryFile.test_bad_modec  s     	((#.z* 	<''Ts;	<y) 	9''QC8	9C"-		< 	<	9 	9   
C?CCCc                 :   t        j                         }| j                  t        j                  |       | j                  t              5  t        j                  dd|       d d d        | j                  t        j                  |      g        y # 1 sw Y   /xY wNwzbad-encoding)encodingrV   )r   rh   r  r   r   r   LookupErrorre   rN   rH   r   r6  s     r   test_bad_encodingz(TestNamedTemporaryFile.test_bad_encodingl  su     	((#.{+ 	O''n#N	OC"-	O 	O   
BBc                 `   t        j                         }| j                  t        j                  |       t        j                  d      5 }t        j                  dt        j                               5 }t               |_	        | j                  t              5  t        j                  |       d d d        d d d        d d d                j                  j                          | j                  t        j                   |      g        y # 1 sw Y   ^xY w# 1 sw Y   bxY w# 1 sw Y   fxY w)Nztempfile._TemporaryFileWrapperzio.openr   )r   rh   r  r   r   r   patch	mock_openKeyboardInterruptside_effectr   re   r   assert_calledrN   rH   r   )r   rV   mock_ntfr  s       r   test_unexpected_errorz,TestNamedTemporaryFile.test_unexpected_errors  s     	((#.ZZ89 	5XZZ	4>>#34	58A#4#6H ""#45 5++45	5 	5
 	'')C"-5 5	5 	5 	5 	5s<   
)D$3%DD/D7D$DDD!	D$$D-)Nr   r   T)r2   r3   r4   r  r!  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r5   r   r   r  r    s[    $-$ ,I
 28 ,..	.r   r  c                       e Zd Z	 ddZd Zd Zd Zd Zd Z e	j                  ej                  d      d	        Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z e	j                  ej                  d      d        Zd Zy)TestSpooledTemporaryFileNc                 d    |t        j                         }t        j                  ||||      }|S )N)max_sizerV   rr  r  )r   rl   rp   )r   r  rV   rW   rX   r   s         r   r  z"TestSpooledTemporaryFile.do_create  s2    ;%%'C,,hCPS\_`r   c                     | j                         }| j                  |j                         | j                  ddd      }| j                  |j                         y )Nr   r   r   )r  rW   rX   )r  r   _rolledrT  s     r   r!  z#TestSpooledTemporaryFile.test_basic  sF    NN#NNCSfN=#r   c                 `    | j                  | j                         t        j                         y r+   )r   r  ioIOBaser   s    r   test_is_iobasez'TestSpooledTemporaryFile.test_is_iobase  s    dnn.		:r   c                 ~    h d}t        t        t        j                              }||z
  }| j	                  |d       y )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)setrV   r   rp   r   )r   iobase_attrsspooledtempfile_attrsmissing_attrss       r   test_iobase_interfacez.TestSpooledTemporaryFile.test_iobase_interface  sB    	
 !$C(E(E$F G$'<</	
r   c                 N   t        j                         }	 t        j                  d|      }| j                  |j                         |j                  d       | j                  |j                         |j                  }|j                          | j                  t        j                  |      g        t        |t              s2| j                  t        j                  j                  |      d|z         t        j                   |       y # t        j                   |       w xY w)N
   )r  rV   s   blat blat blat blat blat z*SpooledTemporaryFile %s exists after close)r   rh   rp   r   r  r   rR   rU   r   rN   rH   r   rL   intr-   r  r5  )r   rV   rU  filenames       r   r  z*TestSpooledTemporaryFile.test_del_on_close  s     	--rsCAQYY'GGL!OOAII&vvHGGIRZZ_b1h,  !9@8KM HHSMBHHSMs   C!D D$c                     | j                  d      }|j                  d       | j                  |j                  d        | j	                  t
              5  |j                          d d d        y # 1 sw Y   y xY w)Nr;  r  r  )r  r   rN   rU   assertWarnsResourceWarningr  rT  s     r   test_del_unrolled_filez/TestSpooledTemporaryFile.test_del_unrolled_file  s_     NNBN'	&o. 	IIK	 	 	s   A//A8z&Emscripten cannot fstat renamed files.c                    | j                  d      }|j                  d       |j                  }| j                  t        j
                  j                  |             | j                  t              5  |j                          d d d        | j                  t        j
                  j                  |      d|z         y # 1 sw Y   <xY w)Nr  r?  r  z9Rolled SpooledTemporaryFile (name=%s) exists after delete)r  r   rU   rR   rH   r-   r  r@  rA  r  r   )r   rU  rU   s      r   test_del_rolled_filez-TestSpooledTemporaryFile.test_del_rolled_file  s     NNAN&	vvt,-o. 	IIK	GGNN4 G$N	
	 	s   3B??Cc                     | j                  d      }| j                  |j                         t        d      D ]%  }|j	                  dd       |j                  d       ' | j                  |j                         y )N   r?     r      xxxxxxxxxxxxxxxxxxxx)r  r   r  r   r  r   )r   rU  r   s      r   test_rewrite_smallz+TestSpooledTemporaryFile.test_rewrite_small  sd    NNBN'#q 	AFF1aLGGI	 	#r   c                 f   | j                  d      }| j                  |j                         |j                  d       | j                  |j                         |j                  d       | j                  |j                         |j                  d       | j	                  |j                         y )NrF  r?  rH  
   xxxxxxxxxx   x)r  r   r  r   rR   rT  s     r   test_write_sequentialz.TestSpooledTemporaryFile.test_write_sequential  s}     NNBN'#		#		#			"r   c                     | j                         }|j                  d       |j                  d      }| j                  |d       |j	                         }| j                  |d       y )N)rL     y   zr   s   xyz)r  r4  r  rN   r   )r   rU  posbufs       r   test_writelinesz(TestSpooledTemporaryFile.test_writelines  sS    NN	'(ffQia ffhf%r   c                     | j                  d      }|j                  d       | j                  |j                         |j	                  d       | j                  |j                         y )N#   r?  )rH  rK  s   xxxxxrL  )r  r4  r   r  r   rR   rT  s     r   test_writelines_sequentialz3TestSpooledTemporaryFile.test_writelines_sequential  sN     NNBN'	56#			"r   c                 4   | j                  d      }| j                  |j                         |j                  dd      }| j	                  |d       | j                  |j                         |j                  d       | j                  |j                         y )NrF  r?  r   r   rL  )r  r   r  r  rN   r   rR   )r   rU  rQ  s      r   test_sparsez$TestSpooledTemporaryFile.test_sparse  sr     NNBN'#ffS!nc"#			"r   c                     | j                  d      }| j                  |j                         | j                  |j	                         dkD         | j                  |j                         y )NrF  r?  r   )r  r   r  rR   r%  rT  s     r   test_filenoz$TestSpooledTemporaryFile.test_fileno	  sJ    NNBN'#
Q'		"r   c                     t        j                         }|j                  d       | j                  |j                         |j                          |j                          |j                          y r  )r   rp   r   r   r  r   rT  s     r   #test_multiple_close_before_rolloverz<TestSpooledTemporaryFile.test_multiple_close_before_rollover  sI    ))+	#						r   c                     t        j                  d      }|j                  d       | j                  |j                         |j                          |j                          |j                          y )Nrd   r?  r  )r   rp   r   rR   r  r   rT  s     r   "test_multiple_close_after_rolloverz;TestSpooledTemporaryFile.test_multiple_close_after_rollover  sI    ))15			"						r   c                     | j                  d      }|j                  }|j                  }|j                  } |d        |d        |dd       | j	                   |d      d       y )NrF  r?  s#   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas#   bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr   F   sF   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)r  r   r   r  rN   )r   rU  r   r   r  s        r   test_bound_methodsz+TestSpooledTemporaryFile.test_bound_methods"  s]     NNBN'vvvviiQ
b#45r   c                 J   t        j                  d      }|j                  d       | j                  |j                         | j                  |j                  d       | j                  |j                         | j                  t              5  |j                   d d d        | j                  t              5  |j                   d d d        | j                  t              5  |j                   d d d        |j                  d       | j                  |j                         | j                  |j                  d       | j                  |j                         | j                  t              5  |j                   d d d        | j                  t              5  |j                   d d d        | j                  t              5  |j                   d d d        y # 1 sw Y   @xY w# 1 sw Y   #xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   gxY w# 1 sw Y   y xY w)Nr;  r?  rK  r  rL  zrb+)r   rp   r   r   r  rN   r   r  rU   r   r   r*  r  r$  rR   assertIsNotNonerT  s     r   test_propertiesz(TestSpooledTemporaryFile.test_properties0  s   ))26		#'!&&!~. 	JJ	~. 	JJ	~. 	HH	 	
		"'QVV$~. 	JJ	~. 	JJ	~. 	HH	 		 		 		 		 		 		 	sH   G9G'#G40HHHG$'G14G>H
HH"c                    t        j                  ddd      }|j                  d       |j                  d       | j	                  |j                         d       |j                  d       |j                  d       | j	                  |j                         d       | j                  |j                         | j	                  |j                  d       | j                  |j                         | j	                  |j                  t        j                         | j	                  |j                  d       | j	                  |j                  d	       |j                  d
       |j                  d       | j	                  |j                         d       |j                  d       |j                  d       | j	                  |j                         d       | j!                  |j                         | j	                  |j                  d       | j#                  |j                         | j	                  |j                  t        j                         | j	                  |j                  d       | j	                  |j                  d	       y )Nw+r;  utf-8)r   r  r  zabc
r   zdef
zabc
def
strictzxyzzy
zabc
def
xyzzy
zfoobar
zabc
def
xyzzy
foobar
)r   rp   r   r  rN   r   r   r  r   r  rU   r*  rH   linesepr  r$  rR   rc  rT  s     r   test_text_modez'TestSpooledTemporaryFile.test_text_modeH  s    ))tb3:<		q	7+		q	<0#&!&&!RZZ0W-8,			q	#67		q	#BC		"&QVV$RZZ0W-8,r   c                    t        j                  ddddd      }|j                  d       |j                  d       | j	                  |j                         d       | j                  |j                         | j	                  |j                  d       | j                  |j                         | j                  |j                         | j	                  |j                  d       | j	                  |j                  d       |j                  d	       |j                  d
       |j                  d       | j	                  |j                         d       | j                  |j                         | j	                  |j                  d       | j                  |j                         | j                  |j                         | j	                  |j                  d       | j	                  |j                  d       y )Nrf  r;  r   rg  r;   )r   r  newliner  r$  u   Λ
r   u   ΜΜΜΜΜΜΜΜΜΜ
u(   ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝuB   Λ
ΜΜΜΜΜΜΜΜΜΜ
ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ)r   rp   r   r  rN   r   r   r  r   r  rU   rc  r*  r  r$  rR   rT  s     r   test_text_newline_and_encodingz7TestSpooledTemporaryFile.test_text_newline_and_encodingh  sm   ))tb24w19; 	
	q	<0#&!&&!QZZ(W-8,	&'		q	I	K		"&QVV$QZZ(W-8,r   c                 4   t        j                  d      5 | j                  j                         | j                  j                         d d d        | j                  j                         fd}| j                  t        |       y # 1 sw Y   @xY w)Nrd   r?  c                  6     5  	 d d d        y # 1 sw Y   y xY wr+   r5   r  s   r   r  zQTestSpooledTemporaryFile.test_context_manager_before_rollover.<locals>.use_closed  r  r  )r   rp   r   r  r"  rR   r   r   r  s     @r   $test_context_manager_before_rolloverz=TestSpooledTemporaryFile.test_context_manager_before_rollover  su    **A6 	'!QYY'QXX&	' 	!	 	*j1	' 	's   7BBc                    t        j                  d      5 | j                  j                         j	                  d       j                          | j                  j                         | j                  j                         d d d        | j                  j                         fd}| j                  t        |       y # 1 sw Y   @xY w)Nrd   r?  r  c                  6     5  	 d d d        y # 1 sw Y   y xY wr+   r5   r  s   r   r  zQTestSpooledTemporaryFile.test_context_manager_during_rollover.<locals>.use_closed  r  r  )
r   rp   r   r  r   r   rR   r"  r   r   r  s     @r   $test_context_manager_during_rolloverz=TestSpooledTemporaryFile.test_context_manager_during_rollover  s    **A6 	'!QYY'GGHGGIOOAII&QXX&	' 	!	 	*j1	' 	's   A3C

Cc                 z   t        j                  d      j                  d       j                          | j	                  j
                         5  | j                  j                         d d d        | j	                  j                         fd}| j                  t        |       y # 1 sw Y   @xY w)Nrd   r?  r  c                  6     5  	 d d d        y # 1 sw Y   y xY wr+   r5   r  s   r   r  zPTestSpooledTemporaryFile.test_context_manager_after_rollover.<locals>.use_closed  r  r  )
r   rp   r   r   rR   r  r   r"  r   r   r  s     @r   #test_context_manager_after_rolloverz<TestSpooledTemporaryFile.test_context_manager_after_rollover  s    ))15					" 	'QXX&	'!	 	*j1	' 	's   B11B:c                 8   t        j                  d      }|j                  d       |j                  d       |j	                          | j                  |j                         | j                  |j                  j                         d       t        j                  d      }|j                  d       |j	                  d       | j                  |j                         | j                  |j                  j                         d       t        j                  d      }|j                  d       |j	                  d       | j                  |j                         | j                  t        j                  |j                               j                  d       y )	Nr;  r?  s   abcdefg
r   r      s   abcdr   )r   rp   r   r  r/  r   r  rN   _filegetvaluerR   rH   fstatr%  st_sizerT  s     r   !test_truncate_with_size_parameterz:TestSpooledTemporaryFile.test_truncate_with_size_parameter  s   
 ))26		q		

#))+S1))26		

1#))+W5))26		

2		"!((*-55r:r   c                 n    | j                  t        j                  t           t        j
                         y r+   )r   r   rp   r   typesGenericAliasr   s    r   test_class_getitemz+TestSpooledTemporaryFile.test_class_getitem  s&    h;;EB((	*r   )r   Nr   r   )r2   r3   r4   r  r!  r  r9  r  rB  r   r  r   r  rD  rI  rM  rS  rV  rX  rZ  r\  r^  ra  rd  rj  rm  rp  rs  rv  r}  r  r5   r   r   r  r    s    &$;
*" X__G

$
#&#	##60-@-4	222 X__G;;**r   r  c                   8    e Zd Z	 d Zd Zd Zd Zd Zd Zd Z	y)	TestTemporaryFilec                 ,    t        j                          y r+   )r   rf   r   s    r   r!  zTestTemporaryFile.test_basic  s     ""$r   c                     t        j                         }t        j                  |      }|j                  d       	 t	        j
                  |       y #  |j                          t	        j
                  |        xY wr3  )r   rh   rf   r   rH   r5  r   r  s      r   test_has_no_namez"TestTemporaryFile.test_has_no_name  sZ    ""$C&&3/AGGG	s   A (A;c                     t        j                         }|j                  d       |j                          |j                          |j                          y r  )r   rf   r   r   rT  s     r   r  z%TestTemporaryFile.test_multiple_close  s7    &&(AGGHGGIGGIGGIr   c                 `      fd} |dd        |dd        |ddd        |d	dd
       y )Nc                     t        j                  |i |5 }|j                  |        |j                  d       j	                  | |j                                d d d        y # 1 sw Y   y xY wr   )r   rf   r   r  rN   r   )inputr   r   fileobjr   s       r   	roundtripz;TestTemporaryFile.test_mode_and_encoding.<locals>.roundtrip  sZ    ++T<V< <MM%(LLO$$UGLLN;< < <s   AA##A,s   1234r  zabdc
rf  u   Λzutf-16)r  zfoo
r   )rl  r5   )r   r  s   ` r   test_mode_and_encodingz(TestTemporaryFile.test_mode_and_encoding  s6    < gu%h%hx8ir2r   c                    t        j                         }| j                  t        j                  |       | j                  t              5  t        j                  d|       d d d        | j                  t              5  t        j                  d|       d d d        | j                  t        j                  |      g        y # 1 sw Y   dxY w# 1 sw Y   ;xY wr   )r   rh   r  r   r   r   r   rf   r   rN   rH   r   r6  s     r   r  zTestTemporaryFile.test_bad_mode  s    ""$COOI,,c2"":. ;&&Dc:;""9- 8&&A378RZZ_b1	; ;8 8r  c                 :   t        j                         }| j                  t        j                  |       | j                  t              5  t        j                  dd|       d d d        | j                  t        j                  |      g        y # 1 sw Y   /xY wr  )r   rh   r  r   r   r   r	  rf   rN   rH   r   r6  s     r   r
  z#TestTemporaryFile.test_bad_encoding  su    ""$COOI,,c2"";/ N&&s^MNRZZ_b1N Nr  c           
         t        j                         }| j                  t        j                  |       t        j                  dd      5  t        j                  d      5 }t        j                  d      5 }t        j                  d      5 }t               |_        | j                  t              5  t        j                  |       d d d        d d d        d d d        d d d        d d d        j                          | j                  t        j                  |      g        y # 1 sw Y   _xY w# 1 sw Y   cxY w# 1 sw Y   gxY w# 1 sw Y   kxY w# 1 sw Y   oxY w)Nztempfile._O_TMPFILE_WORKSFz	os.unlinkzos.openzos.closer   )r   rh   r  r   r   r   r  r  r  r   rf   r  rN   rH   r   )r   rV   mock_unlinkr  
mock_closes        r   r  z'TestTemporaryFile.test_unexpected_error  s   ""$COOI,,c27? 4K(4,7I&4*3J'4 ,6*;*='&&'89 4**s344 4 4 4 $$&RZZ_b14 44 4 4 4 4 4 4 4sl   E!E7D?%D3	2D'	D3	D?E!E'D0,D3	3D<8D??EEE	EE N)
r2   r3   r4   r!  r  r  r  r  r
  r  r5   r   r   r  r    s(    #	%
	 		3	2	2	2r   r  c                       e Zd Zd Zd Zd Zy)NulledModulesc                     |D cg c]  }|j                    c}| _        | j                  D cg c]  }|j                          c}| _        y c c}w c c}w r+   )rs   refscopycontents)r   modulesmodr  s       r   r/   zNulledModules.__init__  s<    -45cS\\5	/3yy99 69s
   AAc                 >    | j                   D ]  }|D ]  }d ||<   	  y r+   )r  )r   ru  rx   s      r   r1  zNulledModules.__enter__  s-     	A #	r   c                     t        | j                  | j                        D ]&  \  }}|j                          |j	                  |       ( y r+   )zipr  r  clearupdate)r   exc_inforu  r   s       r   r'  zNulledModules.__exit__  s8    		4==1 	DAqGGIHHQK	r   N)r2   r3   r4   r/   r1  r'  r5   r   r   r  r    s    :
r   r  c                      e Zd Z	 	 	 ddZddZd Zd Zd Zej                  d        Z
ej                  d        Zej                  d	        Zd
 Zd Zd Zd Zd Zd Zd Z ej.                   eed      d      d        Zd Zy)TestTemporaryDirectoryNc                     |t        j                         }t        j                  ||||      }| j                  |j                  |||       | j                  |j                  |||       |S )N)rV   rr  r  ignore_cleanup_errors)r   rl   rq   r^   rU   
do_create2)	r   rV   rW   rX   recursedirsfilesr  r  s	            r   r  z TestTemporaryDirectory.do_create'  sb    ;%%'C))C"79 	sxxc3/'47
r   c                    |r_t        |      D ]Q  }t        j                  j                  |d|z        }t        j                  |       | j                  ||dz
  ||       S t        |      D ]I  }t        t        j                  j                  |d|z        d      5 }|j                  d       d d d        K y # 1 sw Y   VxY w)Nzdir%drd   z
test%d.txtr   s   Hello world!)r   rH   r-   r   mkdirr  r   r   )r   r-   r  r  r  r   rU   rU  s           r   r  z!TestTemporaryDirectory.do_create22  s    4[ >ww||D'A+6gaiu=> u 	)Abggll4)9:DA )Q() )	)) )s   B::C	c                 @   t        j                         5 }	 d d d        | j                  t              5 }t        j                         d d d        | j	                  j
                  j                  t        j                         y # 1 sw Y   rxY w# 1 sw Y   JxY wr  )r   rq   r   r   rN   	exceptionerrnoENOENT)r   r   cms      r   test_mkdtemp_failurez+TestTemporaryDirectory.test_mkdtemp_failure=  s|     ((* 	k	01 	9R''K8	9++U\\:		 		9 	9s   BBBBc                    t        j                         }	 | j                  |      }| j                  t        j
                  j                  |j                        d|j                  z         |j                          | j                  t        j
                  j                  |j                        d|j                  z         t	        j                  |       y # t	        j                  |       w xY w)Nr   z$TemporaryDirectory %s does not exist*TemporaryDirectory %s exists after cleanup)r   rh   r  rR   rH   r-   r  rU   cleanupr   r5  )r   rV   ru  s      r   test_explicit_cleanupz,TestTemporaryDirectory.test_explicit_cleanupG  s     	3'AOOBGGNN1662BQVVKMIIKRWW^^AFF3DqvvMO HHSMBHHSMs   B.C C1c           
      4   	 t        j                         5 }| j                  |d      }t        j                  |j
                        }| j                  |j                         d|d       t        |dz  d      5 }|j                  d       |j                          d d d        | j                  t        t        |j                  d                  t        t         j"                  j%                  d	            d
|       | j                  |j                         t         j"                  j%                  d	      d|d       |j                          | j'                  |j                         d|d       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NTrV   r  TemporaryDirectory  does not exist
a_file.txtw+tHello world!
*win1Unexpected number of files in TemporaryDirectory  existence state unexpectedz exists after cleanup)r   rq   r  r$   r%   rU   rR   r  r   r   r  rN   rJ   r.  globr<  r>  r?  
startswithr   r   working_dirtemp_dir	temp_path	open_files        r   #test_explicit_cleanup_ignore_errorsz:TestTemporaryDirectory.test_explicit_cleanup_ignore_errorsT  s~   K((* 	Jk~~t & =HX]]3IOOI,,.1)oNPi,.6 #) 01  "# SinnS&9!:; !8!8!?@33<-AB   "''.%i]2MNP   "%i]2GHJ%	J 	J# #	J 	Js%   A&F<"FCFF	FFc                 x   | j                         }| j                  d      }t        j                  |j                  t        j                  j                  |j                  d             |j                          | j                  t        j                  j                  |j                        d|j                  z         | j                  t        j                  j                  |j                        d       | j                  t        j                  |j                        dgd       |j                          y )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)r  rH   symlinkrU   r-   r   r  r   r  rR   rN   r   )r   d1d2s      r   (test_cleanup_with_symlink_to_a_directoryz?TestTemporaryDirectory.test_cleanup_with_symlink_to_a_directoryl  s     ^^^^A^& 	

277BGGLL%89 	

0EO	Qrww/G	IBGG,{m(	) 	

r   c                 .   t        j                         }	 | j                  |      }|j                  }~| j	                  t
        j                  j                  |      d|z         t        j                  |       y # t        j                  |       w xY w)Nr   *TemporaryDirectory %s exists after __del__)	r   rh   r  rU   r   rH   r-   r  r5  r   rV   ru  rU   s       r   test_del_on_collectionz-TestTemporaryDirectory.test_del_on_collection  sr      	3'A66DRWW^^D1DtKM HHSMBHHSMs   AA= =Bc           
         	 t        j                         5 }| j                  |d      }t        j                  |j
                        }| j                  |j                         d|d       t        |dz  d      5 }|j                  d       ~d d d        | j                  t        t        |j                  d                  t        t        j                   j#                  d	            d
|       | j                  |j                         t        j                   j#                  d	      d|d       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NTr  r  r  r  r  r  r  r  r  r  )r   rq   r  r$   r%   rU   rR   r  r   r   rN   rJ   r.  r  r<  r>  r?  r  r  s        r   $test_del_on_collection_ignore_errorsz;TestTemporaryDirectory.test_del_on_collection_ignore_errors  s?   N((* 	Pk~~t & =HX]]3IOOI,,.1)oNPi,.6 ) 01 SinnS&9!:; !8!8!?@33<-AB   "''.%i]2MNP	P 	P 	P 	Ps%   A&E<D?B'E?E	EEc                    | j                         5 }dD ]  }dj                  ||      }t        j                  d|      \  }}}|j	                         j                         }| j                  t        j                  j                  |      d|z         |j	                  dd      }| j                  d|       | j                  d	|        	 d d d        y # 1 sw Y   y xY w)
N)builtinsrH   shutilr>  r   rB   a  if True:
                    import builtins
                    import os
                    import shutil
                    import sys
                    import tempfile
                    import warnings

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

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

                    {mod}.tmp = tmp

                    warnings.filterwarnings("always", category=ResourceWarning)
                    )rV   r  -cr  rg  backslashreplace
Exception 'ResourceWarning: Implicitly cleaning upr  formatr   assert_python_okr   stripr   rH   r-   r  r   r   )r   rV   r  codercouterrr  s           r   test_del_on_shutdownz+TestTemporaryDirectory.test_del_on_shutdown  s    ^^ 	NR N& 3C0' (  -==dDIC::<--/  !9H8SUjj*<=  s3GM7N	N 	N 	Ns   B;CCc           
         	 t        j                         5 }dj                  |      }t        j                  d|      \  }}}t        j                  |j                         j                               }| j                  t        t        |j                  d                  t        t        j                  j!                  d            d|       | j                  |j#                         t        j                  j!                  d      d|d       |j                  d	d
      }| j%                  d|       | j%                  d|       | j'                  d|       d d d        y # 1 sw Y   y xY w)Na  if True:
                import pathlib
                import sys
                import tempfile
                import warnings

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

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

                warnings.filterwarnings("always", category=ResourceWarning)
                )r  r  r  r  r  r  r  rg  r  	ExceptionErrorr  )r   rq   r  r   r  r$   r%   r   r  rN   rJ   r.  r  r<  r>  r?  r  r  r   r   )r   r  r  __r  r  r  s          r   "test_del_on_shutdown_ignore_errorsz9TestTemporaryDirectory.test_del_on_shutdown_ignore_errors  sE   M((* !	Jk$ F{F3% & )99$ELBSSZZ\%7%7%9:ISinnS&9!:; !8!8!?@33<-AB   "''.%i]2MNP **W&89C[#.Wc*MMCSIC!	J !	J !	Js   EE$$E-c                    | j                         5 }dj                  |      }t        j                  d|      \  }}}|j	                         j                         }| j                  t        j                  j                  |      d|z         |j	                  dd      }| j                  d|       | j                  d|       d d d        y # 1 sw Y   y xY w)	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  rg  r  r  r  r  )r   rV   r  r  r  r  r  s          r   test_exit_on_shutdownz,TestTemporaryDirectory.test_exit_on_shutdown  s    ^^ 	J FsFO  )99$ELBSzz|))+HRWW^^H5DxOQ**W&89C\3/MMCSI)	J 	J 	Js   B3CCc                    | j                         5 }| j                  |d      }|j                  }t        j                  dt        fd      5  t        j                  dt               ~t        j                          d d d        | j                  t        j                  j                  |      d|z         d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)	N   )rV   r  
ImplicitlyF)quietalways)r=   r  )r  rU   r   rA   rA  rB   rC   r   r4  r   rH   r-   r  r  s       r   test_warnings_on_cleanupz/TestTemporaryDirectory.test_warnings_on_cleanup   s    ^^ 	M32A66D !//1@1B6;= % ''?K""$% RWW^^D1DtKM	M 	M
% %	M 	Ms#   =C1C?:CC	CCc                     | j                         }|j                          |j                          |j                          y r+   )r  r  r|  s     r   r  z*TestTemporaryDirectory.test_multiple_close  s)    NN									r   c                 B   | j                         }|5 }| j                  t        j                  j	                  |             | j                  ||j                         d d d        | j                  t        j                  j	                               y # 1 sw Y   8xY wr+   )r  rR   rH   r-   r  rN   rU   r   )r   ru  rU   s      r   r  z+TestTemporaryDirectory.test_context_manager  sr    NN 	+$OOBGGNN401T166*	+ 	-.	+ 	+s   ABBc                 r   t        d      D ]  }|dz  }| j                  t        |d            5  | j                  ddd      }|5  t	        j
                  |j                  d	      D ]W  \  }}}|D ]6  }t	        j                  t        j                  j                  ||      |       8 t	        j                  ||       Y |j                          d d d        | j                  t        j                  j                  |j                               d d d         y # 1 sw Y   MxY w# 1 sw Y   *xY w)
N   r;  03or  r  r  r  r  r  Ftopdown)r   r  r  r  rH   walkrU   r   r-   r   r  r   r  )r   r   ru  rootr  r  rU   s          r   
test_modesz!TestTemporaryDirectory.test_modes  s   !H 	9DQJD6$#67 	9NN11AN>  -/WWQVVU-K -)dE$) EDHHRWW\\$%=tDEt,- IIK    !78	9 	9	9   	9 	9s%   D,BD A D, D)%D,,D6	chflagszrequires os.chflagsc           	         t         j                  t         j                  z  }t        j                  }	 t        |d      j                          	 t        j                  ||       t        j                  |d       t        j                  |       | j                  ddd      }|5  t        j                  |j                  d      D ]W  \  }}}|D ]6  }t        j                  t        j                  j!                  ||      |       8 t        j                  ||       Y |j#                          d d d        | j%                  t        j                  j'                  |j                               y # t        $ r}| j                  d|        Y d }~d }~ww xY w# t        j                  |       w xY w# 1 sw Y   xY w)	Nr  r   z4chflags() doesn't support UF_IMMUTABLE|UF_NOUNLINK: r  r  r  Fr  )r   UF_IMMUTABLEUF_NOUNLINKr   TESTFNr   r   rH   r  r   r   r  r  r  rU   r-   r   r  r   r  )	r   r  r=  excru  r  r  r  rU   s	            r   
test_flagsz!TestTemporaryDirectory.test_flags-  so   !!D$4$44 ##	'3%%'(

8U+ 

8Q'X&NN11AN6 	%'WWQVVU%C (!dE! @DJJrww||D$7?@

4'( IIK	 	/0#  B !;;>%A B BB X&	 	sB   F E2 $F %BF72	F;FF FF F47G c                     t        j                  d      5 }	 d d d        | j                  t        j                  j                               t        j                  |       y # 1 sw Y   MxY w)NFr  )r   rq   rR   rH   r-   r  r  r   )r   r  s     r   test_delete_falsez(TestTemporaryDirectory.test_delete_falseJ  sO    ((6 	+	{34k"	 	s   A%%A.)Nr   r   rd   rd   rd   F)rd   rd   rd   )r2   r3   r4   r  r  r  r  r  r   skip_unless_symlinkr  r   cpython_onlyr  r  r  r  r  r  r  r  r  r   re  hasattrrH   r  r  r5   r   r   r  r  $  s    $KL(-		);J0 "" #( 
 
 P P(N@#JJJ0M /9 XY/1FG1 H18#r   r  __main__)9r   r  r  rH   r$   r>  r_   rB   
contextlibr   r  r  r  r  r   r   testr   test.supportr   r   r   r  r  rh  r  rf  r?  r  r   TestCaser   r9   rb   r{   r   r   r   contextmanagerr   r   r   r  rj  rx  r  r  r  r  r  re   rf   r  r  r  r2   mainr5   r   r   <module>r     s     	 	  
 	      	     " & ( ((H,C,CCR"
 <<9%JJ.7H-- .7d,28$$ ,2^7, 7<;7\ ;7~")| ")TIL I@ L     2 %  %Fn2~| n2b @+4\ +4\[,, [,|M., M`0 0|_.\ _.FC*| C*J
 h&<&<<I2L I2Z  j#\ j#X	 zHMMO r   