a 5dg@s&ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z ddl Z ddlmZddlmZejejkZeedZejdrdZndZGd d d e jZGd d d e jZGd ddeZGdddeZGdddeZGdddeZ GdddeZ!ej"ddZ#ddZ$GdddZ%Gddde%eZ&Gdd d eZ'Gd!d"d"eZ(Gd#d$d$eZ)Gd%d&d&e%eZ*Gd'd(d(eZ+Gd)d*d*eZ,Gd+d,d,eZ-ej.ej/urGd-d.d.eZ0Gd/d0d0Z1Gd1d2d2eZ2e3d3kr"e 4dS)4N)mock)support) script_helperspawnlZopenbsd0dc@s,eZdZddZddZddZddZd S) TestLowLevelInternalscCs:|ttd|ttd|ttddSN)assertIsstrtempfile_infer_return_typebytesselfr./usr/local/lib/python3.9/test/test_tempfile.pytest_infer_return_type_singles$sz4TestLowLevelInternals.test_infer_return_type_singlescCs|ttdd|ttdd|ttddWdn1sT0Y|ttddWdn1s0YdSr r r rrr assertRaises TypeErrorrrrr test_infer_return_type_multiples)s  * z6TestLowLevelInternals.test_infer_return_type_multiplescCs|ttdd|ttdd|ttdd|ttdd|ttdd|ttdddWdn1s0Y|ttdddWdn1s0YdSr rrrrr)test_infer_return_type_multiples_and_none1s , z?TestLowLevelInternals.test_infer_return_type_multiples_and_nonecCs|tttddS)N/)r r rrpathlibPathrrrrtest_infer_return_type_pathlib<sz4TestLowLevelInternals.test_infer_return_type_pathlibN)__name__ __module__ __qualname__rrrrrrrrr#s rc@s8eZdZedZedZddZddZddZ d S) BaseTestCasez^[a-z0-9_-]{8}$s^[a-z0-9_-]{8}$cCs*t|_|jtjdtdtddS)Nignoremktemp)categorymessagemodule)rcheck_warnings_warnings_manager __enter__warningsfilterwarningsRuntimeWarningrrrrrsetUpGs   zBaseTestCase.setUpcCs|jddddSN)r)__exit__rrrrtearDownMszBaseTestCase.tearDownc Cstj|\}}|dt|}|t|t|d}|durn|t|t|tusbt|tjrftnt d|dur|t|t|turtnt d|dur|t|t|turtnt d|||fdkr|t|td| tj |tj |d||f| ||d||f| ||d||f|t|t|t|}t|trb|j n|j } || |d|| jfdS)Nzunexpected return type)NNNzdefault return type must be strzfile %r not in directory %rzfile %r does not begin with %rzfile %r does not end with %rz$random characters %r do not match %r)ospathsplitlenr typer isinstancePathLiker assertEqualabspath str_checkb_check assertTruematchpattern) rnamedirpresufndirnbaseZnpreZnsufcheckrrr nameCheckPsN      zBaseTestCase.nameCheckN) rr r!recompiler;r<r.r1rGrrrrr"Bs   r"c@seZdZddZdS) TestExportscCsptj}ddddddddddddddd}g}|D]"}|ddkr0||vr0||q0|t|dkd|dS)N)NamedTemporaryFile TemporaryFilemkstempmkdtempr$TMP_MAX gettempprefixgettempprefixb gettempdir gettempdirbtempdirtemplateSpooledTemporaryFileTemporaryDirectoryr_zunexpected keys: %s)r__dict__appendr=r5)rdictexpectedZunexpkeyrrr test_exportsvs. zTestExports.test_exportsN)rr r!r_rrrrrJusrJcsReZdZdZfddZddZddZdd Ze e e d d d d Z Z S)TestRandomNameSequencez6Test the internal iterator object _RandomNameSequence.cst|_tdSr/)r_RandomNameSequencersuperr.r __class__rrr.s zTestRandomNameSequence.setUpcCst|j}||ddddSNr )nextrbrG)rsrrrtest_get_six_char_strs z,TestRandomNameSequence.test_get_six_char_strcCsHi}|j}ttD]0}t|}||ddd|||d||<qdS)Nr rK)rbrange TEST_FILESrgrG assertNotIn)rr\rbirhrrr test_manys  z TestRandomNameSequence.test_manycCs,d}|j}|D]}|d7}|dkrq(qdS)NrrK)rb)rrmrbrhrrr supports_iters z$TestRandomNameSequence.supports_iterforkz!os.fork is required for this testc Cst\}}d}zt}|sTt|t|t|jdt|tdt|j}t |t | d}W|rt j |ddt|t|n(|rt j |ddt|t|0|||dS)Nasciir)exitcode)r2piperqclosewritergrbencode_exitreadr5decoderZ wait_processassertNotEqual)rZread_fdZwrite_fdpidZ parent_valueZ child_valuerrrtest_process_awarenesss(         z-TestRandomNameSequence.test_process_awareness)rr r!__doc__r.rirnrpunittest skipUnlesshasattrr2r} __classcell__rrrdrr`s   r`c@s eZdZdZddZddZdS)TestCandidateTempdirListz3Test the internal function _candidate_tempdir_list.cCs4t}|t|dk|D]}||tqdSNr)r_candidate_tempdir_list assertFalser5assertIsInstancer )rcandcrrrtest_nonempty_listsz+TestCandidateTempdirList.test_nonempty_listc Cst}dD]"}t|}|stj|||<qt}dD]"}t|}|sTt| ||q>z t }Wnt t fytj }Yn0| ||Wdn1s0YdS)N)TMPDIRTEMPTMP)rEnvironmentVarGuardr2getenvr3r:rr ValueErrorassertIngetcwdAttributeErrorOSErrorcurdir)renvenvnamedirnamerrrrtest_wanted_dirss     z)TestCandidateTempdirList.test_wanted_dirsN)rr r!r~rrrrrrrs rc@seZdZdZddZdS)TestGetDefaultTempdirzTest _get_default_tempdir().c stffdd}ttd|(t|tgddttdT| t tWdn1s0Y|tgWdn1s0Yfdd}ttd|V| t tWdn1s0Y|tgWdn1s80YWdn1sX0YWdn1sx0YdS) NcsgSr/rr)our_temp_directoryrrour_candidate_listszKTestGetDefaultTempdir.test_no_files_left_behind..our_candidate_listrc_s tdSr/)r)argskwargsrrr raise_OSError szFTestGetDefaultTempdir.test_no_files_left_behind..raise_OSErroropencs|i|}|_|Sr/)rv)rrfp) orig_openrrr bad_writerszCTestGetDefaultTempdir.test_no_files_left_behind..bad_writer) rrXr swap_attr_get_default_tempdirr9r2listdiriorFileNotFoundError)rrrr)rrrrtest_no_files_left_behinds"   &0 (z/TestGetDefaultTempdir.test_no_files_left_behindN)rr r!r~rrrrrrsrc@s eZdZdZddZddZdS)TestGetCandidateNamesz0Test the internal function _get_candidate_names.cCst}||tjdSr/)r_get_candidate_namesrra)robjrrr test_retval%sz!TestGetCandidateNames.test_retvalcCs"t}t}|||udSr/)rrr=)rabrrrtest_same_thing*sz%TestGetCandidateNames.test_same_thingN)rr r!r~rrrrrrr"src cs\t}zBttd|dVWdn1s40YWt|n t|0dS)NrU)rrOrrrmtreerArrr_inside_empty_temp_dir2s &rcsttdfddS)NrcstSr/)iterrnamesrr?r z'_mock_candidate_names..)rrrrrrr_mock_candidate_names<s rc@s$eZdZddZddZddZdS)TestBadTempdirc Cstttjj}}|tjtjBtjBM}t tj|zrt tjtj r\| d| t|Wdn1s0Y|ttjgWt tj|nt tj|0Wdn1s0YdS)Nz!can't set the directory read-only)rr2statrrUst_modeS_IWUSRS_IWGRPS_IWOTHchmodaccessW_OKZskipTestrPermissionError make_tempr9r)rZoldmodemoderrrtest_read_only_directoryDs  &z'TestBadTempdir.test_read_only_directoryc Csttjtjd}ttd|B|t | Wdn1sP0YWdn1sn0YWdn1s0YdS)N nonexistentrU) rr2r3joinrrUrrrrrrrUrrrtest_nonexisting_directoryRs  z)TestBadTempdir.test_nonexisting_directoryc Csttjtjd}t|dt td|F| t t f| Wdn1sb0YWdn1s0YWdn1s0YdS)NfilewbrU)rr2r3rrrUrrurrrNotADirectoryErrorrrrrrrtest_non_directoryYs z!TestBadTempdir.test_non_directoryN)rr r!rrrrrrrrBsrc@seZdZdZGdddZdddZdd Zd d Zd d ZddZ ddZ e e dddZe edddZddZddZddZdS)TestMkstempInnerz*Test the internal function _mkstemp_inner.c@s<eZdZejZejZej Z ej Z ddZ ddZddZdS)zTestMkstempInner.mkstempedcCs>|r |j}n|j}t|||}t|||||\|_|_dSr/)_bflags_tflagsrr_mkstemp_innerfdr@)rrArBrCbinflags output_typerrr__init__ks z#TestMkstempInner.mkstemped.__init__cCst|j|dSr/)r2rvr)rr rrrrvrsz TestMkstempInner.mkstemped.writecCs||j||jdSr/)_closer_unlinkr@rrrr__del__us z"TestMkstempInner.mkstemped.__del__N)rr r!r_bin_openflagsr_text_openflagsrr2rurunlinkrrrvrrrrr mkstempedesrNrKcCsrt|||}|dur0|tur(t}nt}|dur>|}|durL|}|||||}||j||||Sr/)rrr rSrTrrGr@)rrArBrCrrrrrr do_createys zTestMkstempInner.do_createcCs^|d|jddd|jddd|jdddd|jdddddS) NblatrrBrrCrBrCaa.txt)rrvrrrr test_basics zTestMkstempInner.test_basiccCs2t}|j|ddd|j|ddd|j|ddd|j|dddd|j|dd dd|t$|jd dddWdn1s0Y|t$|j|d ddWdn1s0Y|t&|j|dd ddWdn1s$0YdS) Nr rArCrarArBbrArBrCaa.txtr )rrTrrvrr)rZdir_brrrtest_basic_with_bytes_namess 2 2 z,TestMkstempInner.test_basic_with_bytes_namescCs*ttt}|D]}|jdd||<qdSNrrlistrjrkrrZextantrmrrrtest_basic_manys z TestMkstempInner.test_basic_manyc CsRt}z8|j|dd|jt|ddWt|n t|0dSNrr)rrOrrvrrr2rmdirrrArrrtest_choose_directorys z&TestMkstempInner.test_choose_directorycCsJ|}tt|jj}d}tjdkr:|d?}|d}|||dS)Nwin32I) rrS_IMODEr2r@rsysplatformr9)rrrr]userrrrtest_file_modes zTestMkstempInner.test_file_modezos.spawnl not availablecCstjr d}nd}|}|t|jdd|j}zt}WntyZt j d}Yn0tj tj tj |d}t jdkrdt j}d|}nt j}ttjt j||||}||dkd | ||dkd |dS) NvqFz%drztf_inherit_check.pyrz"%s"z$child process caught fatal signal %dz child process reports failure %d)rverboserr9r2get_inheritabler__file__ NameErrorrargvr3rrr:r executablerP_WAITr)rrrrmeZtesterZ decoratedZretvalrrrtest_noinherits,      zTestMkstempInner.test_noinheritztext mode not availablecCsL|jdd}|d|dt|jdtj|t|jdddS)Nr)rsblatsextra ror)rrvr2lseekrSEEK_SETr9ryrfrrr test_textmodes    zTestMkstempInner.test_textmodecCstttdtjtSrf)rrrSrQrr rrrrrs  zTestMkstempInner.make_tempc Csttddd\|\}}t|||d|\}}t|||dWdn1sv0YWdn1s0YdSNaaabbb)rrrr2rur=endswith)rfd1Zname1fd2Zname2rrr!test_collision_with_existing_files     z2TestMkstempInner.test_collision_with_existing_filec CstztdddNt}||d|\}}t|||dWdn1sh0YWdn1s0YdSr) rrrrOr=rrr2ru)rrArr@rrr&test_collision_with_existing_directorys   z7TestMkstempInner.test_collision_with_existing_directory)NNNrK)rr r!r~rrrrrrrrr has_spawnlr  has_textmoderrrrrrrrrbs    %   rc@s eZdZdZddZddZdS)TestGetTempPrefixzTest gettempprefix().cCsLt}||t|t|dt}||t|t|ddSr)rrQrr Z assertGreaterr5rRr)rpZpbrrrtest_sane_templates   z$TestGetTempPrefix.test_sane_templatec Csntd}tjdd}zDtj||}t|tjtjB}t |t |Wt |n t |0dS)Nz xxxxxx.xxxr )prefix) rrQrOr2r3rrO_RDWRO_CREATrurr)rrdrrrrtest_usable_templates    z&TestGetTempPrefix.test_usable_templateN)rr r!r~rr!rrrrrs rc@s0eZdZdZddZddZddZdd Zd S) TestGetTempDirzTest gettempdir().cCsTttfD]>}|tj|p,|tjkd||tj|d|qdS)Nz%r is not an absolute pathz%r is not a directory) rrSrTr=r2r3isabsrisdirrr rrrtest_directory_exists3sz$TestGetTempDir.test_directory_existscCs6t}|dWdn1s(0YdS)Nr)rrLrv)rrrrrtest_directory_writable<s z&TestGetTempDir.test_directory_writablecCsPt}t}t}|||u|t|t|||t|dSr/) rrSrTr=r{r6r9r2fsdecode)rrrrrrrrEs zTestGetTempDir.test_same_thingc Cstd}tjd}t_zTt(}||d<|t|Wdn1sP0YW|t_t|n|t_t|0dS)Nz-Tempr)rrOrUrrr9rSr)rZcase_sensitive_tempdirZ_tempdirrrrrtest_case_sensitiveOs  0 z"TestGetTempDir.test_case_sensitiveN)rr r!r~r&r'rr)rrrrr"0s    r"c@s2eZdZdZd ddZddZddZd d ZdS) TestMkstempzTest mkstemp().Nc Cst|||}|dur0|tur(t}nt}|dur>|}|durL|}tj|||d\}}tj|\}}tj |} | | |d| |fz(| ||||Wt |t |nt |t |0dS)NrArsuffixz+Directory '%s' incorrectly returned as '%s')rrr rSrTrNr2r3r4r:r9rGrur) rrArBrCrrr@rDrEZadirrrrras*     zTestMkstemp.do_createcCsL||jdd|jdd|jddd|jddd|jdd dS) Nrrrrrrr.rrrrrrrxs   zTestMkstemp.test_basiccCst}|j|dd|j|dd|j|dd|j|ddd|j|ddd|jd d |t |jd dddWdn1s0Y|t |jd d ddWdn1s0Y|t |jd dd dWdn1s0YdS)Nr rrrrrrr.rr-rr)rrTrrrr%rrrrs  . . z'TestMkstemp.test_basic_with_bytes_namesc CsFt}z,|j|d|jt|dWt|n t|0dSNr)rrOrrrr2rrrrrrs  z!TestMkstemp.test_choose_directory)NNN)rr r!r~rrrrrrrrr*^s   r*c@sZeZdZdZddZdddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS) TestMkdtempzTest mkdtemp().cCstSr/)rrOrrrrrszTestMkdtemp.make_tempNcCst|||}|dur0|tur(t}nt}|dur>|}|durL|}tj|||d}z||||||WSt|Yn0dSNr+) rrr rSrTrOrGr2r)rrArBrCrr@rrrrs   zTestMkdtemp.do_createcCs^t|t|jddt|jddt|jdddt|jddddSNrrrrrrr)r2rrrrrrrs zTestMkdtemp.test_basiccCs4t}t|j|dt|j|ddt|j|ddt|j|dddt|j|ddd|t&t|j|d ddWdn1s0Y|t&t|j|dd dWdn1s0Y|t&t|jd dddWdn1s&0YdS) Nrrrrrrrrrrr )rrTr2rrrrr%rrrrs 4 4 z'TestMkdtemp.test_basic_with_bytes_namesc Csnttt}z<|D]}|jdd||<qW|D]}t|tr.t|q.n |D]}t|trNt|qN0dSr)rrjrkrr7r r2rrrrrrs   zTestMkdtemp.test_basic_manyc CsRt}z8t|j|dt|jt|dWt|n t|0dSr0)rrOr2rrrrrrrrrs z!TestMkdtemp.test_choose_directoryc Csl|}zRtt|j}|dM}d}tjdkrB|d?}|d}|||Wt|n t|0dS)Niirrr) rrrr2rrrr9r)rrArr]rrrr test_modes zTestMkdtemp.test_modec CstztdddNtjdd}|||jdt}||dWdn1sh0YWdn1s0YdS)NrrF)delete) rrrrLrur=r@rrO)rrrArrrrs  z-TestMkdtemp.test_collision_with_existing_filec Cstltddd@t}||dt}||dWdn1sZ0YWdn1sx0YdSr)rrrrOr=r)rZdir1Zdir2rrrrs z2TestMkdtemp.test_collision_with_existing_directory)NNN) rr r!r~rrrrrrr4rrrrrrr1s    r1csTeZdZdZfddZfddZGdddZdd d Zd d Zd dZ Z S) TestMktempzTest mktemp().cst|_tdSr/)rrOrArcr.rrdrrr.s zTestMktemp.setUpcs&|jrt|jd|_tdSr/)rAr2rrcr1rrdrrr1s zTestMktemp.tearDownc@s(eZdZejZejZddZ ddZ dS)zTestMktemp.mktempedcCs.tj|||d|_tt|j|jddS)Nr+r)rr$r@r2rurr)rrArBrCrrrrszTestMktemp.mktemped.__init__cCs||jdSr/)rr@rrrrr"szTestMktemp.mktemped.__del__N) rr r!r2rrrrrrrrrrrmktempedsr7r cCs(||j||}||j|j|||Sr/)r7rArGr@)rrBrCrrrrr%szTestMktemp.do_createcCs@||jdd|jdd|jddd|jddddSr3r.rrrrr+s   zTestMktemp.test_basiccCs*ttt}|D]}|jdd||<qdSrrrrrrrn3s zTestMktemp.test_many)r r ) rr r!r~r.r1r7rrrnrrrrdrr6 s   r6c@sjeZdZdZdddZddZd d Zd d Zd dZddZ ddZ ddZ ddZ ddZ ddZdS)TestNamedTemporaryFilezTest NamedTemporaryFile().Nr TcCs8|durt}tj||||d}||j||||S)N)rArr,r5)rrSrLrGr@)rrArBrCr5rrrrrHs z TestNamedTemporaryFile.do_createcCs@||jdd|jdd|jddd|jddddSr3r.rrrrrRs   z!TestNamedTemporaryFile.test_basiccCsP|}t|}|j}|j}~|d~|d~tjddrL||dS)NsfoosbarT)Zcpython)rweakrefrefrvrZcheck_impl_detail assertIsNone)rrwrrvZwrite2rrrtest_method_lookupZs  z)TestNamedTemporaryFile.test_method_lookupcsPgdfdd}t|D]\}}|||q||tddS)N)sspam seggs sbeans cs*tjdd}|d|d|S)Nw+brr r)rrLrvrseekrlinesrr make_filens  z3TestNamedTemporaryFile.test_iter..make_filerK) enumerater9r5)rrDrmlrrBr test_iterjs  z TestNamedTemporaryFile.test_itercCs(t}|tj|jd|jdS)Nz$NamedTemporaryFile %s does not exist)rrLr=r2r3existsr@r rrrtest_creates_namedwsz)TestNamedTemporaryFile.test_creates_namedc Cszt}z`tj|d}|dWdn1s60Y|tj|jd|jWt |n t |0dS)Nrrz(NamedTemporaryFile %s exists after close) rrOrLrvrr2r3rHr@rrrArrrrtest_del_on_close}s(z(TestNamedTemporaryFile.test_del_on_closec Cst}d}zbtj|dd}|j}|d||tj |jd|jW|durdt |t |n|durt |t |0dS)NF)rAr5rz)NamedTemporaryFile %s missing after close) rrOrLr@rvrur=r2r3rHrr)rrAtmprrrrtest_dis_del_on_closes     z,TestNamedTemporaryFile.test_dis_del_on_closecCs.t}|d|||dSNabc )rrLrvrur rrrtest_multiple_closes  z*TestNamedTemporaryFile.test_multiple_closecslt$|tjjWdn1s20Y|tjjfdd}|t |dS)Ncs(Wdn1s0YdSr/rrrArr use_closedsz?TestNamedTemporaryFile.test_context_manager..use_closed) rrLr=r2r3rHr@rrrrrQrrArtest_context_managers  2 z+TestNamedTemporaryFile.test_context_managerc sgtjfdd}tjd|d\tjdtd.|ttj|t dWdn1sj0YWdn1s0YdS)Ncs||dSr/r[rclosedZos_closerrrus z5TestNamedTemporaryFile.test_no_leak_fd..closeos.closeZ side_effectio.openrK) r2rurpatchrrrrLr9r5rrurrVrtest_no_leak_fdsz&TestNamedTemporaryFile.test_no_leak_fdcCst}|tj||ttjd|dWdn1sD0Y|ttjd|dWdn1s|0Y| t |gdS)Nr<)rrA) rrOZ addCleanuprrrrrLrr9r2rrrrr test_bad_modes , ,z$TestNamedTemporaryFile.test_bad_mode)Nr r T)rr r!r~rrr=rGrIrKrMrPrSr]r_rrrrr8Es     r8c@seZdZdZd-ddZddZd d Zd d Zd dZddZ ddZ ddZ ddZ ddZ ddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,ZdS).TestSpooledTemporaryFilezTest SpooledTemporaryFile().rNr cCs&|durt}tj||||d}|S)N)max_sizerArr,)rrSrW)rrarArBrCrrrrrsz"TestSpooledTemporaryFile.do_createcCs4|}||j|jdddd}||jdS)Nrrr)rarBrC)rr_rolledr rrrrs z#TestSpooledTemporaryFile.test_basicc Cst}zntjd|d}||j|d||j|j}||t |t o`t j |d|Wt |n t |0dS)N )rarAsblat blat blat blat blat z*SpooledTemporaryFile %s exists after close)rrOrWrrbrvr=r@rur7r r2r3rHr)rrArfilenamerrrrKs   z*TestSpooledTemporaryFile.test_del_on_closecCsL|jdd}||jtdD]}|dd|dq ||jdS)Nrarxxxxxxxxxxxxxxxxxxxx)rrrbrjr@rv)rrrmrrrtest_rewrite_smalls      z+TestSpooledTemporaryFile.test_rewrite_smallcCs^|jdd}||j|d||j|d||j|d||jdS)Nrerfrh xxxxxxxxxxx)rrrbrvr=r rrrtest_write_sequentials       z.TestSpooledTemporaryFile.test_write_sequentialcCs@|}|d|d}||d|}||ddS)N)rkyzrsxyz)r writelinesr@r9ry)rrposbufrrrtest_writeliness    z(TestSpooledTemporaryFile.test_writelinescCs<|jdd}|d||j|d||jdS)N#rf)rhrjsxxxxxrk)rrorrbrvr=r rrrtest_writelines_sequentials     z3TestSpooledTemporaryFile.test_writelines_sequentialcCsV|jdd}||j|dd}||d||j|d||jdS)Nrerfrrrk)rrrbr@r9rvr=)rrrprrr test_sparse s      z$TestSpooledTemporaryFile.test_sparsecCs:|jdd}||j||dk||jdS)Nrerfr)rrrbr=filenor rrr test_filenos  z$TestSpooledTemporaryFile.test_filenocCs:t}|d||j|||dSrN)rrWrvrrbrur rrr#test_multiple_close_before_rollovers   ztjdd}|d||j|||dS)NrKrfrO)rrWrvr=rbrur rrr"test_multiple_close_after_rollover%s    z;TestSpooledTemporaryFile.test_multiple_close_after_rollovercCsL|jdd}|j}|j}|j}|d|d|dd||dddS)Nrerfs#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas#bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbrFsFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)rryrvr@r9)rrryrvr@rrrtest_bound_methods.s  z+TestSpooledTemporaryFile.test_bound_methodscCstjdd}|d||j||jd||j| t |j Wdn1sb0Y| t |j Wdn1s0Y| t |j Wdn1s0Y|d||j||jd||j| t |j Wdn1s$0Y| t |j Wdn1sV0Y| t |j Wdn1s0YdS)Nrcrfrjr>rkzrb+)rrWrvrrbr9rr;r@rrnewlinesencodingerrorsr=assertIsNotNoner rrrtest_properties<s*     $ $ $    & & z(TestSpooledTemporaryFile.test_propertiescCsHtjdddd}|d|d||d|d|d||d||j||jd| |j ||j t j ||jd||jd |d |d||d |d |d||d ||j||jd||j ||j t j ||jd||jd dS)Nw+rcutf-8)rrar}zabc rzdef zabc def strictzxyzzy zabc def xyzzy zfoobar zabc def xyzzy foobar )rrWrvr@r9ryrrbrr;r@r|r2linesepr}r~r=rr rrrtest_text_modeTs6            z'TestSpooledTemporaryFile.test_text_modecCstjdddddd}|d|d||d||j||jd| |j | |j ||j d||jd|d |d |d||d ||j||jd| |j | |j ||j d||jddS) Nrrcr rr#)rranewliner}r~uΛ ruΜΜΜΜΜΜΜΜΜΜ u(ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝuBΛ ΜΜΜΜΜΜΜΜΜΜ ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ)rrWrvr@r9ryrrbrr;r@rr|r}r~r=r rrrtest_text_newline_and_encodingts2            z7TestSpooledTemporaryFile.test_text_newline_and_encodingcsltjdd(|j|jWdn1s:0Y|jfdd}|t|dS)NrKrfcs(Wdn1s0YdSr/rrrArrrQszQTestSpooledTemporaryFile.test_context_manager_before_rollover..use_closed)rrWrrbrWr=rrrRrrAr$test_context_manager_before_rollovers  *  z=TestSpooledTemporaryFile.test_context_manager_before_rollovercstjddF|jd|j|jWdn1sX0Y|jfdd}|t |dS)NrKrfrOcs(Wdn1s0YdSr/rrrArrrQszQTestSpooledTemporaryFile.test_context_manager_during_rollover..use_closed) rrWrrbrvflushr=rWrrrRrrAr$test_context_manager_during_rollovers   *  z=TestSpooledTemporaryFile.test_context_manager_during_rollovercstjddd|j|jWdn1sP0Y|jfdd}|t |dS)NrKrfrOcs(Wdn1s0YdSr/rrrArrrQszPTestSpooledTemporaryFile.test_context_manager_after_rollover..use_closed) rrWrvrr=rbrrWrrrRrrAr#test_context_manager_after_rollovers   *  z.roundtrips1234r>zabdc ruΛzutf-16)r}zfoo r )rr)rrrrrtest_mode_and_encodings    z(TestTemporaryFile.test_mode_and_encodingc sgtjfdd}tjd|d\tjdtd.|ttj|t dWdn1sj0YWdn1s0YdS)Ncs||dSr/rTrUrVrrrus z0TestTemporaryFile.test_no_leak_fd..closerXrYrZrK) r2rurr[rrrrMr9r5r\rrVrr]sz!TestTemporaryFile.test_no_leak_fdN) rr r!r~rrrPrr]rrrrrs   rc@s$eZdZddZddZddZdS) NulledModulescGs&dd|D|_dd|jD|_dS)NcSsg|] }|jqSr)rZ).0modrrr r z*NulledModules.__init__..cSsg|] }|qSr)copy)rr:rrrrr )refscontents)rmodulesrrrrszNulledModules.__init__cCs"|jD]}|D] }d||<qqdSr/)r)rr r^rrrr*s zNulledModules.__enter__cGs.t|j|jD]\}}|||qdSr/)ziprrclearupdate)rexc_infor rrrrr0szNulledModules.__exit__N)rr r!rr*r0rrrrrsrc@seZdZdZd!ddZd"ddZd d Zd d Zej d dZ ej ddZ ddZ ddZddZddZddZddZeeedddd ZdS)#TestTemporaryDirectoryzTest TemporaryDirectory().Nr rKcCsH|durt}tj|||d}||j|||||j||||Sr2)rrSrXrGr@ do_create2)rrArBrCrecursedirsfilesrLrrrr s z TestTemporaryDirectory.do_createc Cs|rBt|D]4}tj|d|}t||||d||q t|D]F}ttj|d|d}|dWdqJ1s0YqJdS)Nzdir%drKz test%d.txtrs Hello world!)rjr2r3rmkdirrrrv)rr3rrrrmr@rrrrr(s   z!TestTemporaryDirectory.do_create2cCstt}Wdn1s0Y|t}tj|dWdn1sT0Y||jjtjdSr0)rrXrrr9 exceptionerrnoENOENT)rrcmrrrtest_mkdtemp_failure3s   *z+TestTemporaryDirectory.test_mkdtemp_failurec Cstt}zZ|j|d}|tj|jd|j|| tj|jd|jWt |n t |0dS)Nrz$TemporaryDirectory %s does not exist*TemporaryDirectory %s exists after cleanup) rrOrr=r2r3rHr@cleanuprr)rrAr rrrtest_explicit_cleanup=s z,TestTemporaryDirectory.test_explicit_cleanupcCs|}|jdd}t|jtj|jd||tj|jd|j| tj|jd| t |jdgd|dS)Nr)rZfoorz-Directory pointed to by a symlink was deletedz test0.txtz>Contents of the directory pointed to by a symlink were deleted) rr2symlinkr@r3rrrrHr=r9r)rZd1Zd2rrr(test_cleanup_with_symlink_to_a_directoryJs z?TestTemporaryDirectory.test_cleanup_with_symlink_to_a_directoryc CsTt}z:|j|d}|j}~|tj|d|Wt|n t|0dS)Nr*TemporaryDirectory %s exists after __del__) rrOrr@rr2r3rHrrrAr r@rrrtest_del_on_collection_s z-TestTemporaryDirectory.test_del_on_collectioncCs|}dD]l}dj||d}td|\}}}|}|tj |d||dd}| d|| d |qWdn1s0YdS) N)builtinsr2shutilrrr+aif 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) )rAr-crrbackslashreplace Exception 'ResourceWarning: Implicitly cleaning up rformatrZassert_python_okrzstriprr2r3rHrlr)rrArcodercouterrtmp_namerrrtest_del_on_shutdownls    z+TestTemporaryDirectory.test_del_on_shutdowncCs|v}dj|d}td|\}}}|}|tj |d||dd}| d|| d|Wdn1s0YdS) Naif 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) rrrrrrrr)rrArrrrrrrrtest_exit_on_shutdowns      z,TestTemporaryDirectory.test_exit_on_shutdownc Cs|}|j|dd}|j}tjdtfdd(tjdtd~tWdn1s^0Y|t j |d|Wdn1s0YdS) N)rArZ ImplicitlyF)quietalways)r%r) rr@rr(ResourceWarningr+r, gc_collectrr2r3rHrrrrtest_warnings_on_cleanups &z/TestTemporaryDirectory.test_warnings_on_cleanupcCs$|}|||dSr/)rrr%rrrrPsz*TestTemporaryDirectory.test_multiple_closecCsb|}|0}|tj||||jWdn1sB0Y|tj|dSr/)rr=r2r3rHr9r@r)rr r@rrrrSs ,z+TestTemporaryDirectory.test_context_managerc CstdD]}|dK}|jt|dd|jdddd}|`tj|jdd D]6\}}}|D]}ttj |||q\t||qN| Wdn1s0Y| tj |jWdq1s0YqdS) NrZ03or?rr^rrrFtopdown) rjZsubTestrrr2walkr@rr3rrrrH)rrr rootrrr@rrr test_modess &z!TestTemporaryDirectory.test_modeschflagszrequires os.lchflagsc CstjtjB}|jdddd}|`tj|jddD]6\}}}|D]}ttj |||q@t||q2| Wdn1s0Y| tj |jdS)Nrr^rFr) r UF_IMMUTABLE UF_NOUNLINKrr2rr@rr3rrrrH)rrr rrrr@rrr test_flagss &z!TestTemporaryDirectory.test_flags)Nr r rKrKrK)rKrKrK)rr r!r~rrrrrZskip_unless_symlinkrZ cpython_onlyrrrrrPrSrrrrr2rrrrrrs"       r__main__)5rrrr2rrrHr+ contextlibrrr9rrtestrZ test.supportrrrrrrr startswithrkZTestCaserr"rJr`rrrcontextmanagerrrrrrr"r*r1r6r8r`rLrMrrrrmainrrrrsb      3@*%  / .?l<}>A