a zez@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@s4eZdZddZddZddZddZd d Zd S) TestLowLevelInternalscCs:|ttd|ttd|ttddSN)assertIsstrtempfile_infer_return_typebytesselfrF/opt/bitninja-python-dojo/embedded/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_pathlibcCsGddd}|tt|d|tt|d|ttd|d|ttd|d|ttd|d|ttd|d|t td|dWdn1s0Y|t td|dWdn1s0YdS)Nc@seZdZddZddZdS)zCTestLowLevelInternals.test_infer_return_type_pathlike..PathcSs ||_dSNpath)rr!rrr__init__AszLTestLowLevelInternals.test_infer_return_type_pathlike..Path.__init__cSs|jSrr rrrr __fspath__DszNTestLowLevelInternals.test_infer_return_type_pathlike..Path.__fspath__N)__name__ __module__ __qualname__r"r#rrrrr@srr/r r r)rrrrrtest_infer_return_type_pathlike?s . z5TestLowLevelInternals.test_infer_return_type_pathlikeN)r$r%r&rrrrr(rrrrr#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__warningsfilterwarningsRuntimeWarningr$rrrrsetUpZs   zBaseTestCase.setUpcCs|jddddSr)r0__exit__rrrrtearDown`szBaseTestCase.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)osr!splitlenr typer isinstancePathLiker assertEqualabspath str_checkb_check assertTruematchpattern) rnamedirpresufndirnbaseZnpreZnsufcheckrrr nameCheckcsN      zBaseTestCase.nameCheckN) r$r%r&recompiler@rAr5r7rLrrrrr)Us   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__appendrBr:)rdictexpectedZunexpkeyrrr test_exportss. zTestExports.test_exportsN)r$r%r&rdrrrrrOsrOcsReZdZdZfddZddZddZdd Ze e e d d d d Z Z S)TestRandomNameSequencez6Test the internal iterator object _RandomNameSequence.cst|_tdSr)r_RandomNameSequencersuperr5r __class__rrr5s zTestRandomNameSequence.setUpcCst|j}||ddddSNr )nextrgrL)rsrrrtest_get_six_char_strs z,TestRandomNameSequence.test_get_six_char_strcCsHi}|j}ttD]0}t|}||ddd|||d||<qdS)Nr rP)rgrange TEST_FILESrlrL assertNotIn)rrargirmrrr test_manys  z TestRandomNameSequence.test_manycCs,d}|j}|D]}|d7}|dkrq(qdS)NrrP)rg)rrrrgrmrrr 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)r8pipervclosewriterlrgencode_exitreadr:decoderZ wait_processassertNotEqual)rZread_fdZwrite_fdpidZ parent_valueZ child_valuerrrtest_process_awarenesss(         z-TestRandomNameSequence.test_process_awareness)r$r%r&__doc__r5rnrsruunittest skipUnlesshasattrr8r __classcell__rrrirres   rec@s eZdZdZddZddZdS)TestCandidateTempdirListz3Test the internal function _candidate_tempdir_list.cCs4t}|t|dk|D]}||tqdSNr)r_candidate_tempdir_list assertFalser:assertIsInstancer )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)rEnvironmentVarGuardr8getenvr!r?rr ValueErrorassertIngetcwdAttributeErrorOSErrorcurdir)renvenvnamedirnamerrrrtest_wanted_dirss     z)TestCandidateTempdirList.test_wanted_dirsN)r$r%r&rrrrrrrrs rc@seZdZdZddZdS)TestGetDefaultTempdirzTest _get_default_tempdir().c stffdd}ttd|(t|tgddttdT| t tWdn1s0Y|tgWdn1s0Yfdd}ttd|V| t tWdn1s0Y|tgWdn1s80YWdn1sX0YWdn1sx0YdS) NcsgSrrr)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)r{)rrfp) orig_openrrr bad_writer)szCTestGetDefaultTempdir.test_no_files_left_behind..bad_writer) rr]r swap_attr_get_default_tempdirr>r8listdiriorFileNotFoundError)rrrr)rrrrtest_no_files_left_behinds"   &0 (z/TestGetDefaultTempdir.test_no_files_left_behindN)r$r%r&rrrrrrrsrc@s eZdZdZddZddZdS)TestGetCandidateNamesz0Test the internal function _get_candidate_names.cCst}||tjdSr)r_get_candidate_namesrrf)robjrrr test_retval8sz!TestGetCandidateNames.test_retvalcCs"t}t}|||udSr)rrrB)rabrrrtest_same_thing=sz%TestGetCandidateNames.test_same_thingN)r$r%r&rrrrrrrr5src cs\t}zBttd|dVWdn1s40YWt|n t|0dS)NrZ)rrTrrrmtreerFrrr_inside_empty_temp_dirEs &rcsttdfddS)NrcstSr)iterrnamesrrRr z'_mock_candidate_names..)rrrrrrr_mock_candidate_namesOs 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)rr8statrrZst_modeS_IWUSRS_IWGRPS_IWOTHchmodaccessW_OKZskipTestrPermissionError make_tempr>r)rZoldmodemoderrrtest_read_only_directoryWs  &z'TestBadTempdir.test_read_only_directoryc Csttjtjd}ttd|B|t | Wdn1sP0YWdn1sn0YWdn1s0YdS)N nonexistentrZ) rr8r!joinrrZrrrrrrrZrrrtest_nonexisting_directoryes  z)TestBadTempdir.test_nonexisting_directoryc Csttjtjd}t|dt td|F| t t f| Wdn1sb0YWdn1s0YWdn1s0YdS)NfilewbrZ)rr8r!rrrZrrzrrrNotADirectoryErrorrrrrrrtest_non_directoryls z!TestBadTempdir.test_non_directoryN)r$r%r&rrrrrrrrUsrc@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_innerfdrE)rrFrGrHbinflags output_typerrrr"~s z#TestMkstempInner.mkstemped.__init__cCst|j|dSr)r8r{r)rr rrrr{sz TestMkstempInner.mkstemped.writecCs||j||jdSr)_closer_unlinkrErrrr__del__s z"TestMkstempInner.mkstemped.__del__N)r$r%r&r_bin_openflagsr_text_openflagsrr8rzrunlinkrr"r{rrrrr mkstempedxsrNrPcCsrt|||}|dur0|tur(t}nt}|dur>|}|durL|}|||||}||j||||Sr)rrr rXrYrrLrE)rrFrGrHrrrrrr do_creates zTestMkstempInner.do_createcCs^|d|jddd|jddd|jdddd|jdddddS) NblatrrGrrHrGrHaa.txt)rr{rrrr 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 rFrHrarFrGbrFrGrHaa.txtr )rrYrr{rr)rZdir_brrrtest_basic_with_bytes_namess 2 2 z,TestMkstempInner.test_basic_with_bytes_namescCs*ttt}|D]}|jdd||<qdSNrr)listrorprrZextantrrrrrtest_basic_manys z TestMkstempInner.test_basic_manyc Csbt}z@|j|dd|jt|ddWtt |ntt |0dSNrr) rrTrr{rrr gc_collectr8rmdirrrFrrrtest_choose_directorys z&TestMkstempInner.test_choose_directorycCsJ|}tt|jj}d}tjdkr:|d?}|d}|||dS)Nwin32I) rrS_IMODEr8rErsysplatformr>)rrrrbuserrrrtest_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)rverboserr>r8get_inheritabler__file__ NameErrorrargvr!rrr?r executablerP_WAITr)rrrrmeZtesterZ decoratedZretvalrrrtest_noinherits,      zTestMkstempInner.test_noinheritztext mode not availablecCsL|jdd}|d|dt|jdtj|t|jdddS)Nr)rsblatsextra rtr)rr{r8lseekrSEEK_SETr>r~rfrrr test_textmodes    zTestMkstempInner.test_textmodecCstttdtjtSrk)rrrXrVrr rrrrrs  zTestMkstempInner.make_tempc Csttddd\|\}}t|||d|\}}t|||dWdn1sv0YWdn1s0YdSNaaabbb)rrrr8rzrBendswith)rfd1Zname1fd2Zname2rrr!test_collision_with_existing_file s     z2TestMkstempInner.test_collision_with_existing_filec CstztdddNt}||d|\}}t|||dWdn1sh0YWdn1s0YdSr) rrrrTrBrrr8rz)rrFrrErrr&test_collision_with_existing_directorys   z7TestMkstempInner.test_collision_with_existing_directory)NNNrP)r$r%r&rrrrrrrrrr has_spawnlr has_textmoderrrrrrrrrus    %   rc@s eZdZdZddZddZdS)TestGetTempPrefixzTest gettempprefix().cCsLt}||t|t|dt}||t|t|ddSr)rrVrr Z assertGreaterr:rWr)rpZpbrrrtest_sane_template's   z$TestGetTempPrefix.test_sane_templatec Csntd}tjdd}zDtj||}t|tjtjB}t |t |Wt |n t |0dS)Nz xxxxxx.xxxr )prefix) rrVrTr8r!rrO_RDWRO_CREATrzrr)rrdrrrrtest_usable_template3s    z&TestGetTempPrefix.test_usable_templateN)r$r%r&rr r%rrrrr$s 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) rrXrYrBr8r!isabsrisdirrr$rrrtest_directory_existsGsz$TestGetTempDir.test_directory_existscCs6t}|dWdn1s(0YdS)Nr)rrQr{)rrrrrtest_directory_writablePs z&TestGetTempDir.test_directory_writablecCsPt}t}t}|||u|t|t|||t|dSr) rrXrYrBrr;r>r8fsdecode)rrrrrrrrYs zTestGetTempDir.test_same_thingc Cstd}tjd}t_zTt(}||d<|t|Wdn1sP0YW|t_t|n|t_t|0dS)Nz-Tempr)rrTrZrrr>rXr)rZcase_sensitive_tempdirZ_tempdirrrrrtest_case_sensitivecs  0 z"TestGetTempDir.test_case_sensitiveN)r$r%r&rr*r+rr-rrrrr&Ds    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)NrFr!suffixz+Directory '%s' incorrectly returned as '%s')rrr rXrYrSr8r!r9r?r>rLrzr) rrFrGrHrrrErIrJZadirrrrrus*     zTestMkstemp.do_createcCsL||jdd|jdd|jddd|jddd|jdd dS) Nrrrrrrr.rrrrrrrs   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.rr1rr)rrYrrrr)rrrrs  . . z'TestMkstemp.test_basic_with_bytes_namesc CsFt}z,|j|d|jt|dWt|n t|0dSNr)rrTrrrr8rrrrrrs  z!TestMkstemp.test_choose_directory)NNN)r$r%r&rrrrrrrrrr.rs   r.c@sZeZdZdZddZdddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS) TestMkdtempzTest mkdtemp().cCstSr)rrTrrrrrszTestMkdtemp.make_tempNcCst|||}|dur0|tur(t}nt}|dur>|}|durL|}tj|||d}z||||||WSt|Yn0dSNr/) rrr rXrYrTrLr8r)rrFrGrHrrErrrrs   zTestMkdtemp.do_createcCs^t|t|jddt|jddt|jdddt|jddddSNrrrrrrr)r8rrrrrrrs 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 )rrYr8rrrrr)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)rrorprr<r r8rrrrrrs   zTestMkdtemp.test_basic_manyc CsRt}z8t|j|dt|jt|dWt|n t|0dSr4)rrTr8rrrrrrrrrs z!TestMkdtemp.test_choose_directoryc Csl|}zRtt|j}|dM}d}tjdkrB|d?}|d}|||Wt|n t|0dS)Niirrr) rrrr8rrrr>r)rrFrrbrrrr test_modes zTestMkdtemp.test_modec CstztdddNtjdd}|||jdt}||dWdn1sh0YWdn1s0YdS)NrrF)delete) rrrrQrzrBrErrT)rrrFrrrrs  z-TestMkdtemp.test_collision_with_existing_filec Cstltddd@t}||dt}||dWdn1sZ0YWdn1sx0YdSr)rrrrTrBr)rZdir1Zdir2rrrrs z2TestMkdtemp.test_collision_with_existing_directory)NNN) r$r%r&rrrrrrrr8rrrrrrr5s    r5csTeZdZdZfddZfddZGdddZdd d Zd d Zd dZ Z S) TestMktempzTest mktemp().cst|_tdSr)rrTrFrhr5rrirrr5"s zTestMktemp.setUpcs&|jrt|jd|_tdSr)rFr8rrhr7rrirrr7&s zTestMktemp.tearDownc@s(eZdZejZejZddZ ddZ dS)zTestMktemp.mktempedcCs.tj|||d|_tt|j|jddS)Nr/r)rr+rEr8rzrr)rrFrGrHrrrr"0szTestMktemp.mktemped.__init__cCs||jdSr)rrErrrrr6szTestMktemp.mktemped.__del__N) r$r%r&r8rrrrrr"rrrrrmktemped,sr;r cCs(||j||}||j|j|||Sr)r;rFrLrE)rrGrHrrrrr9szTestMktemp.do_createcCs@||jdd|jdd|jddd|jddddSr7r2rrrrr?s   zTestMktemp.test_basiccCs4ttt}|D]}|jdd||<q~tdSr)rrorprrrrrrrrsGs  zTestMktemp.test_many)r r ) r$r%r&rr5r7r;rrrsrrrrirr:s   r:c@sjeZdZdZdddZddZd d Zd d Zd dZddZ ddZ ddZ ddZ ddZ ddZdS)TestNamedTemporaryFilezTest NamedTemporaryFile().Nr TcCs8|durt}tj||||d}||j||||S)N)rFr!r0r9)rrXrQrLrE)rrFrGrHr9rrrrr^s z TestNamedTemporaryFile.do_createcCs@||jdd|jdd|jddd|jddddSr7r2rrrrrhs   z!TestNamedTemporaryFile.test_basiccCsP|}t|}|j}|j}~|d~|d~tjddrL||dS)NsfoosbarT)Zcpython)rweakrefrefr{rZcheck_impl_detail assertIsNone)rrwrr{Zwrite2rrrtest_method_lookupps  z)TestNamedTemporaryFile.test_method_lookupcsPgdfdd}t|D]\}}|||q||tddS)N)sspam seggs sbeans cs*tjdd}|d|d|S)Nw+brr r)rrQr{rseekrlinesrr make_files  z3TestNamedTemporaryFile.test_iter..make_filerP) enumerater>r:)rrHrrlrrFr test_iters  z TestNamedTemporaryFile.test_itercCs(t}|tj|jd|jdS)Nz$NamedTemporaryFile %s does not exist)rrQrBr8r!existsrErrrrtest_creates_namedsz)TestNamedTemporaryFile.test_creates_namedc Cszt}z`tj|d}|dWdn1s60Y|tj|jd|jWt |n t |0dS)Nrrz(NamedTemporaryFile %s exists after close) rrTrQr{rr8r!rLrErrrFrrrrtest_del_on_closes(z(TestNamedTemporaryFile.test_del_on_closec Cst}d}zbtj|dd}|j}|d||tj |jd|jW|durdt |t |n|durt |t |0dS)NF)rFr9rz)NamedTemporaryFile %s missing after close) rrTrQrEr{rzrBr8r!rLrr)rrFtmprrrrtest_dis_del_on_closes     z,TestNamedTemporaryFile.test_dis_del_on_closecCs.t}|d|||dSNabc )rrQr{rzrrrrtest_multiple_closes  z*TestNamedTemporaryFile.test_multiple_closecslt$|tjjWdn1s20Y|tjjfdd}|t |dS)Ncs(Wdn1s0YdSrrrrErr use_closedsz?TestNamedTemporaryFile.test_context_manager..use_closed) rrQrBr8r!rLrErrrrrUrrErtest_context_managers  2 z+TestNamedTemporaryFile.test_context_managerc sgtjfdd}tjd|d\tjdtd.|ttj|t dWdn1sj0YWdn1s0YdS)Ncs||dSrr`rclosedZos_closerrrzs z5TestNamedTemporaryFile.test_no_leak_fd..closeos.closeZ side_effectio.openrP) r8rzrpatchrrrrQr>r:rrzrrZrtest_no_leak_fdsz&TestNamedTemporaryFile.test_no_leak_fdcCst}|tj||ttjd|dWdn1sD0Y|ttjd|dWdn1s|0Y| t |gdS)Nr@)rrF) rrTZ addCleanuprrrrrQrr>r8rrrrr test_bad_modes , ,z$TestNamedTemporaryFile.test_bad_mode)Nr r T)r$r%r&rrrrArKrMrOrQrTrWrarcrrrrr<[s     r<c@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_sizerFr!r0)rrXr\)rrerFrGrHrrrrrsz"TestSpooledTemporaryFile.do_createcCs4|}||j|jdddd}||jdS)Nrrr)rerGrH)rr_rolledrrrrrs z#TestSpooledTemporaryFile.test_basicc Cst}zntjd|d}||j|d||j|j}||t |t o`t j |d|Wt |n t |0dS)N )rerFsblat blat blat blat blat z*SpooledTemporaryFile %s exists after close)rrTr\rrfr{rBrErzr<r r8r!rLr)rrFrfilenamerrrrOs   z*TestSpooledTemporaryFile.test_del_on_closecCsL|jdd}||jtdD]}|dd|dq ||jdS)Nrerxxxxxxxxxxxxxxxxxxxx)rrrfrorDr{)rrrrrrrtest_rewrite_smalls      z+TestSpooledTemporaryFile.test_rewrite_smallcCs^|jdd}||j|d||j|d||j|d||jdS)Nrirjrl xxxxxxxxxxx)rrrfr{rBrrrrtest_write_sequentials       z.TestSpooledTemporaryFile.test_write_sequentialcCs@|}|d|d}||d|}||ddS)N)royzrsxyz)r writelinesrDr>r~)rrposbufrrrtest_writeliness    z(TestSpooledTemporaryFile.test_writelinescCs<|jdd}|d||j|d||jdS)N#rj)rlrnsxxxxxro)rrsrrfr{rBrrrrtest_writelines_sequentials     z3TestSpooledTemporaryFile.test_writelines_sequentialcCsV|jdd}||j|dd}||d||j|d||jdS)Nrirjrrro)rrrfrDr>r{rB)rrrtrrr test_sparse s      z$TestSpooledTemporaryFile.test_sparsecCs:|jdd}||j||dk||jdS)Nrirjr)rrrfrBfilenorrrr test_fileno+s  z$TestSpooledTemporaryFile.test_filenocCs:t}|d||j|||dSrR)rr\r{rrfrzrrrr#test_multiple_close_before_rollover2s   ztjdd}|d||j|||dS)NrPrjrS)rr\r{rBrfrzrrrr"test_multiple_close_after_rollover;s    z;TestSpooledTemporaryFile.test_multiple_close_after_rollovercCsL|jdd}|j}|j}|j}|d|d|dd||dddS)Nrirjs#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas#bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbrFsFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)rr~r{rDr>)rrr~r{rDrrrtest_bound_methodsDs  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)NrgrjrnrBrozrb+)rr\r{rrfr>rr?rErrnewlinesencodingerrorsrBassertIsNotNonerrrrtest_propertiesRs*     $ $ $    & & 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+rgutf-8)rrerzabc rzdef zabc def strictzxyzzy zabc def xyzzy zfoobar zabc def xyzzy foobar )rr\r{rDr>r~rrfrr?rErr8lineseprrrBrrrrrtest_text_modejs6            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) Nrrgr rr*)rrenewlinerruΛ ruΜΜΜΜΜΜΜΜΜΜ u(ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝuBΛ ΜΜΜΜΜΜΜΜΜΜ ΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ)rr\r{rDr>r~rrfrr?rErrrrrBrrrrtest_text_newline_and_encodings2            z7TestSpooledTemporaryFile.test_text_newline_and_encodingcsltjdd(|j|jWdn1s:0Y|jfdd}|t|dS)NrPrjcs(Wdn1s0YdSrrrrErrrUszQTestSpooledTemporaryFile.test_context_manager_before_rollover..use_closed)rr\rrfr[rBrrrVrrEr$test_context_manager_before_rollovers  *  z=TestSpooledTemporaryFile.test_context_manager_before_rollovercstjddF|jd|j|jWdn1sX0Y|jfdd}|t |dS)NrPrjrScs(Wdn1s0YdSrrrrErrrUszQTestSpooledTemporaryFile.test_context_manager_during_rollover..use_closed) rr\rrfr{flushrBr[rrrVrrEr$test_context_manager_during_rollovers   *  z=TestSpooledTemporaryFile.test_context_manager_during_rollovercstjddd|j|jWdn1sP0Y|jfdd}|t |dS)NrPrjrScs(Wdn1s0YdSrrrrErrrUszPTestSpooledTemporaryFile.test_context_manager_after_rollover..use_closed) rr\r{rrBrfrr[rrrVrrEr#test_context_manager_after_rollovers   *  z_filegetvaluerBr8fstatrzst_sizerrrr!test_truncate_with_size_parameters             z:TestSpooledTemporaryFile.test_truncate_with_size_parametercCs|tjttjdSr)rrr\rtypes GenericAliasrrrrtest_class_getitems z+TestSpooledTemporaryFile.test_class_getitem)rNr r )r$r%r&rrrrOrmrprvrxryr{r|r}rrrrrrrrrrrrrrds*          rdc@s8eZdZdZddZddZddZdd Zd d Zd S) TestTemporaryFilezTest TemporaryFile().cCs tdSr)rrRrrrrrszTestTemporaryFile.test_basiccCsRt}tj|d}|dzt|Wn |t|Yn0dSr)rrTrRr{r8rrzrNrrrtest_has_no_names   z"TestTemporaryFile.test_has_no_namecCs.t}|d|||dSrR)rrRr{rzrrrrrTs  z%TestTemporaryFile.test_multiple_closecs@fdd}|dd|dd|dddd |d dd d dS) NcsXtj|i|4}|||d||Wdn1sJ0YdSr)rrRr{rDr>r~)inputrrfileobjrrr roundtrip s  z;TestTemporaryFile.test_mode_and_encoding..roundtrips1234rBzabdc ruΛzutf-16)rzfoo r )rr)rrrrrtest_mode_and_encodings    z(TestTemporaryFile.test_mode_and_encodingc sgtjfdd}tjd|d\tjdtd.|ttj|t dWdn1sj0YWdn1s0YdS)Ncs||dSrrXrYrZrrrzs z0TestTemporaryFile.test_no_leak_fd..closer\r]r^rP) r8rzrr_rrrrRr>r:r`rrZrrasz!TestTemporaryFile.test_no_leak_fdN) r$r%r&rrrrTrrarrrrrs   rc@s$eZdZddZddZddZdS) NulledModulescGs&dd|D|_dd|jD|_dS)NcSsg|] }|jqSr)r_).0modrrr &r z*NulledModules.__init__..cSsg|] }|qSr)copy)rr>rrrr'r )refscontents)rmodulesrrrr"%szNulledModules.__init__cCs"|jD]}|D] }d||<qqdSr)r)rr$rcrrrr1)s zNulledModules.__enter__cGs.t|j|jD]\}}|||qdSr)ziprrclearupdate)rexc_infor$rrrrr6.szNulledModules.__exit__N)r$r%r&r"r1r6rrrrr$src@seZdZdZd!ddZd"ddZd d Zd d Zej d dZ ej ddZ ddZ ddZddZddZddZddZeeedddd ZdS)#TestTemporaryDirectoryzTest TemporaryDirectory().Nr rPcCsH|durt}tj|||d}||j|||||j||||Sr6)rrXr]rLrE do_create2)rrFrGrHrecursedirsfilesrPrrrr6s z TestTemporaryDirectory.do_createc Cs|rBt|D]4}tj|d|}t||||d||q t|D]F}ttj|d|d}|dWdqJ1s0YqJdS)Nzdir%drPz test%d.txtrs Hello world!)ror8r!rmkdirrrr{)rr!rrrrrrErrrrr>s   z!TestTemporaryDirectory.do_create2cCstt}Wdn1s0Y|t}tj|dWdn1sT0Y||jjtjdSr4)rr]rrr> exceptionerrnoENOENT)rrcmrrrtest_mkdtemp_failureIs   *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) rrTrrBr8r!rLrEcleanuprr)rrFr$rrrtest_explicit_cleanupSs 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) rr8symlinkrEr!rrrrLrBr>r)rZd1Zd2rrr(test_cleanup_with_symlink_to_a_directory`s 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__) rrTrrErr8r!rLrrrFr$rErrrtest_del_on_collectionus z-TestTemporaryDirectory.test_del_on_collectioncCs|}dD]l}dj||d}td|\}}}|}|tj |d||dd}| d|| d |qWdn1s0YdS) N)builtinsr8shutilrrr2aif 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) )rFr-crrbackslashreplace Exception 'ResourceWarning: Implicitly cleaning up rformatrZassert_python_okrstriprr8r!rLrqr)rrFrcodercouterrtmp_namerrrtest_del_on_shutdowns    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)rrFrrrrrrrrtest_exit_on_shutdowns      z,TestTemporaryDirectory.test_exit_on_shutdownc Cs|}|j|dd}|j}tjdtfdd(tjdtd~tWdn1s^0Y|t j |d|Wdn1s0YdS) N)rFrZ ImplicitlyF)quietalways)r,r) rrErr/ResourceWarningr2r3rrr8r!rLrrrrtest_warnings_on_cleanups &z/TestTemporaryDirectory.test_warnings_on_cleanupcCs$|}|||dSr)rrr)rrrrTsz*TestTemporaryDirectory.test_multiple_closecCsb|}|0}|tj||||jWdn1sB0Y|tj|dSr)rrBr8r!rLr>rEr)rr$rErrrrWs ,z+TestTemporaryDirectory.test_context_managerc CstdD]}|dK}|jt|dd|jdddd}|`tj|jdd D]6\}}}|D]}ttj |||q\t||qN| Wdn1s0Y| tj |jWdq1s0YqdS) NrZ03orCrrbrrrFtopdown) roZsubTestrrr8walkrErr!rrrrL)rrr$rootrrrErrr test_modess &z!TestTemporaryDirectory.test_modeschflagszrequires os.lchflagsc CstjtjB}|jdddd}|`tj|jddD]6\}}}|D]}ttj |||q@t||q2| Wdn1s0Y| tj |jdS)NrrbrFr) r UF_IMMUTABLE UF_NOUNLINKrr8rrErr!rrrrL)rrr$rrrrErrr test_flagss &z!TestTemporaryDirectory.test_flags)Nr r rPrPrP)rPrPrP)r$r%r&rrrrrrZskip_unless_symlinkrZ cpython_onlyrrrrrTrWrrrrr8rrrrrr3s"       r__main__)5rrrr8rrrMr2 contextlibrrr=rrtestrZ test.supportrrrrrrr startswithrpZTestCaserr)rOrerrrcontextmanagerrrrrrr&r.r5r:r<rdrQrRrrrr$mainrrrrsb      23@*%  0 .?l>}>A